Showing preview only (2,295K chars total). Download the full file or copy to clipboard to get everything.
Repository: FreeGIS/dem2terrain
Branch: master
Commit: 8e94f3f555a9
Files: 29
Total size: 2.2 MB
Directory structure:
gitextract_l1shv65q/
├── .gitignore
├── .npmrc
├── CHANGES.md
├── LICENSE
├── README.md
├── bin/
│ └── dem2terrain.js
├── config.template.json
├── index.js
├── package.json
├── src/
│ ├── createtile.js
│ ├── dem-encode.js
│ ├── gdal-util.js
│ ├── index.js
│ ├── mbtiles-util.js
│ ├── progressbar/
│ │ ├── format.js
│ │ └── index.js
│ ├── tile-util.js
│ ├── util.js
│ └── workfarm/
│ ├── child/
│ │ └── index.js
│ ├── farm.js
│ ├── fork.js
│ └── index.js
└── test/
├── app.js
├── mapbox-gl.css
├── mapbox-gl.js
├── maplibre/
│ ├── maplibre-gl.css
│ └── maplibre-gl.js
├── terrain_mapbox.html
└── test.tif
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# no lock-file
package-lock.json
yarn.lock
pnpm-lock.yaml
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
# Next.js build output
.next
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and *not* Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
terrain
config.json
dem.tif
================================================
FILE: .npmrc
================================================
package-lock=false
================================================
FILE: CHANGES.md
================================================
# 更新日志
## 2.1.0
1. 支持多坐标系地形切片生成。
2. 新增测试数据与测试用例。
## 2.0.0
核心依赖包变更,从node-gdal变更为node-gdal-async,变更优点如下:
1. gdal版本更新,JS语法更现代,适用于未来扩展和优化。
2. 支持binding本机已安装的gdal程序,未来通过扩展本机gdal的webp驱动,支持生成webp格式的地形切片。
3. 最新版本gdal的vsimem、vsicurl可以在未来版本开发新的特性,如对云上数据进行切片。
其他:
- 修复源地形文件open但没close bug。
- 优化影像金字塔索引层级为根据数据自适应,之前版本根据影像分辨率自适应了zoom为高值上限,本次优化zoom为低值的下限。例如切5-14级别,但是从7级别开始,该缩小级别的影像宽高已经小于256像素,无需再建立其以下的索引。
## 1.0.6
新特性如下:
- 输出切片位置可配置为mbtiles
- 命令执行输入参数支持从配置文件读取,简化用户操作
优化如下:
- 数据重编码性能优化,栅格数据越大优化越明显
## 1.0.5
新特性如下:
- 增加4490、4326的地形切片的生成
- 增加切片输出目录的清理可选配置
- 增加ctrl-c任务终止的临时文件清理
- 修复子进程并发创建文件产生的bug
## 1.0.4
本版本无功能更新。特性如下:
- 重构源码,拆分各个子模块任务区域
- 代码添加了 JSDoc 注释,在 VSCode 开发时有较好的类型提示
- 优化控制台进度提示文字的样式
- 禁用 package 依赖锁文件的生成
## 1.0.3
具备基础的 DEM 切片功能,支持 tif 栅格文件作为输入数据源。
- 支持 MapboxGL `raster-dem` 编码和 `terrarium` 编码的瓦片输出
- 支持自定义瓦片尺寸,自动添加 1 像素裙边
- 支持指定最大最小瓦片等级
- 使用多进程加速创建瓦片
================================================
FILE: LICENSE
================================================
BSD 3-Clause License
Copyright (c) 2022, 遥想公瑾当年
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
================================================
FILE: README.md
================================================
# 简介
根据 DEM 数据生成地形切片工具,使用 NodeJS + GDAL(NodeBinding)开发制作。可用于用户自定义 DEM 高程数据源生产地形瓦片,以便局域网离线使用。
特点:
- 支持 `mapbox` 和 `terrarium` 两种地形瓦片编码格式供mapboxgl使用,其中terrarium格式是[tangram](https://www.mapzen.com/products/tangram/)引擎的官方地形格式,tangram是另外一款开源的webgl二三维一体化的引擎;
- 固定瓦片尺寸256,瓦片周围有1cell的buffer,即实际瓦片是258*258.
- 自动读取数据源的坐标系统,重编码输入的 DEM 栅格文件,并重投影至指定的坐标系4490、4326、3857,默认3857,然后生成瓦片;
- 支持适用于3857、4490、4326的地形切片生产;
- 内置了影像金字塔索引和多进程实现(暂未使用多线程),加速瓦片生成速度;
- 支持地形瓦片以文件目录或mbtiles两种格式存储;
- 命令行提供了瓦片生成的进图条提示,便于用户查看生成进度。
- 内置一些异常导致的临时文件清理工作。

# 1. 安装与配置
## 1.1. 配置 GDAL_DATA
由于使用了 GDAL,用户需要 [下载 gdal-data.zip](./third-party/gdal-data.zip) 数据包,并配置 `GDAL_DATA` 环境变量为解压缩的目录。
以 Windows 操作系统为例(此例直接使用 PostgreSQL 附带的资源,若用户有安装 PostgreSQL,也可以直接使用对应目录):

## 1.2. 安装
从网络全局安装,成为命令行工具:
```bash
npm i dem2terrain -g
yarn add dem2terrain -g
pnpm add dem2terrain -g
```
源码安装(先将当前目录定位至工程根目录,且明白什么是 link 命令):
```bash
npm install && npm link
# 或
yarn && yarn link
# 或
pnpm install && pnpm link --global
```
安装完毕后就可以当普通命令行程序使用了。
## 1.3. 测试
测试地形数据生产:
```bash
npm run test
```
基于maplibregl地形预览:
```bash
npm run server
```
浏览器输入地址进行预览:http://[ip]:[port]/terrain.html
效果图如下:

# 2. 用法与说明
当前支持作为命令行使用:
```plaintext
> dem2terrain --help
Usage: dem2terrain [options]
使用 GDAL 制作地形瓦片,支持 mapbox 和 terrarium 两种编码输出格式,当前仅输出 PNG 容器格式。
Options:
-v, --version 当前版本
-i, --input <string> <必填> 输入 tif 格式的 DEM 文件路径,支持相对路径
-o, --output <string> <必填> 输出目录,支持相对路径
-f, --configFile <File> <可选> 通过配置文件执行任务,输入绝对路径,可参考配置模板
-g, --epsg <number> <可选> Tile适用坐标系,3857 | 4490 | 4326 (default: 3857)
-r, --resampling <number>, <可选> 构建影像金字塔或重投影时设置重采样策略,默认3,1:AVERAGE|2:BILINEAR|3:CUBIC|4:CUBICSPLINE|5:LANCZOS|6:MODE|7:NEAREST
-c, --clean <number> <可选> 是否清空输出目录,0 | 1 (default: 0)
-z, --zoom <number-number> <可选> 指定瓦片的等级生成范围。例如,想生成 7 ~ 12 级的瓦片,则输入 -z 7-12 (default: "5-14")
-e, --encoding <string> <可选> 指定瓦片的数据编码规则(mapbox 或 terrarium) (default: "mapbox")
-h, --help 帮助
```
可选参数说明:
- `-i`: 输入 tif 格式的 DEM 文件路径,支持相对路径;
- `-o`: 输出目录,支持相对路径;
- `-g`: 指定地形Tile适用坐标系,默认是适用3857坐标系;
- `-r`: 构建影像金字塔或重投影时设置重采样策略,默认3 CUBIC 采样;
- `-z`: 由于地形栅格数据通常是 90m、30m 的空间分辨率,等级太大意义不大,等级太低时起伏辨识也不高,所以默认生成中间的 `5-14` 级;
- `-c`: 指定是否预先清理输出瓦片的存储目录,默认0,不清理;
- `-e`: 指定切片编码规则,默认 mapbox,用户可指定 terrarium 规则输出。
- `-f`: 以上参数可以都放到一个配置json文件里,使用-f执行切片任务,简化操作;
## 2.1 任务执行
有两种形式执行命令行任务
* 方式1:通过命令行参数执行任务
```bash
dem2terrain -z 4-15 -e terrarium -i ./ZONE.tiff -o ./output -c 1 -g 3857
```
* 方式2:通过配置文件执行任务
1)配置参数
```
{
"zoom":"5-13",
"epsg": 3857,
"encoding": "mapbox",
"input": "./data/xxx.tif",
"output": "./data/tile",
"clean": true
}
```
2)执行任务
```bash
dem2terrain -f d://config.json
```
## 2.2 数据输出
支持地形切片生成以文件或mbtiles目录两种形式存储。
* 以文件存储
-o参数为文件目录,则以文件形式存储:
```bash
dem2terrain -z 4-15 -e terrarium -i ./ZONE.tiff -o ./output -c 1 -g 3857
```
* 以mbtiles存储
-o参数带.mbtiles扩展名,则以mbtiles形式存储:
```bash
dem2terrain -z 4-15 -e terrarium -i ./ZONE.tiff -o ./output/tile.mbtiles -c 1 -g 3857
```
# 3. 使用输出成果
使用 HTTP(S) 协议的 Web 服务器(例如 `nginx`、`IIS`)将生成的地形瓦片作为静态资源发布,即可使用。
举例:根据 [MapboxGL 地形示例](https://docs.mapbox.com/mapbox-gl-js/example/add-terrain/) 简单修改,将在线数据源换成本地 Web 服务器发布的地址即可,注意编码格式要与生成时输入的编码格式一致。
```javascript
// 数据编码,'mapbox'或'terrarium'
const encoding = 'mapbox';
const maxZoom = 14;
map.addSource('my-custom-terrain', {
type: 'raster-dem',
encoding:encoding,
// 使用tiles方式替换本地发布的地形切片服务
tiles: ['./mapbox/{z}/{x}/{y}.png'],
// 注释掉官方的服务url,替换自己的
//'url': 'mapbox://mapbox.mapbox-terrain-dem-v1',
tileSize: 256,
maxzoom: maxZoom,
})
```
如下图所示:

# 4. TODO
当前版本足够 MapboxGL.js 使用,但仍然有新功能未开发,留待以后扩展功能,初步拟定待扩展功能如下:
- 大数据量的dem tif改用分块读取分块处理
- 扩展 gdal 驱动,使其支持 webp,直接生成 webp 格式的切片
- 重构核心模块,解耦,扩展使其支持生成 CesiumJS 支持的地形切片格式
欢迎参与贡献,包括但不限于文档、功能扩展、性能优化!
# 5. 安装问题
## 5.1 c++编译环境问题
由于node-gdal、node-gdal-next或node-gdal-async都会内置编译安装一个gdal,编译是需要依赖c++环境的,在win上常出现问题如下:
```bash
npm ERR! gyp ERR! stack Error: Could not find any Visual Studio installation to use
```
如果用户未安装vs c++环境,请最好安装下vs c++编译环境。
如果用户已经安装了vs,例如vs2022仍提示找不到,配置如下:
```bash
# 配置npm的msvs版本号,例如安装了vs 2022
npm config set msvs_version 2022
# 更新下node-gyp
npm install node-gyp@latest -g
```
## 5.2 环境变量冲突
在node-gdal系列相关包npm安装成功后,使用过程中遇到投影操作定义就会报各种错误,典型错误如下:
```
const srs= gdal.SpatialReference.fromProj4('+init=epsg:4326'); ^ Error: Corrupt Data
```
主要原因是win上各种软件包都会内置安装,环境变量冲突导致。
例如,用户安装了PostGIS,会内置安装proj,geos,gdal并自动生成proj_lib的环境变量。
```
PROJ_LIB=C:\Program Files\PostgreSQL\14\share\contrib\postgis-3.1\proj
```
当安装node-gdal-next或noe-gdal-async时,内置的proj和proj.db由于冲突不能生效,就会在使用过程中报各种错误。
依此类推,如果用户安装了独立的GDAL,又有内置的proj,geos和环境变量也会有这种问题。
解决办法:从系统环境变量中删除这些冲突的环境变量重启机器即可。
## 5.3 最好的办法
使用本机已编译好的gdal编译binding下node的gdal环境:
```
npm install gdal-next --build-from-source --shared_gdal
npm install gdal-async --build-from-source --shared_gdal
```
这样,node的gdal环境可以和本机的gdal环境一致,能使用更多的驱动例如webp,内置驱动是没有的。
这种操作可以让公用软件装一次,不会产生更多的冲突,linux上很方便。但由于windows上都不是源码编译,从.exe安装,因此不太适用。该操作适合c++编译环境熟悉的高级用户可定制安装多项扩展。
# 6. 知识补充
## 6.1. 参考资料
- [GitHub - tilezen/joerd - terrarium](https://github.com/tilezen/joerd/blob/master/docs/formats.md#terrarium)
- [MapboxDocs - raster-dem](https://docs.mapbox.com/data/tilesets/reference/mapbox-terrain-dem-v1/)
## 6.2. 编解码差异
`mapbox` 和 `terrarium` 都将高程值编码成 RGB 数组存储,下面以简单的编解码函数说明两种编码格式的差异。
MapboxGL:
```typescript
function mapboxEncode(height: number) {
const value = Math.floor((height + 10000) * 10);
const r = value >> 16;
const g = value >> 8 & 0x0000FF;
const b = value & 0x0000FF;
return [r, g, b];
}
function mapboxDecode(
color: [number, number, number]
) {
return -10000 + ((color[0] * 256 * 256 + color[1] * 256 + color[2]) * 0.1);
}
```
terrarium:
```typescript
function terrariumEncode(height: number) {
height += 32768;
const r = Math.floor(height / 256.0);
const g = Math.floor(height % 256);
const b = Math.floor((height - Math.floor(height)) * 256.0);
return [r, g, b];
}
function terrariumDecode(
color: [number, number, number]
) {
return (color[0] * 256 + color[1] + color[2] / 256.0) - 32768;
}
```
对于 cesium 的地形编码和解码:
```typescript
// 每个点像素值是 int16
function cesiumEncode(height: number) {
return Math.floor((height + 1000) / 0.2);
}
function cesiumDecode(pixel: number){
return (pixel * 0.2) - 1000;
}
```
================================================
FILE: bin/dem2terrain.js
================================================
#!/usr/bin/env node
const { program } = require('commander');
const main = require('../index');
const path = require('path');
const version = require('../package.json').version;
// node版本检查
if (+process.version.substring(1, 3) < 16) {
console.error(`node版本>=16,当前版本 ${process.version}`);
process.exit();
}
// { version } from 'node:process';
program.name('dem2terrain')
.description('使用 GDAL 制作地形瓦片,支持 mapbox 和 terrarium 两种编码输出格式,当前仅输出 PNG 容器格式。')
.version(version, '-v, --version', '当前版本')
.helpOption('-h, --help', '帮助');
// --- 配置可选参数
program
.option('-i, --input <string>', '<必填> 输入 tif 格式的 DEM 文件路径,支持相对路径')
.option('-o, --output <string>', '<必填> 输出目录,支持相对路径')
.option('-f, --configFile <File>', '<可选> 通过配置文件执行任务,输入绝对路径,可参考配置模板')
.option('-r, --resampling <number>', `<可选> 构建影像金字塔或重投影时设置重采样策略,默认3,1:AVERAGE|
2:BILINEAR|3:CUBIC|
4:CUBICSPLINE|5:LANCZOS|
6:MODE|7:NEAREST`, 3)
.option('-g, --epsg <number>', '<可选> Tile适用坐标系,3857 | 4490 | 4326', 3857)
.option('-c, --clean <number>', '<可选> 是否清空输出目录,0 | 1', 0)
.option('-z, --zoom <number-number>', '<可选> 指定瓦片的等级生成范围。例如,想生成 7 ~ 12 级的瓦片,则输入 -z 7-12', '5-14')
.option('-e, --encoding <string>', '<可选> 指定瓦片的数据编码规则(mapbox 或 terrarium)', 'mapbox')
.option('-b, --baseHeight <number>', '<可选> 基准高度,默认0', 0);
// --- 解析参数
program.parse();
const options = program.opts();
// 判别是否是配置文件还是命令行配置
let params;
if (options['configFile'])
params = require(options['configFile']);
else
params = options;
const inputDem = params['input'];
const outputDir = params['output'];
if (inputDem === undefined || outputDir === undefined) {
console.log('参数缺失: 输入文件路径或输出目录必填');
process.exit();
}
const encoding = params['encoding'];
const epsg = Number(params['epsg']);
const isClean = Number(params['clean']);
let baseHeight = Number(params['baseHeight']);
if (isNaN(baseHeight))
baseHeight = 0;
let zoom = params['zoom'];
zoom = zoom.split('-');
const minZoom = Number(zoom[0]);
const maxZoom = Number(zoom[1]);
if (isNaN(minZoom) || isNaN(maxZoom)) {
console.log(`参数 -zoom: ${zoom} 错误,应为整数`);
process.exit();
}
if (minZoom >= maxZoom) {
console.log(`参数 -zoom: ${zoom} 错误:最小级别: ${minZoom} 应小于最大级别: ${maxZoom}`);
process.exit();
}
const inputAbsolutePath = path.isAbsolute(inputDem) ? inputDem : path.resolve(process.cwd(), inputDem);
const outFileAbsolutePath = path.isAbsolute(outputDir) ? outputDir : path.resolve(process.cwd(), outputDir);
const logMsg = `\n>> 开始转换...
- 输入文件: ${inputAbsolutePath}
- 输出路径: ${outFileAbsolutePath}
- Tile适用坐标系: EPSG:${epsg}
- 瓦片编码: ${encoding === 'mapbox' ? 'mapbox(raster-dem)' : encoding}
- 瓦片尺寸: 256 px
- 瓦片等级: ${minZoom} 至 ${maxZoom} 级
- 基准高度: ${baseHeight}
`;
console.log(logMsg);
main(inputDem, outputDir, {
minZoom,
maxZoom,
epsg,
encoding,
isClean,
baseHeight
});
================================================
FILE: config.template.json
================================================
{
"zoom":"5-14",
"epsg": 3857,
"encoding": "mapbox",
"input": "./xxx.tif",
"output": "./xxx",
"clean": true
}
================================================
FILE: index.js
================================================
const main = require('./src');
module.exports = main;
================================================
FILE: package.json
================================================
{
"name": "dem2terrain",
"version": "2.2.8",
"description": "使用 GDAL 制作 DEM 栅格的地形瓦片",
"main": "index.js",
"preferGlobal": true,
"engines": {
"node": ">= 16"
},
"bin": {
"dem2terrain": "./bin/dem2terrain.js"
},
"scripts": {
"test": "node ./test/app.js && dem2terrain -f ../test/config.json",
"server": "http-server ./test"
},
"repository": {
"type": "git",
"url": "git+https://github.com/FreeGIS/dem2terrain.git"
},
"keywords": [
"dem",
"mapboxgl",
"terrain"
],
"author": "freegis",
"license": "BSD-3-Clause license",
"bugs": {
"url": "https://github.com/FreeGIS/dem2terrain/issues"
},
"homepage": "https://github.com/FreeGIS/dem2terrain#readme",
"dependencies": {
"@mapbox/mbtiles": "^0.12.1",
"cli-color": "^2.0.3",
"commander": "^14.0.0",
"errno": "^1.0.0",
"gdal-async": "^3.5.1",
"http-server": "^14.1.1",
"single-line-log": "^1.1.2"
}
}
================================================
FILE: src/createtile.js
================================================
const gdal = require('gdal-async');
const { getDriverByName } = require('./gdal-util');
const { mapboxEncode, terrariumEncode } = require('./dem-encode');
const path = require('path');
const fs = require('fs');
let dataset = null, noData = null, memDriver = null, pngDriver = null;
const invalidColor = [1, 134, 160];// 编码后凑海拔=0,修复地形塌陷产生空白
let outTileSize1;
function forEachHeightBuffer(heightBuffer, encode) {
const channelLength = heightBuffer.length;
const rBuffer = new Uint8Array(channelLength);
const gBuffer = new Uint8Array(channelLength);
const bBuffer = new Uint8Array(channelLength);
const aBuffer = new Uint8Array(channelLength);
for (let i = 0; i < channelLength; i++) {
let heightVal = heightBuffer[i];
let color;
if (heightVal === noData)
color = invalidColor; // 编码后凑海拔=0,修复地形塌陷产生空白
else
color = encode(heightVal);
rBuffer[i] = color[0];
gBuffer[i] = color[1];
bBuffer[i] = color[2];
aBuffer[i] = 255;
}
return [rBuffer, gBuffer, bBuffer, aBuffer];
}
function writeTerrainTile(overviewInfo, readinfo, writeinfo, encoding) {
let readband;
if (overviewInfo.index === undefined)
readband = readinfo.ds.bands.get(1);
else // 从影像金字塔里读取band信息
readband = readinfo.ds.bands.get(1).overviews.get(overviewInfo.index);
let dataType = readband.dataType;
let heightBuffer;
// 特殊异常处理
if (dataType == gdal.GDT_Byte)
heightBuffer = new Uint8Array(writeinfo.wxsize * writeinfo.wysize);
else if (dataType === gdal.GDT_Int16)
heightBuffer = new Int16Array(writeinfo.wxsize * writeinfo.wysize);
else if (dataType === gdal.GDT_Float32)
heightBuffer = new Float32Array(writeinfo.wxsize * writeinfo.wysize);
else if (dataType === 'Int8') {
heightBuffer = new Int16Array(writeinfo.wxsize * writeinfo.wysize);
dataType = gdal.Int16Array;
}
readband.pixels.read(readinfo.rx, readinfo.ry, readinfo.rxsize, readinfo.rysize, heightBuffer, {
buffer_width: writeinfo.wxsize,
buffer_height: writeinfo.wysize,
data_type: dataType
});
// heightBuffer转码rgb编码
let encodeBuffers;
// 循环高程,转rgb编码
if (encoding === 'mapbox') {
encodeBuffers = forEachHeightBuffer(heightBuffer, mapboxEncode);
} else if (encoding === 'terrarium') {
encodeBuffers = forEachHeightBuffer(heightBuffer, terrariumEncode);
}
let _length = outTileSize1 * outTileSize1;
let r = new Uint8Array(_length);
let g = new Uint8Array(_length);
let b = new Uint8Array(_length);
let a = new Uint8Array(_length);
for (let i = 0; i < _length; i++) {
r[i] = invalidColor[0];
g[i] = invalidColor[1];
b[i] = invalidColor[2];
a[i] = 255;
};
let defaultBuffers = [r, g, b, a];
[1, 2, 3, 4].forEach(index => {
let writeband = writeinfo.ds.bands.get(index);
// 先填充默认值
writeband.pixels.write(0, 0, outTileSize1, outTileSize1, defaultBuffers[index - 1]);
// 填充实际值
writeband.pixels.write(writeinfo.wx, writeinfo.wy, writeinfo.wxsize, writeinfo.wysize, encodeBuffers[index - 1]);
});
}
function createTile(createInfo, callback) {
const { outTileSize, overviewInfo, rb, wb, encoding, dsPath, x, y, z, outputTile } = createInfo;
outTileSize1 = outTileSize;
if (dataset === null) {
dataset = gdal.open(dsPath, 'r');
// 查询no_data数值
noData = dataset.bands.get(1).noDataValue;
}
// 创建一个mem内存,将读取的像素写入mem
if (memDriver === null)
memDriver = getDriverByName('mem');
const msmDS = memDriver.create("", outTileSize, outTileSize, 4);
rb.ds = dataset;
wb.ds = msmDS;
writeTerrainTile(overviewInfo, rb, wb, encoding);
const pngPath = path.join(outputTile, z.toString(), x.toString(), y + '.png');
if (pngDriver === null)
pngDriver = getDriverByName('png');
let pngDs = pngDriver.createCopy(pngPath, msmDS);
// 释放内存
msmDS.flush();
msmDS.close();
pngDs.close();
callback(null, process.pid);
}
function closeDataset(callback) {
if (dataset) {
dataset.close();
dataset = null;
callback(null, process.pid);
}
callback(null, null);
}
module.exports = { createTile, closeDataset }
================================================
FILE: src/dem-encode.js
================================================
/**
* MapboxGL raster-dem 编码
* @param {number} height 高程值
* @returns {[number, number, number]}
*/
function mapboxEncode(height) {
const value = Math.floor((height + 10000) * 10);
const r = value >> 16;
const g = value >> 8 & 0x0000FF;
const b = value & 0x0000FF;
return [r, g, b];
}
/**
* MapboxGL raster-dem 解码
* @param {[number, number, number]} color
* @returns {number} 高程值
*/
function mapboxDecode(color) {
return -10000 + ((color[0] * 256 * 256 + color[1] * 256 + color[2]) * 0.1);
}
/**
* Terrarium 编码
* @param {number} height 高程值
* @returns {[number, number, number]}
*/
function terrariumEncode(height) {
height += 32768;
const r = Math.floor(height / 256.0);
const g = Math.floor(height % 256);
const b = Math.floor((height - Math.floor(height)) * 256.0);
return [r, g, b];
}
/**
* Terrarium 解码
* @param {[number, number, number]} color
* @returns {number} 高程值
*/
function terrariumDecode(color) {
return (color[0] * 256 + color[1] + color[2] / 256.0) - 32768;
}
/**
* Cesium 编码
* @param {number} height 高程值
* @returns {number} 编码值,Int16
*/
function cesiumEncode(height) {
return Math.floor((height + 1000) / 0.2);
}
/**
* Cesium 解码
* @param {number} pixel 编码值,Int16
* @returns {number} 高程值
*/
function cesiumDecode(pixel) {
return (pixel * 0.2) - 1000;
}
const mapboxDem = {
encode: mapboxEncode,
tileSchema: 'xyz',
tileSize: 512,
extension: 'png'
}
const terrariumDem = {
encode: terrariumEncode,
tileSchema: 'xyz',
tileSize: 512,
extension: 'png'
}
const cesiumDem = {
encode: cesiumEncode,
tileSchema: 'tms',
tileSize: 65,
extension: 'terrain'
}
module.exports = {
//mapboxDem, terrariumDem, cesiumDem
mapboxEncode, terrariumEncode
}
================================================
FILE: src/gdal-util.js
================================================
const gdal = require('gdal-async');
// 根据策略获取对应的采样方法
function getBuildOverviewResampling(resampling) {
switch (resampling) {
case 1:
return "AVERAGE"; // 加权平均法
case 2:
return "BILINEAR"; // 双线性内插法
case 3:
return "CUBIC"; // 三次卷积内插法
case 4:
return "CUBICSPLINE"; // B样条卷积内插法
case 5:
return "LANCZOS"; // Lanczos窗口sinc卷积内插法
case 6:
return "MODE"; // 最常出现值法
case 7:
return "NEAREST"; // 最邻近法
default:
return "CUBIC";
}
}
function getResampling(resampling) {
switch (resampling) {
case 1:
return gdal_resampling = gdal.GRA_Average;
case 2:
return gdal_resampling = gdal.GRA_Bilinear;
case 3:
return gdal_resampling = gdal.GRA_Cubic;
case 4:
return gdal_resampling = gdal.GRA_CubicSpline;
case 5:
return gdal_resampling = gdal.GRA_Lanczos;
case 6:
return gdal_resampling = gdal.GRA_Mode;
case 7:
return gdal_resampling = gdal.GRA_NearestNeighbor;
default:
return gdal_resampling = gdal.GRA_Cubic;
}
}
/**
* 根据驱动名称(支持任意大小写)获取 GDAL 驱动
* @param {string} driverName 驱动名称
* @returns {import('gdal').Driver}
*/
function getDriverByName(driverName) {
const length = gdal.drivers.count();
let nameNormal = driverName.toUpperCase();
for (let i = 0; i < length; i++) {
const driver = gdal.drivers.get(i);
if (driver.description === nameNormal) { return driver; }
}
throw new Error(`当前gdal中不存在输入的驱动名称${nameNormal}`);
}
/**
* @function 栅格重投影
* @description 输入一个源数据,设置投影输出数据文件路径和投影坐标系的epsg编码,设置采样参数,输出栅格重投影文件
* @param {string | import('gdal').Dataset} src_ds 输入的栅格文件路径或者gdal的数据集对象。
* @param {string} reproject_path 输出的重投影后的栅格文件路径。
* @param {number} t_epsg 重投影的坐标系epsg编码。
* @param {number} resampling 重投影后的采样参数,默认是 0,意义为:0: average, 1: bilinear, 2: cubic, 3: cubicspline, 4: lanczos, 5: mode, 6: nearestNeighbor。
* @return void
*
* @author freegis
*/
function reprojectImage(src_ds, reproject_path, t_epsg, resampling = 1) {
let s_ds;
if (typeof (src_ds) === 'string')
s_ds = gdal.open(src_ds);
else
s_ds = src_ds;
// 获取源数据集的 坐标系
const s_srs = s_ds.srs;
// 投影的目标坐标系
const t_srs = gdal.SpatialReference.fromEPSGA(t_epsg);
// 输入源数据,源坐标系,目标坐标系,智能计算出输出的栅格像元分辨率和仿射变换参数
const { rasterSize, geoTransform } = gdal.suggestedWarpOutput({
src: s_ds,
s_srs: s_srs,
t_srs: t_srs
});
// 获取原始数据第一个band的数据类型,作为新的投影后的数据类型
// 如果不写,类似默认是uint8,而dem是 int16,就会数据错误
const dataType = s_ds.bands.get(1).dataType;
// 使用源数据的驱动,保持文件格式不变
const t_driver = s_ds.driver;
//创建输出图像
const t_ds = t_driver.create(reproject_path, rasterSize.x, rasterSize.y, s_ds.bands.count(), dataType);
//重置索引和仿射变换参数
t_ds.srs = t_srs;
t_ds.geoTransform = geoTransform;
//重采样方法
let gdal_resampling = getResampling(resampling);
gdal.reprojectImage({ src: s_ds, dst: t_ds, s_srs, t_srs, resampling: gdal_resampling });
// 关闭退出
t_ds.bands.get(1).noDataValue = s_ds.bands.get(1).noDataValue;
t_ds.close();
if (typeof (src_ds) === 'string')
s_ds.close();
}
module.exports = {
getDriverByName, reprojectImage, getBuildOverviewResampling
}
================================================
FILE: src/index.js
================================================
const gdal = require('gdal-async');
const fs = require('fs');
const path = require('path');
const process = require('process');
const os = require('os');
const { prettyTime, uuid, wait, mkdirsSync, emptyDir } = require('./util');
const { reprojectImage, getBuildOverviewResampling } = require('./gdal-util');
const ProgressBar = require('./progressbar/index');
const { mb_open, mb_stop_writing, mb_put_tile } = require('./mbtiles-util');
// 创建一个线程池
const workerFarm = require('./workfarm/index');
const workers = workerFarm(require.resolve('./createtile'), ['createTile', 'closeDataset']);
const { tileBoundMap, ST_TileEnvelope, getTileByCoors } = require('./tile-util');
let childPids = new Set();
let progressBar;
/**
* @typedef {{
* tminx: number;
* tminy: number;
* tmaxx: number;
* tmaxy: number;
* }} LevelInfo
*
* @typedef {{
* [key: number]: LevelInfo;
* }} LevelInfoDict
*
* @typedef {{
* index: number;
* startX: number;
* startY: number;
* width:number;
* height:number;
* resX:number;
* resY:number;
* }} OverviewInfo
*
* @typedef {{
* [key: number]: OverviewInfo;
* }} OverviewInfoDict
*/
/**
* @typedef {{
* ds: import('gdal').Dataset;
* path: string;
* }} DsInfo
*
* @typedef {{
* tileCount: number;
* levelInfo: LevelInfoDict;
* completeCount: number;
* }} StatisticsInfo
*
* @type {StatisticsInfo}
*/
let statistics = {
tileCount: 0,
completeCount: 0,
levelInfo: {}
}
process.on('SIGINT', function () {
console.log('\n\n>> 清理临时文件中...');
recycle();
console.log('>> 清理临时文件 - 完成');
process.exit();
});
function recycle() {
if (sourceDs !== null) {
try {
sourceDs.close();
} catch (e) { }
sourceDs = null;
}
if (projectDs !== null) {
try {
projectDs.close();
} catch (e) { }
projectDs = null;
}
/*if (encodeDs !== null) {
try {
encodeDs.close();
} catch (e) { }
encodeDs = null;
}*/
// 存在临时文件,强制删除
if (fs.existsSync(projectPath)) {
fs.unlinkSync(projectPath);
projectPath = null;
}
if (fs.existsSync(encodePath)) {
fs.unlinkSync(encodePath);
encodePath = null;
}
// 存在临时影像金字塔附属文件
const ovrPath = encodePath + '.ovr';
if (fs.existsSync(ovrPath))
fs.unlinkSync(ovrPath);
}
/**
* 重投影数据集
*/
const project = (ds, epsg, resampling) => {
let projectDatasetPath = path.join(os.tmpdir(), `${uuid()}.tif`);
reprojectImage(ds, projectDatasetPath, epsg, resampling);
return projectDatasetPath;
}
/**
*
* @param {import('gdal').Dataset} dataset
* @param {number} minZoom
*
* @returns {number} adjustZoom
*/
const buildPyramid = (
ds,
minZoom,
resampling
) => {
const res = ds.geoTransform[1]; // 使用resx替代整个影像的分辨率
const maxPixel = Math.min(ds.rasterSize.x, ds.rasterSize.y);
// 金字塔分级制度,默认2的等比
let overviewNum = 1;
while (maxPixel / Math.pow(2, overviewNum) > 256) {
overviewNum++;
}
// 计算originZ
let res_zoom = (tileBoundTool.xmax - tileBoundTool.xmin) / 256;
let originZ = 0;
while (res_zoom / 2 > res) {
res_zoom = res_zoom / 2;
originZ++;
}
// 即从originZ以下,建立overviewNum个影像金字塔 <originZ| originZ-1 originZ-2 originZ-3 originZ-4 |originZ-5>
let overviews = [];
for (let zoom = originZ - 1; zoom >= originZ - 1 - overviewNum; zoom--) {
if (zoom < minZoom)
break;
const factor = Math.pow(2, originZ - zoom)
overviews.push(factor);
}
const buildOverviewResampling = getBuildOverviewResampling(resampling);
ds.buildOverviews(buildOverviewResampling, overviews);
// z>=originZ使用原始影像
return {
maxOverViewsZ: originZ - 1, // 大于该值用原始影像
minOverViewsZ: originZ - overviews.length // 小于该值,用最后一级别影像金字塔索引
};
}
// 公共资源,包括ds,path对象
let sourceDs, projectDs = null;
// , encodeDs
let projectPath, encodePath = null;
let tileBoundTool;
/**
*
* @param {string} tifFilePath TIF 文件路径
* @param {string} outputDir 输出目录
* @param {{
* minZoom: number;
* maxZoom: number;
* epsg: number;
* encoding: 'mapbox' | 'terrarium';
* }} options 可选配置
*/
async function main(input, output, options) {
// 计时开始
const startTime = global.performance.now();
// 结构可选参数
const { minZoom, maxZoom, epsg, encoding, isClean, resampling } = options;
// 固定瓦片尺寸
const tileSize = 256;
tileBoundTool = tileBoundMap.get(epsg);
// 判断是否以mbtiles转储
const isSavaMbtiles = (path.extname(output) === '.mbtiles');
// 定义切片临时输出目录
let outputDir = output;
// 如果以mbtiles存储重定向为临时目录
if (isSavaMbtiles === true)
outputDir = path.join(os.tmpdir(), uuid());
let stepIndex = 0;
if (isClean === 1) {
if (isSavaMbtiles === true && fs.existsSync(output))
fs.unlinkSync(output);
else
emptyDir(output);
console.log(`>> 步骤${++stepIndex}: 清空输出文件夹 - 完成`);
}
sourceDs = gdal.open(input, 'r');
//#region 步骤 1 - 重投影
if (sourceDs.srs.getAuthorityCode() !== epsg) {
projectPath = project(sourceDs, epsg, resampling);
projectDs = gdal.open(projectPath, 'r');
sourceDs.close(); // 原始的就不需要了
console.log(`>> 步骤${++stepIndex}: 重投影至 EPSG:${epsg} - 完成`);
} else {
projectDs = sourceDs;
}
sourceDs = null;
//#endregion
//#region 步骤 2 - 建立影像金字塔 由于地形通常是30m 90m精度
const overViewInfo = buildPyramid(projectDs, minZoom, resampling);
console.log(`>> 步骤${++stepIndex}: 构建影像金字塔索引 - 完成`);
//#endregion
//#region 步骤3 - 切片
const dsInfo = {
width: projectDs.rasterSize.x,
height: projectDs.rasterSize.y,
resX: projectDs.geoTransform[1],
resY: projectDs.geoTransform[5],
startX: projectDs.geoTransform[0],
startY: projectDs.geoTransform[3],
endX: projectDs.geoTransform[0] + projectDs.rasterSize.x * projectDs.geoTransform[1],
endY: projectDs.geoTransform[3] + projectDs.rasterSize.y * projectDs.geoTransform[5],
path: projectDs.description
}
// 计算切片总数
// 堆积任务数量
let pileUpCount = 0;
let miny, maxy;
if (dsInfo.startY < dsInfo.endY) {
miny = dsInfo.startY;
maxy = dsInfo.endY;
} else {
miny = dsInfo.endY;
maxy = dsInfo.startY;
}
// xyz是从左上角开始,往右下角走
let startPoint = [dsInfo.startX, maxy];
let endPoint = [dsInfo.endX, miny];
for (let tz = minZoom; tz <= maxZoom; ++tz) {
const minRC = getTileByCoors(startPoint, tz, tileBoundTool);
const maxRC = getTileByCoors(endPoint, tz, tileBoundTool);
statistics.tileCount += (maxRC.row - minRC.row + 1) * (maxRC.column - minRC.column + 1);
statistics.levelInfo[tz] = {
tminx: minRC.column,
tminy: minRC.row,
tmaxx: maxRC.column,
tmaxy: maxRC.row,
};
}
// 设置进度条任务总数
progressBar = new ProgressBar(60, `>> 步骤${++stepIndex}`);
progressBar.setTaskTotal(statistics.tileCount)
// 实际裙边有1像素 256+1+1 上下左右各1像素
// 裙边所需的缩放
let buffer = 1;
let outTileSize = tileSize;
if (encoding === 'mapbox') {
outTileSize = tileSize + buffer*2;
}
for (let tz = minZoom; tz <= maxZoom; tz++) {
const { tminx, tminy, tmaxx, tmaxy } = statistics.levelInfo[tz];
let overviewInfo;
// 根据z获取宽高和分辨率信息
if (tz > overViewInfo.maxOverViewsZ)
overviewInfo = dsInfo;
else {
let startZ = Math.max(tz, overViewInfo.minOverViewsZ);
const factorZoom = overViewInfo.maxOverViewsZ - startZ;
const factor = Math.pow(2, factorZoom+1);
overviewInfo = {
index: factorZoom, //影像金字塔序号从0开始
startX: dsInfo.startX,
startY: dsInfo.startY,
width: Math.ceil(dsInfo.width * 1.0 / factor),
height: Math.ceil(dsInfo.height * 1.0 / factor),
resX: dsInfo.resX * factor,
resY: dsInfo.resY * factor
};
}
for (let j = tminx; j <= tmaxx; j++) {
// 递归创建目录
mkdirsSync(path.join(outputDir, tz.toString(), j.toString()));
for (let i = tminy; i <= tmaxy; i++) {
const tileBound = ST_TileEnvelope(tz, j, i, buffer, tileBoundTool);
const { rb, wb } = geoQuery(
overviewInfo,
tileBound[0],
tileBound[3],
tileBound[2],
tileBound[1],
outTileSize
);
const createInfo = {
outTileSize,
overviewInfo,
rb,
wb,
encoding,
dsPath: dsInfo.path,
x: j,
y: i,
z: tz,
outputTile: outputDir
};
pileUpCount++;
if (pileUpCount > 500)
await wait(1000);
workers.createTile(createInfo, async function (err, pid) {
if (err) {
console.log(err);
}
childPids.add(pid);
statistics.completeCount++;
pileUpCount--;
// 更新进度条
progressBar.render(statistics.completeCount);
if (statistics.completeCount === statistics.tileCount) {
// 转储mbtiles
if (isSavaMbtiles === true) {
await importMbtiles(outputDir, output);
console.log(`\n>> 步骤${++stepIndex}: 转储mbtiles - 完成`);
}
const endTime = global.performance.now()
const {
resultTime,
unit
} = prettyTime(endTime - startTime)
console.log(`\n\n转换完成,用时 ${resultTime.toFixed(2)} ${unit}。`)
//循环关闭子进程的ds,否则临时文件被占用删除不了
const call = {
method: 'closeDataset',
callback: function (_, closePid) {
childPids.delete(closePid);
if (childPids.size === 0) {
// 关闭子进程任务
workerFarm.end(workers);
// 清除数据源信息
recycle();
resetStats();
}
},
args: [],
retries: 0
}
// 循环调用,关闭子进程资源
for (let childId in workers.farm.children) {
workers.farm.send(childId, call);
}
}
})
}
}
}
//#endregion
}
const resetStats = () => {
statistics.tileCount = 0;
statistics.completeCount = 0;
statistics.levelInfo = {};
}
// 重构使其支持影像金字塔查询
/**
*
* @param {OverviewInfo} overviewInfo
* @param {number} ulx
* @param {number} uly
* @param {number} lrx
* @param {number} lry
* @param {number} [querysize=0]
* @returns {{
* rb: {
* rx: number;
* ry: number;
* rxsize: number;
* rysize: number;
* };
* wb: {
* wx: number;
* wy: number;
* wxsize: number;
* wysize: number;
* };
* }}
*/
function geoQuery(overviewInfo, ulx, uly, lrx, lry, querysize = 0) {
const { startX, startY, width, height, resX, resY } = overviewInfo;
// 根据金字塔级别,重置分辨率,重置宽高
let rx = Math.floor((ulx - startX) / resX + 0.001);
let ry = Math.floor((uly - startY) / resY + 0.001);
let rxsize = Math.max(1, Math.floor((lrx - ulx) / resX + 0.5));
let rysize = Math.max(1, Math.floor((lry - uly) / resY + 0.5));
let wxsize, wysize;
if (!querysize) {
wxsize = rxsize;
wysize = rysize;
} else {
wxsize = querysize;
wysize = querysize;
}
let wx = 0;
if (rx < 0) {
let rxshift = Math.abs(rx);
wx = Math.floor(wxsize * (rxshift * 1.0 / rxsize));
wxsize = wxsize - wx;
rxsize = rxsize - Math.floor(rxsize * (rxshift * 1.0 / rxsize));
rx = 0;
}
if ((rx + rxsize) > width) {
wxsize = Math.floor(wxsize * (width - rx) * 1.0 / rxsize);
rxsize = width - rx;
}
let wy = 0;
if (ry < 0) {
const ryshift = Math.abs(ry);
wy = Math.floor(wysize * (ryshift * 1.0 / rysize));
wysize = wysize - wy;
rysize = rysize - Math.floor(rysize * (ryshift * 1.0 / rysize));
ry = 0;
}
if ((ry + rysize) > height) {
wysize = Math.floor(wysize * (height - ry) * 1.0 / rysize);
rysize = height - ry;
}
return {
rb: { rx, ry, rxsize, rysize },
wb: { wx, wy, wxsize, wysize }
}
}
/**
* 根据tms或xyz策略修正Y的实际值
* @param {number} ty
* @param {number} tz
* @param {boolean} tms2xyz
* @returns {number}
*/
function getYtile(ty, tz, tms2xyz = true) {
if (tms2xyz)
return Math.pow(2, tz) - 1 - ty;
return ty;
}
/**
* 将目录里的切片导入mbtiles,删除文件目录
* @param {number} tileDir
* @param {number} mbtilesPath
* @returns {Promise}
*/
function importMbtiles(tileDir, mbtilesPath) {
return new Promise(async (res, rej) => {
let mbtiles = await mb_open(mbtilesPath, 'rwc');
// 遍历tile目录的tile,并转储至mbtiles
let z, x, y;
const zFolds = fs.readdirSync(tileDir);
const zCount = zFolds.length;
for (let i = 0; i < zCount; i++) {
let zFold = zFolds[i];
z = Number(zFold);
const zPath = path.join(tileDir, zFold);
// 遍历z下的x文件夹
const xFolds = fs.readdirSync(zPath);
const xCount = xFolds.length;
for (let j = 0; j < xCount; j++) {
let xFold = xFolds[j];
x = Number(xFold);
// 遍历x文件夹下的y文件
const xPath = path.join(zPath, xFold);
const yFiles = fs.readdirSync(xPath);
const yCount = yFiles.length;
// 每10个一批写入,否则sqlite容易报错database lock
let promises = [];
for (let k = 0; k < yCount; k++) {
const yFile = yFiles[k];
y = Number(yFile.split('.')[0]);
const yPath = path.join(xPath, yFile);
promises.push(mb_put_tile(mbtiles, z, x, y, yPath));
}
await Promise.all(promises);
promises = [];
// 删除目录
fs.rmdirSync(xPath);
}
fs.rmdirSync(zPath);
}
fs.rmdirSync(tileDir);
await mb_stop_writing(mbtiles);
res('import');
});
}
module.exports = main;
================================================
FILE: src/mbtiles-util.js
================================================
const fs = require('fs');
const MBTiles = require('@mapbox/mbtiles');
// 打开mbtiles
function mb_open(mbpath, mode) {
return new Promise((res, rej) => {
new MBTiles(`${mbpath}?mode=${mode}`, function (err, mbtiles) {
if (err)
rej(err);
if (mode === 'rw' || mode === 'rwc') {
mbtiles.startWriting(function (err) {
if (err)
rej(err);
res(mbtiles);
});
}
});
})
}
// 停止写入
function mb_stop_writing(mbtiles) {
return new Promise((res, rej) => {
mbtiles.stopWriting(function (err) {
if (err)
rej(err);
res('stopWriting');
});
});
}
// 插入xyz tile
function mb_put_tile(mbtiles, z, x, y, tile_path, isUnlink = true) {
return new Promise((res, rej) => {
fs.readFile(tile_path, (err, data) => {
if (err)
rej(err);
mbtiles.putTile(z, x, y, data, function (err) {
if (err)
rej(err);
if (isUnlink === true) {
fs.unlink(tile_path, err => {
if (err)
rej(err);
res('insert');
})
} else
res('insert');
});
})
})
}
module.exports = {
mb_open, mb_stop_writing, mb_put_tile
}
================================================
FILE: src/progressbar/format.js
================================================
/**
*
* @param {string} str
* @param {Array<any>} params
* @returns
*/
function format(str, params = []) {
const pattern = /{([\s\S])*?}/gim;
let index = 0;
let params_index = 0;
return str.replace(pattern, (match, tuple, offset) => {
index = offset + match.length;
params_index += 1;
// 异常格式处理,对于列表和对象类型的param,对外抛出异常
if (
Array.isArray(params[params_index - 1]) ||
typeof params[params_index - 1] === "object"
) {
throw TypeError(params[params_index - 1] + "不能为对象类型");
}
if (match.length > 2) {
match = match.slice(1, match.length - 1);
return eval('params[params_index-1].' + match);;
} else {
return params[params_index - 1];
}
});
}
module.exports = format;
================================================
FILE: src/progressbar/index.js
================================================
/**
* 进度条实现。
*/
const log = require('single-line-log').stdout;
const format = require('./format');
const cliColor = require('cli-color');
/**
* 进度条实现。
*/
const { blue, green, yellow, red } = cliColor;
/**
* 进度条
*/
class ProgressBar {
constructor(
barLength = 28,
description = 'PROGRESS'
) {
this.length = barLength;
this.taskTotal = 0;
this.description = description;
//this.completed = 0;
//this.tickStep = tickStep;
}
/**
* 设置一共有多少个任务
* @param {number} value
*/
setTaskTotal(value) {
this.taskTotal = value
}
/**
* 在控制台中绘制当前进度条
* @param {number} completed 完成了多少个任务
*/
render(completed) {
//this.completed++;
//const completed = this.completed * this.tickStep;
const finishedRate = Number((completed / this.taskTotal).toFixed(4));
const finishedCellCount = Math.floor(finishedRate * this.length);
let i = 0
// 拼接黑色条
let cell = '';
for (i = 0; i < finishedCellCount; ++i) {
cell += '█';
}
// 拼接灰色条
let empty = '';
for (i = 0; i < this.length - finishedCellCount; ++i) {
empty += '░';
}
const percentStr = (100 * finishedRate).toFixed(2);
/**
* 使用cli-color进行包装美化。
*/
const cellStyle = green.bgBlack.bold(cell);
const completedStyle = green.bold(completed);
const statusStyle = Number(finishedRate) === 1 ? green.bold('完成') : yellow.bold('转换中⏳')
// 拼接最终文本
const cmdtext = format(
"{}: {} - {}% {}{} {}/{}",
[
this.description,
statusStyle,
percentStr,
cellStyle,
empty,
completedStyle,
String(this.taskTotal),
]
);
log(cmdtext);
}
}
module.exports = ProgressBar;
================================================
FILE: src/tile-util.js
================================================
// 切片范围
let tileBoundMap = new Map();
tileBoundMap.set(3857, {
xmin: -20037508.342789244,
ymin: -20037508.342789244,
xmax: 20037508.342789244,
ymax: 20037508.342789244
});
tileBoundMap.set(900913, {
xmin: -20037508.342789244,
ymin: -20037508.342789244,
xmax: 20037508.342789244,
ymax: 20037508.342789244
});
tileBoundMap.set(4490, {
xmin: -180,
ymin: -90,
xmax: 180,
ymax: 90
});
tileBoundMap.set(4326, {
xmin: -180,
ymin: -90,
xmax: 180,
ymax: 90
});
// 根据xyz计算对应地理坐标系的地理边界
function ST_TileEnvelope(z, x, y, offset = 0, bbox = tileBoundMap.get(3857)) {
const tile_size = 256.0;
const boundsWidth = bbox.xmax - bbox.xmin;
const boundsHeight = bbox.ymax - bbox.ymin;
if (boundsWidth <= 0 || boundsHeight <= 0)
throw new Error("Geometric bounds are too small");
if (z < 0 || z >= 32)
throw new Error(`Invalid tile zoom value, ${z}`);
// 总瓦片数量=worldTileSize*worldTileSize
let worldTileSize = 0x01 << (z > 31 ? 31 : z);
if (x < 0 || x >= worldTileSize)
throw new Error(`Invalid tile x value, ${x}`);
if (y < 0 || y >= worldTileSize)
throw new Error(`Invalid tile y value, ${y}`);
// 地理切片分辨率
const tileGeoSizeX = boundsWidth * 1.0 / worldTileSize;
const tileGeoSizeY = boundsHeight * 1.0 / worldTileSize;
const tileGeoSize = Math.max(tileGeoSizeX,tileGeoSizeY);
let x1 = bbox.xmin + tileGeoSize * x - tileGeoSize / tile_size * offset;
let x2 = bbox.xmin + tileGeoSize * (x + 1) + tileGeoSize / tile_size * offset;
let y1 = bbox.ymax - tileGeoSize * (y + 1) - tileGeoSize / tile_size * offset;
let y2 = bbox.ymax - tileGeoSize * (y) + tileGeoSize / tile_size * offset;
return [x1, y1, x2, y2];
}
// 根据任意地理坐标计算在指定zoom层级下其对应的瓦片行列号
function getTileByCoors(coor, zoom, bbox = tileBoundMap.get(3857)) {
// 计算coor与bbox左上角坐标
const left = bbox.xmin;
const top = bbox.ymax;
const _width = coor[0] - left;
const _height = top - coor[1];
let worldTileSize = 0x01 << zoom;
const boundsWidth = bbox.xmax - bbox.xmin;
const boundsHeight = bbox.ymax - bbox.ymin;
const tileGeoSize = Math.max(boundsWidth,boundsHeight)*1.0/worldTileSize;
const row = Math.floor(_height / tileGeoSize);
const column = Math.floor(_width / tileGeoSize);
return {
row, column
}
}
module.exports = {
tileBoundMap, ST_TileEnvelope, getTileByCoors
};
================================================
FILE: src/util.js
================================================
const fs = require('fs');
const path = require('path');
const s4 = () => {
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
}
/**
* 获取随机 uuid
* @returns {string}
*/
const uuid = () => {
return (s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4());
}
function wait(ms) {
return new Promise(resolve => setTimeout(() => resolve(), ms));
};
/**
* 将毫秒转换为更合适显示的时间数字和单位
* @param {number} timeInMs
* @returns {{
* resultTime: number;
* unit: 'ms' | 'sec' | 'min' | 'hour';
* }}
*/
const prettyTime = (timeInMs) => {
let result = 0
let unit = 'ms'
if (timeInMs < 1000) {
result = timeInMs
} else if (timeInMs < 60 * 1000) {
result = timeInMs / 1000
unit = 'sec'
} else if (timeInMs < 60 * 60 * 1000) {
result = timeInMs / (60 * 1000)
unit = 'min'
} else {
result = timeInMs / (60 * 60 * 1000)
unit = 'hour'
}
return {
resultTime: result,
unit
}
}
//递归创建目录
function mkdirsSync(dirName) {
if (fs.existsSync(dirName)) {
return true;
} else {
if (mkdirsSync(path.dirname(dirName))) {
fs.mkdirSync(dirName);
return true;
}
}
}
/**
* 清空文件夹下所有文件
* @param {*} fold
*/
function emptyDir(fold) {
if(fs.existsSync(fold)===false)
return;
const files = fs.readdirSync(fold);
files.forEach(file => {
const filePath = path.join(fold, file);
const stats = fs.statSync(filePath);
if (stats.isDirectory()) {
emptyDir(filePath);
fs.rmdirSync(filePath);
} else {
fs.unlinkSync(filePath);
}
});
}
module.exports = {
uuid, prettyTime, mkdirsSync, emptyDir, wait
}
================================================
FILE: src/workfarm/child/index.js
================================================
'use strict'
let $module
/*
let contextProto = this.context;
while (contextProto = Object.getPrototypeOf(contextProto)) {
completionGroups.push(Object.getOwnPropertyNames(contextProto));
}
*/
function handle (data) {
let idx = data.idx
, child = data.child
, method = data.method
, args = data.args
, callback = function () {
let _args = Array.prototype.slice.call(arguments)
if (_args[0] instanceof Error) {
let e = _args[0]
_args[0] = {
'$error' : '$error'
, 'type' : e.constructor.name
, 'message' : e.message
, 'stack' : e.stack
}
Object.keys(e).forEach(function(key) {
_args[0][key] = e[key]
})
}
process.send({ owner: 'farm', idx: idx, child: child, args: _args })
}
, exec
if (method == null && typeof $module == 'function')
exec = $module
else if (typeof $module[method] == 'function')
exec = $module[method]
if (!exec)
return console.error('NO SUCH METHOD:', method)
exec.apply(null, args.concat([ callback ]))
}
process.on('message', function (data) {
if (data.owner !== 'farm') {
return;
}
if (!$module) return $module = require(data.module)
if (data.event == 'die') return process.exit(0)
handle(data)
})
================================================
FILE: src/workfarm/farm.js
================================================
'use strict'
const DEFAULT_OPTIONS = {
workerOptions : {}
, maxCallsPerWorker : Infinity
, maxConcurrentWorkers : (require('os').cpus() || { length: 1 }).length
, maxConcurrentCallsPerWorker : 10
, maxConcurrentCalls : Infinity
, maxCallTime : Infinity // exceed this and the whole worker is terminated
, maxRetries : Infinity
, forcedKillTime : 100
, autoStart : false
, onChild : function() {}
}
const fork = require('./fork')
, TimeoutError = require('errno').create('TimeoutError')
, ProcessTerminatedError = require('errno').create('ProcessTerminatedError')
, MaxConcurrentCallsError = require('errno').create('MaxConcurrentCallsError')
function Farm (options, path) {
this.options = Object.assign({}, DEFAULT_OPTIONS, options)
this.path = path
this.activeCalls = 0
}
// make a handle to pass back in the form of an external API
Farm.prototype.mkhandle = function (method) {
return function () {
let args = Array.prototype.slice.call(arguments)
if (this.activeCalls + this.callQueue.length >= this.options.maxConcurrentCalls) {
let err = new MaxConcurrentCallsError('Too many concurrent calls (active: ' + this.activeCalls + ', queued: ' + this.callQueue.length + ')')
if (typeof args[args.length - 1] == 'function')
return process.nextTick(args[args.length - 1].bind(null, err))
throw err
}
this.addCall({
method : method
, callback : args.pop()
, args : args
, retries : 0
})
}.bind(this)
}
// a constructor of sorts
Farm.prototype.setup = function (methods) {
let iface
if (!methods) { // single-function export
iface = this.mkhandle()
} else { // multiple functions on the export
iface = {}
methods.forEach(function (m) {
iface[m] = this.mkhandle(m)
}.bind(this))
}
this.searchStart = -1
this.childId = -1
this.children = {}
this.activeChildren = 0
this.callQueue = []
if (this.options.autoStart) {
while (this.activeChildren < this.options.maxConcurrentWorkers)
this.startChild()
}
return iface
}
// when a child exits, check if there are any outstanding jobs and requeue them
Farm.prototype.onExit = function (childId) {
// delay this to give any sends a chance to finish
setTimeout(function () {
let doQueue = false
if (this.children[childId] && this.children[childId].activeCalls) {
this.children[childId].calls.forEach(function (call, i) {
if (!call) return
else if (call.retries >= this.options.maxRetries) {
this.receive({
idx : i
, child : childId
, args : [ new ProcessTerminatedError('cancel after ' + call.retries + ' retries!') ]
})
} else {
call.retries++
this.callQueue.unshift(call)
doQueue = true
}
}.bind(this))
}
this.stopChild(childId)
doQueue && this.processQueue()
}.bind(this), 10)
}
// start a new worker
Farm.prototype.startChild = function () {
this.childId++
let forked = fork(this.path, this.options.workerOptions)
, id = this.childId
, c = {
send : forked.send
, child : forked.child
, calls : []
, activeCalls : 0
, exitCode : null
}
this.options.onChild(forked.child);
forked.child.on('message', function(data) {
if (data.owner !== 'farm') {
return;
}
this.receive(data);
}.bind(this))
forked.child.once('exit', function (code) {
c.exitCode = code
this.onExit(id)
}.bind(this))
this.activeChildren++
this.children[id] = c
}
// stop a worker, identified by id
Farm.prototype.stopChild = function (childId) {
let child = this.children[childId]
if (child) {
child.send({owner: 'farm', event: 'die'})
setTimeout(function () {
if (child.exitCode === null)
child.child.kill('SIGKILL')
}, this.options.forcedKillTime).unref()
;delete this.children[childId]
this.activeChildren--
}
}
// called from a child process, the data contains information needed to
// look up the child and the original call so we can invoke the callback
Farm.prototype.receive = function (data) {
let idx = data.idx
, childId = data.child
, args = data.args
, child = this.children[childId]
, call
if (!child) {
return;
}
call = child.calls[idx]
if (!call) {
return;
}
if (this.options.maxCallTime !== Infinity)
clearTimeout(call.timer)
if (args[0] && args[0].$error == '$error') {
let e = args[0]
switch (e.type) {
case 'TypeError': args[0] = new TypeError(e.message); break
case 'RangeError': args[0] = new RangeError(e.message); break
case 'EvalError': args[0] = new EvalError(e.message); break
case 'ReferenceError': args[0] = new ReferenceError(e.message); break
case 'SyntaxError': args[0] = new SyntaxError(e.message); break
case 'URIError': args[0] = new URIError(e.message); break
default: args[0] = new Error(e.message)
}
args[0].type = e.type
args[0].stack = e.stack
// Copy any custom properties to pass it on.
Object.keys(e).forEach(function(key) {
args[0][key] = e[key];
});
}
process.nextTick(function () {
call.callback.apply(null, args)
})
;delete child.calls[idx]
child.activeCalls--
this.activeCalls--
if (child.calls.length >= this.options.maxCallsPerWorker
&& !Object.keys(child.calls).length) {
// this child has finished its run, kill it
this.stopChild(childId)
}
// allow any outstanding calls to be processed
this.processQueue()
}
Farm.prototype.childTimeout = function (childId) {
let child = this.children[childId]
, i
if (!child)
return
for (i in child.calls) {
this.receive({
idx : i
, child : childId
, args : [ new TimeoutError('worker call timed out!') ]
})
}
this.stopChild(childId)
}
// send a call to a worker, identified by id
Farm.prototype.send = function (childId, call) {
let child = this.children[childId]
, idx = child.calls.length
child.calls.push(call)
child.activeCalls++
this.activeCalls++
child.send({
owner : 'farm'
, idx : idx
, child : childId
, method : call.method
, args : call.args
})
if (this.options.maxCallTime !== Infinity) {
call.timer =
setTimeout(this.childTimeout.bind(this, childId), this.options.maxCallTime)
}
}
// a list of active worker ids, in order, but the starting offset is
// shifted each time this method is called, so we work our way through
// all workers when handing out jobs
Farm.prototype.childKeys = function () {
let cka = Object.keys(this.children)
, cks
if (this.searchStart >= cka.length - 1)
this.searchStart = 0
else
this.searchStart++
cks = cka.splice(0, this.searchStart)
return cka.concat(cks)
}
// Calls are added to a queue, this processes the queue and is called
// whenever there might be a chance to send more calls to the workers.
// The various options all impact on when we're able to send calls,
// they may need to be kept in a queue until a worker is ready.
Farm.prototype.processQueue = function () {
let cka, i = 0, childId
if (!this.callQueue.length)
return this.ending && this.end()
if (this.activeChildren < this.options.maxConcurrentWorkers)
this.startChild()
for (cka = this.childKeys(); i < cka.length; i++) {
childId = +cka[i]
if (this.children[childId].activeCalls < this.options.maxConcurrentCallsPerWorker
&& this.children[childId].calls.length < this.options.maxCallsPerWorker) {
this.send(childId, this.callQueue.shift())
if (!this.callQueue.length)
return this.ending && this.end()
} /*else {
console.log(
, this.children[childId].activeCalls < this.options.maxConcurrentCallsPerWorker
, this.children[childId].calls.length < this.options.maxCallsPerWorker
, this.children[childId].calls.length , this.options.maxCallsPerWorker)
}*/
}
if (this.ending)
this.end()
}
// add a new call to the call queue, then trigger a process of the queue
Farm.prototype.addCall = function (call) {
if (this.ending)
return this.end() // don't add anything new to the queue
this.callQueue.push(call)
this.processQueue()
}
// kills child workers when they're all done
Farm.prototype.end = function (callback) {
let complete = true
if (this.ending === false)
return
if (callback)
this.ending = callback
else if (this.ending == null)
this.ending = true
Object.keys(this.children).forEach(function (child) {
if (!this.children[child])
return
if (!this.children[child].activeCalls)
this.stopChild(child)
else
complete = false
}.bind(this))
if (complete && typeof this.ending == 'function') {
process.nextTick(function () {
this.ending()
this.ending = false
}.bind(this))
}
}
module.exports = Farm
module.exports.TimeoutError = TimeoutError
================================================
FILE: src/workfarm/fork.js
================================================
'use strict'
const childProcess = require('child_process')
, childModule = require.resolve('./child/index')
function fork (forkModule, workerOptions) {
// suppress --debug / --inspect flags while preserving others (like --harmony)
let filteredArgs = process.execArgv.filter(function (v) {
return !(/^--(debug|inspect)/).test(v)
})
, options = Object.assign({
execArgv : filteredArgs
, env : process.env
, cwd : process.cwd()
}, workerOptions)
, child = childProcess.fork(childModule, process.argv, options)
child.on('error', function() {
// this *should* be picked up by onExit and the operation requeued
})
child.send({ owner: 'farm', module: forkModule })
// return a send() function for this child
return {
send : child.send.bind(child)
, child : child
}
}
module.exports = fork
================================================
FILE: src/workfarm/index.js
================================================
'use strict'
const Farm = require('./farm')
let farms = [] // keep record of farms so we can end() them if required
function farm (options, path, methods) {
if (typeof options == 'string') {
methods = path
path = options
options = {}
}
let f = new Farm(options, path)
, api = f.setup(methods)
farms.push({ farm: f, api: api });
api.farm = f;
// return the public API
return api;
}
function end (api, callback) {
for (let i = 0; i < farms.length; i++)
if (farms[i] && farms[i].api === api)
return farms[i].farm.end(callback)
process.nextTick(callback.bind(null, new Error('Worker farm not found!')))
}
module.exports = farm
module.exports.end = end
================================================
FILE: test/app.js
================================================
const path = require('path');
const fs = require('fs');
const demPath = path.join(__dirname, 'test.tif');
const tileDirPath = path.join(__dirname, 'terrain');
const config = {
"zoom": "5-14",
"epsg": 3857,
"size": 256,
"resampling": 2,
"encoding": "mapbox",
"input": demPath,
"output": tileDirPath,
"clean": true,
"baseHeight":0,
}
fs.writeFileSync(path.join(__dirname, 'config.json'), JSON.stringify(config));
================================================
FILE: test/mapbox-gl.css
================================================
.mapboxgl-map{font:12px/20px Helvetica Neue,Arial,Helvetica,sans-serif;overflow:hidden;position:relative;-webkit-tap-highlight-color:rgb(0 0 0/0)}.mapboxgl-canvas{left:0;position:absolute;top:0}.mapboxgl-map:-webkit-full-screen{height:100%;width:100%}.mapboxgl-canary{background-color:salmon}.mapboxgl-canvas-container.mapboxgl-interactive,.mapboxgl-ctrl-group button.mapboxgl-ctrl-compass{cursor:grab;-webkit-user-select:none;user-select:none}.mapboxgl-canvas-container.mapboxgl-interactive.mapboxgl-track-pointer{cursor:pointer}.mapboxgl-canvas-container.mapboxgl-interactive:active,.mapboxgl-ctrl-group button.mapboxgl-ctrl-compass:active{cursor:grabbing}.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate,.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate .mapboxgl-canvas{touch-action:pan-x pan-y}.mapboxgl-canvas-container.mapboxgl-touch-drag-pan,.mapboxgl-canvas-container.mapboxgl-touch-drag-pan .mapboxgl-canvas{touch-action:pinch-zoom}.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan,.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan .mapboxgl-canvas{touch-action:none}.mapboxgl-ctrl-bottom-left,.mapboxgl-ctrl-bottom-right,.mapboxgl-ctrl-top-left,.mapboxgl-ctrl-top-right{pointer-events:none;position:absolute;z-index:2}.mapboxgl-ctrl-top-left{left:0;top:0}.mapboxgl-ctrl-top-right{right:0;top:0}.mapboxgl-ctrl-bottom-left{bottom:0;left:0}.mapboxgl-ctrl-bottom-right{bottom:0;right:0}.mapboxgl-ctrl{clear:both;pointer-events:auto;transform:translate(0)}.mapboxgl-ctrl-top-left .mapboxgl-ctrl{float:left;margin:10px 0 0 10px}.mapboxgl-ctrl-top-right .mapboxgl-ctrl{float:right;margin:10px 10px 0 0}.mapboxgl-ctrl-bottom-left .mapboxgl-ctrl{float:left;margin:0 0 10px 10px}.mapboxgl-ctrl-bottom-right .mapboxgl-ctrl{float:right;margin:0 10px 10px 0}.mapboxgl-ctrl-group{background:#fff;border-radius:4px}.mapboxgl-ctrl-group:not(:empty){box-shadow:0 0 0 2px rgba(0,0,0,.1)}@media (-ms-high-contrast:active){.mapboxgl-ctrl-group:not(:empty){box-shadow:0 0 0 2px ButtonText}}.mapboxgl-ctrl-group button{background-color:transparent;border:0;box-sizing:border-box;cursor:pointer;display:block;height:29px;outline:none;overflow:hidden;padding:0;width:29px}.mapboxgl-ctrl-group button+button{border-top:1px solid #ddd}.mapboxgl-ctrl button .mapboxgl-ctrl-icon{background-position:50%;background-repeat:no-repeat;display:block;height:100%;width:100%}@media (-ms-high-contrast:active){.mapboxgl-ctrl-icon{background-color:transparent}.mapboxgl-ctrl-group button+button{border-top:1px solid ButtonText}}.mapboxgl-ctrl-attrib-button:focus,.mapboxgl-ctrl-group button:focus{box-shadow:0 0 2px 2px #0096ff}.mapboxgl-ctrl button:disabled{cursor:not-allowed}.mapboxgl-ctrl button:disabled .mapboxgl-ctrl-icon{opacity:.25}.mapboxgl-ctrl-group button:first-child{border-radius:4px 4px 0 0}.mapboxgl-ctrl-group button:last-child{border-radius:0 0 4px 4px}.mapboxgl-ctrl-group button:only-child{border-radius:inherit}.mapboxgl-ctrl button:not(:disabled):hover{background-color:rgb(0 0 0/5%)}.mapboxgl-ctrl-group button:focus:focus-visible{box-shadow:0 0 2px 2px #0096ff}.mapboxgl-ctrl-group button:focus:not(:focus-visible){box-shadow:none}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23000' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23000' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E")}}.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23000' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23000' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E")}}.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M10.5 14l4-8 4 8h-8z'/%3E%3Cpath id='south' d='M10.5 16l4 8 4-8h-8z' fill='%23ccc'/%3E%3C/svg%3E")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M10.5 14l4-8 4 8h-8z'/%3E%3Cpath id='south' d='M10.5 16l4 8 4-8h-8z' fill='%23999'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23000' viewBox='0 0 29 29'%3E%3Cpath d='M10.5 14l4-8 4 8h-8z'/%3E%3Cpath id='south' d='M10.5 16l4 8 4-8h-8z' fill='%23ccc'/%3E%3C/svg%3E")}}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23aaa'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' fill='%23f00'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active-error .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e58978'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2' display='none'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background-error .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e54e33'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2' display='none'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-waiting .mapboxgl-ctrl-icon{animation:mapboxgl-spin 2s linear infinite}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23999'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' fill='%23f00'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active-error .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e58978'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2' display='none'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background-error .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e54e33'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2' display='none'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23000'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23666'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' fill='%23f00'/%3E%3C/svg%3E")}}@keyframes mapboxgl-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}a.mapboxgl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' fill-rule='evenodd' viewBox='0 0 88 23'%3E%3Cdefs%3E%3Cpath id='logo' d='M11.5 2.25c5.105 0 9.25 4.145 9.25 9.25s-4.145 9.25-9.25 9.25-9.25-4.145-9.25-9.25 4.145-9.25 9.25-9.25zM6.997 15.983c-.051-.338-.828-5.802 2.233-8.873a4.395 4.395 0 013.13-1.28c1.27 0 2.49.51 3.39 1.42.91.9 1.42 2.12 1.42 3.39 0 1.18-.449 2.301-1.28 3.13C12.72 16.93 7 16 7 16l-.003-.017zM15.3 10.5l-2 .8-.8 2-.8-2-2-.8 2-.8.8-2 .8 2 2 .8z'/%3E%3Cpath id='text' d='M50.63 8c.13 0 .23.1.23.23V9c.7-.76 1.7-1.18 2.73-1.18 2.17 0 3.95 1.85 3.95 4.17s-1.77 4.19-3.94 4.19c-1.04 0-2.03-.43-2.74-1.18v3.77c0 .13-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V8.23c0-.12.1-.23.23-.23h1.4zm-3.86.01c.01 0 .01 0 .01-.01.13 0 .22.1.22.22v7.55c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V15c-.7.76-1.69 1.19-2.73 1.19-2.17 0-3.94-1.87-3.94-4.19 0-2.32 1.77-4.19 3.94-4.19 1.03 0 2.02.43 2.73 1.18v-.75c0-.12.1-.23.23-.23h1.4zm26.375-.19a4.24 4.24 0 00-4.16 3.29c-.13.59-.13 1.19 0 1.77a4.233 4.233 0 004.17 3.3c2.35 0 4.26-1.87 4.26-4.19 0-2.32-1.9-4.17-4.27-4.17zM60.63 5c.13 0 .23.1.23.23v3.76c.7-.76 1.7-1.18 2.73-1.18 1.88 0 3.45 1.4 3.84 3.28.13.59.13 1.2 0 1.8-.39 1.88-1.96 3.29-3.84 3.29-1.03 0-2.02-.43-2.73-1.18v.77c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V5.23c0-.12.1-.23.23-.23h1.4zm-34 11h-1.4c-.13 0-.23-.11-.23-.23V8.22c.01-.13.1-.22.23-.22h1.4c.13 0 .22.11.23.22v.68c.5-.68 1.3-1.09 2.16-1.1h.03c1.09 0 2.09.6 2.6 1.55.45-.95 1.4-1.55 2.44-1.56 1.62 0 2.93 1.25 2.9 2.78l.03 5.2c0 .13-.1.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.8 0-1.46.7-1.59 1.62l.01 4.68c0 .13-.11.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.85 0-1.54.79-1.6 1.8v4.5c0 .13-.1.23-.23.23zm53.615 0h-1.61c-.04 0-.08-.01-.12-.03-.09-.06-.13-.19-.06-.28l2.43-3.71-2.39-3.65a.213.213 0 01-.03-.12c0-.12.09-.21.21-.21h1.61c.13 0 .24.06.3.17l1.41 2.37 1.4-2.37a.34.34 0 01.3-.17h1.6c.04 0 .08.01.12.03.09.06.13.19.06.28l-2.37 3.65 2.43 3.7c0 .05.01.09.01.13 0 .12-.09.21-.21.21h-1.61c-.13 0-.24-.06-.3-.17l-1.44-2.42-1.44 2.42a.34.34 0 01-.3.17zm-7.12-1.49c-1.33 0-2.42-1.12-2.42-2.51 0-1.39 1.08-2.52 2.42-2.52 1.33 0 2.42 1.12 2.42 2.51 0 1.39-1.08 2.51-2.42 2.52zm-19.865 0c-1.32 0-2.39-1.11-2.42-2.48v-.07c.02-1.38 1.09-2.49 2.4-2.49 1.32 0 2.41 1.12 2.41 2.51 0 1.39-1.07 2.52-2.39 2.53zm-8.11-2.48c-.01 1.37-1.09 2.47-2.41 2.47s-2.42-1.12-2.42-2.51c0-1.39 1.08-2.52 2.4-2.52 1.33 0 2.39 1.11 2.41 2.48l.02.08zm18.12 2.47c-1.32 0-2.39-1.11-2.41-2.48v-.06c.02-1.38 1.09-2.48 2.41-2.48s2.42 1.12 2.42 2.51c0 1.39-1.09 2.51-2.42 2.51z'/%3E%3C/defs%3E%3Cmask id='clip'%3E%3Crect x='0' y='0' width='100%25' height='100%25' fill='white'/%3E%3Cuse xlink:href='%23logo'/%3E%3Cuse xlink:href='%23text'/%3E%3C/mask%3E%3Cg id='outline' opacity='0.3' stroke='%23000' stroke-width='3'%3E%3Ccircle mask='url(%23clip)' cx='11.5' cy='11.5' r='9.25'/%3E%3Cuse xlink:href='%23text' mask='url(%23clip)'/%3E%3C/g%3E%3Cg id='fill' opacity='0.9' fill='%23fff'%3E%3Cuse xlink:href='%23logo'/%3E%3Cuse xlink:href='%23text'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;cursor:pointer;display:block;height:23px;margin:0 0 -4px -4px;overflow:hidden;width:88px}a.mapboxgl-ctrl-logo.mapboxgl-compact{width:23px}@media (-ms-high-contrast:active){a.mapboxgl-ctrl-logo{background-color:transparent;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' fill-rule='evenodd' viewBox='0 0 88 23'%3E%3Cdefs%3E%3Cpath id='logo' d='M11.5 2.25c5.105 0 9.25 4.145 9.25 9.25s-4.145 9.25-9.25 9.25-9.25-4.145-9.25-9.25 4.145-9.25 9.25-9.25zM6.997 15.983c-.051-.338-.828-5.802 2.233-8.873a4.395 4.395 0 013.13-1.28c1.27 0 2.49.51 3.39 1.42.91.9 1.42 2.12 1.42 3.39 0 1.18-.449 2.301-1.28 3.13C12.72 16.93 7 16 7 16l-.003-.017zM15.3 10.5l-2 .8-.8 2-.8-2-2-.8 2-.8.8-2 .8 2 2 .8z'/%3E%3Cpath id='text' d='M50.63 8c.13 0 .23.1.23.23V9c.7-.76 1.7-1.18 2.73-1.18 2.17 0 3.95 1.85 3.95 4.17s-1.77 4.19-3.94 4.19c-1.04 0-2.03-.43-2.74-1.18v3.77c0 .13-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V8.23c0-.12.1-.23.23-.23h1.4zm-3.86.01c.01 0 .01 0 .01-.01.13 0 .22.1.22.22v7.55c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V15c-.7.76-1.69 1.19-2.73 1.19-2.17 0-3.94-1.87-3.94-4.19 0-2.32 1.77-4.19 3.94-4.19 1.03 0 2.02.43 2.73 1.18v-.75c0-.12.1-.23.23-.23h1.4zm26.375-.19a4.24 4.24 0 00-4.16 3.29c-.13.59-.13 1.19 0 1.77a4.233 4.233 0 004.17 3.3c2.35 0 4.26-1.87 4.26-4.19 0-2.32-1.9-4.17-4.27-4.17zM60.63 5c.13 0 .23.1.23.23v3.76c.7-.76 1.7-1.18 2.73-1.18 1.88 0 3.45 1.4 3.84 3.28.13.59.13 1.2 0 1.8-.39 1.88-1.96 3.29-3.84 3.29-1.03 0-2.02-.43-2.73-1.18v.77c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V5.23c0-.12.1-.23.23-.23h1.4zm-34 11h-1.4c-.13 0-.23-.11-.23-.23V8.22c.01-.13.1-.22.23-.22h1.4c.13 0 .22.11.23.22v.68c.5-.68 1.3-1.09 2.16-1.1h.03c1.09 0 2.09.6 2.6 1.55.45-.95 1.4-1.55 2.44-1.56 1.62 0 2.93 1.25 2.9 2.78l.03 5.2c0 .13-.1.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.8 0-1.46.7-1.59 1.62l.01 4.68c0 .13-.11.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.85 0-1.54.79-1.6 1.8v4.5c0 .13-.1.23-.23.23zm53.615 0h-1.61c-.04 0-.08-.01-.12-.03-.09-.06-.13-.19-.06-.28l2.43-3.71-2.39-3.65a.213.213 0 01-.03-.12c0-.12.09-.21.21-.21h1.61c.13 0 .24.06.3.17l1.41 2.37 1.4-2.37a.34.34 0 01.3-.17h1.6c.04 0 .08.01.12.03.09.06.13.19.06.28l-2.37 3.65 2.43 3.7c0 .05.01.09.01.13 0 .12-.09.21-.21.21h-1.61c-.13 0-.24-.06-.3-.17l-1.44-2.42-1.44 2.42a.34.34 0 01-.3.17zm-7.12-1.49c-1.33 0-2.42-1.12-2.42-2.51 0-1.39 1.08-2.52 2.42-2.52 1.33 0 2.42 1.12 2.42 2.51 0 1.39-1.08 2.51-2.42 2.52zm-19.865 0c-1.32 0-2.39-1.11-2.42-2.48v-.07c.02-1.38 1.09-2.49 2.4-2.49 1.32 0 2.41 1.12 2.41 2.51 0 1.39-1.07 2.52-2.39 2.53zm-8.11-2.48c-.01 1.37-1.09 2.47-2.41 2.47s-2.42-1.12-2.42-2.51c0-1.39 1.08-2.52 2.4-2.52 1.33 0 2.39 1.11 2.41 2.48l.02.08zm18.12 2.47c-1.32 0-2.39-1.11-2.41-2.48v-.06c.02-1.38 1.09-2.48 2.41-2.48s2.42 1.12 2.42 2.51c0 1.39-1.09 2.51-2.42 2.51z'/%3E%3C/defs%3E%3Cmask id='clip'%3E%3Crect x='0' y='0' width='100%25' height='100%25' fill='white'/%3E%3Cuse xlink:href='%23logo'/%3E%3Cuse xlink:href='%23text'/%3E%3C/mask%3E%3Cg id='outline' opacity='1' stroke='%23000' stroke-width='3'%3E%3Ccircle mask='url(%23clip)' cx='11.5' cy='11.5' r='9.25'/%3E%3Cuse xlink:href='%23text' mask='url(%23clip)'/%3E%3C/g%3E%3Cg id='fill' opacity='1' fill='%23fff'%3E%3Cuse xlink:href='%23logo'/%3E%3Cuse xlink:href='%23text'/%3E%3C/g%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){a.mapboxgl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' fill-rule='evenodd' viewBox='0 0 88 23'%3E%3Cdefs%3E%3Cpath id='logo' d='M11.5 2.25c5.105 0 9.25 4.145 9.25 9.25s-4.145 9.25-9.25 9.25-9.25-4.145-9.25-9.25 4.145-9.25 9.25-9.25zM6.997 15.983c-.051-.338-.828-5.802 2.233-8.873a4.395 4.395 0 013.13-1.28c1.27 0 2.49.51 3.39 1.42.91.9 1.42 2.12 1.42 3.39 0 1.18-.449 2.301-1.28 3.13C12.72 16.93 7 16 7 16l-.003-.017zM15.3 10.5l-2 .8-.8 2-.8-2-2-.8 2-.8.8-2 .8 2 2 .8z'/%3E%3Cpath id='text' d='M50.63 8c.13 0 .23.1.23.23V9c.7-.76 1.7-1.18 2.73-1.18 2.17 0 3.95 1.85 3.95 4.17s-1.77 4.19-3.94 4.19c-1.04 0-2.03-.43-2.74-1.18v3.77c0 .13-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V8.23c0-.12.1-.23.23-.23h1.4zm-3.86.01c.01 0 .01 0 .01-.01.13 0 .22.1.22.22v7.55c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V15c-.7.76-1.69 1.19-2.73 1.19-2.17 0-3.94-1.87-3.94-4.19 0-2.32 1.77-4.19 3.94-4.19 1.03 0 2.02.43 2.73 1.18v-.75c0-.12.1-.23.23-.23h1.4zm26.375-.19a4.24 4.24 0 00-4.16 3.29c-.13.59-.13 1.19 0 1.77a4.233 4.233 0 004.17 3.3c2.35 0 4.26-1.87 4.26-4.19 0-2.32-1.9-4.17-4.27-4.17zM60.63 5c.13 0 .23.1.23.23v3.76c.7-.76 1.7-1.18 2.73-1.18 1.88 0 3.45 1.4 3.84 3.28.13.59.13 1.2 0 1.8-.39 1.88-1.96 3.29-3.84 3.29-1.03 0-2.02-.43-2.73-1.18v.77c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V5.23c0-.12.1-.23.23-.23h1.4zm-34 11h-1.4c-.13 0-.23-.11-.23-.23V8.22c.01-.13.1-.22.23-.22h1.4c.13 0 .22.11.23.22v.68c.5-.68 1.3-1.09 2.16-1.1h.03c1.09 0 2.09.6 2.6 1.55.45-.95 1.4-1.55 2.44-1.56 1.62 0 2.93 1.25 2.9 2.78l.03 5.2c0 .13-.1.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.8 0-1.46.7-1.59 1.62l.01 4.68c0 .13-.11.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.85 0-1.54.79-1.6 1.8v4.5c0 .13-.1.23-.23.23zm53.615 0h-1.61c-.04 0-.08-.01-.12-.03-.09-.06-.13-.19-.06-.28l2.43-3.71-2.39-3.65a.213.213 0 01-.03-.12c0-.12.09-.21.21-.21h1.61c.13 0 .24.06.3.17l1.41 2.37 1.4-2.37a.34.34 0 01.3-.17h1.6c.04 0 .08.01.12.03.09.06.13.19.06.28l-2.37 3.65 2.43 3.7c0 .05.01.09.01.13 0 .12-.09.21-.21.21h-1.61c-.13 0-.24-.06-.3-.17l-1.44-2.42-1.44 2.42a.34.34 0 01-.3.17zm-7.12-1.49c-1.33 0-2.42-1.12-2.42-2.51 0-1.39 1.08-2.52 2.42-2.52 1.33 0 2.42 1.12 2.42 2.51 0 1.39-1.08 2.51-2.42 2.52zm-19.865 0c-1.32 0-2.39-1.11-2.42-2.48v-.07c.02-1.38 1.09-2.49 2.4-2.49 1.32 0 2.41 1.12 2.41 2.51 0 1.39-1.07 2.52-2.39 2.53zm-8.11-2.48c-.01 1.37-1.09 2.47-2.41 2.47s-2.42-1.12-2.42-2.51c0-1.39 1.08-2.52 2.4-2.52 1.33 0 2.39 1.11 2.41 2.48l.02.08zm18.12 2.47c-1.32 0-2.39-1.11-2.41-2.48v-.06c.02-1.38 1.09-2.48 2.41-2.48s2.42 1.12 2.42 2.51c0 1.39-1.09 2.51-2.42 2.51z'/%3E%3C/defs%3E%3Cmask id='clip'%3E%3Crect x='0' y='0' width='100%25' height='100%25' fill='white'/%3E%3Cuse xlink:href='%23logo'/%3E%3Cuse xlink:href='%23text'/%3E%3C/mask%3E%3Cg id='outline' opacity='1' stroke='%23fff' stroke-width='3' fill='%23fff'%3E%3Ccircle mask='url(%23clip)' cx='11.5' cy='11.5' r='9.25'/%3E%3Cuse xlink:href='%23text' mask='url(%23clip)'/%3E%3C/g%3E%3Cg id='fill' opacity='1' fill='%23000'%3E%3Cuse xlink:href='%23logo'/%3E%3Cuse xlink:href='%23text'/%3E%3C/g%3E%3C/svg%3E")}}.mapboxgl-ctrl.mapboxgl-ctrl-attrib{background-color:hsla(0,0%,100%,.5);margin:0;padding:0 5px}@media screen{.mapboxgl-ctrl-attrib.mapboxgl-compact{background-color:#fff;border-radius:12px;box-sizing:content-box;margin:10px;min-height:20px;padding:2px 24px 2px 0;position:relative}.mapboxgl-ctrl-attrib.mapboxgl-compact-show{padding:2px 28px 2px 8px;visibility:visible}.mapboxgl-ctrl-bottom-left>.mapboxgl-ctrl-attrib.mapboxgl-compact-show,.mapboxgl-ctrl-top-left>.mapboxgl-ctrl-attrib.mapboxgl-compact-show{border-radius:12px;padding:2px 8px 2px 28px}.mapboxgl-ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner{display:none}.mapboxgl-ctrl-attrib-button{background-color:hsla(0,0%,100%,.5);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E");border:0;border-radius:12px;box-sizing:border-box;cursor:pointer;display:none;height:24px;outline:none;position:absolute;right:0;top:0;width:24px}.mapboxgl-ctrl-bottom-left .mapboxgl-ctrl-attrib-button,.mapboxgl-ctrl-top-left .mapboxgl-ctrl-attrib-button{left:0}.mapboxgl-ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-button,.mapboxgl-ctrl-attrib.mapboxgl-compact-show .mapboxgl-ctrl-attrib-inner{display:block}.mapboxgl-ctrl-attrib.mapboxgl-compact-show .mapboxgl-ctrl-attrib-button{background-color:rgb(0 0 0/5%)}.mapboxgl-ctrl-bottom-right>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{bottom:0;right:0}.mapboxgl-ctrl-top-right>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{right:0;top:0}.mapboxgl-ctrl-top-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{left:0;top:0}.mapboxgl-ctrl-bottom-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{bottom:0;left:0}}@media screen and (-ms-high-contrast:active){.mapboxgl-ctrl-attrib.mapboxgl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd' fill='%23fff'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E")}}@media screen and (-ms-high-contrast:black-on-white){.mapboxgl-ctrl-attrib.mapboxgl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E")}}.mapboxgl-ctrl-attrib a{color:rgba(0,0,0,.75);text-decoration:none}.mapboxgl-ctrl-attrib a:hover{color:inherit;text-decoration:underline}.mapboxgl-ctrl-attrib .mapbox-improve-map{font-weight:700;margin-left:2px}.mapboxgl-attrib-empty{display:none}.mapboxgl-ctrl-scale{background-color:hsla(0,0%,100%,.75);border:2px solid #333;border-top:#333;box-sizing:border-box;color:#333;font-size:10px;padding:0 5px;white-space:nowrap}.mapboxgl-popup{display:flex;left:0;pointer-events:none;position:absolute;top:0;will-change:transform}.mapboxgl-popup-anchor-top,.mapboxgl-popup-anchor-top-left,.mapboxgl-popup-anchor-top-right{flex-direction:column}.mapboxgl-popup-anchor-bottom,.mapboxgl-popup-anchor-bottom-left,.mapboxgl-popup-anchor-bottom-right{flex-direction:column-reverse}.mapboxgl-popup-anchor-left{flex-direction:row}.mapboxgl-popup-anchor-right{flex-direction:row-reverse}.mapboxgl-popup-tip{border:10px solid transparent;height:0;width:0;z-index:1}.mapboxgl-popup-anchor-top .mapboxgl-popup-tip{align-self:center;border-bottom-color:#fff;border-top:none}.mapboxgl-popup-anchor-top-left .mapboxgl-popup-tip{align-self:flex-start;border-bottom-color:#fff;border-left:none;border-top:none}.mapboxgl-popup-anchor-top-right .mapboxgl-popup-tip{align-self:flex-end;border-bottom-color:#fff;border-right:none;border-top:none}.mapboxgl-popup-anchor-bottom .mapboxgl-popup-tip{align-self:center;border-bottom:none;border-top-color:#fff}.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-tip{align-self:flex-start;border-bottom:none;border-left:none;border-top-color:#fff}.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-tip{align-self:flex-end;border-bottom:none;border-right:none;border-top-color:#fff}.mapboxgl-popup-anchor-left .mapboxgl-popup-tip{align-self:center;border-left:none;border-right-color:#fff}.mapboxgl-popup-anchor-right .mapboxgl-popup-tip{align-self:center;border-left-color:#fff;border-right:none}.mapboxgl-popup-close-button{background-color:transparent;border:0;border-radius:0 3px 0 0;cursor:pointer;position:absolute;right:0;top:0}.mapboxgl-popup-close-button:hover{background-color:rgb(0 0 0/5%)}.mapboxgl-popup-content{background:#fff;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.1);padding:10px 10px 15px;pointer-events:auto;position:relative}.mapboxgl-popup-anchor-top-left .mapboxgl-popup-content{border-top-left-radius:0}.mapboxgl-popup-anchor-top-right .mapboxgl-popup-content{border-top-right-radius:0}.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-content{border-bottom-left-radius:0}.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-content{border-bottom-right-radius:0}.mapboxgl-popup-track-pointer{display:none}.mapboxgl-popup-track-pointer *{pointer-events:none;user-select:none}.mapboxgl-map:hover .mapboxgl-popup-track-pointer{display:flex}.mapboxgl-map:active .mapboxgl-popup-track-pointer{display:none}.mapboxgl-marker{left:0;opacity:1;position:absolute;top:0;transition:opacity .2s;will-change:transform}.mapboxgl-user-location-dot,.mapboxgl-user-location-dot:before{background-color:#1da1f2;border-radius:50%;height:15px;width:15px}.mapboxgl-user-location-dot:before{animation:mapboxgl-user-location-dot-pulse 2s infinite;content:"";position:absolute}.mapboxgl-user-location-dot:after{border:2px solid #fff;border-radius:50%;box-shadow:0 0 3px rgba(0,0,0,.35);box-sizing:border-box;content:"";height:19px;left:-2px;position:absolute;top:-2px;width:19px}.mapboxgl-user-location-show-heading .mapboxgl-user-location-heading{height:0;width:0}.mapboxgl-user-location-show-heading .mapboxgl-user-location-heading:after,.mapboxgl-user-location-show-heading .mapboxgl-user-location-heading:before{border-bottom:7.5px solid #4aa1eb;content:"";position:absolute}.mapboxgl-user-location-show-heading .mapboxgl-user-location-heading:before{border-left:7.5px solid transparent;transform:translateY(-28px) skewY(-20deg)}.mapboxgl-user-location-show-heading .mapboxgl-user-location-heading:after{border-right:7.5px solid transparent;transform:translate(7.5px,-28px) skewY(20deg)}@keyframes mapboxgl-user-location-dot-pulse{0%{opacity:1;transform:scale(1)}70%{opacity:0;transform:scale(3)}to{opacity:0;transform:scale(1)}}.mapboxgl-user-location-dot-stale{background-color:#aaa}.mapboxgl-user-location-dot-stale:after{display:none}.mapboxgl-user-location-accuracy-circle{background-color:#1da1f233;border-radius:100%;height:1px;width:1px}.mapboxgl-crosshair,.mapboxgl-crosshair .mapboxgl-interactive,.mapboxgl-crosshair .mapboxgl-interactive:active{cursor:crosshair}.mapboxgl-boxzoom{background:#fff;border:2px dotted #202020;height:0;left:0;opacity:.5;position:absolute;top:0;width:0}@media print{.mapbox-improve-map{display:none}}.mapboxgl-scroll-zoom-blocker,.mapboxgl-touch-pan-blocker{align-items:center;background:rgba(0,0,0,.7);color:#fff;display:flex;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;height:100%;justify-content:center;left:0;opacity:0;pointer-events:none;position:absolute;text-align:center;top:0;transition:opacity .75s ease-in-out;transition-delay:1s;width:100%}.mapboxgl-scroll-zoom-blocker-show,.mapboxgl-touch-pan-blocker-show{opacity:1;transition:opacity .1s ease-in-out}.mapboxgl-canvas-container.mapboxgl-touch-pan-blocker-override.mapboxgl-scrollable-page,.mapboxgl-canvas-container.mapboxgl-touch-pan-blocker-override.mapboxgl-scrollable-page .mapboxgl-canvas{touch-action:pan-x pan-y}
================================================
FILE: test/mapbox-gl.js
================================================
/* Mapbox GL JS is Copyright © 2020 Mapbox and subject to the Mapbox Terms of Service ((https://www.mapbox.com/legal/tos/). */
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.mapboxgl = factory());
})(this, (function () { 'use strict';
/* eslint-disable */
var shared, worker, mapboxgl;
// define gets called three times: one for each chunk. we rely on the order
// they're imported to know which is which
function define(_, chunk) {
if (!shared) {
shared = chunk;
} else if (!worker) {
worker = chunk;
} else {
var workerBundleString = "self.onerror = function() { console.error('An error occurred while parsing the WebWorker bundle. This is most likely due to improper transpilation by Babel; please see https://docs.mapbox.com/mapbox-gl-js/guides/install/#transpiling'); }; var sharedChunk = {}; (" + shared + ")(sharedChunk); (" + worker + ")(sharedChunk); self.onerror = null;"
var sharedChunk = {};
shared(sharedChunk);
mapboxgl = chunk(sharedChunk);
if (typeof window !== 'undefined' && window && window.URL && window.URL.createObjectURL) {
mapboxgl.workerUrl = window.URL.createObjectURL(new Blob([workerBundleString], { type: 'text/javascript' }));
}
}
}
define(["exports"],(function(t){"use strict";var e="3.4.0";let r;const n={API_URL:"https://api.mapbox.com",get API_URL_REGEX(){if(null==r){const t=/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/|\?|$)/i;try{r=null!=process.env.API_URL_REGEX?new RegExp(process.env.API_URL_REGEX):t;}catch(e){r=t;}}return r},get API_TILEJSON_REGEX(){return /^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/v[0-9]*\/.*\.json.*$)/i},get API_SPRITE_REGEX(){return /^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/styles\/v[0-9]*\/)(.*\/sprite.*\..*$)/i},get API_FONTS_REGEX(){return /^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/fonts\/v[0-9]*\/)(.*\.pbf.*$)/i},get API_STYLE_REGEX(){return /^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/styles\/v[0-9]*\/)(.*$)/i},get API_CDN_URL_REGEX(){return /^((https?:)?\/\/)?api\.mapbox\.c(n|om)(\/mapbox-gl-js\/)(.*$)/i},get EVENTS_URL(){if(!n.API_URL)return null;try{const t=new URL(n.API_URL);return "api.mapbox.cn"===t.hostname?"https://events.mapbox.cn/events/v2":"api.mapbox.com"===t.hostname?"https://events.mapbox.com/events/v2":null}catch(t){return null}},SESSION_PATH:"/map-sessions/v1",FEEDBACK_URL:"https://apps.mapbox.com/feedback",TILE_URL_VERSION:"v4",RASTER_URL_PREFIX:"raster/v1",RASTERARRAYS_URL_PREFIX:"rasterarrays/v1",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,DEFAULT_STYLE:"mapbox://styles/mapbox/standard",MAX_PARALLEL_IMAGE_REQUESTS:16,DRACO_URL:"https://api.mapbox.com/mapbox-gl-js/draco_decoder_gltf_v1.5.6.wasm",MESHOPT_URL:"https://api.mapbox.com/mapbox-gl-js/meshopt_base_v0.20.wasm",MESHOPT_SIMD_URL:"https://api.mapbox.com/mapbox-gl-js/meshopt_simd_v0.20.wasm",GLYPHS_URL:"mapbox://fonts/mapbox/{fontstack}/{range}.pbf"};function i(t){return n.API_URL_REGEX.test(t)}function s(t){return 0===t.indexOf("mapbox:")}function a(t){return n.API_CDN_URL_REGEX.test(t)}function o(t){return n.API_SPRITE_REGEX.test(t)}function l(t){return n.API_STYLE_REGEX.test(t)&&!o(t)}const u={create:"create",load:"load",fullLoad:"fullLoad"};function c(t){const e=t.name.split("?")[0];return a(e)&&e.includes("mapbox-gl.js")?"javascript":a(e)&&e.includes("mapbox-gl.css")?"css":function(t){return n.API_FONTS_REGEX.test(t)}(e)?"fontRange":o(e)?"sprite":l(e)?"style":function(t){return n.API_TILEJSON_REGEX.test(t)}(e)?"tilejson":"other"}function h(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var p={},f={};Object.defineProperty(f,"__esModule",{value:!0}),f.setMatrixArrayType=function(t){f.ARRAY_TYPE=m=t;},f.toRadian=function(t){return t*g},f.equals=function(t,e){return Math.abs(t-e)<=d*Math.max(1,Math.abs(t),Math.abs(e))},f.RANDOM=f.ARRAY_TYPE=f.EPSILON=void 0;var d=1e-6;f.EPSILON=d;var m="undefined"!=typeof Float32Array?Float32Array:Array;f.ARRAY_TYPE=m;var y=Math.random;f.RANDOM=y;var g=Math.PI/180;Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});var x={};function b(t){return b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},b(t)}Object.defineProperty(x,"__esModule",{value:!0}),x.create=function(){var t=new v.ARRAY_TYPE(4);return v.ARRAY_TYPE!=Float32Array&&(t[1]=0,t[2]=0),t[0]=1,t[3]=1,t},x.clone=function(t){var e=new v.ARRAY_TYPE(4);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e},x.copy=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t},x.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},x.fromValues=function(t,e,r,n){var i=new v.ARRAY_TYPE(4);return i[0]=t,i[1]=e,i[2]=r,i[3]=n,i},x.set=function(t,e,r,n,i){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t},x.transpose=function(t,e){if(t===e){var r=e[1];t[1]=e[2],t[2]=r;}else t[0]=e[0],t[1]=e[2],t[2]=e[1],t[3]=e[3];return t},x.invert=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=r*s-i*n;return a?(t[0]=s*(a=1/a),t[1]=-n*a,t[2]=-i*a,t[3]=r*a,t):null},x.adjoint=function(t,e){var r=e[0];return t[0]=e[3],t[1]=-e[1],t[2]=-e[2],t[3]=r,t},x.determinant=function(t){return t[0]*t[3]-t[2]*t[1]},x.multiply=w,x.rotate=function(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=Math.sin(r),l=Math.cos(r);return t[0]=n*l+s*o,t[1]=i*l+a*o,t[2]=n*-o+s*l,t[3]=i*-o+a*l,t},x.scale=function(t,e,r){var n=e[1],i=e[2],s=e[3],a=r[0],o=r[1];return t[0]=e[0]*a,t[1]=n*a,t[2]=i*o,t[3]=s*o,t},x.fromRotation=function(t,e){var r=Math.sin(e),n=Math.cos(e);return t[0]=n,t[1]=r,t[2]=-r,t[3]=n,t},x.fromScaling=function(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=e[1],t},x.str=function(t){return "mat2("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},x.frob=function(t){return Math.hypot(t[0],t[1],t[2],t[3])},x.LDU=function(t,e,r,n){return t[2]=n[2]/n[0],r[0]=n[0],r[1]=n[1],r[3]=n[3]-t[2]*r[1],[t,e,r]},x.add=function(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t},x.subtract=M,x.exactEquals=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]},x.equals=function(t,e){var r=t[0],n=t[1],i=t[2],s=t[3],a=e[0],o=e[1],l=e[2],u=e[3];return Math.abs(r-a)<=v.EPSILON*Math.max(1,Math.abs(r),Math.abs(a))&&Math.abs(n-o)<=v.EPSILON*Math.max(1,Math.abs(n),Math.abs(o))&&Math.abs(i-l)<=v.EPSILON*Math.max(1,Math.abs(i),Math.abs(l))&&Math.abs(s-u)<=v.EPSILON*Math.max(1,Math.abs(s),Math.abs(u))},x.multiplyScalar=function(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t},x.multiplyScalarAndAdd=function(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t[3]=e[3]+r[3]*n,t},x.sub=x.mul=void 0;var v=function(t,e){if(t&&t.__esModule)return t;if(null===t||"object"!==b(t)&&"function"!=typeof t)return {default:t};var r=_(void 0);if(r&&r.has(t))return r.get(t);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in t)if("default"!==s&&Object.prototype.hasOwnProperty.call(t,s)){var a=i?Object.getOwnPropertyDescriptor(t,s):null;a&&(a.get||a.set)?Object.defineProperty(n,s,a):n[s]=t[s];}return n.default=t,r&&r.set(t,n),n}(f);function _(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,r=new WeakMap;return (_=function(t){return t?r:e})(t)}function w(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=r[0],l=r[1],u=r[2],c=r[3];return t[0]=n*o+s*l,t[1]=i*o+a*l,t[2]=n*u+s*c,t[3]=i*u+a*c,t}function M(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[3]=e[3]-r[3],t}x.mul=w,x.sub=M;var A={};function S(t){return S="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},S(t)}Object.defineProperty(A,"__esModule",{value:!0}),A.create=function(){var t=new I.ARRAY_TYPE(6);return I.ARRAY_TYPE!=Float32Array&&(t[1]=0,t[2]=0,t[4]=0,t[5]=0),t[0]=1,t[3]=1,t},A.clone=function(t){var e=new I.ARRAY_TYPE(6);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e},A.copy=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t},A.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},A.fromValues=function(t,e,r,n,i,s){var a=new I.ARRAY_TYPE(6);return a[0]=t,a[1]=e,a[2]=r,a[3]=n,a[4]=i,a[5]=s,a},A.set=function(t,e,r,n,i,s,a){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t[4]=s,t[5]=a,t},A.invert=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],l=r*s-n*i;return l?(t[0]=s*(l=1/l),t[1]=-n*l,t[2]=-i*l,t[3]=r*l,t[4]=(i*o-s*a)*l,t[5]=(n*a-r*o)*l,t):null},A.determinant=function(t){return t[0]*t[3]-t[1]*t[2]},A.multiply=P,A.rotate=function(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],l=e[5],u=Math.sin(r),c=Math.cos(r);return t[0]=n*c+s*u,t[1]=i*c+a*u,t[2]=n*-u+s*c,t[3]=i*-u+a*c,t[4]=o,t[5]=l,t},A.scale=function(t,e,r){var n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],l=r[0],u=r[1];return t[0]=e[0]*l,t[1]=n*l,t[2]=i*u,t[3]=s*u,t[4]=a,t[5]=o,t},A.translate=function(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],l=e[5],u=r[0],c=r[1];return t[0]=n,t[1]=i,t[2]=s,t[3]=a,t[4]=n*u+s*c+o,t[5]=i*u+a*c+l,t},A.fromRotation=function(t,e){var r=Math.sin(e),n=Math.cos(e);return t[0]=n,t[1]=r,t[2]=-r,t[3]=n,t[4]=0,t[5]=0,t},A.fromScaling=function(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=e[1],t[4]=0,t[5]=0,t},A.fromTranslation=function(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=e[0],t[5]=e[1],t},A.str=function(t){return "mat2d("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+")"},A.frob=function(t){return Math.hypot(t[0],t[1],t[2],t[3],t[4],t[5],1)},A.add=function(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t[4]=e[4]+r[4],t[5]=e[5]+r[5],t},A.subtract=E,A.multiplyScalar=function(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t[4]=e[4]*r,t[5]=e[5]*r,t},A.multiplyScalarAndAdd=function(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t[3]=e[3]+r[3]*n,t[4]=e[4]+r[4]*n,t[5]=e[5]+r[5]*n,t},A.exactEquals=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]},A.equals=function(t,e){var r=t[0],n=t[1],i=t[2],s=t[3],a=t[4],o=t[5],l=e[0],u=e[1],c=e[2],h=e[3],p=e[4],f=e[5];return Math.abs(r-l)<=I.EPSILON*Math.max(1,Math.abs(r),Math.abs(l))&&Math.abs(n-u)<=I.EPSILON*Math.max(1,Math.abs(n),Math.abs(u))&&Math.abs(i-c)<=I.EPSILON*Math.max(1,Math.abs(i),Math.abs(c))&&Math.abs(s-h)<=I.EPSILON*Math.max(1,Math.abs(s),Math.abs(h))&&Math.abs(a-p)<=I.EPSILON*Math.max(1,Math.abs(a),Math.abs(p))&&Math.abs(o-f)<=I.EPSILON*Math.max(1,Math.abs(o),Math.abs(f))},A.sub=A.mul=void 0;var I=function(t,e){if(t&&t.__esModule)return t;if(null===t||"object"!==S(t)&&"function"!=typeof t)return {default:t};var r=k(void 0);if(r&&r.has(t))return r.get(t);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in t)if("default"!==s&&Object.prototype.hasOwnProperty.call(t,s)){var a=i?Object.getOwnPropertyDescriptor(t,s):null;a&&(a.get||a.set)?Object.defineProperty(n,s,a):n[s]=t[s];}return n.default=t,r&&r.set(t,n),n}(f);function k(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,r=new WeakMap;return (k=function(t){return t?r:e})(t)}function P(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],l=e[5],u=r[0],c=r[1],h=r[2],p=r[3],f=r[4],d=r[5];return t[0]=n*u+s*c,t[1]=i*u+a*c,t[2]=n*h+s*p,t[3]=i*h+a*p,t[4]=n*f+s*d+o,t[5]=i*f+a*d+l,t}function E(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[3]=e[3]-r[3],t[4]=e[4]-r[4],t[5]=e[5]-r[5],t}A.mul=P,A.sub=E;var z={};function T(t){return T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},T(t)}Object.defineProperty(z,"__esModule",{value:!0}),z.create=function(){var t=new B.ARRAY_TYPE(9);return B.ARRAY_TYPE!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t},z.fromMat4=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t},z.clone=function(t){var e=new B.ARRAY_TYPE(9);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e},z.copy=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t},z.fromValues=function(t,e,r,n,i,s,a,o,l){var u=new B.ARRAY_TYPE(9);return u[0]=t,u[1]=e,u[2]=r,u[3]=n,u[4]=i,u[5]=s,u[6]=a,u[7]=o,u[8]=l,u},z.set=function(t,e,r,n,i,s,a,o,l,u){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t[4]=s,t[5]=a,t[6]=o,t[7]=l,t[8]=u,t},z.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},z.transpose=function(t,e){if(t===e){var r=e[1],n=e[2],i=e[5];t[1]=e[3],t[2]=e[6],t[3]=r,t[5]=e[7],t[6]=n,t[7]=i;}else t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8];return t},z.invert=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],l=e[6],u=e[7],c=e[8],h=c*a-o*u,p=-c*s+o*l,f=u*s-a*l,d=r*h+n*p+i*f;return d?(t[0]=h*(d=1/d),t[1]=(-c*n+i*u)*d,t[2]=(o*n-i*a)*d,t[3]=p*d,t[4]=(c*r-i*l)*d,t[5]=(-o*r+i*s)*d,t[6]=f*d,t[7]=(-u*r+n*l)*d,t[8]=(a*r-n*s)*d,t):null},z.adjoint=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],l=e[6],u=e[7],c=e[8];return t[0]=a*c-o*u,t[1]=i*u-n*c,t[2]=n*o-i*a,t[3]=o*l-s*c,t[4]=r*c-i*l,t[5]=i*s-r*o,t[6]=s*u-a*l,t[7]=n*l-r*u,t[8]=r*a-n*s,t},z.determinant=function(t){var e=t[3],r=t[4],n=t[5],i=t[6],s=t[7],a=t[8];return t[0]*(a*r-n*s)+t[1]*(-a*e+n*i)+t[2]*(s*e-r*i)},z.multiply=R,z.translate=function(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=r[0],f=r[1];return t[0]=n,t[1]=i,t[2]=s,t[3]=a,t[4]=o,t[5]=l,t[6]=p*n+f*a+u,t[7]=p*i+f*o+c,t[8]=p*s+f*l+h,t},z.rotate=function(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=Math.sin(r),f=Math.cos(r);return t[0]=f*n+p*a,t[1]=f*i+p*o,t[2]=f*s+p*l,t[3]=f*a-p*n,t[4]=f*o-p*i,t[5]=f*l-p*s,t[6]=u,t[7]=c,t[8]=h,t},z.scale=function(t,e,r){var n=r[0],i=r[1];return t[0]=n*e[0],t[1]=n*e[1],t[2]=n*e[2],t[3]=i*e[3],t[4]=i*e[4],t[5]=i*e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t},z.fromTranslation=function(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=e[0],t[7]=e[1],t[8]=1,t},z.fromRotation=function(t,e){var r=Math.sin(e),n=Math.cos(e);return t[0]=n,t[1]=r,t[2]=0,t[3]=-r,t[4]=n,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},z.fromScaling=function(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=e[1],t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},z.fromMat2d=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=0,t[3]=e[2],t[4]=e[3],t[5]=0,t[6]=e[4],t[7]=e[5],t[8]=1,t},z.fromQuat=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=r+r,o=n+n,l=i+i,u=r*a,c=n*a,h=n*o,p=i*a,f=i*o,d=i*l,m=s*a,y=s*o,g=s*l;return t[0]=1-h-d,t[3]=c-g,t[6]=p+y,t[1]=c+g,t[4]=1-u-d,t[7]=f-m,t[2]=p-y,t[5]=f+m,t[8]=1-u-h,t},z.normalFromMat4=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],l=e[6],u=e[7],c=e[8],h=e[9],p=e[10],f=e[11],d=e[12],m=e[13],y=e[14],g=e[15],x=r*o-n*a,b=r*l-i*a,v=r*u-s*a,_=n*l-i*o,w=n*u-s*o,M=i*u-s*l,A=c*m-h*d,S=c*y-p*d,I=c*g-f*d,k=h*y-p*m,P=h*g-f*m,E=p*g-f*y,z=x*E-b*P+v*k+_*I-w*S+M*A;return z?(t[0]=(o*E-l*P+u*k)*(z=1/z),t[1]=(l*I-a*E-u*S)*z,t[2]=(a*P-o*I+u*A)*z,t[3]=(i*P-n*E-s*k)*z,t[4]=(r*E-i*I+s*S)*z,t[5]=(n*I-r*P-s*A)*z,t[6]=(m*M-y*w+g*_)*z,t[7]=(y*v-d*M-g*b)*z,t[8]=(d*w-m*v+g*x)*z,t):null},z.projection=function(t,e,r){return t[0]=2/e,t[1]=0,t[2]=0,t[3]=0,t[4]=-2/r,t[5]=0,t[6]=-1,t[7]=1,t[8]=1,t},z.str=function(t){return "mat3("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+")"},z.frob=function(t){return Math.hypot(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])},z.add=function(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t[4]=e[4]+r[4],t[5]=e[5]+r[5],t[6]=e[6]+r[6],t[7]=e[7]+r[7],t[8]=e[8]+r[8],t},z.subtract=V,z.multiplyScalar=function(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t[4]=e[4]*r,t[5]=e[5]*r,t[6]=e[6]*r,t[7]=e[7]*r,t[8]=e[8]*r,t},z.multiplyScalarAndAdd=function(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t[3]=e[3]+r[3]*n,t[4]=e[4]+r[4]*n,t[5]=e[5]+r[5]*n,t[6]=e[6]+r[6]*n,t[7]=e[7]+r[7]*n,t[8]=e[8]+r[8]*n,t},z.exactEquals=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]},z.equals=function(t,e){var r=t[0],n=t[1],i=t[2],s=t[3],a=t[4],o=t[5],l=t[6],u=t[7],c=t[8],h=e[0],p=e[1],f=e[2],d=e[3],m=e[4],y=e[5],g=e[6],x=e[7],b=e[8];return Math.abs(r-h)<=B.EPSILON*Math.max(1,Math.abs(r),Math.abs(h))&&Math.abs(n-p)<=B.EPSILON*Math.max(1,Math.abs(n),Math.abs(p))&&Math.abs(i-f)<=B.EPSILON*Math.max(1,Math.abs(i),Math.abs(f))&&Math.abs(s-d)<=B.EPSILON*Math.max(1,Math.abs(s),Math.abs(d))&&Math.abs(a-m)<=B.EPSILON*Math.max(1,Math.abs(a),Math.abs(m))&&Math.abs(o-y)<=B.EPSILON*Math.max(1,Math.abs(o),Math.abs(y))&&Math.abs(l-g)<=B.EPSILON*Math.max(1,Math.abs(l),Math.abs(g))&&Math.abs(u-x)<=B.EPSILON*Math.max(1,Math.abs(u),Math.abs(x))&&Math.abs(c-b)<=B.EPSILON*Math.max(1,Math.abs(c),Math.abs(b))},z.sub=z.mul=void 0;var B=function(t,e){if(t&&t.__esModule)return t;if(null===t||"object"!==T(t)&&"function"!=typeof t)return {default:t};var r=C(void 0);if(r&&r.has(t))return r.get(t);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in t)if("default"!==s&&Object.prototype.hasOwnProperty.call(t,s)){var a=i?Object.getOwnPropertyDescriptor(t,s):null;a&&(a.get||a.set)?Object.defineProperty(n,s,a):n[s]=t[s];}return n.default=t,r&&r.set(t,n),n}(f);function C(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,r=new WeakMap;return (C=function(t){return t?r:e})(t)}function R(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=r[0],f=r[1],d=r[2],m=r[3],y=r[4],g=r[5],x=r[6],b=r[7],v=r[8];return t[0]=p*n+f*a+d*u,t[1]=p*i+f*o+d*c,t[2]=p*s+f*l+d*h,t[3]=m*n+y*a+g*u,t[4]=m*i+y*o+g*c,t[5]=m*s+y*l+g*h,t[6]=x*n+b*a+v*u,t[7]=x*i+b*o+v*c,t[8]=x*s+b*l+v*h,t}function V(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[3]=e[3]-r[3],t[4]=e[4]-r[4],t[5]=e[5]-r[5],t[6]=e[6]-r[6],t[7]=e[7]-r[7],t[8]=e[8]-r[8],t}z.mul=R,z.sub=V;var D={};function L(t){return L="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},L(t)}Object.defineProperty(D,"__esModule",{value:!0}),D.create=function(){var t=new F.ARRAY_TYPE(16);return F.ARRAY_TYPE!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},D.clone=function(t){var e=new F.ARRAY_TYPE(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},D.copy=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t},D.fromValues=function(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,m){var y=new F.ARRAY_TYPE(16);return y[0]=t,y[1]=e,y[2]=r,y[3]=n,y[4]=i,y[5]=s,y[6]=a,y[7]=o,y[8]=l,y[9]=u,y[10]=c,y[11]=h,y[12]=p,y[13]=f,y[14]=d,y[15]=m,y},D.set=function(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,m,y){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t[4]=s,t[5]=a,t[6]=o,t[7]=l,t[8]=u,t[9]=c,t[10]=h,t[11]=p,t[12]=f,t[13]=d,t[14]=m,t[15]=y,t},D.identity=U,D.transpose=function(t,e){if(t===e){var r=e[1],n=e[2],i=e[3],s=e[6],a=e[7],o=e[11];t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=r,t[6]=e[9],t[7]=e[13],t[8]=n,t[9]=s,t[11]=e[14],t[12]=i,t[13]=a,t[14]=o;}else t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15];return t},D.invert=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],l=e[6],u=e[7],c=e[8],h=e[9],p=e[10],f=e[11],d=e[12],m=e[13],y=e[14],g=e[15],x=r*o-n*a,b=r*l-i*a,v=r*u-s*a,_=n*l-i*o,w=n*u-s*o,M=i*u-s*l,A=c*m-h*d,S=c*y-p*d,I=c*g-f*d,k=h*y-p*m,P=h*g-f*m,E=p*g-f*y,z=x*E-b*P+v*k+_*I-w*S+M*A;return z?(t[0]=(o*E-l*P+u*k)*(z=1/z),t[1]=(i*P-n*E-s*k)*z,t[2]=(m*M-y*w+g*_)*z,t[3]=(p*w-h*M-f*_)*z,t[4]=(l*I-a*E-u*S)*z,t[5]=(r*E-i*I+s*S)*z,t[6]=(y*v-d*M-g*b)*z,t[7]=(c*M-p*v+f*b)*z,t[8]=(a*P-o*I+u*A)*z,t[9]=(n*I-r*P-s*A)*z,t[10]=(d*w-m*v+g*x)*z,t[11]=(h*v-c*w-f*x)*z,t[12]=(o*S-a*k-l*A)*z,t[13]=(r*k-n*S+i*A)*z,t[14]=(m*b-d*_-y*x)*z,t[15]=(c*_-h*b+p*x)*z,t):null},D.adjoint=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],l=e[6],u=e[7],c=e[8],h=e[9],p=e[10],f=e[11],d=e[12],m=e[13],y=e[14],g=e[15];return t[0]=o*(p*g-f*y)-h*(l*g-u*y)+m*(l*f-u*p),t[1]=-(n*(p*g-f*y)-h*(i*g-s*y)+m*(i*f-s*p)),t[2]=n*(l*g-u*y)-o*(i*g-s*y)+m*(i*u-s*l),t[3]=-(n*(l*f-u*p)-o*(i*f-s*p)+h*(i*u-s*l)),t[4]=-(a*(p*g-f*y)-c*(l*g-u*y)+d*(l*f-u*p)),t[5]=r*(p*g-f*y)-c*(i*g-s*y)+d*(i*f-s*p),t[6]=-(r*(l*g-u*y)-a*(i*g-s*y)+d*(i*u-s*l)),t[7]=r*(l*f-u*p)-a*(i*f-s*p)+c*(i*u-s*l),t[8]=a*(h*g-f*m)-c*(o*g-u*m)+d*(o*f-u*h),t[9]=-(r*(h*g-f*m)-c*(n*g-s*m)+d*(n*f-s*h)),t[10]=r*(o*g-u*m)-a*(n*g-s*m)+d*(n*u-s*o),t[11]=-(r*(o*f-u*h)-a*(n*f-s*h)+c*(n*u-s*o)),t[12]=-(a*(h*y-p*m)-c*(o*y-l*m)+d*(o*p-l*h)),t[13]=r*(h*y-p*m)-c*(n*y-i*m)+d*(n*p-i*h),t[14]=-(r*(o*y-l*m)-a*(n*y-i*m)+d*(n*l-i*o)),t[15]=r*(o*p-l*h)-a*(n*p-i*h)+c*(n*l-i*o),t},D.determinant=function(t){var e=t[0],r=t[1],n=t[2],i=t[3],s=t[4],a=t[5],o=t[6],l=t[7],u=t[8],c=t[9],h=t[10],p=t[11],f=t[12],d=t[13],m=t[14],y=t[15];return (e*a-r*s)*(h*y-p*m)-(e*o-n*s)*(c*y-p*d)+(e*l-i*s)*(c*m-h*d)+(r*o-n*a)*(u*y-p*f)-(r*l-i*a)*(u*m-h*f)+(n*l-i*o)*(u*d-c*f)},D.multiply=N,D.translate=function(t,e,r){var n,i,s,a,o,l,u,c,h,p,f,d,m=r[0],y=r[1],g=r[2];return e===t?(t[12]=e[0]*m+e[4]*y+e[8]*g+e[12],t[13]=e[1]*m+e[5]*y+e[9]*g+e[13],t[14]=e[2]*m+e[6]*y+e[10]*g+e[14],t[15]=e[3]*m+e[7]*y+e[11]*g+e[15]):(i=e[1],s=e[2],a=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=e[9],f=e[10],d=e[11],t[0]=n=e[0],t[1]=i,t[2]=s,t[3]=a,t[4]=o,t[5]=l,t[6]=u,t[7]=c,t[8]=h,t[9]=p,t[10]=f,t[11]=d,t[12]=n*m+o*y+h*g+e[12],t[13]=i*m+l*y+p*g+e[13],t[14]=s*m+u*y+f*g+e[14],t[15]=a*m+c*y+d*g+e[15]),t},D.scale=function(t,e,r){var n=r[0],i=r[1],s=r[2];return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*s,t[9]=e[9]*s,t[10]=e[10]*s,t[11]=e[11]*s,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t},D.rotate=function(t,e,r,n){var i,s,a,o,l,u,c,h,p,f,d,m,y,g,x,b,v,_,w,M,A,S,I,k,P=n[0],E=n[1],z=n[2],T=Math.hypot(P,E,z);return T<F.EPSILON?null:(P*=T=1/T,E*=T,z*=T,i=Math.sin(r),s=Math.cos(r),l=e[1],u=e[2],c=e[3],p=e[5],f=e[6],d=e[7],y=e[9],g=e[10],x=e[11],b=P*P*(a=1-s)+s,w=P*E*a-z*i,M=E*E*a+s,A=z*E*a+P*i,S=P*z*a+E*i,I=E*z*a-P*i,k=z*z*a+s,t[0]=(o=e[0])*b+(h=e[4])*(v=E*P*a+z*i)+(m=e[8])*(_=z*P*a-E*i),t[1]=l*b+p*v+y*_,t[2]=u*b+f*v+g*_,t[3]=c*b+d*v+x*_,t[4]=o*w+h*M+m*A,t[5]=l*w+p*M+y*A,t[6]=u*w+f*M+g*A,t[7]=c*w+d*M+x*A,t[8]=o*S+h*I+m*k,t[9]=l*S+p*I+y*k,t[10]=u*S+f*I+g*k,t[11]=c*S+d*I+x*k,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t)},D.rotateX=function(t,e,r){var n=Math.sin(r),i=Math.cos(r),s=e[4],a=e[5],o=e[6],l=e[7],u=e[8],c=e[9],h=e[10],p=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=s*i+u*n,t[5]=a*i+c*n,t[6]=o*i+h*n,t[7]=l*i+p*n,t[8]=u*i-s*n,t[9]=c*i-a*n,t[10]=h*i-o*n,t[11]=p*i-l*n,t},D.rotateY=function(t,e,r){var n=Math.sin(r),i=Math.cos(r),s=e[0],a=e[1],o=e[2],l=e[3],u=e[8],c=e[9],h=e[10],p=e[11];return e!==t&&(t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=s*i-u*n,t[1]=a*i-c*n,t[2]=o*i-h*n,t[3]=l*i-p*n,t[8]=s*n+u*i,t[9]=a*n+c*i,t[10]=o*n+h*i,t[11]=l*n+p*i,t},D.rotateZ=function(t,e,r){var n=Math.sin(r),i=Math.cos(r),s=e[0],a=e[1],o=e[2],l=e[3],u=e[4],c=e[5],h=e[6],p=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=s*i+u*n,t[1]=a*i+c*n,t[2]=o*i+h*n,t[3]=l*i+p*n,t[4]=u*i-s*n,t[5]=c*i-a*n,t[6]=h*i-o*n,t[7]=p*i-l*n,t},D.fromTranslation=function(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t},D.fromScaling=function(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},D.fromRotation=function(t,e,r){var n,i,s,a=r[0],o=r[1],l=r[2],u=Math.hypot(a,o,l);return u<F.EPSILON?null:(a*=u=1/u,o*=u,l*=u,n=Math.sin(e),i=Math.cos(e),t[0]=a*a*(s=1-i)+i,t[1]=o*a*s+l*n,t[2]=l*a*s-o*n,t[3]=0,t[4]=a*o*s-l*n,t[5]=o*o*s+i,t[6]=l*o*s+a*n,t[7]=0,t[8]=a*l*s+o*n,t[9]=o*l*s-a*n,t[10]=l*l*s+i,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t)},D.fromXRotation=function(t,e){var r=Math.sin(e),n=Math.cos(e);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=n,t[6]=r,t[7]=0,t[8]=0,t[9]=-r,t[10]=n,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},D.fromYRotation=function(t,e){var r=Math.sin(e),n=Math.cos(e);return t[0]=n,t[1]=0,t[2]=-r,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=r,t[9]=0,t[10]=n,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},D.fromZRotation=function(t,e){var r=Math.sin(e),n=Math.cos(e);return t[0]=n,t[1]=r,t[2]=0,t[3]=0,t[4]=-r,t[5]=n,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},D.fromRotationTranslation=j,D.fromQuat2=function(t,e){var r=new F.ARRAY_TYPE(3),n=-e[0],i=-e[1],s=-e[2],a=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=n*n+i*i+s*s+a*a;return h>0?(r[0]=2*(o*a+c*n+l*s-u*i)/h,r[1]=2*(l*a+c*i+u*n-o*s)/h,r[2]=2*(u*a+c*s+o*i-l*n)/h):(r[0]=2*(o*a+c*n+l*s-u*i),r[1]=2*(l*a+c*i+u*n-o*s),r[2]=2*(u*a+c*s+o*i-l*n)),j(t,e,r),t},D.getTranslation=function(t,e){return t[0]=e[12],t[1]=e[13],t[2]=e[14],t},D.getScaling=q,D.getRotation=function(t,e){var r=new F.ARRAY_TYPE(3);q(r,e);var n=1/r[0],i=1/r[1],s=1/r[2],a=e[0]*n,o=e[1]*i,l=e[2]*s,u=e[4]*n,c=e[5]*i,h=e[6]*s,p=e[8]*n,f=e[9]*i,d=e[10]*s,m=a+c+d,y=0;return m>0?(y=2*Math.sqrt(m+1),t[3]=.25*y,t[0]=(h-f)/y,t[1]=(p-l)/y,t[2]=(o-u)/y):a>c&&a>d?(y=2*Math.sqrt(1+a-c-d),t[3]=(h-f)/y,t[0]=.25*y,t[1]=(o+u)/y,t[2]=(p+l)/y):c>d?(y=2*Math.sqrt(1+c-a-d),t[3]=(p-l)/y,t[0]=(o+u)/y,t[1]=.25*y,t[2]=(h+f)/y):(y=2*Math.sqrt(1+d-a-c),t[3]=(o-u)/y,t[0]=(p+l)/y,t[1]=(h+f)/y,t[2]=.25*y),t},D.fromRotationTranslationScale=function(t,e,r,n){var i=e[0],s=e[1],a=e[2],o=e[3],l=i+i,u=s+s,c=a+a,h=i*l,p=i*u,f=i*c,d=s*u,m=s*c,y=a*c,g=o*l,x=o*u,b=o*c,v=n[0],_=n[1],w=n[2];return t[0]=(1-(d+y))*v,t[1]=(p+b)*v,t[2]=(f-x)*v,t[3]=0,t[4]=(p-b)*_,t[5]=(1-(h+y))*_,t[6]=(m+g)*_,t[7]=0,t[8]=(f+x)*w,t[9]=(m-g)*w,t[10]=(1-(h+d))*w,t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1,t},D.fromRotationTranslationScaleOrigin=function(t,e,r,n,i){var s=e[0],a=e[1],o=e[2],l=e[3],u=s+s,c=a+a,h=o+o,p=s*u,f=s*c,d=s*h,m=a*c,y=a*h,g=o*h,x=l*u,b=l*c,v=l*h,_=n[0],w=n[1],M=n[2],A=i[0],S=i[1],I=i[2],k=(1-(m+g))*_,P=(f+v)*_,E=(d-b)*_,z=(f-v)*w,T=(1-(p+g))*w,B=(y+x)*w,C=(d+b)*M,R=(y-x)*M,V=(1-(p+m))*M;return t[0]=k,t[1]=P,t[2]=E,t[3]=0,t[4]=z,t[5]=T,t[6]=B,t[7]=0,t[8]=C,t[9]=R,t[10]=V,t[11]=0,t[12]=r[0]+A-(k*A+z*S+C*I),t[13]=r[1]+S-(P*A+T*S+R*I),t[14]=r[2]+I-(E*A+B*S+V*I),t[15]=1,t},D.fromQuat=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=r+r,o=n+n,l=i+i,u=r*a,c=n*a,h=n*o,p=i*a,f=i*o,d=i*l,m=s*a,y=s*o,g=s*l;return t[0]=1-h-d,t[1]=c+g,t[2]=p-y,t[3]=0,t[4]=c-g,t[5]=1-u-d,t[6]=f+m,t[7]=0,t[8]=p+y,t[9]=f-m,t[10]=1-u-h,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},D.frustum=function(t,e,r,n,i,s,a){var o=1/(r-e),l=1/(i-n),u=1/(s-a);return t[0]=2*s*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*s*l,t[6]=0,t[7]=0,t[8]=(r+e)*o,t[9]=(i+n)*l,t[10]=(a+s)*u,t[11]=-1,t[12]=0,t[13]=0,t[14]=a*s*2*u,t[15]=0,t},D.perspectiveNO=$,D.perspectiveZO=function(t,e,r,n,i){var s,a=1/Math.tan(e/2);return t[0]=a/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,null!=i&&i!==1/0?(t[10]=i*(s=1/(n-i)),t[14]=i*n*s):(t[10]=-1,t[14]=-n),t},D.perspectiveFromFieldOfView=function(t,e,r,n){var i=Math.tan(e.upDegrees*Math.PI/180),s=Math.tan(e.downDegrees*Math.PI/180),a=Math.tan(e.leftDegrees*Math.PI/180),o=Math.tan(e.rightDegrees*Math.PI/180),l=2/(a+o),u=2/(i+s);return t[0]=l,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=u,t[6]=0,t[7]=0,t[8]=-(a-o)*l*.5,t[9]=(i-s)*u*.5,t[10]=n/(r-n),t[11]=-1,t[12]=0,t[13]=0,t[14]=n*r/(r-n),t[15]=0,t},D.orthoNO=G,D.orthoZO=function(t,e,r,n,i,s,a){var o=1/(e-r),l=1/(n-i),u=1/(s-a);return t[0]=-2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=u,t[11]=0,t[12]=(e+r)*o,t[13]=(i+n)*l,t[14]=s*u,t[15]=1,t},D.lookAt=function(t,e,r,n){var i,s,a,o,l,u,c,h,p,f,d=e[0],m=e[1],y=e[2],g=n[0],x=n[1],b=n[2],v=r[0],_=r[1],w=r[2];return Math.abs(d-v)<F.EPSILON&&Math.abs(m-_)<F.EPSILON&&Math.abs(y-w)<F.EPSILON?U(t):(c=d-v,h=m-_,p=y-w,i=x*(p*=f=1/Math.hypot(c,h,p))-b*(h*=f),s=b*(c*=f)-g*p,a=g*h-x*c,(f=Math.hypot(i,s,a))?(i*=f=1/f,s*=f,a*=f):(i=0,s=0,a=0),o=h*a-p*s,l=p*i-c*a,u=c*s-h*i,(f=Math.hypot(o,l,u))?(o*=f=1/f,l*=f,u*=f):(o=0,l=0,u=0),t[0]=i,t[1]=o,t[2]=c,t[3]=0,t[4]=s,t[5]=l,t[6]=h,t[7]=0,t[8]=a,t[9]=u,t[10]=p,t[11]=0,t[12]=-(i*d+s*m+a*y),t[13]=-(o*d+l*m+u*y),t[14]=-(c*d+h*m+p*y),t[15]=1,t)},D.targetTo=function(t,e,r,n){var i=e[0],s=e[1],a=e[2],o=n[0],l=n[1],u=n[2],c=i-r[0],h=s-r[1],p=a-r[2],f=c*c+h*h+p*p;f>0&&(c*=f=1/Math.sqrt(f),h*=f,p*=f);var d=l*p-u*h,m=u*c-o*p,y=o*h-l*c;return (f=d*d+m*m+y*y)>0&&(d*=f=1/Math.sqrt(f),m*=f,y*=f),t[0]=d,t[1]=m,t[2]=y,t[3]=0,t[4]=h*y-p*m,t[5]=p*d-c*y,t[6]=c*m-h*d,t[7]=0,t[8]=c,t[9]=h,t[10]=p,t[11]=0,t[12]=i,t[13]=s,t[14]=a,t[15]=1,t},D.str=function(t){return "mat4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+", "+t[9]+", "+t[10]+", "+t[11]+", "+t[12]+", "+t[13]+", "+t[14]+", "+t[15]+")"},D.frob=function(t){return Math.hypot(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15])},D.add=function(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t[4]=e[4]+r[4],t[5]=e[5]+r[5],t[6]=e[6]+r[6],t[7]=e[7]+r[7],t[8]=e[8]+r[8],t[9]=e[9]+r[9],t[10]=e[10]+r[10],t[11]=e[11]+r[11],t[12]=e[12]+r[12],t[13]=e[13]+r[13],t[14]=e[14]+r[14],t[15]=e[15]+r[15],t},D.subtract=Q,D.multiplyScalar=function(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t[4]=e[4]*r,t[5]=e[5]*r,t[6]=e[6]*r,t[7]=e[7]*r,t[8]=e[8]*r,t[9]=e[9]*r,t[10]=e[10]*r,t[11]=e[11]*r,t[12]=e[12]*r,t[13]=e[13]*r,t[14]=e[14]*r,t[15]=e[15]*r,t},D.multiplyScalarAndAdd=function(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t[3]=e[3]+r[3]*n,t[4]=e[4]+r[4]*n,t[5]=e[5]+r[5]*n,t[6]=e[6]+r[6]*n,t[7]=e[7]+r[7]*n,t[8]=e[8]+r[8]*n,t[9]=e[9]+r[9]*n,t[10]=e[10]+r[10]*n,t[11]=e[11]+r[11]*n,t[12]=e[12]+r[12]*n,t[13]=e[13]+r[13]*n,t[14]=e[14]+r[14]*n,t[15]=e[15]+r[15]*n,t},D.exactEquals=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[11]===e[11]&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[15]===e[15]},D.equals=function(t,e){var r=t[0],n=t[1],i=t[2],s=t[3],a=t[4],o=t[5],l=t[6],u=t[7],c=t[8],h=t[9],p=t[10],f=t[11],d=t[12],m=t[13],y=t[14],g=t[15],x=e[0],b=e[1],v=e[2],_=e[3],w=e[4],M=e[5],A=e[6],S=e[7],I=e[8],k=e[9],P=e[10],E=e[11],z=e[12],T=e[13],B=e[14],C=e[15];return Math.abs(r-x)<=F.EPSILON*Math.max(1,Math.abs(r),Math.abs(x))&&Math.abs(n-b)<=F.EPSILON*Math.max(1,Math.abs(n),Math.abs(b))&&Math.abs(i-v)<=F.EPSILON*Math.max(1,Math.abs(i),Math.abs(v))&&Math.abs(s-_)<=F.EPSILON*Math.max(1,Math.abs(s),Math.abs(_))&&Math.abs(a-w)<=F.EPSILON*Math.max(1,Math.abs(a),Math.abs(w))&&Math.abs(o-M)<=F.EPSILON*Math.max(1,Math.abs(o),Math.abs(M))&&Math.abs(l-A)<=F.EPSILON*Math.max(1,Math.abs(l),Math.abs(A))&&Math.abs(u-S)<=F.EPSILON*Math.max(1,Math.abs(u),Math.abs(S))&&Math.abs(c-I)<=F.EPSILON*Math.max(1,Math.abs(c),Math.abs(I))&&Math.abs(h-k)<=F.EPSILON*Math.max(1,Math.abs(h),Math.abs(k))&&Math.abs(p-P)<=F.EPSILON*Math.max(1,Math.abs(p),Math.abs(P))&&Math.abs(f-E)<=F.EPSILON*Math.max(1,Math.abs(f),Math.abs(E))&&Math.abs(d-z)<=F.EPSILON*Math.max(1,Math.abs(d),Math.abs(z))&&Math.abs(m-T)<=F.EPSILON*Math.max(1,Math.abs(m),Math.abs(T))&&Math.abs(y-B)<=F.EPSILON*Math.max(1,Math.abs(y),Math.abs(B))&&Math.abs(g-C)<=F.EPSILON*Math.max(1,Math.abs(g),Math.abs(C))},D.sub=D.mul=D.ortho=D.perspective=void 0;var F=function(t,e){if(t&&t.__esModule)return t;if(null===t||"object"!==L(t)&&"function"!=typeof t)return {default:t};var r=O(void 0);if(r&&r.has(t))return r.get(t);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in t)if("default"!==s&&Object.prototype.hasOwnProperty.call(t,s)){var a=i?Object.getOwnPropertyDescriptor(t,s):null;a&&(a.get||a.set)?Object.defineProperty(n,s,a):n[s]=t[s];}return n.default=t,r&&r.set(t,n),n}(f);function O(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,r=new WeakMap;return (O=function(t){return t?r:e})(t)}function U(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function N(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=e[9],f=e[10],d=e[11],m=e[12],y=e[13],g=e[14],x=e[15],b=r[0],v=r[1],_=r[2],w=r[3];return t[0]=b*n+v*o+_*h+w*m,t[1]=b*i+v*l+_*p+w*y,t[2]=b*s+v*u+_*f+w*g,t[3]=b*a+v*c+_*d+w*x,t[4]=(b=r[4])*n+(v=r[5])*o+(_=r[6])*h+(w=r[7])*m,t[5]=b*i+v*l+_*p+w*y,t[6]=b*s+v*u+_*f+w*g,t[7]=b*a+v*c+_*d+w*x,t[8]=(b=r[8])*n+(v=r[9])*o+(_=r[10])*h+(w=r[11])*m,t[9]=b*i+v*l+_*p+w*y,t[10]=b*s+v*u+_*f+w*g,t[11]=b*a+v*c+_*d+w*x,t[12]=(b=r[12])*n+(v=r[13])*o+(_=r[14])*h+(w=r[15])*m,t[13]=b*i+v*l+_*p+w*y,t[14]=b*s+v*u+_*f+w*g,t[15]=b*a+v*c+_*d+w*x,t}function j(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=n+n,l=i+i,u=s+s,c=n*o,h=n*l,p=n*u,f=i*l,d=i*u,m=s*u,y=a*o,g=a*l,x=a*u;return t[0]=1-(f+m),t[1]=h+x,t[2]=p-g,t[3]=0,t[4]=h-x,t[5]=1-(c+m),t[6]=d+y,t[7]=0,t[8]=p+g,t[9]=d-y,t[10]=1-(c+f),t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1,t}function q(t,e){var r=e[4],n=e[5],i=e[6],s=e[8],a=e[9],o=e[10];return t[0]=Math.hypot(e[0],e[1],e[2]),t[1]=Math.hypot(r,n,i),t[2]=Math.hypot(s,a,o),t}function $(t,e,r,n,i){var s,a=1/Math.tan(e/2);return t[0]=a/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,null!=i&&i!==1/0?(t[10]=(i+n)*(s=1/(n-i)),t[14]=2*i*n*s):(t[10]=-1,t[14]=-2*n),t}function G(t,e,r,n,i,s,a){var o=1/(e-r),l=1/(n-i),u=1/(s-a);return t[0]=-2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*u,t[11]=0,t[12]=(e+r)*o,t[13]=(i+n)*l,t[14]=(a+s)*u,t[15]=1,t}function Q(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[3]=e[3]-r[3],t[4]=e[4]-r[4],t[5]=e[5]-r[5],t[6]=e[6]-r[6],t[7]=e[7]-r[7],t[8]=e[8]-r[8],t[9]=e[9]-r[9],t[10]=e[10]-r[10],t[11]=e[11]-r[11],t[12]=e[12]-r[12],t[13]=e[13]-r[13],t[14]=e[14]-r[14],t[15]=e[15]-r[15],t}D.perspective=$,D.ortho=G,D.mul=N,D.sub=Q;var Y={},X={};function Z(t){return Z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Z(t)}Object.defineProperty(X,"__esModule",{value:!0}),X.create=H,X.clone=function(t){var e=new K.ARRAY_TYPE(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e},X.length=J,X.fromValues=function(t,e,r){var n=new K.ARRAY_TYPE(3);return n[0]=t,n[1]=e,n[2]=r,n},X.copy=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t},X.set=function(t,e,r,n){return t[0]=e,t[1]=r,t[2]=n,t},X.add=function(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t},X.subtract=tt,X.multiply=et,X.divide=rt,X.ceil=function(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2]),t},X.floor=function(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2]),t},X.min=function(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t[2]=Math.min(e[2],r[2]),t},X.max=function(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t[2]=Math.max(e[2],r[2]),t},X.round=function(t,e){return t[0]=Math.round(e[0]),t[1]=Math.round(e[1]),t[2]=Math.round(e[2]),t},X.scale=function(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t},X.scaleAndAdd=function(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t},X.distance=nt,X.squaredDistance=it,X.squaredLength=st,X.negate=function(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t},X.inverse=function(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t},X.normalize=function(t,e){var r=e[0],n=e[1],i=e[2],s=r*r+n*n+i*i;return s>0&&(s=1/Math.sqrt(s)),t[0]=e[0]*s,t[1]=e[1]*s,t[2]=e[2]*s,t},X.dot=at,X.cross=function(t,e,r){var n=e[0],i=e[1],s=e[2],a=r[0],o=r[1],l=r[2];return t[0]=i*l-s*o,t[1]=s*a-n*l,t[2]=n*o-i*a,t},X.lerp=function(t,e,r,n){var i=e[0],s=e[1],a=e[2];return t[0]=i+n*(r[0]-i),t[1]=s+n*(r[1]-s),t[2]=a+n*(r[2]-a),t},X.hermite=function(t,e,r,n,i,s){var a=s*s,o=a*(2*s-3)+1,l=a*(s-2)+s,u=a*(s-1),c=a*(3-2*s);return t[0]=e[0]*o+r[0]*l+n[0]*u+i[0]*c,t[1]=e[1]*o+r[1]*l+n[1]*u+i[1]*c,t[2]=e[2]*o+r[2]*l+n[2]*u+i[2]*c,t},X.bezier=function(t,e,r,n,i,s){var a=1-s,o=a*a,l=s*s,u=o*a,c=3*s*o,h=3*l*a,p=l*s;return t[0]=e[0]*u+r[0]*c+n[0]*h+i[0]*p,t[1]=e[1]*u+r[1]*c+n[1]*h+i[1]*p,t[2]=e[2]*u+r[2]*c+n[2]*h+i[2]*p,t},X.random=function(t,e){e=e||1;var r=2*K.RANDOM()*Math.PI,n=2*K.RANDOM()-1,i=Math.sqrt(1-n*n)*e;return t[0]=Math.cos(r)*i,t[1]=Math.sin(r)*i,t[2]=n*e,t},X.transformMat4=function(t,e,r){var n=e[0],i=e[1],s=e[2],a=r[3]*n+r[7]*i+r[11]*s+r[15];return t[0]=(r[0]*n+r[4]*i+r[8]*s+r[12])/(a=a||1),t[1]=(r[1]*n+r[5]*i+r[9]*s+r[13])/a,t[2]=(r[2]*n+r[6]*i+r[10]*s+r[14])/a,t},X.transformMat3=function(t,e,r){var n=e[0],i=e[1],s=e[2];return t[0]=n*r[0]+i*r[3]+s*r[6],t[1]=n*r[1]+i*r[4]+s*r[7],t[2]=n*r[2]+i*r[5]+s*r[8],t},X.transformQuat=function(t,e,r){var n=r[0],i=r[1],s=r[2],a=e[0],o=e[1],l=e[2],u=i*l-s*o,c=s*a-n*l,h=n*o-i*a,p=i*h-s*c,f=s*u-n*h,d=n*c-i*u,m=2*r[3];return c*=m,h*=m,f*=2,d*=2,t[0]=a+(u*=m)+(p*=2),t[1]=o+c+f,t[2]=l+h+d,t},X.rotateX=function(t,e,r,n){var i=[],s=[];return i[0]=e[0]-r[0],i[1]=e[1]-r[1],i[2]=e[2]-r[2],s[0]=i[0],s[1]=i[1]*Math.cos(n)-i[2]*Math.sin(n),s[2]=i[1]*Math.sin(n)+i[2]*Math.cos(n),t[0]=s[0]+r[0],t[1]=s[1]+r[1],t[2]=s[2]+r[2],t},X.rotateY=function(t,e,r,n){var i=[],s=[];return i[0]=e[0]-r[0],i[1]=e[1]-r[1],i[2]=e[2]-r[2],s[0]=i[2]*Math.sin(n)+i[0]*Math.cos(n),s[1]=i[1],s[2]=i[2]*Math.cos(n)-i[0]*Math.sin(n),t[0]=s[0]+r[0],t[1]=s[1]+r[1],t[2]=s[2]+r[2],t},X.rotateZ=function(t,e,r,n){var i=[],s=[];return i[0]=e[0]-r[0],i[1]=e[1]-r[1],i[2]=e[2]-r[2],s[0]=i[0]*Math.cos(n)-i[1]*Math.sin(n),s[1]=i[0]*Math.sin(n)+i[1]*Math.cos(n),s[2]=i[2],t[0]=s[0]+r[0],t[1]=s[1]+r[1],t[2]=s[2]+r[2],t},X.angle=function(t,e){var r=t[0],n=t[1],i=t[2],s=e[0],a=e[1],o=e[2],l=Math.sqrt(r*r+n*n+i*i)*Math.sqrt(s*s+a*a+o*o),u=l&&at(t,e)/l;return Math.acos(Math.min(Math.max(u,-1),1))},X.zero=function(t){return t[0]=0,t[1]=0,t[2]=0,t},X.str=function(t){return "vec3("+t[0]+", "+t[1]+", "+t[2]+")"},X.exactEquals=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]},X.equals=function(t,e){var r=t[0],n=t[1],i=t[2],s=e[0],a=e[1],o=e[2];return Math.abs(r-s)<=K.EPSILON*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(n-a)<=K.EPSILON*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-o)<=K.EPSILON*Math.max(1,Math.abs(i),Math.abs(o))},X.forEach=X.sqrLen=X.len=X.sqrDist=X.dist=X.div=X.mul=X.sub=void 0;var K=function(t,e){if(t&&t.__esModule)return t;if(null===t||"object"!==Z(t)&&"function"!=typeof t)return {default:t};var r=W(void 0);if(r&&r.has(t))return r.get(t);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in t)if("default"!==s&&Object.prototype.hasOwnProperty.call(t,s)){var a=i?Object.getOwnPropertyDescriptor(t,s):null;a&&(a.get||a.set)?Object.defineProperty(n,s,a):n[s]=t[s];}return n.default=t,r&&r.set(t,n),n}(f);function W(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,r=new WeakMap;return (W=function(t){return t?r:e})(t)}function H(){var t=new K.ARRAY_TYPE(3);return K.ARRAY_TYPE!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function J(t){return Math.hypot(t[0],t[1],t[2])}function tt(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}function et(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t}function rt(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t}function nt(t,e){return Math.hypot(e[0]-t[0],e[1]-t[1],e[2]-t[2])}function it(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2];return r*r+n*n+i*i}function st(t){var e=t[0],r=t[1],n=t[2];return e*e+r*r+n*n}function at(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}X.sub=tt,X.mul=et,X.div=rt,X.dist=nt,X.sqrDist=it,X.len=J,X.sqrLen=st;var ot,lt=(ot=H(),function(t,e,r,n,i,s){var a,o;for(e||(e=3),r||(r=0),o=n?Math.min(n*e+r,t.length):t.length,a=r;a<o;a+=e)ot[0]=t[a],ot[1]=t[a+1],ot[2]=t[a+2],i(ot,ot,s),t[a]=ot[0],t[a+1]=ot[1],t[a+2]=ot[2];return t});X.forEach=lt;var ut={};function ct(t){return ct="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ct(t)}Object.defineProperty(ut,"__esModule",{value:!0}),ut.create=ft,ut.clone=function(t){var e=new ht.ARRAY_TYPE(4);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e},ut.fromValues=function(t,e,r,n){var i=new ht.ARRAY_TYPE(4);return i[0]=t,i[1]=e,i[2]=r,i[3]=n,i},ut.copy=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t},ut.set=function(t,e,r,n,i){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t},ut.add=function(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t},ut.subtract=dt,ut.multiply=mt,ut.divide=yt,ut.ceil=function(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2]),t[3]=Math.ceil(e[3]),t},ut.floor=function(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2]),t[3]=Math.floor(e[3]),t},ut.min=function(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t[2]=Math.min(e[2],r[2]),t[3]=Math.min(e[3],r[3]),t},ut.max=function(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t[2]=Math.max(e[2],r[2]),t[3]=Math.max(e[3],r[3]),t},ut.round=function(t,e){return t[0]=Math.round(e[0]),t[1]=Math.round(e[1]),t[2]=Math.round(e[2]),t[3]=Math.round(e[3]),t},ut.scale=function(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t},ut.scaleAndAdd=function(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t[3]=e[3]+r[3]*n,t},ut.distance=gt,ut.squaredDistance=xt,ut.length=bt,ut.squaredLength=vt,ut.negate=function(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t},ut.inverse=function(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t[3]=1/e[3],t},ut.normalize=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=r*r+n*n+i*i+s*s;return a>0&&(a=1/Math.sqrt(a)),t[0]=r*a,t[1]=n*a,t[2]=i*a,t[3]=s*a,t},ut.dot=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]},ut.cross=function(t,e,r,n){var i=r[0]*n[1]-r[1]*n[0],s=r[0]*n[2]-r[2]*n[0],a=r[0]*n[3]-r[3]*n[0],o=r[1]*n[2]-r[2]*n[1],l=r[1]*n[3]-r[3]*n[1],u=r[2]*n[3]-r[3]*n[2],c=e[0],h=e[1],p=e[2],f=e[3];return t[0]=h*u-p*l+f*o,t[1]=-c*u+p*a-f*s,t[2]=c*l-h*a+f*i,t[3]=-c*o+h*s-p*i,t},ut.lerp=function(t,e,r,n){var i=e[0],s=e[1],a=e[2],o=e[3];return t[0]=i+n*(r[0]-i),t[1]=s+n*(r[1]-s),t[2]=a+n*(r[2]-a),t[3]=o+n*(r[3]-o),t},ut.random=function(t,e){var r,n,i,s,a,o;e=e||1;do{a=(r=2*ht.RANDOM()-1)*r+(n=2*ht.RANDOM()-1)*n;}while(a>=1);do{o=(i=2*ht.RANDOM()-1)*i+(s=2*ht.RANDOM()-1)*s;}while(o>=1);var l=Math.sqrt((1-a)/o);return t[0]=e*r,t[1]=e*n,t[2]=e*i*l,t[3]=e*s*l,t},ut.transformMat4=function(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*s+r[12]*a,t[1]=r[1]*n+r[5]*i+r[9]*s+r[13]*a,t[2]=r[2]*n+r[6]*i+r[10]*s+r[14]*a,t[3]=r[3]*n+r[7]*i+r[11]*s+r[15]*a,t},ut.transformQuat=function(t,e,r){var n=e[0],i=e[1],s=e[2],a=r[0],o=r[1],l=r[2],u=r[3],c=u*n+o*s-l*i,h=u*i+l*n-a*s,p=u*s+a*i-o*n,f=-a*n-o*i-l*s;return t[0]=c*u+f*-a+h*-l-p*-o,t[1]=h*u+f*-o+p*-a-c*-l,t[2]=p*u+f*-l+c*-o-h*-a,t[3]=e[3],t},ut.zero=function(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t},ut.str=function(t){return "vec4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},ut.exactEquals=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]},ut.equals=function(t,e){var r=t[0],n=t[1],i=t[2],s=t[3],a=e[0],o=e[1],l=e[2],u=e[3];return Math.abs(r-a)<=ht.EPSILON*Math.max(1,Math.abs(r),Math.abs(a))&&Math.abs(n-o)<=ht.EPSILON*Math.max(1,Math.abs(n),Math.abs(o))&&Math.abs(i-l)<=ht.EPSILON*Math.max(1,Math.abs(i),Math.abs(l))&&Math.abs(s-u)<=ht.EPSILON*Math.max(1,Math.abs(s),Math.abs(u))},ut.forEach=ut.sqrLen=ut.len=ut.sqrDist=ut.dist=ut.div=ut.mul=ut.sub=void 0;var ht=function(t,e){if(t&&t.__esModule)return t;if(null===t||"object"!==ct(t)&&"function"!=typeof t)return {default:t};var r=pt(void 0);if(r&&r.has(t))return r.get(t);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in t)if("default"!==s&&Object.prototype.hasOwnProperty.call(t,s)){var a=i?Object.getOwnPropertyDescriptor(t,s):null;a&&(a.get||a.set)?Object.defineProperty(n,s,a):n[s]=t[s];}return n.default=t,r&&r.set(t,n),n}(f);function pt(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,r=new WeakMap;return (pt=function(t){return t?r:e})(t)}function ft(){var t=new ht.ARRAY_TYPE(4);return ht.ARRAY_TYPE!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t}function dt(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[3]=e[3]-r[3],t}function mt(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t[3]=e[3]*r[3],t}function yt(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t[3]=e[3]/r[3],t}function gt(t,e){return Math.hypot(e[0]-t[0],e[1]-t[1],e[2]-t[2],e[3]-t[3])}function xt(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2],s=e[3]-t[3];return r*r+n*n+i*i+s*s}function bt(t){return Math.hypot(t[0],t[1],t[2],t[3])}function vt(t){var e=t[0],r=t[1],n=t[2],i=t[3];return e*e+r*r+n*n+i*i}ut.sub=dt,ut.mul=mt,ut.div=yt,ut.dist=gt,ut.sqrDist=xt,ut.len=bt,ut.sqrLen=vt;var _t=function(){var t=ft();return function(e,r,n,i,s,a){var o,l;for(r||(r=4),n||(n=0),l=i?Math.min(i*r+n,e.length):e.length,o=n;o<l;o+=r)t[0]=e[o],t[1]=e[o+1],t[2]=e[o+2],t[3]=e[o+3],s(t,t,a),e[o]=t[0],e[o+1]=t[1],e[o+2]=t[2],e[o+3]=t[3];return e}}();function wt(t){return wt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},wt(t)}ut.forEach=_t,Object.defineProperty(Y,"__esModule",{value:!0}),Y.create=Et,Y.identity=function(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},Y.setAxisAngle=zt,Y.getAxisAngle=function(t,e){var r=2*Math.acos(e[3]),n=Math.sin(r/2);return n>Mt.EPSILON?(t[0]=e[0]/n,t[1]=e[1]/n,t[2]=e[2]/n):(t[0]=1,t[1]=0,t[2]=0),r},Y.getAngle=function(t,e){var r=Lt(t,e);return Math.acos(2*r*r-1)},Y.multiply=Tt,Y.rotateX=function(t,e,r){r*=.5;var n=e[0],i=e[1],s=e[2],a=e[3],o=Math.sin(r),l=Math.cos(r);return t[0]=n*l+a*o,t[1]=i*l+s*o,t[2]=s*l-i*o,t[3]=a*l-n*o,t},Y.rotateY=function(t,e,r){r*=.5;var n=e[0],i=e[1],s=e[2],a=e[3],o=Math.sin(r),l=Math.cos(r);return t[0]=n*l-s*o,t[1]=i*l+a*o,t[2]=s*l+n*o,t[3]=a*l-i*o,t},Y.rotateZ=function(t,e,r){r*=.5;var n=e[0],i=e[1],s=e[2],a=e[3],o=Math.sin(r),l=Math.cos(r);return t[0]=n*l+i*o,t[1]=i*l-n*o,t[2]=s*l+a*o,t[3]=a*l-s*o,t},Y.calculateW=function(t,e){var r=e[0],n=e[1],i=e[2];return t[0]=r,t[1]=n,t[2]=i,t[3]=Math.sqrt(Math.abs(1-r*r-n*n-i*i)),t},Y.exp=Bt,Y.ln=Ct,Y.pow=function(t,e,r){return Ct(t,e),Dt(t,t,r),Bt(t,t),t},Y.slerp=Rt,Y.random=function(t){var e=Mt.RANDOM(),r=Mt.RANDOM(),n=Mt.RANDOM(),i=Math.sqrt(1-e),s=Math.sqrt(e);return t[0]=i*Math.sin(2*Math.PI*r),t[1]=i*Math.cos(2*Math.PI*r),t[2]=s*Math.sin(2*Math.PI*n),t[3]=s*Math.cos(2*Math.PI*n),t},Y.invert=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=r*r+n*n+i*i+s*s,o=a?1/a:0;return t[0]=-r*o,t[1]=-n*o,t[2]=-i*o,t[3]=s*o,t},Y.conjugate=function(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],t},Y.fromMat3=Vt,Y.fromEuler=function(t,e,r,n){var i=.5*Math.PI/180;e*=i,r*=i,n*=i;var s=Math.sin(e),a=Math.cos(e),o=Math.sin(r),l=Math.cos(r),u=Math.sin(n),c=Math.cos(n);return t[0]=s*l*c-a*o*u,t[1]=a*o*c+s*l*u,t[2]=a*l*u-s*o*c,t[3]=a*l*c+s*o*u,t},Y.str=function(t){return "quat("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},Y.setAxes=Y.sqlerp=Y.rotationTo=Y.equals=Y.exactEquals=Y.normalize=Y.sqrLen=Y.squaredLength=Y.len=Y.length=Y.lerp=Y.dot=Y.scale=Y.mul=Y.add=Y.set=Y.copy=Y.fromValues=Y.clone=void 0;var Mt=Pt(f),At=Pt(z),St=Pt(X),It=Pt(ut);function kt(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,r=new WeakMap;return (kt=function(t){return t?r:e})(t)}function Pt(t,e){if(t&&t.__esModule)return t;if(null===t||"object"!==wt(t)&&"function"!=typeof t)return {default:t};var r=kt(e);if(r&&r.has(t))return r.get(t);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in t)if("default"!==s&&Object.prototype.hasOwnProperty.call(t,s)){var a=i?Object.getOwnPropertyDescriptor(t,s):null;a&&(a.get||a.set)?Object.defineProperty(n,s,a):n[s]=t[s];}return n.default=t,r&&r.set(t,n),n}function Et(){var t=new Mt.ARRAY_TYPE(4);return Mt.ARRAY_TYPE!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t[3]=1,t}function zt(t,e,r){r*=.5;var n=Math.sin(r);return t[0]=n*e[0],t[1]=n*e[1],t[2]=n*e[2],t[3]=Math.cos(r),t}function Tt(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=r[0],l=r[1],u=r[2],c=r[3];return t[0]=n*c+a*o+i*u-s*l,t[1]=i*c+a*l+s*o-n*u,t[2]=s*c+a*u+n*l-i*o,t[3]=a*c-n*o-i*l-s*u,t}function Bt(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=Math.sqrt(r*r+n*n+i*i),o=Math.exp(s),l=a>0?o*Math.sin(a)/a:0;return t[0]=r*l,t[1]=n*l,t[2]=i*l,t[3]=o*Math.cos(a),t}function Ct(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=Math.sqrt(r*r+n*n+i*i),o=a>0?Math.atan2(a,s)/a:0;return t[0]=r*o,t[1]=n*o,t[2]=i*o,t[3]=.5*Math.log(r*r+n*n+i*i+s*s),t}function Rt(t,e,r,n){var i,s,a,o,l,u=e[0],c=e[1],h=e[2],p=e[3],f=r[0],d=r[1],m=r[2],y=r[3];return (s=u*f+c*d+h*m+p*y)<0&&(s=-s,f=-f,d=-d,m=-m,y=-y),1-s>Mt.EPSILON?(i=Math.acos(s),a=Math.sin(i),o=Math.sin((1-n)*i)/a,l=Math.sin(n*i)/a):(o=1-n,l=n),t[0]=o*u+l*f,t[1]=o*c+l*d,t[2]=o*h+l*m,t[3]=o*p+l*y,t}function Vt(t,e){var r,n=e[0]+e[4]+e[8];if(n>0)r=Math.sqrt(n+1),t[3]=.5*r,t[0]=(e[5]-e[7])*(r=.5/r),t[1]=(e[6]-e[2])*r,t[2]=(e[1]-e[3])*r;else {var i=0;e[4]>e[0]&&(i=1),e[8]>e[3*i+i]&&(i=2);var s=(i+1)%3,a=(i+2)%3;r=Math.sqrt(e[3*i+i]-e[3*s+s]-e[3*a+a]+1),t[i]=.5*r,t[3]=(e[3*s+a]-e[3*a+s])*(r=.5/r),t[s]=(e[3*s+i]+e[3*i+s])*r,t[a]=(e[3*a+i]+e[3*i+a])*r;}return t}Y.clone=It.clone,Y.fromValues=It.fromValues,Y.copy=It.copy,Y.set=It.set,Y.add=It.add,Y.mul=Tt;var Dt=It.scale;Y.scale=Dt;var Lt=It.dot;Y.dot=Lt,Y.lerp=It.lerp;var Ft=It.length;Y.length=Ft,Y.len=Ft;var Ot=It.squaredLength;Y.squaredLength=Ot,Y.sqrLen=Ot;var Ut=It.normalize;Y.normalize=Ut,Y.exactEquals=It.exactEquals,Y.equals=It.equals;var Nt,jt,qt,$t=(Nt=St.create(),jt=St.fromValues(1,0,0),qt=St.fromValues(0,1,0),function(t,e,r){var n=St.dot(e,r);return n<-.999999?(St.cross(Nt,jt,e),St.len(Nt)<1e-6&&St.cross(Nt,qt,e),St.normalize(Nt,Nt),zt(t,Nt,Math.PI),t):n>.999999?(t[0]=0,t[1]=0,t[2]=0,t[3]=1,t):(St.cross(Nt,e,r),t[0]=Nt[0],t[1]=Nt[1],t[2]=Nt[2],t[3]=1+n,Ut(t,t))});Y.rotationTo=$t;var Gt,Qt,Yt=(Gt=Et(),Qt=Et(),function(t,e,r,n,i,s){return Rt(Gt,e,i,s),Rt(Qt,r,n,s),Rt(t,Gt,Qt,2*s*(1-s)),t});Y.sqlerp=Yt;var Xt,Zt=(Xt=At.create(),function(t,e,r,n){return Xt[0]=r[0],Xt[3]=r[1],Xt[6]=r[2],Xt[1]=n[0],Xt[4]=n[1],Xt[7]=n[2],Xt[2]=-e[0],Xt[5]=-e[1],Xt[8]=-e[2],Ut(t,Vt(t,Xt))});Y.setAxes=Zt;var Kt={};function Wt(t){return Wt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Wt(t)}Object.defineProperty(Kt,"__esModule",{value:!0}),Kt.create=function(){var t=new Ht.ARRAY_TYPE(8);return Ht.ARRAY_TYPE!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[4]=0,t[5]=0,t[6]=0,t[7]=0),t[3]=1,t},Kt.clone=function(t){var e=new Ht.ARRAY_TYPE(8);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e},Kt.fromValues=function(t,e,r,n,i,s,a,o){var l=new Ht.ARRAY_TYPE(8);return l[0]=t,l[1]=e,l[2]=r,l[3]=n,l[4]=i,l[5]=s,l[6]=a,l[7]=o,l},Kt.fromRotationTranslationValues=function(t,e,r,n,i,s,a){var o=new Ht.ARRAY_TYPE(8);o[0]=t,o[1]=e,o[2]=r,o[3]=n;var l=.5*i,u=.5*s,c=.5*a;return o[4]=l*n+u*r-c*e,o[5]=u*n+c*t-l*r,o[6]=c*n+l*e-u*t,o[7]=-l*t-u*e-c*r,o},Kt.fromRotationTranslation=ne,Kt.fromTranslation=function(t,e){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t[4]=.5*e[0],t[5]=.5*e[1],t[6]=.5*e[2],t[7]=0,t},Kt.fromRotation=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=0,t[5]=0,t[6]=0,t[7]=0,t},Kt.fromMat4=function(t,e){var r=Jt.create();te.getRotation(r,e);var n=new Ht.ARRAY_TYPE(3);return te.getTranslation(n,e),ne(t,r,n),t},Kt.copy=ie,Kt.identity=function(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t[6]=0,t[7]=0,t},Kt.set=function(t,e,r,n,i,s,a,o,l){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t[4]=s,t[5]=a,t[6]=o,t[7]=l,t},Kt.getDual=function(t,e){return t[0]=e[4],t[1]=e[5],t[2]=e[6],t[3]=e[7],t},Kt.setDual=function(t,e){return t[4]=e[0],t[5]=e[1],t[6]=e[2],t[7]=e[3],t},Kt.getTranslation=function(t,e){var r=e[4],n=e[5],i=e[6],s=e[7],a=-e[0],o=-e[1],l=-e[2],u=e[3];return t[0]=2*(r*u+s*a+n*l-i*o),t[1]=2*(n*u+s*o+i*a-r*l),t[2]=2*(i*u+s*l+r*o-n*a),t},Kt.translate=function(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=.5*r[0],l=.5*r[1],u=.5*r[2],c=e[4],h=e[5],p=e[6],f=e[7];return t[0]=n,t[1]=i,t[2]=s,t[3]=a,t[4]=a*o+i*u-s*l+c,t[5]=a*l+s*o-n*u+h,t[6]=a*u+n*l-i*o+p,t[7]=-n*o-i*l-s*u+f,t},Kt.rotateX=function(t,e,r){var n=-e[0],i=-e[1],s=-e[2],a=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=o*a+c*n+l*s-u*i,p=l*a+c*i+u*n-o*s,f=u*a+c*s+o*i-l*n,d=c*a-o*n-l*i-u*s;return Jt.rotateX(t,e,r),t[4]=h*(a=t[3])+d*(n=t[0])+p*(s=t[2])-f*(i=t[1]),t[5]=p*a+d*i+f*n-h*s,t[6]=f*a+d*s+h*i-p*n,t[7]=d*a-h*n-p*i-f*s,t},Kt.rotateY=function(t,e,r){var n=-e[0],i=-e[1],s=-e[2],a=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=o*a+c*n+l*s-u*i,p=l*a+c*i+u*n-o*s,f=u*a+c*s+o*i-l*n,d=c*a-o*n-l*i-u*s;return Jt.rotateY(t,e,r),t[4]=h*(a=t[3])+d*(n=t[0])+p*(s=t[2])-f*(i=t[1]),t[5]=p*a+d*i+f*n-h*s,t[6]=f*a+d*s+h*i-p*n,t[7]=d*a-h*n-p*i-f*s,t},Kt.rotateZ=function(t,e,r){var n=-e[0],i=-e[1],s=-e[2],a=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=o*a+c*n+l*s-u*i,p=l*a+c*i+u*n-o*s,f=u*a+c*s+o*i-l*n,d=c*a-o*n-l*i-u*s;return Jt.rotateZ(t,e,r),t[4]=h*(a=t[3])+d*(n=t[0])+p*(s=t[2])-f*(i=t[1]),t[5]=p*a+d*i+f*n-h*s,t[6]=f*a+d*s+h*i-p*n,t[7]=d*a-h*n-p*i-f*s,t},Kt.rotateByQuatAppend=function(t,e,r){var n=r[0],i=r[1],s=r[2],a=r[3],o=e[0],l=e[1],u=e[2],c=e[3];return t[0]=o*a+c*n+l*s-u*i,t[1]=l*a+c*i+u*n-o*s,t[2]=u*a+c*s+o*i-l*n,t[3]=c*a-o*n-l*i-u*s,t[4]=(o=e[4])*a+(c=e[7])*n+(l=e[5])*s-(u=e[6])*i,t[5]=l*a+c*i+u*n-o*s,t[6]=u*a+c*s+o*i-l*n,t[7]=c*a-o*n-l*i-u*s,t},Kt.rotateByQuatPrepend=function(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=r[0],l=r[1],u=r[2],c=r[3];return t[0]=n*c+a*o+i*u-s*l,t[1]=i*c+a*l+s*o-n*u,t[2]=s*c+a*u+n*l-i*o,t[3]=a*c-n*o-i*l-s*u,t[4]=n*(c=r[7])+a*(o=r[4])+i*(u=r[6])-s*(l=r[5]),t[5]=i*c+a*l+s*o-n*u,t[6]=s*c+a*u+n*l-i*o,t[7]=a*c-n*o-i*l-s*u,t},Kt.rotateAroundAxis=function(t,e,r,n){if(Math.abs(n)<Ht.EPSILON)return ie(t,e);var i=Math.hypot(r[0],r[1],r[2]);n*=.5;var s=Math.sin(n),a=s*r[0]/i,o=s*r[1]/i,l=s*r[2]/i,u=Math.cos(n),c=e[0],h=e[1],p=e[2],f=e[3];t[0]=c*u+f*a+h*l-p*o,t[1]=h*u+f*o+p*a-c*l,t[2]=p*u+f*l+c*o-h*a,t[3]=f*u-c*a-h*o-p*l;var d=e[4],m=e[5],y=e[6],g=e[7];return t[4]=d*u+g*a+m*l-y*o,t[5]=m*u+g*o+y*a-d*l,t[6]=y*u+g*l+d*o-m*a,t[7]=g*u-d*a-m*o-y*l,t},Kt.add=function(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t[4]=e[4]+r[4],t[5]=e[5]+r[5],t[6]=e[6]+r[6],t[7]=e[7]+r[7],t},Kt.multiply=se,Kt.scale=function(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t[4]=e[4]*r,t[5]=e[5]*r,t[6]=e[6]*r,t[7]=e[7]*r,t},Kt.lerp=function(t,e,r,n){var i=1-n;return ae(e,r)<0&&(n=-n),t[0]=e[0]*i+r[0]*n,t[1]=e[1]*i+r[1]*n,t[2]=e[2]*i+r[2]*n,t[3]=e[3]*i+r[3]*n,t[4]=e[4]*i+r[4]*n,t[5]=e[5]*i+r[5]*n,t[6]=e[6]*i+r[6]*n,t[7]=e[7]*i+r[7]*n,t},Kt.invert=function(t,e){var r=le(e);return t[0]=-e[0]/r,t[1]=-e[1]/r,t[2]=-e[2]/r,t[3]=e[3]/r,t[4]=-e[4]/r,t[5]=-e[5]/r,t[6]=-e[6]/r,t[7]=e[7]/r,t},Kt.conjugate=function(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=e[7],t},Kt.normalize=function(t,e){var r=le(e);if(r>0){r=Math.sqrt(r);var n=e[0]/r,i=e[1]/r,s=e[2]/r,a=e[3]/r,o=e[4],l=e[5],u=e[6],c=e[7],h=n*o+i*l+s*u+a*c;t[0]=n,t[1]=i,t[2]=s,t[3]=a,t[4]=(o-n*h)/r,t[5]=(l-i*h)/r,t[6]=(u-s*h)/r,t[7]=(c-a*h)/r;}return t},Kt.str=function(t){return "quat2("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+")"},Kt.exactEquals=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]},Kt.equals=function(t,e){var r=t[0],n=t[1],i=t[2],s=t[3],a=t[4],o=t[5],l=t[6],u=t[7],c=e[0],h=e[1],p=e[2],f=e[3],d=e[4],m=e[5],y=e[6],g=e[7];return Math.abs(r-c)<=Ht.EPSILON*Math.max(1,Math.abs(r),Math.abs(c))&&Math.abs(n-h)<=Ht.EPSILON*Math.max(1,Math.abs(n),Math.abs(h))&&Math.abs(i-p)<=Ht.EPSILON*Math.max(1,Math.abs(i),Math.abs(p))&&Math.abs(s-f)<=Ht.EPSILON*Math.max(1,Math.abs(s),Math.abs(f))&&Math.abs(a-d)<=Ht.EPSILON*Math.max(1,Math.abs(a),Math.abs(d))&&Math.abs(o-m)<=Ht.EPSILON*Math.max(1,Math.abs(o),Math.abs(m))&&Math.abs(l-y)<=Ht.EPSILON*Math.max(1,Math.abs(l),Math.abs(y))&&Math.abs(u-g)<=Ht.EPSILON*Math.max(1,Math.abs(u),Math.abs(g))},Kt.sqrLen=Kt.squaredLength=Kt.len=Kt.length=Kt.dot=Kt.mul=Kt.setReal=Kt.getReal=void 0;var Ht=re(f),Jt=re(Y),te=re(D);function ee(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,r=new WeakMap;return (ee=function(t){return t?r:e})(t)}function re(t,e){if(t&&t.__esModule)return t;if(null===t||"object"!==Wt(t)&&"function"!=typeof t)return {default:t};var r=ee(e);if(r&&r.has(t))return r.get(t);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in t)if("default"!==s&&Object.prototype.hasOwnProperty.call(t,s)){var a=i?Object.getOwnPropertyDescriptor(t,s):null;a&&(a.get||a.set)?Object.defineProperty(n,s,a):n[s]=t[s];}return n.default=t,r&&r.set(t,n),n}function ne(t,e,r){var n=.5*r[0],i=.5*r[1],s=.5*r[2],a=e[0],o=e[1],l=e[2],u=e[3];return t[0]=a,t[1]=o,t[2]=l,t[3]=u,t[4]=n*u+i*l-s*o,t[5]=i*u+s*a-n*l,t[6]=s*u+n*o-i*a,t[7]=-n*a-i*o-s*l,t}function ie(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t}function se(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=r[4],l=r[5],u=r[6],c=r[7],h=e[4],p=e[5],f=e[6],d=e[7],m=r[0],y=r[1],g=r[2],x=r[3];return t[0]=n*x+a*m+i*g-s*y,t[1]=i*x+a*y+s*m-n*g,t[2]=s*x+a*g+n*y-i*m,t[3]=a*x-n*m-i*y-s*g,t[4]=n*c+a*o+i*u-s*l+h*x+d*m+p*g-f*y,t[5]=i*c+a*l+s*o-n*u+p*x+d*y+f*m-h*g,t[6]=s*c+a*u+n*l-i*o+f*x+d*g+h*y-p*m,t[7]=a*c-n*o-i*l-s*u+d*x-h*m-p*y-f*g,t}Kt.getReal=Jt.copy,Kt.setReal=Jt.copy,Kt.mul=se;var ae=Jt.dot;Kt.dot=ae;var oe=Jt.length;Kt.length=oe,Kt.len=oe;var le=Jt.squaredLength;Kt.squaredLength=le,Kt.sqrLen=le;var ue={};function ce(t){return ce="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ce(t)}Object.defineProperty(ue,"__esModule",{value:!0}),ue.create=fe,ue.clone=function(t){var e=new he.ARRAY_TYPE(2);return e[0]=t[0],e[1]=t[1],e},ue.fromValues=function(t,e){var r=new he.ARRAY_TYPE(2);return r[0]=t,r[1]=e,r},ue.copy=function(t,e){return t[0]=e[0],t[1]=e[1],t},ue.set=function(t,e,r){return t[0]=e,t[1]=r,t},ue.add=function(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t},ue.subtract=de,ue.multiply=me,ue.divide=ye,ue.ceil=function(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t},ue.floor=function(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t},ue.min=function(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t},ue.max=function(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t},ue.round=function(t,e){return t[0]=Math.round(e[0]),t[1]=Math.round(e[1]),t},ue.scale=function(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t},ue.scaleAndAdd=function(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t},ue.distance=ge,ue.squaredDistance=xe,ue.length=be,ue.squaredLength=ve,ue.negate=function(t,e){return t[0]=-e[0],t[1]=-e[1],t},ue.inverse=function(t,e){return t[0]=1/e[0],t[1]=1/e[1],t},ue.normalize=function(t,e){var r=e[0],n=e[1],i=r*r+n*n;return i>0&&(i=1/Math.sqrt(i)),t[0]=e[0]*i,t[1]=e[1]*i,t},ue.dot=function(t,e){return t[0]*e[0]+t[1]*e[1]},ue.cross=function(t,e,r){var n=e[0]*r[1]-e[1]*r[0];return t[0]=t[1]=0,t[2]=n,t},ue.lerp=function(t,e,r,n){var i=e[0],s=e[1];return t[0]=i+n*(r[0]-i),t[1]=s+n*(r[1]-s),t},ue.random=function(t,e){e=e||1;var r=2*he.RANDOM()*Math.PI;return t[0]=Math.cos(r)*e,t[1]=Math.sin(r)*e,t},ue.transformMat2=function(t,e,r){var n=e[0],i=e[1];return t[0]=r[0]*n+r[2]*i,t[1]=r[1]*n+r[3]*i,t},ue.transformMat2d=function(t,e,r){var n=e[0],i=e[1];return t[0]=r[0]*n+r[2]*i+r[4],t[1]=r[1]*n+r[3]*i+r[5],t},ue.transformMat3=function(t,e,r){var n=e[0],i=e[1];return t[0]=r[0]*n+r[3]*i+r[6],t[1]=r[1]*n+r[4]*i+r[7],t},ue.transformMat4=function(t,e,r){var n=e[0],i=e[1];return t[0]=r[0]*n+r[4]*i+r[12],t[1]=r[1]*n+r[5]*i+r[13],t},ue.rotate=function(t,e,r,n){var i=e[0]-r[0],s=e[1]-r[1],a=Math.sin(n),o=Math.cos(n);return t[0]=i*o-s*a+r[0],t[1]=i*a+s*o+r[1],t},ue.angle=function(t,e){var r=t[0],n=t[1],i=e[0],s=e[1],a=Math.sqrt(r*r+n*n)*Math.sqrt(i*i+s*s);return Math.acos(Math.min(Math.max(a&&(r*i+n*s)/a,-1),1))},ue.zero=function(t){return t[0]=0,t[1]=0,t},ue.str=function(t){return "vec2("+t[0]+", "+t[1]+")"},ue.exactEquals=function(t,e){return t[0]===e[0]&&t[1]===e[1]},ue.equals=function(t,e){var r=t[0],n=t[1],i=e[0],s=e[1];return Math.abs(r-i)<=he.EPSILON*Math.max(1,Math.abs(r),Math.abs(i))&&Math.abs(n-s)<=he.EPSILON*Math.max(1,Math.abs(n),Math.abs(s))},ue.forEach=ue.sqrLen=ue.sqrDist=ue.dist=ue.div=ue.mul=ue.sub=ue.len=void 0;var he=function(t,e){if(t&&t.__esModule)return t;if(null===t||"object"!==ce(t)&&"function"!=typeof t)return {default:t};var r=pe(void 0);if(r&&r.has(t))return r.get(t);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in t)if("default"!==s&&Object.prototype.hasOwnProperty.call(t,s)){var a=i?Object.getOwnPropertyDescriptor(t,s):null;a&&(a.get||a.set)?Object.defineProperty(n,s,a):n[s]=t[s];}return n.default=t,r&&r.set(t,n),n}(f);function pe(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,r=new WeakMap;return (pe=function(t){return t?r:e})(t)}function fe(){var t=new he.ARRAY_TYPE(2);return he.ARRAY_TYPE!=Float32Array&&(t[0]=0,t[1]=0),t}function de(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t}function me(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t}function ye(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t}function ge(t,e){return Math.hypot(e[0]-t[0],e[1]-t[1])}function xe(t,e){var r=e[0]-t[0],n=e[1]-t[1];return r*r+n*n}function be(t){return Math.hypot(t[0],t[1])}function ve(t){var e=t[0],r=t[1];return e*e+r*r}ue.len=be,ue.sub=de,ue.mul=me,ue.div=ye,ue.dist=ge,ue.sqrDist=xe,ue.sqrLen=ve;var _e=function(){var t=fe();return function(e,r,n,i,s,a){var o,l;for(r||(r=2),n||(n=0),l=i?Math.min(i*r+n,e.length):e.length,o=n;o<l;o+=r)t[0]=e[o],t[1]=e[o+1],s(t,t,a),e[o]=t[0],e[o+1]=t[1];return e}}();function we(t){return we="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},we(t)}ue.forEach=_e,Object.defineProperty(p,"__esModule",{value:!0}),t.aa=p.vec4=t.Q=p.vec3=p.vec2=p.quat2=t.bl=p.quat=t.a9=p.mat4=t.ct=p.mat3=p.mat2d=t.b7=p.mat2=p.glMatrix=void 0;var Me=Re(f);p.glMatrix=Me;var Ae=Re(x);t.b7=p.mat2=Ae;var Se=Re(A);p.mat2d=Se;var Ie=Re(z);t.ct=p.mat3=Ie;var ke=Re(D);t.a9=p.mat4=ke;var Pe=Re(Y);t.bl=p.quat=Pe;var Ee=Re(Kt);p.quat2=Ee;var ze=Re(ue);p.vec2=ze;var Te=Re(X);t.Q=p.vec3=Te;var Be=Re(ut);function Ce(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,r=new WeakMap;return (Ce=function(t){return t?r:e})(t)}function Re(t,e){if(t&&t.__esModule)return t;if(null===t||"object"!==we(t)&&"function"!=typeof t)return {default:t};var r=Ce(e);if(r&&r.has(t))return r.get(t);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in t)if("default"!==s&&Object.prototype.hasOwnProperty.call(t,s)){var a=i?Object.getOwnPropertyDescriptor(t,s):null;a&&(a.get||a.set)?Object.defineProperty(n,s,a):n[s]=t[s];}return n.default=t,r&&r.set(t,n),n}t.aa=p.vec4=Be;var Ve=De;function De(t,e,r,n){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(n-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=e,this.p2x=r,this.p2y=n;}De.prototype={sampleCurveX:function(t){return ((this.ax*t+this.bx)*t+this.cx)*t},sampleCurveY:function(t){return ((this.ay*t+this.by)*t+this.cy)*t},sampleCurveDerivativeX:function(t){return (3*this.ax*t+2*this.bx)*t+this.cx},solveCurveX:function(t,e){if(void 0===e&&(e=1e-6),t<0)return 0;if(t>1)return 1;for(var r=t,n=0;n<8;n++){var i=this.sampleCurveX(r)-t;if(Math.abs(i)<e)return r;var s=this.sampleCurveDerivativeX(r);if(Math.abs(s)<1e-6)break;r-=i/s;}var a=0,o=1;for(r=t,n=0;n<20&&(i=this.sampleCurveX(r),!(Math.abs(i-t)<e));n++)t>i?a=r:o=r,r=.5*(o-a)+a;return r},solve:function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))}};var Le=h(Ve),Fe=Oe;function Oe(t,e){this.x=t,this.y=e;}Oe.prototype={clone:function(){return new Oe(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,r=t.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[2]*this.x+t[3]*this.y;return this.x=t[0]*this.x+t[1]*this.y,this.y=e,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),r=Math.sin(t),n=r*this.x+e*this.y;return this.x=e*this.x-r*this.y,this.y=n,this},_rotateAround:function(t,e){var r=Math.cos(t),n=Math.sin(t),i=e.y+n*(this.x-e.x)+r*(this.y-e.y);return this.x=e.x+r*(this.x-e.x)-n*(this.y-e.y),this.y=i,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},Oe.convert=function(t){return t instanceof Oe?t:Array.isArray(t)?new Oe(t[0],t[1]):t};var Ue=h(Fe);const Ne=Math.PI/180,je=180/Math.PI;function qe(t){return t*Ne}function $e(t){return t*je}const Ge=[[0,0],[1,0],[1,1],[0,1]];function Qe(t){if(t<=0)return 0;if(t>=1)return 1;const e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)}function Ye(t,e,r,n){const i=new Le(t,e,r,n);return function(t){return i.solve(t)}}const Xe=Ye(.25,.1,.25,1);function Ze(t,e,r){return Math.min(r,Math.max(e,t))}function Ke(t,e,r){return (r=Ze((r-t)/(e-t),0,1))*r*(3-2*r)}function We(t,e,r){const n=r-e,i=((t-e)%n+n)%n+e;return i===e?r:i}function He(t,e,r){if(!t.length)return r(null,[]);let n=t.length;const i=new Array(t.length);let s=null;t.forEach(((t,a)=>{e(t,((t,e)=>{t&&(s=t),i[a]=e,0==--n&&r(s,i);}));}));}function Je(t,...e){for(const r of e)for(const e in r)t[e]=r[e];return t}let tr=1;function er(){return tr++}function rr(){return function t(e){return e?(e^Math.random()*(16>>e/4)).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,t)}()}function nr(t){return t<=1?1:Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))}function ir(t){return !!t&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)}function sr(t,e){t.forEach((t=>{e[t]&&(e[t]=e[t].bind(e));}));}function ar(t,e){return -1!==t.indexOf(e,t.length-e.length)}function or(t,e,r){const n={};for(const r in t)n[r]=e.call(this,t[r],r,t);return n}function lr(t,e,r){const n={};for(const r in t)e.call(this,t[r],r,t)&&(n[r]=t[r]);return n}function ur(t){return Array.isArray(t)?t.map(ur):"object"==typeof t&&t?or(t,ur):t}const cr={};function hr(t){cr[t]||("undefined"!=typeof console&&console.warn(t),cr[t]=!0);}function pr(t,e,r){return (r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function fr(t){let e=0;for(let r,n,i=0,s=t.length,a=s-1;i<s;a=i++)r=t[i],n=t[a],e+=(n.x-r.x)*(r.y+n.y);return e}function dr([t,e,r]){const n=qe(e+90),i=qe(r);return {x:t*Math.cos(n)*Math.sin(i),y:t*Math.sin(n)*Math.sin(i),z:t*Math.cos(i),azimuthal:e,polar:r}}function mr(){return "undefined"!=typeof WorkerGlobalScope&&"undefined"!=typeof self&&self instanceof WorkerGlobalScope}function yr(t){const e={};if(t.replace(/(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,((t,r,n,i)=>{const s=n||i;return e[r]=!s||s.toLowerCase(),""})),e["max-age"]){const t=parseInt(e["max-age"],10);isNaN(t)?delete e["max-age"]:e["max-age"]=t;}return e}let gr,xr,br,vr,_r,wr,Mr=null;function Ar(t){try{const e=self[t];return e.setItem("_mapbox_test_",1),e.removeItem("_mapbox_test_"),!0}catch(t){return !1}}function Sr(t,e){return [t[4*e],t[4*e+1],t[4*e+2],t[4*e+3]]}function Ir(t,e,r,n){for(;e<r;){const i=e+r>>1;t[i]<n?e=i+1:r=i;}return e}function kr(t,e,r,n){for(;e<r;){const i=e+r>>1;t[i]<=n?e=i+1:r=i;}return e}function Pr(t){return t>0?1/(1.001-t):1+t}function Er(t){return t>0?1-1/(1.001-t):-t}function zr(){return null==gr&&(gr=self.OffscreenCanvas&&new OffscreenCanvas(1,1).getContext("2d")&&"function"==typeof self.createImageBitmap),gr}const Tr={now:()=>void 0!==vr?vr:performance.now(),setNow(t){vr=t;},restoreNow(){vr=void 0;},frame(t){const e=requestAnimationFrame(t);return {cancel:()=>cancelAnimationFrame(e)}},getImageData(t,e=0){const{width:r,height:n}=t;_r||(_r=document.createElement("canvas"));const i=_r.getContext("2d",{willReadFrequently:!0});if(!i)throw new Error("failed to create canvas 2d context");return (r>_r.width||n>_r.height)&&(_r.width=r,_r.height=n),i.clearRect(-e,-e,r+2*e,n+2*e),i.drawImage(t,0,0,r,n),i.getImageData(-e,-e,r+2*e,n+2*e)},resolveURL:t=>(xr||(xr=document.createElement("a")),xr.href=t,xr.href),get devicePixelRatio(){return window.devicePixelRatio},get prefersReducedMotion(){return !!window.matchMedia&&(null==br&&(br=window.matchMedia("(prefers-reduced-motion: reduce)")),br.matches)},hasCanvasFingerprintNoise(){if(void 0!==wr)return wr;if(!zr())return wr=!1,!1;const t=new OffscreenCanvas(85,1),e=t.getContext("2d",{willReadFrequently:!0});let r=0;for(let n=0;n<t.width;++n)e.fillStyle=`rgba(${r++},${r++},${r++}, 255)`,e.fillRect(n,0,1,1);const n=e.getImageData(0,0,t.width,t.height);r=0;for(let t=0;t<n.data.length;++t)if(t%4!=3&&r++!==n.data[t])return wr=!0,!0;return wr=!1,!1}};function Br(t,e){const r=t.indexOf("?");if(r<0)return `${t}?${new URLSearchParams(e).toString()}`;const n=new URLSearchParams(t.slice(r));for(const t in e)n.set(t,e[t]);return `${t.slice(0,r)}?${n.toString()}`}function Cr(t,e={persistentParams:[]}){const r=t.indexOf("?");if(r<0)return t;const n=new URLSearchParams,i=new URLSearchParams(t.slice(r));for(const t of e.persistentParams){const e=i.get(t);e&&n.set(t,e);}const s=n.toString();return `${t.slice(0,r)}${s.length>0?`?${s}`:""}`}const Rr="mapbox-tiles";let Vr=500,Dr=50;let Lr,Fr;function Or(){try{return caches}catch(t){}}function Ur(){const t=Or();t&&!Lr&&(Lr=t.open(Rr));}let Nr=1/0;const jr={supported:!1,testSupport:function(t){!Gr&&$r&&(Qr?Xr(t):qr=t);}};let qr,$r,Gr=!1,Qr=!1;const Yr="undefined"!=typeof self?self:{};function Xr(t){const e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e);try{if(t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,$r),t.isContextLost())return;jr.supported=!0;}catch(t){}t.deleteTexture(e),Gr=!0;}Yr.document&&($r=Yr.document.createElement("img"),$r.onload=function(){qr&&Xr(qr),qr=null,Qr=!0;},$r.onerror=function(){Gr=!0,qr=null;},$r.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=");const Zr={Unknown:"Unknown",Style:"Style",Source:"Source",Tile:"Tile",Glyphs:"Glyphs",SpriteImage:"SpriteImage",SpriteJSON:"SpriteJSON",Image:"Image",Model:"Model"};"function"==typeof Object.freeze&&Object.freeze(Zr);class Kr extends Error{constructor(t,e,r){401===e&&i(r)&&(t+=": you may have provided an invalid Mapbox access token. See https://docs.mapbox.com/api/overview/#access-tokens-and-token-scopes"),super(t),this.status=e,this.url=r;}toString(){return `${this.name}: ${this.message} (${this.status}): ${this.url}`}}const Wr=mr()?()=>self.worker&&self.worker.referrer:()=>("blob:"===location.protocol?parent:self).location.href;const Hr=function(t,e){if(!(/^file:/.test(r=t.url)||/^file:/.test(Wr())&&!/^\w+:/.test(r))){if(self.fetch&&self.Request&&self.AbortController&&Request.prototype.hasOwnProperty("signal"))return function(t,e){const r=new AbortController,n=new Request(t.url,{method:t.method||"GET",body:t.body,credentials:t.credentials,headers:t.headers,referrer:Wr(),referrerPolicy:t.referrerPolicy,signal:r.signal});let s=!1,a=!1;const o=(l=n.url).indexOf("sku=")>0&&i(l);var l;"json"===t.type&&n.headers.set("Accept","application/json");const u=(r,i,s)=>{if(a)return;if(r&&"SecurityError"!==r.message&&hr(r.toString()),i&&s)return c(i);const l=Date.now();fetch(n).then((r=>{if(r.ok){const t=o?r.clone():null;return c(r,t,l)}return e(new Kr(r.statusText,r.status,t.url))})).catch((r=>{"AbortError"!==r.name&&e(new Error(`${r.message} ${t.url}`));}));},c=(r,i,o)=>{("arrayBuffer"===t.type?r.arrayBuffer():"json"===t.type?r.json():r.text()).then((t=>{a||(i&&o&&function(t,e,r){if(Ur(),!Lr)return;const n=yr(e.headers.get("Cache-Control")||"");if(n["no-store"])return;const i={status:e.status,statusText:e.statusText,headers:new Headers};e.headers.forEach(((t,e)=>i.headers.set(e,t))),n["max-age"]&&i.headers.set("Expires",new Date(r+1e3*n["max-age"]).toUTCString());const s=i.headers.get("Expires");if(!s)return;if(new Date(s).getTime()-r<42e4)return;let a=Cr(t.url,{persistentParams:["language","worldview"]});if(206===e.status){const e=t.headers.get("Range");if(!e)return;i.status=200,a=Br(a,{range:e});}!function(t,e){if(void 0===Fr)try{new Response(new ReadableStream),Fr=!0;}catch(t){Fr=!1;}Fr?e(t.body):t.blob().then(e);}(e,(t=>{const e=new Response(t,i);Ur(),Lr&&Lr.then((t=>t.put(a,e))).catch((t=>hr(t.message)));}));}(n,i,o),s=!0,e(null,t,r.headers.get("Cache-Control"),r.headers.get("Expires")));})).catch((t=>{a||e(new Error(t.message));}));};return o?function(t,e){if(Ur(),!Lr)return e(null);Lr.then((r=>{let n=Cr(t.url,{persistentParams:["language","worldview"]});const i=t.headers.get("Range");i&&(n=Br(n,{range:i})),r.match(n).then((t=>{const i=function(t){if(!t)return !1;const e=new Date(t.headers.get("Expires")||0),r=yr(t.headers.get("Cache-Control")||"");return e>Date.now()&&!r["no-cache"]}(t);r.delete(n),i&&r.put(n,t.clone()),e(null,t,i);})).catch(e);})).catch(e);}(n,u):u(null,null),{cancel:()=>{a=!0,s||r.abort();}}}(t,e);if(mr()&&self.worker&&self.worker.actor)return self.worker.actor.send("getResource",t,e,void 0,!0)}var r;return function(t,e){const r=new XMLHttpRequest;r.open(t.method||"GET",t.url,!0),"arrayBuffer"===t.type&&(r.responseType="arraybuffer");for(const e in t.headers)r.setRequestHeader(e,t.headers[e]);return "json"===t.type&&(r.responseType="text",r.setRequestHeader("Accept","application/json")),r.withCredentials="include"===t.credentials,r.onerror=()=>{e(new Error(r.statusText));},r.onload=()=>{if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){let n=r.response;if("json"===t.type)try{n=JSON.parse(r.response);}catch(t){return e(t)}e(null,n,r.getResponseHeader("Cache-Control"),r.getResponseHeader("Expires"));}else e(new Kr(r.statusText,r.status,t.url));},r.send(t.body),{cancel:()=>r.abort()}}(t,e)},Jr=function(t,e){return Hr(Je(t,{type:"arrayBuffer"}),e)};function tn(t){const e=document.createElement("a");return e.href=t,e.protocol===location.protocol&&e.host===location.host}const en="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";let rn,nn;rn=[],nn=0;const sn=function(t,e){if(jr.supported&&(t.headers||(t.headers={}),t.headers.accept="image/webp,*/*"),nn>=n.MAX_PARALLEL_IMAGE_REQUESTS){const r={requestParameters:t,callback:e,cancelled:!1,cancel(){this.cancelled=!0;}};return rn.push(r),r}nn++;let r=!1;const i=()=>{if(!r)for(r=!0,nn--;rn.length&&nn<n.MAX_PARALLEL_IMAGE_REQUESTS;){const t=rn.shift(),{requestParameters:e,callback:r,cancelled:n}=t;n||(t.cancel=sn(e,r).cancel);}},s=Jr(t,((t,r,n,s)=>{i(),t?e(t):r&&(self.createImageBitmap?function(t,e){const r=new Blob([new Uint8Array(t)],{type:"image/png"});createImageBitmap(r).then((t=>{e(null,t);})).catch((t=>{e(new Error(`Could not load image because of ${t.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`));}));}(r,((t,r)=>e(t,r,n,s))):function(t,e){const r=new Image;r.onload=()=>{e(null,r),URL.revokeObjectURL(r.src),r.onload=null,requestAnimationFrame((()=>{r.src=en;}));},r.onerror=()=>e(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));const n=new Blob([new Uint8Array(t)],{type:"image/png"});r.src=t.byteLength?URL.createObjectURL(n):en;}(r,((t,r)=>e(t,r,n,s))));}));return {cancel:()=>{s.cancel(),i();}}},an="01",on="NO_ACCESS_TOKEN",ln=/^(\w+):\/\/([^/?]*)(\/[^?]+)?\??(.+)?/;function un(t){const e=t.match(ln);if(!e)throw new Error("Unable to parse URL object");return {protocol:e[1],authority:e[2],path:e[3]||"/",params:e[4]?e[4].split("&"):[]}}function cn(t){const e=t.params.length?`?${t.params.join("&")}`:"";return `${t.protocol}://${t.authority}${t.path}${e}`}const hn="mapbox.eventData";function pn(t){if(!t)return null;const e=t.split(".");if(!e||3!==e.length)return null;try{return JSON.parse(decodeURIComponent(atob(e[1]).split("").map((t=>"%"+("00"+t.charCodeAt(0).toString(16)).slice(-2))).join("")))}catch(t){return null}}class fn{constructor(t){this.type=t,this.anonId=null,this.eventData={},this.queue=[],this.pendingRequest=null;}getStorageKey(t){const e=pn(n.ACCESS_TOKEN);let r="";return r=e&&e.u?btoa(encodeURIComponent(e.u).replace(/%([0-9A-F]{2})/g,((t,e)=>String.fromCharCode(Number("0x"+e))))):n.ACCESS_TOKEN||"",t?`${hn}.${t}:${r}`:`${hn}:${r}`}fetchEventData(){const t=Ar("localStorage"),e=this.getStorageKey(),r=this.getStorageKey("uuid");if(t)try{const t=localStorage.getItem(e);t&&(this.eventData=JSON.parse(t));const n=localStorage.getItem(r);n&&(this.anonId=n);}catch(t){hr("Unable to read from LocalStorage");}}saveEventData(){const t=Ar("localStorage"),e=this.getStorageKey(),r=this.getStorageKey("uuid"),n=this.anonId;if(t&&n)try{localStorage.setItem(r,n),Object.keys(this.eventData).length>=1&&localStorage.setItem(e,JSON.stringify(this.eventData));}catch(t){hr("Unable to write to LocalStorage");}}processRequests(t){}postEvent(t,e,r,i){if(!n.EVENTS_URL)return;const s=un(n.EVENTS_URL);s.params.push(`access_token=${i||n.ACCESS_TOKEN||""}`);const a={event:this.type,created:new Date(t).toISOString()},o=e?Je(a,e):a,l={url:cn(s),headers:{"Content-Type":"text/plain"},body:JSON.stringify([o])};this.pendingRequest=function(t,e){return Hr(Je(t,{method:"POST"}),e)}(l,(t=>{this.pendingRequest=null,r(t),this.saveEventData(),this.processRequests(i);}));}queueRequest(t,e){this.queue.push(t),this.processRequests(e);}}const dn=new class extends fn{constructor(t){super("appUserTurnstile"),this._customAccessToken=t;}postTurnstileEvent(t,e){n.EVENTS_URL&&n.ACCESS_TOKEN&&Array.isArray(t)&&t.some((t=>s(t)||i(t)))&&this.queueRequest(Date.now(),e);}processRequests(t){if(this.pendingRequest||0===this.queue.length)return;this.anonId&&this.eventData.lastSuccess&&this.eventData.tokenU||this.fetchEventData();const r=pn(n.ACCESS_TOKEN),i=r?r.u:n.ACCESS_TOKEN;let s=i!==this.eventData.tokenU;ir(this.anonId)||(this.anonId=rr(),s=!0);const a=this.queue.shift();if(this.eventData.lastSuccess){const t=new Date(this.eventData.lastSuccess),e=new Date(a),r=(a-this.eventData.lastSuccess)/864e5;s=s||r>=1||r<-1||t.getDate()!==e.getDate();}else s=!0;s?this.postEvent(a,{sdkIdentifier:"mapbox-gl-js",sdkVersion:e,skuId:an,"enabled.telemetry":!1,userId:this.anonId},(t=>{t||(this.eventData.lastSuccess=a,this.eventData.tokenU=i);}),t):this.processRequests();}},mn=dn.postTurnstileEvent.bind(dn),yn=new class extends fn{constructor(){super("map.load"),this.success={},this.skuToken="";}postMapLoadEvent(t,e,r,i){this.skuToken=e,this.errorCb=i,n.EVENTS_URL&&(r||n.ACCESS_TOKEN?this.queueRequest({id:t,timestamp:Date.now()},r):this.errorCb(new Error(on)));}processRequests(t){if(this.pendingRequest||0===this.queue.length)return;const{id:r,timestamp:n}=this.queue.shift();r&&this.success[r]||(this.anonId||this.fetchEventData(),ir(this.anonId)||(this.anonId=rr()),this.postEvent(n,{sdkIdentifier:"mapbox-gl-js",sdkVersion:e,skuId:an,skuToken:this.skuToken,userId:this.anonId},(t=>{t?this.errorCb(t):r&&(this.success[r]=!0);}),t));}remove(){this.errorCb=null;}},gn=yn.postMapLoadEvent.bind(yn),xn=new class extends fn{constructor(){super("style.load"),this.eventIdPerMapInstanceMap=new Map,this.mapInstanceIdMap=new WeakMap;}getMapInstanceId(t){let e=this.mapInstanceIdMap.get(t);return e||(e=rr(),this.mapInstanceIdMap.set(t,e)),e}getEventId(t){const e=this.eventIdPerMapInstanceMap.get(t)||0;return this.eventIdPerMapInstanceMap.set(t,e+1),e}postStyleLoadEvent(t,e){const{map:r,style:i,importedStyles:s}=e;if(!n.EVENTS_URL||!t&&!n.ACCESS_TOKEN)return;const a=this.getMapInstanceId(r),o={mapInstanceId:a,eventId:this.getEventId(a),style:i};s.length&&(o.importedStyles=s),this.queueRequest({timestamp:Date.now(),payload:o},t);}processRequests(t){if(this.pendingRequest||0===this.queue.length)return;const{timestamp:e,payload:r}=this.queue.shift();this.postEvent(e,r,(()=>{}),t);}},bn=xn.postStyleLoadEvent.bind(xn),vn=new class extends fn{constructor(){super("gljs.performance");}postPerformanceEvent(t,e){n.EVENTS_URL&&(t||n.ACCESS_TOKEN)&&this.queueRequest({timestamp:Date.now(),performanceData:e},t);}processRequests(t){if(this.pendingRequest||0===this.queue.length)return;const{timestamp:r,performanceData:n}=this.queue.shift(),i=function(t){const r=performance.getEntriesByType("resource"),n=performance.getEntriesByType("mark"),i=function(t){const e={};if(t)for(const r in t)if("other"!==r)for(const n of t[r]){const t=`${r}ResolveRangeMin`,i=`${r}ResolveRangeMax`,s=`${r}RequestCount`,a=`${r}RequestCachedCount`;e[t]=Math.min(e[t]||1/0,n.startTime),e[i]=Math.max(e[i]||-1/0,n.responseEnd);const o=t=>{void 0===e[t]&&(e[t]=0),++e[t];};void 0!==n.transferSize&&0===n.transferSize&&o(a),o(s);}return e}(function(t,e){const r={};if(t)for(const n of t){const t=e(n);void 0===r[t]&&(r[t]=[]),r[t].push(n);}return r}(r,c)),s=window.devicePixelRatio,a=navigator.connection||navigator.mozConnection||navigator.webkitConnection,o=a?a.effectiveType:void 0,h={counters:[],metadata:[],attributes:[]},p=(t,e,r)=>{null!=r&&t.push({name:e,value:r.toString()});};for(const t in i)p(h.counters,t,i[t]);if(t.interactionRange[0]!==1/0&&t.interactionRange[1]!==-1/0&&(p(h.counters,"interactionRangeMin",t.interactionRange[0]),p(h.counters,"interactionRangeMax",t.interactionRange[1])),n)for(const t of Object.keys(u)){const e=u[t],r=n.find((t=>t.name===e));r&&p(h.counters,e,r.startTime);}return p(h.counters,"visibilityHidden",t.visibilityHidden),p(h.attributes,"style",function(t){if(t)for(const e of t){const t=e.name.split("?")[0];if(l(t)){const e=t.split("/").slice(-2);if(2===e.length)return `mapbox://styles/${e[0]}/${e[1]}`}}}(r)),p(h.attributes,"terrainEnabled",t.terrainEnabled?"true":"false"),p(h.attributes,"fogEnabled",t.fogEnabled?"true":"false"),p(h.attributes,"projection",t.projection),p(h.attributes,"zoom",t.zoom),p(h.metadata,"devicePixelRatio",s),p(h.metadata,"connectionEffectiveType",o),p(h.metadata,"navigatorUserAgent",navigator.userAgent),p(h.metadata,"screenWidth",window.screen.width),p(h.metadata,"screenHeight",window.screen.height),p(h.metadata,"windowWidth",window.innerWidth),p(h.metadata,"windowHeight",window.innerHeight),p(h.metadata,"mapWidth",t.width/s),p(h.metadata,"mapHeight",t.height/s),p(h.metadata,"webglRenderer",t.renderer),p(h.metadata,"webglVendor",t.vendor),p(h.metadata,"sdkVersion",e),p(h.metadata,"sdkIdentifier","mapbox-gl-js"),h}(n);for(const t of i.metadata);for(const t of i.counters);for(const t of i.attributes);this.postEvent(r,i,(()=>{}),t);}},_n=vn.postPerformanceEvent.bind(vn),wn=new class extends fn{constructor(){super("map.auth"),this.success={},this.skuToken="";}getSession(t,e,r,i){if(!n.API_URL||!n.SESSION_PATH)return;const s=un(n.API_URL+n.SESSION_PATH);s.params.push(`sku=${e||""}`),s.params.push(`access_token=${i||n.ACCESS_TOKEN||""}`);const a={url:cn(s),headers:{"Content-Type":"text/plain"}};this.pendingRequest=function(t,e){return Hr(Je(t,{method:"GET"}),e)}(a,(t=>{this.pendingRequest=null,r(t),this.saveEventData(),this.processRequests(i);}));}getSessionAPI(t,e,r,i){this.skuToken=e,this.errorCb=i,n.SESSION_PATH&&n.API_URL&&(r||n.ACCESS_TOKEN?this.queueRequest({id:t,timestamp:Date.now()},r):this.errorCb(new Error(on)));}processRequests(t){if(this.pendingRequest||0===this.queue.length)return;const{id:e,timestamp:r}=this.queue.shift();e&&this.success[e]||this.getSession(r,this.skuToken,(t=>{t?this.errorCb(t):e&&(this.success[e]=!0);}),t);}remove(){this.errorCb=null;}},Mn=wn.getSessionAPI.bind(wn),An=new Set;var Sn={exports:{}},In={exports:{}};In.exports=function(t,e){var r,n,i,s,a,o,l,u;for(n=t.length-(r=3&t.length),i=e,a=3432918353,o=461845907,u=0;u<n;)l=255&t.charCodeAt(u)|(255&t.charCodeAt(++u))<<8|(255&t.charCodeAt(++u))<<16|(255&t.charCodeAt(++u))<<24,++u,i=27492+(65535&(s=5*(65535&(i=(i^=l=(65535&(l=(l=(65535&l)*a+(((l>>>16)*a&65535)<<16)&4294967295)<<15|l>>>17))*o+(((l>>>16)*o&65535)<<16)&4294967295)<<13|i>>>19))+((5*(i>>>16)&65535)<<16)&4294967295))+((58964+(s>>>16)&65535)<<16);switch(l=0,r){case 3:l^=(255&t.charCodeAt(u+2))<<16;case 2:l^=(255&t.charCodeAt(u+1))<<8;case 1:i^=l=(65535&(l=(l=(65535&(l^=255&t.charCodeAt(u)))*a+(((l>>>16)*a&65535)<<16)&4294967295)<<15|l>>>17))*o+(((l>>>16)*o&65535)<<16)&4294967295;}return i^=t.length,i=2246822507*(65535&(i^=i>>>16))+((2246822507*(i>>>16)&65535)<<16)&4294967295,i=3266489909*(65535&(i^=i>>>13))+((3266489909*(i>>>16)&65535)<<16)&4294967295,(i^=i>>>16)>>>0};var kn=In.exports,Pn={exports:{}};Pn.exports=function(t,e){for(var r,n=t.length,i=e^n,s=0;n>=4;)r=1540483477*(65535&(r=255&t.charCodeAt(s)|(255&t.charCodeAt(++s))<<8|(255&t.charCodeAt(++s))<<16|(255&t.charCodeAt(++s))<<24))+((1540483477*(r>>>16)&65535)<<16),i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),n-=4,++s;switch(n){case 3:i^=(255&t.charCodeAt(s+2))<<16;case 2:i^=(255&t.charCodeAt(s+1))<<8;case 1:i=1540483477*(65535&(i^=255&t.charCodeAt(s)))+((1540483477*(i>>>16)&65535)<<16);}return i=1540483477*(65535&(i^=i>>>13))+((1540483477*(i>>>16)&65535)<<16),(i^=i>>>15)>>>0};var En=kn,zn=Pn.exports;Sn.exports=En,Sn.exports.murmur3=En,Sn.exports.murmur2=zn;var Tn=h(Sn.exports);function Bn(t,e,r){r[t]&&-1!==r[t].indexOf(e)||(r[t]=r[t]||[],r[t].push(e));}function Cn(t,e,r){if(r&&r[t]){const n=r[t].indexOf(e);-1!==n&&r[t].splice(n,1);}}class Rn{constructor(t,e={}){Je(this,e),this.type=t;}}class Vn extends Rn{constructor(t,e={}){super("error",Je({error:t},e));}}class Dn{on(t,e){return this._listeners=this._listeners||{},Bn(t,e,this._listeners),this}off(t,e){return Cn(t,e,this._listeners),Cn(t,e,this._oneTimeListeners),this}once(t,e){return e?(this._oneTimeListeners=this._oneTimeListeners||{},Bn(t,e,this._oneTimeListeners),this):new Promise((e=>this.once(t,e)))}fire(t,e){"string"==typeof t&&(t=new Rn(t,e||{}));const r=t.type;if(this.listens(r)){t.target=this;const e=this._listeners&&this._listeners[r]?this._listeners[r].slice():[];for(const r of e)r.call(this,t);const n=this._oneTimeListeners&&this._oneTimeListeners[r]?this._oneTimeListeners[r].slice():[];for(const e of n)Cn(r,e,this._oneTimeListeners),e.call(this,t);const i=this._eventedParent;i&&(Je(t,"function"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData),i.fire(t));}else t instanceof Vn&&console.error(t.error);return this}listens(t){return !!(this._listeners&&this._listeners[t]&&this._listeners[t].length>0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t))}setEventedParent(t,e){return this._eventedParent=t,this._eventedParentData=e,this}}t.z=void 0;var Ln={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function Fn(t){return (t=Math.round(t))<0?0:t>255?255:t}function On(t){return Fn("%"===t[t.length-1]?parseFloat(t)/100*255:parseInt(t))}function Un(t){return (e="%"===t[t.length-1]?parseFloat(t)/100:parseFloat(t))<0?0:e>1?1:e;var e;}function Nn(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}try{t.z={}.parseCSSColor=function(t){var e,r=t.replace(/ /g,"").toLowerCase();if(r in Ln)return Ln[r].slice();if("#"===r[0])return 4===r.length?(e=parseInt(r.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:7===r.length&&(e=parseInt(r.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var n=r.indexOf("("),i=r.indexOf(")");if(-1!==n&&i+1===r.length){var s=r.substr(0,n),a=r.substr(n+1,i-(n+1)).split(","),o=1;switch(s){case"rgba":if(4!==a.length)return null;o=Un(a.pop());case"rgb":return 3!==a.length?null:[On(a[0]),On(a[1]),On(a[2]),o];case"hsla":if(4!==a.length)return null;o=Un(a.pop());case"hsl":if(3!==a.length)return null;var l=(parseFloat(a[0])%360+360)%360/360,u=Un(a[1]),c=Un(a[2]),h=c<=.5?c*(u+1):c+u-c*u,p=2*c-h;return [Fn(255*Nn(p,h,l+1/3)),Fn(255*Nn(p,h,l)),Fn(255*Nn(p,h,l-1/3)),o];default:return null}}return null};}catch(t){}class jn{constructor(t,e,r,n=1){this.r=t,this.g=e,this.b=r,this.a=n;}static parse(e){if(!e)return;if(e instanceof jn)return e;if("string"!=typeof e)return;const r=t.z(e);return r?new jn(r[0]/255*r[3],r[1]/255*r[3],r[2]/255*r[3],r[3]):void 0}toString(){const[t,e,r,n]=this.toArray();return `rgba(${Math.round(t)},${Math.round(e)},${Math.round(r)},${n})`}toArray(){const{r:t,g:e,b:r,a:n}=this;return 0===n?[0,0,0,0]:[255*t/n,255*e/n,255*r/n,n]}toArray01(){const{r:t,g:e,b:r,a:n}=this;return 0===n?[0,0,0,0]:[t/n,e/n,r/n,n]}toArray01Scaled(t){const{r:e,g:r,b:n,a:i}=this;return 0===i?[0,0,0]:[e/i*t,r/i*t,n/i*t]}toArray01PremultipliedAlpha(){const{r:t,g:e,b:r,a:n}=this;return [t,e,r,n]}toArray01Linear(){const{r:t,g:e,b:r,a:n}=this;return 0===n?[0,0,0,0]:[Math.pow(t/n,2.2),Math.pow(e/n,2.2),Math.pow(r/n,2.2),n]}}function qn(t,e,r){return t*(1-r)+e*r}function $n(t,e,r){return t.map(((t,n)=>qn(t,e[n],r)))}jn.black=new jn(0,0,0,1),jn.white=new jn(1,1,1,1),jn.transparent=new jn(0,0,0,0),jn.red=new jn(1,0,0,1),jn.blue=new jn(0,0,1,1);var Gn=Object.freeze({__proto__:null,array:$n,color:function(t,e,r){return new jn(qn(t.r,e.r,r),qn(t.g,e.g,r),qn(t.b,e.b,r),qn(t.a,e.a,r))},number:qn});function Qn(t,...e){for(const r of e)for(const e in r)t[e]=r[e];return t}class Yn extends Error{constructor(t,e){super(e),this.message=e,this.key=t;}}class Xn{constructor(t,e=[]){this.parent=t,this.bindings={};for(const[t,r]of e)this.bindings[t]=r;}concat(t){return new Xn(this,t)}get(t){if(this.bindings[t])return this.bindings[t];if(this.parent)return this.parent.get(t);throw new Error(`${t} not found in scope.`)}has(t){return !!this.bindings[t]||!!this.parent&&this.parent.has(t)}}const Zn={kind:"null"},Kn={kind:"number"},Wn={kind:"string"},Hn={kind:"boolean"},Jn={kind:"color"},ti={kind:"object"},ei={kind:"value"},ri={kind:"collator"},ni={kind:"formatted"},ii={kind:"resolvedImage"};function si(t,e){return {kind:"array",itemType:t,N:e}}function ai(t){if("array"===t.kind){const e=ai(t.itemType);return "number"==typeof t.N?`array<${e}, ${t.N}>`:"value"===t.itemType.kind?"array":`array<${e}>`}return t.kind}const oi=[Zn,Kn,Wn,Hn,Jn,ni,ti,si(ei),ii];function li(t,e){if("error"===e.kind)return null;if("array"===t.kind){if("array"===e.kind&&(0===e.N&&"value"===e.itemType.kind||!li(t.itemType,e.itemType))&&("number"!=typeof t.N||t.N===e.N))return null}else {if(t.kind===e.kind)return null;if("value"===t.kind)for(const t of oi)if(!li(t,e))return null}return `Expected ${ai(t)} but found ${ai(e)} instead.`}function ui(t,e){return e.some((e=>e.kind===t.kind))}function ci(t,e){return e.some((e=>"null"===e?null===t:"array"===e?Array.isArray(t):"object"===e?t&&!Array.isArray(t)&&"object"==typeof t:e===typeof t))}class hi{constructor(t,e,r){this.sensitivity=t?e?"variant":"case":e?"accent":"base",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"});}compare(t,e){return this.collator.compare(t,e)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class pi{constructor(t,e,r,n,i){this.text=t.normalize?t.normalize():t,this.image=e,this.scale=r,this.fontStack=n,this.textColor=i;}}class fi{constructor(t){this.sections=t;}static fromString(t){return new fi([new pi(t,null,null,null,null)])}isEmpty(){return 0===this.sections.length||!this.sections.some((t=>0!==t.text.length||t.image&&0!==t.image.namePrimary.length))}static factory(t){return t instanceof fi?t:fi.fromString(t)}toString(){return 0===this.sections.length?"":this.sections.map((t=>t.text)).join("")}serialize(){const t=["format"];for(const e of this.sections){if(e.image){t.push(["image",e.image.namePrimary]);continue}t.push(e.text);const r={};e.fontStack&&(r["text-font"]=["literal",e.fontStack.split(",")]),e.scale&&(r["font-scale"]=e.scale),e.textColor&&(r["text-color"]=["rgba"].concat(e.textColor.toArray())),t.push(r);}return t}}class di{constructor(t){this.namePrimary=t.namePrimary,t.nameSecondary&&(this.nameSecondary=t.nameSecondary),this.available=t.available;}toString(){return this.nameSecondary?`[${this.namePrimary},${this.nameSecondary}]`:this.namePrimary}static fromString(t,e){return t?new di({namePrimary:t,nameSecondary:e,available:!1}):null}serialize(){return this.nameSecondary?["image",this.namePrimary,this.nameSecondary]:["image",this.namePrimary]}}function mi(t,e,r,n){return "number"==typeof t&&t>=0&&t<=255&&"number"==typeof e&&e>=0&&e<=255&&"number"==typeof r&&r>=0&&r<=255?void 0===n||"number"==typeof n&&n>=0&&n<=1?null:`Invalid rgba value [${[t,e,r,n].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${("number"==typeof n?[t,e,r,n]:[t,e,r]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function yi(t){if(null===t)return !0;if("string"==typeof t)return !0;if("boolean"==typeof t)return !0;if("number"==typeof t)return !0;if(t instanceof jn)return !0;if(t instanceof hi)return !0;if(t instanceof fi)return !0;if(t instanceof di)return !0;if(Array.isArray(t)){for(const e of t)if(!yi(e))return !1;return !0}if("object"==typeof t){for(const e in t)if(!yi(t[e]))return !1;return !0}return !1}function gi(t){if(null===t)return Zn;if("string"==typeof t)return Wn;if("boolean"==typeof t)return Hn;if("number"==typeof t)return Kn;if(t instanceof jn)return Jn;if(t instanceof hi)return ri;if(t instanceof fi)return ni;if(t instanceof di)return ii;if(Array.isArray(t)){const e=t.length;let r;for(const e of t){const t=gi(e);if(r){if(r===t)continue;r=ei;break}r=t;}return si(r||ei,e)}return ti}function xi(t){const e=typeof t;return null===t?"":"string"===e||"number"===e||"boolean"===e?String(t):t instanceof jn||t instanceof fi||t instanceof di?t.toString():JSON.stringify(t)}class bi{constructor(t,e){this.type=t,this.value=e;}static parse(t,e){if(2!==t.length)return e.error(`'literal' expression requires exactly one argument, but found ${t.length-1} instead.`);if(!yi(t[1]))return e.error("invalid value");const r=t[1];let n=gi(r);const i=e.expectedType;return "array"!==n.kind||0!==n.N||!i||"array"!==i.kind||"number"==typeof i.N&&0!==i.N||(n=i),new bi(n,r)}evaluate(){return this.value}eachChild(){}outputDefined(){return !0}serialize(){return "array"===this.type.kind||"object"===this.type.kind?["literal",this.value]:this.value instanceof jn?["rgba"].concat(this.value.toArray()):this.value instanceof fi?this.value.serialize():this.value}}class vi{constructor(t){this.name="ExpressionEvaluationError",this.message=t;}toJSON(){return this.message}}const _i={string:Wn,number:Kn,boolean:Hn,object:ti};class wi{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");let r,n=1;const i=t[0];if("array"===i){let i,s;if(t.length>2){const r=t[1];if("string"!=typeof r||!(r in _i)||"object"===r)return e.error('The item type argument of "array" must be one of string, number, boolean',1);i=_i[r],n++;}else i=ei;if(t.length>3){if(null!==t[2]&&("number"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to "array" must be a positive integer literal',2);s=t[2],n++;}r=si(i,s);}else r=_i[i];const s=[];for(;n<t.length;n++){const r=e.parse(t[n],n,ei);if(!r)return null;s.push(r);}return new wi(r,s)}evaluate(t){for(let e=0;e<this.args.length;e++){const r=this.args[e].evaluate(t);if(!li(this.type,gi(r)))return r;if(e===this.args.length-1)throw new vi(`Expected value to be of type ${ai(this.type)}, but found ${ai(gi(r))} instead.`)}return null}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}serialize(){const t=this.type,e=[t.kind];if("array"===t.kind){const r=t.itemType;if("string"===r.kind||"number"===r.kind||"boolean"===r.kind){e.push(r.kind);const n=t.N;("number"==typeof n||this.args.length>1)&&e.push(n);}}return e.concat(this.args.map((t=>t.serialize())))}}class Mi{constructor(t){this.type=ni,this.sections=t;}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");const r=t[1];if(!Array.isArray(r)&&"object"==typeof r)return e.error("First argument must be an image or text section.");const n=[];let i=!1;for(let r=1;r<=t.length-1;++r){const s=t[r];if(i&&"object"==t
gitextract_l1shv65q/
├── .gitignore
├── .npmrc
├── CHANGES.md
├── LICENSE
├── README.md
├── bin/
│ └── dem2terrain.js
├── config.template.json
├── index.js
├── package.json
├── src/
│ ├── createtile.js
│ ├── dem-encode.js
│ ├── gdal-util.js
│ ├── index.js
│ ├── mbtiles-util.js
│ ├── progressbar/
│ │ ├── format.js
│ │ └── index.js
│ ├── tile-util.js
│ ├── util.js
│ └── workfarm/
│ ├── child/
│ │ └── index.js
│ ├── farm.js
│ ├── fork.js
│ └── index.js
└── test/
├── app.js
├── mapbox-gl.css
├── mapbox-gl.js
├── maplibre/
│ ├── maplibre-gl.css
│ └── maplibre-gl.js
├── terrain_mapbox.html
└── test.tif
Showing preview only (913K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (6754 symbols across 15 files)
FILE: src/createtile.js
function forEachHeightBuffer (line 10) | function forEachHeightBuffer(heightBuffer, encode) {
function writeTerrainTile (line 32) | function writeTerrainTile(overviewInfo, readinfo, writeinfo, encoding) {
function createTile (line 88) | function createTile(createInfo, callback) {
function closeDataset (line 114) | function closeDataset(callback) {
FILE: src/dem-encode.js
function mapboxEncode (line 6) | function mapboxEncode(height) {
function mapboxDecode (line 19) | function mapboxDecode(color) {
function terrariumEncode (line 29) | function terrariumEncode(height) {
function terrariumDecode (line 42) | function terrariumDecode(color) {
function cesiumEncode (line 52) | function cesiumEncode(height) {
function cesiumDecode (line 60) | function cesiumDecode(pixel) {
FILE: src/gdal-util.js
function getBuildOverviewResampling (line 3) | function getBuildOverviewResampling(resampling) {
function getResampling (line 24) | function getResampling(resampling) {
function getDriverByName (line 51) | function getDriverByName(driverName) {
function reprojectImage (line 71) | function reprojectImage(src_ds, reproject_path, t_epsg, resampling = 1) {
FILE: src/index.js
function recycle (line 70) | function recycle() {
function main (line 176) | async function main(input, output, options) {
function geoQuery (line 391) | function geoQuery(overviewInfo, ulx, uly, lrx, lry, querysize = 0) {
function getYtile (line 443) | function getYtile(ty, tz, tms2xyz = true) {
function importMbtiles (line 456) | function importMbtiles(tileDir, mbtilesPath) {
FILE: src/mbtiles-util.js
function mb_open (line 4) | function mb_open(mbpath, mode) {
function mb_stop_writing (line 20) | function mb_stop_writing(mbtiles) {
function mb_put_tile (line 30) | function mb_put_tile(mbtiles, z, x, y, tile_path, isUnlink = true) {
FILE: src/progressbar/format.js
function format (line 7) | function format(str, params = []) {
FILE: src/progressbar/index.js
class ProgressBar (line 14) | class ProgressBar {
method constructor (line 15) | constructor(
method setTaskTotal (line 31) | setTaskTotal(value) {
method render (line 39) | render(completed) {
FILE: src/tile-util.js
function ST_TileEnvelope (line 28) | function ST_TileEnvelope(z, x, y, offset = 0, bbox = tileBoundMap.get(38...
function getTileByCoors (line 60) | function getTileByCoors(coor, zoom, bbox = tileBoundMap.get(3857)) {
FILE: src/util.js
function wait (line 15) | function wait(ms) {
function mkdirsSync (line 47) | function mkdirsSync(dirName) {
function emptyDir (line 63) | function emptyDir(fold) {
FILE: src/workfarm/child/index.js
function handle (line 13) | function handle (data) {
FILE: src/workfarm/farm.js
constant DEFAULT_OPTIONS (line 3) | const DEFAULT_OPTIONS = {
function Farm (line 22) | function Farm (options, path) {
FILE: src/workfarm/fork.js
function fork (line 7) | function fork (forkModule, workerOptions) {
FILE: src/workfarm/index.js
function farm (line 8) | function farm (options, path, methods) {
function end (line 25) | function end (api, callback) {
FILE: test/mapbox-gl.js
function define (line 13) | function define(_, chunk) {
method API_URL_REGEX (line 31) | get API_URL_REGEX(){if(null==r){const t=/^((https?:)?\/\/)?([^\/]+\.)?ma...
method API_TILEJSON_REGEX (line 31) | get API_TILEJSON_REGEX(){return /^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(...
method API_SPRITE_REGEX (line 31) | get API_SPRITE_REGEX(){return /^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|...
method API_FONTS_REGEX (line 31) | get API_FONTS_REGEX(){return /^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|o...
method API_STYLE_REGEX (line 31) | get API_STYLE_REGEX(){return /^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|o...
method API_CDN_URL_REGEX (line 31) | get API_CDN_URL_REGEX(){return /^((https?:)?\/\/)?api\.mapbox\.c(n|om)(\...
method EVENTS_URL (line 31) | get EVENTS_URL(){if(!n.API_URL)return null;try{const t=new URL(n.API_URL...
function i (line 31) | function i(t){return n.API_URL_REGEX.test(t)}
function s (line 31) | function s(t){return 0===t.indexOf("mapbox:")}
function a (line 31) | function a(t){return n.API_CDN_URL_REGEX.test(t)}
method constructor (line 43) | constructor(t){this.tileID=new e.ap(t.tileID.overscaledZ,t.tileID.wrap...
method parse (line 43) | parse(t,s,i,o,r){this.status="parsing",this.data=t,this.collisionBoxAr...
function o (line 31) | function o(t){return n.API_SPRITE_REGEX.test(t)}
method constructor (line 43) | constructor(e){this.keyCache={},this._layers={},this._layerConfigs={},...
method replace (line 43) | replace(e,t){this._layerConfigs={},this._layers={},this.update(e,[],t);}
method update (line 43) | update(t,s,o){this._options=o;for(const s of t)this._layerConfigs[s.id...
function l (line 31) | function l(t){return n.API_STYLE_REGEX.test(t)&&!o(t)}
function c (line 31) | function c(t){const e=t.name.split("?")[0];return a(e)&&e.includes("mapb...
method loadTile (line 43) | loadTile(t,s){const{uid:i,encoding:o,rawImageData:r,padding:n}=t,a=Ima...
method getImageData (line 43) | getImageData(e,t){this.offscreenCanvas&&this.offscreenCanvasContext||(...
function h (line 31) | function h(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.ca...
method constructor (line 43) | constructor(t,s,i,o,r,n){super(),this.actor=t,this.layerIndex=s,this.a...
method loadTile (line 43) | loadTile(s,i){const o=s.uid,r=s&&s.request,n=r&&r.collectResourceTimin...
method reloadTile (line 43) | reloadTile(t,s){const i=this.loaded,o=t.uid,r=this;if(i&&i[o]){const n...
method abortTile (line 43) | abortTile(e,t){const s=e.uid,i=this.loading[s];i&&(i.abort&&i.abort(),...
method removeTile (line 43) | removeTile(e,t){const s=this.loaded,i=e.uid;s&&s[i]&&delete s[i],t();}
function b (line 31) | function b(t){return b="function"==typeof Symbol&&"symbol"==typeof Symbo...
function _ (line 31) | function _(t){if("function"!=typeof WeakMap)return null;var e=new WeakMa...
function w (line 31) | function w(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=r[0],l=r[1],u=r[2],c...
method constructor (line 45) | constructor(){super(),this.images={},this.updatedImages={},this.callba...
method createScope (line 45) | createScope(t){this.images[t]={},this.loaded[t]=!1,this.updatedImages[...
method isLoaded (line 45) | isLoaded(){for(const e in this.loaded)if(!this.loaded[e])return !1;ret...
method setLoaded (line 45) | setLoaded(e,t){if(this.loaded[t]!==e&&(this.loaded[t]=e,e)){for(const{...
method hasImage (line 45) | hasImage(e,t){return !!this.getImage(e,t)}
method getImage (line 45) | getImage(e,t){return this.images[t][e]}
method addImage (line 45) | addImage(e,t,i){this._validate(e,i)&&(this.images[t][e]=i);}
method _validate (line 45) | _validate(t,i){let o=!0;return this._validateStretch(i.stretchX,i.data...
method _validateStretch (line 45) | _validateStretch(e,t){if(!e)return !0;let i=0;for(const o of e){if(o[0...
method _validateContent (line 45) | _validateContent(e,t){return !(e&&(4!==e.length||e[0]<0||t.data.width<...
method updateImage (line 45) | updateImage(e,t,i){i.version=this.images[t][e].version+1,this.images[t...
method removeImage (line 45) | removeImage(e,t){const i=this.images[t][e];delete this.images[t][e],de...
method listImages (line 45) | listImages(e){return Object.keys(this.images[e])}
method getImages (line 45) | getImages(e,t,i){let o=!0;const r=!!this.loaded[t];if(!r)for(const i o...
method getUpdatedImages (line 45) | getUpdatedImages(e){return this.updatedImages[e]}
method _notify (line 45) | _notify(t,i,o){const r={};for(const o of t){this.images[i][o]||this.fi...
method getPixelSize (line 45) | getPixelSize(e){const{width:t,height:i}=this.atlasImage[e];return {wid...
method getPattern (line 45) | getPattern(t,i){const o=this.patterns[i][t],r=this.getImage(t,i);if(!r...
method bind (line 45) | bind(t,i){const o=t.gl;let r=this.atlasTexture[i];r?this.dirty&&(r.upd...
method _updatePatternAtlas (line 45) | _updatePatternAtlas(t){const i=[];for(const e in this.patterns[t])i.pu...
method beginFrame (line 45) | beginFrame(){for(const e in this.images)this.callbackDispatchedThisFra...
method dispatchRenderCallbacks (line 45) | dispatchRenderCallbacks(e,t){for(const i of e){if(this.callbackDispatc...
function M (line 31) | function M(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[...
function S (line 31) | function S(t){return S="function"==typeof Symbol&&"symbol"==typeof Symbo...
function k (line 31) | function k(t){if("function"!=typeof WeakMap)return null;var e=new WeakMa...
function P (line 31) | function P(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],l=e[5],u=r[0],c...
function E (line 31) | function E(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[...
method constructor (line 43) | constructor(e){this.options=Object.assign(Object.create(j),e),this.tre...
method load (line 43) | load(e){const{log:t,minZoom:s,maxZoom:i}=this.options;t&&console.time(...
method getClusters (line 43) | getClusters(e,t){let s=((e[0]+180)%360+360)%360-180;const i=Math.max(-...
method getChildren (line 43) | getChildren(e){const t=this._getOriginId(e),s=this._getOriginZoom(e),i...
method getLeaves (line 43) | getLeaves(e,t,s){const i=[];return this._appendLeaves(i,e,t=t||10,s=s|...
method getTile (line 43) | getTile(e,t,s){const i=this.trees[this._limitZoom(e)],o=Math.pow(2,e),...
method getClusterExpansionZoom (line 43) | getClusterExpansionZoom(e){let t=this._getOriginZoom(e)-1;for(;t<=this...
method _appendLeaves (line 43) | _appendLeaves(e,t,s,i,o){const r=this.getChildren(t);for(const t of r)...
method _createTree (line 43) | _createTree(t){const s=new e.bj(t.length/this.stride|0,this.options.no...
method _addTileFeatures (line 43) | _addTileFeatures(e,t,s,i,o,r){for(const n of e){const e=n*this.stride,...
method _limitZoom (line 43) | _limitZoom(e){return Math.max(this.options.minZoom,Math.min(Math.floor...
method _cluster (line 43) | _cluster(e,t){const{radius:s,extent:i,reduce:o,minPoints:r}=this.optio...
method _getOriginId (line 43) | _getOriginId(e){return e-this.points.length>>5}
method _getOriginZoom (line 43) | _getOriginZoom(e){return (e-this.points.length)%32}
method _map (line 43) | _map(e,t,s){if(e[t+A]>1){const i=this.clusterProps[e[t+N]];return s?Ob...
function T (line 31) | function T(t){return T="function"==typeof Symbol&&"symbol"==typeof Symbo...
function C (line 31) | function C(t){if("function"!=typeof WeakMap)return null;var e=new WeakMa...
function R (line 31) | function R(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],l=e[5],u=e[6],c...
function V (line 31) | function V(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[...
method constructor (line 43) | constructor(e,t,s,i,o,r){super(e,t,s,i,X,r),o&&(this.loadGeoJSON=o),th...
method loadData (line 43) | loadData(s,i){const o=s&&s.request,r=o&&o.collectResourceTiming;this.l...
method reloadTile (line 43) | reloadTile(e,t){const s=this.loaded;return s&&s[e.uid]?super.reloadTil...
method loadGeoJSON (line 43) | loadGeoJSON(t,s){if(t.request)e.g(t.request,s);else {if("string"!=type...
method getClusterExpansionZoom (line 43) | getClusterExpansionZoom(e,t){try{t(null,this._geoJSONIndex.getClusterE...
method getClusterChildren (line 43) | getClusterChildren(e,t){try{t(null,this._geoJSONIndex.getChildren(e.cl...
method getClusterLeaves (line 43) | getClusterLeaves(e,t){try{t(null,this._geoJSONIndex.getLeaves(e.cluste...
function L (line 31) | function L(t){return L="function"==typeof Symbol&&"symbol"==typeof Symbo...
function O (line 31) | function O(t){if("function"!=typeof WeakMap)return null;var e=new WeakMa...
function U (line 31) | function U(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[...
method constructor (line 43) | constructor(e,t,s,i,o,r){this.actor=e,this.layerIndex=t,this.brightnes...
method loadTile (line 43) | loadTile(t,s){const i=t.uid,o=this.loading[i]=new $(t,this.brightness)...
method reloadTile (line 43) | reloadTile(e,t){const s=this.loaded,i=e.uid;if(s&&s[i]){const o=s[i];o...
method abortTile (line 43) | abortTile(e,t){const s=e.uid;this.loading[s]&&delete this.loading[s],t...
method removeTile (line 43) | removeTile(e,t){const s=this.loaded,i=e.uid;s&&s[i]&&delete s[i],t();}
function N (line 31) | function N(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],l=e[5],u=e[6],c...
function j (line 31) | function j(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=n+n,l=i+i,u=s+s,c=n*...
function q (line 31) | function q(t,e){var r=e[4],n=e[5],i=e[6],s=e[8],a=e[9],o=e[10];return t[...
method constructor (line 43) | constructor(t){this.self=t,this.actor=new e.d$(t,this),this.layerIndex...
method clearCaches (line 43) | clearCaches(e,t,s){delete this.layerIndexes[e],delete this.availableIm...
method checkIfReady (line 43) | checkIfReady(e,t,s){s();}
method setReferrer (line 43) | setReferrer(e,t){this.referrer=t;}
method spriteLoaded (line 43) | spriteLoaded(t,{scope:s,isLoaded:i}){if(this.isSpriteLoaded[t]||(this....
method setImages (line 43) | setImages(e,{scope:t,images:s},i){if(this.availableImages[e]||(this.av...
method setProjection (line 43) | setProjection(t,s){this.projections[t]=e.br(s);}
method setBrightness (line 43) | setBrightness(e,t,s){this.brightness=t,s();}
method setLayers (line 43) | setLayers(e,t,s){this.getLayerIndex(e,t.scope).replace(t.layers,t.opti...
method updateLayers (line 43) | updateLayers(e,t,s){this.getLayerIndex(e,t.scope).update(t.layers,t.re...
method loadTile (line 43) | loadTile(e,t,s){t.projection=this.projections[e]||this.defaultProjecti...
method loadDEMTile (line 43) | loadDEMTile(e,t,s){this.getDEMWorkerSource(e,t.source,t.scope).loadTil...
method decodeRasterArray (line 43) | decodeRasterArray(e,t,s){this.getRasterArrayWorkerSource().decodeRaste...
method reloadTile (line 43) | reloadTile(e,t,s){t.projection=this.projections[e]||this.defaultProjec...
method abortTile (line 43) | abortTile(e,t,s){this.getWorkerSource(e,t.type,t.source,t.scope).abort...
method removeTile (line 43) | removeTile(e,t,s){this.getWorkerSource(e,t.type,t.source,t.scope).remo...
method removeSource (line 43) | removeSource(e,t,s){if(!(this.workerSources[e]&&this.workerSources[e][...
method loadWorkerSource (line 43) | loadWorkerSource(e,t,s){try{this.self.importScripts(t.url),s();}catch(...
method syncRTLPluginState (line 43) | syncRTLPluginState(t,s,i){try{e.e0.setState(s);const t=e.e0.getPluginU...
method setDracoUrl (line 43) | setDracoUrl(e,t){this.dracoUrl=t;}
method getAvailableImages (line 43) | getAvailableImages(e,t){this.availableImages[e]||(this.availableImages...
method getLayerIndex (line 43) | getLayerIndex(e,t){this.layerIndexes[e]||(this.layerIndexes[e]={});let...
method getWorkerSource (line 43) | getWorkerSource(e,t,s,i){if(this.workerSources[e]||(this.workerSources...
method getDEMWorkerSource (line 43) | getDEMWorkerSource(e,t,s){return this.demWorkerSources[e]||(this.demWo...
method getRasterArrayWorkerSource (line 43) | getRasterArrayWorkerSource(){return this.rasterArrayWorkerSource||(thi...
method enforceCacheSizeLimit (line 43) | enforceCacheSizeLimit(t,s){e.e1(s);}
method getWorkerPerformanceMetrics (line 43) | getWorkerPerformanceMetrics(e,t,s){s(void 0,void 0);}
function $ (line 31) | function $(t,e,r,n,i){var s,a=1/Math.tan(e/2);return t[0]=a/r,t[1]=0,t[2...
method constructor (line 43) | constructor(t,s){this.tileID=new e.ap(t.tileID.overscaledZ,t.tileID.wr...
method parse (line 43) | parse(t,s,i,o){this.status="parsing";const r=new e.ap(i.tileID.oversca...
function G (line 31) | function G(t,e,r,n,i,s,a){var o=1/(e-r),l=1/(n-i),u=1/(s-a);return t[0]=...
function Q (line 31) | function Q(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[...
function Z (line 31) | function Z(t){return Z="function"==typeof Symbol&&"symbol"==typeof Symbo...
function W (line 31) | function W(t){if("function"!=typeof WeakMap)return null;var e=new WeakMa...
function H (line 31) | function H(){var t=new K.ARRAY_TYPE(3);return K.ARRAY_TYPE!=Float32Array...
function J (line 31) | function J(t){return Math.hypot(t[0],t[1],t[2])}
function tt (line 31) | function tt(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}
method getDefault (line 45) | getDefault(){return !1}
method set (line 45) | set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.ena...
function et (line 31) | function et(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t}
method getDefault (line 45) | getDefault(){return this.gl.LESS}
method set (line 45) | set(e){(e!==this.current||this.dirty)&&(this.gl.depthFunc(e),this.curr...
function rt (line 31) | function rt(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t}
method getDefault (line 45) | getDefault(){return this.gl.FUNC_ADD}
method set (line 45) | set(e){(e!==this.current||this.dirty)&&(this.gl.blendEquationSeparate(...
function nt (line 31) | function nt(t,e){return Math.hypot(e[0]-t[0],e[1]-t[1],e[2]-t[2])}
method getDefault (line 45) | getDefault(){return this.gl.BACK}
method set (line 45) | set(e){(e!==this.current||this.dirty)&&(this.gl.cullFace(e),this.curre...
function it (line 31) | function it(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2];return r*r+n*n+...
method getDefault (line 45) | getDefault(){const e=this.gl;return [e.ONE,e.ZERO,e.ONE,e.ZERO]}
method set (line 45) | set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||e[...
function st (line 31) | function st(t){var e=t[0],r=t[1],n=t[2];return e*e+r*r+n*n}
method getDefault (line 45) | getDefault(){return !1}
method set (line 45) | set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.ena...
function at (line 31) | function at(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}
method getDefault (line 45) | getDefault(){return this.gl.CCW}
method set (line 45) | set(e){(e!==this.current||this.dirty)&&(this.gl.frontFace(e),this.curr...
function ct (line 31) | function ct(t){return ct="function"==typeof Symbol&&"symbol"==typeof Sym...
method getDefault (line 45) | getDefault(){return this.gl.TEXTURE0}
method set (line 45) | set(e){(e!==this.current||this.dirty)&&(this.gl.activeTexture(e),this....
function pt (line 31) | function pt(t){if("function"!=typeof WeakMap)return null;var e=new WeakM...
method getDefault (line 45) | getDefault(){return null}
method set (line 45) | set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindB...
function ft (line 31) | function ft(){var t=new ht.ARRAY_TYPE(4);return ht.ARRAY_TYPE!=Float32Ar...
method getDefault (line 45) | getDefault(){return null}
method set (line 45) | set(e){const t=this.gl;t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,e),this.cur...
function dt (line 31) | function dt(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t...
method getDefault (line 45) | getDefault(){return null}
method set (line 45) | set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindR...
function mt (line 31) | function mt(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t...
method getDefault (line 45) | getDefault(){return null}
method set (line 45) | set(e){this.gl&&(e!==this.current||this.dirty)&&(this.gl.bindVertexArr...
function yt (line 31) | function yt(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t...
method constructor (line 45) | constructor(e,t){super(e),this.context=e,this.parent=t;}
method getDefault (line 45) | getDefault(){return null}
function gt (line 31) | function gt(t,e){return Math.hypot(e[0]-t[0],e[1]-t[1],e[2]-t[2],e[3]-t[...
method getDefault (line 45) | getDefault(){return 4}
method set (line 45) | set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixel...
function xt (line 31) | function xt(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2],s=e[3]-t[3];ret...
method getDefault (line 45) | getDefault(){return !1}
method set (line 45) | set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixel...
function bt (line 31) | function bt(t){return Math.hypot(t[0],t[1],t[2],t[3])}
method setDirty (line 45) | setDirty(){this.dirty=!0;}
method set (line 45) | set(e){if(e===this.current&&!this.dirty)return;this.context.bindFrameb...
function vt (line 31) | function vt(t){var e=t[0],r=t[1],n=t[2],i=t[3];return e*e+r*r+n*n+i*i}
method getDefault (line 45) | getDefault(){return !1}
method set (line 45) | set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixel...
function wt (line 31) | function wt(t){return wt="function"==typeof Symbol&&"symbol"==typeof Sym...
method attachment (line 45) | attachment(){return this.gl.DEPTH_ATTACHMENT}
method set (line 45) | set(e){if(e===this.current&&!this.dirty)return;this.context.bindFrameb...
function kt (line 31) | function kt(t){if("function"!=typeof WeakMap)return null;var e=new WeakM...
function Pt (line 31) | function Pt(t,e){if(t&&t.__esModule)return t;if(null===t||"object"!==wt(...
function Et (line 31) | function Et(){var t=new Mt.ARRAY_TYPE(4);return Mt.ARRAY_TYPE!=Float32Ar...
method attachment (line 45) | attachment(){return this.gl.DEPTH_STENCIL_ATTACHMENT}
function zt (line 31) | function zt(t,e,r){r*=.5;var n=Math.sin(r);return t[0]=n*e[0],t[1]=n*e[1...
method constructor (line 45) | constructor(e,t){this.gl=e,this.clearColor=new Ve(this),this.clearDept...
method setDefault (line 45) | setDefault(){this.unbindVAO(),this.clearColor.setDefault(),this.clearD...
method setDirty (line 45) | setDirty(){this.clearColor.dirty=!0,this.clearDepth.dirty=!0,this.clea...
method createIndexBuffer (line 45) | createIndexBuffer(e,t,i){return new Ne(this,e,t,i)}
method createVertexBuffer (line 45) | createVertexBuffer(e,t,i,o,r){return new Ge(this,e,t,i,o,r)}
method createRenderbuffer (line 45) | createRenderbuffer(e,t,i){const o=this.gl,r=o.createRenderbuffer();ret...
method createFramebuffer (line 45) | createFramebuffer(e,t,i,o){return new St(this,e,t,i,o)}
method clear (line 45) | clear({color:e,depth:t,stencil:i,colorMask:o}){const r=this.gl;let s=0...
method setCullFace (line 45) | setCullFace(e){!1===e.enable?this.cullFace.set(!1):(this.cullFace.set(...
method setDepthMode (line 45) | setDepthMode(e){e.func!==this.gl.ALWAYS||e.mask?(this.depthTest.set(!0...
method setStencilMode (line 45) | setStencilMode(e){e.test.func!==this.gl.ALWAYS||e.mask?(this.stencilTe...
method setColorMode (line 45) | setColorMode(e){t(e.blendFunction,At.Replace)?this.blend.set(!1):(this...
method unbindVAO (line 45) | unbindVAO(){this.bindVertexArrayOES.set(null);}
function Tt (line 31) | function Tt(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=r[0],l=r[1],u=r[2],...
method attachment (line 45) | attachment(){return this.gl.DEPTH_ATTACHMENT}
method set (line 45) | set(e){if(e===this.current&&!this.dirty)return;this.context.bindFrameb...
function Bt (line 31) | function Bt(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=Math.sqrt(r*r+n*n+i*i...
method constructor (line 45) | constructor(t,i,o,r){const s={width:o[0],height:o[1],data:null},n=t.gl...
method setParticleTextureDimension (line 45) | setParticleTextureDimension(t,i){if(this.particleTextureDimension===i)...
method update (line 45) | update(t){return !(this.lastInvalidatedAt<t&&(this.lastInvalidatedAt=e...
method destroy (line 45) | destroy(){this.targetColorTexture.destroy(),this.backgroundColorTextur...
function Ct (line 31) | function Ct(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=Math.sqrt(r*r+n*n+i*i...
method constructor (line 45) | constructor(e,t,i){this.func=e,this.mask=t,this.range=i;}
function Rt (line 31) | function Rt(t,e,r,n){var i,s,a,o,l,u=e[0],c=e[1],h=e[2],p=e[3],f=r[0],d=...
function Vt (line 31) | function Vt(t,e){var r,n=e[0]+e[4]+e[8];if(n>0)r=Math.sqrt(n+1),t[3]=.5*...
function Wt (line 31) | function Wt(t){return Wt="function"==typeof Symbol&&"symbol"==typeof Sym...
function ee (line 31) | function ee(t){if("function"!=typeof WeakMap)return null;var e=new WeakM...
function re (line 31) | function re(t,e){if(t&&t.__esModule)return t;if(null===t||"object"!==Wt(...
function ne (line 31) | function ne(t,e,r){var n=.5*r[0],i=.5*r[1],s=.5*r[2],a=e[0],o=e[1],l=e[2...
function ie (line 31) | function ie(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4...
function se (line 31) | function se(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=r[4],l=r[5],u=r[6],...
function ce (line 31) | function ce(t){return ce="function"==typeof Symbol&&"symbol"==typeof Sym...
function pe (line 31) | function pe(t){if("function"!=typeof WeakMap)return null;var e=new WeakM...
function fe (line 31) | function fe(){var t=new he.ARRAY_TYPE(2);return he.ARRAY_TYPE!=Float32Ar...
function de (line 31) | function de(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t}
function me (line 31) | function me(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t}
function ye (line 31) | function ye(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t}
method constructor (line 45) | constructor(t,i,o,r){super(),this.scope=o,this._options=t,this.propert...
method updateConfig (line 45) | updateConfig(e){this._transitionable.setTransitionOrValue(this._option...
method updateTransitions (line 45) | updateTransitions(e){this._transitioning=this._transitionable.transiti...
method hasTransition (line 45) | hasTransition(){return this._transitioning.hasTransition()}
method recalculate (line 45) | recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e);}
method get (line 45) | get(){return this._options.properties=this._transitionable.serialize()...
method set (line 45) | set(e,t){this._options=e,this._transitionable.setTransitionOrValue(e.p...
method shadowsEnabled (line 45) | shadowsEnabled(){return !!this.properties&&!0===this.properties.get("c...
function ge (line 31) | function ge(t,e){return Math.hypot(e[0]-t[0],e[1]-t[1])}
function xe (line 31) | function xe(t,e){var r=e[0]-t[0],n=e[1]-t[1];return r*r+n*n}
method constructor (line 45) | constructor(t,i,o,r){super(),this._transitionable=new e.L(ve,o,new Map...
method state (line 45) | get state(){const t=this._transform,i="globe"===t.projection.name,o=e....
method get (line 45) | get(){return this._transitionable.serialize()}
method set (line 45) | set(t,i,o={}){if(this._validate(K,t,o))return;const r=e.e({},t);for(co...
method getOpacity (line 45) | getOpacity(t){if(!this._transform.projection.supportsFog)return 0;cons...
method getOpacityAtLatLng (line 45) | getOpacityAtLatLng(t,i){return this._transform.projection.supportsFog?...
method getOpacityForTile (line 45) | getOpacityForTile(t){if(!this._transform.projection.supportsFog)return...
method getOpacityForBounds (line 45) | getOpacityForBounds(e,t,i,o,r){return this._transform.projection.suppo...
method getFovAdjustedRange (line 45) | getFovAdjustedRange(e){return this._transform.projection.supportsFog?f...
method isVisibleOnFrustum (line 45) | isVisibleOnFrustum(t){if(!this._transform.projection.supportsFog)retur...
method updateConfig (line 45) | updateConfig(e){this._transitionable.setTransitionOrValue(this._option...
method updateTransitions (line 45) | updateTransitions(e){this._transitioning=this._transitionable.transiti...
method hasTransition (line 45) | hasTransition(){return this._transitioning.hasTransition()}
method recalculate (line 45) | recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e);}
method _validate (line 45) | _validate(t,i,o){return (!o||!1!==o.validate)&&ne(this,t.call(Q,e.e({v...
function be (line 31) | function be(t){return Math.hypot(t[0],t[1])}
function ve (line 31) | function ve(t){var e=t[0],r=t[1];return e*e+r*r}
function we (line 31) | function we(t){return we="function"==typeof Symbol&&"symbol"==typeof Sym...
function Ce (line 31) | function Ce(t){if("function"!=typeof WeakMap)return null;var e=new WeakM...
function Re (line 31) | function Re(t,e){if(t&&t.__esModule)return t;if(null===t||"object"!==we(...
method constructor (line 45) | constructor(t,i,o,r){if(super(),this.id=t,this.dispatcher=o,this.type=...
method load (line 45) | load(t){this._loaded=!1,this.fire(new e.b("dataloading",{dataType:"sou...
method loaded (line 45) | loaded(){return this._loaded}
method hasTile (line 45) | hasTile(e){return !this.tileBounds||this.tileBounds.contains(e.canonic...
method onAdd (line 45) | onAdd(e){this.map=e,this.load();}
method reload (line 45) | reload(){this.cancelTileJSONRequest();const t=e.aj(this.id,this.scope)...
method setTiles (line 45) | setTiles(e){return this._options.tiles=e,this.reload(),this}
method setUrl (line 45) | setUrl(e){return this.url=e,this._options.url=e,this.reload(),this}
method onRemove (line 45) | onRemove(){this.cancelTileJSONRequest();}
method serialize (line 45) | serialize(){return e.e({},this._options)}
method loadTile (line 45) | loadTile(t,i){const o=this.map._requestManager.normalizeTileURL(t.tile...
method abortTile (line 45) | abortTile(e){e.request&&(e.request.cancel(),delete e.request),e.actor&...
method unloadTile (line 45) | unloadTile(e){e.actor&&e.actor.send("removeTile",{uid:e.uid,type:this....
method hasTransition (line 45) | hasTransition(){return !1}
method afterUpdate (line 45) | afterUpdate(){this._tileWorkers={};}
method cancelTileJSONRequest (line 45) | cancelTileJSONRequest(){this._tileJSONRequest&&(this._tileJSONRequest....
function De (line 31) | function De(t,e,r,n){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this....
method constructor (line 45) | constructor(t,i,o){this.bounds=e.ag.convert(this.validateBounds(t)),th...
method validateBounds (line 45) | validateBounds(e){return Array.isArray(e)&&4===e.length?[Math.max(-180...
method contains (line 45) | contains(t){const i=Math.pow(2,t.z),o=Math.floor(e.a8(this.bounds.getW...
function Oe (line 31) | function Oe(t,e){this.x=t,this.y=e;}
function qe (line 31) | function qe(t){return t*Ne}
method getDefault (line 45) | getDefault(){return !0}
method set (line 45) | set(e){(e!==this.current||this.dirty)&&(this.gl.depthMask(e),this.curr...
function $e (line 31) | function $e(t){return t*je}
method getDefault (line 45) | getDefault(){return {func:this.gl.ALWAYS,ref:0,mask:255}}
method set (line 45) | set(e){const t=this.current;(e.func!==t.func||e.ref!==t.ref||e.mask!==...
function Qe (line 31) | function Qe(t){if(t<=0)return 0;if(t>=1)return 1;const e=t*t,r=e*t;retur...
method getDefault (line 45) | getDefault(){return 255}
method set (line 45) | set(e){(e!==this.current||this.dirty)&&(this.gl.stencilMask(e),this.cu...
function Ye (line 31) | function Ye(t,e,r,n){const i=new Le(t,e,r,n);return function(t){return i...
method getDefault (line 45) | getDefault(){return !1}
method set (line 45) | set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.ena...
function Ze (line 31) | function Ze(t,e,r){return Math.min(r,Math.max(e,t))}
method getDefault (line 45) | getDefault(){return 1}
method set (line 45) | set(e){(e!==this.current||this.dirty)&&(this.gl.clearDepth(e),this.cur...
function Ke (line 31) | function Ke(t,e,r){return (r=Ze((r-t)/(e-t),0,1))*r*(3-2*r)}
method getDefault (line 45) | getDefault(){return !1}
method set (line 45) | set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.ena...
function We (line 31) | function We(t,e,r){const n=r-e,i=((t-e)%n+n)%n+e;return i===e?r:i}
method getDefault (line 45) | getDefault(){return 0}
method set (line 45) | set(e){(e!==this.current||this.dirty)&&(this.gl.clearStencil(e),this.c...
function He (line 31) | function He(t,e,r){if(!t.length)return r(null,[]);let n=t.length;const i...
method getDefault (line 45) | getDefault(){return [!0,!0,!0,!0]}
method set (line 45) | set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||e[...
function Je (line 31) | function Je(t,...e){for(const r of e)for(const e in r)t[e]=r[e];return t}
method getDefault (line 45) | getDefault(){return [0,1]}
method set (line 45) | set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||this.dirty)&&(t...
function er (line 31) | function er(){return tr++}
function rr (line 31) | function rr(){return function t(e){return e?(e^Math.random()*(16>>e/4))....
function nr (line 31) | function nr(t){return t<=1?1:Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))}
function ir (line 31) | function ir(t){return !!t&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89a...
function sr (line 31) | function sr(t,e){t.forEach((t=>{e[t]&&(e[t]=e[t].bind(e));}));}
function ar (line 31) | function ar(t,e){return -1!==t.indexOf(e,t.length-e.length)}
function or (line 31) | function or(t,e,r){const n={};for(const r in t)n[r]=e.call(this,t[r],r,t...
function lr (line 31) | function lr(t,e,r){const n={};for(const r in t)e.call(this,t[r],r,t)&&(n...
function ur (line 31) | function ur(t){return Array.isArray(t)?t.map(ur):"object"==typeof t&&t?o...
method constructor (line 45) | constructor(t){const i={type:"raster-dem",maxzoom:t.transform.maxZoom}...
method _loadTile (line 45) | _loadTile(e,t){e.state="loaded",t(null);}
function hr (line 31) | function hr(t){cr[t]||("undefined"!=typeof console&&console.warn(t),cr[t...
function pr (line 31) | function pr(t,e,r){return (r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}
method constructor (line 45) | constructor(t,i){super(),this._debugParams={sortTilesHiZFirst:!0,disab...
method style (line 45) | set style(e){e.on("data",this._onStyleDataEvent.bind(this)),this._styl...
method update (line 45) | update(t,i,o){if(t&&t.terrain){this._style!==t&&(this.style=t,this._ev...
method calculateExaggeration (line 45) | calculateExaggeration(t){const i=this._previousCameraAltitude,o=t.getF...
method resetTileLookupCache (line 45) | resetTileLookupCache(e){this._findCoveringTileCache[e]={};}
method getScaledDemTileSize (line 45) | getScaledDemTileSize(){return this.sourceCache.getSource().tileSize/12...
method _onStyleDataEvent (line 45) | _onStyleDataEvent(e){e.coord&&"source"===e.dataType?this._clearRenderC...
method _disable (line 45) | _disable(){if(this.enabled&&(this.enabled=!1,this._sharedDepthStencil=...
method destroy (line 45) | destroy(){this._disable(),this._emptyDEMTexture&&this._emptyDEMTexture...
method _source (line 45) | _source(){return this.enabled?this.sourceCache:null}
method isUsingMockSource (line 45) | isUsingMockSource(){return this.sourceCache===this._mockSourceCache}
method exaggeration (line 45) | exaggeration(){return this._exaggeration}
method visibleDemTiles (line 45) | get visibleDemTiles(){return this._visibleDemTiles}
method drapeBufferSize (line 45) | get drapeBufferSize(){const e=2*this.proxySourceCache.getSource().tile...
method useVertexMorphing (line 45) | set useVertexMorphing(e){this._useVertexMorphing=e;}
method updateTileBinding (line 45) | updateTileBinding(t){if(!this.enabled)return;this.prevTerrainTileForTi...
method _assignTerrainTiles (line 45) | _assignTerrainTiles(e){this._initializing||e.forEach((e=>{if(this.terr...
method _prepareDEMTextures (line 45) | _prepareDEMTextures(){const e=this.painter.context,t=e.gl;for(const i ...
method _prepareDemTileUniforms (line 45) | _prepareDemTileUniforms(e,t,i,o){if(!t||null==t.demTexture)return !1;c...
method emptyDEMTexture (line 45) | get emptyDEMTexture(){return !this._emptyDEMTextureDirty&&this._emptyD...
method emptyDepthBufferTexture (line 45) | get emptyDepthBufferTexture(){const t=this.painter.context,i=t.gl;if(!...
method _getLoadedAreaMinimum (line 45) | _getLoadedAreaMinimum(){let e=0;const t=this._visibleDemTiles.reduce((...
method _updateEmptyDEMTexture (line 45) | _updateEmptyDEMTexture(){const t=this.painter.context,i=t.gl;t.activeT...
method setupElevationDraw (line 45) | setupElevationDraw(t,i,o){const r=this.painter.context,s=r.gl,n={u_dem...
method globeUniformValues (line 45) | globeUniformValues(t,i,o){const r=t.projection;return {u_tile_tl_up:r....
method renderToBackBuffer (line 45) | renderToBackBuffer(t){const i=this.painter,o=this.painter.context;0!==...
method renderBatch (line 45) | renderBatch(t){if(0===this._drapedRenderBatches.length)return t+1;this...
method postRender (line 45) | postRender(){}
method isLayerOrderingCorrect (line 45) | isLayerOrderingCorrect(e){const t=e.order.length;let i=-1,o=t;for(let ...
method getMinElevationBelowMSL (line 45) | getMinElevationBelowMSL(){let e=0;return this._visibleDemTiles.filter(...
method raycast (line 45) | raycast(e,t,i){if(!this._visibleDemTiles)return null;const o=this._vis...
method _createFBO (line 45) | _createFBO(){const t=this.painter.context,i=t.gl,o=this.drapeBufferSiz...
method _initFBOPool (line 45) | _initFBOPool(){for(;this.pool.length<Math.min(5,this.proxyCoords.lengt...
method _shouldDisableRenderCache (line 45) | _shouldDisableRenderCache(){if(this._debugParams.disableRenderCache)re...
method _clearLineLayersFromRenderCache (line 45) | _clearLineLayersFromRenderCache(){let t=!1;for(const e of this._style....
method _clearRasterLayersFromRenderCache (line 45) | _clearRasterLayersFromRenderCache(){let e=!1;for(const t in this._styl...
method _setupDrapedRenderBatches (line 45) | _setupDrapedRenderBatches(){const t=this._style.order,i=t.length;if(0=...
method _setupRenderCache (line 45) | _setupRenderCache(e){const t=this.proxySourceCache;if(this._shouldDisa...
method _setupStencil (line 45) | _setupStencil(e,t,i,o){if(!o||!this._sourceTilesOverlap[o.id])return v...
method clipOrMaskOverlapStencilType (line 45) | clipOrMaskOverlapStencilType(){return "Clip"===this._overlapStencilTyp...
method stencilModeForRTTOverlap (line 45) | stencilModeForRTTOverlap(e){return this.renderingToTexture&&this._over...
method _renderTileClippingMasks (line 45) | _renderTileClippingMasks(e,t){const i=this.painter,o=this.painter.cont...
method pointCoordinate (line 45) | pointCoordinate(t){const i=this.painter.transform;if(t.x<0||t.x>i.widt...
method drawDepth (line 45) | drawDepth(){const t=this.painter,i=t.context,o=this.proxySourceCache,r...
method _setupProxiedCoordsForOrtho (line 45) | _setupProxiedCoordsForOrtho(t,i,o){if(t.getSource()instanceof e.as)ret...
method _setupProxiedCoordsForImageSource (line 45) | _setupProxiedCoordsForImageSource(t,i,o){if(!t.getSource().loaded())re...
method _createProxiedId (line 45) | _createProxiedId(t,i,o){let r=this.orthoMatrix;if(o){const e=o.find((e...
method _findTileCoveringTileID (line 45) | _findTileCoveringTileID(t,i){let o=i.getTile(t);if(o&&o.hasData())retu...
method findDEMTileFor (line 45) | findDEMTileFor(e){return this.enabled?this._findTileCoveringTileID(e,t...
method prepareDrawTile (line 45) | prepareDrawTile(){this.renderedToTile=!0;}
method _clearRenderCacheForTile (line 45) | _clearRenderCacheForTile(e,t){let i=this._tilesDirty[e];i||(i=this._ti...
function fr (line 31) | function fr(t){let e=0;for(let r,n,i=0,s=t.length,a=s-1;i<s;a=i++)r=t[i]...
function dr (line 31) | function dr([t,e,r]){const n=qe(e+90),i=qe(r);return {x:t*Math.cos(n)*Ma...
method constructor (line 45) | constructor(t){const i=Gt("proxy",{type:"geojson",maxzoom:t.transform....
method update (line 45) | update(e,t,i){if(e.freezeTileCoverage)return;this.transform=e;const o=...
method freeFBO (line 45) | freeFBO(e){const t=this.proxyCachedFBO[e];if(void 0!==t){const i=Objec...
method deallocRenderCache (line 45) | deallocRenderCache(){this.renderCache.forEach((e=>e.fb.destroy())),thi...
function mr (line 31) | function mr(){return "undefined"!=typeof WorkerGlobalScope&&"undefined"!...
function yr (line 31) | function yr(t){const e={};if(t.replace(/(?:^|(?:\s*\,\s*))([^\x00-\x20\(...
function Ar (line 31) | function Ar(t){try{const e=self[t];return e.setItem("_mapbox_test_",1),e...
function Sr (line 31) | function Sr(t,e){return [t[4*e],t[4*e+1],t[4*e+2],t[4*e+3]]}
function Ir (line 31) | function Ir(t,e,r,n){for(;e<r;){const i=e+r>>1;t[i]<n?e=i+1:r=i;}return e}
function kr (line 31) | function kr(t,e,r,n){for(;e<r;){const i=e+r>>1;t[i]<=n?e=i+1:r=i;}return e}
function Pr (line 31) | function Pr(t){return t>0?1/(1.001-t):1+t}
function Er (line 31) | function Er(t){return t>0?1-1/(1.001-t):-t}
function zr (line 31) | function zr(){return null==gr&&(gr=self.OffscreenCanvas&&new OffscreenCa...
method setNow (line 31) | setNow(t){vr=t;}
method restoreNow (line 31) | restoreNow(){vr=void 0;}
method frame (line 31) | frame(t){const e=requestAnimationFrame(t);return {cancel:()=>cancelAnima...
method getImageData (line 31) | getImageData(t,e=0){const{width:r,height:n}=t;_r||(_r=document.createEle...
method devicePixelRatio (line 31) | get devicePixelRatio(){return window.devicePixelRatio}
method prefersReducedMotion (line 31) | get prefersReducedMotion(){return !!window.matchMedia&&(null==br&&(br=wi...
method hasCanvasFingerprintNoise (line 31) | hasCanvasFingerprintNoise(){if(void 0!==wr)return wr;if(!zr())return wr=...
function Br (line 31) | function Br(t,e){const r=t.indexOf("?");if(r<0)return `${t}?${new URLSea...
function Cr (line 31) | function Cr(t,e={persistentParams:[]}){const r=t.indexOf("?");if(r<0)ret...
function Or (line 31) | function Or(){try{return caches}catch(t){}}
function Ur (line 31) | function Ur(){const t=Or();t&&!Lr&&(Lr=t.open(Rr));}
function Xr (line 31) | function Xr(t){const e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e);t...
class Kr (line 31) | class Kr extends Error{constructor(t,e,r){401===e&&i(r)&&(t+=": you may ...
method constructor (line 31) | constructor(t,e,r){401===e&&i(r)&&(t+=": you may have provided an inva...
method toString (line 31) | toString(){return `${this.name}: ${this.message} (${this.status}): ${t...
function tn (line 31) | function tn(t){const e=document.createElement("a");return e.href=t,e.pro...
method cancel (line 31) | cancel(){this.cancelled=!0;}
function un (line 31) | function un(t){const e=t.match(ln);if(!e)throw new Error("Unable to pars...
method preventDefault (line 45) | preventDefault(){this._defaultPrevented=!0;}
method defaultPrevented (line 45) | get defaultPrevented(){return this._defaultPrevented}
method constructor (line 45) | constructor(t,i,o){const r="touchend"===t?o.changedTouches:o.touches,s...
function cn (line 31) | function cn(t){const e=t.params.length?`?${t.params.join("&")}`:"";retur...
function pn (line 31) | function pn(t){if(!t)return null;const e=t.split(".");if(!e||3!==e.lengt...
method constructor (line 45) | constructor(e){this._map=e;}
method reset (line 45) | reset(){this._delayContextMenu=!1,this._contextMenuEvent=void 0;}
method mousemove (line 45) | mousemove(e){this._map.fire(new hn(e.type,this._map,e));}
method mousedown (line 45) | mousedown(){this._delayContextMenu=!0;}
method mouseup (line 45) | mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map...
method contextmenu (line 45) | contextmenu(e){this._delayContextMenu?this._contextMenuEvent=e:this._m...
method isEnabled (line 45) | isEnabled(){return !0}
method isActive (line 45) | isActive(){return !1}
method enable (line 45) | enable(){}
method disable (line 45) | disable(){}
class fn (line 31) | class fn{constructor(t){this.type=t,this.anonId=null,this.eventData={},t...
method constructor (line 31) | constructor(t){this.type=t,this.anonId=null,this.eventData={},this.que...
method getStorageKey (line 31) | getStorageKey(t){const e=pn(n.ACCESS_TOKEN);let r="";return r=e&&e.u?b...
method fetchEventData (line 31) | fetchEventData(){const t=Ar("localStorage"),e=this.getStorageKey(),r=t...
method saveEventData (line 31) | saveEventData(){const t=Ar("localStorage"),e=this.getStorageKey(),r=th...
method processRequests (line 31) | processRequests(t){}
method postEvent (line 31) | postEvent(t,e,r,i){if(!n.EVENTS_URL)return;const s=un(n.EVENTS_URL);s....
method queueRequest (line 31) | queueRequest(t,e){this.queue.push(t),this.processRequests(e);}
method constructor (line 45) | constructor(e,t){this._map=e,this._el=e.getCanvasContainer(),this._con...
method isEnabled (line 45) | isEnabled(){return !!this._enabled}
method isActive (line 45) | isActive(){return !!this._active}
method enable (line 45) | enable(){this.isEnabled()||(this._enabled=!0);}
method disable (line 45) | disable(){this.isEnabled()&&(this._enabled=!1);}
method mousedown (line 45) | mousedown(e,t){this.isEnabled()&&e.shiftKey&&0===e.button&&(h(),this._...
method mousemoveWindow (line 45) | mousemoveWindow(e,t){if(!this._active)return;const i=t,o=this._startPo...
method mouseupWindow (line 45) | mouseupWindow(t,i){if(!this._active)return;const o=this._startPos,r=i;...
method keydown (line 45) | keydown(e){this._active&&27===e.keyCode&&(this.reset(),this._fireEvent...
method blur (line 45) | blur(){this.reset();}
method reset (line 45) | reset(){this._active=!1,this._container.classList.remove("mapboxgl-cro...
method _fireEvent (line 45) | _fireEvent(t,i){return this._map.fire(new e.b(t,{originalEvent:i}))}
method constructor (line 31) | constructor(t){super("appUserTurnstile"),this._customAccessToken=t;}
method postTurnstileEvent (line 31) | postTurnstileEvent(t,e){n.EVENTS_URL&&n.ACCESS_TOKEN&&Array.isArray(t)&&...
method processRequests (line 31) | processRequests(t){if(this.pendingRequest||0===this.queue.length)return;...
method constructor (line 31) | constructor(){super("map.load"),this.success={},this.skuToken="";}
method postMapLoadEvent (line 31) | postMapLoadEvent(t,e,r,i){this.skuToken=e,this.errorCb=i,n.EVENTS_URL&&(...
method processRequests (line 31) | processRequests(t){if(this.pendingRequest||0===this.queue.length)return;...
method remove (line 31) | remove(){this.errorCb=null;}
method constructor (line 31) | constructor(){super("style.load"),this.eventIdPerMapInstanceMap=new Map,...
method getMapInstanceId (line 31) | getMapInstanceId(t){let e=this.mapInstanceIdMap.get(t);return e||(e=rr()...
method getEventId (line 31) | getEventId(t){const e=this.eventIdPerMapInstanceMap.get(t)||0;return thi...
method postStyleLoadEvent (line 31) | postStyleLoadEvent(t,e){const{map:r,style:i,importedStyles:s}=e;if(!n.EV...
method processRequests (line 31) | processRequests(t){if(this.pendingRequest||0===this.queue.length)return;...
method constructor (line 31) | constructor(){super("gljs.performance");}
method postPerformanceEvent (line 31) | postPerformanceEvent(t,e){n.EVENTS_URL&&(t||n.ACCESS_TOKEN)&&this.queueR...
method processRequests (line 31) | processRequests(t){if(this.pendingRequest||0===this.queue.length)return;...
method constructor (line 31) | constructor(){super("map.auth"),this.success={},this.skuToken="";}
method getSession (line 31) | getSession(t,e,r,i){if(!n.API_URL||!n.SESSION_PATH)return;const s=un(n.A...
method getSessionAPI (line 31) | getSessionAPI(t,e,r,i){this.skuToken=e,this.errorCb=i,n.SESSION_PATH&&n....
method processRequests (line 31) | processRequests(t){if(this.pendingRequest||0===this.queue.length)return;...
method remove (line 31) | remove(){this.errorCb=null;}
function Bn (line 31) | function Bn(t,e,r){r[t]&&-1!==r[t].indexOf(e)||(r[t]=r[t]||[],r[t].push(...
function Cn (line 31) | function Cn(t,e,r){if(r&&r[t]){const n=r[t].indexOf(e);-1!==n&&r[t].spli...
method constructor (line 45) | constructor(){this.reset();}
method reset (line 45) | reset(){this._active=!1,this._firstTwoTouches=void 0;}
method _start (line 45) | _start(e){}
method _move (line 45) | _move(e,t,i){return {}}
method touchstart (line 45) | touchstart(e,t,i){this._firstTwoTouches||i.length<2||(this._firstTwoTo...
method touchmove (line 45) | touchmove(e,t,i){const o=this._firstTwoTouches;if(!o)return;e.preventD...
method touchend (line 45) | touchend(e,t,i){if(!this._firstTwoTouches)return;const[o,r]=this._firs...
method touchcancel (line 45) | touchcancel(){this.reset();}
method enable (line 45) | enable(e){this._enabled=!0,this._aroundCenter=!!e&&"center"===e.around;}
method disable (line 45) | disable(){this._enabled=!1,this.reset();}
method isEnabled (line 45) | isEnabled(){return this._enabled}
method isActive (line 45) | isActive(){return this._active}
class Rn (line 31) | class Rn{constructor(t,e={}){Je(this,e),this.type=t;}}
method constructor (line 31) | constructor(t,e={}){Je(this,e),this.type=t;}
method reset (line 45) | reset(){super.reset(),this._distance=0,this._startDistance=0;}
method _start (line 45) | _start(e){this._startDistance=this._distance=e[0].dist(e[1]);}
method _move (line 45) | _move(e,t){const i=this._distance;if(this._distance=e[0].dist(e[1]),th...
class Vn (line 31) | class Vn extends Rn{constructor(t,e={}){super("error",Je({error:t},e));}}
method constructor (line 31) | constructor(t,e={}){super("error",Je({error:t},e));}
method constructor (line 45) | constructor(e,t,i){this._el=e,this._mousePan=t,this._touchPan=i;}
method enable (line 45) | enable(e){this._inertiaOptions=e||{},this._mousePan.enable(),this._tou...
method disable (line 45) | disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.c...
method isEnabled (line 45) | isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnable...
method isActive (line 45) | isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}
class Dn (line 31) | class Dn{on(t,e){return this._listeners=this._listeners||{},Bn(t,e,this....
method on (line 31) | on(t,e){return this._listeners=this._listeners||{},Bn(t,e,this._listen...
method off (line 31) | off(t,e){return Cn(t,e,this._listeners),Cn(t,e,this._oneTimeListeners)...
method once (line 31) | once(t,e){return e?(this._oneTimeListeners=this._oneTimeListeners||{},...
method fire (line 31) | fire(t,e){"string"==typeof t&&(t=new Rn(t,e||{}));const r=t.type;if(th...
method listens (line 31) | listens(t){return !!(this._listeners&&this._listeners[t]&&this._listen...
method setEventedParent (line 31) | setEventedParent(t,e){return this._eventedParent=t,this._eventedParent...
function Fn (line 31) | function Fn(t){return (t=Math.round(t))<0?0:t>255?255:t}
function On (line 31) | function On(t){return Fn("%"===t[t.length-1]?parseFloat(t)/100*255:parse...
method constructor (line 45) | constructor(){const e=zn;this._panStep=e.panStep,this._bearingStep=e.b...
method blur (line 45) | blur(){this.reset();}
method reset (line 45) | reset(){this._active=!1;}
method keydown (line 45) | keydown(e){if(e.altKey||e.ctrlKey||e.metaKey)return;let t=0,i=0,o=0,r=...
method enable (line 45) | enable(){this._enabled=!0;}
method disable (line 45) | disable(){this._enabled=!1,this.reset();}
method isEnabled (line 45) | isEnabled(){return this._enabled}
method isActive (line 45) | isActive(){return this._active}
method disableRotation (line 45) | disableRotation(){this._rotationDisabled=!0;}
method enableRotation (line 45) | enableRotation(){this._rotationDisabled=!1;}
function Un (line 31) | function Un(t){return (e="%"===t[t.length-1]?parseFloat(t)/100:parseFloa...
method constructor (line 45) | constructor(e,t){this._clickZoom=e,this._tapZoom=t;}
method enable (line 45) | enable(){this._clickZoom.enable(),this._tapZoom.enable();}
method disable (line 45) | disable(){this._clickZoom.disable(),this._tapZoom.disable();}
method isEnabled (line 45) | isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnable...
method isActive (line 45) | isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}
function Nn (line 31) | function Nn(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e...
method constructor (line 45) | constructor(t,i){this._map=t,this._el=t.getCanvasContainer(),this._han...
method setZoomRate (line 45) | setZoomRate(e){this._defaultZoomRate=e;}
method setWheelZoomRate (line 45) | setWheelZoomRate(e){this._wheelZoomRate=e;}
method isEnabled (line 45) | isEnabled(){return !!this._enabled}
method isActive (line 45) | isActive(){return this._active||void 0!==this._finishTimeout}
method isZooming (line 45) | isZooming(){return !!this._zooming}
method enable (line 45) | enable(e){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!e&&...
method disable (line 45) | disable(){this.isEnabled()&&(this._enabled=!1,this._map._cooperativeGe...
method wheel (line 45) | wheel(t){if(!this.isEnabled())return;if(this._map._cooperativeGestures...
method _onTimeout (line 45) | _onTimeout(e){this._type="wheel",this._delta-=this._lastValue,this._ac...
method _start (line 45) | _start(e){if(!this._delta)return;this._frameId&&(this._frameId=null),t...
method renderFrame (line 45) | renderFrame(){if(!this._frameId)return;if(this._frameId=null,!this.isA...
method _smoothOutEasing (line 45) | _smoothOutEasing(t){let i=e.d8;if(this._prevEase){const t=this._prevEa...
method blur (line 45) | blur(){this.reset();}
method reset (line 45) | reset(){this._active=!1;}
method _addScrollZoomBlocker (line 45) | _addScrollZoomBlocker(){this._map&&!this._alertContainer&&(this._alert...
method _showBlockerAlert (line 45) | _showBlockerAlert(){this._alertContainer.style.visibility="visible",th...
class jn (line 31) | class jn{constructor(t,e,r,n=1){this.r=t,this.g=e,this.b=r,this.a=n;}sta...
method constructor (line 31) | constructor(t,e,r,n=1){this.r=t,this.g=e,this.b=r,this.a=n;}
method parse (line 31) | static parse(e){if(!e)return;if(e instanceof jn)return e;if("string"!=...
method toString (line 31) | toString(){const[t,e,r,n]=this.toArray();return `rgba(${Math.round(t)}...
method toArray (line 31) | toArray(){const{r:t,g:e,b:r,a:n}=this;return 0===n?[0,0,0,0]:[255*t/n,...
method toArray01 (line 31) | toArray01(){const{r:t,g:e,b:r,a:n}=this;return 0===n?[0,0,0,0]:[t/n,e/...
method toArray01Scaled (line 31) | toArray01Scaled(t){const{r:e,g:r,b:n,a:i}=this;return 0===i?[0,0,0]:[e...
method toArray01PremultipliedAlpha (line 31) | toArray01PremultipliedAlpha(){const{r:t,g:e,b:r,a:n}=this;return [t,e,...
method toArray01Linear (line 31) | toArray01Linear(){const{r:t,g:e,b:r,a:n}=this;return 0===n?[0,0,0,0]:[...
method constructor (line 45) | constructor(){this._tap=new vn({numTouches:1,numTaps:1}),this.reset();}
method reset (line 45) | reset(){this._active=!1,this._swipePoint=void 0,this._swipeTouch=0,thi...
method touchstart (line 45) | touchstart(e,t,i){this._swipePoint||(this._tapTime&&e.timeStamp-this._...
method touchmove (line 45) | touchmove(e,t,i){if(this._tapTime){if(this._swipePoint){if(i[0].identi...
method touchend (line 45) | touchend(e,t,i){this._tapTime?this._swipePoint&&0===i.length&&this.res...
method touchcancel (line 45) | touchcancel(){this.reset();}
method enable (line 45) | enable(){this._enabled=!0;}
method disable (line 45) | disable(){this._enabled=!1,this.reset();}
method isEnabled (line 45) | isEnabled(){return this._enabled}
method isActive (line 45) | isActive(){return this._active}
function qn (line 31) | function qn(t,e,r){return t*(1-r)+e*r}
function $n (line 31) | function $n(t,e,r){return t.map(((t,n)=>qn(t,e[n],r)))}
function Qn (line 31) | function Qn(t,...e){for(const r of e)for(const e in r)t[e]=r[e];return t}
method constructor (line 45) | constructor(){this.constants=[1,1,.01],this.radius=0;}
method setup (line 45) | setup(t,i){const o=e.Q.sub([],i,t);this.radius=e.Q.length(o[2]<0?e.Q.d...
method projectRay (line 45) | projectRay(t){e.Q.div(t,t,this.constants),e.Q.normalize(t,t),e.Q.mul(t...
class Yn (line 31) | class Yn extends Error{constructor(t,e){super(e),this.message=e,this.key...
method constructor (line 31) | constructor(t,e){super(e),this.message=e,this.key=t;}
class Xn (line 31) | class Xn{constructor(t,e=[]){this.parent=t,this.bindings={};for(const[t,...
method constructor (line 31) | constructor(t,e=[]){this.parent=t,this.bindings={};for(const[t,r]of e)...
method concat (line 31) | concat(t){return new Xn(this,t)}
method get (line 31) | get(t){if(this.bindings[t])return this.bindings[t];if(this.parent)retu...
method has (line 31) | has(t){return !!this.bindings[t]||!!this.parent&&this.parent.has(t)}
method constructor (line 45) | constructor(t,i){this._map=t,this._el=this._map.getCanvasContainer(),t...
method destroy (line 45) | destroy(){for(const[e,t,i]of this._listeners){const o=e===document?thi...
method _addDefaultHandlers (line 45) | _addDefaultHandlers(e){const t=this._map,i=t.getCanvasContainer();this...
method _add (line 45) | _add(e,t,i){this._handlers.push({handlerName:e,handler:t,allowed:i}),t...
method stop (line 45) | stop(e){if(!this._updatingCamera){for(const{handler:e}of this._handler...
method isActive (line 45) | isActive(){for(const{handler:e}of this._handlers)if(e.isActive())retur...
method isZooming (line 45) | isZooming(){return !!this._eventsInProgress.zoom||this._map.scrollZoom...
method isRotating (line 45) | isRotating(){return !!this._eventsInProgress.rotate}
method isMoving (line 45) | isMoving(){return !!Hn(this._eventsInProgress)||this.isZooming()}
method _isDragging (line 45) | _isDragging(){return !!this._eventsInProgress.drag}
method _blockedByActive (line 45) | _blockedByActive(e,t,i){for(const o in e)if(o!==i&&(!t||t.indexOf(o)<0...
method handleWindowEvent (line 45) | handleWindowEvent(e){this.handleEvent(e,`${e.type}Window`);}
method _getMapTouches (line 45) | _getMapTouches(e){const t=[];for(const i of e)this._el.contains(i.targ...
method handleEvent (line 45) | handleEvent(e,t){this._updatingCamera=!0;const i="renderFrame"===e.typ...
method mergeHandlerResult (line 45) | mergeHandlerResult(t,i,o,r,s){if(!o)return;e.e(t,o);const n={handlerNa...
method _applyChanges (line 45) | _applyChanges(){const t={},i={},o={};for(const[r,s,n]of this._changes)...
method _updateMapTransform (line 45) | _updateMapTransform(t,i,o){const r=this._map,s=r.transform,n=e=>[e.x,e...
method _fireEvents (line 45) | _fireEvents(t,i,o){const r=Hn(this._eventsInProgress),s=Hn(t),n={};for...
method _fireEvent (line 45) | _fireEvent(t,i){this._map.fire(new e.b(t,i?{originalEvent:i}:{}));}
method _requestFrame (line 45) | _requestFrame(){return this._map.triggerRepaint(),this._map._renderTas...
method _triggerRenderFrame (line 45) | _triggerRenderFrame(){void 0===this._frameId&&(this._frameId=this._req...
function si (line 31) | function si(t,e){return {kind:"array",itemType:t,N:e}}
function ai (line 31) | function ai(t){if("array"===t.kind){const e=ai(t.itemType);return "numbe...
function li (line 31) | function li(t,e){if("error"===e.kind)return null;if("array"===t.kind){if...
function ui (line 31) | function ui(t,e){return e.some((e=>e.kind===t.kind))}
function ci (line 31) | function ci(t,e){return e.some((e=>"null"===e?null===t:"array"===e?Array...
method constructor (line 45) | constructor(e,t){this.reset(e,t);}
method reset (line 45) | reset(e,t){this.points=e||[],this._distances=[0];for(let e=1;e<this.po...
method lerp (line 45) | lerp(t){if(1===this.points.length)return this.points[0];t=e.ad(t,0,1);...
class hi (line 31) | class hi{constructor(t,e,r){this.sensitivity=t?e?"variant":"case":e?"acc...
method constructor (line 31) | constructor(t,e,r){this.sensitivity=t?e?"variant":"case":e?"accent":"b...
method compare (line 31) | compare(t,e){return this.collator.compare(t,e)}
method resolvedLocale (line 31) | resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[])....
method constructor (line 45) | constructor(e,t,i){const o=this.boxCells=[],r=this.circleCells=[];this...
method keysLength (line 45) | keysLength(){return this.boxKeys.length+this.circleKeys.length}
method insert (line 45) | insert(e,t,i,o,r){this._forEachCell(t,i,o,r,this._insertBoxCell,this.b...
method insertCircle (line 45) | insertCircle(e,t,i,o){this._forEachCell(t-o,i-o,t+o,i+o,this._insertCi...
method _insertBoxCell (line 45) | _insertBoxCell(e,t,i,o,r,s){this.boxCells[r].push(s);}
method _insertCircleCell (line 45) | _insertCircleCell(e,t,i,o,r,s){this.circleCells[r].push(s);}
method _query (line 45) | _query(e,t,i,o,r,s){if(i<0||e>this.width||o<0||t>this.height)return !r...
method _queryCircle (line 45) | _queryCircle(e,t,i,o,r){const s=e-i,n=e+i,a=t-i,l=t+i;if(n<0||s>this.w...
method query (line 45) | query(e,t,i,o,r){return this._query(e,t,i,o,!1,r)}
method hitTest (line 45) | hitTest(e,t,i,o,r){return this._query(e,t,i,o,!0,r)}
method hitTestCircle (line 45) | hitTestCircle(e,t,i,o){return this._queryCircle(e,t,i,!0,o)}
method _queryCell (line 45) | _queryCell(e,t,i,o,r,s,n,a){const l=n.seenUids,c=this.boxCells[r];if(n...
method _queryCellCircle (line 45) | _queryCellCircle(e,t,i,o,r,s,n,a){const l=n.circle,c=n.seenUids,h=this...
method _forEachCell (line 45) | _forEachCell(e,t,i,o,r,s,n,a){const l=this._convertToXCellCoord(e),c=t...
method _convertToXCellCoord (line 45) | _convertToXCellCoord(e){return Math.max(0,Math.min(this.xCellCount-1,M...
method _convertToYCellCoord (line 45) | _convertToYCellCoord(e){return Math.max(0,Math.min(this.yCellCount-1,M...
method _circlesCollide (line 45) | _circlesCollide(e,t,i,o,r,s){const n=o-e,a=r-t,l=i+s;return l*l>n*n+a*a}
method _circleAndRectCollide (line 45) | _circleAndRectCollide(e,t,i,o,r,s,n){const a=(s-o)/2,l=Math.abs(e-(o+a...
class pi (line 31) | class pi{constructor(t,e,r,n,i){this.text=t.normalize?t.normalize():t,th...
method constructor (line 31) | constructor(t,e,r,n,i){this.text=t.normalize?t.normalize():t,this.imag...
class fi (line 31) | class fi{constructor(t){this.sections=t;}static fromString(t){return new...
method constructor (line 31) | constructor(t){this.sections=t;}
method fromString (line 31) | static fromString(t){return new fi([new pi(t,null,null,null,null)])}
method isEmpty (line 31) | isEmpty(){return 0===this.sections.length||!this.sections.some((t=>0!=...
method factory (line 31) | static factory(t){return t instanceof fi?t:fi.fromString(t)}
method toString (line 31) | toString(){return 0===this.sections.length?"":this.sections.map((t=>t....
method serialize (line 31) | serialize(){const t=["format"];for(const e of this.sections){if(e.imag...
class di (line 31) | class di{constructor(t){this.namePrimary=t.namePrimary,t.nameSecondary&&...
method constructor (line 31) | constructor(t){this.namePrimary=t.namePrimary,t.nameSecondary&&(this.n...
method toString (line 31) | toString(){return this.nameSecondary?`[${this.namePrimary},${this.name...
method fromString (line 31) | static fromString(t,e){return t?new di({namePrimary:t,nameSecondary:e,...
method serialize (line 31) | serialize(){return this.nameSecondary?["image",this.namePrimary,this.n...
function mi (line 31) | function mi(t,e,r,n){return "number"==typeof t&&t>=0&&t<=255&&"number"==...
function yi (line 31) | function yi(t){if(null===t)return !0;if("string"==typeof t)return !0;if(...
function gi (line 31) | function gi(t){if(null===t)return Zn;if("string"==typeof t)return Wn;if(...
function xi (line 31) | function xi(t){const e=typeof t;return null===t?"":"string"===e||"number...
class bi (line 31) | class bi{constructor(t,e){this.type=t,this.value=e;}static parse(t,e){if...
method constructor (line 31) | constructor(t,e){this.type=t,this.value=e;}
method parse (line 31) | static parse(t,e){if(2!==t.length)return e.error(`'literal' expression...
method evaluate (line 31) | evaluate(){return this.value}
method eachChild (line 31) | eachChild(){}
method outputDefined (line 31) | outputDefined(){return !0}
method serialize (line 31) | serialize(){return "array"===this.type.kind||"object"===this.type.kind...
class vi (line 31) | class vi{constructor(t){this.name="ExpressionEvaluationError",this.messa...
method constructor (line 31) | constructor(t){this.name="ExpressionEvaluationError",this.message=t;}
method toJSON (line 31) | toJSON(){return this.message}
class wi (line 31) | class wi{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(...
method constructor (line 31) | constructor(t,e){this.type=t,this.args=e;}
method parse (line 31) | static parse(t,e){if(t.length<2)return e.error("Expected at least one ...
method evaluate (line 31) | evaluate(t){for(let e=0;e<this.args.length;e++){const r=this.args[e].e...
method eachChild (line 31) | eachChild(t){this.args.forEach(t);}
method outputDefined (line 31) | outputDefined(){return this.args.every((t=>t.outputDefined()))}
method serialize (line 31) | serialize(){const t=this.type,e=[t.kind];if("array"===t.kind){const r=...
class Mi (line 31) | class Mi{constructor(t){this.type=ni,this.sections=t;}static parse(t,e){...
method constructor (line 31) | constructor(t){this.type=ni,this.sections=t;}
method parse (line 31) | static parse(t,e){if(t.length<2)return e.error("Expected at least one ...
method evaluate (line 31) | evaluate(t){return new fi(this.sections.map((e=>{const r=e.content.eva...
method eachChild (line 31) | eachChild(t){for(const e of this.sections)t(e.content),e.scale&&t(e.sc...
method outputDefined (line 31) | outputDefined(){return !1}
method serialize (line 31) | serialize(){const t=["format"];for(const e of this.sections){t.push(e....
method constructor (line 45) | constructor(e,t,i,o){this.opacity=e?Math.max(0,Math.min(1,e.opacity+(e...
method isHidden (line 45) | isHidden(){return 0===this.opacity&&!this.placed}
class Ai (line 31) | class Ai{constructor(t,e){this.type=ii,this.inputPrimary=t,this.inputSec...
method constructor (line 31) | constructor(t,e){this.type=ii,this.inputPrimary=t,this.inputSecondary=e;}
method parse (line 31) | static parse(t,e){if(t.length<2)return e.error("Expected two or more a...
method evaluate (line 31) | evaluate(t){const e=di.fromString(this.inputPrimary.evaluate(t),this.i...
method eachChild (line 31) | eachChild(t){t(this.inputPrimary),this.inputSecondary&&t(this.inputSec...
method outputDefined (line 31) | outputDefined(){return !1}
method serialize (line 31) | serialize(){return this.inputSecondary?["image",this.inputPrimary.seri...
function Si (line 31) | function Si(t){return t instanceof Number?"number":t instanceof String?"...
class ki (line 31) | class ki{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(...
method constructor (line 31) | constructor(t,e){this.type=t,this.args=e;}
method parse (line 31) | static parse(t,e){if(t.length<2)return e.error("Expected at least one ...
method evaluate (line 31) | evaluate(t){if("boolean"===this.type.kind)return Boolean(this.args[0]....
method eachChild (line 31) | eachChild(t){this.args.forEach(t);}
method outputDefined (line 31) | outputDefined(){return this.args.every((t=>t.outputDefined()))}
method serialize (line 31) | serialize(){if("formatted"===this.type.kind)return new Mi([{content:th...
method constructor (line 45) | constructor(e){this.crossSourceCollisions=e,this.maxGroupID=0,this.col...
method get (line 45) | get(e){if(this.crossSourceCollisions)return {ID:0,predicate:null};if(!...
class Ei (line 31) | class Ei{constructor(t,e){this.globals=null,this.feature=null,this.featu...
method constructor (line 31) | constructor(t,e){this.globals=null,this.feature=null,this.featureState...
method id (line 31) | id(){return this.feature&&void 0!==this.feature.id?this.feature.id:null}
method geometryType (line 31) | geometryType(){return this.feature?"number"==typeof this.feature.type?...
method geometry (line 31) | geometry(){return this.feature&&"geometry"in this.feature?this.feature...
method canonicalID (line 31) | canonicalID(){return this.canonical}
method properties (line 31) | properties(){return this.feature&&this.feature.properties||{}}
method measureLight (line 31) | measureLight(t){return this.globals.brightness||0}
method distanceFromCenter (line 31) | distanceFromCenter(){if(this.featureTileCoord&&this.featureDistanceDat...
method parseColor (line 31) | parseColor(t){let e=this._parseColorCache[t];return e||(e=this._parseC...
method getConfig (line 31) | getConfig(t){return this.options?this.options.get(t):null}
class zi (line 31) | class zi{constructor(t,e,r,n,i){this.name=t,this.type=e,this._evaluate=r...
method constructor (line 31) | constructor(t,e,r,n,i){this.name=t,this.type=e,this._evaluate=r,this.a...
method evaluate (line 31) | evaluate(t){if(!this._evaluate){const t=zi.definitions[this.name];this...
method eachChild (line 31) | eachChild(t){this.args.forEach(t);}
method outputDefined (line 31) | outputDefined(){return !1}
method serialize (line 31) | serialize(){return [this.name].concat(this.args.map((t=>t.serialize())))}
method parse (line 31) | static parse(t,e){const r=t[0],n=zi.definitions[r];if(!n)return e.erro...
method register (line 31) | static register(t,e){zi.definitions=e;for(const r in e)t[r]=zi;}
method constructor (line 45) | constructor(e,t,i,o,r,s=!1){this.text=new Mi(e?e.text:null,t,i,r),this...
method isHidden (line 45) | isHidden(){return this.text.isHidden()&&this.icon.isHidden()}
function Ti (line 31) | function Ti(t){return Array.isArray(t)?`(${t.map(ai).join(", ")})`:`(${a...
class Bi (line 31) | class Bi{constructor(t,e,r){this.type=ri,this.locale=r,this.caseSensitiv...
method constructor (line 31) | constructor(t,e,r){this.type=ri,this.locale=r,this.caseSensitive=t,thi...
method parse (line 31) | static parse(t,e){if(2!==t.length)return e.error("Expected one argumen...
method evaluate (line 31) | evaluate(t){return new hi(this.caseSensitive.evaluate(t),this.diacriti...
method eachChild (line 31) | eachChild(t){t(this.caseSensitive),t(this.diacriticSensitive),this.loc...
method outputDefined (line 31) | outputDefined(){return !1}
method serialize (line 31) | serialize(){const t={};return t["case-sensitive"]=this.caseSensitive.s...
method constructor (line 45) | constructor(e,t,i,o,r){this.bucketInstanceId=e,this.featureIndex=t,thi...
function t (line 31) | function t(r,n,i,s,a){for(;s>i;){if(s-i>600){var o=s-i+1,l=n-i+1,u=Math....
function e (line 31) | function e(t,e,r){var n=t[e];t[e]=t[r],t[r]=n;}
function r (line 31) | function r(t,e){return t<e?-1:t>e?1:0}
function Vi (line 31) | function Vi(t){let e=0;for(let r,n,i=0,s=t.length,a=s-1;i<s;a=i++)r=t[i]...
function Di (line 31) | function Di(t,e){t[0]=Math.min(t[0],e[0]),t[1]=Math.min(t[1],e[1]),t[2]=...
function Li (line 31) | function Li(t,e){return !(t[0]<=e[0]||t[2]>=e[2]||t[1]<=e[1]||t[3]>=e[3])}
function Fi (line 31) | function Fi(t,e,r){const n=t[0]-e[0],i=t[1]-e[1],s=t[0]-r[0],a=t[1]-r[1]...
method constructor (line 45) | constructor(){this.invProjMatrix=e.a9.create(),this.viewportMatrix=e.a...
function Oi (line 31) | function Oi(t,e,r=!1){let n=!1;for(let o=0,l=e.length;o<l;o++){const l=e...
method constructor (line 45) | constructor(e,t,i,o=!1){this.text=e,this.icon=t,this.skipFade=i,this.c...
function Ui (line 31) | function Ui(t,e,r,n){const i=n[0]-r[0],s=n[1]-r[1],a=(t[0]-r[0])*s-i*(t[...
function Ni (line 31) | function Ni(t,e,r,n){return 0!=(i=[n[0]-r[0],n[1]-r[1]])[0]*(s=[e[0]-t[0...
function qi (line 31) | function qi(t,e){const r=(180+t[0])/360,n=(180-180/Math.PI*Math.log(Math...
function $i (line 31) | function $i(t,e){for(let r=0;r<e.length;r++)if(Oi(t,e[r]))return !0;retu...
function Gi (line 31) | function Gi(t,e,r){for(const n of r)for(let r=0,i=n.length,s=i-1;r<i;s=r...
method constructor (line 45) | constructor(e,t,i,o,r,s){this.transform=e.clone(),this.projection=e.pr...
method getBucketParts (line 45) | getBucketParts(t,i,o,r){const s=o.getBucket(i),n=o.latestFeatureIndex;...
method attemptAnchorPlacement (line 45) | attemptAnchorPlacement(e,t,i,o,r,s,n,a,l,c,h,u,d,_,p,f,m,g){const{text...
method placeLayerBucketPart (line 45) | placeLayerBucketPart(t,i,o,r){const{bucket:s,layout:n,posMatrix:a,text...
method markUsedJustification (line 45) | markUsedJustification(t,i,o,r){const{leftJustifiedTextSymbolIndex:s,ce...
method markUsedOrientation (line 45) | markUsedOrientation(t,i,o){const r=i===e.b9.horizontal||i===e.b9.horiz...
method commit (line 45) | commit(e){this.commitTime=e,this.zoomAtLastRecencyCheck=this.transform...
method updateLayerOpacities (line 45) | updateLayerOpacities(e,t){const i=new Set;for(const o of t){const t=o....
method updateBucketOpacities (line 45) | updateBucketOpacities(t,i,o){t.hasTextData()&&t.text.opacityVertexArra...
method symbolFadeChange (line 45) | symbolFadeChange(e){return 0===this.fadeDuration?1:(e-this.commitTime)...
method zoomAdjustment (line 45) | zoomAdjustment(e){return Math.max(0,(this.transform.zoom-e)/1.5)}
method hasTransitions (line 45) | hasTransitions(e){return this.stale||e-this.lastPlacementChangeTime<th...
method stillRecent (line 45) | stillRecent(e,t){const i=this.zoomAtLastRecencyCheck===t?1-this.zoomAd...
method setStale (line 45) | setStale(){this.stale=!0;}
function Qi (line 31) | function Qi(t,e){for(let r=0;r<t.length;++r)if(!Oi(t[r],e))return !1;for...
function Yi (line 31) | function Yi(t,e){for(let r=0;r<e.length;r++)if(Qi(t,e[r]))return !0;retu...
function Xi (line 31) | function Xi(t,e,r){const n=[];for(let i=0;i<t.length;i++){const s=[];for...
function Zi (line 31) | function Zi(t,e,r){const n=[];for(let i=0;i<t.length;i++){const s=Xi(t[i...
function Ki (line 31) | function Ki(t,e,r,n){if(t[0]<r[0]||t[0]>r[2]){const e=.5*n;let i=t[0]-r[...
method constructor (line 45) | constructor(e,t,i,o,r,s,n,a,l){this.placement=new Gi(e,r,s,n,a,l),this...
method isDone (line 45) | isDone(){return this._done}
method continuePlacement (line 45) | continuePlacement(t,i,o,r){const s=e.f.now(),n=()=>{const t=e.f.now()-...
method commit (line 45) | commit(e){return this.placement.commit(e),this.placement}
function Wi (line 31) | function Wi(t,e,r,n){const i=Math.pow(2,n.z)*ji,s=[n.x*ji,n.y*ji],a=[];i...
function Hi (line 31) | function Hi(t,e,r,n){const i=Math.pow(2,n.z)*ji,s=[n.x*ji,n.y*ji],a=[];i...
class Ji (line 31) | class Ji{constructor(t,e){this.type=Hn,this.geojson=t,this.geometries=e;...
method constructor (line 31) | constructor(t,e){this.type=Hn,this.geojson=t,this.geometries=e;}
method parse (line 31) | static parse(t,e){if(2!==t.length)return e.error(`'within' expression ...
method evaluate (line 31) | evaluate(t){if(null!=t.geometry()&&null!=t.canonicalID()){if("Point"==...
method eachChild (line 31) | eachChild(){}
method outputDefined (line 31) | outputDefined(){return !0}
method serialize (line 31) | serialize(){return ["within",this.geojson]}
method constructor (line 45) | constructor(e){this._sortAcrossTiles="viewport-y"!==e.layout.get("symb...
method continuePlacement (line 45) | continuePlacement(e,t,i,o,r){const s=this._bucketParts;for(;this._curr...
function a (line 31) | function a(t,e){return t[0]===e[0]&&t[1]===e[1]}
method constructor (line 43) | constructor(t){this.tileID=new e.ap(t.tileID.overscaledZ,t.tileID.wrap...
method parse (line 43) | parse(t,s,i,o,r){this.status="parsing",this.data=t,this.collisionBoxAr...
function o (line 31) | function o(t,e,r){var n=l(e[0]-t[0]);return [t[0]+n*r,t[1]+(e[1]-t[1])*r]}
method constructor (line 43) | constructor(e){this.keyCache={},this._layers={},this._layerConfigs={},...
method replace (line 43) | replace(e,t){this._layerConfigs={},this._layers={},this.update(e,[],t);}
method update (line 43) | update(t,s,o){this._options=o;for(const s of t)this._layerConfigs[s.id...
function l (line 31) | function l(t){for(;t<-180;)t+=360;for(;t>180;)t-=360;return t}
function e (line 31) | function e(t,e){return t<e?-1:t>e?1:0}
function ss (line 31) | function ss(t,e){return e.dist-t.dist}
function ls (line 31) | function ls(t){const e=[1/0,1/0,-1/0,-1/0];if(e.length!==t.length)return...
function us (line 31) | function us(t){return t[1]-t[0]+1}
function cs (line 31) | function cs(t,e){const r=t[1]>=t[0]&&t[1]<e;return r||console.warn("Dist...
function hs (line 31) | function hs(t,e){if(t[0]>t[1])return [null,null];const r=us(t);if(e){if(...
function ps (line 31) | function ps(t,e){const r=[1/0,1/0,-1/0,-1/0];if(!cs(e,t.length))return r...
function fs (line 31) | function fs(t){const e=[1/0,1/0,-1/0,-1/0];for(let r=0;r<t.length;++r)fo...
function ds (line 31) | function ds(t,e,r){if(ls(t)||ls(e))return NaN;let n=0,i=0;return t[2]<e[...
function ms (line 31) | function ms(t){return 360*t-180}
function ys (line 31) | function ys(t){return 360/Math.PI*Math.atan(Math.exp((180-360*t)*Math.PI...
function gs (line 31) | function gs(t,e){const r=Math.pow(2,e.z),n=(t.y/is+e.y)/r;return [ms((t....
function xs (line 31) | function xs(t,e){const r=[];for(let n=0;n<t.length;++n)r.push(gs(t[n],e)...
function bs (line 31) | function bs(t,e,r){const n=r.pointOnLine(e,t).point;return r.distance(t,n)}
function vs (line 31) | function vs(t,e,r,n,i){const s=r.slice(n[0],n[1]+1);let a=1/0;for(let r=...
function _s (line 31) | function _s(t,e,r,n,i){const s=Math.min(i.pointToSegmentDistance(t,r,n),...
function ws (line 31) | function ws(t,e,r,n,i){if(!cs(e,t.length)||!cs(n,r.length))return NaN;le...
function Ms (line 31) | function Ms(t,e,r,n,i){if(!cs(e,t.length)||!cs(n,r.length))return NaN;le...
function As (line 31) | function As(t,e,r){if(Oi(t,e,!0))return 0;let n=1/0;for(const i of e){co...
function Ss (line 31) | function Ss(t,e,r,n){if(!cs(e,t.length))return NaN;for(let n=e[0];n<=e[1...
function Is (line 31) | function Is(t,e){for(const r of t)for(let t=0;t<=r.length-1;++t)if(Oi(r[...
function ks (line 31) | function ks(t,e,r,n=1/0){const i=fs(t),s=fs(e);if(n!==1/0&&ds(i,s,r)>=n)...
function Ps (line 31) | function Ps(t,e,r,n,i,s,a){if(null===s||null===a)return;const o=ds(ps(n,...
function Es (line 31) | function Es(t,e,r,n,i=1/0){let s=Math.min(n.distance(t[0],r[0][0]),i);if...
function zs (line 31) | function zs(t,e,r,n,i,s=1/0){let a=Math.min(s,i.distance(t[0],r[0]));if(...
method constructor (line 45) | constructor(){this.starsCount=16e3,this.sizeMultiplier=.15,this.sizeRa...
function Ts (line 31) | function Ts(t,e,r,n,i=1/0){let s=i;const a=ps(t,[0,t.length-1]);for(cons...
function Bs (line 31) | function Bs(t,e,r,n,i=1/0){let s=i;const a=ps(t,[0,t.length-1]);for(cons...
function Cs (line 31) | function Cs(t){return "Point"===t||"MultiPoint"===t||"LineString"===t||"...
class Rs (line 31) | class Rs{constructor(t,e){this.type=Kn,this.geojson=t,this.geometries=e;...
method constructor (line 31) | constructor(t,e){this.type=Kn,this.geojson=t,this.geometries=e;}
method parse (line 31) | static parse(t,e){if(2!==t.length)return e.error(`'distance' expressio...
method evaluate (line 31) | evaluate(t){const e=t.geometry(),r=t.canonicalID();if(null!=e&&null!=r...
method eachChild (line 31) | eachChild(){}
method outputDefined (line 31) | outputDefined(){return !0}
method serialize (line 31) | serialize(){return ["distance",this.geojson]}
method constructor (line 45) | constructor(t){this.vertexArray=new e.cV,this.indices=new e.az,Ds(this...
function Vs (line 31) | function Vs(t,e){switch(t){case"string":return xi(e);case"number":return...
function Ds (line 31) | function Ds(t,e,r,n){return void 0!==n&&(t=n*Math.round(t/n)),void 0!==e...
class Ls (line 31) | class Ls{constructor(t,e,r){this.type=t,this.key=e,this.scope=r;}static ...
method constructor (line 31) | constructor(t,e,r){this.type=t,this.key=e,this.scope=r;}
method parse (line 31) | static parse(t,e){let r=e.expectedType;if(null==r&&(r=ei),t.length<2||...
method evaluate (line 31) | evaluate(t){const e=[this.key,this.scope,t.scope].filter(Boolean).join...
method eachChild (line 31) | eachChild(){}
method outputDefined (line 31) | outputDefined(){return !1}
method serialize (line 31) | serialize(){const t=["config",this.key];return this.scope&&t.concat(th...
method constructor (line 45) | constructor(t){const i=new e.cW;i.emplaceBack(-1,1,1,0,0),i.emplaceBac...
method destroy (line 45) | destroy(){this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this....
function Fs (line 31) | function Fs(t){if(t instanceof zi){if("get"===t.name&&1===t.args.length)...
function Os (line 31) | function Os(t){if(t instanceof zi&&"feature-state"===t.name)return !1;le...
method constructor (line 45) | constructor(t){this.colorModeAlphaBlendedWriteRGB=new At([1,Rt,1,Rt],e...
method update (line 45) | update(t){const i=t.context;if(!this.atmosphereBuffer||this.updateNeed...
method destroy (line 45) | destroy(){this.atmosphereBuffer&&this.atmosphereBuffer.destroy(),this....
method drawAtmosphereGlow (line 45) | drawAtmosphereGlow(t,i){const o=t.context,r=o.gl,s=t.transform,n=new C...
method drawStars (line 45) | drawStars(t,i){const o=e.ad(i.properties.get("star-intensity"),0,1);if...
function Us (line 31) | function Us(t){if(t instanceof Ls)return !1;let e=!0;return t.eachChild(...
function Ns (line 31) | function Ns(t,e){if(t instanceof zi&&e.indexOf(t.name)>=0)return !1;let ...
class js (line 31) | class js{constructor(t,e){this.type=e.type,this.name=t,this.boundExpress...
method constructor (line 31) | constructor(t,e){this.type=e.type,this.name=t,this.boundExpression=e;}
method parse (line 31) | static parse(t,e){if(2!==t.length||"string"!=typeof t[1])return e.erro...
method evaluate (line 31) | evaluate(t){return this.boundExpression.evaluate(t)}
method eachChild (line 31) | eachChild(){}
method outputDefined (line 31) | outputDefined(){return !1}
method serialize (line 31) | serialize(){return ["var",this.name]}
class qs (line 31) | class qs{constructor(t,e=[],r,n=new Xn,i=[],s,a){this.registry=t,this.pa...
method constructor (line 31) | constructor(t,e=[],r,n=new Xn,i=[],s,a){this.registry=t,this.path=e,th...
method parse (line 31) | parse(t,e,r,n,i={}){return e||r?this.concat(e,r,n)._parse(t,i):this._p...
method _parse (line 31) | _parse(t,e){function r(t,e,r){return "assert"===r?new wi(e,[t]):"coerc...
method concat (line 31) | concat(t,e,r){const n="number"==typeof t?this.path.concat(t):this.path...
method error (line 31) | error(t,...e){const r=`${this.key}${e.map((t=>`[${t}]`)).join("")}`;th...
method checkSubtype (line 31) | checkSubtype(t,e){const r=li(t,e);return r&&this.error(r),r}
function $s (line 31) | function $s(t){if(t instanceof js)return $s(t.boundExpression);if(t inst...
function Gs (line 31) | function Gs(t,e){const r=t.length-1;let n,i,s=0,a=r,o=0;for(;s<=a;)if(o=...
class Qs (line 31) | class Qs{constructor(t,e,r){this.type=t,this.input=e,this.labels=[],this...
method constructor (line 31) | constructor(t,e,r){this.type=t,this.input=e,this.labels=[],this.output...
method parse (line 31) | static parse(t,e){if(t.length-1<4)return e.error(`Expected at least 4 ...
method evaluate (line 31) | evaluate(t){const e=this.labels,r=this.outputs;if(1===e.length)return ...
method eachChild (line 31) | eachChild(t){t(this.input);for(const e of this.outputs)t(e);}
method outputDefined (line 31) | outputDefined(){return this.outputs.every((t=>t.outputDefined()))}
method serialize (line 31) | serialize(){const t=["step",this.input.serialize()];for(let e=0;e<this...
method constructor (line 45) | constructor(){this._storage=new Map;}
method getLinesFromTrianglesBuffer (line 45) | getLinesFromTrianglesBuffer(t,i,o){{const e=this._storage.get(i.id);if...
method update (line 45) | update(e){for(const[t,i]of this._storage)e-i.lastUsedFrameIdx>30&&(i.b...
method destroy (line 45) | destroy(){for(const[e,t]of this._storage)t.buf.destroy(),this._storage...
function ea (line 31) | function ea(t){return t>Hs?Math.pow(t,1/3):t/Ws+Zs}
method constructor (line 45) | constructor(){e.a$(["_updateLogo","_updateCompact"],this);}
method onAdd (line 45) | onAdd(e){this._map=e,this._container=s("div","mapboxgl-ctrl");const t=...
method onRemove (line 45) | onRemove(){this._container.remove(),this._map.off("sourcedata",this._u...
method getDefaultPosition (line 45) | getDefaultPosition(){return "bottom-left"}
method _updateLogo (line 45) | _updateLogo(e){e&&"metadata"!==e.sourceDataType||(this._container.styl...
method _logoRequired (line 45) | _logoRequired(){if(!this._map.style)return !0;const e=this._map.style....
method _updateCompact (line 45) | _updateCompact(){const e=this._container.children;if(e.length){const t...
function ra (line 31) | function ra(t){return t>Ks?t*t*t:Ws*(t-Zs)}
method constructor (line 45) | constructor(t,i){if(super(),(t instanceof HTMLElement||i)&&(t=e.e({ele...
method addTo (line 45) | addTo(e){return e===this._map||(this.remove(),this._map=e,e.getCanvasC...
method remove (line 45) | remove(){const e=this._map;return e&&(e.off("click",this._onMapClick),...
method getLngLat (line 45) | getLngLat(){return this._lngLat}
method setLngLat (line 45) | setLngLat(t){return this._lngLat=e.bq.convert(t),this._pos=null,this._...
method getElement (line 45) | getElement(){return this._element}
method setPopup (line 45) | setPopup(e){if(this._popup&&(this._popup.remove(),this._popup=null,thi...
method _onKeyPress (line 45) | _onKeyPress(e){const t=e.code,i=e.charCode||e.keyCode;"Space"!==t&&"En...
method _onMapClick (line 45) | _onMapClick(e){const t=e.originalEvent.target,i=this._element;this._po...
method getPopup (line 45) | getPopup(){return this._popup}
method togglePopup (line 45) | togglePopup(){const e=this._popup;return e?(e.isOpen()?(e.remove(),thi...
method _behindTerrain (line 45) | _behindTerrain(){const e=this._map,t=this._pos;if(!e||!t)return !1;con...
method _evaluateOpacity (line 45) | _evaluateOpacity(){const t=this._map;if(!t)return;const i=this._pos;if...
method _clearFadeTimer (line 45) | _clearFadeTimer(){this._fadeTimer&&(clearTimeout(this._fadeTimer),this...
method _updateDOM (line 45) | _updateDOM(){const e=this._pos;if(!e||!this._map)return;const t=this._...
method _calculateXYTransform (line 45) | _calculateXYTransform(){const t=this._pos,i=this._map,o=this.getPitchA...
method _calculateZTransform (line 45) | _calculateZTransform(){const t=this._pos,i=this._map;if(!i||!t)return ...
method _update (line 45) | _update(e){cancelAnimationFrame(this._updateFrameId);const t=this._map...
method getOffset (line 45) | getOffset(){return this._offset}
method setOffset (line 45) | setOffset(t){return this._offset=e.P.convert(t),this._update(),this}
method addClassName (line 45) | addClassName(e){return this._element.classList.add(e),this}
method removeClassName (line 45) | removeClassName(e){return this._element.classList.remove(e),this}
method toggleClassName (line 45) | toggleClassName(e){return this._element.classList.toggle(e)}
method _onMove (line 45) | _onMove(t){const i=this._map;if(!i)return;const o=this._pointerdownPos...
method _onUp (line 45) | _onUp(){this._element.style.pointerEvents="auto",this._positionDelta=n...
method _addDragHandler (line 45) | _addDragHandler(e){const t=this._map,i=this._pos;t&&i&&this._element.c...
method setDraggable (line 45) | setDraggable(e){this._draggable=!!e;const t=this._map;return t&&(e?(t....
method isDraggable (line 45) | isDraggable(){return this._draggable}
method setRotation (line 45) | setRotation(e){return this._rotation=e||0,this._update(),this}
method getRotation (line 45) | getRotation(){return this._rotation}
method setRotationAlignment (line 45) | setRotationAlignment(e){return this._rotationAlignment=e||"auto",this....
method getRotationAlignment (line 45) | getRotationAlignment(){return "auto"===this._rotationAlignment||"horiz...
method setPitchAlignment (line 45) | setPitchAlignment(e){return this._pitchAlignment=e||"auto",this._updat...
method getPitchAlignment (line 45) | getPitchAlignment(){return "auto"===this._pitchAlignment?this.getRotat...
method setOccludedOpacity (line 45) | setOccludedOpacity(e){return this._occludedOpacity=e||.2,this._update(...
method getOccludedOpacity (line 45) | getOccludedOpacity(){return this._occludedOpacity}
function na (line 31) | function na(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-....
function ia (line 31) | function ia(t){return (t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2...
function sa (line 31) | function sa(t){const e=ia(t.r),r=ia(t.g),n=ia(t.b),i=ea((.4124564*e+.357...
function aa (line 31) | function aa(t){let e=(t.l+16)/116,r=isNaN(t.a)?e:e+t.a/500,n=isNaN(t.b)?...
function oa (line 31) | function oa(t,e,r){const n=e-t;return t+r*(n>180||n<-180?n-360*Math.roun...
class ha (line 31) | class ha{constructor(t,e,r,n,i){this.type=t,this.operator=e,this.interpo...
method constructor (line 31) | constructor(t,e,r,n,i){this.type=t,this.operator=e,this.interpolation=...
method interpolationFactor (line 31) | static interpolationFactor(t,e,r,n){let i=0;if("exponential"===t.name)...
method parse (line 31) | static parse(t,e){let[r,n,i,...s]=t;if(!Array.isArray(n)||0===n.length...
method evaluate (line 31) | evaluate(t){const e=this.labels,r=this.outputs;if(1===e.length)return ...
method eachChild (line 31) | eachChild(t){t(this.input);for(const e of this.outputs)t(e);}
method outputDefined (line 31) | outputDefined(){return this.outputs.every((t=>t.outputDefined()))}
method serialize (line 31) | serialize(){let t;t="linear"===this.interpolation.name?["linear"]:"exp...
function pa (line 31) | function pa(t,e,r,n){const i=n-r,s=t-r;return 0===i?0:1===e?s/i:(Math.po...
class fa (line 31) | class fa{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(...
method constructor (line 31) | constructor(t,e){this.type=t,this.args=e;}
method parse (line 31) | static parse(t,e){if(t.length<2)return e.error("Expectected at least o...
method evaluate (line 31) | evaluate(t){let e,r=null,n=0;for(const i of this.args){if(n++,r=i.eval...
method eachChild (line 31) | eachChild(t){this.args.forEach(t);}
method outputDefined (line 31) | outputDefined(){return this.args.every((t=>t.outputDefined()))}
method serialize (line 31) | serialize(){const t=["coalesce"];return this.eachChild((e=>{t.push(e.s...
class da (line 31) | class da{constructor(t,e){this.type=e.type,this.bindings=[].concat(t),th...
method constructor (line 31) | constructor(t,e){this.type=e.type,this.bindings=[].concat(t),this.resu...
method evaluate (line 31) | evaluate(t){return this.result.evaluate(t)}
method eachChild (line 31) | eachChild(t){for(const e of this.bindings)t(e[1]);t(this.result);}
method parse (line 31) | static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 ar...
method outputDefined (line 31) | outputDefined(){return this.result.outputDefined()}
method serialize (line 31) | serialize(){const t=["let"];for(const[e,r]of this.bindings)t.push(e,r....
class ma (line 31) | class ma{constructor(t,e,r){this.type=t,this.index=e,this.input=r;}stati...
method constructor (line 31) | constructor(t,e,r){this.type=t,this.index=e,this.input=r;}
method parse (line 31) | static parse(t,e){if(3!==t.length)return e.error(`Expected 2 arguments...
method evaluate (line 31) | evaluate(t){const e=this.index.evaluate(t),r=this.input.evaluate(t);if...
method eachChild (line 31) | eachChild(t){t(this.index),t(this.input);}
method outputDefined (line 31) | outputDefined(){return !1}
method serialize (line 31) | serialize(){return ["at",this.index.serialize(),this.input.serialize()]}
class ya (line 31) | class ya{constructor(t,e){this.type=Hn,this.needle=t,this.haystack=e;}st...
method constructor (line 31) | constructor(t,e){this.type=Hn,this.needle=t,this.haystack=e;}
method parse (line 31) | static parse(t,e){if(3!==t.length)return e.error(`Expected 2 arguments...
method evaluate (line 31) | evaluate(t){const e=this.needle.evaluate(t),r=this.haystack.evaluate(t...
method eachChild (line 31) | eachChild(t){t(this.needle),t(this.haystack);}
method outputDefined (line 31) | outputDefined(){return !0}
method serialize (line 31) | serialize(){return ["in",this.needle.serialize(),this.haystack.seriali...
class ga (line 31) | class ga{constructor(t,e,r){this.type=Kn,this.needle=t,this.haystack=e,t...
method constructor (line 31) | constructor(t,e,r){this.type=Kn,this.needle=t,this.haystack=e,this.fro...
method parse (line 31) | static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected...
method evaluate (line 31) | evaluate(t){const e=this.needle.evaluate(t),r=this.haystack.evaluate(t...
method eachChild (line 31) | eachChild(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fr...
method outputDefined (line 31) | outputDefined(){return !1}
method serialize (line 31) | serialize(){if(null!=this.fromIndex&&void 0!==this.fromIndex){const t=...
class xa (line 31) | class xa{constructor(t,e,r,n,i,s){this.inputType=t,this.type=e,this.inpu...
method constructor (line 31) | constructor(t,e,r,n,i,s){this.inputType=t,this.type=e,this.input=r,thi...
method parse (line 31) | static parse(t,e){if(t.length<5)return e.error(`Expected at least 4 ar...
method evaluate (line 31) | evaluate(t){const e=this.input.evaluate(t);return (gi(e)===this.inputT...
method eachChild (line 31) | eachChild(t){t(this.input),this.outputs.forEach(t),t(this.otherwise);}
method outputDefined (line 31) | outputDefined(){return this.outputs.every((t=>t.outputDefined()))&&thi...
method serialize (line 31) | serialize(){const t=["match",this.input.serialize()],e=Object.keys(thi...
class ba (line 31) | class ba{constructor(t,e,r){this.type=t,this.branches=e,this.otherwise=r...
method constructor (line 31) | constructor(t,e,r){this.type=t,this.branches=e,this.otherwise=r;}
method parse (line 31) | static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 ar...
method evaluate (line 31) | evaluate(t){for(const[e,r]of this.branches)if(e.evaluate(t))return r.e...
method eachChild (line 31) | eachChild(t){for(const[e,r]of this.branches)t(e),t(r);t(this.otherwise);}
method outputDefined (line 31) | outputDefined(){return this.branches.every((([t,e])=>e.outputDefined()...
method serialize (line 31) | serialize(){const t=["case"];return this.eachChild((e=>{t.push(e.seria...
class va (line 31) | class va{constructor(t,e,r,n){this.type=t,this.input=e,this.beginIndex=r...
method constructor (line 31) | constructor(t,e,r,n){this.type=t,this.input=e,this.beginIndex=r,this.e...
method parse (line 31) | static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected...
method evaluate (line 31) | evaluate(t){const e=this.input.evaluate(t),r=this.beginIndex.evaluate(...
method eachChild (line 31) | eachChild(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.en...
method outputDefined (line 31) | outputDefined(){return !1}
method serialize (line 31) | serialize(){if(null!=this.endIndex&&void 0!==this.endIndex){const t=th...
function _a (line 31) | function _a(t,e){return "=="===t||"!="===t?"boolean"===e.kind||"string"=...
method constructor (line 45) | constructor(t,i,o=!1){this._clickTolerance=10,this.element=i,this.mous...
method down (line 45) | down(e,t){this.mouseRotate.mousedown(e,t),this.mousePitch&&this.mouseP...
method move (line 45) | move(e,t){const i=this.map,o=this.mouseRotate.mousemoveWindow(e,t),r=o...
method off (line 45) | off(){const e=this.element;e.removeEventListener("mousedown",this.mous...
method offTemp (line 45) | offTemp(){u(),window.removeEventListener("mousemove",this.mousemove),w...
method mousedown (line 45) | mousedown(t){this.down(e.e({},t,{ctrlKey:!0,preventDefault:()=>t.preve...
method mousemove (line 45) | mousemove(e){this.move(e,p(this.element,e));}
method mouseup (line 45) | mouseup(e){this.mouseRotate.mouseupWindow(e),this.mousePitch&&this.mou...
method touchstart (line 45) | touchstart(e){1!==e.targetTouches.length?this.reset():(this._startPos=...
method touchmove (line 45) | touchmove(e){1!==e.targetTouches.length?this.reset():(this._lastPos=f(...
method touchend (line 45) | touchend(e){0===e.targetTouches.length&&this._startPos&&this._lastPos&...
method reset (line 45) | reset(){this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.rese...
function wa (line 31) | function wa(t,e,r,n){return 0===n.compare(e,r)}
function Ma (line 31) | function Ma(t,e,r){const n="=="!==t&&"!="!==t;return class i{constructor...
class za (line 31) | class za{constructor(t,e,r,n,i,s){this.type=Wn,this.number=t,this.locale...
method constructor (line 31) | constructor(t,e,r,n,i,s){this.type=Wn,this.number=t,this.locale=e,this...
method parse (line 31) | static parse(t,e){if(3!==t.length)return e.error("Expected two argumen...
method evaluate (line 31) | evaluate(t){return new Intl.NumberFormat(this.locale?this.locale.evalu...
method eachChild (line 31) | eachChild(t){t(this.number),this.locale&&t(this.locale),this.currency&...
method outputDefined (line 31) | outputDefined(){return !1}
method serialize (line 31) | serialize(){const t={};return this.locale&&(t.locale=this.locale.seria...
class Ta (line 31) | class Ta{constructor(t){this.type=Kn,this.input=t;}static parse(t,e){if(...
method constructor (line 31) | constructor(t){this.type=Kn,this.input=t;}
method parse (line 31) | static parse(t,e){if(2!==t.length)return e.error(`Expected 1 argument,...
method evaluate (line 31) | evaluate(t){const e=this.input.evaluate(t);if("string"==typeof e)retur...
method eachChild (line 31) | eachChild(t){t(this.input);}
method outputDefined (line 31) | outputDefined(){return !1}
method serialize (line 31) | serialize(){const t=["length"];return this.eachChild((e=>{t.push(e.ser...
function Ba (line 31) | function Ba(t){return function(){t=1831565813+(t|=0)|0;let e=Math.imul(t...
function Ra (line 31) | function Ra(t,[e,r,n,i]){e=e.evaluate(t),r=r.evaluate(t),n=n.evaluate(t)...
function Va (line 31) | function Va(t,[e,r,n,i]){e=e.evaluate(t),r=r.evaluate(t),n=n.evaluate(t)...
function Da (line 31) | function Da(t,e){return t in e}
function La (line 31) | function La(t,e){const r=e[t];return void 0===r?null:r}
function Fa (line 31) | function Fa(t){return {type:t}}
function Oa (line 31) | function Oa(t){return {result:"success",value:t}}
function Ua (line 31) | function Ua(t){return {result:"error",value:t}}
function Na (line 31) | function Na(t,e){return !!t&&!!t.parameters&&t.parameters.indexOf(e)>-1}
function ja (line 31) | function ja(t){return "data-driven"===t["property-type"]}
function qa (line 31) | function qa(t){return Na(t.expression,"measure-light")}
function $a (line 31) | function $a(t){return Na(t.expression,"zoom")}
function Ga (line 31) | function Ga(t){return !!t.expression&&t.expression.interpolated}
function Qa (line 31) | function Qa(t){return "object"==typeof t&&null!==t&&!Array.isArray(t)}
function Ya (line 31) | function Ya(t){return t}
function Xa (line 31) | function Xa(t,e){const r="color"===e.type,n=t.stops&&"object"==typeof t....
function Za (line 31) | function Za(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}
function Ka (line 31) | function Ka(t,e,r,n,i){return Za(typeof r===i?n[r]:void 0,t.default,e.de...
function Wa (line 31) | function Wa(t,e,r){if("number"!==Si(r))return Za(t.default,e.default);co...
function Ha (line 31) | function Ha(t,e,r){const n=void 0!==t.base?t.base:1;if("number"!==Si(r))...
function Ja (line 31) | function Ja(t,e,r){return "color"===e.type?r=jn.parse(r):"formatted"===e...
class to (line 31) | class to{constructor(t,e,r,n){this.expression=t,this._warningHistory={},...
method constructor (line 31) | constructor(t,e,r,n){this.expression=t,this._warningHistory={},this._e...
method evaluateWithoutErrorHandling (line 31) | evaluateWithoutErrorHandling(t,e,r,n,i,s,a,o){return this._evaluator.g...
method evaluate (line 31) | evaluate(t,e,r,n,i,s,a,o){this._evaluator.globals=t,this._evaluator.fe...
method constructor (line 45) | constructor(t,i,o){this.tileID=t,this.bucketInstanceId=o,this.index=ne...
method findMatches (line 45) | findMatches(t,i,o){const r=this.tileID.canonical.z<i.canonical.z?1:Mat...
function eo (line 31) | function eo(t){return Array.isArray(t)&&t.length>0&&"string"==typeof t[0...
function ro (line 31) | function ro(t,e,r,n){const i=new qs(Ca,[],e?function(t){const e={color:J...
method constructor (line 45) | constructor(){this.layerIndexes={},this.crossTileIDs=new io,this.maxBu...
method addLayer (line 45) | addLayer(e,t,i,o){let r=this.layerIndexes[e.fqid];void 0===r&&(r=this....
method pruneUnusedLayers (line 45) | pruneUnusedLayers(e){const t={};e.forEach((e=>{t[e]=!0;}));for(const e...
class no (line 31) | class no{constructor(t,e,r){this.kind=t,this._styleExpression=e,this.isL...
method constructor (line 31) | constructor(t,e,r){this.kind=t,this._styleExpression=e,this.isLightCon...
method evaluateWithoutErrorHandling (line 31) | evaluateWithoutErrorHandling(t,e,r,n,i,s){return this._styleExpression...
method evaluate (line 31) | evaluate(t,e,r,n,i,s){return this._styleExpression.evaluate(t,e,r,n,i,s)}
class io (line 31) | class io{constructor(t,e,r,n,i){this.kind=t,this.zoomStops=r,this._style...
method constructor (line 31) | constructor(t,e,r,n,i){this.kind=t,this.zoomStops=r,this._styleExpress...
method evaluateWithoutErrorHandling (line 31) | evaluateWithoutErrorHandling(t,e,r,n,i,s){return this._styleExpression...
method evaluate (line 31) | evaluate(t,e,r,n,i,s){return this._styleExpression.evaluate(t,e,r,n,i,s)}
method interpolationFactor (line 31) | interpolationFactor(t,e,r){return this.interpolationType?ha.interpolat...
method constructor (line 45) | constructor(){this.maxCrossTileID=0;}
method generate (line 45) | generate(){return ++this.maxCrossTileID}
function so (line 31) | function so(t,e,r,n){if("error"===(t=ro(t,e,r,n)).result)return t;const ...
method constructor (line 45) | constructor(e=0,t=0,i=0,o=0){if(isNaN(e)||e<0||isNaN(t)||t<0||isNaN(i)...
method interpolate (line 45) | interpolate(t,i,o){return null!=i.top&&null!=t.top&&(this.top=e.X(t.to...
method getCenter (line 45) | getCenter(t,i){const o=e.ad((this.left+t-this.right)/2,0,t),r=e.ad((th...
method equals (line 45) | equals(e){return this.top===e.top&&this.bottom===e.bottom&&this.left==...
method clone (line 45) | clone(){return new so(this.top,this.bottom,this.left,this.right)}
method toJSON (line 45) | toJSON(){return {top:this.top,bottom:this.bottom,left:this.left,right:...
class ao (line 31) | class ao{constructor(t,e){this._parameters=t,this._specification=e,Qn(th...
method constructor (line 31) | constructor(t,e){this._parameters=t,this._specification=e,Qn(this,Xa(t...
method deserialize (line 31) | static deserialize(t){return new ao(t._parameters,t._specification)}
method serialize (line 31) | static serialize(t){return {_parameters:t._parameters,_specification:t...
function oo (line 31) | function oo(t){let e=null;if(t instanceof da)e=oo(t.result);else if(t in...
method constructor (line 45) | constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0;}
method handleWrapJump (line 45) | handleWrapJump(e){const t=Math.round((e-this.lng)/360);if(0!==t)for(co...
method addBucket (line 45) | addBucket(e,t,i){if(this.indexes[e.overscaledZ]&&this.indexes[e.oversc...
method removeBucketCrossTileIDs (line 45) | removeBucketCrossTileIDs(e,t){for(const i of t.crossTileIDs)this.usedC...
method removeStaleBuckets (line 45) | removeStaleBuckets(e){let t=!1;for(const i in this.indexes){const o=th...
function co (line 31) | function co(t,e,r){var n=this.cells=[];if(t instanceof ArrayBuffer){this...
method constructor (line 45) | constructor(e,t){this.position=e,this.orientation=t;}
method position (line 45) | get position(){return this._position}
method position (line 45) | set position(t){if(t){const i=t instanceof e.O?t:new e.O(t[0],t[1],t[2...
method lookAtPoint (line 45) | lookAtPoint(t,i){if(this.orientation=null,!this.position)return;const ...
method setPitchBearing (line 45) | setPitchBearing(t,i){this.orientation=ao(e.bm(t),e.bm(-i));}
function fo (line 31) | function fo(t,e,r={}){Object.defineProperty(t,"_classRegistryKey",{value...
function mo (line 31) | function mo(t){return t&&"undefined"!=typeof ArrayBuffer&&(t instanceof ...
function yo (line 31) | function yo(t){return self.ImageBitmap&&t instanceof ImageBitmap}
method constructor (line 45) | constructor(e){this.painter=e,this._enabled=!1,this._shadowLayerCount=...
method destroy (line 45) | destroy(){for(const e of this._cascades)e.texture.destroy(),e.framebuf...
method updateShadowParameters (line 45) | updateShadowParameters(t,i){const o=this.painter;if(this._enabled=!1,t...
method enabled (line 45) | get enabled(){return this._enabled&&!this._forceDisable}
method enabled (line 45) | set enabled(e){this._enabled=e;}
method drawShadowPass (line 45) | drawShadowPass(t,i){if(!this.enabled)return;const o=this.painter,r=o.c...
method drawGroundShadows (line 45) | drawGroundShadows(){if(!this.enabled)return;const e=this.painter,t=e.s...
method getShadowPassColorMode (line 45) | getShadowPassColorMode(){return this.painter._shadowMapDebug?At.unblen...
method getShadowPassDepthMode (line 45) | getShadowPassDepthMode(){return this._depthMode}
method getShadowCastingLayerCount (line 45) | getShadowCastingLayerCount(){return this._shadowLayerCount}
method calculateShadowPassMatrixFromTile (line 45) | calculateShadowPassMatrixFromTile(t){const i=this.painter.transform,o=...
method calculateShadowPassMatrixFromMatrix (line 45) | calculateShadowPassMatrixFromMatrix(t){return e.a9.multiply(t,this._ca...
method setupShadows (line 45) | setupShadows(t,i,o,r=0){if(!this.enabled)return;const s=this.painter.t...
method setupShadowsFromMatrix (line 45) | setupShadowsFromMatrix(t,i,o=!1){if(!this.enabled)return;const r=this....
method getShadowUniformValues (line 45) | getShadowUniformValues(){return this._uniformValues}
method getCurrentCascadeFrustum (line 45) | getCurrentCascadeFrustum(){return this._cascades[this.painter.currentS...
method computeSimplifiedTileShadowVolume (line 45) | computeSimplifiedTileShadowVolume(t,i,o,r){if(r[2]>=0)return {};const ...
method addShadowReceiver (line 45) | addShadowReceiver(t,i,o){this._receivers.add(t,e.bV.fromTileIdAndHeigh...
method getMaxCascadeForTile (line 45) | getMaxCascadeForTile(e){const t=this._receivers.get(e);return t&&t.las...
function go (line 31) | function go(t,e){if(null==t||"boolean"==typeof t||"number"==typeof t||"s...
function xo (line 31) | function xo(t){if(null==t||"boolean"==typeof t||"number"==typeof t||"str...
method add (line 45) | add(e,t){const i=this.receivers[e.key];void 0!==i?(i.aabb.min[0]=Math....
method clear (line 45) | clear(){this.receivers={};}
method get (line 45) | get(e){return this.receivers[e.key]}
method computeRequiredCascades (line 45) | computeRequiredCascades(t,i,o){const r=e.bV.fromPoints(t.points);let s...
function vo (line 31) | function vo(t){for(const e of t)if(Mo(e.charCodeAt(0)))return !0;return !1}
method constructor (line 45) | constructor(e,t){this.aabb=e,this.lastCascade=t;}
function _o (line 31) | function _o(t){for(const e of t)if(!wo(e.charCodeAt(0)))return !1;return...
function wo (line 31) | function wo(t){return !(bo.Arabic(t)||bo["Arabic Supplement"](t)||bo["Ar...
function Mo (line 31) | function Mo(t){return !(746!==t&&747!==t&&(t<4352||!(bo["Bopomofo Extend...
function Ao (line 31) | function Ao(t){return !(Mo(t)||function(t){return !!(bo["Latin-1 Supplem...
method constructor (line 45) | constructor(t,i={}){super(),this.map=t,this.scope=i.scope||"",this.glo...
method load (line 45) | load(e){return e?("string"==typeof e?this.loadURL(e):this.loadJSON(e),...
method _getGlobalId (line 45) | _getGlobalId(t){if(!t)return null;if("string"==typeof t){if(e.c3(t))re...
method _diffStyle (line 45) | _diffStyle(t,i,o){this.globalId=this._getGlobalId(t);const r=(e,t)=>{t...
method loadURL (line 45) | loadURL(t,i={}){this.fire(new e.b("dataloading",{dataType:"style"}));c...
method loadJSON (line 45) | loadJSON(t,i={}){this.fire(new e.b("dataloading",{dataType:"style"})),...
method loadEmpty (line 45) | loadEmpty(){this.fire(new e.b("dataloading",{dataType:"style"})),this....
method _loadImports (line 45) | _loadImports(t,i,o){if(this.importDepth>=4)return e.w("Style doesn't s...
method getImportGlobalIds (line 45) | getImportGlobalIds(e=this,t=new Set){for(const i of e.fragments)i.styl...
method _createFragmentStyle (line 45) | _createFragmentStyle(t){const i=this.scope?e.aj(t.id,this.scope):t.id;...
method _reloadImports (line 45) | _reloadImports(){this.mergeAll(),this._updateMapProjection(),this.upda...
method _isInternalStyle (line 45) | _isInternalStyle(e){return this.isRootStyle()&&(e.fragment||!!e.schema...
method _load (line 45) | _load(t,i){const o=t.schema;if(this._isInternalStyle(t)){const o=e.e({...
method isRootStyle (line 45) | isRootStyle(){return 0===this.importDepth}
method mergeAll (line 45) | mergeAll(){let t,i,o,r,s,n,a,l;this.terrain&&this.terrain.scope!==this...
method forEachFragmentStyle (line 45) | forEachFragmentStyle(e){const t=i=>{for(const e of i.fragments)t(e.sty...
method _prioritizeTerrain (line 45) | _prioritizeTerrain(e,t,i){const o=e&&0===e.drapeRenderMode;return null...
method mergeTerrain (line 45) | mergeTerrain(){let e;this.terrain&&this.terrain.scope!==this.scope&&de...
method mergeProjection (line 45) | mergeProjection(){let e;this.forEachFragmentStyle((t=>{null!=t.stylesh...
method mergeSources (line 45) | mergeSources(){const t={},i={},o={};this.forEachFragmentStyle((r=>{for...
method mergeLayers (line 45) | mergeLayers(){const t={},i=[],o={};this._has3DLayers=!1,this._hasCircl...
method terrainSetForDrapingOnly (line 45) | terrainSetForDrapingOnly(){return !!this.terrain&&0===this.terrain.dra...
method getCamera (line 45) | getCamera(){return this.stylesheet.camera}
method setCamera (line 45) | setCamera(t){return this.stylesheet.camera=e.e({},this.stylesheet.came...
method setProjection (line 45) | setProjection(e){e?this.stylesheet.projection=e:delete this.stylesheet...
method applyProjectionUpdate (line 45) | applyProjectionUpdate(){this._loaded&&(this.dispatcher.broadcast("setP...
method _updateMapProjection (line 45) | _updateMapProjection(){this.isRootStyle()&&(this.map._useExplicitProje...
method _loadSprite (line 45) | _loadSprite(t){this._spriteRequest=function(t,i,o){let r,s,n;const a=e...
method _validateLayer (line 45) | _validateLayer(t){const i=this.getOwnSource(t.source);if(!i)return;con...
method loaded (line 45) | loaded(){if(!this._loaded)return !1;if(Object.keys(this._changes.getUp...
method _serializeImports (line 45) | _serializeImports(){if(this.stylesheet.imports)return this.stylesheet....
method _serializeSources (line 45) | _serializeSources(){const e={};for(const t in this._sourceCaches){cons...
method _serializeLayers (line 45) | _serializeLayers(e){const t=[];for(const i of e){const e=this._layers[...
method hasLightTransitions (line 45) | hasLightTransitions(){return !(!this.light||!this.light.hasTransition(...
method hasFogTransition (line 45) | hasFogTransition(){return !!this.fog&&this.fog.hasTransition()}
method hasTransitions (line 45) | hasTransitions(){if(this.hasLightTransitions())return !0;if(this.hasFo...
method order (line 45) | get order(){return this.terrain?this._drapedFirstOrder:this._mergedOrder}
method isLayerDraped (line 45) | isLayerDraped(e){return !!this.terrain&&e.isDraped(this.getLayerSource...
method _checkLoaded (line 45) | _checkLoaded(){if(!this._loaded)throw new Error("Style is not done loa...
method _checkLayer (line 45) | _checkLayer(t){const i=this.getOwnLayer(t);if(i)return i;this.fire(new...
method _checkSource (line 45) | _checkSource(t){const i=this.getOwnSource(t);if(i)return i;this.fire(n...
method update (line 45) | update(t){if(!this._loaded)return;this.ambientLight&&this.ambientLight...
method _updateTilesForChangedImages (line 45) | _updateTilesForChangedImages(){const e=this._changes.getUpdatedImages(...
method _updateWorkerLayers (line 45) | _updateWorkerLayers(e,t,i){const o=this.getFragmentStyle(e);o&&this.di...
method setState (line 45) | setState(i,o){if(this._checkLoaded(),So(this,Q(i)))return !1;(i=e.c6(i...
method addImage (line 45) | addImage(t,i){return this.getImage(t)?this.fire(new e.a(new Error("An ...
method updateImage (line 45) | updateImage(e,t){this.imageManager.updateImage(e,this.scope,t);}
method getImage (line 45) | getImage(e){return this.imageManager.getImage(e,this.scope)}
method removeImage (line 45) | removeImage(t){return this.getImage(t)?(this.imageManager.removeImage(...
method _afterImageUpdated (line 45) | _afterImageUpdated(t){this._availableImages=this.imageManager.listImag...
method listImages (line 45) | listImages(){return this._checkLoaded(),this._availableImages.slice()}
method addModel (line 45) | addModel(e,t,i={}){return this._checkLoaded(),this._validate(re,`model...
method hasModel (line 45) | hasModel(e){return this.modelManager.hasModel(e,this.scope)}
method removeModel (line 45) | removeModel(t){return this.hasModel(t)?(this.modelManager.removeModel(...
method listModels (line 45) | listModels(){return this._checkLoaded(),this.modelManager.listModels(t...
method addSource (line 45) | addSource(t,i,o={}){if(this._checkLoaded(),void 0!==this.getOwnSource(...
method removeSource (line 45) | removeSource(t){this._checkLoaded();const i=this.getOwnSource(t);if(!i...
method setGeoJSONSourceData (line 45) | setGeoJSONSourceData(e,t){this._checkLoaded(),this.getOwnSource(e).set...
method getOwnSource (line 45) | getOwnSource(e){const t=this.getOwnSourceCache(e);return t&&t.getSourc...
method getOwnSources (line 45) | getOwnSources(){const e=[];for(const t in this._otherSourceCaches){con...
method areTilesLoaded (line 45) | areTilesLoaded(){const e=this._mergedSourceCaches;for(const t in e){co...
method setLights (line 45) | setLights(t){if(this._checkLoaded(),!t)return delete this.ambientLight...
method calculateLightsBrightness (line 45) | calculateLightsBrightness(){const t=this.directionalLight,i=this.ambie...
method getBrightness (line 45) | getBrightness(){return this._brightness}
method getLights (line 45) | getLights(){if(!this.enable3dLights())return null;const e=[];return th...
method enable3dLights (line 45) | enable3dLights(){return !!this.ambientLight&&!!this.directionalLight}
method getFragmentStyle (line 45) | getFragmentStyle(t){if(!t)return this;if(e.c9(t)){const i=e.ca(t),o=th...
method getConfigProperty (line 45) | getConfigProperty(t,i){const o=this.getFragmentStyle(t);if(!o)return n...
method setConfigProperty (line 45) | setConfigProperty(t,i,o){const r=this.getFragmentStyle(t);if(!r)return...
method getConfig (line 45) | getConfig(t){const i=this.getFragmentStyle(t);if(!i)return null;const ...
method setConfig (line 45) | setConfig(e,t){const i=this.getFragmentStyle(e);i&&(i.updateConfig(t,i...
method getSchema (line 45) | getSchema(e){const t=this.getFragmentStyle(e);return t?t.stylesheet.sc...
method setSchema (line 45) | setSchema(e,t){const i=this.getFragmentStyle(e);i&&(i.stylesheet.schem...
method updateConfig (line 45) | updateConfig(t,i){if(this._config=t,t||i)if(i)for(const o in i){let r,...
method updateConfigDependencies (line 45) | updateConfigDependencies(){for(const e of this._configDependentLayers)...
method addLayer (line 45) | addLayer(t,i,o={}){this._checkLoaded();const r=t.id;if(this._layers[r]...
method moveLayer (line 45) | moveLayer(t,i){this._checkLoaded();const o=this._checkLayer(t);if(!o)r...
method removeLayer (line 45) | removeLayer(e){this._checkLoaded();const t=this._checkLayer(e);if(!t)r...
method getOwnLayer (line 45) | getOwnLayer(e){return this._layers[e]}
method hasLayer (line 45) | hasLayer(e){return e in this._mergedLayers}
method hasLayerType (line 45) | hasLayerType(e){for(const t in this._layers)if(this._layers[t].type===...
method setLayerZoomRange (line 45) | setLayerZoomRange(e,t,i){this._checkLoaded();const o=this._checkLayer(...
method setSlot (line 45) | setSlot(e,t){this._checkLoaded();const i=this._checkLayer(e);i&&i.slot...
method setFilter (line 45) | setFilter(i,o,r={}){this._checkLoaded();const s=this._checkLayer(i);if...
method getFilter (line 45) | getFilter(t){const i=this._checkLayer(t);if(i)return e.c6(i.filter)}
method setLayoutProperty (line 45) | setLayoutProperty(i,o,r,s={}){this._checkLoaded();const n=this._checkL...
method getLayoutProperty (line 45) | getLayoutProperty(e,t){const i=this._checkLayer(e);if(i)return i.getLa...
method setPaintProperty (line 45) | setPaintProperty(i,o,r,s={}){this._checkLoaded();const n=this._checkLa...
method getPaintProperty (line 45) | getPaintProperty(e,t){const i=this._checkLayer(e);if(i)return i.getPai...
method setFeatureState (line 45) | setFeatureState(t,i){this._checkLoaded();const o=t.source,r=t.sourceLa...
method removeFeatureState (line 45) | removeFeatureState(t,i){this._checkLoaded();const o=t.source,r=this._c...
method getFeatureState (line 45) | getFeatureState(t){this._checkLoaded();const i=t.source,o=t.sourceLaye...
method setTransition (line 45) | setTransition(t){return this.stylesheet.transition=e.e({},this.stylesh...
method getTransition (line 45) | getTransition(){return e.e({},this.stylesheet.transition)}
method serialize (line 45) | serialize(){this._checkLoaded();const t=this.getTerrain(),i=t&&this.te...
method _updateLayer (line 45) | _updateLayer(t){this._changes.updateLayer(t);const i=this.getLayerSour...
method _flattenAndSortRenderedFeatures (line 45) | _flattenAndSortRenderedFeatures(e){const t=e=>"fill-extrusion"===this....
method queryRenderedFeatures (line 45) | queryRenderedFeatures(t,i,o){i&&i.filter&&this._validate(te,"queryRend...
method querySourceFeatures (line 45) | querySourceFeatures(e,t){t&&t.filter&&this._validate(te,"querySourceFe...
method addSourceType (line 45) | addSourceType(e,t,i){return Ao.getSourceType(e)?i(new Error(`A source ...
method getFlatLight (line 45) | getFlatLight(){return this.light.getLight()}
method setFlatLight (line 45) | setFlatLight(e,i,o={}){this._checkLoaded();const r=this.light.getLight...
method getTerrain (line 45) | getTerrain(){return this.terrain&&1===this.terrain.drapeRenderMode?thi...
method setTerrainForDraping (line 45) | setTerrainForDraping(){this.setTerrain({source:"",exaggeration:0},0);}
method setTerrain (line 45) | setTerrain(i,o=1){if(this._checkLoaded(),!i)return this.terrainSetForD...
method _createFog (line 45) | _createFog(e){const t=this.fog=new xe(e,this.map.transform,this.scope,...
method _updateMarkersOpacity (line 45) | _updateMarkersOpacity(){0!==this.map._markers.length&&this.map._reques...
method getFog (line 45) | getFog(){return this.fog?this.fog.get():null}
method setFog (line 45) | setFog(e){if(this._checkLoaded(),!e)return delete this.fog,delete this...
method _getTransitionParameters (line 45) | _getTransitionParameters(t){return {now:e.f.now(),transition:e.e(this....
method updateDrapeFirstLayers (line 45) | updateDrapeFirstLayers(){if(!this.terrain)return;const e=[],t=[];for(c...
method _createTerrain (line 45) | _createTerrain(e,t){const i=this.terrain=new he(e,t,this.scope,this.op...
method _force3DLayerUpdate (line 45) | _force3DLayerUpdate(){for(const e in this._layers){const t=this._layer...
method _forceSymbolLayerUpdate (line 45) | _forceSymbolLayerUpdate(){for(const e in this._layers){const t=this._l...
method _validate (line 45) | _validate(t,i,o,r,s={}){if(s&&!1===s.validate)return !1;const n=e.e({}...
method _remove (line 45) | _remove(){this._request&&(this._request.cancel(),this._request=null),t...
method clearSource (line 45) | clearSource(e){const t=this.getSourceCaches(e);for(const e of t)e.clea...
method clearSources (line 45) | clearSources(){for(const e in this._mergedSourceCaches)this._mergedSou...
method reloadSource (line 45) | reloadSource(e){const t=this.getSourceCaches(e);for(const e of t)e.res...
method reloadSources (line 45) | reloadSources(){for(const e of this.getSources())e.reload&&e.reload();}
method updateSources (line 45) | updateSources(e){let t;this.directionalLight&&(t=wo(this.directionalLi...
method _generateCollisionBoxes (line 45) | _generateCollisionBoxes(){for(const e in this._sourceCaches){const t=t...
method _updatePlacement (line 45) | _updatePlacement(t,i,o,r,s=!1){let n=!1,a=!1;const l={},c={};for(const...
method _releaseSymbolFadeTiles (line 45) | _releaseSymbolFadeTiles(){for(const e in this._sourceCaches)this._sour...
method addImport (line 45) | addImport(t,i){this._checkLoaded();const o=this.stylesheet.imports=thi...
method updateImport (line 45) | updateImport(e,i){this._checkLoaded();const o=this.stylesheet.imports|...
method moveImport (line 45) | moveImport(e,t){this._checkLoaded();let i=this.stylesheet.imports||[];...
method setImportUrl (line 45) | setImportUrl(e,t){this._checkLoaded();const i=this.stylesheet.imports|...
method setImportData (line 45) | setImportData(e,t){this._checkLoaded();const i=this.getImportIndex(e),...
method setImportConfig (line 45) | setImportConfig(e,t){this._checkLoaded();const i=this.getImportIndex(e...
method removeImport (line 45) | removeImport(e){this._checkLoaded();const t=this.stylesheet.imports||[...
method getImportIndex (line 45) | getImportIndex(t){const i=(this.stylesheet.imports||[]).findIndex((e=>...
method getLayer (line 45) | getLayer(e){return this._mergedLayers[e]}
method getSources (line 45) | getSources(){const e=[];for(const t in this._mergedOtherSourceCaches){...
method getSource (line 45) | getSource(e,t){const i=this.getSourceCache(e,t);return i&&i.getSource()}
method getLayerSource (line 45) | getLayerSource(e){const t=this.getLayerSourceCache(e);return t&&t.getS...
method getSourceCache (line 45) | getSourceCache(t,i){const o=e.aj(t,i);return this._mergedOtherSourceCa...
method getLayerSourceCache (line 45) | getLayerSourceCache(t){const i=e.aj(t.source,t.scope);return "symbol"=...
method getSourceCaches (line 45) | getSourceCaches(e){if(null==e)return Object.values(this._mergedSourceC...
method updateSourceCaches (line 45) | updateSourceCaches(){const e=this._changes.getUpdatedSourceCaches();fo...
method updateLayers (line 45) | updateLayers(e){const t=this._changes.getUpdatedPaintProperties();for(...
method getImages (line 45) | getImages(e,t,i){this.imageManager.getImages(t.icons,t.scope,i),this._...
method getGlyphs (line 45) | getGlyphs(e,t,i){this.glyphManager.getGlyphs(t.stacks,t.scope,i);}
method getResource (line 45) | getResource(t,i,o){return e.ce(i,o)}
method getOwnSourceCache (line 45) | getOwnSourceCache(e){return this._otherSourceCaches[e]}
method getOwnLayerSourceCache (line 45) | getOwnLayerSourceCache(e){return "symbol"===e.type?this._symbolSourceC...
method getOwnSourceCaches (line 45) | getOwnSourceCaches(e){const t=[];return this._otherSourceCaches[e]&&t....
method _isSourceCacheLoaded (line 45) | _isSourceCacheLoaded(t){const i=this.getOwnSourceCaches(t);return 0===...
method has3DLayers (line 45) | has3DLayers(){return this._has3DLayers}
method hasSymbolLayers (line 45) | hasSymbolLayers(){return this._hasSymbolLayers}
method hasCircleLayers (line 45) | hasCircleLayers(){return this._hasCircleLayers}
method _clearWorkerCaches (line 45) | _clearWorkerCaches(){this.dispatcher.broadcast("clearCaches");}
method destroy (line 45) | destroy(){this._clearWorkerCaches(),this.fragments.forEach((e=>{e.styl...
function So (line 31) | function So(t){return t>=1424&&t<=2303||bo["Arabic Presentation Forms-A"...
function Io (line 31) | function Io(t,e){return !(!e&&So(t)||t>=2304&&t<=3583||t>=3840&&t<=4255|...
function ko (line 31) | function ko(t){for(const e of t)if(So(e.charCodeAt(0)))return !0;return !1}
function Vo (line 31) | function Vo(){Do.fire(new Rn("pluginStateChange",{pluginStatus:Bo,plugin...
method setState (line 31) | setState(t){Bo=t.pluginStatus,Co=t.pluginURL;}
class Uo (line 31) | class Uo{constructor(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuratio...
method constructor (line 31) | constructor(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuration=e.fad...
method isSupportedScript (line 31) | isSupportedScript(t){return function(t,e){for(const r of t)if(!Io(r.ch...
class No (line 31) | class No{constructor(t,e,r,n){this.property=t,this.value=e,this.expressi...
method constructor (line 31) | constructor(t,e,r,n){this.property=t,this.value=e,this.expression=func...
method isDataDriven (line 31) | isDataDriven(){return "source"===this.expression.kind||"composite"===t...
method possiblyEvaluate (line 31) | possiblyEvaluate(t,e,r){return this.property.possiblyEvaluate(this,t,e...
class jo (line 31) | class jo{constructor(t,e,r){this.property=t,this.value=new No(t,void 0,e...
method constructor (line 31) | constructor(t,e,r){this.property=t,this.value=new No(t,void 0,e,r);}
method transitioned (line 31) | transitioned(t,e){return new $o(this.property,this.value,e,Je({},t.tra...
method untransitioned (line 31) | untransitioned(){return new $o(this.property,this.value,null,{},0)}
class qo (line 31) | class qo{constructor(t,e,r){this._properties=t,this._values=Object.creat...
method constructor (line 31) | constructor(t,e,r){this._properties=t,this._values=Object.create(t.def...
method getValue (line 31) | getValue(t){return ur(this._values[t].value.value)}
method setValue (line 31) | setValue(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new jo(...
method setTransitionOrValue (line 31) | setTransitionOrValue(t,e){e&&(this._options=e);const r=this._propertie...
method getTransition (line 31) | getTransition(t){return ur(this._values[t].transition)}
method setTransition (line 31) | setTransition(t,e){this._values.hasOwnProperty(t)||(this._values[t]=ne...
method serialize (line 31) | serialize(){const t={};for(const e of Object.keys(this._values)){const...
method transitioned (line 31) | transitioned(t,e){const r=new Go(this._properties);for(const n of Obje...
method untransitioned (line 31) | untransitioned(){const t=new Go(this._properties);for(const e of Objec...
class $o (line 31) | class $o{constructor(t,e,r,n,i){const s=n.delay||0,a=n.duration||0;i=i||...
method constructor (line 31) | constructor(t,e,r,n,i){const s=n.delay||0,a=n.duration||0;i=i||0,this....
method possiblyEvaluate (line 31) | possiblyEvaluate(t,e,r){const n=t.now||0,i=this.value.possiblyEvaluate...
class Go (line 31) | class Go{constructor(t){this._properties=t,this._values=Object.create(t....
method constructor (line 31) | constructor(t){this._properties=t,this._values=Object.create(t.default...
method possiblyEvaluate (line 31) | possiblyEvaluate(t,e,r){const n=new Xo(this._properties);for(const i o...
method hasTransition (line 31) | hasTransition(){for(const t of Object.keys(this._values))if(this._valu...
class Qo (line 31) | class Qo{constructor(t,e,r){this._properties=t,this._values=Object.creat...
method constructor (line 31) | constructor(t,e,r){this._properties=t,this._values=Object.create(t.def...
method getValue (line 31) | getValue(t){return ur(this._values[t].value)}
method setValue (line 31) | setValue(t,e){this._values[t]=new No(this._values[t].property,null===e...
method serialize (line 31) | serialize(){const t={};for(const e of Object.keys(this._values)){const...
method possiblyEvaluate (line 31) | possiblyEvaluate(t,e,r){const n=new Xo(this._properties);for(const i o...
class Yo (line 31) | class Yo{constructor(t,e,r){this.property=t,this.value=e,this.parameters...
method constructor (line 31) | constructor(t,e,r){this.property=t,this.value=e,this.parameters=r;}
method isConstant (line 31) | isConstant(){return "constant"===this.value.kind}
method constantOr (line 31) | constantOr(t){return "constant"===this.value.kind?this.value.value:t}
method evaluate (line 31) | evaluate(t,e,r,n){return this.property.evaluate(this.value,this.parame...
class Xo (line 31) | class Xo{constructor(t){this._properties=t,this._values=Object.create(t....
method constructor (line 31) | constructor(t){this._properties=t,this._values=Object.create(t.default...
method get (line 31) | get(t){return this._values[t]}
method constructor (line 45) | constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null...
method bind (line 45) | bind(e,t,i,o,r,s,n,a){this.context=e;let l=this.boundPaintVertexBuffer...
method freshBind (line 45) | freshBind(e,t,i,o,r,s,n){const a=e.numAttributes,l=this.context,c=l.gl...
method destroy (line 45) | destroy(){this.vao&&(this.context.gl.deleteVertexArray(this.vao),this....
class Zo (line 31) | class Zo{constructor(t){this.specification=t;}possiblyEvaluate(t,e){retu...
method constructor (line 31) | constructor(t){this.specification=t;}
method possiblyEvaluate (line 31) | possiblyEvaluate(t,e){return t.expression.evaluate(e)}
method interpolate (line 31) | interpolate(t,e,r){const n=Gn[this.specification.type];return n?n(t,e,...
class Ko (line 31) | class Ko{constructor(t,e){this.specification=t,this.overrides=e;}possibl...
method constructor (line 31) | constructor(t,e){this.specification=t,this.overrides=e;}
method possiblyEvaluate (line 31) | possiblyEvaluate(t,e,r,n){return new Yo(this,"constant"===t.expression...
method interpolate (line 31) | interpolate(t,e,r){if("constant"!==t.value.kind||"constant"!==e.value....
method evaluate (line 31) | evaluate(t,e,r,n,i,s){return "constant"===t.kind?t.value:t.evaluate(e,...
class Wo (line 31) | class Wo{constructor(t){this.specification=t;}possiblyEvaluate(t,e,r,n){...
method constructor (line 31) | constructor(t){this.specification=t;}
method possiblyEvaluate (line 31) | possiblyEvaluate(t,e,r,n){return !!t.expression.evaluate(e,null,{},r,n)}
method interpolate (line 31) | interpolate(){return !1}
class Ho (line 31) | class Ho{constructor(t){this.properties=t,this.defaultPropertyValues={},...
method constructor (line 31) | constructor(t){this.properties=t,this.defaultPropertyValues={},this.de...
function Jo (line 31) | function Jo(t){return t instanceof Number||t instanceof String||t instan...
function tl (line 31) | function tl(t){if(Array.isArray(t))return t.map(tl);if(t instanceof Obje...
function rl (line 31) | function rl(t){if(!0===t||!1===t)return !0;if(!Array.isArray(t)||0===t.l...
function nl (line 31) | function nl(t,e="fill"){if(null==t)return {filter:()=>!0,needGeometry:!1...
function il (line 31) | function il(t){if(!Array.isArray(t))return t;const e=function(t){if(ol.h...
function sl (line 31) | function sl(t){let e=!1;const r=[];if("case"===t[0]){for(let n=1;n<t.len...
function al (line 31) | function al(t){if(!Array.isArray(t))return !1;if("pitch"===(e=t[0])||"di...
function ll (line 31) | function ll(t,e){return t<e?-1:t>e?1:0}
function ul (line 31) | function ul(t){if(!Array.isArray(t))return !1;if("within"===t[0]||"dista...
function cl (line 31) | function cl(t){if(!t)return !0;const e=t[0];return t.length<=1?"any"!==e...
function hl (line 31) | function hl(t,e,r){switch(t){case"$type":return [`filter-type-${r}`,e];c...
function pl (line 31) | function pl(t,e){if(0===e.length)return !1;switch(t){case"$type":return ...
function fl (line 31) | function fl(t){switch(t){case"$type":return !0;case"$id":return ["filter...
function dl (line 31) | function dl(t){return ["!",t]}
function yl (line 31) | function yl(t,e){return e?`${t}${ml}${e}`:t}
class bl (line 31) | class bl extends Dn{constructor(t,e,r,n){if(super(),this.id=t.id,this.fq...
method constructor (line 31) | constructor(t,e,r,n){if(super(),this.id=t.id,this.fqid=yl(this.id,r),t...
method onAdd (line 31) | onAdd(t){}
method onRemove (line 31) | onRemove(t){}
method isDraped (line 31) | isDraped(t){return xl.has(this.type)}
method getLayoutProperty (line 31) | getLayoutProperty(t){return "visibility"===t?this.visibility:this._une...
method setLayoutProperty (line 31) | setLayoutProperty(t,e){if("custom"===this.type&&"visibility"===t)retur...
method possiblyEvaluateVisibility (line 31) | possiblyEvaluateVisibility(){this.visibility=this._unevaluatedLayout._...
method getPaintProperty (line 31) | getPaintProperty(t){return ar(t,gl)?this._transitionablePaint.getTrans...
method setPaintProperty (line 31) | setPaintProperty(t,e){const r=this._transitionablePaint,n=r._propertie...
method _handleSpecialPaintPropertyUpdate (line 31) | _handleSpecialPaintPropertyUpdate(t){}
method getProgramIds (line 31) | getProgramIds(){return null}
method getDefaultProgramParams (line 31) | getDefaultProgramParams(t,e){return null}
method _handleOverridablePaintPropertyUpdate (line 31) | _handleOverridablePaintPropertyUpdate(t,e,r){return !1}
method isHidden (line 31) | isHidden(t){return !!(this.minzoom&&t<this.minzoom)||!!(this.maxzoom&&...
method updateTransitions (line 31) | updateTransitions(t){this._transitioningPaint=this._transitionablePain...
method hasTransition (line 31) | hasTransition(){return this._transitioningPaint.hasTransition()}
method recalculate (line 31) | recalculate(t,e){this._unevaluatedLayout&&(this.layout=this._unevaluat...
method serialize (line 31) | serialize(){return lr({id:this.id,type:this.type,slot:this.slot,source...
method is3D (line 31) | is3D(){return !1}
method isSky (line 31) | isSky(){return !1}
method isTileClipped (line 31) | isTileClipped(){return !1}
method hasOffscreenPass (line 31) | hasOffscreenPass(){return !1}
method hasShadowPass (line 31) | hasShadowPass(){return !1}
method canCastShadows (line 31) | canCastShadows(){return !1}
method hasLightBeamPass (line 31) | hasLightBeamPass(){return !1}
method cutoffRange (line 31) | cutoffRange(){return 0}
method tileCoverLift (line 31) | tileCoverLift(){return 0}
method resize (line 31) | resize(){}
method isStateDependent (line 31) | isStateDependent(){for(const t in this.paint._values){const e=this.pai...
method compileFilter (line 31) | compileFilter(){this._filterCompiled||(this._featureFilter=nl(this.fil...
method invalidateCompiledFilter (line 31) | invalidateCompiledFilter(){this._filterCompiled=!1;}
method dynamicFilter (line 31) | dynamicFilter(){return this._featureFilter.dynamicFilter}
method dynamicFilterNeedsFeature (line 31) | dynamicFilterNeedsFeature(){return this._featureFilter.needFeature}
method getLayerRenderingStats (line 31) | getLayerRenderingStats(){return this._stats}
method resetLayerRenderingStats (line 31) | resetLayerRenderingStats(t){this._stats&&("shadow"===t.renderPass?this...
method queryRadius (line 31) | queryRadius(t){}
method queryIntersectsFeature (line 31) | queryIntersectsFeature(t,e,r,n,i,s,a,o,l){}
method queryIntersectsMatchingFeature (line 31) | queryIntersectsMatchingFeature(t,e,r,n){}
class _l (line 31) | class _l{constructor(t,e){this._structArray=t,this._pos1=e*this.size,thi...
method constructor (line 31) | constructor(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2...
class wl (line 31) | class wl{constructor(){this.isTransferred=!1,this.capacity=-1,this.resiz...
method constructor (line 31) | constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0);}
method serialize (line 31) | static serialize(t,e){return t._trim(),e&&(t.isTransferred=!0,e.add(t....
method deserialize (line 31) | static deserialize(t){const e=Object.create(this.prototype);return e.a...
method _trim (line 31) | _trim(){this.length!==this.capacity&&(this.capacity=this.length,this.a...
method clear (line 31) | clear(){this.length=0;}
method resize (line 31) | resize(t){this.reserve(t),this.length=t;}
method reserve (line 31) | reserve(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*t...
method _refreshViews (line 31) | _refreshViews(){throw new Error("StructArray#_refreshViews() must be i...
method emplace (line 31) | emplace(...t){throw new Error("StructArray#emplace() must be implement...
method emplaceBack (line 31) | emplaceBack(...t){throw new Error("StructArray#emplaceBack() must be i...
method destroy (line 31) | destroy(){this.int8=this.uint8=this.int16=this.uint16=this.int32=this....
function Ml (line 31) | function Ml(t,e=1){let r=0,n=0;return {members:t.map((t=>{const i=vl[t.t...
function Al (line 31) | function Al(t,e){return Math.ceil(t/e)*e}
class Sl (line 31) | class Sl extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16...
method emplaceBack (line 31) | emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.empl...
method emplace (line 31) | emplace(t,e,r){const n=2*t;return this.int16[n+0]=e,this.int16[n+1]=r,t}
class Il (line 31) | class Il extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16...
method emplaceBack (line 31) | emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.em...
method emplace (line 31) | emplace(t,e,r,n){const i=3*t;return this.int16[i+0]=e,this.int16[i+1]=...
class kl (line 31) | class kl extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16...
method emplaceBack (line 31) | emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this....
method emplace (line 31) | emplace(t,e,r,n,i){const s=4*t;return this.int16[s+0]=e,this.int16[s+1...
class Pl (line 31) | class Pl extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16...
method emplaceBack (line 31) | emplaceBack(t,e,r,n,i){const s=this.length;return this.resize(s+1),thi...
method emplace (line 31) | emplace(t,e,r,n,i,s){const a=5*t;return this.int16[a+0]=e,this.int16[a...
class El (line 31) | class El extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16...
method emplaceBack (line 31) | emplaceBack(t,e,r,n,i,s,a){const o=this.length;return this.resize(o+1)...
method emplace (line 31) | emplace(t,e,r,n,i,s,a,o){const l=6*t,u=12*t,c=3*t;return this.int16[l+...
class zl (line 31) | class zl extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float...
method emplaceBack (line 31) | emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this....
method emplace (line 31) | emplace(t,e,r,n,i){const s=4*t;return this.float32[s+0]=e,this.float32...
class Tl (line 31) | class Tl extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float...
method emplaceBack (line 31) | emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.empl...
method emplace (line 31) | emplace(t,e,r){const n=2*t;return this.float32[n+0]=e,this.float32[n+1...
class Bl (line 31) | class Bl extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint1...
method emplaceBack (line 31) | emplaceBack(t,e,r,n,i){const s=this.length;return this.resize(s+1),thi...
method emplace (line 31) | emplace(t,e,r,n,i,s){const a=6*t,o=3*t;return this.uint16[a+0]=e,this....
class Cl (line 31) | class Cl extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint1...
method emplaceBack (line 31) | emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this....
method emplace (line 31) | emplace(t,e,r,n,i){const s=4*t;return this.uint16[s+0]=e,this.uint16[s...
class Rl (line 31) | class Rl extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16...
method emplaceBack (line 31) | emplaceBack(t,e,r,n,i,s){const a=this.length;return this.resize(a+1),t...
method emplace (line 31) | emplace(t,e,r,n,i,s,a){const o=6*t;return this.int16[o+0]=e,this.int16...
class Vl (line 31) | class Vl extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16...
method emplaceBack (line 31) | emplaceBack(t,e,r,n,i,s,a,o,l,u,c,h){const p=this.length;return this.r...
method emplace (line 31) | emplace(t,e,r,n,i,s,a,o,l,u,c,h,p){const f=12*t;return this.int16[f+0]...
class Dl (line 31) | class Dl extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16...
method emplaceBack (line 31) | emplaceBack(t,e,r,n,i,s){const a=this.length;return this.resize(a+1),t...
method emplace (line 31) | emplace(t,e,r,n,i,s,a){const o=10*t,l=5*t;return this.int16[o+0]=e,thi...
class Ll (line 31) | class Ll extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint3...
method emplaceBack (line 31) | emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplac...
method emplace (line 31) | emplace(t,e){return this.uint32[1*t+0]=e,t}
class Fl (line 31) | class Fl extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint1...
method emplaceBack (line 31) | emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.empl...
method emplace (line 31) | emplace(t,e,r){const n=2*t;return this.uint16[n+0]=e,this.uint16[n+1]=...
class Ol (line 31) | class Ol extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16...
method emplaceBack (line 31) | emplaceBack(t,e,r,n,i,s,a,o,l,u,c,h,p){const f=this.length;return this...
method emplace (line 31) | emplace(t,e,r,n,i,s,a,o,l,u,c,h,p,f){const d=20*t,m=10*t;return this.i...
class Ul (line 31) | class Ul extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16...
method emplaceBack (line 31) | emplaceBack(t,e,r,n,i,s,a){const o=this.length;return this.resize(o+1)...
method emplace (line 31) | emplace(t,e,r,n,i,s,a,o){const l=8*t;return this.int16[l+0]=e,this.int...
class Nl (line 31) | class Nl extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float...
method emplaceBack (line 31) | emplaceBack(t,e,r,n,i){const s=this.length;return this.resize(s+1),thi...
method emplace (line 31) | emplace(t,e,r,n,i,s){const a=4*t,o=8*t;return this.float32[a+0]=e,this...
class jl (line 31) | class jl extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float...
method emplaceBack (line 31) | emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this....
method emplace (line 31) | emplace(t,e,r,n,i){const s=12*t,a=3*t;return this.uint8[s+0]=e,this.ui...
class ql (line 31) | class ql extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint1...
method emplaceBack (line 31) | emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.em...
method emplace (line 31) | emplace(t,e,r,n){const i=3*t;return this.uint16[i+0]=e,this.uint16[i+1...
class $l (line 31) | class $l extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16...
method emplaceBack (line 31) | emplaceBack(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,m,y,g,x,b,v){const _=this.le...
method emplace (line 31) | emplace(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,m,y,g,x,b,v,_){const w=30*t,M=15...
class Gl (line 31) | class Gl extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float...
method emplaceBack (line 31) | emplaceBack(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,m,y,g,x,b,v,_,w,M,A,S,I,k,P,...
method emplace (line 31) | emplace(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,m,y,g,x,b,v,_,w,M,A,S,I,k,P,E,z,...
class Ql (line 31) | class Ql extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float...
method emplaceBack (line 31) | emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplac...
method emplace (line 31) | emplace(t,e){return this.float32[1*t+0]=e,t}
class Yl (line 31) | class Yl extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float...
method emplaceBack (line 31) | emplaceBack(t,e,r,n,i){const s=this.length;return this.resize(s+1),thi...
method emplace (line 31) | emplace(t,e,r,n,i,s){const a=5*t;return this.float32[a+0]=e,this.float...
class Xl (line 31) | class Xl extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float...
method emplaceBack (line 31) | emplaceBack(t,e,r,n,i,s,a){const o=this.length;return this.resize(o+1)...
method emplace (line 31) | emplace(t,e,r,n,i,s,a,o){const l=7*t;return this.float32[l+0]=e,this.f...
class Zl (line 31) | class Zl extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint3...
method emplaceBack (line 31) | emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this....
method emplace (line 31) | emplace(t,e,r,n,i){const s=6*t;return this.uint32[3*t+0]=e,this.uint16...
class Kl (line 31) | class Kl extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint1...
method emplaceBack (line 31) | emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplac...
method emplace (line 31) | emplace(t,e){return this.uint16[1*t+0]=e,t}
class Wl (line 31) | class Wl extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float...
method emplaceBack (line 31) | emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.em...
method emplace (line 31) | emplace(t,e,r,n){const i=3*t;return this.float32[i+0]=e,this.float32[i...
class Hl (line 31) | class Hl extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float...
method emplaceBack (line 31) | emplaceBack(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,m){const y=this.length;retur...
method emplace (line 31) | emplace(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,m,y){const g=16*t;return this.fl...
class Jl (line 31) | class Jl extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint1...
method emplaceBack (line 31) | emplaceBack(t,e,r,n,i,s,a){const o=this.length;return this.resize(o+1)...
method emplace (line 31) | emplace(t,e,r,n,i,s,a,o){const l=10*t,u=5*t;return this.uint16[l+0]=e,...
class tu (line 31) | class tu extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16...
method emplaceBack (line 31) | emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplac...
method emplace (line 31) | emplace(t,e){return this.int16[1*t+0]=e,t}
class eu (line 31) | class eu extends wl{_refreshViews(){this.uint8=new Uint8Array(this.array...
method _refreshViews (line 31) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer);}
method emplaceBack (line 31) | emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplac...
method emplace (line 31) | emplace(t,e){return this.uint8[1*t+0]=e,t}
class ru (line 31) | class ru extends _l{get projectedAnchorX(){return this._structArray.int1...
method projectedAnchorX (line 31) | get projectedAnchorX(){return this._structArray.int16[this._pos2+0]}
method projectedAnchorY (line 31) | get projectedAnchorY(){return this._structArray.int16[this._pos2+1]}
method projectedAnchorZ (line 31) | get projectedAnchorZ(){return this._structArray.int16[this._pos2+2]}
method tileAnchorX (line 31) | get tileAnchorX(){return this._structArray.int16[this._pos2+3]}
method tileAnchorY (line 31) | get tileAnchorY(){return this._structArray.int16[this._pos2+4]}
method x1 (line 31) | get x1(){return this._structArray.float32[this._pos4+3]}
method y1 (line 31) | get y1(){return this._structArray.float32[this._pos4+4]}
method x2 (line 31) | get x2(){return this._structArray.float32[this._pos4+5]}
method y2 (line 31) | get y2(){return this._structArray.float32[this._pos4+6]}
method padding (line 31) | get padding(){return this._structArray.int16[this._pos2+14]}
method featureIndex (line 31) | get featureIndex(){return this._structArray.uint32[this._pos4+8]}
method sourceLayerIndex (line 31) | get sourceLayerIndex(){return this._structArray.uint16[this._pos2+18]}
method bucketIndex (line 31) | get bucketIndex(){return this._structArray.uint16[this._pos2+19]}
class nu (line 31) | class nu extends Ol{get(t){return new ru(this,t)}}
method get (line 31) | get(t){return new ru(this,t)}
class iu (line 31) | class iu extends _l{get projectedAnchorX(){return this._structArray.int1...
method projectedAnchorX (line 31) | get projectedAnchorX(){return this._structArray.int16[this._pos2+0]}
method projectedAnchorY (line 31) | get projectedAnchorY(){return this._structArray.int16[this._pos2+1]}
method projectedAnchorZ (line 31) | get projectedAnchorZ(){return this._structArray.int16[this._pos2+2]}
method tileAnchorX (line 31) | get tileAnchorX(){return this._structArray.float32[this._pos4+2]}
method tileAnchorY (line 31) | get tileAnchorY(){return this._structArray.float32[this._pos4+3]}
method glyphStartIndex (line 31) | get glyphStartIndex(){return this._structArray.uint16[this._pos2+8]}
method numGlyphs (line 31) | get numGlyphs(){return this._structArray.uint16[this._pos2+9]}
method vertexStartIndex (line 31) | get vertexStartIndex(){return this._structArray.uint32[this._pos4+5]}
method lineStartIndex (line 31) | get lineStartIndex(){return this._structArray.uint32[this._pos4+6]}
method lineLength (line 31) | get lineLength(){return this._structArray.uint32[this._pos4+7]}
method segment (line 31) | get segment(){return this._structArray.uint16[this._pos2+16]}
method lowerSize (line 31) | get lowerSize(){return this._structArray.uint16[this._pos2+17]}
method upperSize (line 31) | get upperSize(){return this._structArray.uint16[this._pos2+18]}
method lineOffsetX (line 31) | get lineOffsetX(){return this._structArray.float32[this._pos4+10]}
method lineOffsetY (line 31) | get lineOffsetY(){return this._structArray.float32[this._pos4+11]}
method writingMode (line 31) | get writingMode(){return this._structArray.uint8[this._pos1+48]}
method placedOrientation (line 31) | get placedOrientation(){return this._structArray.uint8[this._pos1+49]}
method placedOrientation (line 31) | set placedOrientation(t){this._structArray.uint8[this._pos1+49]=t;}
method hidden (line 31) | get hidden(){return this._structArray.uint8[this._pos1+50]}
method hidden (line 31) | set hidden(t){this._structArray.uint8[this._pos1+50]=t;}
method crossTileID (line 31) | get crossTileID(){return this._structArray.uint32[this._pos4+13]}
method crossTileID (line 31) | set crossTileID(t){this._structArray.uint32[this._pos4+13]=t;}
method associatedIconIndex (line 31) | get associatedIconIndex(){return this._structArray.int16[this._pos2+28]}
method flipState (line 31) | get flipState(){return this._structArray.uint8[this._pos1+58]}
method flipState (line 31) | set flipState(t){this._structArray.uint8[this._pos1+58]=t;}
class su (line 31) | class su extends $l{get(t){return new iu(this,t)}}
method get (line 31) | get(t){return new iu(this,t)}
class au (line 31) | class au extends _l{get tileAnchorX(){return this._structArray.float32[t...
method tileAnchorX (line 31) | get tileAnchorX(){return this._structArray.float32[this._pos4+0]}
method tileAnchorY (line 31) | get tileAnchorY(){return this._structArray.float32[this._pos4+1]}
method projectedAnchorX (line 31) | get projectedAnchorX(){return this._structArray.int16[this._pos2+4]}
method projectedAnchorY (line 31) | get projectedAnchorY(){return this._structArray.int16[this._pos2+5]}
method projectedAnchorZ (line 31) | get projectedAnchorZ(){return this._structArray.int16[this._pos2+6]}
method rightJustifiedTextSymbolIndex (line 31) | get rightJustifiedTextSymbolIndex(){return this._structArray.int16[thi...
method centerJustifiedTextSymbolIndex (line 31) | get centerJustifiedTextSymbolIndex(){return this._structArray.int16[th...
method leftJustifiedTextSymbolIndex (line 31) | get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this...
method verticalPlacedTextSymbolIndex (line 31) | get verticalPlacedTextSymbolIndex(){return this._structArray.int16[thi...
method placedIconSymbolIndex (line 31) | get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+...
method verticalPlacedIconSymbolIndex (line 31) | get verticalPlacedIconSymbolIndex(){return this._structArray.int16[thi...
method key (line 31) | get key(){return this._structArray.uint16[this._pos2+13]}
method textBoxStartIndex (line 31) | get textBoxStartIndex(){return this._structArray.uint16[this._pos2+14]}
method textBoxEndIndex (line 31) | get textBoxEndIndex(){return this._structArray.uint16[this._pos2+15]}
method verticalTextBoxStartIndex (line 31) | get verticalTextBoxStartIndex(){return this._structArray.uint16[this._...
method verticalTextBoxEndIndex (line 31) | get verticalTextBoxEndIndex(){return this._structArray.uint16[this._po...
method iconBoxStartIndex (line 31) | get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+18]}
method iconBoxEndIndex (line 31) | get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+19]}
method verticalIconBoxStartIndex (line 31) | get verticalIconBoxStartIndex(){return this._structArray.uint16[this._...
method verticalIconBoxEndIndex (line 31) | get verticalIconBoxEndIndex(){return this._structArray.uint16[this._po...
method featureIndex (line 31) | get featureIndex(){return this._structArray.uint16[this._pos2+22]}
method numHorizontalGlyphVertices (line 31) | get numHorizontalGlyphVertices(){return this._structArray.uint16[this....
method numVerticalGlyphVertices (line 31) | get numVerticalGlyphVertices(){return this._structArray.uint16[this._p...
method numIconVertices (line 31) | get numIconVertices(){return this._structArray.uint16[this._pos2+25]}
method numVerticalIconVertices (line 31) | get numVerticalIconVertices(){return this._structArray.uint16[this._po...
method useRuntimeCollisionCircles (line 31) | get useRuntimeCollisionCircles(){return this._structArray.uint16[this....
method crossTileID (line 31) | get crossTileID(){return this._structArray.uint32[this._pos4+14]}
method crossTileID (line 31) | set crossTileID(t){this._structArray.uint32[this._pos4+14]=t;}
method textOffset0 (line 31) | get textOffset0(){return this._structArray.float32[this._pos4+15]}
method textOffset1 (line 31) | get textOffset1(){return this._structArray.float32[this._pos4+16]}
method collisionCircleDiameter (line 31) | get collisionCircleDiameter(){return this._structArray.float32[this._p...
method zOffset (line 31) | get zOffset(){return this._structArray.float32[this._pos4+18]}
method zOffset (line 31) | set zOffset(t){this._structArray.float32[this._pos4+18]=t;}
method hasIconTextFit (line 31) | get hasIconTextFit(){return this._structArray.uint8[this._pos1+76]}
class ou (line 31) | class ou extends Gl{get(t){return new au(this,t)}}
method get (line 31) | get(t){return new au(this,t)}
class lu (line 31) | class lu extends Ql{getoffsetX(t){return this.float32[1*t+0]}}
method getoffsetX (line 31) | getoffsetX(t){return this.float32[1*t+0]}
class uu (line 31) | class uu extends Sl{getx(t){return this.int16[2*t+0]}gety(t){return this...
method getx (line 31) | getx(t){return this.int16[2*t+0]}
method gety (line 31) | gety(t){return this.int16[2*t+1]}
class cu (line 31) | class cu extends _l{get featureIndex(){return this._structArray.uint32[t...
method featureIndex (line 31) | get featureIndex(){return this._structArray.uint32[this._pos4+0]}
method sourceLayerIndex (line 31) | get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}
method bucketIndex (line 31) | get bucketIndex(){return this._structArray.uint16[this._pos2+3]}
method layoutVertexArrayOffset (line 31) | get layoutVertexArrayOffset(){return this._structArray.uint16[this._po...
class hu (line 31) | class hu extends Zl{get(t){return new cu(this,t)}}
method get (line 31) | get(t){return new cu(this,t)}
class pu (line 31) | class pu extends Fl{geta_centroid_pos0(t){return this.uint16[2*t+0]}geta...
method geta_centroid_pos0 (line 31) | geta_centroid_pos0(t){return this.uint16[2*t+0]}
method geta_centroid_pos1 (line 31) | geta_centroid_pos1(t){return this.uint16[2*t+1]}
class mu (line 31) | class mu{constructor(t=[]){this.segments=t;}_prepareSegment(t,e,r,n){let...
method constructor (line 31) | constructor(t=[]){this.segments=t;}
method _prepareSegment (line 31) | _prepareSegment(t,e,r,n){let i=this.segments[this.segments.length-1];r...
method prepareSegment (line 31) | prepareSegment(t,e,r,n){return this._prepareSegment(t,e.length,r.lengt...
method get (line 31) | get(){return this.segments}
method destroy (line 31) | destroy(){for(const t of this.segments)for(const e in t.vaos)t.vaos[e]...
method simpleSegment (line 31) | static simpleSegment(t,e,r,n){return new mu([{vertexOffset:t,primitive...
function yu (line 31) | function yu(t,e){return 256*(t=Ze(Math.floor(t),0,255))+Ze(Math.floor(e)...
class bu (line 31) | class bu{constructor(){this.ids=[],this.uniqueIds=[],this.positions=[],t...
method constructor (line 31) | constructor(){this.ids=[],this.uniqueIds=[],this.positions=[],this.ind...
method add (line 31) | add(t,e,r,n){this.ids.push(vu(t)),this.positions.push(e,r,n);}
method eachPosition (line 31) | eachPosition(t,e){const r=vu(t);let n=0,i=this.ids.length-1;for(;n<i;)...
method serialize (line 31) | static serialize(t,e){const r=new Float64Array(t.ids),n=new Uint32Arra...
method deserialize (line 31) | static deserialize(t){const e=new bu;let r;e.ids=t.ids,e.positions=t.p...
function vu (line 31) | function vu(t){const e=+t;return !isNaN(e)&&Number.MIN_SAFE_INTEGER<=e&&...
function _u (line 31) | function _u(t,e,r,n){for(;r<n;){const i=t[r+n>>1];let s=r-1,a=n+1;for(;;...
function wu (line 31) | function wu(t,e,r){const n=t[e];t[e]=t[r],t[r]=n;}
class Mu (line 31) | class Mu{constructor(t){this.gl=t.gl,this.initialized=!1;}fetchUniformLo...
method constructor (line 31) | constructor(t){this.gl=t.gl,this.initialized=!1;}
method fetchUniformLocation (line 31) | fetchUniformLocation(t,e){return this.location||this.initialized||(thi...
method set (line 31) | set(t,e,r){throw new Error("Uniform#set() must be implemented by each ...
class Au (line 31) | class Au extends Mu{constructor(t){super(t),this.current=0;}set(t,e,r){t...
method constructor (line 31) | constructor(t){super(t),this.current=0;}
method set (line 31) | set(t,e,r){this.fetchUniformLocation(t,e)&&this.current!==r&&(this.cur...
class Su (line 31) | class Su extends Mu{constructor(t){super(t),this.current=0;}set(t,e,r){t...
method constructor (line 31) | constructor(t){super(t),this.current=0;}
method set (line 31) | set(t,e,r){this.fetchUniformLocation(t,e)&&this.current!==r&&(this.cur...
class Iu (line 31) | class Iu extends Mu{constructor(t){super(t),this.current=[0,0];}set(t,e,...
method constructor (line 31) | constructor(t){super(t),this.current=[0,0];}
method set (line 31) | set(t,e,r){this.fetchUniformLocation(t,e)&&(r[0]===this.current[0]&&r[...
class ku (line 31) | class ku extends Mu{constructor(t){super(t),this.current=[0,0,0];}set(t,...
method constructor (line 31) | constructor(t){super(t),this.current=[0,0,0];}
method set (line 31) | set(t,e,r){this.fetchUniformLocation(t,e)&&(r[0]===this.current[0]&&r[...
class Pu (line 31) | class Pu extends Mu{constructor(t){super(t),this.current=[0,0,0,0];}set(...
method constructor (line 31) | constructor(t){super(t),this.current=[0,0,0,0];}
method set (line 31) | set(t,e,r){this.fetchUniformLocation(t,e)&&(r[0]===this.current[0]&&r[...
class Eu (line 31) | class Eu extends Mu{constructor(t){super(t),this.current=jn.transparent;...
method constructor (line 31) | constructor(t){super(t),this.current=jn.transparent;}
method set (line 31) | set(t,e,r){this.fetchUniformLocation(t,e)&&(r.r===this.current.r&&r.g=...
class Tu (line 31) | class Tu extends Mu{constructor(t){super(t),this.current=zu;}set(t,e,r){...
method constructor (line 31) | constructor(t){super(t),this.current=zu;}
method set (line 31) | set(t,e,r){if(this.fetchUniformLocation(t,e)){if(r[12]!==this.current[...
class Ru (line 31) | class Ru extends Mu{constructor(t){super(t),this.current=Cu;}set(t,e,r){...
method constructor (line 31) | constructor(t){super(t),this.current=Cu;}
method set (line 31) | set(t,e,r){if(this.fetchUniformLocation(t,e))for(let t=0;t<4;t++)if(r[...
function Vu (line 31) | function Vu(t){return [yu(255*t.r,255*t.g),yu(255*t.b,255*t.a)]}
class Du (line 31) | class Du{constructor(t,e,r){this.value=t,this.uniformNames=e.map((t=>`u_...
method constructor (line 31) | constructor(t,e,r){this.value=t,this.uniformNames=e.map((t=>`u_${t}`))...
method setUniform (line 31) | setUniform(t,e,r,n,i){e.set(t,i,n.constantOr(this.value));}
method getBinding (line 31) | getBinding(t,e){return "color"===this.type?new Eu(t):new Su(t)}
class Lu (line 31) | class Lu{constructor(t,e){this.uniformNames=e.map((t=>`u_${t}`)),this.pa...
method constructor (line 31) | constructor(t,e){this.uniformNames=e.map((t=>`u_${t}`)),this.pattern=n...
method setConstantPatternPositions (line 31) | setConstantPatternPositions(t){this.pixelRatio=t.pixelRatio||1,this.pa...
method setUniform (line 31) | setUniform(t,e,r,n,i){const s="u_pattern"===i||"u_dash"===i?this.patte...
method getBinding (line 31) | getBinding(t,e){return "u_pattern"===e||"u_dash"===e?new Pu(t):new Su(t)}
class Fu (line 31) | class Fu{constructor(t,e,r,n){this.expression=t,this.type=r,this.maxValu...
method constructor (line 31) | constructor(t,e,r,n){this.expression=t,this.type=r,this.maxValue=0,thi...
method populatePaintArray (line 31) | populatePaintArray(t,e,r,n,i,s,a){const o=this.paintVertexArray.length...
method updatePaintArray (line 31) | updatePaintArray(t,e,r,n,i,s,a){const o=this.expression.evaluate({zoom...
method _setPaintValue (line 31) | _setPaintValue(t,e,r){if("color"===this.type){const n=Vu(r);for(let r=...
method upload (line 31) | upload(t){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(t...
method destroy (line 31) | destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy();}
class Ou (line 31) | class Ou{constructor(t,e,r,n,i,s){this.expression=t,this.uniformNames=e....
method constructor (line 31) | constructor(t,e,r,n,i,s){this.expression=t,this.uniformNames=e.map((t=...
method populatePaintArray (line 31) | populatePaintArray(t,e,r,n,i,s,a){const o=this.expression.evaluate(new...
method updatePaintArray (line 31) | updatePaintArray(t,e,r,n,i,s,a){const o=this.expression.evaluate({zoom...
method _setPaintValue (line 31) | _setPaintValue(t,e,r,n){if("color"===this.type){const i=Vu(r),s=Vu(n);...
method upload (line 31) | upload(t){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(t...
method destroy (line 31) | destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy();}
method setUniform (line 31) | setUniform(t,e,r,n,i){const s=this.useIntegerZoom?Math.floor(r.zoom):r...
method getBinding (line 31) | getBinding(t,e){return new Su(t)}
class Uu (line 31) | class Uu{constructor(t,e,r,n,i){this.expression=t,this.layerId=i,this.pa...
method constructor (line 31) | constructor(t,e,r,n,i){this.expression=t,this.layerId=i,this.paintVert...
method populatePaintArray (line 31) | populatePaintArray(t,e,r){const n=this.paintVertexArray.length;this.pa...
method updatePaintArray (line 31) | updatePaintArray(t,e,r,n,i,s,a){this._setPaintValues(t,e,r.patterns&&r...
method _setPaintValues (line 31) | _setPaintValues(t,e,r,n){if(!n||!r)return;const i=n[r];if(!i)return;co...
method upload (line 31) | upload(t){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(t...
method destroy (line 31) | destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy();}
class Nu (line 31) | class Nu{constructor(t,e,r=(()=>!0)){this.binders={},this._buffers=[];co...
method constructor (line 31) | constructor(t,e,r=(()=>!0)){this.binders={},this._buffers=[];const n=[...
method getMaxValue (line 31) | getMaxValue(t){const e=this.binders[t];return e instanceof Fu||e insta...
method populatePaintArrays (line 31) | populatePaintArrays(t,e,r,n,i,s,a){for(const o in this.binders){const ...
method setConstantPatternPositions (line 31) | setConstantPatternPositions(t){for(const e in this.binders){const r=th...
method updatePaintArrays (line 31) | updatePaintArrays(t,e,r,n,i,s,a,o){let l=!1;const u=Object.keys(t),c=0...
method defines (line 31) | defines(){const t=[];for(const e in this.binders){const r=this.binders...
method getBinderAttributes (line 31) | getBinderAttributes(){const t=[];for(const e in this.binders){const r=...
method getBinderUniforms (line 31) | getBinderUniforms(){const t=[];for(const e in this.binders){const r=th...
method getPaintVertexBuffers (line 31) | getPaintVertexBuffers(){return this._buffers}
method getUniforms (line 31) | getUniforms(t){const e=[];for(const r in this.binders){const n=this.bi...
method setUniforms (line 31) | setUniforms(t,e,r,n,i){for(const{name:e,property:s,binding:a}of r)this...
method updatePaintBuffers (line 31) | updatePaintBuffers(){this._buffers=[];for(const t in this.binders){con...
method upload (line 31) | upload(t){for(const e in this.binders){const r=this.binders[e];(r inst...
method destroy (line 31) | destroy(){for(const t in this.binders){const e=this.binders[t];(e inst...
class ju (line 31) | class ju{constructor(t,e,r=(()=>!0)){this.programConfigurations={};for(c...
method constructor (line 31) | constructor(t,e,r=(()=>!0)){this.programConfigurations={};for(const n ...
method populatePaintArrays (line 31) | populatePaintArrays(t,e,r,n,i,s,a,o){for(const r in this.programConfig...
method updatePaintArrays (line 31) | updatePaintArrays(t,e,r,n,i,s){for(const a of r)this.needsUpload=this....
method get (line 31) | get(t){return this.programConfigurations[t]}
method upload (line 31) | upload(t){if(this.needsUpload){for(const e in this.programConfiguratio...
method destroy (line 31) | destroy(){for(const t in this.programConfigurations)this.programConfig...
function $u (line 31) | function $u(t,e){return qu[t]||[t.replace(`${e}-`,"").replace(/-/g,"_")]}
function Yu (line 31) | function Yu(t,e,r){const n=Gu[t];return n&&n[r]||Qu[e][r]}
function rc (line 31) | function rc(t,e,r,n=Xu){return r=qe(r),[t*Math.sin(r)*n,-e*n,t*Math.cos(...
function nc (line 31) | function nc(t,e,r){return rc(Math.cos(qe(t)),Math.sin(qe(t)),e,r)}
class ac (line 31) | class ac{constructor(t,e){if(isNaN(t)||isNaN(e))throw new Error(`Invalid...
method constructor (line 31) | constructor(t,e){if(isNaN(t)||isNaN(e))throw new Error(`Invalid LngLat...
method wrap (line 31) | wrap(){return new ac(We(this.lng,-180,180),this.lat)}
method toArray (line 31) | toArray(){return [this.lng,this.lat]}
method toString (line 31) | toString(){return `LngLat(${this.lng}, ${this.lat})`}
method distanceTo (line 31) | distanceTo(t){const e=Math.PI/180,r=this.lat*e,n=t.lat*e,i=Math.sin(r)...
method toBounds (line 31) | toBounds(t=0){const e=360*t/40075017,r=e/Math.cos(Math.PI/180*this.lat...
method toEcef (line 31) | toEcef(t){return nc(this.lat,this.lng,Xu+t*Xu/ic)}
method convert (line 31) | static convert(t){if(t instanceof ac)return t;if(Array.isArray(t)&&(2=...
class oc (line 31) | class oc{constructor(t,e){if(t)if(e)this.setSouthWest(t).setNorthEast(e)...
method constructor (line 31) | constructor(t,e){if(t)if(e)this.setSouthWest(t).setNorthEast(e);else i...
method setNorthEast (line 31) | setNorthEast(t){return this._ne=t instanceof ac?new ac(t.lng,t.lat):ac...
method setSouthWest (line 31) | setSouthWest(t){return this._sw=t instanceof ac?new ac(t.lng,t.lat):ac...
method extend (line 31) | extend(t){const e=this._sw,r=this._ne;let n,i;if(t instanceof ac)n=t,i...
method getCenter (line 31) | getCenter(){return new ac((this._sw.lng+this._ne.lng)/2,(this._sw.lat+...
method getSouthWest (line 31) | getSouthWest(){return this._sw}
method getNorthEast (line 31) | getNorthEast(){return this._ne}
method getNorthWest (line 31) | getNorthWest(){return new ac(this.getWest(),this.getNorth())}
method getSouthEast (line 31) | getSouthEast(){return new ac(this.getEast(),this.getSouth())}
method getWest (line 31) | getWest(){return this._sw.lng}
method getSouth (line 31) | getSouth(){return this._sw.lat}
method getEast (line 31) | getEast(){return this._ne.lng}
method getNorth (line 31) | getNorth(){return this._ne.lat}
method toArray (line 31) | toArray(){return [this._sw.toArray(),this._ne.toArray()]}
method toString (line 31) | toString(){return `LngLatBounds(${this._sw.toString()}, ${this._ne.toS...
method isEmpty (line 31) | isEmpty(){return !(this._sw&&this._ne)}
method contains (line 31) | contains(t){const{lng:e,lat:r}=ac.convert(t);let n=this._sw.lng<=e&&e<...
method convert (line 31) | static convert(t){return !t||t instanceof oc?t:new oc(t)}
function e (line 31) | function e(t,e,n){var i=r(256*t,256*(e=Math.pow(2,n)-e-1),n),s=r(256*(t+...
function r (line 31) | function r(t,e,r){var n=2*Math.PI*6378137/256/Math.pow(2,r);return [t*n-...
class cc (line 31) | class cc{constructor(t,e,r){this.z=t,this.x=e,this.y=r,this.key=fc(0,t,t...
method constructor (line 31) | constructor(t,e,r){this.z=t,this.x=e,this.y=r,this.key=fc(0,t,t,e,r);}
method equals (line 31) | equals(t){return this.z===t.z&&this.x===t.x&&this.y===t.y}
method url (line 31) | url(t,e){const r=uc.getTileBBox(this.x,this.y,this.z),n=function(t,e,r...
method toString (line 31) | toString(){return `${this.z}/${this.x}/${this.y}`}
class hc (line 31) | class hc{constructor(t,e){this.wrap=t,this.canonical=e,this.key=fc(t,e.z...
method constructor (line 31) | constructor(t,e){this.wrap=t,this.canonical=e,this.key=fc(t,e.z,e.z,e....
class pc (line 31) | class pc{constructor(t,e,r,n,i){this.overscaledZ=t,this.wrap=e,this.cano...
method constructor (line 31) | constructor(t,e,r,n,i){this.overscaledZ=t,this.wrap=e,this.canonical=n...
method equals (line 31) | equals(t){return this.overscaledZ===t.overscaledZ&&this.wrap===t.wrap&...
method scaledTo (line 31) | scaledTo(t){const e=this.canonical.z-t;return t>this.canonical.z?new p...
method calculateScaledKey (line 31) | calculateScaledKey(t,e=!0){if(this.overscaledZ===t&&e)return this.key;...
method isChildOf (line 31) | isChildOf(t){if(t.wrap!==this.wrap)return !1;const e=this.canonical.z-...
method children (line 31) | children(t){if(this.overscaledZ>=t)return [new pc(this.overscaledZ+1,t...
method isLessThan (line 31) | isLessThan(t){return this.wrap<t.wrap||!(this.wrap>t.wrap)&&(this.over...
method wrapped (line 31) | wrapped(){return new pc(this.overscaledZ,0,this.canonical.z,this.canon...
method unwrapTo (line 31) | unwrapTo(t){return new pc(this.overscaledZ,t,this.canonical.z,this.can...
method overscaleFactor (line 31) | overscaleFactor(){return Math.pow(2,this.overscaledZ-this.canonical.z)}
method toUnwrapped (line 31) | toUnwrapped(){return new hc(this.wrap,this.canonical)}
method toString (line 31) | toString(){return `${this.overscaledZ}/${this.canonical.x}/${this.cano...
function fc (line 31) | function fc(t,e,r,n,i){const s=1<<Math.min(r,22);let a=s*(i%s)+n%s;retur...
function gc (line 31) | function gc(t){return sc*Math.cos(t*Math.PI/180)}
function xc (line 31) | function xc(t){return (180+t)/360}
function bc (line 31) | function bc(t){return (180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Mat...
function vc (line 31) | function vc(t,e){return t/gc(e)}
function _c (line 31) | function _c(t){return 360*t-180}
function wc (line 31) | function wc(t){return 360/Math.PI*Math.atan(Math.exp((180-360*t)*Math.PI...
function Mc (line 31) | function Mc(t,e){return t*gc(wc(e))}
function Sc (line 31) | function Sc(t){return Math.cos(qe(Ze(t,-Ac,Ac)))}
function Ic (line 31) | function Ic(t,e){const r=Ze(e,mc,yc),n=Math.pow(2,r);return Sc(t)*sc/(51...
function kc (line 31) | function kc(t){return 1/Math.cos(t*Math.PI/180)}
function Pc (line 31) | function Pc(t,e=0){const r=Math.exp(Math.PI*(1-(t.y+e/is)/(1<<t.z)*2));r...
class Ec (line 31) | class Ec{constructor(t,e,r=0){this.x=+t,this.y=+e,this.z=+r;}static from...
method constructor (line 31) | constructor(t,e,r=0){this.x=+t,this.y=+e,this.z=+r;}
method fromLngLat (line 31) | static fromLngLat(t,e=0){const r=ac.convert(t);return new Ec(xc(r.lng)...
method toLngLat (line 31) | toLngLat(){return new ac(_c(this.x),wc(this.y))}
method toAltitude (line 31) | toAltitude(){return Mc(this.z,this.y)}
method meterInMercatorCoordinateUnits (line 31) | meterInMercatorCoordinateUnits(){return 1/sc*kc(wc(this.y))}
function zc (line 31) | function zc(t,e,r,n,i,s,a,o,l){const u=(e+n)/2,c=(r+i)/2,h=new Ue(u,c);o...
function Tc (line 31) | function Tc(t,e,r){let n=t[0],i=n.x,s=n.y;e(n);const a=[n];for(let o=1;o...
function Bc (line 31) | function Bc(t,e,r,n){if(n(e,r)){const i=e.add(r)._mult(.5);Bc(t,e,i,n),B...
function Cc (line 31) | function Cc(t,e){let r=t[0];const n=[r];for(let i=1;i<t.length;i++){cons...
function Dc (line 31) | function Dc(t,e){const r=Math.round(t.x*e),n=Math.round(t.y*e);return t....
function Lc (line 31) | function Lc(t,e,r){const n=t.loadGeometry(),i=t.extent,s=is/i;if(e&&r&&r...
function Fc (line 31) | function Fc(t,e){return {type:t.type,id:t.id,properties:t.properties,geo...
function Oc (line 31) | function Oc(t,e,r,n,i){t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2);}
function Uc (line 31) | function Uc(t,e,r){const n=16384;t.emplaceBack(e.x,e.y,e.z,r[0]*n,r[1]*n...
class Nc (line 31) | class Nc{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,...
method constructor (line 31) | constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.la...
method populate (line 31) | populate(t,e,r,n){const i=this.layers[0],s=[];let a=null;"circle"===i....
method update (line 31) | update(t,e,r,n,i){const s=0!==Object.keys(t).length;s&&!this.stateDepe...
method isEmpty (line 31) | isEmpty(){return 0===this.layoutVertexArray.length}
method uploadPending (line 31) | uploadPending(){return !this.uploaded||this.programConfigurations.need...
method upload (line 31) | upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer...
method destroy (line 31) | destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),...
method addFeature (line 31) | addFeature(t,e,r,n,i,s,a){for(const r of e)for(const e of r){const r=e...
function jc (line 31) | function jc(t,e){for(let r=0;r<t.length;r++)if(Wc(e,t[r]))return !0;for(...
function qc (line 31) | function qc(t,e,r){return !!Wc(t,e)||!!Xc(e,t,r)}
function $c (line 31) | function $c(t,e){if(1===t.length)return Kc(e,t[0]);for(let r=0;r<e.lengt...
function Gc (line 31) | function Gc(t,e,r){if(t.length>1){if(Qc(t,e))return !0;for(let n=0;n<e.l...
function Qc (line 31) | function Qc(t,e){if(0===t.length||0===e.length)return !1;for(let r=0;r<t...
function Yc (line 31) | function Yc(t,e,r,n){return pr(t,r,n)!==pr(e,r,n)&&pr(t,e,r)!==pr(t,e,n)}
function Xc (line 31) | function Xc(t,e,r){const n=r*r;if(1===e.length)return t.distSqr(e[0])<n;...
function Zc (line 31) | function Zc(t,e,r){const n=e.distSqr(r);if(0===n)return t.distSqr(e);con...
function Kc (line 31) | function Kc(t,e){let r,n,i,s=!1;for(let a=0;a<t.length;a++){r=t[a];for(l...
function Wc (line 31) | function Wc(t,e){let r=!1;for(let n=0,i=t.length-1;n<t.length;i=n++){con...
function Hc (line 31) | function Hc(t,e,r,n,i){for(const s of t)if(e<=s.x&&r<=s.y&&n>=s.x&&i>=s....
function Jc (line 31) | function Jc(t,e,r){const n=r[0],i=r[2];if(t.x<n.x&&e.x<n.x||t.x>i.x&&e.x...
function th (line 31) | function th(t,e,r,n,i,s){let a=e.y-t.y,o=t.x-e.x;if(s=s||0){const t=a*a+...
function eh (line 31) | function eh(t,e,r,n,i,s,a){return !(th(t,e,n,i,s,a)||th(e,r,n,i,s,a)||th...
function rh (line 31) | function rh(t,e,r){const n=e.paint.get(t).value;return "constant"===n.ki...
function nh (line 31) | function nh(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}
function ih (line 31) | function ih(t,e,r,n,i){if(!e[0]&&!e[1])return t;const s=Ue.convert(e)._m...
function sh (line 31) | function sh(t,e,r,n){const i=Ue.convert(t)._mult(n);return "viewport"===...
class lh (line 31) | class lh{constructor(t,e){this.pos=t,this.dir=e;}intersectsPlane(e,r,n){...
method constructor (line 31) | constructor(t,e){this.pos=t,this.dir=e;}
method intersectsPlane (line 31) | intersectsPlane(e,r,n){const i=t.Q.dot(r,this.dir);if(Math.abs(i)<1e-6...
method closestPointOnSphere (line 31) | closestPointOnSphere(e,r,n){if(t.Q.equals(this.pos,e)||0===r)return n[...
class uh (line 31) | class uh{constructor(t,e,r,n,i){this.TL=t,this.TR=e,this.BR=r,this.BL=n,...
method constructor (line 31) | constructor(t,e,r,n,i){this.TL=t,this.TR=e,this.BR=r,this.BL=n,this.ho...
method fromInvProjectionMatrix (line 31) | static fromInvProjectionMatrix(e,r,n){const i=[-1,1,1],s=[1,1,1],a=[1,...
function ch (line 31) | function ch(e,r,n){let i=1/0,s=-1/0;const a=[];for(const o of e){t.Q.sub...
function hh (line 31) | function hh(e,r){let n=!0;for(let i=0;i<e.planes.length;i++){const s=e.p...
function ph (line 31) | function ph(t,e){for(const r of t.projections){const n=ch(e,t.points[0],...
function fh (line 31) | function fh(e,r){let n=0;const i=[0,0,0,0];for(let s=0;s<e.length;s++)i[...
class dh (line 31) | class dh{constructor(e,r){this.points=e||new Array(8).fill([0,0,0]),this...
method constructor (line 31) | constructor(e,r){this.points=e||new Array(8).fill([0,0,0]),this.planes...
method fromInvProjectionMatrix (line 31) | static fromInvProjectionMatrix(e,r,n,i){const s=Math.pow(2,n),a=[[-1,1...
method intersectsPrecise (line 31) | intersectsPrecise(e,r,n){for(let t=0;t<r.length;t++)if(!fh(e,r[t]))ret...
class mh (line 31) | class mh{static fromPoints(e){const r=[1/0,1/0,1/0],n=[-1/0,-1/0,-1/0];f...
method fromPoints (line 31) | static fromPoints(e){const r=[1/0,1/0,1/0],n=[-1/0,-1/0,-1/0];for(cons...
method fromTileIdAndHeight (line 31) | static fromTileIdAndHeight(t,e,r){const n=1<<t.canonical.z,i=t.canonic...
method applyTransform (line 31) | static applyTransform(e,r){const n=e.getCorners();for(let e=0;e<n.leng...
method projectAabbCorners (line 31) | static projectAabbCorners(e,r){const n=e.getCorners();for(let e=0;e<n....
method constructor (line 31) | constructor(e,r){this.min=e,this.max=r,this.center=t.Q.scale([],t.Q.ad...
method quadrant (line 31) | quadrant(e){const r=[e%2==0,e<2],n=t.Q.clone(this.min),i=t.Q.clone(thi...
method distanceX (line 31) | distanceX(t){return Math.max(Math.min(this.max[0],t[0]),this.min[0])-t...
method distanceY (line 31) | distanceY(t){return Math.max(Math.min(this.max[1],t[1]),this.min[1])-t...
method distanceZ (line 31) | distanceZ(t){return Math.max(Math.min(this.max[2],t[2]),this.min[2])-t...
method getCorners (line 31) | getCorners(){const t=this.min,e=this.max;return [[t[0],t[1],t[2]],[e[0...
method intersects (line 31) | intersects(t){return this.intersectsAabb(t.bounds)?hh(t,this.getCorner...
method intersectsFlat (line 31) | intersectsFlat(t){return this.intersectsAabb(t.bounds)?hh(t,[[this.min...
method intersectsPrecise (line 31) | intersectsPrecise(t,e){return e||this.intersects(t)?ph(t,this.getCorne...
method intersectsPreciseFlat (line 31) | intersectsPreciseFlat(t,e){return e||this.intersectsFlat(t)?ph(t,[[thi...
method intersectsAabb (line 31) | intersectsAabb(t){for(let e=0;e<3;++e)if(this.min[e]>t.max[e]||t.min[e...
method intersectsAabbXY (line 31) | intersectsAabbXY(t){return !(this.min[0]>t.max[0]||t.min[0]>this.max[0...
method encapsulate (line 31) | encapsulate(t){for(let e=0;e<3;e++)this.min[e]=Math.min(this.min[e],t....
method encapsulatePoint (line 31) | encapsulatePoint(t){for(let e=0;e<3;e++)this.min[e]=Math.min(this.min[...
method closestPoint (line 31) | closestPoint(t){return [Math.max(Math.min(this.max[0],t[0]),this.min[0...
function vh (line 31) | function vh(t){return t*Xu/ic}
function wh (line 31) | function wh(e,r,n,i=!0){const s=t.Q.scale([],e._camera.position,e.worldS...
class Mh (line 31) | class Mh{constructor(e,r,n){this.a=t.Q.sub([],e,n),this.b=t.Q.sub([],r,n...
method constructor (line 31) | constructor(e,r,n){this.a=t.Q.sub([],e,n),this.b=t.Q.sub([],r,n),this....
function Ah (line 31) | function Ah(t,e){if(0===t.angle)return null;let r;return r=0===t.a[e]?1/...
function Sh (line 31) | function Sh(t){if(t.z<=1)return _h[t.z+2*t.y+t.x];const e=zh(Eh(t));retu...
function Ih (line 31) | function Ih(e,r,n){return t.Q.scale(e,e,1-n),t.Q.scaleAndAdd(e,e,r,n)}
function kh (line 31) | function kh(e,r,n){for(const i of e)t.Q.transformMat4(i,i,r),t.Q.scale(i...
function Ph (line 31) | function Ph(e,r,n,i){const s=r/e.worldSize,a=e.globeMatrix;if(n.z<=1){co...
function Eh (line 31) | function Eh({x:t,y:e,z:r},n=!1){const i=1/(1<<r),s=new ac(_c(t*i),e===(1...
function zh (line 31) | function zh(t,e=Xu){const r=qe(t.getNorth()),n=qe(t.getSouth()),i=Math.c...
function Th (line 31) | function Th(t,e,r,n){const i=1<<r.z,s=(t/is+r.x)/i;return nc(wc((e/is+r....
function Bh (line 31) | function Bh({min:t,max:e}){return Wu/Math.max(e[0]-t[0],e[1]-t[1],e[2]-t...
function Rh (line 31) | function Rh(e){const r=Bh(e),n=t.a9.fromScaling(Ch,[r,r,r]);return t.a9....
function Vh (line 31) | function Vh(e){const r=t.a9.fromTranslation(Ch,e.min),n=1/Bh(e);return t...
function Dh (line 31) | function Dh(t){const e=is/(2*Math.PI);return t/(2*Math.PI)/e}
function Lh (line 31) | function Lh(t,e){return is/(512*Math.pow(2,t))*Bh(Sh(e))}
function Fh (line 31) | function Fh(e,r,n,i,s){const a=Dh(n),o=[e,r,-n/(2*Math.PI)],l=t.a9.ident...
function Oh (line 31) | function Oh(t){return Ke(Zu,Ku,t)}
function Uh (line 31) | function Uh(e,r){const n=nc(r.lat,r.lng),i=function(e){const r=nc(e._cen...
function Nh (line 31) | function Nh(t,e){return Uh(t,e)>Math.PI/2*1.01}
function Yh (line 31) | function Yh(e,r,n,i,s,a,o,l,u){if(a&&e.queryGeometry.isAboveHorizon)retu...
function Xh (line 31) | function Xh(e,r,n,i){const s=t.aa.transformMat4([],[e,r,n,1],i);return n...
function Wh (line 31) | function Wh(e,r){const n=t.Q.create();return Zh[2]=r,e.intersectsPlane(Z...
class Hh (line 31) | class Hh extends Nc{}
function Jh (line 31) | function Jh(t,{width:e,height:r},n,i){if(i){if(i instanceof Uint8Clamped...
function tp (line 31) | function tp(t,e,r){const{width:n,height:i}=e;n===t.width&&i===t.height||...
function ep (line 31) | function ep(t,e,r,n,i,s,a){if(0===i.width||0===i.height)return e;if(i.wi...
class rp (line 31) | class rp{constructor(t,e){Jh(this,t,1,e);}resize(t){tp(this,new rp(t),1)...
method constructor (line 31) | constructor(t,e){Jh(this,t,1,e);}
method resize (line 31) | resize(t){tp(this,new rp(t),1);}
method clone (line 31) | clone(){return new rp({width:this.width,height:this.height},new Uint8A...
method copy (line 31) | static copy(t,e,r,n,i){ep(t,e,r,n,i,1);}
class np (line 31) | class np{constructor(t,e){Jh(this,t,4,e);}resize(t){tp(this,new np(t),4)...
method constructor (line 31) | constructor(t,e){Jh(this,t,4,e);}
method resize (line 31) | resize(t){tp(this,new np(t),4);}
method replace (line 31) | replace(t,e){e?this.data.set(t):this.data=t instanceof Uint8ClampedArr...
method clone (line 31) | clone(){return new np({width:this.width,height:this.height},new Uint8A...
method copy (line 31) | static copy(t,e,r,n,i,s){ep(t,e,r,n,i,4,s);}
class ip (line 31) | class ip{constructor(t,e){this.width=t.width,this.height=t.height,this.d...
method constructor (line 31) | constructor(t,e){this.width=t.width,this.height=t.height,this.data=e i...
function op (line 31) | function op(t){const e={},r=t.resolution||256,n=t.clips?t.clips.length:1...
function fp (line 31) | function fp(t,e,r){r=r||2;var n,i,s,a,o,l,u,c=e&&e.length,h=c?e[0]*r:t.l...
function dp (line 31) | function dp(t,e,r,n,i){var s,a;if(i===Fp(t,e,r,n)>0)for(s=e;s<r;s+=n)a=V...
function mp (line 31) | function mp(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner|...
function yp (line 31) | function yp(t,e,r,n,i,s,a){if(t){!a&&s&&function(t,e,r,n){var i=t;do{0==...
function gp (line 31) | function gp(t){var e=t.prev,r=t,n=t.next;if(Pp(e,r,n)>=0)return !1;for(v...
function xp (line 31) | function xp(t,e,r,n){var i=t.prev,s=t,a=t.next;if(Pp(i,s,a)>=0)return !1...
function bp (line 31) | function bp(t,e,r){var n=t;do{var i=n.prev,s=n.next.next;!Ep(i,s)&&zp(i,...
function vp (line 31) | function vp(t,e,r,n,i,s){var a=t;do{for(var o=a.next.next;o!==a.prev;){i...
function _p (line 31) | function _p(t,e){return t.x-e.x}
function wp (line 31) | function wp(t,e){var r=function(t,e){var r,n=e,i=t.x,s=t.y,a=-1/0;do{if(...
function Mp (line 31) | function Mp(t,e){return Pp(t.prev,t,e.prev)<0&&Pp(e.next,t,t.next)<0}
function Ap (line 31) | function Ap(t,e,r,n,i){return (t=1431655765&((t=858993459&((t=252645135&...
function Sp (line 31) | function Sp(t){var e=t,r=t;do{(e.x<r.x||e.x===r.x&&e.y<r.y)&&(r=e),e=e.n...
function Ip (line 31) | function Ip(t,e,r,n,i,s,a,o){return (i-a)*(e-o)>=(t-a)*(s-o)&&(t-a)*(n-o...
function kp (line 31) | function kp(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){v...
function Pp (line 31) | function Pp(t,e,r){return (e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}
function Ep (line 31) | function Ep(t,e){return t.x===e.x&&t.y===e.y}
function zp (line 31) | function zp(t,e,r,n){var i=Bp(Pp(t,e,r)),s=Bp(Pp(t,e,n)),a=Bp(Pp(r,n,t))...
function Tp (line 31) | function Tp(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)...
function Bp (line 31) | function Bp(t){return t>0?1:t<0?-1:0}
function Cp (line 31) | function Cp(t,e){return Pp(t.prev,t,t.next)<0?Pp(t,e,t.next)>=0&&Pp(t,t....
function Rp (line 31) | function Rp(t,e){var r=new Lp(t.i,t.x,t.y),n=new Lp(e.i,e.x,e.y),i=t.nex...
function Vp (line 31) | function Vp(t,e,r,n){var i=new Lp(t,e,r);return n?(i.next=n.next,i.prev=...
function Dp (line 31) | function Dp(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.n...
function Lp (line 31) | function Lp(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=n...
function Fp (line 31) | function Fp(t,e,r,n){for(var i=0,s=e,a=r-n;s<r;s+=n)i+=(t[a]-t[s])*(t[s+...
function Up (line 31) | function Up(t,e){const r=t.length;if(r<=1)return [t];const n=[];let i,s;...
function Np (line 31) | function Np(t,e){return e.area-t.area}
function jp (line 31) | function jp(t,e,r){const n=r.patternDependencies;let i=!1;for(const r of...
function qp (line 31) | function qp(t,e,r,n,i){const s=i.patternDependencies;for(const a of e){c...
class $p (line 31) | class $p{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,...
method constructor (line 31) | constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.la...
method populate (line 31) | populate(t,e,r,n){this.hasPattern=jp("fill",this.layers,e);const i=thi...
method update (line 31) | update(t,e,r,n,i){const s=0!==Object.keys(t).length;s&&!this.stateDepe...
method addFeatures (line 31) | addFeatures(t,e,r,n,i,s){for(const t of this.patternFeatures)this.addF...
method isEmpty (line 31) | isEmpty(){return 0===this.layoutVertexArray.length}
method uploadPending (line 31) | uploadPending(){return !this.uploaded||this.programConfigurations.need...
method upload (line 31) | upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer...
method destroy (line 31) | destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),...
method addFeature (line 31) | addFeature(t,e,r,n,i,s=[],a){for(const t of Up(e,500)){let e=0;for(con...
function rf (line 31) | function rf(t,e,r,n,i){this.properties={},this.extent=r,this.type=0,this...
function nf (line 31) | function nf(t,e,r){1==t?e.id=r.readVarint():2==t?function(t,e){for(var r...
function sf (line 31) | function sf(t){for(var e,r,n=0,i=0,s=t.length,a=s-1;i<s;a=i++)n+=((r=t[a...
function c (line 31) | function c(t){for(var e=0;e<t.length;e++){var r=t[e];t[e]=[360*(r.x+a)/s...
method loadTile (line 43) | loadTile(t,s){const{uid:i,encoding:o,rawImageData:r,padding:n}=t,a=Ima...
method getImageData (line 43) | getImageData(e,t){this.offscreenCanvas&&this.offscreenCanvasContext||(...
function lf (line 31) | function lf(t,e){this.version=1,this.name=null,this.extent=4096,this.len...
function uf (line 31) | function uf(t,e,r){15===t?e.version=r.readVarint():1===t?e.name=r.readSt...
function hf (line 31) | function hf(t,e,r){if(3===t){var n=new cf(r,r.readVarint()+r.pos);n.leng...
function df (line 31) | function df(t,e,r,n){const i=[],s=0===n?(t,e,r,n,i,s)=>{t.push(new Ue(s,...
function mf (line 31) | function mf(t,e){return t.x-e.x||t.y-e.y}
function yf (line 31) | function yf(t,e){return 0===mf(t.min,e.min)&&0===mf(t.max,e.max)}
function gf (line 31) | function gf(t,e){return !(t.min.x>e.max.x||t.max.x<e.min.x||t.min.y>e.ma...
function xf (line 31) | function xf(t,e,r){const n=1/is,i=1/(1<<r.canonical.z),s=(e.x*n+r.canoni...
function bf (line 31) | function bf(t,e,r){const n=1<<r.canonical.z,i=((e.x-r.wrap)*n-r.canonica...
function vf (line 31) | function vf(t,e,r,n,i,s,a){const o=t.indices,l=t.vertices,u=[];for(let c...
function _f (line 31) | function _f(t,e,r,n){if(!t||!r)return !1;let i=t.vertices;if(!e.canonica...
class wf (line 31) | class wf{constructor(t){this.size=t,this.minimums=[],this.maximums=[],th...
method constructor (line 31) | constructor(t){this.size=t,this.minimums=[],this.maximums=[],this.leav...
method getElevation (line 31) | getElevation(t,e){const r=this.toIdx(t,e);return {min:this.minimums[r]...
method isLeaf (line 31) | isLeaf(t,e){return this.leaves[this.toIdx(t,e)]}
method toIdx (line 31) | toIdx(t,e){return e*this.size+t}
function Mf (line 31) | function Mf(t,e,r,n){let i=0,s=Number.MAX_VALUE;for(let a=0;a<3;a++)if(M...
function Af (line 31) | function Af(t,e,r,n,i,s,a,o,l,u,c){const h=n-t,p=i-e,f=s-r,d=a-t,m=o-e,y...
function Sf (line 31) | function Sf(t,e,r){return (t-e)/(r-e)}
function If (line 31) | function If(t,e,r,n,i,s,a,o,l){const u=1<<r,c=s-n,h=a-i,p=(t+1)/u*c+n,f=...
class kf (line 31) | class kf{constructor(t){if(this.maximums=[],this.minimums=[],this.leaves...
method constructor (line 31) | constructor(t){if(this.maximums=[],this.minimums=[],this.leaves=[],thi...
method raycastRoot (line 31) | raycastRoot(t,e,r,n,i,s,a=1){return Mf([t,e,-100],[r,n,this.maximums[0...
method raycast (line 31) | raycast(e,r,n,i,s,a,o=1){if(!this.nodeCount)return null;const l=this.r...
method _addNode (line 31) | _addNode(t,e,r){return this.minimums.push(t),this.maximums.push(e),thi...
method _construct (line 31) | _construct(t,e,r,n,i){if(1===t[n].isLeaf(e,r))return;this.childOffsets...
function Pf (line 31) | function Pf(t,e,r,n,i,s){return qn(qn(t,r,s),qn(e,n,s),i)}
function Ef (line 31) | function Ef(t,e,r){const n=r.dim,i=Ze(t*n-.5,0,n-1),s=Ze(e*n-.5,0,n-1),a...
function Tf (line 31) | function Tf(t,e,r){return (256*t*256+256*e+r)/10-1e4}
function Bf (line 31) | function Bf(t,e,r){return 256*t+e+r/256-32768}
class Cf (line 31) | class Cf{get tree(){return this._tree||this._buildQuadTree(),this._tree}...
method tree (line 31) | get tree(){return this._tree||this._buildQuadTree(),this._tree}
method constructor (line 31) | constructor(t,e,r,n=!1){if(this.uid=t,e.height!==e.width)throw new Ran...
method _buildQuadTree (line 31) | _buildQuadTree(){this._tree=new kf(this);}
method get (line 31) | get(t,e,r=!1){r&&(t=Ze(t,-1,this.dim),e=Ze(e,-1,this.dim));const n=thi...
method set (line 31) | set(t,e,r){const n=this._idx(t,e),i=this.floatView[n];return this.floa...
method getUnpackVector (line 31) | static getUnpackVector(t){return zf[t]}
method _idx (line 31) | _idx(t,e){if(t<-1||t>=this.dim+1||e<-1||e>=this.dim+1)throw new RangeE...
method pack (line 31) | static pack(t,e){const r=[0,0,0,0],n=Cf.getUnpackVector(e);let i=Math....
method getPixels (line 31) | getPixels(){return new ip({width:this.stride,height:this.stride},this....
method backfillBorder (line 31) | backfillBorder(t,e,r){if(this.dim!==t.dim)throw new Error("dem dimensi...
method onDeserialize (line 31) | onDeserialize(){this._tree&&(this._tree.dem=this);}
class Rf (line 31) | class Rf{constructor(t,e,r){this._demTile=t,this._dem=this._demTile.dem,...
method constructor (line 31) | constructor(t,e,r){this._demTile=t,this._dem=this._demTile.dem,this._s...
method create (line 31) | static create(t,e,r){const n=r||t.findDEMTileFor(e);if(!n||!n.dem)retu...
method tileCoordToPixel (line 31) | tileCoordToPixel(t,e){const r=e*this._scale+this._offset[1],n=Math.flo...
method getElevationAt (line 31) | getElevationAt(t,e,r,n){const i=t*this._scale+this._offset[0],s=e*this...
method getElevationAtPixel (line 31) | getElevationAtPixel(t,e,r){return this._dem.get(t,e,!!r)}
method getMeterToDEM (line 31) | getMeterToDEM(t){return (1<<this._demTile.tileID.canonical.z)*vc(1,t)*...
function jf (line 31) | function jf(t,e,r,n,i,s,a,o){t.emplaceBack((e<<1)+a,(r<<1)+s,(Math.floor...
function qf (line 31) | function qf(t,e,r,n,i,s){t.emplaceBack(e.x,e.y,(r.x<<1)+n,(r.y<<1)+i,s);}
function $f (line 31) | function $f(t,e,r){const n=16384;t.emplaceBack(e.x,e.y,e.z,r[0]*n,r[1]*n...
class Gf (line 31) | class Gf{constructor(){this.vertexOffset=0,this.vertexCount=0,this.index...
method constructor (l
Condensed preview — 29 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,327K chars).
[
{
"path": ".gitignore",
"chars": 1696,
"preview": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\nlerna-debug.log*\n\n# no lock-file\npackage-lock.json\nyarn"
},
{
"path": ".npmrc",
"chars": 18,
"preview": "package-lock=false"
},
{
"path": "CHANGES.md",
"chars": 872,
"preview": "# 更新日志\n## 2.1.0\n1. 支持多坐标系地形切片生成。\n2. 新增测试数据与测试用例。\n\n## 2.0.0\n核心依赖包变更,从node-gdal变更为node-gdal-async,变更优点如下:\n \n1. gdal版本更新"
},
{
"path": "LICENSE",
"chars": 1514,
"preview": "BSD 3-Clause License\n\nCopyright (c) 2022, 遥想公瑾当年\nAll rights reserved.\n\nRedistribution and use in source and binary forms"
},
{
"path": "README.md",
"chars": 6430,
"preview": "# 简介\n\n根据 DEM 数据生成地形切片工具,使用 NodeJS + GDAL(NodeBinding)开发制作。可用于用户自定义 DEM 高程数据源生产地形瓦片,以便局域网离线使用。\n\n特点:\n\n- 支持 `mapbox` 和 `ter"
},
{
"path": "bin/dem2terrain.js",
"chars": 2801,
"preview": "#!/usr/bin/env node\nconst { program } = require('commander');\nconst main = require('../index');\nconst path = require('pa"
},
{
"path": "config.template.json",
"chars": 133,
"preview": "{\n \"zoom\":\"5-14\",\n \"epsg\": 3857,\n \"encoding\": \"mapbox\",\n \"input\": \"./xxx.tif\",\n \"output\": \"./xxx\",\n \"c"
},
{
"path": "index.js",
"chars": 56,
"preview": "const main = require('./src');\n\nmodule.exports = main;\n\n"
},
{
"path": "package.json",
"chars": 954,
"preview": "{\n \"name\": \"dem2terrain\",\n \"version\": \"2.2.8\",\n \"description\": \"使用 GDAL 制作 DEM 栅格的地形瓦片\",\n \"main\": \"index.js\",\n \"pre"
},
{
"path": "src/createtile.js",
"chars": 4350,
"preview": "const gdal = require('gdal-async');\nconst { getDriverByName } = require('./gdal-util');\nconst { mapboxEncode, terrariumE"
},
{
"path": "src/dem-encode.js",
"chars": 1790,
"preview": "/**\n * MapboxGL raster-dem 编码\n * @param {number} height 高程值\n * @returns {[number, number, number]}\n */\nfunction mapboxEn"
},
{
"path": "src/gdal-util.js",
"chars": 3151,
"preview": "const gdal = require('gdal-async');\n// 根据策略获取对应的采样方法\nfunction getBuildOverviewResampling(resampling) {\n switch (resampl"
},
{
"path": "src/index.js",
"chars": 13441,
"preview": "const gdal = require('gdal-async');\nconst fs = require('fs');\nconst path = require('path');\nconst process = require('pro"
},
{
"path": "src/mbtiles-util.js",
"chars": 1474,
"preview": "const fs = require('fs');\nconst MBTiles = require('@mapbox/mbtiles');\n// 打开mbtiles\nfunction mb_open(mbpath, mode) {\n "
},
{
"path": "src/progressbar/format.js",
"chars": 836,
"preview": "/**\n * \n * @param {string} str \n * @param {Array<any>} params \n * @returns \n */\nfunction format(str, params = []) {\n "
},
{
"path": "src/progressbar/index.js",
"chars": 1971,
"preview": "/**\n * 进度条实现。\n */\nconst log = require('single-line-log').stdout;\nconst format = require('./format');\nconst cliColor = re"
},
{
"path": "src/tile-util.js",
"chars": 2449,
"preview": "// 切片范围\nlet tileBoundMap = new Map();\ntileBoundMap.set(3857, {\n xmin: -20037508.342789244,\n ymin: -20037508.342789"
},
{
"path": "src/util.js",
"chars": 1648,
"preview": "const fs = require('fs');\nconst path = require('path');\nconst s4 = () => {\n return (((1 + Math.random()) * 0x10000) | 0"
},
{
"path": "src/workfarm/child/index.js",
"chars": 1363,
"preview": "'use strict'\n\nlet $module\n\n/*\n let contextProto = this.context;\n while (contextProto = Object.getPrototypeOf(contextPr"
},
{
"path": "src/workfarm/farm.js",
"chars": 9368,
"preview": "'use strict'\n\nconst DEFAULT_OPTIONS = {\n workerOptions : {}\n , maxCallsPerWorker "
},
{
"path": "src/workfarm/fork.js",
"chars": 904,
"preview": "'use strict'\n\nconst childProcess = require('child_process')\n , childModule = require.resolve('./child/index')\n\n\nfunc"
},
{
"path": "src/workfarm/index.js",
"chars": 712,
"preview": "'use strict'\n\nconst Farm = require('./farm')\n\nlet farms = [] // keep record of farms so we can end() them if required\n\n\n"
},
{
"path": "test/app.js",
"chars": 450,
"preview": "const path = require('path');\nconst fs = require('fs');\n\nconst demPath = path.join(__dirname, 'test.tif');\nconst tileDir"
},
{
"path": "test/mapbox-gl.css",
"chars": 35681,
"preview": ".mapboxgl-map{font:12px/20px Helvetica Neue,Arial,Helvetica,sans-serif;overflow:hidden;position:relative;-webkit-tap-hig"
},
{
"path": "test/mapbox-gl.js",
"chars": 1362454,
"preview": "/* Mapbox GL JS is Copyright © 2020 Mapbox and subject to the Mapbox Terms of Service ((https://www.mapbox.com/legal/tos"
},
{
"path": "test/maplibre/maplibre-gl.css",
"chars": 63722,
"preview": ".maplibregl-map{-webkit-tap-highlight-color:rgb(0 0 0/0);font:12px/20px Helvetica Neue,Arial,Helvetica,sans-serif;overfl"
},
{
"path": "test/maplibre/maplibre-gl.js",
"chars": 760246,
"preview": "/* MapLibre GL JS is licensed under the 3-Clause BSD License. Full text of license: https://github.com/maplibre/maplibre"
},
{
"path": "test/terrain_mapbox.html",
"chars": 1566,
"preview": "<!DOCTYPE html>\n<html>\n\n<head>\n <meta charset=\"utf-8\">\n <title>Query terrain elevation</title>\n <meta name=\"viewport\""
}
]
// ... and 1 more files (download for full content)
About this extraction
This page contains the full source code of the FreeGIS/dem2terrain GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 29 files (2.2 MB), approximately 571.7k tokens, and a symbol index with 6754 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.