{"version":3,"file":"index.cjs","sources":["../src/default.ts","../src/image.ts","../../node_modules/async-primitives/dist/index.mjs","../src/wasm/config.json?url","../src/wasm/offloads-nosimd.wasm?url","../src/wasm/offloads-simd-mt.js?url","../src/wasm/offloads-simd-mt.wasm?url","../src/wasm/offloads-simd.wasm?url","../src/wasmHost.ts","../src/runtime.ts","../../node_modules/maplibre-gl/dist/maplibre-gl.js","../src/internalTypes.ts","../src/easing.ts","../src/const.ts","../src/math.ts","../src/interpolation.ts","../src/degreeInterpolation.ts","../src/rotationInterpolation.ts","../src/distanceInterpolation.ts","../src/interpolationChannels.ts","../src/looseQuadTree.ts","../src/shader.ts","../../node_modules/gl-matrix/esm/mat4.js","../src/projectionHost.ts","../src/config.ts","../src/wasmProjectionHost.ts","../src/calculationHost.ts","../src/wasmCalculationHost.ts","../src/utils.ts","../src/atlas.ts","../src/SpriteLayer.ts"],"sourcesContent":["// maplibre-gl-layers - MapLibre's layer extension library enabling\n// the display, movement, and modification of large numbers of dynamic sprite images\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT\n// https://github.com/kekyo/maplibre-gl-layers\n\nimport type {\n  SpriteScalingOptions,\n  SpriteTextureFilteringOptions,\n} from './types';\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Unlimited (default) values that fill in missing {@link SpriteScalingOptions} fields supplied by callers.\n * metersPerPixel is 1.\n */\nexport const UNLIMITED_SPRITE_SCALING_OPTIONS: SpriteScalingOptions = {\n  metersPerPixel: 1.0,\n  zoomMin: 0,\n  zoomMax: 30,\n  scaleMin: 1,\n  scaleMax: 1,\n  spriteMinPixel: 0,\n  spriteMaxPixel: 100000,\n} as const;\n\n/**\n * Standard values that fill in missing {@link SpriteScalingOptions} fields supplied by callers.\n * metersPerPixel is 1.\n */\nexport const STANDARD_SPRITE_SCALING_OPTIONS: SpriteScalingOptions = {\n  metersPerPixel: 1.0,\n  zoomMin: 8.0,\n  zoomMax: 20.0,\n  scaleMin: 0.1,\n  scaleMax: 1.0,\n  spriteMinPixel: 24,\n  spriteMaxPixel: 100,\n} as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Defaulted text filtering options.\n */\nexport const DEFAULT_TEXTURE_FILTERING_OPTIONS: SpriteTextureFilteringOptions =\n  {\n    minFilter: 'linear',\n    magFilter: 'linear',\n    generateMipmaps: false,\n    maxAnisotropy: 1,\n  } as const;\n\n/**\n * Better text filtering options than default options.\n */\nexport const BETTER_TEXTURE_FILTERING_OPTIONS: SpriteTextureFilteringOptions = {\n  minFilter: 'linear-mipmap-linear',\n  magFilter: 'linear',\n  generateMipmaps: true,\n  maxAnisotropy: 8,\n} as const;\n","// maplibre-gl-layers - MapLibre's layer extension library enabling\n// the display, movement, and modification of large numbers of dynamic sprite images\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT\n// https://github.com/kekyo/maplibre-gl-layers\n\nimport type { SpriteImageRegisterOptions } from './types';\n\n//////////////////////////////////////////////////////////////////////////////////////\n\ninterface ParsedSvgSize {\n  readonly width?: number;\n  readonly height?: number;\n  readonly viewBoxWidth?: number;\n  readonly viewBoxHeight?: number;\n  readonly hasViewBox: boolean;\n}\n\nexport type SvgSizeResolutionErrorCode =\n  | 'size-missing'\n  | 'viewbox-disabled'\n  | 'invalid-dimensions';\n\nexport class SvgSizeResolutionError extends Error implements Error {\n  readonly code: SvgSizeResolutionErrorCode;\n\n  constructor(message: string, code: SvgSizeResolutionErrorCode) {\n    super(message);\n    this.name = 'SvgSizeResolutionError';\n    this.code = code;\n  }\n}\n\nconst parseNumericLength = (\n  value: string | null | undefined\n): number | undefined => {\n  if (!value) {\n    return undefined;\n  }\n  const trimmed = value.trim();\n  if (trimmed.length === 0) {\n    return undefined;\n  }\n  const parsed = Number.parseFloat(trimmed);\n  if (!Number.isFinite(parsed) || parsed <= 0) {\n    return undefined;\n  }\n  return parsed;\n};\n\nconst extractStyleLength = (\n  styleValue: string | null | undefined,\n  property: 'width' | 'height'\n): number | undefined => {\n  if (!styleValue) {\n    return undefined;\n  }\n  const declarations = styleValue\n    .split(';')\n    .map((decl) => decl.trim())\n    .filter((decl) => decl.length > 0);\n  for (const declaration of declarations) {\n    const [prop, rawValue] = declaration.split(':');\n    if (!prop || !rawValue) {\n      continue;\n    }\n    if (prop.trim().toLowerCase() === property) {\n      return parseNumericLength(rawValue);\n    }\n  }\n  return undefined;\n};\n\nconst parseSvgSize = (svgText: string): ParsedSvgSize => {\n  try {\n    const doc = new DOMParser().parseFromString(svgText, 'image/svg+xml');\n    const svg = doc.documentElement;\n    if (!svg || svg.tagName.toLowerCase() !== 'svg') {\n      return { hasViewBox: false };\n    }\n\n    const attrWidth = parseNumericLength(svg.getAttribute('width'));\n    const attrHeight = parseNumericLength(svg.getAttribute('height'));\n    const styleWidth = extractStyleLength(svg.getAttribute('style'), 'width');\n    const styleHeight = extractStyleLength(svg.getAttribute('style'), 'height');\n\n    const width = attrWidth ?? styleWidth;\n    const height = attrHeight ?? styleHeight;\n\n    let viewBoxWidth: number | undefined;\n    let viewBoxHeight: number | undefined;\n    let hasViewBox = false;\n    const viewBox = svg.getAttribute('viewBox');\n    if (viewBox) {\n      const parts = viewBox\n        .split(/[\\s,]+/)\n        .map((part) => Number.parseFloat(part))\n        .filter((part) => Number.isFinite(part));\n      if (parts.length === 4) {\n        viewBoxWidth = parts[2]!;\n        viewBoxHeight = parts[3]!;\n        if (viewBoxWidth > 0 && viewBoxHeight > 0) {\n          hasViewBox = true;\n        } else {\n          viewBoxWidth = undefined;\n          viewBoxHeight = undefined;\n        }\n      }\n    }\n\n    return {\n      width: width !== undefined && width > 0 ? width : undefined,\n      height: height !== undefined && height > 0 ? height : undefined,\n      viewBoxWidth,\n      viewBoxHeight,\n      hasViewBox,\n    };\n  } catch {\n    return { hasViewBox: false };\n  }\n};\n\nconst determineSvgRasterDimensions = (\n  parsed: ParsedSvgSize | null,\n  options: SpriteImageRegisterOptions | undefined\n): { width: number; height: number } => {\n  const overrideWidth = options?.width;\n  const overrideHeight = options?.height;\n\n  if (\n    overrideWidth !== undefined &&\n    overrideHeight !== undefined &&\n    overrideWidth > 0 &&\n    overrideHeight > 0\n  ) {\n    return {\n      width: Math.max(1, Math.round(overrideWidth)),\n      height: Math.max(1, Math.round(overrideHeight)),\n    };\n  }\n\n  const intrinsicWidth = parsed?.width;\n  const intrinsicHeight = parsed?.height;\n\n  const hasValidViewBox = Boolean(\n    parsed?.hasViewBox &&\n      parsed.viewBoxWidth !== undefined &&\n      parsed.viewBoxHeight !== undefined &&\n      parsed.viewBoxWidth > 0 &&\n      parsed.viewBoxHeight > 0\n  );\n  const viewBoxAspect = hasValidViewBox\n    ? (parsed!.viewBoxWidth as number) / (parsed!.viewBoxHeight as number)\n    : undefined;\n\n  let baseWidth: number | undefined;\n  let baseHeight: number | undefined;\n  let aspect =\n    intrinsicWidth !== undefined &&\n    intrinsicHeight !== undefined &&\n    intrinsicHeight > 0\n      ? intrinsicWidth / intrinsicHeight\n      : viewBoxAspect;\n\n  if (\n    intrinsicWidth !== undefined &&\n    intrinsicWidth > 0 &&\n    intrinsicHeight !== undefined &&\n    intrinsicHeight > 0\n  ) {\n    baseWidth = intrinsicWidth;\n    baseHeight = intrinsicHeight;\n  } else if (\n    intrinsicWidth !== undefined &&\n    intrinsicWidth > 0 &&\n    aspect !== undefined\n  ) {\n    baseWidth = intrinsicWidth;\n    baseHeight = intrinsicWidth / aspect;\n  } else if (\n    intrinsicHeight !== undefined &&\n    intrinsicHeight > 0 &&\n    aspect !== undefined\n  ) {\n    baseHeight = intrinsicHeight;\n    baseWidth = intrinsicHeight * aspect;\n  } else if (hasValidViewBox && options?.svg?.useViewBoxDimensions) {\n    baseWidth = parsed!.viewBoxWidth as number;\n    baseHeight = parsed!.viewBoxHeight as number;\n    aspect = baseWidth / baseHeight;\n  }\n\n  if (\n    (baseWidth === undefined || baseHeight === undefined) &&\n    hasValidViewBox &&\n    !options?.svg?.useViewBoxDimensions\n  ) {\n    throw new SvgSizeResolutionError(\n      'SVG width/height attributes are missing and useViewBoxDimensions option is disabled.',\n      'viewbox-disabled'\n    );\n  }\n\n  if (baseWidth === undefined || baseHeight === undefined) {\n    throw new SvgSizeResolutionError(\n      'SVG image lacks sufficient sizing information.',\n      'size-missing'\n    );\n  }\n\n  aspect = aspect ?? baseWidth / baseHeight;\n\n  let finalWidth = baseWidth;\n  let finalHeight = baseHeight;\n\n  if (overrideWidth !== undefined && overrideWidth > 0) {\n    finalWidth = overrideWidth;\n    if (overrideHeight === undefined) {\n      if (aspect === undefined) {\n        throw new SvgSizeResolutionError(\n          'Unable to infer SVG height from width; aspect ratio is undefined.',\n          'invalid-dimensions'\n        );\n      }\n      finalHeight = finalWidth / aspect;\n    }\n  }\n\n  if (overrideHeight !== undefined && overrideHeight > 0) {\n    finalHeight = overrideHeight;\n    if (overrideWidth === undefined) {\n      if (aspect === undefined) {\n        throw new SvgSizeResolutionError(\n          'Unable to infer SVG width from height; aspect ratio is undefined.',\n          'invalid-dimensions'\n        );\n      }\n      finalWidth = finalHeight * aspect;\n    }\n  }\n\n  if (\n    !Number.isFinite(finalWidth) ||\n    !Number.isFinite(finalHeight) ||\n    finalWidth <= 0 ||\n    finalHeight <= 0\n  ) {\n    throw new SvgSizeResolutionError(\n      'Resolved SVG dimensions are invalid.',\n      'invalid-dimensions'\n    );\n  }\n\n  return {\n    width: Math.max(1, Math.round(finalWidth)),\n    height: Math.max(1, Math.round(finalHeight)),\n  };\n};\n\nconst isSvgMimeType = (mimeType: string | null): boolean => {\n  if (!mimeType) {\n    return false;\n  }\n  return mimeType.toLowerCase().includes('image/svg');\n};\n\nconst rasterizeSvgWithCanvas = async (\n  blob: Blob,\n  width: number,\n  height: number,\n  options: SpriteImageRegisterOptions | undefined\n): Promise<ImageBitmap> => {\n  if (typeof document === 'undefined') {\n    throw new Error(\n      'SVG rasterization fallback requires a browser environment'\n    );\n  }\n\n  const blobUrl = URL.createObjectURL(blob);\n  try {\n    const image = await new Promise<HTMLImageElement>((resolve, reject) => {\n      const element = new Image();\n      element.onload = () => resolve(element);\n      element.onerror = () =>\n        reject(new Error('Failed to load SVG for rasterization'));\n      element.src = blobUrl;\n    });\n\n    const canvas = document.createElement('canvas');\n    canvas.width = width;\n    canvas.height = height;\n    const ctx = canvas.getContext('2d');\n    if (!ctx) {\n      throw new Error('Failed to acquire 2D context for SVG rasterization');\n    }\n\n    ctx.clearRect(0, 0, width, height);\n    ctx.imageSmoothingEnabled = true;\n    if (options?.resizeQuality === 'pixelated') {\n      ctx.imageSmoothingEnabled = false;\n    } else if (options?.resizeQuality) {\n      ctx.imageSmoothingQuality = options.resizeQuality;\n    }\n    ctx.drawImage(image, 0, 0, width, height);\n\n    try {\n      return await createImageBitmap(canvas);\n    } catch {\n      const canvasBlob = await new Promise<Blob>((resolve, reject) => {\n        canvas.toBlob((result) => {\n          if (result) {\n            resolve(result);\n          } else {\n            reject(\n              new Error('Failed to convert canvas to blob during rasterization')\n            );\n          }\n        });\n      });\n      return await createImageBitmap(canvasBlob);\n    }\n  } finally {\n    URL.revokeObjectURL(blobUrl);\n  }\n};\n\nconst resolveSvgBitmapWithFallback = async (\n  blob: Blob,\n  width: number,\n  height: number,\n  options: SpriteImageRegisterOptions | undefined\n): Promise<ImageBitmap> => {\n  const bitmapOptions: ImageBitmapOptions = {\n    resizeWidth: width,\n    resizeHeight: height,\n  };\n  if (options?.resizeQuality) {\n    bitmapOptions.resizeQuality = options.resizeQuality;\n  }\n\n  try {\n    return await createImageBitmap(blob, bitmapOptions);\n  } catch (error) {\n    return await rasterizeSvgWithCanvas(blob, width, height, options);\n  }\n};\n\nconst internalReadImageBitmap = async (\n  blob: Blob,\n  shouldTreatAsSvg: boolean,\n  options?: SpriteImageRegisterOptions\n): Promise<ImageBitmap> => {\n  const svgOptions = options?.svg;\n\n  if (shouldTreatAsSvg) {\n    let parsed: ParsedSvgSize | null = null;\n    if (svgOptions?.inspectSize !== false) {\n      const text = await blob.text();\n      parsed = parseSvgSize(text);\n    }\n\n    const { width, height } = determineSvgRasterDimensions(parsed, options);\n    return await resolveSvgBitmapWithFallback(blob, width, height, options);\n  }\n\n  return await createImageBitmap(blob, {\n    resizeWidth: options?.width,\n    resizeHeight: options?.height,\n    resizeQuality: options?.resizeQuality,\n  });\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Helper that read an ImageBitmap from a blob.\n * @param blob Target blob.\n * @param options Optional reading options.\n * @returns Promise resolving to the ImageBitmap.\n * @remarks This function helps reading SVG with better manner.\n */\nexport const readImageBitmap = (\n  blob: Blob,\n  options?: SpriteImageRegisterOptions\n): Promise<ImageBitmap> => {\n  const svgOptions = options?.svg;\n  const shouldTreatAsSvg = svgOptions?.assumeSvg === true;\n\n  return internalReadImageBitmap(blob, shouldTreatAsSvg, options);\n};\n\n/**\n * Helper that loads an ImageBitmap from a URL.\n * @param url Target image URL.\n * @param options Optional loading options.\n * @returns Promise resolving to the ImageBitmap.\n * @remarks This function helps loading SVG with better manner.\n */\nexport const loadImageBitmap = async (\n  url: string,\n  options?: SpriteImageRegisterOptions\n): Promise<ImageBitmap> => {\n  const response = await fetch(url);\n  if (!response.ok) {\n    throw new Error(`Failed to fetch image from ${url}`);\n  }\n\n  const mimeType = response.headers.get('content-type');\n  const blob = await response.blob();\n  const shouldTreatAsSvg =\n    options?.svg?.assumeSvg === true || isSvgMimeType(mimeType);\n\n  return await internalReadImageBitmap(blob, shouldTreatAsSvg, options);\n};\n","/*!\n * name: async-primitives\n * version: 1.5.0\n * description: A collection of primitive functions for asynchronous operations\n * author: Kouji Matsui (@kekyo@mi.kekyo.net)\n * license: MIT\n * repository.url: https://github.com/kekyo/async-primitives.git\n * git.commit.hash: cd35465b7e9b9945049186e7eaeecc0bfba65766\n */\nconst __NOOP_HANDLER = () => {\n};\nconst __NOOP_RELEASABLE = {\n  release: __NOOP_HANDLER,\n  [Symbol.dispose]: __NOOP_HANDLER\n};\nconst toAbortError = (reason) => {\n  if (reason instanceof Error) {\n    return reason;\n  }\n  if (typeof reason === \"string\") {\n    return new Error(reason);\n  }\n  return new Error(\"Operation aborted\");\n};\nconst onAbort = (signal, callback) => {\n  if (!signal) {\n    return __NOOP_RELEASABLE;\n  }\n  if (signal.aborted) {\n    try {\n      callback(toAbortError(signal.reason));\n    } catch (error) {\n      console.warn(\"AbortHook callback error: \", error);\n    }\n    return __NOOP_RELEASABLE;\n  }\n  let abortHandler;\n  abortHandler = () => {\n    if (abortHandler) {\n      const reason = signal.reason;\n      signal.removeEventListener(\"abort\", abortHandler);\n      abortHandler = void 0;\n      try {\n        callback(toAbortError(reason));\n      } catch (error) {\n        console.warn(\"AbortHook callback error: \", error);\n      }\n    }\n  };\n  const release = () => {\n    if (abortHandler) {\n      signal.removeEventListener(\"abort\", abortHandler);\n      abortHandler = void 0;\n    }\n  };\n  signal.addEventListener(\"abort\", abortHandler, { once: true });\n  const handle = {\n    release,\n    [Symbol.dispose]: release\n  };\n  return handle;\n};\nconst delay = (msec, signal) => {\n  if (signal) {\n    if (signal.aborted) {\n      throw new Error(\"Delay was aborted\");\n    }\n    return new Promise((resolve, reject) => {\n      const abortHandle = onAbort(signal, () => {\n        clearTimeout(timeoutId);\n        reject(new Error(\"Delay was aborted\"));\n      });\n      const timeoutId = setTimeout(() => {\n        abortHandle.release();\n        resolve();\n      }, msec);\n    });\n  } else {\n    return new Promise((resolve) => {\n      setTimeout(resolve, msec);\n    });\n  }\n};\nconst defer = (fn) => {\n  if (typeof setImmediate === \"function\") {\n    setImmediate(fn);\n  } else {\n    setTimeout(fn, 0);\n  }\n};\nconst ABORTED_ERROR$2 = () => new Error(\"Lock acquisition was aborted\");\nconst createLockHandle = (releaseCallback) => {\n  let isActive = true;\n  const release = () => {\n    if (!isActive) {\n      return;\n    }\n    isActive = false;\n    releaseCallback();\n  };\n  return {\n    get isActive() {\n      return isActive;\n    },\n    release,\n    [Symbol.dispose]: release\n  };\n};\nconst createMutex = (maxConsecutiveCalls = 20) => {\n  let isLocked = false;\n  const queue = [];\n  let count = 0;\n  const processQueue = () => {\n    var _a;\n    if (isLocked || queue.length === 0) {\n      return;\n    }\n    const item = queue.shift();\n    if ((_a = item.signal) == null ? void 0 : _a.aborted) {\n      item.reject(ABORTED_ERROR$2());\n      scheduleNextProcess();\n      return;\n    }\n    isLocked = true;\n    const lockHandle = createLockHandle(releaseLock);\n    item.resolve(lockHandle);\n  };\n  const scheduleNextProcess = () => {\n    count++;\n    if (count >= maxConsecutiveCalls) {\n      count = 0;\n      defer(processQueue);\n    } else {\n      processQueue();\n    }\n  };\n  const releaseLock = () => {\n    if (!isLocked) {\n      return;\n    }\n    isLocked = false;\n    scheduleNextProcess();\n  };\n  const removeFromQueue = (item) => {\n    const index = queue.indexOf(item);\n    if (index !== -1) {\n      queue.splice(index, 1);\n    }\n  };\n  const lock = async (signal) => {\n    if (signal) {\n      if (signal.aborted) {\n        throw ABORTED_ERROR$2();\n      }\n      return new Promise((resolve, reject) => {\n        const queueItem = {\n          resolve: void 0,\n          reject: void 0,\n          signal\n        };\n        const abortHandle = onAbort(signal, () => {\n          removeFromQueue(queueItem);\n          reject(ABORTED_ERROR$2());\n        });\n        queueItem.resolve = (handle) => {\n          abortHandle.release();\n          resolve(handle);\n        };\n        queueItem.reject = (error) => {\n          abortHandle.release();\n          reject(error);\n        };\n        queue.push(queueItem);\n        processQueue();\n      });\n    } else {\n      return new Promise((resolve, reject) => {\n        queue.push({\n          resolve,\n          reject\n        });\n        processQueue();\n      });\n    }\n  };\n  const result = {\n    lock,\n    waiter: {\n      wait: lock\n    },\n    get isLocked() {\n      return isLocked;\n    },\n    get pendingCount() {\n      return queue.length;\n    }\n  };\n  return result;\n};\nconst createDeferred = (signal) => {\n  let resolve;\n  let reject;\n  const promise = new Promise((res, rej) => {\n    resolve = res;\n    reject = rej;\n  });\n  const disposer = onAbort(signal, () => {\n    const _reject = reject;\n    if (_reject) {\n      resolve = void 0;\n      reject = void 0;\n      _reject(new Error(\"Deferred aborted\"));\n    }\n  });\n  return {\n    // The promise that resolves to the result\n    promise,\n    // Resolve the promise with a result\n    resolve: (value) => {\n      const _resolve = resolve;\n      if (_resolve) {\n        resolve = void 0;\n        reject = void 0;\n        disposer.release();\n        _resolve(value);\n      }\n    },\n    // Reject the promise with an error\n    reject: (error) => {\n      const _reject = reject;\n      if (_reject) {\n        resolve = void 0;\n        reject = void 0;\n        disposer.release();\n        _reject(error);\n      }\n    }\n  };\n};\nconst __NOOP_DUMMY_HANDLE = {\n  get isActive() {\n    return false;\n  },\n  release: __NOOP_HANDLER,\n  [Symbol.dispose]: __NOOP_HANDLER\n};\nconst createConditional = () => {\n  const waiters = [];\n  const trigger = () => {\n    if (waiters.length >= 1) {\n      waiters.shift().resolve();\n    }\n  };\n  const wait = async (signal) => {\n    if (signal == null ? void 0 : signal.aborted) {\n      throw new Error(\"Conditional aborted\");\n    }\n    const waiter = createDeferred();\n    waiters.push(waiter);\n    const disposer = onAbort(signal, () => {\n      waiters.splice(waiters.indexOf(waiter), 1);\n      waiter.reject(new Error(\"Conditional aborted\"));\n    });\n    try {\n      await waiter.promise;\n    } finally {\n      disposer.release();\n    }\n    return __NOOP_DUMMY_HANDLE;\n  };\n  const result = {\n    trigger,\n    wait,\n    waiter: {\n      wait\n    }\n  };\n  return result;\n};\nconst createManuallyConditional = (initialState) => {\n  const waiters = [];\n  let raised = initialState != null ? initialState : false;\n  const trigger = () => {\n    raised = false;\n    const waiter = waiters.shift();\n    if (waiter) {\n      waiter.resolve();\n      raised = false;\n    }\n  };\n  const raise = () => {\n    while (waiters.length >= 1) {\n      raised = true;\n      waiters.shift().resolve();\n    }\n    raised = true;\n  };\n  const drop = () => {\n    raised = false;\n  };\n  const wait = async (signal) => {\n    if (raised) {\n      return __NOOP_DUMMY_HANDLE;\n    }\n    if (signal == null ? void 0 : signal.aborted) {\n      throw new Error(\"Conditional aborted\");\n    }\n    const waiter = createDeferred();\n    waiters.push(waiter);\n    const disposer = onAbort(signal, () => {\n      waiters.splice(waiters.indexOf(waiter), 1);\n      waiter.reject(new Error(\"Conditional aborted\"));\n    });\n    try {\n      await waiter.promise;\n    } finally {\n      disposer.release();\n    }\n    return __NOOP_DUMMY_HANDLE;\n  };\n  const result = {\n    trigger,\n    raise,\n    drop,\n    wait,\n    waiter: {\n      wait\n    }\n  };\n  return result;\n};\nconst createDeferredGenerator = (options) => {\n  const maxItemReserved = options == null ? void 0 : options.maxItemReserved;\n  const signal = options == null ? void 0 : options.signal;\n  const queue = [];\n  const arrived = createManuallyConditional();\n  const canReserve = maxItemReserved ? createManuallyConditional(true) : void 0;\n  const generator = (async function* () {\n    while (true) {\n      while (true) {\n        const item = queue.shift();\n        if (maxItemReserved && queue.length === maxItemReserved - 1) {\n          canReserve.raise();\n        }\n        if (!item) {\n          break;\n        }\n        switch (item.kind) {\n          // Yield return a value\n          case \"value\":\n            yield item.value;\n            break;\n          // Completed, exit the generator\n          case \"completed\":\n            return;\n          // Error, throw an error\n          case \"error\":\n            throw item.error;\n        }\n        if (signal == null ? void 0 : signal.aborted) {\n          throw new Error(\"Deferred generator aborted\");\n        }\n      }\n      arrived.drop();\n      try {\n        await arrived.wait(signal);\n      } catch (error) {\n        if (error instanceof Error && error.message === \"Conditional aborted\") {\n          error.message = \"Deferred generator aborted\";\n        }\n        throw error;\n      }\n    }\n  })();\n  const enqueue = async (item, signal2) => {\n    while (true) {\n      if (!maxItemReserved || queue.length < maxItemReserved) {\n        const remains = queue.push(item);\n        if (remains === 1) {\n          arrived.raise();\n        }\n        if (remains === maxItemReserved) {\n          canReserve.drop();\n        }\n        break;\n      }\n      try {\n        await canReserve.wait(signal2);\n      } catch (error) {\n        if (error instanceof Error && error.message === \"Conditional aborted\") {\n          error.message = \"Deferred generator aborted\";\n        }\n        throw error;\n      }\n    }\n  };\n  return {\n    // The async generator that yields values\n    generator,\n    // Yield a value to the generator\n    yield: (value, signal2) => enqueue({ kind: \"value\", value }, signal2),\n    // Complete the generator (equivalent to return)\n    return: (signal2) => enqueue({ kind: \"completed\" }, signal2),\n    // Throw an error to the generator\n    throw: (error, signal2) => enqueue({ kind: \"error\", error }, signal2)\n  };\n};\nconst createLogicalContext = (id) => {\n  return { id, data: /* @__PURE__ */ new Map() };\n};\nlet currentLogicalContext = createLogicalContext(Symbol(\"[root]\"));\nconst setCurrentLogicalContext = (context) => {\n  currentLogicalContext = context;\n};\nconst trampoline = (adjustment, callback, thisArg, ...args) => {\n  const previousLogicalContext = currentLogicalContext;\n  currentLogicalContext = adjustment.contextToUse;\n  try {\n    return callback.call(thisArg, ...args);\n  } finally {\n    adjustment.contextAfter = currentLogicalContext;\n    currentLogicalContext = previousLogicalContext;\n  }\n};\nlet isPrepared = false;\nconst prepare = () => {\n  if (isPrepared) {\n    return;\n  }\n  isPrepared = true;\n  if (typeof globalThis.setTimeout !== \"undefined\") {\n    const __setTimeout = globalThis.setTimeout;\n    globalThis.setTimeout = ((handler, timeout, ...args) => {\n      const capturedLogicalContext = currentLogicalContext;\n      return __setTimeout(\n        (...args2) => {\n          const adjustment = {\n            contextToUse: capturedLogicalContext\n          };\n          trampoline(adjustment, handler, void 0, ...args2);\n        },\n        timeout,\n        ...args\n      );\n    });\n  }\n  if (typeof globalThis.setInterval !== \"undefined\") {\n    const __setInterval = globalThis.setInterval;\n    globalThis.setInterval = ((handler, timeout, ...args) => {\n      const capturedLogicalContext = currentLogicalContext;\n      return __setInterval(\n        (...args2) => {\n          const adjustment = {\n            contextToUse: capturedLogicalContext\n          };\n          trampoline(adjustment, handler, void 0, ...args2);\n        },\n        timeout,\n        ...args\n      );\n    });\n  }\n  if (typeof globalThis.queueMicrotask !== \"undefined\") {\n    const __queueMicrotask = globalThis.queueMicrotask;\n    globalThis.queueMicrotask = (callback) => {\n      const capturedLogicalContext = currentLogicalContext;\n      return __queueMicrotask(() => {\n        const adjustment = {\n          contextToUse: capturedLogicalContext\n        };\n        trampoline(adjustment, callback, void 0);\n      });\n    };\n  }\n  if (typeof globalThis.setImmediate !== \"undefined\") {\n    const __setImmediate = globalThis.setImmediate;\n    globalThis.setImmediate = ((callback, ...args) => {\n      const capturedLogicalContext = currentLogicalContext;\n      return __setImmediate(\n        (...callbackArgs) => {\n          const adjustment = {\n            contextToUse: capturedLogicalContext\n          };\n          trampoline(adjustment, callback, void 0, ...callbackArgs);\n        },\n        ...args\n      );\n    });\n  }\n  if (typeof process !== \"undefined\" && process.nextTick) {\n    const __nextTick = process.nextTick;\n    process.nextTick = (callback, ...args) => {\n      const capturedLogicalContext = currentLogicalContext;\n      return __nextTick(() => {\n        const adjustment = {\n          contextToUse: capturedLogicalContext\n        };\n        trampoline(adjustment, callback, void 0, ...args);\n      });\n    };\n  }\n  if (typeof Promise !== \"undefined\") {\n    const __then = Promise.prototype.then;\n    const __catch = Promise.prototype.catch;\n    const __finally = Promise.prototype.finally;\n    Promise.prototype.then = function(onFulfilled, onRejected) {\n      const capturedLogicalContext = currentLogicalContext;\n      const resultPromise = __then.call(\n        this,\n        onFulfilled ? (value) => {\n          const adjustment = {\n            contextToUse: capturedLogicalContext\n          };\n          return trampoline(adjustment, onFulfilled, void 0, value);\n        } : void 0,\n        onRejected ? (reason) => {\n          const adjustment = {\n            contextToUse: capturedLogicalContext\n          };\n          return trampoline(adjustment, onRejected, void 0, reason);\n        } : void 0\n      );\n      return resultPromise;\n    };\n    Promise.prototype.catch = function(onRejected) {\n      const capturedLogicalContext = currentLogicalContext;\n      const resultPromise = __catch.call(\n        this,\n        onRejected ? (reason) => {\n          const adjustment = {\n            contextToUse: capturedLogicalContext\n          };\n          return trampoline(adjustment, onRejected, void 0, reason);\n        } : void 0\n      );\n      return resultPromise;\n    };\n    Promise.prototype.finally = function(onFinally) {\n      const capturedLogicalContext = currentLogicalContext;\n      const resultPromise = __finally.call(\n        this,\n        onFinally ? () => {\n          const adjustment = {\n            contextToUse: capturedLogicalContext\n          };\n          return trampoline(adjustment, onFinally, void 0);\n        } : void 0\n      );\n      return resultPromise;\n    };\n  }\n  if (typeof EventTarget !== \"undefined\" && EventTarget.prototype && EventTarget.prototype.addEventListener) {\n    const __eventTargetAddEventListener = EventTarget.prototype.addEventListener;\n    EventTarget.prototype.addEventListener = function(type, listener, options) {\n      if (listener === null || listener === void 0) {\n        return __eventTargetAddEventListener.call(\n          this,\n          type,\n          listener,\n          options\n        );\n      }\n      if (typeof listener === \"function\") {\n        const capturedLogicalContext = currentLogicalContext;\n        const wrappedListener = (event) => {\n          const adjustment = {\n            contextToUse: capturedLogicalContext\n          };\n          return trampoline(adjustment, listener, event.currentTarget, event);\n        };\n        return __eventTargetAddEventListener.call(\n          this,\n          type,\n          wrappedListener,\n          options\n        );\n      } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n        const capturedLogicalContext = currentLogicalContext;\n        const wrappedListener = {\n          handleEvent: (event) => {\n            const adjustment = {\n              contextToUse: capturedLogicalContext\n            };\n            return trampoline(adjustment, () => listener.handleEvent(event));\n          }\n        };\n        return __eventTargetAddEventListener.call(\n          this,\n          type,\n          wrappedListener,\n          options\n        );\n      }\n      return __eventTargetAddEventListener.call(\n        this,\n        type,\n        listener,\n        options\n      );\n    };\n  }\n  if (typeof Element !== \"undefined\" && Element.prototype && Element.prototype.addEventListener) {\n    const __elementAddEventListener = Element.prototype.addEventListener;\n    Element.prototype.addEventListener = function(type, listener, options) {\n      if (listener === null || listener === void 0) {\n        return __elementAddEventListener.call(\n          this,\n          type,\n          listener,\n          options\n        );\n      }\n      if (typeof listener === \"function\") {\n        const capturedLogicalContext = currentLogicalContext;\n        const wrappedListener = (event) => {\n          const adjustment = {\n            contextToUse: capturedLogicalContext\n          };\n          return trampoline(adjustment, listener, event.currentTarget, event);\n        };\n        return __elementAddEventListener.call(\n          this,\n          type,\n          wrappedListener,\n          options\n        );\n      } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n        const capturedLogicalContext = currentLogicalContext;\n        const wrappedListener = {\n          handleEvent: (event) => {\n            const adjustment = {\n              contextToUse: capturedLogicalContext\n            };\n            return trampoline(adjustment, () => listener.handleEvent(event));\n          }\n        };\n        return __elementAddEventListener.call(\n          this,\n          type,\n          wrappedListener,\n          options\n        );\n      }\n      return __elementAddEventListener.call(\n        this,\n        type,\n        listener,\n        options\n      );\n    };\n  }\n  if (typeof globalThis.requestAnimationFrame !== \"undefined\") {\n    const __requestAnimationFrame = globalThis.requestAnimationFrame;\n    globalThis.requestAnimationFrame = (callback) => {\n      const capturedLogicalContext = currentLogicalContext;\n      return __requestAnimationFrame((time) => {\n        const adjustment = {\n          contextToUse: capturedLogicalContext\n        };\n        return trampoline(adjustment, callback, void 0, time);\n      });\n    };\n  }\n  if (typeof globalThis.XMLHttpRequest !== \"undefined\") {\n    const __XMLHttpRequest = globalThis.XMLHttpRequest;\n    globalThis.XMLHttpRequest = class extends __XMLHttpRequest {\n      constructor() {\n        super();\n        this._userHandlers = /* @__PURE__ */ new Map();\n        const eventHandlerProperties = [\n          \"onreadystatechange\",\n          \"onloadstart\",\n          \"onprogress\",\n          \"onabort\",\n          \"onerror\",\n          \"onload\",\n          \"ontimeout\",\n          \"onloadend\"\n        ];\n        eventHandlerProperties.forEach((prop) => {\n          Object.defineProperty(this, prop, {\n            get: () => this._userHandlers.get(prop) || null,\n            set: (newHandler) => {\n              this._userHandlers.set(prop, newHandler);\n              if (newHandler && typeof newHandler === \"function\") {\n                const capturedLogicalContext = currentLogicalContext;\n                const wrappedHandler = function(event) {\n                  const adjustment = {\n                    contextToUse: capturedLogicalContext\n                  };\n                  return trampoline(adjustment, newHandler, this, event);\n                };\n                const parentProto = Object.getPrototypeOf(\n                  Object.getPrototypeOf(this)\n                );\n                const descriptor = Object.getOwnPropertyDescriptor(\n                  parentProto,\n                  prop\n                );\n                if (descriptor && descriptor.set) {\n                  descriptor.set.call(this, wrappedHandler);\n                } else {\n                  this[`_${prop}`] = wrappedHandler;\n                }\n              } else {\n                const parentProto = Object.getPrototypeOf(\n                  Object.getPrototypeOf(this)\n                );\n                const descriptor = Object.getOwnPropertyDescriptor(\n                  parentProto,\n                  prop\n                );\n                if (descriptor && descriptor.set) {\n                  descriptor.set.call(this, null);\n                } else {\n                  this[`_${prop}`] = null;\n                }\n              }\n            },\n            configurable: true,\n            enumerable: true\n          });\n        });\n      }\n      addEventListener(type, listener, options) {\n        const capturedLogicalContext = currentLogicalContext;\n        if (!listener) {\n          return super.addEventListener(type, listener, options);\n        }\n        if (typeof listener === \"function\") {\n          const wrappedListener = (event) => {\n            const adjustment = {\n              contextToUse: capturedLogicalContext\n            };\n            return trampoline(adjustment, listener, event.currentTarget, event);\n          };\n          return super.addEventListener(type, wrappedListener, options);\n        } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n          const wrappedListener = {\n            handleEvent: (event) => {\n              const adjustment = {\n                contextToUse: capturedLogicalContext\n              };\n              return trampoline(adjustment, () => listener.handleEvent(event));\n            }\n          };\n          return super.addEventListener(type, wrappedListener, options);\n        }\n        return super.addEventListener(type, listener, options);\n      }\n    };\n  }\n  if (typeof globalThis.WebSocket !== \"undefined\") {\n    const __WebSocket = globalThis.WebSocket;\n    globalThis.WebSocket = class extends __WebSocket {\n      constructor(url, protocols) {\n        super(url, protocols);\n        this._userHandlers = /* @__PURE__ */ new Map();\n        const eventHandlerProperties = [\n          \"onopen\",\n          \"onmessage\",\n          \"onerror\",\n          \"onclose\"\n        ];\n        eventHandlerProperties.forEach((prop) => {\n          Object.defineProperty(this, prop, {\n            get: () => this._userHandlers.get(prop) || null,\n            set: (newHandler) => {\n              this._userHandlers.set(prop, newHandler);\n              if (newHandler && typeof newHandler === \"function\") {\n                const capturedLogicalContext = currentLogicalContext;\n                const wrappedHandler = function(event) {\n                  const adjustment = {\n                    contextToUse: capturedLogicalContext\n                  };\n                  return trampoline(adjustment, newHandler, this, event);\n                };\n                const parentProto = Object.getPrototypeOf(\n                  Object.getPrototypeOf(this)\n                );\n                const descriptor = Object.getOwnPropertyDescriptor(\n                  parentProto,\n                  prop\n                );\n                if (descriptor && descriptor.set) {\n                  descriptor.set.call(this, wrappedHandler);\n                } else {\n                  this[`_${prop}`] = wrappedHandler;\n                }\n              } else {\n                const parentProto = Object.getPrototypeOf(\n                  Object.getPrototypeOf(this)\n                );\n                const descriptor = Object.getOwnPropertyDescriptor(\n                  parentProto,\n                  prop\n                );\n                if (descriptor && descriptor.set) {\n                  descriptor.set.call(this, null);\n                } else {\n                  this[`_${prop}`] = null;\n                }\n              }\n            },\n            configurable: true,\n            enumerable: true\n          });\n        });\n      }\n      addEventListener(type, listener, options) {\n        const capturedLogicalContext = currentLogicalContext;\n        if (!listener) {\n          return super.addEventListener(type, listener, options);\n        }\n        if (typeof listener === \"function\") {\n          const wrappedListener = (event) => {\n            const adjustment = {\n              contextToUse: capturedLogicalContext\n            };\n            return trampoline(adjustment, listener, event.currentTarget, event);\n          };\n          return super.addEventListener(type, wrappedListener, options);\n        } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n          const wrappedListener = {\n            handleEvent: (event) => {\n              const adjustment = {\n                contextToUse: capturedLogicalContext\n              };\n              return trampoline(adjustment, () => listener.handleEvent(event));\n            }\n          };\n          return super.addEventListener(type, wrappedListener, options);\n        }\n        return super.addEventListener(type, listener, options);\n      }\n    };\n  }\n  if (typeof globalThis.MutationObserver !== \"undefined\") {\n    const __MutationObserver = globalThis.MutationObserver;\n    globalThis.MutationObserver = class extends __MutationObserver {\n      constructor(callback) {\n        const capturedLogicalContext = currentLogicalContext;\n        const wrappedCallback = (mutations, observer) => {\n          const adjustment = {\n            contextToUse: capturedLogicalContext\n          };\n          return trampoline(\n            adjustment,\n            callback,\n            void 0,\n            mutations,\n            observer\n          );\n        };\n        super(wrappedCallback);\n      }\n    };\n  }\n  if (typeof globalThis.ResizeObserver !== \"undefined\") {\n    const __ResizeObserver = globalThis.ResizeObserver;\n    globalThis.ResizeObserver = class extends __ResizeObserver {\n      constructor(callback) {\n        const capturedLogicalContext = currentLogicalContext;\n        const wrappedCallback = (entries, observer) => {\n          const adjustment = {\n            contextToUse: capturedLogicalContext\n          };\n          return trampoline(adjustment, callback, void 0, entries, observer);\n        };\n        super(wrappedCallback);\n      }\n    };\n  }\n  if (typeof globalThis.IntersectionObserver !== \"undefined\") {\n    const __IntersectionObserver = globalThis.IntersectionObserver;\n    globalThis.IntersectionObserver = class extends __IntersectionObserver {\n      constructor(callback, options) {\n        const capturedLogicalContext = currentLogicalContext;\n        const wrappedCallback = (entries, observer) => {\n          const adjustment = {\n            contextToUse: capturedLogicalContext\n          };\n          return trampoline(adjustment, callback, void 0, entries, observer);\n        };\n        super(wrappedCallback, options);\n      }\n    };\n  }\n  if (typeof globalThis.Worker !== \"undefined\") {\n    const __Worker = globalThis.Worker;\n    globalThis.Worker = class extends __Worker {\n      constructor(scriptURL, options) {\n        super(scriptURL, options);\n        this._userHandlers = /* @__PURE__ */ new Map();\n        const eventHandlerProperties = [\n          \"onmessage\",\n          \"onmessageerror\",\n          \"onerror\"\n        ];\n        eventHandlerProperties.forEach((prop) => {\n          Object.defineProperty(this, prop, {\n            get: () => this._userHandlers.get(prop) || null,\n            set: (newHandler) => {\n              this._userHandlers.set(prop, newHandler);\n              if (newHandler && typeof newHandler === \"function\") {\n                const capturedLogicalContext = currentLogicalContext;\n                const wrappedHandler = function(event) {\n                  const adjustment = {\n                    contextToUse: capturedLogicalContext\n                  };\n                  return trampoline(adjustment, newHandler, this, event);\n                };\n                const parentProto = Object.getPrototypeOf(\n                  Object.getPrototypeOf(this)\n                );\n                const descriptor = Object.getOwnPropertyDescriptor(\n                  parentProto,\n                  prop\n                );\n                if (descriptor && descriptor.set) {\n                  descriptor.set.call(this, wrappedHandler);\n                } else {\n                  this[`_${prop}`] = wrappedHandler;\n                }\n              } else {\n                const parentProto = Object.getPrototypeOf(\n                  Object.getPrototypeOf(this)\n                );\n                const descriptor = Object.getOwnPropertyDescriptor(\n                  parentProto,\n                  prop\n                );\n                if (descriptor && descriptor.set) {\n                  descriptor.set.call(this, null);\n                } else {\n                  this[`_${prop}`] = null;\n                }\n              }\n            },\n            configurable: true,\n            enumerable: true\n          });\n        });\n      }\n      addEventListener(type, listener, options) {\n        const capturedLogicalContext = currentLogicalContext;\n        if (!listener) {\n          return super.addEventListener(type, listener, options);\n        }\n        if (typeof listener === \"function\") {\n          const wrappedListener = (event) => {\n            const adjustment = {\n              contextToUse: capturedLogicalContext\n            };\n            return trampoline(adjustment, listener, event.currentTarget, event);\n          };\n          return super.addEventListener(type, wrappedListener, options);\n        } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n          const wrappedListener = {\n            handleEvent: (event) => {\n              const adjustment = {\n                contextToUse: capturedLogicalContext\n              };\n              return trampoline(adjustment, () => listener.handleEvent(event));\n            }\n          };\n          return super.addEventListener(type, wrappedListener, options);\n        }\n        return super.addEventListener(type, listener, options);\n      }\n    };\n  }\n  if (typeof globalThis.MessagePort !== \"undefined\") {\n    const __MessagePort = globalThis.MessagePort;\n    const createMessagePortWrapper = (originalPort) => {\n      const _userHandlers = /* @__PURE__ */ new Map();\n      const eventHandlerProperties = [\"onmessage\", \"onmessageerror\"];\n      eventHandlerProperties.forEach((prop) => {\n        Object.defineProperty(originalPort, prop, {\n          get: () => _userHandlers.get(prop) || null,\n          set: (newHandler) => {\n            _userHandlers.set(prop, newHandler);\n            if (newHandler && typeof newHandler === \"function\") {\n              const capturedLogicalContext = currentLogicalContext;\n              const wrappedHandler = function(event) {\n                const adjustment = {\n                  contextToUse: capturedLogicalContext\n                };\n                return trampoline(adjustment, newHandler, this, event);\n              };\n              const descriptor = Object.getOwnPropertyDescriptor(\n                __MessagePort.prototype,\n                prop\n              );\n              if (descriptor && descriptor.set) {\n                descriptor.set.call(originalPort, wrappedHandler);\n              }\n            } else {\n              const descriptor = Object.getOwnPropertyDescriptor(\n                __MessagePort.prototype,\n                prop\n              );\n              if (descriptor && descriptor.set) {\n                descriptor.set.call(originalPort, null);\n              }\n            }\n          },\n          configurable: true,\n          enumerable: true\n        });\n      });\n      const originalAddEventListener = originalPort.addEventListener;\n      originalPort.addEventListener = function(type, listener, options) {\n        const capturedLogicalContext = currentLogicalContext;\n        if (!listener) {\n          return originalAddEventListener.call(\n            this,\n            type,\n            listener,\n            options\n          );\n        }\n        if (typeof listener === \"function\") {\n          const wrappedListener = (event) => {\n            const adjustment = {\n              contextToUse: capturedLogicalContext\n            };\n            return trampoline(adjustment, listener, event.currentTarget, event);\n          };\n          return originalAddEventListener.call(\n            this,\n            type,\n            wrappedListener,\n            options\n          );\n        } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n          const wrappedListener = {\n            handleEvent: (event) => {\n              const adjustment = {\n                contextToUse: capturedLogicalContext\n              };\n              return trampoline(adjustment, () => listener.handleEvent(event));\n            }\n          };\n          return originalAddEventListener.call(\n            this,\n            type,\n            wrappedListener,\n            options\n          );\n        }\n        return originalAddEventListener.call(this, type, listener, options);\n      };\n      return originalPort;\n    };\n    if (typeof globalThis.MessageChannel !== \"undefined\") {\n      const __MessageChannel = globalThis.MessageChannel;\n      globalThis.MessageChannel = class extends __MessageChannel {\n        constructor() {\n          super();\n          createMessagePortWrapper(this.port1);\n          createMessagePortWrapper(this.port2);\n        }\n      };\n    }\n  }\n};\nconst setLogicalContextValue = (key, value) => {\n  prepare();\n  if (value !== void 0) {\n    currentLogicalContext.data.set(key, value);\n  } else {\n    currentLogicalContext.data.delete(key);\n  }\n};\nconst getLogicalContextValue = (key) => {\n  prepare();\n  return currentLogicalContext.data.get(key);\n};\nconst runOnNewLogicalContext = (prefix, handler) => {\n  const previousLogicalContext = currentLogicalContext;\n  setCurrentLogicalContext(\n    createLogicalContext(Symbol(`${prefix}-${crypto.randomUUID()}`))\n  );\n  try {\n    return handler();\n  } finally {\n    setCurrentLogicalContext(previousLogicalContext);\n  }\n};\nconst getCurrentLogicalContextId = () => {\n  prepare();\n  return currentLogicalContext.id;\n};\nconst createAsyncLocal = () => {\n  const key = Symbol(`async-local-${crypto.randomUUID()}`);\n  return {\n    setValue: (value) => {\n      setLogicalContextValue(key, value);\n    },\n    getValue: () => {\n      return getLogicalContextValue(key);\n    }\n  };\n};\nconst ABORTED_ERROR$1 = () => new Error(\"Semaphore acquisition was aborted\");\nconst INVALID_COUNT_ERROR = () => new Error(\"Semaphore count must be greater than 0\");\nconst createSemaphoreHandle = (releaseCallback) => {\n  let isActive = true;\n  const release = () => {\n    if (!isActive) {\n      return;\n    }\n    isActive = false;\n    releaseCallback();\n  };\n  return {\n    get isActive() {\n      return isActive;\n    },\n    release,\n    [Symbol.dispose]: release\n  };\n};\nconst createSemaphore = (count, maxConsecutiveCalls = 20) => {\n  if (count < 1) {\n    throw INVALID_COUNT_ERROR();\n  }\n  let availableCount = count;\n  const queue = [];\n  let consecutiveCallCount = 0;\n  const processQueue = () => {\n    var _a;\n    while (availableCount > 0 && queue.length > 0) {\n      const item = queue.shift();\n      if ((_a = item.signal) == null ? void 0 : _a.aborted) {\n        item.reject(ABORTED_ERROR$1());\n        continue;\n      }\n      availableCount--;\n      const semaphoreHandle = createSemaphoreHandle(releaseSemaphore);\n      item.resolve(semaphoreHandle);\n    }\n  };\n  const scheduleNextProcess = () => {\n    consecutiveCallCount++;\n    if (consecutiveCallCount >= maxConsecutiveCalls) {\n      consecutiveCallCount = 0;\n      defer(processQueue);\n    } else {\n      processQueue();\n    }\n  };\n  const releaseSemaphore = () => {\n    availableCount++;\n    scheduleNextProcess();\n  };\n  const removeFromQueue = (item) => {\n    const index = queue.indexOf(item);\n    if (index !== -1) {\n      queue.splice(index, 1);\n    }\n  };\n  const acquire = async (signal) => {\n    if (signal) {\n      if (signal.aborted) {\n        throw ABORTED_ERROR$1();\n      }\n      if (availableCount > 0) {\n        availableCount--;\n        return createSemaphoreHandle(releaseSemaphore);\n      }\n      return new Promise((resolve, reject) => {\n        const queueItem = {\n          resolve: void 0,\n          reject: void 0,\n          signal\n        };\n        const abortHandle = onAbort(signal, () => {\n          removeFromQueue(queueItem);\n          reject(ABORTED_ERROR$1());\n        });\n        queueItem.resolve = (handle) => {\n          abortHandle.release();\n          resolve(handle);\n        };\n        queueItem.reject = (error) => {\n          abortHandle.release();\n          reject(error);\n        };\n        queue.push(queueItem);\n        processQueue();\n      });\n    } else {\n      if (availableCount > 0) {\n        availableCount--;\n        return createSemaphoreHandle(releaseSemaphore);\n      }\n      return new Promise((resolve, reject) => {\n        queue.push({\n          resolve,\n          reject\n        });\n        processQueue();\n      });\n    }\n  };\n  const result = {\n    acquire,\n    waiter: {\n      wait: acquire\n    },\n    get availableCount() {\n      return availableCount;\n    },\n    get pendingCount() {\n      return queue.length;\n    }\n  };\n  return result;\n};\nconst ABORTED_ERROR = () => new Error(\"Lock acquisition was aborted\");\nconst createReadLockHandle = (releaseCallback) => {\n  let isActive = true;\n  const release = () => {\n    if (!isActive) {\n      return;\n    }\n    isActive = false;\n    releaseCallback();\n  };\n  return {\n    get isActive() {\n      return isActive;\n    },\n    release,\n    [Symbol.dispose]: release\n  };\n};\nconst createWriteLockHandle = (releaseCallback) => {\n  let isActive = true;\n  const release = () => {\n    if (!isActive) {\n      return;\n    }\n    isActive = false;\n    releaseCallback();\n  };\n  return {\n    get isActive() {\n      return isActive;\n    },\n    release,\n    [Symbol.dispose]: release\n  };\n};\nfunction createReaderWriterLock(optionsOrMaxCalls) {\n  var _a, _b;\n  let policy = \"write-preferring\";\n  let maxConsecutiveCalls = 20;\n  if (typeof optionsOrMaxCalls === \"number\") {\n    maxConsecutiveCalls = optionsOrMaxCalls;\n  } else if (optionsOrMaxCalls) {\n    policy = (_a = optionsOrMaxCalls.policy) != null ? _a : \"write-preferring\";\n    maxConsecutiveCalls = (_b = optionsOrMaxCalls.maxConsecutiveCalls) != null ? _b : 20;\n  }\n  let currentReaders = 0;\n  let hasWriter = false;\n  const readQueue = [];\n  const writeQueue = [];\n  let consecutiveCallCount = 0;\n  const processQueues = () => {\n    var _a2, _b2, _c, _d;\n    if (policy === \"write-preferring\") {\n      if (!hasWriter && currentReaders === 0 && writeQueue.length > 0) {\n        const item = writeQueue.shift();\n        if ((_a2 = item.signal) == null ? void 0 : _a2.aborted) {\n          item.reject(ABORTED_ERROR());\n          scheduleNextProcess();\n          return;\n        }\n        hasWriter = true;\n        const writeLockHandle = createWriteLockHandle(releaseWriteLock);\n        item.resolve(writeLockHandle);\n      } else if (!hasWriter && writeQueue.length === 0 && readQueue.length > 0) {\n        const readersToProcess = [];\n        while (readQueue.length > 0) {\n          const item = readQueue.shift();\n          if ((_b2 = item.signal) == null ? void 0 : _b2.aborted) {\n            item.reject(ABORTED_ERROR());\n          } else {\n            readersToProcess.push(item);\n          }\n        }\n        for (const item of readersToProcess) {\n          currentReaders++;\n          const readLockHandle = createReadLockHandle(releaseReadLock);\n          item.resolve(readLockHandle);\n        }\n      }\n    } else {\n      if (!hasWriter && readQueue.length > 0) {\n        const readersToProcess = [];\n        while (readQueue.length > 0) {\n          const item = readQueue.shift();\n          if ((_c = item.signal) == null ? void 0 : _c.aborted) {\n            item.reject(ABORTED_ERROR());\n          } else {\n            readersToProcess.push(item);\n          }\n        }\n        for (const item of readersToProcess) {\n          currentReaders++;\n          const readLockHandle = createReadLockHandle(releaseReadLock);\n          item.resolve(readLockHandle);\n        }\n      } else if (!hasWriter && currentReaders === 0 && writeQueue.length > 0) {\n        const item = writeQueue.shift();\n        if ((_d = item.signal) == null ? void 0 : _d.aborted) {\n          item.reject(ABORTED_ERROR());\n          scheduleNextProcess();\n          return;\n        }\n        hasWriter = true;\n        const writeLockHandle = createWriteLockHandle(releaseWriteLock);\n        item.resolve(writeLockHandle);\n      }\n    }\n  };\n  const scheduleNextProcess = () => {\n    consecutiveCallCount++;\n    if (consecutiveCallCount >= maxConsecutiveCalls) {\n      consecutiveCallCount = 0;\n      defer(processQueues);\n    } else {\n      processQueues();\n    }\n  };\n  const releaseReadLock = () => {\n    if (currentReaders > 0) {\n      currentReaders--;\n      if (currentReaders === 0) {\n        scheduleNextProcess();\n      }\n    }\n  };\n  const releaseWriteLock = () => {\n    if (hasWriter) {\n      hasWriter = false;\n      scheduleNextProcess();\n    }\n  };\n  const removeFromReadQueue = (item) => {\n    const index = readQueue.indexOf(item);\n    if (index !== -1) {\n      readQueue.splice(index, 1);\n    }\n  };\n  const removeFromWriteQueue = (item) => {\n    const index = writeQueue.indexOf(item);\n    if (index !== -1) {\n      writeQueue.splice(index, 1);\n    }\n  };\n  const readLock = async (signal) => {\n    if (signal) {\n      if (signal.aborted) {\n        throw ABORTED_ERROR();\n      }\n      const canAcquireImmediately = policy === \"read-preferring\" ? !hasWriter : !hasWriter && writeQueue.length === 0;\n      if (canAcquireImmediately) {\n        currentReaders++;\n        return createReadLockHandle(releaseReadLock);\n      }\n      return new Promise((resolve, reject) => {\n        const queueItem = {\n          resolve: void 0,\n          reject: void 0,\n          signal\n        };\n        const abortHandle = onAbort(signal, () => {\n          removeFromReadQueue(queueItem);\n          reject(ABORTED_ERROR());\n        });\n        queueItem.resolve = (handle) => {\n          abortHandle.release();\n          resolve(handle);\n        };\n        queueItem.reject = (error) => {\n          abortHandle.release();\n          reject(error);\n        };\n        readQueue.push(queueItem);\n        processQueues();\n      });\n    } else {\n      const canAcquireImmediately = policy === \"read-preferring\" ? !hasWriter : !hasWriter && writeQueue.length === 0;\n      if (canAcquireImmediately) {\n        currentReaders++;\n        return createReadLockHandle(releaseReadLock);\n      }\n      return new Promise((resolve, reject) => {\n        readQueue.push({\n          resolve,\n          reject\n        });\n        processQueues();\n      });\n    }\n  };\n  const writeLock = async (signal) => {\n    if (signal) {\n      if (signal.aborted) {\n        throw ABORTED_ERROR();\n      }\n      if (!hasWriter && currentReaders === 0) {\n        hasWriter = true;\n        return createWriteLockHandle(releaseWriteLock);\n      }\n      return new Promise((resolve, reject) => {\n        const queueItem = {\n          resolve: void 0,\n          reject: void 0,\n          signal\n        };\n        const abortHandle = onAbort(signal, () => {\n          removeFromWriteQueue(queueItem);\n          reject(ABORTED_ERROR());\n        });\n        queueItem.resolve = (handle) => {\n          abortHandle.release();\n          resolve(handle);\n        };\n        queueItem.reject = (error) => {\n          abortHandle.release();\n          reject(error);\n        };\n        writeQueue.push(queueItem);\n        processQueues();\n      });\n    } else {\n      if (!hasWriter && currentReaders === 0) {\n        hasWriter = true;\n        return createWriteLockHandle(releaseWriteLock);\n      }\n      return new Promise((resolve, reject) => {\n        writeQueue.push({\n          resolve,\n          reject\n        });\n        processQueues();\n      });\n    }\n  };\n  const readWaiter = {\n    wait: readLock\n  };\n  const writeWaiter = {\n    wait: writeLock\n  };\n  return {\n    readLock,\n    writeLock,\n    readWaiter,\n    writeWaiter,\n    get currentReaders() {\n      return currentReaders;\n    },\n    get hasWriter() {\n      return hasWriter;\n    },\n    get pendingReadersCount() {\n      return readQueue.length;\n    },\n    get pendingWritersCount() {\n      return writeQueue.length;\n    }\n  };\n}\nexport {\n  createAsyncLocal,\n  createMutex as createAsyncLock,\n  createConditional,\n  createDeferred,\n  createDeferredGenerator,\n  createManuallyConditional,\n  createManuallyConditional as createManuallySignal,\n  createMutex,\n  createReaderWriterLock,\n  createSemaphore,\n  createConditional as createSignal,\n  defer,\n  delay,\n  getCurrentLogicalContextId,\n  getLogicalContextValue,\n  onAbort,\n  runOnNewLogicalContext,\n  setLogicalContextValue\n};\n//# sourceMappingURL=index.mjs.map\n","export default \"data:application/json;base64,ewogICJwdGhyZWFkUG9vbFNpemUiOiA0Cn0K\"","export default \"data:application/wasm;base64,AGFzbQEAAAABtAEZYAF/AX9gAX8AYAR/f39/AGABfAF8YAJ/fwF/YAV/f39/fwBgBn9/f39/fwBgAABgBXx8fH9/AX9gA39/fwF/YAZ8fHx/f38Bf2AMfHx8f39/f39/fHx/AX9gA39/fwBgA3x8fwF8YAR8fHx/AX9gBnx8fHx/fwF/YAd8fHx/fH9/AX9gAXwAYAl/f39/f398f38AYAJ/fwBgAnx8AXxgAnx/AX9gAXwBf2ACfH8BfGAAAX8CqwEFFndhc2lfc25hcHNob3RfcHJldmlldzEOYXJnc19zaXplc19nZXQABBZ3YXNpX3NuYXBzaG90X3ByZXZpZXcxCGFyZ3NfZ2V0AAQDZW52EF9fbWFpbl9hcmdjX2FyZ3YABBZ3YXNpX3NuYXBzaG90X3ByZXZpZXcxCXByb2NfZXhpdAABA2Vudh9lbXNjcmlwdGVuX25vdGlmeV9tZW1vcnlfZ3Jvd3RoAAEDQD8HDg8IEBEICAoKCAsLBAkHEgITCQIFDAQHAxQVDQMDAxYXAw0DAAEAAAAAAQEJCQwCAgIFBQYGAAAAAAEAARgEBQFwARkZBQcBAYICgIACBggBfwFBwNsECwe6AhAGbWVtb3J5AgAKZnJvbUxuZ0xhdAAGB3Byb2plY3QABwl1bnByb2plY3QACBljYWxjdWxhdGVQZXJzcGVjdGl2ZVJhdGlvAAkZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAEXNldFRocmVhZFBvb2xTaXplAAoYcHJvamVjdExuZ0xhdFRvQ2xpcFNwYWNlAAsaY2FsY3VsYXRlQmlsbGJvYXJkRGVwdGhLZXkADRhjYWxjdWxhdGVTdXJmYWNlRGVwdGhLZXkAEBdwcmVwYXJlRHJhd1Nwcml0ZUltYWdlcwASBl9zdGFydAAdBm1hbGxvYwAqBGZyZWUAKxlfZW1zY3JpcHRlbl9zdGFja19yZXN0b3JlAEIcZW1zY3JpcHRlbl9zdGFja19nZXRfY3VycmVudABDCR4BAEEBCxgvPwUvMTAwMzs5NTE6ODYxPTE+MTxAQUAMAQgKhNQDPwIAC9sCAQF+IAMEQCADIABEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAAvUL///////////8Ag0KAgICAgICA+P8AVBs5AwAgA0QAAAAAAAAAACACRAAAAAAAAAAAIAK9Qv///////////wCDQoCAgICAgID4/wBUGyABRCS4kbJFQ1VApEQkuJGyRUNVQCABvUL///////////8AgyIEQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEAAAAAAAAAAAgBEKAgICAgICA+P8AVBsiAEQ5nVKiRt+RP6IQIkSTEHxF+BuDQaIiAaMgAUQAAAAAAAAAAGEbOQMQIAMgAEQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gECkQJET4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAozkDCAsgA0EARwvfBAMBfgJ8AX8CQCAERSAFRXINACADvSIGQgF9Qv7///////8HViAGQgBTIAZC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAEKwMAIQcgAUQkuJGyRUNVQKREJLiRskVDVUAgAb1C////////////AIMiBkKAgICAgICA+P8AWBtEJLiRskVDVcClRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6BEGC1EVPsh6T8gBkKAgICAgICA+P8AVBsQKRAkIQggBCsDYCAEKwNAIAJEAAAAAAAAAAAgAr1C////////////AINCgICAgICAgPj/AFQbIgGiIAcgAEQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IAC9Qv///////////wCDQoCAgICAgID4/wBUGyADoiIAoiADIAhE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKOiIgIgBCsDIKKgoKAiA71C////////////AINC//////////f/AFYNACAEKwNoIAQrA0ggAaIgBCsDCCAAoiACIAQrAyiioKCgIge9Qv///////////wCDQv/////////3/wBWDQAgBCsDeCAEKwNYIAGiIAQrAxggAKIgAiAEKwM4oqCgoCIAvSIGQgF9Qv7///////8HViAGQgBTIAZC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAFIAcgAKM5AwggBSADIACjOQMAQQEhCQsgCQuuCAMMfAF+AX8CQCADRSAERXINACACvSIRQgF9Qv7///////8HViARQgBTIBFC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACADKwN4IgcgAysDWCIIRAAAAAAAAAAAoiADKwMYIABEAAAAAAAAAAAgAL1C////////////AINCgICAgICAgPj/AFQbIgWiIAFEAAAAAAAAAAAgAb1C////////////AINCgICAgICAgPj/AFQbIgYgAysDOKKgIgGgoCIAvUL///////////8Ag0L/////////9/8AVg0AIAcgCCABoKAiAb1C////////////AINC//////////f/AFYgAEQAAAAAAAAAAGFyIAFEAAAAAAAAAABhcg0AIAMrA2AiCSADKwNAIgpEAAAAAAAAAACiIAMrAwAgBaIgBiADKwMgoqAiC6CgIACjIge9Qv///////////wCDQv/////////3/wBWDQAgAysDaCIMIAMrA0giDUQAAAAAAAAAAKIgAysDCCAFoiAGIAMrAyiioCIOoKAgAKMiCL1C////////////AINCgICAgICAgPj/AFoNACADKwNwIg8gAysDUCIQRAAAAAAAAAAAoiADKwMQIAWiIAYgAysDMKKgIgagoCAAoyIFvUL///////////8Ag0KAgICAgICA+P8AWg0AIAkgCiALoKAgAaMiCb1C////////////AINCgICAgICAgPj/AFoNACAMIA0gDqCgIAGjIgq9Qv///////////wCDQoCAgICAgID4/wBaDQAgDyAQIAagoCABoyIBvUL///////////8Ag0KAgICAgICA+P8AWg0ARAAAAAAAAAAAIQAgASAFoSIBRAAAAAAAAAAAYgRARAAAAAAAAAAAIAWhIAGjIQALIAkgB6EgAKIgB6AiAb1C////////////AINC//////////f/AFYNACAKIAihIACiIAigIgC9Qv///////////wCDQoCAgICAgID4/wBaDQAgASACoyIBvUL///////////8Ag0L/////////9/8AVg0AIAAgAqMiAL1C////////////AINCgICAgICAgPj/AFoNAEQAAAAAAIBmQCAARAAAAAAAgHZAoqFEGC1EVPshCUCiRAAAAAAAgGZAoxAjEB5E+MFjGtylXECiRAAAAAAAgFbAoCIARCS4kbJFQ1VApEQkuJGyRUNVQCAAvUL///////////8Ag0KAgICAgICA+P8AWBsgAUQAAAAAAIB2QKJEAAAAAACAZsCgIgG9Qv///////////wCDQv/////////3/wBWDQBEJLiRskVDVcClIgC9Qv///////////wCDQoCAgICAgID4/wBaDQAgBCAAOQMIIAQgATkDAEEBIRILIBILowQCAX4BfwJAIAVFIAZFcg0AAnwgAwRAIAMrAxAhAiADKwMIIQEgAysDAAwBC0QAAAAAAAAAACACRAAAAAAAAAAAIAK9Qv///////////wCDQoCAgICAgID4/wBUGyABRCS4kbJFQ1VApEQkuJGyRUNVQCABvUL///////////8AgyIHQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEAAAAAAAAAAAgB0KAgICAgICA+P8AVBsiAUQ5nVKiRt+RP6IQIkSTEHxF+BuDQaIiAqMgAkQAAAAAAAAAAGEbIQIgAUQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gECkQJET4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAoyEBIABEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAAvUL///////////8Ag0KAgICAgICA+P8AVBsLIQAgBSsDeCAFKwNYIAKiIAUrAxggAKIgASAFKwM4oqCgoCIAvSIHQgF9Qv7///////8HViAHQgBTIAdC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAEIACjIgC9IgdCAX1C/v///////wdWIAdCAFMgB0L///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0AIAYgADkDAEEBIQgLIAgLAgALHQEBfyADRSAERXIEf0EABSAAIAEgAiADIAQQDAsL/AQDBXwBfgF/IAFEJLiRskVDVUCkRCS4kbJFQ1VAIAG9Qv///////////wCDIgpCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQAAAAAAAAAACAKQoCAgICAgID4/wBUGyIBRDmdUqJG35E/ohAiIQUgAysDWCEHIAMrAxghCCABRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQKRAkIQYCQCADKwNgIAMrA0BEAAAAAAAAAAAgAkQAAAAAAAAAACACvUL///////////8Ag0KAgICAgICA+P8AVBsgBUSTEHxF+BuDQaIiAaMgAUQAAAAAAAAAAGEbIgGiIAMrAwAgAEQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IAC9Qv///////////wCDQoCAgICAgID4/wBUGyIAoiAGRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjIgIgAysDIKKgoKAiBb1C////////////AINC//////////f/AFYNACADKwNoIAMrA0ggAaIgAysDCCAAoiACIAMrAyiioKCgIga9Qv///////////wCDQoCAgICAgID4/wBaDQAgAysDcCADKwNQIAGiIAMrAxAgAKIgAiADKwMwoqCgoCIJvUL///////////8Ag0KAgICAgICA+P8AWg0AIAMrA3ggByABoiAIIACiIAIgAysDOKKgoKAiAL1C////////////AINC//////////f/AFYgAESN7bWg98awPmVyDQAgBCAAOQMYIAQgCTkDECAEIAY5AwggBCAFOQMAQQEhCwsgCwsjAQF/IAVFIANFIARFcnIEf0EABSAAIAEgAiADIAQgBRAOCwvpBQMCfwF+A3wjAEEQayIGJAACQCACvSIIQgF9Qv7///////8HViAIQgBTIAhC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAGQgA3AwggBkIANwMAIAAgASACIAMgBhAPRQ0AIAYrAwgiAEQkuJGyRUNVQKREJLiRskVDVUAgAL1C////////////AIMiCEKAgICAgICA+P8AWBtEJLiRskVDVcClRAAAAAAAAAAAIAhCgICAgICAgPj/AFQbIgBEOZ1SokbfkT+iECIhAiAEKwNYIQogBisDACEBIAQrAxghCyAARCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQKRAkIQkgBCsDYCAEKwNARAAAAAAAAAAARAAAAAAAAAAAIAJEkxB8Rfgbg0GiIgCjIABEAAAAAAAAAABhGyIAoiAEKwMAIAFEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyABvUL///////////8Ag0KAgICAgICA+P8AVBsiAaIgBCsDICAJRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjIgKioKCgvUL///////////8Ag0L/////////9/8AVg0AIAQrA2ggBCsDSCAAoiAEKwMIIAGiIAQrAyggAqKgoKC9Qv///////////wCDQoCAgICAgID4/wBaDQAgBCsDcCAEKwNQIACiIAQrAxAgAaIgBCsDMCACoqCgoCIJvUL///////////8Ag0KAgICAgICA+P8AWg0AIAQrA3ggCiAAoiALIAGiIAIgBCsDOKKgoKAiAL1C////////////AINCgICAgICAgPj/AFoNACAJIABEAAAAAAAA8D8gAEQAAAAAAAAAAGIboyIAvUL///////////8Ag0L/////////9/8AVg0AIAUgAJo5AwBBASEHCyAGQRBqJAAgBwvkBwIMfAF/AkAgAysDeCIHIAMrA1giCEQAAAAAAAAAAKIgAysDGCAARAAAAAAAAAAAIAC9Qv///////////wCDQoCAgICAgID4/wBUGyIFoiABRAAAAAAAAAAAIAG9Qv///////////wCDQoCAgICAgID4/wBUGyIGIAMrAziioCIBoKAiAL1C////////////AINC//////////f/AFYNACAHIAggAaCgIgG9Qv///////////wCDQv/////////3/wBWIABEAAAAAAAAAABhciABRAAAAAAAAAAAYXINACADKwNgIgkgAysDQCIKRAAAAAAAAAAAoiADKwMAIAWiIAYgAysDIKKgIgugoCAAoyIHvUL///////////8Ag0L/////////9/8AVg0AIAMrA2giDCADKwNIIg1EAAAAAAAAAACiIAMrAwggBaIgBiADKwMooqAiDqCgIACjIgi9Qv///////////wCDQoCAgICAgID4/wBaDQAgAysDcCIPIAMrA1AiEEQAAAAAAAAAAKIgAysDECAFoiAGIAMrAzCioCIGoKAgAKMiBb1C////////////AINCgICAgICAgPj/AFoNACAJIAogC6CgIAGjIgm9Qv///////////wCDQoCAgICAgID4/wBaDQAgDCANIA6goCABoyIKvUL///////////8Ag0KAgICAgICA+P8AWg0AIA8gECAGoKAgAaMiAb1C////////////AINCgICAgICAgPj/AFoNAEQAAAAAAAAAACEAIAEgBaEiAUQAAAAAAAAAAGIEQEQAAAAAAAAAACAFoSABoyEACyAJIAehIACiIAegIgG9Qv///////////wCDQv/////////3/wBWDQAgCiAIoSAAoiAIoCIAvUL///////////8Ag0KAgICAgICA+P8AWg0AIAEgAqMiAb1C////////////AINC//////////f/AFYNACAAIAKjIgC9Qv///////////wCDQoCAgICAgID4/wBaDQBEAAAAAACAZkAgAEQAAAAAAIB2QKKhRBgtRFT7IQlAokQAAAAAAIBmQKMQIxAeRPjBYxrcpVxAokQAAAAAAIBWwKAiAEQkuJGyRUNVQKREJLiRskVDVUAgAL1C////////////AINCgICAgICAgPj/AFgbIAFEAAAAAACAdkCiRAAAAAAAgGbAoCIBvUL///////////8Ag0L/////////9/8AVg0ARCS4kbJFQ1XApSIAvUL///////////8Ag0KAgICAgICA+P8AWg0AIAQgADkDCCAEIAE5AwBBASERCyARCzYBAX8gA0UgBUVyIAdFIAtFcnIEf0EABSAAIAEgAiADIAQgBSAGIAcgCEEARyAJIAogCxARCwucBwMIfAJ/AX4CQCAEQQBMIAZBAExyDQAgAkQAAAAAAAAAACACvUL///////////8Ag0KAgICAgICA+P8AVBshECABRDmdUqJG35E/ohAiIgJEje21oPfGsD6lRI3ttaD3xrA+IAK9Qv///////////wCDQoCAgICAgID4/wBYG0QAAABAplRYQaIhEUQAAAAAAADw/yECA0AgBCAFIBVBAnRqKAIAIhRLBEAgASADIBRBBHRqIhQrAwhEAAAAQKZUWEGjRPjBYxrcpUxAoqAiDEQkuJGyRUNVQKREJLiRskVDVUAgDL1C////////////AIMiFkKAgICAgICA+P8AWBtEJLiRskVDVcClRAAAAAAAAAAAIBZCgICAgICAgPj/AFQbIgxEOZ1SokbfkT+iECIhDSAHKwNYIRIgFCsDACEOIAcrAxghEyAMRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQKRAkIQ9BACEUIAcrA2AgBysDQEQAAAAAAAAAACAQIA1EkxB8Rfgbg0GiIgyjIAxEAAAAAAAAAABhGyIMoiAHKwMAIAAgDiARo0T4wWMa3KVMQKKgIg1EAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyANvUL///////////8Ag0KAgICAgICA+P8AVBsiDaIgBysDICAPRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjIg6ioKCgvUL///////////8Ag0L/////////9/8AVg0CIAcrA2ggBysDSCAMoiAHKwMIIA2iIAcrAyggDqKgoKC9Qv///////////wCDQoCAgICAgID4/wBaDQIgBysDcCAHKwNQIAyiIAcrAxAgDaIgBysDMCAOoqCgoCIPvUL///////////8Ag0KAgICAgICA+P8AWg0CIAcrA3ggEiAMoiATIA2iIAcrAzggDqKgoKAiDL1C////////////AINC//////////f/AFYgDESN7bWg98awPmVyDQIgCAR8IAogDKEiDSAJIAyiIA+gIg4gDSAOZBsFIA8LIAyjIgy9Qv///////////wCDQv/////////3/wBWDQIgDJoiDCACIAIgDGMbIQILIBVBAWoiFSAGRw0AC0EAIRQgAr1C////////////AINC//////////f/AFYNACALIAI5AwBBASEUCyAUC4isAQMbf1R8A34jAEGgBGsiAyQAAkAgAEUgAUVyDQAgAUIANwMgIAFCgICAgICAgIjAADcDGCABQoCAgICAgIChwAA3AxAgAUKAgICAgICYsMAANwMIIAFCADcDACABQgA3AyggAUIANwMwIAArAwAiHb0ickL///////////8AgyJxQgF9Qv////////8HVCByQgBTIgJxIHFCgICAgICAgPj/AFFyIHFCgICAgICAgPj/AFZyIHFCgICAgICAgAh9QoCAgICAgIDw/wBUIAJxcg0AIB1EAAAAAAAA4D+gnCIdRAAAAAAAAPB/ZCAdRAAAAAAAAPB/Y3JFDQAgHfwDIgJBD0kgHSACuGJyDQAgACsDCCIdvSJyQv///////////wCDInFCAX1C/////////wdUIHJCAFMiB3EgcUKAgICAgICA+P8AUXIgcUKAgICAgICA+P8AVnIgcUKAgICAgICACH1CgICAgICAgPD/AFQgB3FyDQAgHUQAAAAAAADgP6CcIh1EAAAAAAAA8H9kIB1EAAAAAAAA8H9jckUNACAd/AMiB0EYRyAdIAe4YnINACAAKwMQIh29InJC////////////AIMicUIBfUL/////////B1QgckIAUyIHcSBxQoCAgICAgID4/wBRciBxQoCAgICAgID4/wBWciBxQoCAgICAgIAIfUKAgICAgICA8P8AVCAHcXINACAdRAAAAAAAAOA/oJwiHUQAAAAAAADwf2QgHUQAAAAAAADwf2NyRQ0AIB0gHfwDIge4YiACIAdJciACIAdrQTBJcg0AIAArAxgiHb0ickL///////////8AgyJxQgF9Qv////////8HVCByQgBTIgZxIHFCgICAgICAgPj/AFFyIHFCgICAgICAgPj/AFZyIHFCgICAgICAgAh9QoCAgICAgIDw/wBUIAZxcg0AIB1EAAAAAAAA4D+gnCIdRAAAAAAAAPB/ZCAdRAAAAAAAAPB/Y3JFDQAgHSAd/AMiCLhiDQAgACsDICIdvSJyQv///////////wCDInFCAX1C/////////wdUIHJCAFMiBnEgcUKAgICAgICA+P8AUXIgcUKAgICAgICA+P8AVnIgcUKAgICAgICACH1CgICAgICAgPD/AFQgBnFyDQAgHUQAAAAAAADgP6CcIh1EAAAAAAAA8H9kIB1EAAAAAAAA8H9jckUNACAdIB38AyINuGIgAiANSXIgAiANayAIQQlsSXINACAAKwMoIh29InJC////////////AIMicUIBfUL/////////B1QgckIAUyIGcSBxQoCAgICAgID4/wBRciBxQoCAgICAgID4/wBWciBxQoCAgICAgIAIfUKAgICAgICA8P8AVCAGcXINACAdRAAAAAAAAOA/oJwiHUQAAAAAAADwf2QgHUQAAAAAAADwf2NyRQ0AIB0gHfwDIgq4Yg0AIAArAzAiHb0ickL///////////8AgyJxQgF9Qv////////8HVCByQgBTIgZxIHFCgICAgICAgPj/AFFyIHFCgICAgICAgPj/AFZyIHFCgICAgICAgAh9QoCAgICAgIDw/wBUIAZxcg0AIB1EAAAAAAAA4D+gnCIdRAAAAAAAAPB/ZCAdRAAAAAAAAPB/Y3JFDQAgHSAd/AMiBrhiIAIgBklyIAIgBmsgCkEGbElyDQAgACsDOCIdvSJyQv///////////wCDInFCAX1C/////////wdUIHJCAFMiBnEgcUKAgICAgICA+P8AUXIgcUKAgICAgICA+P8AVnIgcUKAgICAgICACH1CgICAgICAgPD/AFQgBnFyDQAgHUQAAAAAAADgP6CcIh1EAAAAAAAA8H9kIB1EAAAAAAAA8H9jckUNACAdIB38AyITuGINACAAKwNAIh29InJC////////////AIMicUIBfUL/////////B1QgckIAUyIGcSBxQoCAgICAgID4/wBRciBxQoCAgICAgID4/wBWciBxQoCAgICAgIAIfUKAgICAgICA8P8AVCAGcXINACAdRAAAAAAAAOA/oJwiHUQAAAAAAADwf2QgHUQAAAAAAADwf2NyRQ0AIB0gHfwDIgq4YiACIApJciACIAprIBNBG2xJcg0AIANCADcD6AIgA0KAgICAgICA+D83A+ACIANCADcD2AIgA0IANwPwAiADQgA3A/gCIANCADcDiAMgA0KAgICAgICA+D83A4ADIANCADcDkAMgA0IANwOYAyADQgA3A6ADIANCADcDyAMgA0KAgICAgICA+D83A8ADIANCgICAgICAgPg/NwO4AyADQoCAgICAgID4PzcDsAMgA0KAgICAgICA+D83A6gDIANCADcD0AMgA0KAgICAgICA+D83A9gDIANCgICAgICAgPg/NwPgAyADQgA3A/ADIANCADcD6AMgA0EAOgCYBCADQgA3A5AEIANCgICAgICAgPg/NwOIBCADQoCAgICAgID4PzcDgAQgA0LI3vLVqf61vT43A/gDIAMgACsDeCIdOQPYAiADAnwgHb0icUI0iKdB/w9xIgJByQdrQT9PBEAgHUQAAAAAAADwP6AiISACQckHSQ0BGgJAIAJBiQhJDQBEAAAAAAAAAAAgcUKAgICAgICAeFENAhogISACQf8PTw0CGiBxQgBZBEAjAEEQayICRAAAAAAAAABwOQMIIAIrAwhEAAAAAAAAAHCiDAMLIHFCgICAgICAs8hAVA0AIwBBEGsiAkQAAAAAAAAAEDkDCCACKwMIRAAAAAAAAAAQogwCCyACQQAgcUIBhkKAgICAgICAjYF/WBshAgsgHSAdQYAiKwMAIh2gIh4gHaGhIh0gHaIiISAhoiAdQagiKwMAokGgIisDAKCiICEgHUGYIisDAKJBkCIrAwCgoiAdQYgiKwMAoiAevSJyp0EEdEHwD3EiBCsDsCKgoKAhHSAEKQO4IiByQi2GfCFxIAJFBEACfCByQoCAgIAIg1AEQCBxQoCAgICAgIAIfb8iISAdoiAhoCIdIB2gDAELIHFCgICAgICAgPA/fL8iISAdoiIeICGgIh1EAAAAAAAA8D9jBHwjAEEQayICQoCAgICAgIAINwMIIAIgAisDCEQAAAAAAAAQAKI5AwhEAAAAAAAAAAAgHUQAAAAAAADwP6AiIiAeICEgHaGgIB1EAAAAAAAA8D8gIqGgoKBEAAAAAAAA8L+gIh0gHUQAAAAAAAAAAGEbBSAdC0QAAAAAAAAQAKILDAELIHG/IiEgHaIgIaALOQPgAiADIAArA4ABOQPoAiADIAArA4gBOQPwAiADIAArA5ABOQP4AiADIAArA5gBOQOAAyADIAArA6ABOQOIAyADIAArA6gBOQOQAyADIAArA7ABOQOYAyADIAArA7gBOQOgAyADIAArA8ABOQOoAyADIAArA8gBOQOwAyADIAArA9ABOQO4AyADIAArA9gBOQPAAyADIAArA+ABOQPIAyADIAArA+gBOQPQAyADIAArA/ABOQPYAyADIAArA/gBOQPgAyADIAArA4ACOQPoAyADIAArA4gCOQPwAyADIAArA5ACOQP4AyADIAArA5gCOQOABCADIAArA6ACOQOIBCADIAArA6gCOQOQBCADIAArA7ACRAAAAAAAAAAAYjoAmAQgAyADKwPoAiIhOQO4AiADIAMrA/gCOQPAAiADIAAgB0EDdGoiAjYCyAIgAyACQYACajYC0AIgAyACQYABaiIHNgLMAgJAIAMrA5gDRAAAAAAAAAAAZEUNACADKwOgA0QAAAAAAAAAAGRFDQAgAysDqAMiHUQAAAAAAAAAAGENACAdvUL///////////8Ag0KAgICAgICA+P8AVCEFCyADIAU6ALcCIAMgACsDSPwCIgtBAXE6ALYCIAMgC0EBdkEBcToAtQIgAy0AmAQCfyADQagCaiIGQQA2AgggBkIANwIAAkAgCARAIAhB5PG4HE8NASAGIAhByABsIgQQLSICNgIAIAYgAiAEaiIQNgIIIARByABrIglByABuIgRBA3FBA0cEQCAEQQFqQQNxIQ5BACEEA0AgAkIANwMYIAJCADcDECACQgA3AwggAkIANwMAIAJCADcDKCACQoCAgICAgID4v383AyAgAkIANwMwIAJCgICAgICAgPg/NwNAIAJCgICAgICAgPg/NwM4IAJByABqIQIgBEEBaiIEIA5HDQALCyAJQdgBTwRAA0AgAkIANwMYIAJCADcDECACQgA3AwggAkIANwMAIAJCADcDKCACQoCAgICAgID4v383AyAgAkIANwMwIAJCADcDSCACQoCAgICAgID4PzcDQCACQoCAgICAgID4PzcDOCACQgA3A1AgAkIANwNYIAJCADcDYCACQgA3A3AgAkKAgICAgICA+L9/NwNoIAJCADcDeCACQoCAgICAgID4PzcDgAEgAkKAgICAgICA+D83A4gBIAJCADcDqAEgAkIANwOgASACQgA3A5gBIAJCADcDkAEgAkKAgICAgICA+L9/NwOwASACQgA3A7gBIAJCADcDwAEgAkKAgICAgICA+D83A9ABIAJCgICAgICAgPg/NwPIASACQgA3A9gBIAJCADcD4AEgAkIANwPoASACQgA3A/ABIAJCgICAgICAgPi/fzcD+AEgAkIANwOAAiACQgA3A4gCIAJCgICAgICAgPg/NwOQAiACQoCAgICAgID4PzcDmAIgAkGgAmoiAiAQRw0ACwsgBiAQNgIECyAGDAELEBQACyEQIAgEQCAAIA1BA3RqIQ0gECgCACEJQQAhBgNAIA0gBkHIAGwiAmoiBCsDKCEdIAQrAzAhHiAEKwM4ISIgBCsDQCEfIAQrAxghICAEKwMIISQgBCsDECEjIAIgCWoiAiAEKwMgOQMgIAIgIzkDECACICQ5AwggAiAGNgIAIAIgIEQAAAAAAAAAAGI6ABggAiAfRAAAAAAAAPA/IB+9Qv///////////wCDQoCAgICAgID4/wBUGzkDQCACICJEAAAAAAAA8D8gIr1C////////////AINCgICAgICAgPj/AFQbOQM4IAIgHkQAAAAAAAAAACAevUL///////////8Ag0KAgICAgICA+P8AVBs5AzAgAiAdRAAAAAAAAAAAIB29Qv///////////wCDQoCAgICAgID4/wBUGzkDKCAGQQFqIgYgCEcNAAsLAn8gA0GcAmoiBkEANgIIIAZCADcCAAJAIBMEQCATQbKn7AlPDQEgBiATQdABbCIEEC0iAjYCACAGIAIgBGoiCDYCCCAEQdABayINQdABbiIEQQNxQQNHBEAgBEEBakEDcSEJQQAhBANAIAJBAEHQAfwLACACQgA3A4gBIAJCgICAgICAgPg/NwNwIAJCADcDkAEgAkIANwOgASACQoCAgICAgID4PzcDmAEgAkIANwOoASACQQA6ALABIAJCADcDuAEgAkIANwPAASACQQA6AMgBIAJB0AFqIQIgBEEBaiIEIAlHDQALCyANQfAETwRAA0AgAkEAQdAB/AsAIAJCADcDiAEgAkKAgICAgICA+D83A3AgAkIANwOQASACQgA3A6ABIAJCgICAgICAgPg/NwOYASACQgA3A6gBIAJBADoAsAEgAkIANwO4ASACQgA3A8ABIAJBADoAyAEgAkHQAWpBAEHQAfwLACACQgA3A9gCIAJCgICAgICAgPg/NwPAAiACQgA3A+ACIAJCADcD8AIgAkKAgICAgICA+D83A+gCIAJCADcD+AIgAkEAOgCAAyACQgA3A4gDIAJCADcDkAMgAkEAOgCYAyACQaADakEAQdAB/AsAIAJCADcDqAQgAkKAgICAgICA+D83A5AEIAJCADcDsAQgAkIANwPABCACQoCAgICAgID4PzcDuAQgAkIANwPIBCACQQA6ANAEIAJCADcD2AQgAkIANwPgBCACQQA6AOgEIAJB8ARqQQBB0AH8CwAgAkIANwP4BSACQoCAgICAgID4PzcD4AUgAkIANwOABiACQgA3A5AGIAJCgICAgICAgPg/NwOIBiACQgA3A5gGIAJBADoAoAYgAkIANwOoBiACQgA3A7AGIAJBADoAuAYgAkHABmoiAiAIRw0ACwsgBiAINgIECyAGDAELEBQACyENIBMEQCAAIApBA3RqIQggECgCBCAQKAIAIgprQcgAbSEJIA0oAgAhDkEAIQQDQCADQQA6AIgBIANCADcDgAEgA0IANwN4IANCADcDcCADQQA6AKABIANCADcDmAEgA0IANwOQASADQgA3A7ABIANCADcDqAEgA0EAOgDIASADQgA3A8ABIANCgICAgICAgPg/NwO4ASADQgA3A9gBIANCADcD0AEgA0KAgICAgICA+D83A+ABIANBADoA+AEgA0IANwPwASADQgA3A+gBIANBADoAkAIgA0IANwOIAiADQgA3A4ACIAMgBDYCTCADIAggBEHYAWxqIgA2AkggAwJ/QQAgACsDCCIdvSJyQv///////////wCDInFCAX1C/////////wdUIHJCAFMiAnEgcUKAgICAgICA+P8AUXIgcUKAgICAgICA+P8AVnIgcUKAgICAgICACH1CgICAgICAgPD/AFQgAnFyDQAaQQAgHUQAAAAAAADgP6CcIh1EAAAAAAAA8H9kIB1EAAAAAAAA8H9jckUNABpBACAdIB38AyICuGINABogCiACQcgAbGpBACACIAlJGws2AlAgACsDoAEhHSAAKwOoASEeIAMgACsDsAE5A2ggAyAeOQNgIAMgHTkDWEEAIQYCQCAHRSAhRAAAAAAAAAAAZXINACADKwNYIR0gBysDACEiIAMrA2AiHkQkuJGyRUNVQKREJLiRskVDVUAgHr1C////////////AIMicUKAgICAgICA+P8AWBtEJLiRskVDVcClRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6BEGC1EVPsh6T8gcUKAgICAgICA+P8AVBsQKRAkIR8gBysDYCAHKwNAIAMrA2giHkQAAAAAAAAAACAevUL///////////8Ag0KAgICAgICA+P8AVBsiHqIgIiAhIB1EAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAdvUL///////////8Ag0KAgICAgICA+P8AVBuiIh2iIAcrAyAgISAfRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjoiIioqCgoCIfvUL///////////8Ag0L/////////9/8AVg0AIAcrA2ggBysDSCAeoiAHKwMIIB2iICIgBysDKKKgoKAiIL1C////////////AINC//////////f/AFYNACAHKwN4IAcrA1ggHqIgBysDGCAdoiAiIAcrAziioKCgIh29InFCAX1C/v///////wdWIHFCAFMgcUL///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0AIAMgICAdozkDmAEgAyAfIB2jOQOQAUEBIQYLIAMgBjoAoAEgAysDaCEdIAMrA2AhHiADIAMrA1giIkQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/ICK9Qv///////////wCDQoCAgICAgID4/wBUGzkDcCADRAAAAAAAAAAAIB1EAAAAAAAAAAAgHb1C////////////AINCgICAgICAgPj/AFQbIB5EJLiRskVDVUCkRCS4kbJFQ1VAIB69Qv///////////wCDInFCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQAAAAAAAAAACBxQoCAgICAgID4/wBUGyIdRDmdUqJG35E/ohAiRJMQfEX4G4NBoiIeoyAeRAAAAAAAAAAAYRs5A4ABIAMgHUQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gECkQJET4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAozkDeCADQQE6AIgBAkAgAygCSCIAKwMAIh29Qv///////////wCDQv/////////3/wBYBEAgHZ0iHSAd/AYicblhDQELQgAhcQsgAyBxNwOoAQJAIAArA1giIr1C////////////AINCgICAgICAgPj/AFQNAEQAAAAAAAAAACEiIAArA2AgACsDaKAiHb1C////////////AINC//////////f/AFYNAEQAAAAAAAAAAAJ8IB29InNCNIinQf8PcSIAQf8PRgRAIB1EAAAAAACAdkCiIh0gHaMMAQsgc0IBhiJxQoCAgICAgMD2gH9YBEAgHUQAAAAAAAAAAKIgHSBxQoCAgICAgMD2gH9RGwwBCwJ+IABFBEBBACEAIHNCDIYicUIAWQRAA0AgAEEBayEAIHFCAYYicUIAWQ0ACwsgc0EBIABrrYYMAQsgc0L/////////B4NCgICAgICAgAiECyFxIABBhwhKBEADQAJAIHFCgICAgICAoAt9InJCAFMNACByInFCAFINACAdRAAAAAAAAAAAogwDCyBxQgGGIXEgAEEBayIAQYcISg0AC0GHCCEACwJAIHFCgICAgICAoAt9InJCAFMNACByInFCAFINACAdRAAAAAAAAAAAogwBCyBxQv////////8HWARAA0AgAEEBayEAIHFCgICAgICAgARUIHFCAYYhcQ0ACwsgc0KAgICAgICAgIB/gyBxQoCAgICAgIAIfSAArUI0hoQgcUEBIABrrYggAEEAShuEvwsiHUQAAAAAAIB2QKAgHSAdRAAAAAAAAAAAYxsiHSAdRAAAAAAAAAAAYRshIgsgAyAiOQPQASADICJEOZ1Sokbfkb+iIh0QIjkD4AEgAyAdECc5A9gBIA4gBEHQAWxqIANByABqQckB/AoAACAEQQFqIgQgE0cNAAsLIANBuAJqIQogA0HYAmohBiMAQSBrIgIkACANKAIAIgAgDSgCBCIHRwRAA0ACQCAAKAIARQ0AIAAoAggiCEUNACAALQBYQQFHDQAgBisDCCEeIAooAhAhBCAKKwMIISECQCAALQCAAUEBRgRAIAArA3giHb0icUIBfUL/////////B1QgcUL///////////8Ag0KAgICAgICACH1CgICAgICAgPD/AFQgcUIAWXFyDQELIAArAxgiHUQ5nVKiRt+RP6IQIkSTEHxF+BuDQaIgHkQAAAAAAACAQKKjIh69InFCAX1C/v///////wdWIHFCAFMgcUL///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0BRAAAAAAAAPA/ISICQCAERSAhRAAAAAAAAAAAZXINAAJ8IAAtAEBBAUYEQCAAKwM4IR0gACsDKCEfIAArAzAMAQsgHUQkuJGyRUNVQKREJLiRskVDVUAgHb1C////////////AIMicUKAgICAgICA+P8AWBtEJLiRskVDVcClRAAAAAAAAAAAIHFCgICAgICAgPj/AFQbIiBEOZ1SokbfkT+iECIhHUQAAAAAAAAAACAAKwMgIh9EAAAAAAAAAAAgH71C////////////AINCgICAgICAgPj/AFQbIB1EkxB8Rfgbg0GiIh2jIB1EAAAAAAAAAABhGyEdIAArAxAiH0QAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IB+9Qv///////////wCDQoCAgICAgID4/wBUGyEfICBEJLiRskVDVUCkRCS4kbJFQ1XApUQ5nVKiRt+RP6JEAAAAAAAA4D+iRBgtRFT7Iek/oBApECRE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKMLISAgBCsDeCAEKwNYIB2iIAQrAxggH6IgICAEKwM4oqCgoCIdvSJxQgF9Qv7///////8HViBxQgBTIHFC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAhIB2jIh1EAAAAAAAA8D8gHSAdvSJxQgBTG0QAAAAAAADwPyBxQv///////////wCDQoCAgICAgIAIfUKAgICAgICA8P8AVBsgcUIBfUL/////////B1QbISILRAAAAAAAAPA/IB6jICKiIh29InFCAX1C/v///////wdWIHFCAFMgcUL///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0BIABBAToAgAEgACAdOQN4IAAgIjkDcCAAIB45A2gLIAJBEGogAEEBIAogBiAIIB0gDSAFEBUgACACKQMYNwOoASAAIAIpAxA3A6ABIABBAToAsAEgAiAAQQAgCiAGIAAoAgggHSANIAUQFSAAIAIpAwg3A8ABIAAgAikDADcDuAEgAEEBOgDIAQsgAEHQAWoiACAHRw0ACwsgAkEgaiQAIAtBBHFBAnZxIRFBACEFQQAhAEEAIQ4jAEHQAGsiByQAIANBPGoiFyIMQQA2AgggDEIANwIAIA0oAgQiAiANKAIAIgRrQdABbSESAkACQAJAIAIgBEcEQCASQYCAgBBPDQEgEkEHdCIAEC0iBSAAaiEOIAUhAANAAkAgDSgCACAUQdABbGoiBCgCACIIRQ0AIAQoAggiAkUNACACLQAYQQFHDQAgBC0AWEEBRw0AIAYrAwghHiAKKAIQIQsgCisDCCEhAkAgBC0AgAFBAUYEQCAEKwN4Ih29InFCAX1C/////////wdUIHFC////////////AINCgICAgICAgAh9QoCAgICAgIDw/wBUIHFCAFlxcg0BCyAEKwMYIh1EOZ1SokbfkT+iECJEkxB8Rfgbg0GiIB5EAAAAAAAAgECioyIevSJxQgF9Qv7///////8HViBxQgBTIHFC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENAUQAAAAAAADwPyEiAkAgC0UgIUQAAAAAAAAAAGVyDQACfCAELQBAQQFGBEAgBCsDOCEdIAQrAyghIyAEKwMwDAELIB1EJLiRskVDVUCkRCS4kbJFQ1VAIB29Qv///////////wCDInFCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQAAAAAAAAAACBxQoCAgICAgID4/wBUGyIfRDmdUqJG35E/ohAiIR1EAAAAAAAAAAAgBCsDICIgRAAAAAAAAAAAICC9Qv///////////wCDQoCAgICAgID4/wBUGyAdRJMQfEX4G4NBoiIdoyAdRAAAAAAAAAAAYRshHSAEKwMQIiBEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAgvUL///////////8Ag0KAgICAgICA+P8AVBshIyAfRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQKRAkRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjCyEfIAsrA3ggCysDWCAdoiALKwMYICOiIB8gCysDOKKgoKAiHb0icUIBfUL+////////B1YgcUIAUyBxQv///////////wCDQoCAgICAgIAIfUL/////////7/8AVnJxDQAgISAdoyIdRAAAAAAAAPA/IB0gHb0icUIAUxtEAAAAAAAA8D8gcUL///////////8Ag0KAgICAgICACH1CgICAgICAgPD/AFQbIHFCAX1C/////////wdUGyEiC0QAAAAAAADwPyAeoyAioiIdvSJxQgF9Qv7///////8HViBxQgBTIHFC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENASAEQQE6AIABIAQgHTkDeCAEICI5A3AgBCAeOQNoCyAEQaABQcgAIAQtALABIgkbaisDACEhIARBqAFB0AAgCRtqKwMAIR4gB0IANwNIAn8CQAJAIAgrAyAQJUUEQCALRQ0ERAAAAAAAAAAAISFEAAAAAAAA8D8hJCAIKwMoIh5EAAAAAAAA8D8gHkQAAAAAAAAAAGIbISIgCCsDSCElIAhBQGshCSAGKwNYISMgAisDCCIeRAAAAAAAAAAAZQ0BIAIrAxAiH0QAAAAAAAAAAGUNASAGKwMoIiBEAAAAAAAAAABlDQEgHyAiICCiICOiIiCiIh9EAAAAAAAAAAAgH71C////////////AINCgICAgICAgPj/AFQbIR8gHiAgoiIeRAAAAAAAAAAAIB69Qv///////////wCDQoCAgICAgID4/wBUGyEgIB29InFCAX1C/v///////wdWIHFCAFMgcUL///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0CIAYrAzAiHkQAAAAAAAAAAGQiAiAGKwM4IiZEAAAAAAAAAABkIg9yRQ0CIB8gICAfICBkGyIpRAAAAAAAAAAAZEUNAiAdICmiIh29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ASAjIB4gHSAMIABBsAFqEA9FDQAgAEIANwO4CCAAIAArA7gBOQOwCCAAIAArA7ABOQOoCAsgACAAKQO4CDcDmAcgACAAKQOwCDcDkAcgACAAKQOoCDcDiAcgACACKwMIOQOgByAAIAIrAxA5A6gHIAAgBCsDKDkDsAcgACAkOQO4ByAAIAQrA1g5A8AHIAAgJjkDyAcgACAFKwOQATkD0AcgACAFKwOYATkD2AcgACAfOQPoByAAIABBsAtqNgLgByAAIABBoAtqNgLkByAAIAQrAzA5A/AHIAAgBCsDODkD+AcgACARNgKACCAAQQE7AYQIIAAgBCsDQCIsOQOICCAAIAQrA0giLzkDkAggACAEKwNQIiY5A5gIIABBAToAoAggAEHgBWogAEGIB2oQFyAALQDwBUEBRw0CIAotABBBAXFFDQJEAAAAAAAAAAAhIiAWQQFxBEAgBCsDsAFEAAAAAAAA8L+gIR0gBysDeCAEKwOoAaIgBysDcCIevUL///////////8Ag0KAgICAgICA+P8AWAR8IB4gHSAepCAdvUL///////////8Ag0KAgICAgICA+P8AVhsFIB0LoCAEKwO4AZqiISILIApBQGshESAAKwOwBiEuIAArA6gGITEgACsDoAYgCisDGCElIAorAyAhKSAKKwMoISogBSsDkAEhHiAFKwOYASEdIABBsAFqIgJBwAFqQQBBgAH8CwAgAkHYCikDADcD2AIgAkHQCikDADcD0AIgAkHICikDADcDyAIgAkHACikDADcDwAIgAkHgAmpBAEHEAfwLACAAKwOwBiEjIAArA6gGIR8gACsDoAYhICACICg5A0AgAiAhOQM4IAIgKUQAAAAAAADgP6IiJDkDMCACICVEAAAAAAAA4D+iIic5AyggAiAgRAAAAAAAgGZAoEQAAAAAAIB2QKNEAAAAAAAA4D8gIL1C////////////AINCgICAgICAgPj/AFQbIjQ5AwAgAkQAAAAAAAAAACAjRAAAAAAAAAAAICO9Qv///////////wCDQoCAgICAgID4/wBUGyAfRCS4kbJFQ1VApEQkuJGyRUNVQCAfvUL///////////8AgyJxQoCAgICAgID4/wBYG0QkuJGyRUNVwKUiI0QAAAAAAAAAACBxQoCAgICAgID4/wBUIgwbIjVEOZ1SokbfkT+iECJEkxB8Rfgbg0GiIjajIDZEAAAAAAAAAABhGzkDECACICBEAAAAAAAA8D8gH0Q5nVKiRt+RP6IQIiIgRI3ttaD3xrA+pUSN7bWg98awPiAgvUL///////////8Ag0KAgICAgICA+P8AWBtEAAAAQKZUWEGio0T4wWMa3KVMQKKgIiBEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAgvUL///////////8Ag0KAgICAgICA+P8AVBsgNKE5AxggAiA1RCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQKRAkRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjOQMIICNEJLiRskVDVUCkRCS4kbJFQ1XApUQ5nVKiRt+RP6JEAAAAAAAA4D+iRBgtRFT7Iek/oEQYLURU+yHpPyAMGxApECQhICACIB9EHnAYIMvW4j6gIh9EJLiRskVDVUCkRCS4kbJFQ1VAIB+9Qv///////////wCDQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEJLiRskVDVUCkRCS4kbJFQ1XApUQ5nVKiRt+RP6JEAAAAAAAA4D+iRBgtRFT7Iek/oEQYLURU+yHpPyAfvUL///////////8Ag0KAgICAgICA+P8AVBsQKRAkRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjICBE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKOhOQMgIAIgCikDMDcDSCACIAopAzg3A1AgAiAdOQNgIAIgHjkDWCAFKwOIASEfIAIgIjkDcCACIB85A2ggAiAAKQOYBjcDgAEgAiAAKQOQBjcDeCACIABBqAhqIgUpAwA3A4gBIAIgBSkDCDcDkAEgAiAFKQMQNwOYASAAKQOwBiFxIAApA6gGIXIgACkDoAYhcyACICo5A7gBIAIgczcDoAEgAiByNwOoASACIHE3A7ABIAUrAwghICAFKwMAISMCQCAlRAAAAAAAAAAAZSApRAAAAAAAAAAAZXIEQCAKKwMwIh0hKCAKKwM4IiEhJCAdIh4hJSAhIh8hKQwBCyAnICcgIaIiH6EiJSAeoiI0ICSaICQgKKIiKKEiKiAdoiI1oCAKKwM4IiGgISkgJSAdoiI2ICogHpoiN6IiOKAgCisDMCIqoCElICeaIB+hIicgHqIiOSA1oCAhoCEfICcgHaIiJyA4oCAqoCEeIDQgJCAooSIoIB2iIh2gICGgISQgNiAoIDeiIjSgICqgISggOSAdoCAhoCEhICcgNKAgKqAhHQsgAkEANgKgBCACICk5A6gCIAIgJTkDoAIgAiAfOQOIAiACIB45A4ACIAIgJDkD6AEgAiAoOQPgASACICE5A8gBIAIgHTkDwAEgAiAgIClEAAAAQKZUWEGjRPjBYxrcpUxAoqA5A7gCIAIgICAfRAAAAECmVFhBo0T4wWMa3KVMQKKgOQOYAiACICAgJEQAAABAplRYQaNE+MFjGtylTECioDkD+AEgAiAgICFEAAAAQKZUWEGjRPjBYxrcpUxAoqA5A9gBIAIgIyAlRI3ttaD3xrA+ICBEOZ1SokbfkT+iECIiISAhRI3ttaD3xrA+YxtEAAAAQKZUWEGiIiGjRPjBYxrcpUxAoqA5A7ACIAIgIyAeICGjRPjBYxrcpUxAoqA5A5ACIAIgIyAoICGjRPjBYxrcpUxAoqA5A/ABIAIgIyAdICGjRPjBYxrcpUxAoqA5A9ABQQAhDCAAQTBqQQBBgAH8CwAgAEEANgIsIABCADcDICAAQgA3AxggAEIANwMQIABCADcDCCAmvUL///////////8AgyJxUCBxQoCAgICAgID4/wBRciBxQoCAgICAgID4/wBWciEYRAAAAAAAAPA/RAAAAAAAAAAAIBVBAXEiChshHiAxIC4gBiAAQQhqEAwhGSAAKwO4CCIdRAAAAAAAAAAAIB29Qv///////////wCDQoCAgICAgID4/wBUGyElIAArA7AIIilEOZ1SokbfkT+iECIiHUSN7bWg98awPqVEje21oPfGsD4gHb1C////////////AINCgICAgICAgPj/AFgbRAAAAECmVFhBoiEnIAYrA3ghKiAGKwNYISggBisDOCEuIAYrAxghMSAGKwNwITMgBisDUCE0IAYrAzAhNSAGKwMQITYgBisDaCE3IAYrA0ghOCAGKwMoITkgBisDCCE6IAYrA2AhOyAGKwNAITwgBisDICE9IAQrA6ABIT4gAEGACWohBSAAKwOoCCE/A0AgKSARIAwoAqgJIgRBBHQiAmoiFisDCEQAAABAplRYQaNE+MFjGtylTECioCIdRCS4kbJFQ1VApEQkuJGyRUNVQCAdvUL///////////8AgyJxQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEAAAAAAAAAAAgcUKAgICAgICA+P8AVBsiHUQ5nVKiRt+RP6IQIiEhIBYrAwAhHyAdRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQKRAkISAgOyA8RAAAAAAAAAAAICUgIUSTEHxF+BuDQaIiHaMgHUQAAAAAAAAAAGEbIh2iIAYrAwAgPyAfICejRPjBYxrcpUxAoqAiIUQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/ICG9Qv///////////wCDQoCAgICAgID4/wBUGyIfoiA9ICBE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKMiI6KgoKAiIL1C////////////AINC//////////f/AFYNAyA3IDggHaIgOiAfoiA5ICOioKCgIiS9Qv///////////wCDQoCAgICAgID4/wBaDQMgMyA0IB2iIDYgH6IgNSAjoqCgoCIhvUL///////////8Ag0KAgICAgICA+P8AWg0DICogKCAdoiAxIB+iIC4gI6KgoKAiH71C////////////AINC//////////f/AFYgH0SN7bWg98awPmVyDQMgISEdICJEAAAAAAAAAABiBEAgPiAfoSIjICIgH6IgHaAiHSAdICNjGyEdCyAAQSxqIARqIhYtAABFBEAgAEEwaiAEQQV0aiIEIB85AxggBCAdOQMQIAQgJDkDCCAEICA5AwAgFkEBOgAAIBggLCAgRAAAAAAAAPA/IB+jIh2iRAAAAAAAAPA/oEQAAAAAAADgP6KiIiO9Qv///////////wCDQv/////////3/wBWIC9EAAAAAAAA8D8gJCAdoqFEAAAAAAAA4D+ioiIdvUL///////////8Ag0L/////////9/8AVnJyDQQgAEHACGogAmoiBCAdICajOQMIIAQgIyAmozkDAAsgBSAKBHwgAisDyAkhJCACKwPACSEgRAAAAAAAAAAAISFEAAAAAAAA8D8FIB8LOQMYIAUgITkDECAFICQ5AwggBSAgOQMAIAUgAisDiAogMKIgLaA5AyggBSACKwOACiAyoiAroDkDICAFQTBqIQUgDEEEaiIMQRhH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ACsDgAQhQiAAKwP4AyFBIAArA/ADIUAgACsDsAIhPyAAKwOoAiE+IAArA5gCIT0gACsDkAIhPCAAKwOIAiE7IAArA4ACITogACsD+AEhOSAAKwPwASE4IAArA+gBITcgACsD4AEhNiAAKwPYASE1IAArA9ABITQgACsDyAEhMyAAKwPAASExIAArA7ABIS4gACsDuAELISpEAAAAAAAAAAAhL0QAAAAAAADwPyEsRAAAAAAAAAAAIShEAAAAAAAAAAAhIUQAAAAAAAAAACEmRAAAAAAAAAAAISBEAAAAAAAAAAAhH0QAAAAAAAAAACEdRAAAAAAAAAAADAELRAAAAAAAAAAAISYgBCsDWCEnRAAAAAAAAPA/ISICQCACKwMIIh1EAAAAAAAAAABlBEBEAAAAAAAAAAAhHQwBCyACKwMQIiBEAAAAAAAAAABlBEBEAAAAAAAAAAAhHQwBCyAEKwMoIiVEAAAAAAAAAABlBEBEAAAAAAAAAAAhHQwBCyAgIB8gJCAloiAnoqIiIKIiJkQAAAAAAAAAACAmvUL///////////8Ag0KAgICAgICA+P8AVBsiJiAdICCiIh1EAAAAAAAAAAAgHb1C////////////AINCgICAgICAgPj/AFQbIh0gHSAmYxsiIL0icUIBfUL+////////B1YgcUIAUyBxQv///////////wCDQoCAgICAgIAIfUL/////////7/8AVnJxDQAgBCsDOCElIAQrAzAiKkQAAAAAAAAAAGRFICAgKmNFckUEQCAgICogIKMiIqIhICAmICKiISYgHSAioiEdCyAlRAAAAAAAAAAAZEUgICAlZEVyDQAgIiAlICCjIiCiISIgJiAgoiEmIB0gIKIhHQsgBSsDmAEhLCAFKwOQASEvIC5EOZ1SokbfkT+iIiUQIiEqIB1EAAAAAAAA4D+iISAgIyAlECcgHyApICSiICeioiAioiIioqAiHSEnIB4gKiAioqEiHyEkIB0iIiIjISkgHyIeIiUhKiAmRAAAAAAAAOA/oiImRAAAAAAAAAAAZSAgRAAAAAAAAAAAZXJFBEAgHyAgICEgIKIiHqEiIiAvoiIkICwgJpogKCAmoiInoSIjoiIloKEhKiAdICIgLKIiIiAjIC+aIi6iIiOgoCEpIB8gIJogHqEiHiAvoiIxICWgoSElIB0gHiAs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AgQgDSgCCBogABArCyAQKAIAIgAEQCAQIAA2AgQgECgCCBogABArC0EBIQQLIANBoARqJAAgBAtdAQJ/IABBADYCCCAAQgA3AgACQCABBEAgAUEASA0BIAAgARAtIgM2AgQgACADNgIAIAAgASADaiIENgIIIAEEQCADIAItAAAgAfwLAAsgACAENgIECyAADwsQFAAL3QEBBH9BCBAuIgBB1NUANgIAIAAiA0HE1gA2AgACf0GKCCEBQQBBiggtAABFDQAaAkACQANAIAFBAWoiAUEDcUUNASABLQAADQALDAELA0AgASIAQQRqIQFBgIKECCAAKAIAIgJrIAJyQYCBgoR4cUGAgYKEeEYNAAsDQCAAIgFBAWohACABLQAADQALCyABQYoIawsiAkENahAtIgBBADYCCCAAIAI2AgQgACACNgIAIABBDGohASACQQFqIgAEQCABQYoIIAD8CgAACyADIAE2AgQgA0H01gA2AgAAC9QMAwR/D3wBfiMAQaADayIJJAAgCSABKQNQNwOYAyAJIAEpA0g3A5ADIAErA1AhEyABKwNIIRQCQCABKAIAIgorAxAiDUQAAAAAAADwv2EEQCAKKwO4AUQAAAAAAAAAAGZFDQEgCisDwAFEAAAAAAAAAABmRQ0BCyANvUL///////////8Ag0L/////////9/8AVg0AIA2dIg38BiIcQgBTIA0gHLlicg0AIBynIgsgBygCBCAHKAIAIgxrQdABbU8NACAMIAtB0AFsaiILKAIARQ0AIAspA2AgASkDYFINACALKAIIIgxFDQAgCSALIAorAxhEAAAAAAAAAABiIAMgBCAMIAYgByAIEBUgCSsDCCETIAkrAwAhFCABKAIAIQoLIAkgCisDOCIXOQOAAyAJIAorA0AiGDkDiAMgCSAKKwNIIhk5A/ACIAkgCisDUCIaOQP4AiAKKwMoIRAgASsDiAEhFSAFKwMIIQ0gCisDIBAlIQcCQAJAIA1EAAAAAAAAAABlRQRAIAUrAxAiEUQAAAAAAAAAAGVFDQELIAAgEzkDCCAAIBQ5AwAMAQsgEEQAAAAAAADwPyAQRAAAAAAAAAAAYhshFgJAIAdFBEAgASsDICEQIAErAxghDyABKwMQIQ4CQCAKKwMQRAAAAAAAAPC/YQRAIAorA7gBRAAAAAAAAAAAZkUNASAKKwPA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AzAhDUQAAAAAAADwPyEJAkACQCABKwMYIghEAAAAAAAAAABlDQAgASsDICIHRAAAAAAAAAAAZQ0AIAErAygiBUQAAAAAAAAAAGUNACAHIAUgDaIgC6IiBaIiB0QAAAAAAAAAACAHvUL///////////8Ag0KAgICAgICA+P8AVBshByAIIAWiIghEAAAAAAAAAAAgCL1C////////////AINCgICAgICAgPj/AFQbIQggASsDYCIFvSIQQgF9Qv7///////8HViAQQgBTIBBC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENASABKwNwIgpEAAAAAAAAAABkIgMgASsDaCIGRAAAAAAAAAAAZHJFDQEgByAIIAcgCGQbIgxEAAAAAAAAAABkRQ0BIAUgDKIiBb0iEEIBfUL+////////B1YgEEIAUyAQQv///////////wCDQoCAgICAgIAIfUL/////////7/8AVnJxDQEgCiAFoyAGIAWjRAAAAAAAAPA/IAUgBmMbRAAAAAAAAPA/IAZEAAAAAAAAAABkGyIJIAUgCaIgCmQbIAkgAxsiCUQAAAAAAADwP2EEQEQAAAAAAADwPyEJDAILIAcgCaIhByAIIAmiIQgMAQtEAAAAAAAAAAAhB0QAAAAAAAAAACEICwJ8RAAAAAAAAAAAIAdEAAAAAAAA4D+iIgVEAAAAAAAAAABlDQAaRAAAAAAAAAAAIQZEAAAAAAAAAAAgCEQAAAAAAADgP6IiD0QAAAAAAAAAAGUNABogASsDUCEKIAErA0ghDCAFIAEoAlgiAwR8IAMrAwAhBiADKwMIBUQAAAAAAAAAAAuiIQUgDyAGoiIGRAAAAAAAAAAAYQRARAAAAAAAAAAAIAVEAAAAAAAAAABhDQEaCyAGmiAMoiAFIAqioSEOIAwgBaIgBiAKoqELIQoCfCABKAJcIgNFBEBEAAAAAAAAAAAhBUQAAAAAAAAAAAwBC0QAAAAAAAAAACEFRAAAAAAAAAAAIAkgCyANIAMrAwCioqIiBkQAAAAAAAAAAGENABogBiADKwMIRDmdUqJG35E/oiILECKiIQUgBiALECeiCyEGIAErAwAhDSABKwMIIQsgAiABKwMQIgw5A1ggAiALIA4gBaAiD0QAAABAplRYQaNE+MFjGtylTECioDkDUCACIA0gCiAGoCIKIAtEOZ1SokbfkT+iECIiDkSN7bWg98awPqVEje21oPfGsD4gDr1C////////////AINCgICAgICAgPj/AFgbRAAAAECmVFhBoiIOo0T4wWMa3KVMQKKgOQNIIAJCADcDMCACQgA3AyhBACEDIAJB4ABqIAJByABqIAJBKGoQGARAIAIgAikAKTcDOCACIAIpADA3AD8gAi0AKCEEQQEhAwsgAEEAOgCgASAAQQA6AIgBIABBADoAgAEgAEEAOgBwIABBADoAaCAAQQA6AFggACAEOgAAIAAgAikDODcAASAAIAIpAD83AAggACAPOQM4IAAgCjkDMCAAIAk5AyggACAHOQMgIAAgCDkDGCAAIAM6ABAgACACKQNYNwNQIAAgAikDUDcDSCAAIAIpA0g3A0AgAS0AmAFBAUYEQCACIAw5AyAgAiAFRAAAAECmVFhBo0T4wWMa3KVMQKIgC6A5AxggAiANIAYgDqNE+MFjGtylTECioDkDECACQgA3AwggAkIANwMAIAJB4ABqIAJBEGogAhAYBEAgACACKQMINwNgIAAgAikDADcDWCAAQQE6AGgLIABBAToAgAEgACAFOQN4IAAgBjkDcCAAIAIpAyA3A5gBIAAgAikDGDcDkAEgACACKQMQNwOIASAAQQE6AKABCyACQfAAaiQAC7kLAwd8An8BfgJAIAICfAJAIAAoAgAtAABBAUcNACAAKAIEIgsoAngoAhAiCkUNACABKwMIIgNEJLiRskVDVUCkRCS4kbJFQ1VAIAO9Qv///////////wCDIgxCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQAAAAAAAAAACAMQoCAgICAgID4/wBUGyIERDmdUqJG35E/ohAiIQYgASsDECEDIAorA1ghByABKwMAIQUgCisDGCEIIAREJLiRskVDVUCkRCS4kbJFQ1XApUQ5nVKiRt+RP6JEAAAAAAAA4D+iRBgtRFT7Iek/oBApECQhBCAKKwNgIAorA0BEAAAAAAAAAAAgA0QAAAAAAAAAACADvUL///////////8Ag0KAgICAgICA+P8AVBsgBkSTEHxF+BuDQaIiA6MgA0QAAAAAAAAAAGEbIgOiIAorAwAgBUQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IAW9Qv///////////wCDQoCAgICAgID4/wBUGyIFoiAKKwMgIARE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKMiBKKgoKAiBr1C////////////AINC//////////f/AFYNACAKKwNoIAorA0ggA6IgCisDCCAFoiAKKwMoIASioKCgIgm9Qv///////////wCDQoCAgICAgID4/wBaDQAgCisDcCAKKwNQIAOiIAorAxAgBaIgCisDMCAEoqCgoL1C////////////AINCgICAgICAgPj/AFoNACAKKwN4IAcgA6IgCCAFoiAEIAorAziioKCgIgO9Qv///////////wCDQv/////////3/wBWIANEje21oPfGsD5lcg0AIAZEAAAAAAAA8D8gA6MiA6JEAAAAAAAA8D+gRAAAAAAAAOA/oiALKwOAAaIiBb1C////////////AINC//////////f/AFYNAEQAAAAAAADwPyAJIAOioUQAAAAAAADgP6IgCysDiAGiIgS9Qv///////////wCDQoCAgICAgID4/wBaDQAgCysDkAEiA71C////////////AIMiDEIBfUL+////////B1YgDEKAgICAgICACH1C/////////+//AFZxDQAgAiAFIAOjOQMAIAQgA6MMAQtBACEKIAAoAggtAABBAUcNASAAKAIEKAJ4IgsoAhQiAEUNASALKwMAIgNEAAAAAAAAAABlDQEgASsDACEFIAArAwAhBiABKwMIIgREJLiRskVDVUCkRCS4kbJFQ1VAIAS9Qv///////////wCDIgxCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gRBgtRFT7Iek/IAxCgICAgICAgPj/AFQbECkQJCEHIAArA2AgACsDQCABKwMQIgREAAAAAAAAAAAgBL1C////////////AINCgICAgICAgPj/AFQbIgSiIAYgAyAFRAAAAAAAgGZAoEQAAAAAAIB2QKNEAAAAAAAA4D8gBb1C////////////AINCgICAgICAgPj/AFQboiIFoiAAKwMgIAMgB0T4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAo6IiA6KgoKAiBr1C////////////AINC//////////f/AFYNASAAKwNoIAArA0ggBKIgACsDCCAFoiADIAArAyiioKCgIge9Qv///////////wCDQv/////////3/wBWDQEgACsDeCAAKwNYIASiIAArAxggBaIgAyAAKwM4oqCgoCIDvSIMQgF9Qv7///////8HViAMQgBTIAxC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENASACIAYgA6M5AwAgByADows5AwhBASEKCyAKC4sGAwJ8A38CfiMAQYABayIHJAAgACABIAIQGwJAAkAgAysDCCIEIAIrAwgiBWIEQCAEIAVjDQEMAgsgAigCACEGRAAAAAAAAAAAIQVEAAAAAAAAAAAhBCADKAIAIggEQCAIKAIAKwNwIQQLIAYEQCAGKAIAKwNwIQULIAQgBWIEQCAEIAVjDQEMAgsgCARAIAgpA2AhCQsgBgRAIAYpA2AhCgsgCSAKUgRAIAkgClMNAQwCC0QAAAAAAAAAACEEIAgEQCAIKAIAKwOYASEECyAGBHwgBigCACsDmAEFRAAAAAAAAAAACyAEZEUNAQsgByACQYAB/AoAACACIANBgAH8CgAAIAMgB0GAAfwKAAACQCACKwMIIgQgASsDCCIFYgRAIAQgBWMNAQwCCyABKAIAIQNEAAAAAAAAAAAhBUQAAAAAAAAAACEEIAIoAgAiBgRAIAYoAgArA3AhBAsgAwRAIAMoAgArA3AhBQsgBCAFYgRAIAQgBWMNAQwCC0IAIQpCACEJIAYEQCAGKQNgIQkLIAMEQCADKQNgIQoLIAkgClIEQCAJIApTDQEMAgtEAAAAAAAAAAAhBCAGBEAgBigCACsDmAEhBAsgAwR8IAMoAgArA5gBBUQAAAAAAAAAAAsgBGRFDQELIAcgAUGAAfwKAAAgASACQYAB/AoAACACIAdBgAH8CgAAAkAgASsDCCIEIAArAwgiBWIEQCAEIAVjDQEMAgsgACgCACECRAAAAAAAAAAAIQVEAAAAAAAAAAAhBCABKAIAIgMEQCADKAIAKwNwIQQLIAIEQCACKAIAKwNwIQULIAQgBWIEQCAEIAVjDQEMAgtCACEKQgAhCSADBEAgAykDYCEJCyACBEAgAikDYCEKCyAJIApSBEAgCSAKUw0BDAILRAAAAAAAAAAAIQQgAwRAIAMoAgArA5gBIQQLIAIEfCACKAIAKwOY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\"","export default \"data:text/javascript;base64,YXN5bmMgZnVuY3Rpb24gTW9kdWxlKG1vZHVsZUFyZz17fSl7dmFyIG1vZHVsZVJ0bjt2YXIgTW9kdWxlPW1vZHVsZUFyZzt2YXIgRU5WSVJPTk1FTlRfSVNfV0VCPSEhZ2xvYmFsVGhpcy53aW5kb3c7dmFyIEVOVklST05NRU5UX0lTX1dPUktFUj0hIWdsb2JhbFRoaXMuV29ya2VyR2xvYmFsU2NvcGU7dmFyIEVOVklST05NRU5UX0lTX05PREU9Z2xvYmFsVGhpcy5wcm9jZXNzPy52ZXJzaW9ucz8ubm9kZSYmZ2xvYmFsVGhpcy5wcm9jZXNzPy50eXBlIT0icmVuZGVyZXIiO3ZhciBFTlZJUk9OTUVOVF9JU19QVEhSRUFEPUVOVklST05NRU5UX0lTX1dPUktFUiYmc2VsZi5uYW1lPy5zdGFydHNXaXRoKCJlbS1wdGhyZWFkIik7aWYoRU5WSVJPTk1FTlRfSVNfTk9ERSl7Y29uc3R7Y3JlYXRlUmVxdWlyZX09YXdhaXQgaW1wb3J0KCJtb2R1bGUiKTt2YXIgcmVxdWlyZT1jcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7dmFyIHdvcmtlcl90aHJlYWRzPXJlcXVpcmUoIndvcmtlcl90aHJlYWRzIik7Z2xvYmFsLldvcmtlcj13b3JrZXJfdGhyZWFkcy5Xb3JrZXI7RU5WSVJPTk1FTlRfSVNfV09SS0VSPSF3b3JrZXJfdGhyZWFkcy5pc01haW5UaHJlYWQ7RU5WSVJPTk1FTlRfSVNfUFRIUkVBRD1FTlZJUk9OTUVOVF9JU19XT1JLRVImJndvcmtlcl90aHJlYWRzWyJ3b3JrZXJEYXRhIl09PSJlbS1wdGhyZWFkIn12YXIgYXJndW1lbnRzXz1bXTt2YXIgdGhpc1Byb2dyYW09Ii4vdGhpcy5wcm9ncmFtIjt2YXIgcXVpdF89KHN0YXR1cyx0b1Rocm93KT0+e3Rocm93IHRvVGhyb3d9O3ZhciBfc2NyaXB0TmFtZT1pbXBvcnQubWV0YS51cmw7dmFyIHNjcmlwdERpcmVjdG9yeT0iIjtmdW5jdGlvbiBsb2NhdGVGaWxlKHBhdGgpe2lmKE1vZHVsZVsibG9jYXRlRmlsZSJdKXtyZXR1cm4gTW9kdWxlWyJsb2NhdGVGaWxlIl0ocGF0aCxzY3JpcHREaXJlY3RvcnkpfXJldHVybiBzY3JpcHREaXJlY3RvcnkrcGF0aH12YXIgcmVhZEFzeW5jLHJlYWRCaW5hcnk7aWYoRU5WSVJPTk1FTlRfSVNfTk9ERSl7dmFyIGZzPXJlcXVpcmUoImZzIik7aWYoX3NjcmlwdE5hbWUuc3RhcnRzV2l0aCgiZmlsZToiKSl7c2NyaXB0RGlyZWN0b3J5PXJlcXVpcmUoInBhdGgiKS5kaXJuYW1lKHJlcXVpcmUoInVybCIpLmZpbGVVUkxUb1BhdGgoX3NjcmlwdE5hbWUpKSsiLyJ9cmVhZEJpbmFyeT1maWxlbmFtZT0+e2ZpbGVuYW1lPWlzRmlsZVVSSShmaWxlbmFtZSk/bmV3IFVSTChmaWxlbmFtZSk6ZmlsZW5hbWU7dmFyIHJldD1mcy5yZWFkRmlsZVN5bmMoZmlsZW5hbWUpO3JldHVybiByZXR9O3JlYWRBc3luYz1hc3luYyhmaWxlbmFtZSxiaW5hcnk9dHJ1ZSk9PntmaWxlbmFtZT1pc0ZpbGVVUkkoZmlsZW5hbWUpP25ldyBVUkwoZmlsZW5hbWUpOmZpbGVuYW1lO3ZhciByZXQ9ZnMucmVhZEZpbGVTeW5jKGZpbGVuYW1lLGJpbmFyeT91bmRlZmluZWQ6InV0ZjgiKTtyZXR1cm4gcmV0fTtpZihwcm9jZXNzLmFyZ3YubGVuZ3RoPjEpe3RoaXNQcm9ncmFtPXByb2Nlc3MuYXJndlsxXS5yZXBsYWNlKC9cXC9nLCIvIil9YXJndW1lbnRzXz1wcm9jZXNzLmFyZ3Yuc2xpY2UoMik7cXVpdF89KHN0YXR1cyx0b1Rocm93KT0+e3Byb2Nlc3MuZXhpdENvZGU9c3RhdHVzO3Rocm93IHRvVGhyb3d9fWVsc2UgaWYoRU5WSVJPTk1FTlRfSVNfV0VCfHxFTlZJUk9OTUVOVF9JU19XT1JLRVIpe3RyeXtzY3JpcHREaXJlY3Rvcnk9bmV3IFVSTCgiLiIsX3NjcmlwdE5hbWUpLmhyZWZ9Y2F0Y2h7fWlmKCFFTlZJUk9OTUVOVF9JU19OT0RFKXtpZihFTlZJUk9OTUVOVF9JU19XT1JLRVIpe3JlYWRCaW5hcnk9dXJsPT57dmFyIHhocj1uZXcgWE1MSHR0cFJlcXVlc3Q7eGhyLm9wZW4oIkdFVCIsdXJsLGZhbHNlKTt4aHIucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciI7eGhyLnNlbmQobnVsbCk7cmV0dXJuIG5ldyBVaW50OEFycmF5KHhoci5yZXNwb25zZSl9fXJlYWRBc3luYz1hc3luYyB1cmw9PntpZihpc0ZpbGVVUkkodXJsKSl7cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLHJlamVjdCk9Pnt2YXIgeGhyPW5ldyBYTUxIdHRwUmVxdWVzdDt4aHIub3BlbigiR0VUIix1cmwsdHJ1ZSk7eGhyLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiO3hoci5vbmxvYWQ9KCk9PntpZih4aHIuc3RhdHVzPT0yMDB8fHhoci5zdGF0dXM9PTAmJnhoci5yZXNwb25zZSl7cmVzb2x2ZSh4aHIucmVzcG9uc2UpO3JldHVybn1yZWplY3QoeGhyLnN0YXR1cyl9O3hoci5vbmVycm9yPXJlamVjdDt4aHIuc2VuZChudWxsKX0pfXZhciByZXNwb25zZT1hd2FpdCBmZXRjaCh1cmwse2NyZWRlbnRpYWxzOiJzYW1lLW9yaWdpbiJ9KTtpZihyZXNwb25zZS5vayl7cmV0dXJuIHJlc3BvbnNlLmFycmF5QnVmZmVyKCl9dGhyb3cgbmV3IEVycm9yKHJlc3BvbnNlLnN0YXR1cysiIDogIityZXNwb25zZS51cmwpfX19ZWxzZXt9dmFyIGRlZmF1bHRQcmludD1jb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpO3ZhciBkZWZhdWx0UHJpbnRFcnI9Y29uc29sZS5lcnJvci5iaW5kKGNvbnNvbGUpO2lmKEVOVklST05NRU5UX0lTX05PREUpe3ZhciB1dGlscz1yZXF1aXJlKCJ1dGlsIik7dmFyIHN0cmluZ2lmeT1hPT50eXBlb2YgYT09Im9iamVjdCI/dXRpbHMuaW5zcGVjdChhKTphO2RlZmF1bHRQcmludD0oLi4uYXJncyk9PmZzLndyaXRlU3luYygxLGFyZ3MubWFwKHN0cmluZ2lmeSkuam9pbigiICIpKyJcbiIpO2RlZmF1bHRQcmludEVycj0oLi4uYXJncyk9PmZzLndyaXRlU3luYygyLGFyZ3MubWFwKHN0cmluZ2lmeSkuam9pbigiICIpKyJcbiIpfXZhciBvdXQ9ZGVmYXVsdFByaW50O3ZhciBlcnI9ZGVmYXVsdFByaW50RXJyO3ZhciB3YXNtQmluYXJ5O3ZhciB3YXNtTW9kdWxlO3ZhciBBQk9SVD1mYWxzZTt2YXIgRVhJVFNUQVRVUzt2YXIgaXNGaWxlVVJJPWZpbGVuYW1lPT5maWxlbmFtZS5zdGFydHNXaXRoKCJmaWxlOi8vIik7dmFyIHJlYWR5UHJvbWlzZVJlc29sdmUscmVhZHlQcm9taXNlUmVqZWN0O2lmKEVOVklST05NRU5UX0lTX05PREUmJkVOVklST05NRU5UX0lTX1BUSFJFQUQpe3ZhciBwYXJlbnRQb3J0PXdvcmtlcl90aHJlYWRzWyJwYXJlbnRQb3J0Il07cGFyZW50UG9ydC5vbigibWVzc2FnZSIsbXNnPT5nbG9iYWwub25tZXNzYWdlPy4oe2RhdGE6bXNnfSkpO09iamVjdC5hc3NpZ24oZ2xvYmFsVGhpcyx7c2VsZjpnbG9iYWwscG9zdE1lc3NhZ2U6bXNnPT5wYXJlbnRQb3J0WyJwb3N0TWVzc2FnZSJdKG1zZyl9KTtwcm9jZXNzLm9uKCJ1bmNhdWdodEV4Y2VwdGlvbiIsZXJyPT57cG9zdE1lc3NhZ2Uoe2NtZDoidW5jYXVnaHRFeGNlcHRpb24iLGVycm9yOmVycn0pO3Byb2Nlc3MuZXhpdCgxKX0pfXZhciBzdGFydFdvcmtlcjtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXt2YXIgaW5pdGlhbGl6ZWRKUz1mYWxzZTtzZWxmLm9udW5oYW5kbGVkcmVqZWN0aW9uPWU9Pnt0aHJvdyBlLnJlYXNvbnx8ZX07ZnVuY3Rpb24gaGFuZGxlTWVzc2FnZShlKXt0cnl7dmFyIG1zZ0RhdGE9ZVsiZGF0YSJdO3ZhciBjbWQ9bXNnRGF0YS5jbWQ7aWYoY21kPT09ImxvYWQiKXtsZXQgbWVzc2FnZVF1ZXVlPVtdO3NlbGYub25tZXNzYWdlPWU9Pm1lc3NhZ2VRdWV1ZS5wdXNoKGUpO3N0YXJ0V29ya2VyPSgpPT57cG9zdE1lc3NhZ2Uoe2NtZDoibG9hZGVkIn0pO2ZvcihsZXQgbXNnIG9mIG1lc3NhZ2VRdWV1ZSl7aGFuZGxlTWVzc2FnZShtc2cpfXNlbGYub25tZXNzYWdlPWhhbmRsZU1lc3NhZ2V9O2Zvcihjb25zdCBoYW5kbGVyIG9mIG1zZ0RhdGEuaGFuZGxlcnMpe2lmKCFNb2R1bGVbaGFuZGxlcl18fE1vZHVsZVtoYW5kbGVyXS5wcm94eSl7TW9kdWxlW2hhbmRsZXJdPSguLi5hcmdzKT0+e3Bvc3RNZXNzYWdlKHtjbWQ6ImNhbGxIYW5kbGVyIixoYW5kbGVyLGFyZ3N9KX07aWYoaGFuZGxlcj09InByaW50IilvdXQ9TW9kdWxlW2hhbmRsZXJdO2lmKGhhbmRsZXI9PSJwcmludEVyciIpZXJyPU1vZHVsZVtoYW5kbGVyXX19d2FzbU1lbW9yeT1tc2dEYXRhLndhc21NZW1vcnk7dXBkYXRlTWVtb3J5Vmlld3MoKTt3YXNtTW9kdWxlPW1zZ0RhdGEud2FzbU1vZHVsZTtjcmVhdGVXYXNtKCk7cnVuKCl9ZWxzZSBpZihjbWQ9PT0icnVuIil7ZXN0YWJsaXNoU3RhY2tTcGFjZShtc2dEYXRhLnB0aHJlYWRfcHRyKTtfX2Vtc2NyaXB0ZW5fdGhyZWFkX2luaXQobXNnRGF0YS5wdGhyZWFkX3B0ciwwLDAsMSwwLDApO1BUaHJlYWQudGhyZWFkSW5pdFRMUygpO19fZW1zY3JpcHRlbl90aHJlYWRfbWFpbGJveF9hd2FpdChtc2dEYXRhLnB0aHJlYWRfcHRyKTtpZighaW5pdGlhbGl6ZWRKUyl7aW5pdGlhbGl6ZWRKUz10cnVlfXRyeXtpbnZva2VFbnRyeVBvaW50KG1zZ0RhdGEuc3RhcnRfcm91dGluZSxtc2dEYXRhLmFyZyl9Y2F0Y2goZXgpe2lmKGV4IT0idW53aW5kIil7dGhyb3cgZXh9fX1lbHNlIGlmKG1zZ0RhdGEudGFyZ2V0PT09InNldGltbWVkaWF0ZSIpe31lbHNlIGlmKGNtZD09PSJjaGVja01haWxib3giKXtpZihpbml0aWFsaXplZEpTKXtjaGVja01haWxib3goKX19ZWxzZSBpZihjbWQpe2Vycihgd29ya2VyOiByZWNlaXZlZCB1bmtub3duIGNvbW1hbmQgJHtjbWR9YCk7ZXJyKG1zZ0RhdGEpfX1jYXRjaChleCl7X19lbXNjcmlwdGVuX3RocmVhZF9jcmFzaGVkKCk7dGhyb3cgZXh9fXNlbGYub25tZXNzYWdlPWhhbmRsZU1lc3NhZ2V9dmFyIEhFQVA4LEhFQVBVOCxIRUFQMTYsSEVBUFUxNixIRUFQMzIsSEVBUFUzMixIRUFQRjMyLEhFQVBGNjQ7dmFyIEhFQVA2NCxIRUFQVTY0O3ZhciBydW50aW1lSW5pdGlhbGl6ZWQ9ZmFsc2U7ZnVuY3Rpb24gdXBkYXRlTWVtb3J5Vmlld3MoKXt2YXIgYj13YXNtTWVtb3J5LmJ1ZmZlcjtIRUFQOD1uZXcgSW50OEFycmF5KGIpO0hFQVAxNj1uZXcgSW50MTZBcnJheShiKTtIRUFQVTg9bmV3IFVpbnQ4QXJyYXkoYik7SEVBUFUxNj1uZXcgVWludDE2QXJyYXkoYik7SEVBUDMyPW5ldyBJbnQzMkFycmF5KGIpO0hFQVBVMzI9bmV3IFVpbnQzMkFycmF5KGIpO0hFQVBGMzI9bmV3IEZsb2F0MzJBcnJheShiKTtIRUFQRjY0PW5ldyBGbG9hdDY0QXJyYXkoYik7SEVBUDY0PW5ldyBCaWdJbnQ2NEFycmF5KGIpO0hFQVBVNjQ9bmV3IEJpZ1VpbnQ2NEFycmF5KGIpfWZ1bmN0aW9uIGluaXRNZW1vcnkoKXtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXtyZXR1cm59aWYoTW9kdWxlWyJ3YXNtTWVtb3J5Il0pe3dhc21NZW1vcnk9TW9kdWxlWyJ3YXNtTWVtb3J5Il19ZWxzZXt2YXIgSU5JVElBTF9NRU1PUlk9TW9kdWxlWyJJTklUSUFMX01FTU9SWSJdfHw1MzY4NzA5MTI7d2FzbU1lbW9yeT1uZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOklOSVRJQUxfTUVNT1JZLzY1NTM2LG1heGltdW06SU5JVElBTF9NRU1PUlkvNjU1MzYsc2hhcmVkOnRydWV9KX11cGRhdGVNZW1vcnlWaWV3cygpfWZ1bmN0aW9uIHByZVJ1bigpe2lmKE1vZHVsZVsicHJlUnVuIl0pe2lmKHR5cGVvZiBNb2R1bGVbInByZVJ1biJdPT0iZnVuY3Rpb24iKU1vZHVsZVsicHJlUnVuIl09W01vZHVsZVsicHJlUnVuIl1dO3doaWxlKE1vZHVsZVsicHJlUnVuIl0ubGVuZ3RoKXthZGRPblByZVJ1bihNb2R1bGVbInByZVJ1biJdLnNoaWZ0KCkpfX1jYWxsUnVudGltZUNhbGxiYWNrcyhvblByZVJ1bnMpfWZ1bmN0aW9uIGluaXRSdW50aW1lKCl7cnVudGltZUluaXRpYWxpemVkPXRydWU7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRClyZXR1cm4gc3RhcnRXb3JrZXIoKTt3YXNtRXhwb3J0c1sicyJdKCl9ZnVuY3Rpb24gcG9zdFJ1bigpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpe3JldHVybn1pZihNb2R1bGVbInBvc3RSdW4iXSl7aWYodHlwZW9mIE1vZHVsZVsicG9zdFJ1biJdPT0iZnVuY3Rpb24iKU1vZHVsZVsicG9zdFJ1biJdPVtNb2R1bGVbInBvc3RSdW4iXV07d2hpbGUoTW9kdWxlWyJwb3N0UnVuIl0ubGVuZ3RoKXthZGRPblBvc3RSdW4oTW9kdWxlWyJwb3N0UnVuIl0uc2hpZnQoKSl9fWNhbGxSdW50aW1lQ2FsbGJhY2tzKG9uUG9zdFJ1bnMpfWZ1bmN0aW9uIGFib3J0KHdoYXQpe01vZHVsZVsib25BYm9ydCJdPy4od2hhdCk7d2hhdD0iQWJvcnRlZCgiK3doYXQrIikiO2Vycih3aGF0KTtBQk9SVD10cnVlO3doYXQrPSIuIEJ1aWxkIHdpdGggLXNBU1NFUlRJT05TIGZvciBtb3JlIGluZm8uIjt2YXIgZT1uZXcgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKHdoYXQpO3JlYWR5UHJvbWlzZVJlamVjdD8uKGUpO3Rocm93IGV9dmFyIHdhc21CaW5hcnlGaWxlO2Z1bmN0aW9uIGZpbmRXYXNtQmluYXJ5KCl7aWYoTW9kdWxlWyJsb2NhdGVGaWxlIl0pe3JldHVybiBsb2NhdGVGaWxlKCJvZmZsb2Fkcy1zaW1kLW10Lndhc20iKX1yZXR1cm4gbmV3IFVSTCgib2ZmbG9hZHMtc2ltZC1tdC53YXNtIixpbXBvcnQubWV0YS51cmwpLmhyZWZ9ZnVuY3Rpb24gZ2V0QmluYXJ5U3luYyhmaWxlKXtpZihmaWxlPT13YXNtQmluYXJ5RmlsZSYmd2FzbUJpbmFyeSl7cmV0dXJuIG5ldyBVaW50OEFycmF5KHdhc21CaW5hcnkpfWlmKHJlYWRCaW5hcnkpe3JldHVybiByZWFkQmluYXJ5KGZpbGUpfXRocm93ImJvdGggYXN5bmMgYW5kIHN5bmMgZmV0Y2hpbmcgb2YgdGhlIHdhc20gZmFpbGVkIn1hc3luYyBmdW5jdGlvbiBnZXRXYXNtQmluYXJ5KGJpbmFyeUZpbGUpe2lmKCF3YXNtQmluYXJ5KXt0cnl7dmFyIHJlc3BvbnNlPWF3YWl0IHJlYWRBc3luYyhiaW5hcnlGaWxlKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkocmVzcG9uc2UpfWNhdGNoe319cmV0dXJuIGdldEJpbmFyeVN5bmMoYmluYXJ5RmlsZSl9YXN5bmMgZnVuY3Rpb24gaW5zdGFudGlhdGVBcnJheUJ1ZmZlcihiaW5hcnlGaWxlLGltcG9ydHMpe3RyeXt2YXIgYmluYXJ5PWF3YWl0IGdldFdhc21CaW5hcnkoYmluYXJ5RmlsZSk7dmFyIGluc3RhbmNlPWF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGJpbmFyeSxpbXBvcnRzKTtyZXR1cm4gaW5zdGFuY2V9Y2F0Y2gocmVhc29uKXtlcnIoYGZhaWxlZCB0byBhc3luY2hyb25vdXNseSBwcmVwYXJlIHdhc206ICR7cmVhc29ufWApO2Fib3J0KHJlYXNvbil9fWFzeW5jIGZ1bmN0aW9uIGluc3RhbnRpYXRlQXN5bmMoYmluYXJ5LGJpbmFyeUZpbGUsaW1wb3J0cyl7aWYoIWJpbmFyeSYmIWlzRmlsZVVSSShiaW5hcnlGaWxlKSYmIUVOVklST05NRU5UX0lTX05PREUpe3RyeXt2YXIgcmVzcG9uc2U9ZmV0Y2goYmluYXJ5RmlsZSx7Y3JlZGVudGlhbHM6InNhbWUtb3JpZ2luIn0pO3ZhciBpbnN0YW50aWF0aW9uUmVzdWx0PWF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nKHJlc3BvbnNlLGltcG9ydHMpO3JldHVybiBpbnN0YW50aWF0aW9uUmVzdWx0fWNhdGNoKHJlYXNvbil7ZXJyKGB3YXNtIHN0cmVhbWluZyBjb21waWxlIGZhaWxlZDogJHtyZWFzb259YCk7ZXJyKCJmYWxsaW5nIGJhY2sgdG8gQXJyYXlCdWZmZXIgaW5zdGFudGlhdGlvbiIpfX1yZXR1cm4gaW5zdGFudGlhdGVBcnJheUJ1ZmZlcihiaW5hcnlGaWxlLGltcG9ydHMpfWZ1bmN0aW9uIGdldFdhc21JbXBvcnRzKCl7YXNzaWduV2FzbUltcG9ydHMoKTt2YXIgaW1wb3J0cz17YTp3YXNtSW1wb3J0c307cmV0dXJuIGltcG9ydHN9YXN5bmMgZnVuY3Rpb24gY3JlYXRlV2FzbSgpe2Z1bmN0aW9uIHJlY2VpdmVJbnN0YW5jZShpbnN0YW5jZSxtb2R1bGUpe3dhc21FeHBvcnRzPWluc3RhbmNlLmV4cG9ydHM7cmVnaXN0ZXJUTFNJbml0KHdhc21FeHBvcnRzWyJEIl0pO2Fzc2lnbldhc21FeHBvcnRzKHdhc21FeHBvcnRzKTt3YXNtTW9kdWxlPW1vZHVsZTtyZXR1cm4gd2FzbUV4cG9ydHN9ZnVuY3Rpb24gcmVjZWl2ZUluc3RhbnRpYXRpb25SZXN1bHQocmVzdWx0KXtyZXR1cm4gcmVjZWl2ZUluc3RhbmNlKHJlc3VsdFsiaW5zdGFuY2UiXSxyZXN1bHRbIm1vZHVsZSJdKX12YXIgaW5mbz1nZXRXYXNtSW1wb3J0cygpO2lmKE1vZHVsZVsiaW5zdGFudGlhdGVXYXNtIl0pe3JldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSxyZWplY3QpPT57TW9kdWxlWyJpbnN0YW50aWF0ZVdhc20iXShpbmZvLChpbnN0LG1vZCk9PntyZXNvbHZlKHJlY2VpdmVJbnN0YW5jZShpbnN0LG1vZCkpfSl9KX1pZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXt2YXIgaW5zdGFuY2U9bmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKHdhc21Nb2R1bGUsZ2V0V2FzbUltcG9ydHMoKSk7cmV0dXJuIHJlY2VpdmVJbnN0YW5jZShpbnN0YW5jZSx3YXNtTW9kdWxlKX13YXNtQmluYXJ5RmlsZT8/PWZpbmRXYXNtQmluYXJ5KCk7dmFyIHJlc3VsdD1hd2FpdCBpbnN0YW50aWF0ZUFzeW5jKHdhc21CaW5hcnksd2FzbUJpbmFyeUZpbGUsaW5mbyk7dmFyIGV4cG9ydHM9cmVjZWl2ZUluc3RhbnRpYXRpb25SZXN1bHQocmVzdWx0KTtyZXR1cm4gZXhwb3J0c31jbGFzcyBFeGl0U3RhdHVze25hbWU9IkV4aXRTdGF0dXMiO2NvbnN0cnVjdG9yKHN0YXR1cyl7dGhpcy5tZXNzYWdlPWBQcm9ncmFtIHRlcm1pbmF0ZWQgd2l0aCBleGl0KCR7c3RhdHVzfSlgO3RoaXMuc3RhdHVzPXN0YXR1c319dmFyIHRlcm1pbmF0ZVdvcmtlcj13b3JrZXI9Pnt3b3JrZXIudGVybWluYXRlKCk7d29ya2VyLm9ubWVzc2FnZT1lPT57fX07dmFyIGNsZWFudXBUaHJlYWQ9cHRocmVhZF9wdHI9Pnt2YXIgd29ya2VyPVBUaHJlYWQucHRocmVhZHNbcHRocmVhZF9wdHJdO1BUaHJlYWQucmV0dXJuV29ya2VyVG9Qb29sKHdvcmtlcil9O3ZhciBjYWxsUnVudGltZUNhbGxiYWNrcz1jYWxsYmFja3M9Pnt3aGlsZShjYWxsYmFja3MubGVuZ3RoPjApe2NhbGxiYWNrcy5zaGlmdCgpKE1vZHVsZSl9fTt2YXIgb25QcmVSdW5zPVtdO3ZhciBhZGRPblByZVJ1bj1jYj0+b25QcmVSdW5zLnB1c2goY2IpO3ZhciBydW5EZXBlbmRlbmNpZXM9MDt2YXIgZGVwZW5kZW5jaWVzRnVsZmlsbGVkPW51bGw7dmFyIHJlbW92ZVJ1bkRlcGVuZGVuY3k9aWQ9PntydW5EZXBlbmRlbmNpZXMtLTtNb2R1bGVbIm1vbml0b3JSdW5EZXBlbmRlbmNpZXMiXT8uKHJ1bkRlcGVuZGVuY2llcyk7aWYocnVuRGVwZW5kZW5jaWVzPT0wKXtpZihkZXBlbmRlbmNpZXNGdWxmaWxsZWQpe3ZhciBjYWxsYmFjaz1kZXBlbmRlbmNpZXNGdWxmaWxsZWQ7ZGVwZW5kZW5jaWVzRnVsZmlsbGVkPW51bGw7Y2FsbGJhY2soKX19fTt2YXIgYWRkUnVuRGVwZW5kZW5jeT1pZD0+e3J1bkRlcGVuZGVuY2llcysrO01vZHVsZVsibW9uaXRvclJ1bkRlcGVuZGVuY2llcyJdPy4ocnVuRGVwZW5kZW5jaWVzKX07dmFyIHNwYXduVGhyZWFkPXRocmVhZFBhcmFtcz0+e3ZhciB3b3JrZXI9UFRocmVhZC5nZXROZXdXb3JrZXIoKTtpZighd29ya2VyKXtyZXR1cm4gNn1QVGhyZWFkLnJ1bm5pbmdXb3JrZXJzLnB1c2god29ya2VyKTtQVGhyZWFkLnB0aHJlYWRzW3RocmVhZFBhcmFtcy5wdGhyZWFkX3B0cl09d29ya2VyO3dvcmtlci5wdGhyZWFkX3B0cj10aHJlYWRQYXJhbXMucHRocmVhZF9wdHI7dmFyIG1zZz17Y21kOiJydW4iLHN0YXJ0X3JvdXRpbmU6dGhyZWFkUGFyYW1zLnN0YXJ0Um91dGluZSxhcmc6dGhyZWFkUGFyYW1zLmFyZyxwdGhyZWFkX3B0cjp0aHJlYWRQYXJhbXMucHRocmVhZF9wdHJ9O2lmKEVOVklST05NRU5UX0lTX05PREUpe3dvcmtlci51bnJlZigpfXdvcmtlci5wb3N0TWVzc2FnZShtc2csdGhyZWFkUGFyYW1zLnRyYW5zZmVyTGlzdCk7cmV0dXJuIDB9O3ZhciBydW50aW1lS2VlcGFsaXZlQ291bnRlcj0wO3ZhciBrZWVwUnVudGltZUFsaXZlPSgpPT5ub0V4aXRSdW50aW1lfHxydW50aW1lS2VlcGFsaXZlQ291bnRlcj4wO3ZhciBzdGFja1NhdmU9KCk9Pl9lbXNjcmlwdGVuX3N0YWNrX2dldF9jdXJyZW50KCk7dmFyIHN0YWNrUmVzdG9yZT12YWw9Pl9fZW1zY3JpcHRlbl9zdGFja19yZXN0b3JlKHZhbCk7dmFyIHN0YWNrQWxsb2M9c3o9Pl9fZW1zY3JpcHRlbl9zdGFja19hbGxvYyhzeik7dmFyIHByb3h5VG9NYWluVGhyZWFkPShmdW5jSW5kZXgsZW1Bc21BZGRyLHN5bmMsLi4uY2FsbEFyZ3MpPT57dmFyIHNlcmlhbGl6ZWROdW1DYWxsQXJncz1jYWxsQXJncy5sZW5ndGgqMjt2YXIgc3A9c3RhY2tTYXZlKCk7dmFyIGFyZ3M9c3RhY2tBbGxvYyhzZXJpYWxpemVkTnVtQ2FsbEFyZ3MqOCk7dmFyIGI9YXJncz4+Mztmb3IodmFyIGk9MDtpPGNhbGxBcmdzLmxlbmd0aDtpKyspe3ZhciBhcmc9Y2FsbEFyZ3NbaV07aWYodHlwZW9mIGFyZz09ImJpZ2ludCIpe0hFQVA2NFtiKzIqaV09MW47SEVBUDY0W2IrMippKzFdPWFyZ31lbHNle0hFQVA2NFtiKzIqaV09MG47SEVBUEY2NFtiKzIqaSsxXT1hcmd9fXZhciBydG49X19lbXNjcmlwdGVuX3J1bl9qc19vbl9tYWluX3RocmVhZChmdW5jSW5kZXgsZW1Bc21BZGRyLHNlcmlhbGl6ZWROdW1DYWxsQXJncyxhcmdzLHN5bmMpO3N0YWNrUmVzdG9yZShzcCk7cmV0dXJuIHJ0bn07ZnVuY3Rpb24gX3Byb2NfZXhpdChjb2RlKXtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXJldHVybiBwcm94eVRvTWFpblRocmVhZCgwLDAsMSxjb2RlKTtFWElUU1RBVFVTPWNvZGU7aWYoIWtlZXBSdW50aW1lQWxpdmUoKSl7UFRocmVhZC50ZXJtaW5hdGVBbGxUaHJlYWRzKCk7TW9kdWxlWyJvbkV4aXQiXT8uKGNvZGUpO0FCT1JUPXRydWV9cXVpdF8oY29kZSxuZXcgRXhpdFN0YXR1cyhjb2RlKSl9ZnVuY3Rpb24gZXhpdE9uTWFpblRocmVhZChyZXR1cm5Db2RlKXtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXJldHVybiBwcm94eVRvTWFpblRocmVhZCgxLDAsMCxyZXR1cm5Db2RlKTtfZXhpdChyZXR1cm5Db2RlKX12YXIgZXhpdEpTPShzdGF0dXMsaW1wbGljaXQpPT57RVhJVFNUQVRVUz1zdGF0dXM7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRCl7ZXhpdE9uTWFpblRocmVhZChzdGF0dXMpO3Rocm93InVud2luZCJ9X3Byb2NfZXhpdChzdGF0dXMpfTt2YXIgX2V4aXQ9ZXhpdEpTO3ZhciBQVGhyZWFkPXt1bnVzZWRXb3JrZXJzOltdLHJ1bm5pbmdXb3JrZXJzOltdLHRsc0luaXRGdW5jdGlvbnM6W10scHRocmVhZHM6e30saW5pdCgpe2lmKCFFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXtQVGhyZWFkLmluaXRNYWluVGhyZWFkKCl9fSxpbml0TWFpblRocmVhZCgpe3ZhciBwdGhyZWFkUG9vbFNpemU9NDt3aGlsZShwdGhyZWFkUG9vbFNpemUtLSl7UFRocmVhZC5hbGxvY2F0ZVVudXNlZFdvcmtlcigpfWFkZE9uUHJlUnVuKGFzeW5jKCk9Pnt2YXIgcHRocmVhZFBvb2xSZWFkeT1QVGhyZWFkLmxvYWRXYXNtTW9kdWxlVG9BbGxXb3JrZXJzKCk7YWRkUnVuRGVwZW5kZW5jeSgibG9hZGluZy13b3JrZXJzIik7YXdhaXQgcHRocmVhZFBvb2xSZWFkeTtyZW1vdmVSdW5EZXBlbmRlbmN5KCJsb2FkaW5nLXdvcmtlcnMiKX0pfSx0ZXJtaW5hdGVBbGxUaHJlYWRzOigpPT57Zm9yKHZhciB3b3JrZXIgb2YgUFRocmVhZC5ydW5uaW5nV29ya2Vycyl7dGVybWluYXRlV29ya2VyKHdvcmtlcil9Zm9yKHZhciB3b3JrZXIgb2YgUFRocmVhZC51bnVzZWRXb3JrZXJzKXt0ZXJtaW5hdGVXb3JrZXIod29ya2VyKX1QVGhyZWFkLnVudXNlZFdvcmtlcnM9W107UFRocmVhZC5ydW5uaW5nV29ya2Vycz1bXTtQVGhyZWFkLnB0aHJlYWRzPXt9fSxyZXR1cm5Xb3JrZXJUb1Bvb2w6d29ya2VyPT57dmFyIHB0aHJlYWRfcHRyPXdvcmtlci5wdGhyZWFkX3B0cjtkZWxldGUgUFRocmVhZC5wdGhyZWFkc1twdGhyZWFkX3B0cl07UFRocmVhZC51bnVzZWRXb3JrZXJzLnB1c2god29ya2VyKTtQVGhyZWFkLnJ1bm5pbmdXb3JrZXJzLnNwbGljZShQVGhyZWFkLnJ1bm5pbmdXb3JrZXJzLmluZGV4T2Yod29ya2VyKSwxKTt3b3JrZXIucHRocmVhZF9wdHI9MDtfX2Vtc2NyaXB0ZW5fdGhyZWFkX2ZyZWVfZGF0YShwdGhyZWFkX3B0cil9LHRocmVhZEluaXRUTFMoKXtQVGhyZWFkLnRsc0luaXRGdW5jdGlvbnMuZm9yRWFjaChmPT5mKCkpfSxsb2FkV2FzbU1vZHVsZVRvV29ya2VyOndvcmtlcj0+bmV3IFByb21pc2Uob25GaW5pc2hlZExvYWRpbmc9Pnt3b3JrZXIub25tZXNzYWdlPWU9Pnt2YXIgZD1lWyJkYXRhIl07dmFyIGNtZD1kLmNtZDtpZihkLnRhcmdldFRocmVhZCYmZC50YXJnZXRUaHJlYWQhPV9wdGhyZWFkX3NlbGYoKSl7dmFyIHRhcmdldFdvcmtlcj1QVGhyZWFkLnB0aHJlYWRzW2QudGFyZ2V0VGhyZWFkXTtpZih0YXJnZXRXb3JrZXIpe3RhcmdldFdvcmtlci5wb3N0TWVzc2FnZShkLGQudHJhbnNmZXJMaXN0KX1lbHNle2VycihgSW50ZXJuYWwgZXJyb3IhIFdvcmtlciBzZW50IGEgbWVzc2FnZSAiJHtjbWR9IiB0byB0YXJnZXQgcHRocmVhZCAke2QudGFyZ2V0VGhyZWFkfSwgYnV0IHRoYXQgdGhyZWFkIG5vIGxvbmdlciBleGlzdHMhYCl9cmV0dXJufWlmKGNtZD09PSJjaGVja01haWxib3giKXtjaGVja01haWxib3goKX1lbHNlIGlmKGNtZD09PSJzcGF3blRocmVhZCIpe3NwYXduVGhyZWFkKGQpfWVsc2UgaWYoY21kPT09ImNsZWFudXBUaHJlYWQiKXtjYWxsVXNlckNhbGxiYWNrKCgpPT5jbGVhbnVwVGhyZWFkKGQudGhyZWFkKSl9ZWxzZSBpZihjbWQ9PT0ibG9hZGVkIil7d29ya2VyLmxvYWRlZD10cnVlO2lmKEVOVklST05NRU5UX0lTX05PREUmJiF3b3JrZXIucHRocmVhZF9wdHIpe3dvcmtlci51bnJlZigpfW9uRmluaXNoZWRMb2FkaW5nKHdvcmtlcil9ZWxzZSBpZihkLnRhcmdldD09PSJzZXRpbW1lZGlhdGUiKXt3b3JrZXIucG9zdE1lc3NhZ2UoZCl9ZWxzZSBpZihjbWQ9PT0idW5jYXVnaHRFeGNlcHRpb24iKXt3b3JrZXIub25lcnJvcihkLmVycm9yKX1lbHNlIGlmKGNtZD09PSJjYWxsSGFuZGxlciIpe01vZHVsZVtkLmhhbmRsZXJdKC4uLmQuYXJncyl9ZWxzZSBpZihjbWQpe2Vycihgd29ya2VyIHNlbnQgYW4gdW5rbm93biBjb21tYW5kICR7Y21kfWApfX07d29ya2VyLm9uZXJyb3I9ZT0+e3ZhciBtZXNzYWdlPSJ3b3JrZXIgc2VudCBhbiBlcnJvciEiO2VycihgJHttZXNzYWdlfSAke2UuZmlsZW5hbWV9OiR7ZS5saW5lbm99OiAke2UubWVzc2FnZX1gKTt0aHJvdyBlfTtpZihFTlZJUk9OTUVOVF9JU19OT0RFKXt3b3JrZXIub24oIm1lc3NhZ2UiLGRhdGE9Pndvcmtlci5vbm1lc3NhZ2Uoe2RhdGF9KSk7d29ya2VyLm9uKCJlcnJvciIsZT0+d29ya2VyLm9uZXJyb3IoZSkpfXZhciBoYW5kbGVycz1bXTt2YXIga25vd25IYW5kbGVycz1bIm9uRXhpdCIsIm9uQWJvcnQiLCJwcmludCIsInByaW50RXJyIl07Zm9yKHZhciBoYW5kbGVyIG9mIGtub3duSGFuZGxlcnMpe2lmKE1vZHVsZS5wcm9wZXJ0eUlzRW51bWVyYWJsZShoYW5kbGVyKSl7aGFuZGxlcnMucHVzaChoYW5kbGVyKX19d29ya2VyLnBvc3RNZXNzYWdlKHtjbWQ6ImxvYWQiLGhhbmRsZXJzLHdhc21NZW1vcnksd2FzbU1vZHVsZX0pfSksYXN5bmMgbG9hZFdhc21Nb2R1bGVUb0FsbFdvcmtlcnMoKXtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXtyZXR1cm59bGV0IHB0aHJlYWRQb29sUmVhZHk9UHJvbWlzZS5hbGwoUFRocmVhZC51bnVzZWRXb3JrZXJzLm1hcChQVGhyZWFkLmxvYWRXYXNtTW9kdWxlVG9Xb3JrZXIpKTtyZXR1cm4gcHRocmVhZFBvb2xSZWFkeX0sYWxsb2NhdGVVbnVzZWRXb3JrZXIoKXt2YXIgd29ya2VyO2lmKE1vZHVsZVsibWFpblNjcmlwdFVybE9yQmxvYiJdKXt2YXIgcHRocmVhZE1haW5Kcz1Nb2R1bGVbIm1haW5TY3JpcHRVcmxPckJsb2IiXTtpZih0eXBlb2YgcHRocmVhZE1haW5KcyE9InN0cmluZyIpe3B0aHJlYWRNYWluSnM9VVJMLmNyZWF0ZU9iamVjdFVSTChwdGhyZWFkTWFpbkpzKX13b3JrZXI9bmV3IFdvcmtlcihwdGhyZWFkTWFpbkpzLHt0eXBlOiJtb2R1bGUiLHdvcmtlckRhdGE6ImVtLXB0aHJlYWQiLG5hbWU6ImVtLXB0aHJlYWQifSl9ZWxzZSB3b3JrZXI9bmV3IFdvcmtlcihuZXcgVVJMKCJvZmZsb2Fkcy1zaW1kLW10LmpzIixpbXBvcnQubWV0YS51cmwpLHt0eXBlOiJtb2R1bGUiLHdvcmtlckRhdGE6ImVtLXB0aHJlYWQiLG5hbWU6ImVtLXB0aHJlYWQifSk7UFRocmVhZC51bnVzZWRXb3JrZXJzLnB1c2god29ya2VyKX0sZ2V0TmV3V29ya2VyKCl7aWYoUFRocmVhZC51bnVzZWRXb3JrZXJzLmxlbmd0aD09MCl7UFRocmVhZC5hbGxvY2F0ZVVudXNlZFdvcmtlcigpO1BUaHJlYWQubG9hZFdhc21Nb2R1bGVUb1dvcmtlcihQVGhyZWFkLnVudXNlZFdvcmtlcnNbMF0pfXJldHVybiBQVGhyZWFkLnVudXNlZFdvcmtlcnMucG9wKCl9fTt2YXIgb25Qb3N0UnVucz1bXTt2YXIgYWRkT25Qb3N0UnVuPWNiPT5vblBvc3RSdW5zLnB1c2goY2IpO2Z1bmN0aW9uIGVzdGFibGlzaFN0YWNrU3BhY2UocHRocmVhZF9wdHIpe3ZhciBzdGFja0hpZ2g9SEVBUFUzMltwdGhyZWFkX3B0cis1Mj4+Ml07dmFyIHN0YWNrU2l6ZT1IRUFQVTMyW3B0aHJlYWRfcHRyKzU2Pj4yXTt2YXIgc3RhY2tMb3c9c3RhY2tIaWdoLXN0YWNrU2l6ZTtfZW1zY3JpcHRlbl9zdGFja19zZXRfbGltaXRzKHN0YWNrSGlnaCxzdGFja0xvdyk7c3RhY2tSZXN0b3JlKHN0YWNrSGlnaCl9dmFyIHdhc21UYWJsZU1pcnJvcj1bXTt2YXIgZ2V0V2FzbVRhYmxlRW50cnk9ZnVuY1B0cj0+e3ZhciBmdW5jPXdhc21UYWJsZU1pcnJvcltmdW5jUHRyXTtpZighZnVuYyl7d2FzbVRhYmxlTWlycm9yW2Z1bmNQdHJdPWZ1bmM9d2FzbVRhYmxlLmdldChmdW5jUHRyKX1yZXR1cm4gZnVuY307dmFyIGludm9rZUVudHJ5UG9pbnQ9KHB0cixhcmcpPT57cnVudGltZUtlZXBhbGl2ZUNvdW50ZXI9MDtub0V4aXRSdW50aW1lPTA7dmFyIHJlc3VsdD1nZXRXYXNtVGFibGVFbnRyeShwdHIpKGFyZyk7ZnVuY3Rpb24gZmluaXNoKHJlc3VsdCl7aWYoa2VlcFJ1bnRpbWVBbGl2ZSgpKXtFWElUU1RBVFVTPXJlc3VsdDtyZXR1cm59X19lbXNjcmlwdGVuX3RocmVhZF9leGl0KHJlc3VsdCl9ZmluaXNoKHJlc3VsdCl9O3ZhciBub0V4aXRSdW50aW1lPXRydWU7dmFyIHJlZ2lzdGVyVExTSW5pdD10bHNJbml0RnVuYz0+UFRocmVhZC50bHNJbml0RnVuY3Rpb25zLnB1c2godGxzSW5pdEZ1bmMpO3ZhciB3YXNtTWVtb3J5O2NsYXNzIEV4Y2VwdGlvbkluZm97Y29uc3RydWN0b3IoZXhjUHRyKXt0aGlzLmV4Y1B0cj1leGNQdHI7dGhpcy5wdHI9ZXhjUHRyLTI0fXNldF90eXBlKHR5cGUpe0hFQVBVMzJbdGhpcy5wdHIrND4+Ml09dHlwZX1nZXRfdHlwZSgpe3JldHVybiBIRUFQVTMyW3RoaXMucHRyKzQ+PjJdfXNldF9kZXN0cnVjdG9yKGRlc3RydWN0b3Ipe0hFQVBVMzJbdGhpcy5wdHIrOD4+Ml09ZGVzdHJ1Y3Rvcn1nZXRfZGVzdHJ1Y3Rvcigpe3JldHVybiBIRUFQVTMyW3RoaXMucHRyKzg+PjJdfXNldF9jYXVnaHQoY2F1Z2h0KXtjYXVnaHQ9Y2F1Z2h0PzE6MDtIRUFQOFt0aGlzLnB0cisxMl09Y2F1Z2h0fWdldF9jYXVnaHQoKXtyZXR1cm4gSEVBUDhbdGhpcy5wdHIrMTJdIT0wfXNldF9yZXRocm93bihyZXRocm93bil7cmV0aHJvd249cmV0aHJvd24/MTowO0hFQVA4W3RoaXMucHRyKzEzXT1yZXRocm93bn1nZXRfcmV0aHJvd24oKXtyZXR1cm4gSEVBUDhbdGhpcy5wdHIrMTNdIT0wfWluaXQodHlwZSxkZXN0cnVjdG9yKXt0aGlzLnNldF9hZGp1c3RlZF9wdHIoMCk7dGhpcy5zZXRfdHlwZSh0eXBlKTt0aGlzLnNldF9kZXN0cnVjdG9yKGRlc3RydWN0b3IpfXNldF9hZGp1c3RlZF9wdHIoYWRqdXN0ZWRQdHIpe0hFQVBVMzJbdGhpcy5wdHIrMTY+PjJdPWFkanVzdGVkUHRyfWdldF9hZGp1c3RlZF9wdHIoKXtyZXR1cm4gSEVBUFUzMlt0aGlzLnB0cisxNj4+Ml19fXZhciBleGNlcHRpb25MYXN0PTA7dmFyIHVuY2F1Z2h0RXhjZXB0aW9uQ291bnQ9MDt2YXIgX19fY3hhX3Rocm93PShwdHIsdHlwZSxkZXN0cnVjdG9yKT0+e3ZhciBpbmZvPW5ldyBFeGNlcHRpb25JbmZvKHB0cik7aW5mby5pbml0KHR5cGUsZGVzdHJ1Y3Rvcik7ZXhjZXB0aW9uTGFzdD1wdHI7dW5jYXVnaHRFeGNlcHRpb25Db3VudCsrO3Rocm93IGV4Y2VwdGlvbkxhc3R9O2Z1bmN0aW9uIHB0aHJlYWRDcmVhdGVQcm94aWVkKHB0aHJlYWRfcHRyLGF0dHIsc3RhcnRSb3V0aW5lLGFyZyl7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRClyZXR1cm4gcHJveHlUb01haW5UaHJlYWQoMiwwLDEscHRocmVhZF9wdHIsYXR0cixzdGFydFJvdXRpbmUsYXJnKTtyZXR1cm4gX19fcHRocmVhZF9jcmVhdGVfanMocHRocmVhZF9wdHIsYXR0cixzdGFydFJvdXRpbmUsYXJnKX12YXIgX2Vtc2NyaXB0ZW5faGFzX3RocmVhZGluZ19zdXBwb3J0PSgpPT4hIWdsb2JhbFRoaXMuU2hhcmVkQXJyYXlCdWZmZXI7dmFyIF9fX3B0aHJlYWRfY3JlYXRlX2pzPShwdGhyZWFkX3B0cixhdHRyLHN0YXJ0Um91dGluZSxhcmcpPT57aWYoIV9lbXNjcmlwdGVuX2hhc190aHJlYWRpbmdfc3VwcG9ydCgpKXtyZXR1cm4gNn12YXIgdHJhbnNmZXJMaXN0PVtdO3ZhciBlcnJvcj0wO2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQmJih0cmFuc2Zlckxpc3QubGVuZ3RoPT09MHx8ZXJyb3IpKXtyZXR1cm4gcHRocmVhZENyZWF0ZVByb3hpZWQocHRocmVhZF9wdHIsYXR0cixzdGFydFJvdXRpbmUsYXJnKX1pZihlcnJvcilyZXR1cm4gZXJyb3I7dmFyIHRocmVhZFBhcmFtcz17c3RhcnRSb3V0aW5lLHB0aHJlYWRfcHRyLGFyZyx0cmFuc2Zlckxpc3R9O2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpe3RocmVhZFBhcmFtcy5jbWQ9InNwYXduVGhyZWFkIjtwb3N0TWVzc2FnZSh0aHJlYWRQYXJhbXMsdHJhbnNmZXJMaXN0KTtyZXR1cm4gMH1yZXR1cm4gc3Bhd25UaHJlYWQodGhyZWFkUGFyYW1zKX07dmFyIF9fYWJvcnRfanM9KCk9PmFib3J0KCIiKTt2YXIgX19lbXNjcmlwdGVuX2luaXRfbWFpbl90aHJlYWRfanM9dGI9PntfX2Vtc2NyaXB0ZW5fdGhyZWFkX2luaXQodGIsIUVOVklST05NRU5UX0lTX1dPUktFUiwxLCFFTlZJUk9OTUVOVF9JU19XRUIsNjU1MzYsZmFsc2UpO1BUaHJlYWQudGhyZWFkSW5pdFRMUygpfTt2YXIgaGFuZGxlRXhjZXB0aW9uPWU9PntpZihlIGluc3RhbmNlb2YgRXhpdFN0YXR1c3x8ZT09InVud2luZCIpe3JldHVybiBFWElUU1RBVFVTfXF1aXRfKDEsZSl9O3ZhciBtYXliZUV4aXQ9KCk9PntpZigha2VlcFJ1bnRpbWVBbGl2ZSgpKXt0cnl7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRCl7aWYoX3B0aHJlYWRfc2VsZigpKV9fZW1zY3JpcHRlbl90aHJlYWRfZXhpdChFWElUU1RBVFVTKTtyZXR1cm59X2V4aXQoRVhJVFNUQVRVUyl9Y2F0Y2goZSl7aGFuZGxlRXhjZXB0aW9uKGUpfX19O3ZhciBjYWxsVXNlckNhbGxiYWNrPWZ1bmM9PntpZihBQk9SVCl7cmV0dXJufXRyeXtmdW5jKCk7bWF5YmVFeGl0KCl9Y2F0Y2goZSl7aGFuZGxlRXhjZXB0aW9uKGUpfX07dmFyIF9fZW1zY3JpcHRlbl90aHJlYWRfbWFpbGJveF9hd2FpdD1wdGhyZWFkX3B0cj0+e2lmKEF0b21pY3Mud2FpdEFzeW5jKXt2YXIgd2FpdD1BdG9taWNzLndhaXRBc3luYyhIRUFQMzIscHRocmVhZF9wdHI+PjIscHRocmVhZF9wdHIpO3dhaXQudmFsdWUudGhlbihjaGVja01haWxib3gpO3ZhciB3YWl0aW5nQXN5bmM9cHRocmVhZF9wdHIrMTI4O0F0b21pY3Muc3RvcmUoSEVBUDMyLHdhaXRpbmdBc3luYz4+MiwxKX19O3ZhciBjaGVja01haWxib3g9KCk9PmNhbGxVc2VyQ2FsbGJhY2soKCk9Pnt2YXIgcHRocmVhZF9wdHI9X3B0aHJlYWRfc2VsZigpO2lmKHB0aHJlYWRfcHRyKXtfX2Vtc2NyaXB0ZW5fdGhyZWFkX21haWxib3hfYXdhaXQocHRocmVhZF9wdHIpO19fZW1zY3JpcHRlbl9jaGVja19tYWlsYm94KCl9fSk7dmFyIF9fZW1zY3JpcHRlbl9ub3RpZnlfbWFpbGJveF9wb3N0bWVzc2FnZT0odGFyZ2V0VGhyZWFkLGN1cnJUaHJlYWRJZCk9PntpZih0YXJnZXRUaHJlYWQ9PWN1cnJUaHJlYWRJZCl7c2V0VGltZW91dChjaGVja01haWxib3gpfWVsc2UgaWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRCl7cG9zdE1lc3NhZ2Uoe3RhcmdldFRocmVhZCxjbWQ6ImNoZWNrTWFpbGJveCJ9KX1lbHNle3ZhciB3b3JrZXI9UFRocmVhZC5wdGhyZWFkc1t0YXJnZXRUaHJlYWRdO2lmKCF3b3JrZXIpe3JldHVybn13b3JrZXIucG9zdE1lc3NhZ2Uoe2NtZDoiY2hlY2tNYWlsYm94In0pfX07dmFyIHByb3hpZWRKU0NhbGxBcmdzPVtdO3ZhciBfX2Vtc2NyaXB0ZW5fcmVjZWl2ZV9vbl9tYWluX3RocmVhZF9qcz0oZnVuY0luZGV4LGVtQXNtQWRkcixjYWxsaW5nVGhyZWFkLG51bUNhbGxBcmdzLGFyZ3MpPT57bnVtQ2FsbEFyZ3MvPTI7cHJveGllZEpTQ2FsbEFyZ3MubGVuZ3RoPW51bUNhbGxBcmdzO3ZhciBiPWFyZ3M+PjM7Zm9yKHZhciBpPTA7aTxudW1DYWxsQXJncztpKyspe2lmKEhFQVA2NFtiKzIqaV0pe3Byb3hpZWRKU0NhbGxBcmdzW2ldPUhFQVA2NFtiKzIqaSsxXX1lbHNle3Byb3hpZWRKU0NhbGxBcmdzW2ldPUhFQVBGNjRbYisyKmkrMV19fXZhciBmdW5jPXByb3hpZWRGdW5jdGlvblRhYmxlW2Z1bmNJbmRleF07UFRocmVhZC5jdXJyZW50UHJveGllZE9wZXJhdGlvbkNhbGxlclRocmVhZD1jYWxsaW5nVGhyZWFkO3ZhciBydG49ZnVuYyguLi5wcm94aWVkSlNDYWxsQXJncyk7UFRocmVhZC5jdXJyZW50UHJveGllZE9wZXJhdGlvbkNhbGxlclRocmVhZD0wO3JldHVybiBydG59O3ZhciBfX2Vtc2NyaXB0ZW5fdGhyZWFkX2NsZWFudXA9dGhyZWFkPT57aWYoIUVOVklST05NRU5UX0lTX1BUSFJFQUQpY2xlYW51cFRocmVhZCh0aHJlYWQpO2Vsc2UgcG9zdE1lc3NhZ2Uoe2NtZDoiY2xlYW51cFRocmVhZCIsdGhyZWFkfSl9O3ZhciBfX2Vtc2NyaXB0ZW5fdGhyZWFkX3NldF9zdHJvbmdyZWY9dGhyZWFkPT57aWYoRU5WSVJPTk1FTlRfSVNfTk9ERSl7UFRocmVhZC5wdGhyZWFkc1t0aHJlYWRdLnJlZigpfX07dmFyIF9lbXNjcmlwdGVuX2dldF9ub3c9KCk9PnBlcmZvcm1hbmNlLnRpbWVPcmlnaW4rcGVyZm9ybWFuY2Uubm93KCk7dmFyIF9lbXNjcmlwdGVuX2NoZWNrX2Jsb2NraW5nX2FsbG93ZWQ9KCk9Pnt9O3ZhciBydW50aW1lS2VlcGFsaXZlUHVzaD0oKT0+e3J1bnRpbWVLZWVwYWxpdmVDb3VudGVyKz0xfTt2YXIgX2Vtc2NyaXB0ZW5fZXhpdF93aXRoX2xpdmVfcnVudGltZT0oKT0+e3J1bnRpbWVLZWVwYWxpdmVQdXNoKCk7dGhyb3cidW53aW5kIn07dmFyIGdldEhlYXBNYXg9KCk9PkhFQVBVOC5sZW5ndGg7dmFyIF9lbXNjcmlwdGVuX2dldF9oZWFwX21heD0oKT0+Z2V0SGVhcE1heCgpO3ZhciBfZW1zY3JpcHRlbl9udW1fbG9naWNhbF9jb3Jlcz0oKT0+RU5WSVJPTk1FTlRfSVNfTk9ERT9yZXF1aXJlKCJvcyIpLmNwdXMoKS5sZW5ndGg6bmF2aWdhdG9yWyJoYXJkd2FyZUNvbmN1cnJlbmN5Il07dmFyIGFib3J0T25DYW5ub3RHcm93TWVtb3J5PXJlcXVlc3RlZFNpemU9PnthYm9ydCgiT09NIil9O3ZhciBfZW1zY3JpcHRlbl9yZXNpemVfaGVhcD1yZXF1ZXN0ZWRTaXplPT57dmFyIG9sZFNpemU9SEVBUFU4Lmxlbmd0aDtyZXF1ZXN0ZWRTaXplPj4+PTA7YWJvcnRPbkNhbm5vdEdyb3dNZW1vcnkocmVxdWVzdGVkU2l6ZSl9O3ZhciBwcmludENoYXJCdWZmZXJzPVtudWxsLFtdLFtdXTt2YXIgVVRGOERlY29kZXI9Z2xvYmFsVGhpcy5UZXh0RGVjb2RlciYmbmV3IFRleHREZWNvZGVyO3ZhciBmaW5kU3RyaW5nRW5kPShoZWFwT3JBcnJheSxpZHgsbWF4Qnl0ZXNUb1JlYWQsaWdub3JlTnVsKT0+e3ZhciBtYXhJZHg9aWR4K21heEJ5dGVzVG9SZWFkO2lmKGlnbm9yZU51bClyZXR1cm4gbWF4SWR4O3doaWxlKGhlYXBPckFycmF5W2lkeF0mJiEoaWR4Pj1tYXhJZHgpKSsraWR4O3JldHVybiBpZHh9O3ZhciBVVEY4QXJyYXlUb1N0cmluZz0oaGVhcE9yQXJyYXksaWR4PTAsbWF4Qnl0ZXNUb1JlYWQsaWdub3JlTnVsKT0+e3ZhciBlbmRQdHI9ZmluZFN0cmluZ0VuZChoZWFwT3JBcnJheSxpZHgsbWF4Qnl0ZXNUb1JlYWQsaWdub3JlTnVsKTtpZihlbmRQdHItaWR4PjE2JiZoZWFwT3JBcnJheS5idWZmZXImJlVURjhEZWNvZGVyKXtyZXR1cm4gVVRGOERlY29kZXIuZGVjb2RlKGhlYXBPckFycmF5LmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP2hlYXBPckFycmF5LnN1YmFycmF5KGlkeCxlbmRQdHIpOmhlYXBPckFycmF5LnNsaWNlKGlkeCxlbmRQdHIpKX12YXIgc3RyPSIiO3doaWxlKGlkeDxlbmRQdHIpe3ZhciB1MD1oZWFwT3JBcnJheVtpZHgrK107aWYoISh1MCYxMjgpKXtzdHIrPVN0cmluZy5mcm9tQ2hhckNvZGUodTApO2NvbnRpbnVlfXZhciB1MT1oZWFwT3JBcnJheVtpZHgrK10mNjM7aWYoKHUwJjIyNCk9PTE5Mil7c3RyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKCh1MCYzMSk8PDZ8dTEpO2NvbnRpbnVlfXZhciB1Mj1oZWFwT3JBcnJheVtpZHgrK10mNjM7aWYoKHUwJjI0MCk9PTIyNCl7dTA9KHUwJjE1KTw8MTJ8dTE8PDZ8dTJ9ZWxzZXt1MD0odTAmNyk8PDE4fHUxPDwxMnx1Mjw8NnxoZWFwT3JBcnJheVtpZHgrK10mNjN9aWYodTA8NjU1MzYpe3N0cis9U3RyaW5nLmZyb21DaGFyQ29kZSh1MCl9ZWxzZXt2YXIgY2g9dTAtNjU1MzY7c3RyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2fGNoPj4xMCw1NjMyMHxjaCYxMDIzKX19cmV0dXJuIHN0cn07dmFyIHByaW50Q2hhcj0oc3RyZWFtLGN1cnIpPT57dmFyIGJ1ZmZlcj1wcmludENoYXJCdWZmZXJzW3N0cmVhbV07aWYoY3Vycj09PTB8fGN1cnI9PT0xMCl7KHN0cmVhbT09PTE/b3V0OmVycikoVVRGOEFycmF5VG9TdHJpbmcoYnVmZmVyKSk7YnVmZmVyLmxlbmd0aD0wfWVsc2V7YnVmZmVyLnB1c2goY3Vycil9fTtmdW5jdGlvbiBfZmRfd3JpdGUoZmQsaW92LGlvdmNudCxwbnVtKXtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXJldHVybiBwcm94eVRvTWFpblRocmVhZCgzLDAsMSxmZCxpb3YsaW92Y250LHBudW0pO3ZhciBudW09MDtmb3IodmFyIGk9MDtpPGlvdmNudDtpKyspe3ZhciBwdHI9SEVBUFUzMltpb3Y+PjJdO3ZhciBsZW49SEVBUFUzMltpb3YrND4+Ml07aW92Kz04O2Zvcih2YXIgaj0wO2o8bGVuO2orKyl7cHJpbnRDaGFyKGZkLEhFQVBVOFtwdHIral0pfW51bSs9bGVufUhFQVBVMzJbcG51bT4+Ml09bnVtO3JldHVybiAwfVBUaHJlYWQuaW5pdCgpO3tpbml0TWVtb3J5KCk7aWYoTW9kdWxlWyJub0V4aXRSdW50aW1lIl0pbm9FeGl0UnVudGltZT1Nb2R1bGVbIm5vRXhpdFJ1bnRpbWUiXTtpZihNb2R1bGVbInByaW50Il0pb3V0PU1vZHVsZVsicHJpbnQiXTtpZihNb2R1bGVbInByaW50RXJyIl0pZXJyPU1vZHVsZVsicHJpbnRFcnIiXTtpZihNb2R1bGVbIndhc21CaW5hcnkiXSl3YXNtQmluYXJ5PU1vZHVsZVsid2FzbUJpbmFyeSJdO2lmKE1vZHVsZVsiYXJndW1lbnRzIl0pYXJndW1lbnRzXz1Nb2R1bGVbImFyZ3VtZW50cyJdO2lmKE1vZHVsZVsidGhpc1Byb2dyYW0iXSl0aGlzUHJvZ3JhbT1Nb2R1bGVbInRoaXNQcm9ncmFtIl07aWYoTW9kdWxlWyJwcmVJbml0Il0pe2lmKHR5cGVvZiBNb2R1bGVbInByZUluaXQiXT09ImZ1bmN0aW9uIilNb2R1bGVbInByZUluaXQiXT1bTW9kdWxlWyJwcmVJbml0Il1dO3doaWxlKE1vZHVsZVsicHJlSW5pdCJdLmxlbmd0aD4wKXtNb2R1bGVbInByZUluaXQiXS5zaGlmdCgpKCl9fX1Nb2R1bGVbIndhc21NZW1vcnkiXT13YXNtTWVtb3J5O3ZhciBwcm94aWVkRnVuY3Rpb25UYWJsZT1bX3Byb2NfZXhpdCxleGl0T25NYWluVGhyZWFkLHB0aHJlYWRDcmVhdGVQcm94aWVkLF9mZF93cml0ZV07dmFyIF9mcm9tTG5nTGF0LF9wcm9qZWN0LF91bnByb2plY3QsX2NhbGN1bGF0ZVBlcnNwZWN0aXZlUmF0aW8sX3NldFRocmVhZFBvb2xTaXplLF9wcm9qZWN0TG5nTGF0VG9DbGlwU3BhY2UsX2NhbGN1bGF0ZUJpbGxib2FyZERlcHRoS2V5LF9jYWxjdWxhdGVTdXJmYWNlRGVwdGhLZXksX3ByZXBhcmVEcmF3U3ByaXRlSW1hZ2VzLF9fZW1zY3JpcHRlbl90bHNfaW5pdCxfcHRocmVhZF9zZWxmLF9fZW1zY3JpcHRlbl90aHJlYWRfaW5pdCxfX2Vtc2NyaXB0ZW5fdGhyZWFkX2NyYXNoZWQsX19lbXNjcmlwdGVuX3J1bl9qc19vbl9tYWluX3RocmVhZCxfX2Vtc2NyaXB0ZW5fdGhyZWFkX2ZyZWVfZGF0YSxfX2Vtc2NyaXB0ZW5fdGhyZWFkX2V4aXQsX21hbGxvYyxfZnJlZSxfX2Vtc2NyaXB0ZW5fY2hlY2tfbWFpbGJveCxfZW1zY3JpcHRlbl9zdGFja19zZXRfbGltaXRzLF9fZW1zY3JpcHRlbl9zdGFja19yZXN0b3JlLF9fZW1zY3JpcHRlbl9zdGFja19hbGxvYyxfZW1zY3JpcHRlbl9zdGFja19nZXRfY3VycmVudCxfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlLHdhc21UYWJsZTtmdW5jdGlvbiBhc3NpZ25XYXNtRXhwb3J0cyh3YXNtRXhwb3J0cyl7X2Zyb21MbmdMYXQ9TW9kdWxlWyJfZnJvbUxuZ0xhdCJdPXdhc21FeHBvcnRzWyJ0Il07X3Byb2plY3Q9TW9kdWxlWyJfcHJvamVjdCJdPXdhc21FeHBvcnRzWyJ1Il07X3VucHJvamVjdD1Nb2R1bGVbIl91bnByb2plY3QiXT13YXNtRXhwb3J0c1sidiJdO19jYWxjdWxhdGVQZXJzcGVjdGl2ZVJhdGlvPU1vZHVsZVsiX2NhbGN1bGF0ZVBlcnNwZWN0aXZlUmF0aW8iXT13YXNtRXhwb3J0c1sidyJdO19zZXRUaHJlYWRQb29sU2l6ZT1Nb2R1bGVbIl9zZXRUaHJlYWRQb29sU2l6ZSJdPXdhc21FeHBvcnRzWyJ5Il07X3Byb2plY3RMbmdMYXRUb0NsaXBTcGFjZT1Nb2R1bGVbIl9wcm9qZWN0TG5nTGF0VG9DbGlwU3BhY2UiXT13YXNtRXhwb3J0c1sieiJdO19jYWxjdWxhdGVCaWxsYm9hcmREZXB0aEtleT1Nb2R1bGVbIl9jYWxjdWxhdGVCaWxsYm9hcmREZXB0aEtleSJdPXdhc21FeHBvcnRzWyJBIl07X2NhbGN1bGF0ZVN1cmZhY2VEZXB0aEtleT1Nb2R1bGVbIl9jYWxjdWxhdGVTdXJmYWNlRGVwdGhLZXkiXT13YXNtRXhwb3J0c1siQiJdO19wcmVwYXJlRHJhd1Nwcml0ZUltYWdlcz1Nb2R1bGVbIl9wcmVwYXJlRHJhd1Nwcml0ZUltYWdlcyJdPXdhc21FeHBvcnRzWyJDIl07X19lbXNjcmlwdGVuX3Rsc19pbml0PXdhc21FeHBvcnRzWyJEIl07X3B0aHJlYWRfc2VsZj13YXNtRXhwb3J0c1siRSJdO19fZW1zY3JpcHRlbl90aHJlYWRfaW5pdD13YXNtRXhwb3J0c1siRiJdO19fZW1zY3JpcHRlbl90aHJlYWRfY3Jhc2hlZD13YXNtRXhwb3J0c1siRyJdO19fZW1zY3JpcHRlbl9ydW5fanNfb25fbWFpbl90aHJlYWQ9d2FzbUV4cG9ydHNbIkgiXTtfX2Vtc2NyaXB0ZW5fdGhyZWFkX2ZyZWVfZGF0YT13YXNtRXhwb3J0c1siSSJdO19fZW1zY3JpcHRlbl90aHJlYWRfZXhpdD13YXNtRXhwb3J0c1siSiJdO19tYWxsb2M9TW9kdWxlWyJfbWFsbG9jIl09d2FzbUV4cG9ydHNbIksiXTtfZnJlZT1Nb2R1bGVbIl9mcmVlIl09d2FzbUV4cG9ydHNbIkwiXTtfX2Vtc2NyaXB0ZW5fY2hlY2tfbWFpbGJveD13YXNtRXhwb3J0c1siTSJdO19lbXNjcmlwdGVuX3N0YWNrX3NldF9saW1pdHM9d2FzbUV4cG9ydHNbIk4iXTtfX2Vtc2NyaXB0ZW5fc3RhY2tfcmVzdG9yZT13YXNtRXhwb3J0c1siTyJdO19fZW1zY3JpcHRlbl9zdGFja19hbGxvYz13YXNtRXhwb3J0c1siUCJdO19lbXNjcmlwdGVuX3N0YWNrX2dldF9jdXJyZW50PXdhc21FeHBvcnRzWyJRIl07X19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZT13YXNtVGFibGU9d2FzbUV4cG9ydHNbIngiXX12YXIgd2FzbUltcG9ydHM7ZnVuY3Rpb24gYXNzaWduV2FzbUltcG9ydHMoKXt3YXNtSW1wb3J0cz17ZjpfX19jeGFfdGhyb3csZzpfX19wdGhyZWFkX2NyZWF0ZV9qcyxvOl9fYWJvcnRfanMsazpfX2Vtc2NyaXB0ZW5faW5pdF9tYWluX3RocmVhZF9qcyxxOl9fZW1zY3JpcHRlbl9ub3RpZnlfbWFpbGJveF9wb3N0bWVzc2FnZSxsOl9fZW1zY3JpcHRlbl9yZWNlaXZlX29uX21haW5fdGhyZWFkX2pzLGM6X19lbXNjcmlwdGVuX3RocmVhZF9jbGVhbnVwLGo6X19lbXNjcmlwdGVuX3RocmVhZF9tYWlsYm94X2F3YWl0LGk6X19lbXNjcmlwdGVuX3RocmVhZF9zZXRfc3Ryb25ncmVmLGQ6X2Vtc2NyaXB0ZW5fY2hlY2tfYmxvY2tpbmdfYWxsb3dlZCxoOl9lbXNjcmlwdGVuX2V4aXRfd2l0aF9saXZlX3J1bnRpbWUsbTpfZW1zY3JpcHRlbl9nZXRfaGVhcF9tYXgsYjpfZW1zY3JpcHRlbl9nZXRfbm93LG46X2Vtc2NyaXB0ZW5fbnVtX2xvZ2ljYWxfY29yZXMscDpfZW1zY3JpcHRlbl9yZXNpemVfaGVhcCxyOl9leGl0LGU6X2ZkX3dyaXRlLGE6d2FzbU1lbW9yeX19ZnVuY3Rpb24gcnVuKCl7aWYocnVuRGVwZW5kZW5jaWVzPjApe2RlcGVuZGVuY2llc0Z1bGZpbGxlZD1ydW47cmV0dXJufWlmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpe3JlYWR5UHJvbWlzZVJlc29sdmU/LihNb2R1bGUpO2luaXRSdW50aW1lKCk7cmV0dXJufXByZVJ1bigpO2lmKHJ1bkRlcGVuZGVuY2llcz4wKXtkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9cnVuO3JldHVybn1mdW5jdGlvbiBkb1J1bigpe01vZHVsZVsiY2FsbGVkUnVuIl09dHJ1ZTtpZihBQk9SVClyZXR1cm47aW5pdFJ1bnRpbWUoKTtyZWFkeVByb21pc2VSZXNvbHZlPy4oTW9kdWxlKTtNb2R1bGVbIm9uUnVudGltZUluaXRpYWxpemVkIl0/LigpO3Bvc3RSdW4oKX1pZihNb2R1bGVbInNldFN0YXR1cyJdKXtNb2R1bGVbInNldFN0YXR1cyJdKCJSdW5uaW5nLi4uIik7c2V0VGltZW91dCgoKT0+e3NldFRpbWVvdXQoKCk9Pk1vZHVsZVsic2V0U3RhdHVzIl0oIiIpLDEpO2RvUnVuKCl9LDEpfWVsc2V7ZG9SdW4oKX19dmFyIHdhc21FeHBvcnRzO2lmKCFFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXt3YXNtRXhwb3J0cz1hd2FpdCAoY3JlYXRlV2FzbSgpKTtydW4oKX1pZihydW50aW1lSW5pdGlhbGl6ZWQpe21vZHVsZVJ0bj1Nb2R1bGV9ZWxzZXttb2R1bGVSdG49bmV3IFByb21pc2UoKHJlc29sdmUscmVqZWN0KT0+e3JlYWR5UHJvbWlzZVJlc29sdmU9cmVzb2x2ZTtyZWFkeVByb21pc2VSZWplY3Q9cmVqZWN0fSl9CjtyZXR1cm4gbW9kdWxlUnRufWV4cG9ydCBkZWZhdWx0IE1vZHVsZTt2YXIgaXNQdGhyZWFkPWdsb2JhbFRoaXMuc2VsZj8ubmFtZT8uc3RhcnRzV2l0aCgiZW0tcHRocmVhZCIpO3ZhciBpc05vZGU9Z2xvYmFsVGhpcy5wcm9jZXNzPy52ZXJzaW9ucz8ubm9kZSYmZ2xvYmFsVGhpcy5wcm9jZXNzPy50eXBlIT0icmVuZGVyZXIiO2lmKGlzTm9kZSlpc1B0aHJlYWQ9KGF3YWl0IGltcG9ydCgid29ya2VyX3RocmVhZHMiKSkud29ya2VyRGF0YT09PSJlbS1wdGhyZWFkIjtpc1B0aHJlYWQmJk1vZHVsZSgpOwo=\"","export default \"data:application/wasm;base64,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QCAAIQIMAQsgAkEESQRAIAAhAgwBCyADQQRrIQQgACECA0AgAiABLQAAOgAAIAIgAS0AAToAASACIAEtAAI6AAIgAiABLQADOgADIAFBBGohASACQQRqIgIgBE0NAAsLIAIgA0kEQANAIAIgAS0AADoAACABQQFqIQEgAkEBaiICIANHDQALCwuZAQEDfCAAIACiIgMgAyADoqIgA0R81c9aOtnlPaJE65wriublWr6goiADIANEff6xV+Mdxz6iRNVhwRmgASq/oKJEpvgQERERgT+goCEFIAAgA6IhBCACRQRAIAQgAyAFokRJVVVVVVXFv6CiIACgDwsgACADIAFEAAAAAAAA4D+iIAQgBaKhoiABoSAERElVVVVVVcU/oqChC5IBAQN8RAAAAAAAAPA/IAAgAKIiAkQAAAAAAADgP6IiA6EiBEQAAAAAAADwPyAEoSADoSACIAIgAiACRJAVyxmgAfo+okR3UcEWbMFWv6CiRExVVVVVVaU/oKIgAiACoiIDIAOiIAIgAkTUOIi+6fqovaJExLG0vZ7uIT6gokStUpyAT36SvqCioKIgACABoqGgoAsGACAAEBELGgAgACgCAARAQdDgAP4QAgARAgAQGQALIAALqAEAAkAgAUGACE4EQCAARAAAAAAAAOB/oiEAIAFB/w9JBEAgAUH/B2shAQwCCyAARAAAAAAAAOB/oiEAQf0XIAEgAUH9F08bQf4PayEBDAELIAFBgXhKDQAgAEQAAAAAAABgA6IhACABQbhwSwRAIAFByQdqIQEMAQsgAEQAAAAAAABgA6IhAEHwaCABIAFB8GhNG0GSD2ohAQsgACABQf8Haq1CNIa/ogubAwEGfyAALQAAQQ9xRQRAIABBBGpBAEEK/kgCAEEKcQ8LAn8gACgCACECAkACQAJAAkACQCMDIgEoAhgiBCAAKAIEIgNB/////wNxIgZHDQACQCACQQhxRQ0AIAAoAhRBAE4NACAAQQA2AhQgA0GAgICABHEhAwwCCyACQQNxQQFHDQBBBiAAKAIUIgFB/v///wdLDQUaIAAgAUEBajYCFAwCC0E4IQUgBkH/////A0YNAwJAIAZBACADIAJBBHEbcg0AIAMgAEEEaiADIAJBgAFxBH8gASgCUEUEQCABQXQ2AlALIAAoAgghBiABIABBEGo2AlQgBEGAgICAeHIg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QRtHDQBBG0EAQeTgACgCABshAAsgBEEQaiQAIAAL5wEBBH9BCBBnIgBBjN0ANgIAIAAiA0H83QA2AgACf0HnCCEBQQBB5wgtAABFDQAaAkACQANAIAFBAWoiAUEDcUUNASABLQAADQALDAELA0AgASIAQQRqIQFBgIKECCAAKAIAIgJrIAJyQYCBgoR4cUGAgYKEeEYNAAsDQCAAIgFBAWohACABLQAADQALCyABQecIawsiAkENahASIgBBADYCCCAAIAI2AgQgACACNgIAIABBDGohASACQQFqIgAEQCABQecIIAD8CgAACyADIAE2AgQgA0Gs3gA2AgAgA0G43gBBBBAEAAsyAQJ/QRgQEiIBQQA2AgggAUIANwIAIAFBDGoiAkEANgIIIAJCADcCACAAIAE2AgAgAAuXAQECfwJ/QajYAC4BACIBRQRAIwFBHDYCAEF/DAELAkACQCABQX5KDQBB6aAMIQACQAJAAkACQAJAAkACQCABQf8BcUEBaw4LCAABAgMEBAUFBgMHC0GAgAgMCAtBgIACDAcLQYCABAwGC0H/////BwwFCxAMDAQLEAtBEHYMAwtBAAwCCyABIQALIAALIgBBACAAQQBKGwt7AQR/QYznACgCACMDKAIYRgRAQYznAEEANgIACwNAQYTnACgCACECQYDnAEGA5wAoAgAiACAAQQFrQQAgAEH/////B3EiAUEBRxtBACABQf////8HRxsiA/5IAgAgAEcNAAsgAyACRSAAQQBOcXJFBEBBgOcAIAEQFgsLTQECfwJAAkADQEEGIQECQEGA5wAoAgAiAEH/////B3FB/v///wdrDgIDAgALIABBgOcAIAAgAEEBav5IAgBHDQALQQAPC0EKIQELIAELAgALOQEBf0Hw4gAoAgAiAARAQfDiACAAQQFrNgIADwtB7OIAQQD+FwIAQfTiACgCAARAQeziAEEBEBYLC1gBAn8jAygCGCIAQeziACgCAEcEQEHs4gBBACAA/kgCACIBBEADQEHs4gBB9OIAIAEQHUHs4gBBACAA/kgCACIBDQALCw8LQfDiAEHw4gAoAgBBAWo2AgALUwEDfyMAQRBrIgIkACMDIQMgAkEMaiIEBEAgBCADLQAoNgIACyADQQE6ACggACABEC4gAigCDCIBQQJNBH8jAyABOgAoQQAFQRwLGiACQRBq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ACADQRBqJAALIAYQESAAC+QHAgx8AX8CQCADKwN4IgcgAysDWCIIRAAAAAAAAAAAoiADKwMYIABEAAAAAAAAAAAgAL1C////////////AINCgICAgICAgPj/AFQbIgWiIAFEAAAAAAAAAAAgAb1C////////////AINCgICAgICAgPj/AFQbIgYgAysDOKKgIgGgoCIAvUL///////////8Ag0L/////////9/8AVg0AIAcgCCABoKAiAb1C////////////AINC//////////f/AFYgAEQAAAAAAAAAAGFyIAFEAAAAAAAAAABhcg0AIAMrA2AiCSADKwNAIgpEAAAAAAAAAACiIAMrAwAgBaIgBiADKwMgoqAiC6CgIACjIge9Qv///////////wCDQv/////////3/wBWDQAgAysDaCIMIAMrA0giDUQAAAAAAAAAAKIgAysDCCAFoiAGIAMrAyiioCIOoKAgAKMiCL1C////////////AINCgICAgICAgPj/AFoNACADKwNwIg8gAysDUCIQRAAAAAAAAAAAoiADKwMQIAWiIAYgAysDMKKgIgagoCAAoyIFvUL///////////8Ag0KAgICAgICA+P8AWg0AIAkgCiALoKAgAaMiCb1C////////////AINCgICAgICAgPj/AFoNACAMIA0gDqCgIAGjIgq9Qv///////////wCDQoCAgICAgID4/wBaDQAgDyAQIAagoCABoyIBvUL///////////8Ag0KAgICAgICA+P8AWg0ARAAAAAAAAAAAIQAgASAFoSIBRAAAAAAAAAAAYgRARAAAAAAAAAAAIAWhIAGjIQALIAkgB6EgAKIgB6AiAb1C////////////AINC//////////f/AFYNACAKIAihIACiIAigIgC9Qv///////////wCDQoCAgICAgID4/wBaDQAgASACoyIBvUL///////////8Ag0L/////////9/8AVg0AIAAgAqMiAL1C////////////AINCgICAgICAgPj/AFoNAEQAAAAAAIBmQCAARAAAAAAAgHZAoqFEGC1EVPshCUCiRAAAAAAAgGZAoxBYEFlE+MFjGtylXECiRAAAAAAAgFbAoCIARCS4kbJFQ1VApEQkuJGyRUNVQCAAvUL///////////8Ag0KAgICAgICA+P8AWBsgAUQAAAAAAIB2QKJEAAAAAACAZsCgIgG9Qv///////////wCDQv/////////3/wBWDQBEJLiRskVDVcClIgC9Qv///////////wCDQoCAgICAgID4/wBaDQAgBCAAOQMIIAQgATkDAEEBIRELIBELHAAgACAAEFc2AnggAEEB/hcCfCAAQQD+FwKAAQufAwMCfAF+An8gAL0iBUKAgICAgP////8Ag0KBgICA8ITl8j9UIgZFBEBEGC1EVPsh6T8gAJmhRAdcFDMmpoE8IAEgAZogBUIAWSIHG6GgIQBEAAAAAAAAAAAhAQsgACAAIAAgAKIiBKIiA0RjVVVVVVXVP6IgBCADIAQgBKIiAyADIAMgAyADRHNTYNvLdfO+okSmkjegiH4UP6CiRAFl8vLYREM/oKJEKANWySJtbT+gokQ31gaE9GSWP6CiRHr+EBEREcE/oCAEIAMgAyADIAMgA0TUer90cCr7PqJE6afwMg+4Ej+gokRoEI0a9yYwP6CiRBWD4P7I21c/oKJEk4Ru6eMmgj+gokT+QbMbuqGrP6CioKIgAaCiIAGgoCIDoCEBIAZFBEBBASACQQF0a7ciBCAAIAMgASABoiABIASgo6GgIgAgAKChIgAgAJogBxsPCyACBHxEAAAAAAAA8L8gAaMiBCAEvUKAgICAcIO/IgQgAyABvUKAgICAcIO/IgEgAKGhoiAEIAGiRAAAAAAAAPA/oKCiIASgBSABCwunAQEBfwJAEDNBCkcNAEHkACEAA0ACQCAARQ0AQYDnACgCAEUNACAAQQFrIQBBhOcAKAIARQ0BCwsQM0EKRw0AA0ACQEGA5wAoAgAiAEH/////B3FB/////wdHDQBBhOcAQQH+HgIAGkGA5wAgAEF//kgCABpBiOcAKAIAGkGA5wBBfxA3IQBBhOcAQQH+JQIAGiAARQ0AIABBG0cNAgsQM0EKRg0ACwsLNAAgACgCAEGBAU4EQEHg4gAoAgAiAARAA0BB4OIAQeTiACAAEB1B4OIAKAIAIgANAAsLCwuWAwEDfyMDIgIoAkhFBEAgAkGA4wA2AkgLAkBBjOcAKAIAIwMoAhhGDQBBgOcAQQBB/////wf+SAIABH9BCgVBjOcAIwMoAhg2AgBBAAtBCkcNAEHkACECA0ACQCACRQ0AQYDnACgCAEUNACACQQFrIQJBhOcAKAIARQ0BCwtBgOcAQQBB/////wf+SAIABH9BCgVBjOcAIwMoAhg2AgBBAAtBCkYEQANAAkBBgOcAKAIAIgJFDQBBhOcAQQH+HgIAGkGA5wAgAiACQYCAgIB4ciIC/kgCABpBiOcAKAIAGkGA5wAgAhA3IQJBhOcAQQH+JQIAGiACRQ0AIAJBG0cNAwtBgOcAQQBB/////wf+SAIABH9BCgVBjOcAIwMoAhg2AgBBAAtBCkYNAAsLQYznACMDKAIYNgIACyABQRAgARshAkGg5wAoAgAiAyEBAn8DQCABQQJ0IgQoArBnRQRAIAAgATYCAEGg5wAgATYCACAEQbDnAGogAjYCAEEADAILIAFBAWpB/wBxIgEgA0cNAAtBBgsQMgvlBAQGewF+AXwBfyABRCS4kbJFQ1VApEQkuJGyRUNVQCABvUL///////////8AgyILQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEAAAAAAAAAAAgC0KAgICAgICA+P8AVBsiAUQ5nVKiRt+RP6IQEyEMIAP9AANQIQUgA/0AAxAhByABRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQFxAYIQECQCAD/QADYCAD/QADQEQAAAAAAAAAACACRAAAAAAAAAAAIAK9Qv///////////wCDQoCAgICAgID4/wBUGyAMRJMQfEX4G4NBoiICoyACRAAAAAAAAAAAYRv9FCII/fIBIAP9AAMAIABEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAAvUL///////////8Ag0KAgICAgICA+P8AVBv9FCIJ/fIBIAFE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKP9FCIKIAP9AAMg/fIB/fAB/fAB/fABIgb9IQC9Qv///////////wCDQv/////////3/wBWIAb9IQG9Qv///////////wCDQoCAgICAgID4/wBacg0AIAP9AANwIAUgCP3yASAHIAn98gEgCiAD/QADMP3yAf3wAf3wAf3wASIF/SEAvUL///////////8Ag0KAgICAgICA+P8AWg0AIAX9IQEiAL1C////////////AINC//////////f/AFYgAESN7bWg98awPmVyDQAgBCAG/QsDACAEIAX9CwMQQQEh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IAIEfCACKAIAKwOYAQVEAAAAAAAAAAALIAVkRQ0BCyAKIABBgAH8CgAAIAAgAUGAAfwKAAAgASAKQYAB/AoAAAsgCkGAAWokAAu5CwMHfAJ/AX4CQCACAnwCQCAAKAIALQAAQQFHDQAgACgCBCILKAJ4KAIQIgpFDQAgASsDCCIDRCS4kbJFQ1VApEQkuJGyRUNVQCADvUL///////////8AgyIMQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEAAAAAAAAAAAgDEKAgICAgICA+P8AVBsiBEQ5nVKiRt+RP6IQEyEGIAErAxAhAyAKKwNYIQcgASsDACEFIAorAxghCCAERCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQFxAYIQQgCisDYCAKKwNARAAAAAAAAAAAIANEAAAAAAAAAAAgA71C////////////AINCgICAgICAgPj/AFQbIAZEkxB8Rfgbg0GiIgOjIANEAAAAAAAAAABhGyIDoiAKKwMAIAVEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAFvUL///////////8Ag0KAgICAgICA+P8AVBsiBaIgCisDICAERPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjIgSioKCgIga9Qv///////////wCDQv/////////3/wBWDQAgCisDaCAKKwNIIAOiIAorAwggBaIgCisDKCAEoqCgoCIJvUL///////////8Ag0KAgICAgICA+P8AWg0AIAorA3AgCisDUCADoiAKKwMQIAWiIAorAzAgBKKgoKC9Qv///////////wCDQoCAgICAgID4/wBaDQAgCisDeCAHIAOiIAggBaIgBCAKKwM4oqCgoCIDvUL///////////8Ag0L/////////9/8AViADRI3ttaD3xrA+ZXINACAGRAAAAAAAAPA/IAOjIgOiRAAAAAAAAPA/oEQAAAAAAADgP6IgCysDgAGiIgW9Qv///////////wCDQv/////////3/wBWDQBEAAAAAAAA8D8gCSADoqFEAAAAAAAA4D+iIAsrA4gBoiIEvUL///////////8Ag0KAgICAgICA+P8AWg0AIAsrA5ABIgO9Qv///////////wCDIgxCAX1C/v///////wdWIAxCgICAgICAgAh9Qv/////////v/wBWcQ0AIAIgBSADozkDACAEIAOjDAELQQAhCiAAKAIILQAAQQFHDQEgACgCBCgCeCILKAIUIgBFDQEgCysDACIDRAAAAAAAAAAAZQ0BIAErAwAhBSAAKwMAIQYgASsDCCIERCS4kbJFQ1VApEQkuJGyRUNVQCAEvUL///////////8AgyIMQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEJLiRskVDVUCkRCS4kbJFQ1XApUQ5nVKiRt+RP6JEAAAAAAAA4D+iRBgtRFT7Iek/oEQYLURU+yHpPyAMQoCAgICAgID4/wBUGxAXEBghByAAKwNgIAArA0AgASsDECIERAAAAAAAAAAAIAS9Qv///////////wCDQoCAgICAgID4/wBUGyIEoiAGIAMgBUQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IAW9Qv///////////wCDQoCAgICAgID4/wBUG6IiBaIgACsDICADIAdE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKOiIgOioKCgIga9Qv///////////wCDQv/////////3/wBWDQEgACsDaCAAKwNIIASiIAArAwggBaIgAyAAKwMooqCgoCIHvUL///////////8Ag0L/////////9/8AVg0BIAArA3ggACsDWCAEoiAAKwMYIAWiIAMgACsDOKKgoKAiA70iDEIBfUL+////////B1YgDEIAUyAMQv///////////wCDQoCAgICAgIAIfUL/////////7/8AVnJxDQEgAiAGIAOjOQMAIAcgA6MLOQMIQQEhCgsgCgvLDAMDfwt8AX4jAEHwAGsiAiQAIAEoAnghAyACAn9BACABLQB8QQFHDQAaQQAgA0UNABpBACABKwOAAUQAAAAAAAAAAGRFDQAaQQAgASsDiAFEAAAAAAAAAABkRQ0AGkEAIAErA5ABIgdEAAAAAAAAAABhDQAaIAe9Qv///////////wCDQoCAgICAgID4/wBUCzoAbyACIAEtAH0gA0EAR3E6AG4gAiABNgJkIAIgAkHuAGo2AmggAiACQe8AajYCYCABKwM4IQsgASsDMCENRAAAAAAAAPA/IQkCQAJAIAErAxgiCEQAAAAAAAAAAGUNACABKwMgIgdEAAAAAAAAAABlDQAgASsDKCIFRAAAAAAAAAAAZQ0AIAcgBSANoiALoiIFoiIHRAAAAAAAAAAAIAe9Qv///////////wCDQoCAgICAgID4/wBUGyEHIAggBaIiCEQAAAAAAAAAACAIvUL///////////8Ag0KAgICAgICA+P8AVBshCCABKwNgIgW9IhBCAX1C/v///////wdWIBBCAFMgEEL///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0BIAErA3AiCkQAAAAAAAAAAGQiAyABKwNoIgZEAAAAAAAAAABkckUNASAHIAggByAIZBsiDEQAAAAAAAAAAGRFDQEgBSAMoiIFvSIQQgF9Qv7///////8HViAQQgBTIBBC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENASAKIAWjIAYgBaNEAAAAAAAA8D8gBSAGYxtEAAAAAAAA8D8gBkQAAAAAAAAAAGQbIgkgBSAJoiAKZBsgCSADGyIJRAAAAAAAAPA/YQRARAAAAAAAAPA/IQkMAgsgByAJoiEHIAggCaIhCAwBC0QAAAAAAAAAACEHRAAAAAAAAAAAIQgLAnxEAAAAAAAAAAAgB0QAAAAAAADgP6IiBUQAAAAAAAAAAGUNABpEAAAAAAAAAAAhBkQAAAAAAAAAACAIRAAAAAAAAOA/oiIPRAAAAAAAAAAAZQ0AGiABKwNQIQogASsDSCEMIAUgASgCWCIDBHwgAysDACEGIAMrAwgFRAAAAAAAAAAAC6IhBSAPIAaiIgZEAAAAAAAAAABhBEBEAAAAAAAAAAAgBUQAAAAAAAAAAGENARoLIAaaIAyiIAUgCqKhIQ4gDCAFoiAGIAqioQshCgJ8IAEoAlwiA0UEQEQAAAAAAAAAACEFRAAAAAAAAAAADAELRAAAAAAAAAAAIQVEAAAAAAAAAAAgCSALIA0gAysDAKKioiIGRAAAAAAAAAAAYQ0AGiAGIAMrAwhEOZ1SokbfkT+iIgsQE6IhBSAGIAsQIKILIQYgASsDACENIAErAwghCyACIAErAxAiDDkDWCACIAsgDiAFoCIPRAAAAECmVFhBo0T4wWMa3KVMQKKgOQNQIAIgDSAKIAagIgogC0Q5nVKiRt+RP6IQEyIORI3ttaD3xrA+pUSN7bWg98awPiAOvUL///////////8A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AQVEAAAAAAAAAAALIARkRQ0BCwsgACAISQ0ACwsgAEGAAWsiCCAMRwRAIAwgCEGAAfwKAAALIAggCTYCACAAQfgAayAGOQMAIABB/ABrIBQ2AgAgAEHwAGsgDkHwAPwKAAAgCyANTQRAIAwgCBBaIQogACABEFoEQCAIIQEgDCEAIApFDQUMAwsgCg0BCwsgDCAIIAIgEBBfQQAhAwwBCwsLIA5B8AFqJAALsRoECnwMfwJ+CXsjAEHQAWsiDiQAIAMgAygCACIPNgIEAkACQCAAKAIAIhVFDQAgACgCBCIURQ0AIAAoAggiEkUNACABIBUoAgQgFSgCAGtB0AFtIhBPIAEgAk9yDQACQCAQIAIgAiAQSxsiGCABayICIAMoAgggD2tBB3VNDQAgAkGAgIAQTw0CIAMgAkEHdCIQEBIiAjYCBCADIAI2AgAgAyACIBBqNgIIIA9FDQAgDxARCyABIBhPDQAgDkH4AGohGQNAAkAgFSgCACABQdABbGoiAigCACIQRQ0AIAIoAggiD0UNACAPLQAYQQFHDQAgAi0AWEEBRw0AIBIrAwghByAUKAIQIQ8gFCsDCCEGAkAgAi0AgAFBAUYEQCACKwN4IgS9IhpCAX1C/////////wdUIBpC////////////AINCgICAgICAgAh9QoCAgICAgIDw/wBUIBpCAFlxcg0BCyACKwMYIgREOZ1SokbfkT+iEBNEkxB8Rfgbg0GiIAdEAAAAAAAAgECioyIIvSIaQgF9Qv7///////8HViAaQgBTIBpC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENAUQAAAAAAADwPyEJAkAgD0UgBkQAAAAAAAAAAGVyDQACfCACLQBAQQFGBEAgAisDOCEEIAIrAyghByACKwMwDAELIAREJLiRskVDVUCkRCS4kbJFQ1VAIAS9Qv///////////wCDIhpCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQAAAAAAAAAACAaQoCAgICAgID4/wBUGyIKRDmdUqJG35E/ohATIQREAAAAAAAAAAAgAisDICIHRAAAAAAAAAAAIAe9Qv///////////wCDQoCAgICAgID4/wBUGyAERJMQfEX4G4NBoiIEoyAERAAAAAAAAAAAYRshBCACKwMQIgdEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAHvUL///////////8Ag0KAgICAgICA+P8AVBshByAKRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQFxAYRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjCyEKIA8rA3ggDysDWCAEoiAPKwMYIAeiIAogDysDOKKgoKAiBL0iGkIBfUL+////////B1YgGkIAUyAaQv///////////wCDQoCAgICAgIAIfUL/////////7/8AVnJxDQAgBiAEoyIERAAAAAAAAPA/IAQgBL0iGkIAUxtEAAAAAAAA8D8gGkL///////////8Ag0KAgICAgICACH1CgICAgICAgPD/AFQbIBpCAX1C/////////wdUGyEJC0QAAAAAAADwPyAIoyAJoiIEvSIaQgF9Qv7///////8HViAaQgBTIBpC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENASACQQE6AIABIAIgBDkDeCACIAk5A3AgAiAIOQNoCyACQaABQcgAIAItALABIg8baisDACEGIAJBqAFB0AAgDxtqKwMAIQcgDkIANwPIASAQKwMgIQggDkEAOgBYIA5CADcDUCAO/QwAAAAAAAAAAAAAAAAAAAAA/QsDYCAOQoCAgICAgID4PzcDcCAZQQBB0AD8CwAgDiACNgJIAkAgCBA5RQRAIBQoAhAiE0UNAkQAAAAAAAAAACEIRAAAAAAAAPA/IQcgAigCACIPKwMoIgZEAAAAAAAA8D8gBkQAAAAAAAAAAGIbIQkgDysDSCEMIA9BQGsgEisDWCEKAkAgAigCCCIRKwMIIgVEAAAAAAAAAABlBEBEAAAAAAAAAAAhBgwBCyARKwMQIgZEAAAAAAAAAABlBEBEAAAAAAAAAAAhBgwBCyASKwMoIgtEAAAAAAAAAABlBEBEAAAAAAAAAAAhBgwBCyAGIAkgC6IgCqIiCKIiBkQAAAAAAAAAACAGvUL///////////8Ag0KAgICAgICA+P8AVBshBiAFIAiiIghEAAAAAAAAAAAgCL1C////////////AINCgICAgICAgPj/AFQbIQggBL0iGkIBfUL+////////B1YgGkIAUyAaQv///////////wCDQoCAgICA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AOA/oiIbOQMwIAIgHEQAAAAAAADgP6IiIDkDKCACIBdEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAXvUL///////////8Ag0KAgICAgICA+P8AVBsiKDkDACACRAAAAAAAAAAAIBhEAAAAAAAAAAAgGL1C////////////AINCgICAgICAgPj/AFQbIBVEJLiRskVDVUCkRCS4kbJFQ1VAIBW9Qv///////////wCDIl1CgICAgICAgPj/AFgbRCS4kbJFQ1XApSIYRAAAAAAAAAAAIF1CgICAgICAgPj/AFQiChsiKUQ5nVKiRt+RP6IQE0STEHxF+BuDQaIiKqMgKkQAAAAAAAAAAGEbOQMQIAIgF0QAAAAAAADwPyAVRDmdUqJG35E/ohATIhdEje21oPfGsD6lRI3ttaD3xrA+IBe9Qv///////////wCDQoCAgICAgID4/wBYG0QAAABAplRYQaKjRPjBYxrcpUxAoqAiF0QAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IBe9Qv///////////wCDQoCAgICAgID4/wBUGyAooTkDGCACIClEJLiRskVDVUCkRCS4kbJFQ1XApUQ5nVKiRt+RP6JEAAAAAAAA4D+iRBgtRFT7Iek/oBAXEBhE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKM5AwggGEQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gRBgtRFT7Iek/IAobEBcQGCEXIAIgFUQecBggy9biPqAiFUQkuJGyRUNVQKREJLiRskVDVUAgFb1C////////////AINCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gRBgtRFT7Iek/IBW9Qv///////////wCDQoCAgICAgID4/wBUGxAXEBhE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKMgF0T4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAo6E5AyAgCP0AAzAhOSACIBk5A2AgAiAWOQNYIAIgOf0LA0ggBisDiAEhFSACICE5A3AgAiAVOQNoIAIgA/0AA5AG/QsDeCACIANBqAhqIgYpAwA3A4gBIAIgBv0AAwj9CwOQASAD/QADqAYhOSADKQOgBiFdIAIgJzkDuAEgAiBdNwOgASACIDn9CwOoASAGKwMIIRcgBisDACEYAkAgHEQAAAAAAAAAAGUgH0QAAAAAAAAAAGVyBEAgCCsDMCIWIRkgCCsDOCIVIRsgFiIdIRwgFSIaIR8MAQsgIP0U/QwAAAAAAADwvwAAAAAAAPA//fIBICAgGqL9FP3xASI5IBb9FCI6/fIBIjsgG/0U/e0BIBsgHaIiFf0U/fEBIj0gGf0UIj798gH98AEgCP0AAzAiQCA5/Q0ICQoLDA0ODwgJCgsMDQ4PIkH98AEiQv0hASEfIDkgPv3yASI5ID0gOv3yAf3xASBAIDn9DQABAgMEBQYHAAECAwQFBgciOv3wASI9/SEBIRwgQv0hACEaID39IQAhHSA7IBsgFaEiFSAZov0U/fABIEH98AEiO/0hASEbIDkgFSAWov0U/fEBIDr98AEiOf0hASEZIDv9IQAhFSA5/SEAIRYLIAJBADYCoAQgAiAfOQOoAiACIBw5A6ACIAIgGjkDiAIgAiAdOQOAAiACIBs5A+gBIAIgGTkD4AEgAiAVOQPIASACIBY5A8ABIAIgFyAfRAAAAECmVFhBo0T4wWMa3KVMQKKgOQO4AiACIBcgGkQAAABAplRYQaNE+MFjGtylTECioDkDmAIgAiAXIBtEAAAAQKZUWEGjRPjBYxrcpUxAoqA5A/gBIAIgFyAVRAAAAECmVFhBo0T4wWMa3KVMQKKgOQPYASACIBggHESN7bWg98awPiAXRDmdUqJG35E/ohATIhUgFUSN7bWg98awPmMbRAAAAECmVFhBoiIVo0T4wWMa3KVMQKKgOQOwAiACIBggHSAVo0T4wWMa3KVMQKKgOQOQAiACIBggGSAVo0T4wWMa3KVMQKKgOQPwASACIBggFiAVo0T4wWMa3KVMQKKgOQPQAUEAIQYgA0EwakEAQYAB/AsAIANBADYCLCAD/QwAAAAAAAAAAAAAAAAAAAAA/QsDGCAD/QwAAAAAAAAAAAAAAAAAAAAA/QsDCCAevUL///////////8AgyJdUCBdQoCAgICAgID4/wBRciBdQoCAgICAgID4/wBWciEKRAAAAAAAAPA/RAAAAAAAAAAAIA5BAXEiCBshGSAlICQgBCADQQhqEEYhDSADKwO4CCIVRAAAAAAAAAAAIBW9Qv///////////wCDQoCAgICAgID4/wBUGyEbIAMrA7AIIhxEOZ1SokbfkT+iEBMiFUSN7bWg98awPqVEje21oPfGsD4gFb1C////////////AINCgICAgICAgPj/AFgbRAAAAECmVFhBoiEfIAQrAwAhICAEKwN4ISQgBCsDWCElIAQrAzghJiAEKwMYIScgBCsDcCEoIAQrA1AhKSAEKwMwISogBCsDECEvIAQrA2ghMCAEKwNIITEgBCsDKCEyIAQrAwghMyAEKwNgITQgBCsDQCE1IAQrAyAhNiAFKwOgASE3IANBgAlqIQIgAysDqAghOANAIDQgNUQAAAAAAAAAACAbIBwgCyAGKALgDCIEQQR0IgVqIgwrAwhEAAAAQKZUWEGjRPjBYxrcpUxAoqAiFUQkuJGyRUNVQKREJLiRskVDVUAgFb1C////////////AIMiXUKAgICAgICA+P8AWBtEJLiRskVDVcClRAAAAAAAAAAAIF1CgICAgICAgPj/AFQbIhZEOZ1SokbfkT+iEBNEkxB8Rfgbg0GiIhWjIBVEAAAAAAAAAABhGyIVoiAgIDggDCsDACAfo0T4wWMa3KVMQKKgIhpEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAavUL///////////8Ag0KAgICAgICA+P8AVBsiGqIgNiAWRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQFxAYRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjIh2ioKCgIhe9Qv///////////wCDQv/////////3/wBWDQMgMCAxIBWiIDMgGqIgMiAdoqCgoCIYvUL///////////8Ag0KAgICAgICA+P8AWg0DICggKSAVoiAvIBqiICogHaKgoKAiFr1C////////////AINCgICAgICAgPj/AFoNAyAkICUgFaIgJyAaoiAmIB2ioKCgIhq9Qv///////////wCDQv/////////3/wBWIBpEje21oPfGsD5lcg0DIBYhFSAhRAAAAAAAAAAAYgRAIDcgGqEiHSAhIBqiIBWgIhUgFSAdYxshFQsgA0EsaiAEaiIMLQAARQRAIANBMGogBEEFdGoiBCAa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GyINoiAHKwMgIA9E+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKMiDqKgoKC9Qv///////////wCDQv/////////3/wBWDQIgBysDaCAHKwNIIAyiIAcrAwggDaIgBysDKCAOoqCgoL1C////////////AINCgICAgICAgPj/AFoNAiAHKwNwIAcrA1AgDKIgBysDECANoiAHKwMwIA6ioKCgIg+9Qv///////////wCDQoCAgICAgID4/wBaDQIgBysDeCASIAyiIBMgDaIgBysDOCAOoqCgoCIMvUL///////////8Ag0L/////////9/8AViAMRI3ttaD3xrA+ZXINAiAIBHwgCiAMoSINIAkgDKIgD6AiDiANIA5kGwUgDwsgDKMiDL1C////////////AINC//////////f/AFYNAiAMmiIMIAIgAiAMYxshAgsgFUEBaiIVIAZHDQALQQAhFCACvUL///////////8Ag0L/////////9/8AVg0AIAsgAjkDAEEBIRQLIBQLDgAgAEHQAGoQGkHQAGoLKgEBfyMAQRBrIgEkAEHk9wAQFARAIAEgACgCADYCABAZAAsgAUEQaiQACzMBAX8jAEEQayICJAAgACABNgIAQeT3ABAVBEAgAiAAKAIANgIAEBkACyACQRBqJAAgAAsEACAAC9ADAQZ/AkBB4PcA/hIAAEEBcQ0AIwBBIGsiASQAIAFBCGoiAEHg9wA2AgAgAEEAOgAMIABBADYCCCAAQeH3ADYCBCAAQQA6ABQgACgCAP4SAAAEf0EABQJ/IwBBEGsiAyQAIANBDGpB8gkQaSEFAkACQCAAQQRqIgAtAAhFDQAgACgCAC0AAEECcUUNACAAKAIEKAIAIABBDGooAgBGDQELA0AgACgCACIELQAAIgJBAnEEQCAEIAJBBHI6AABB/PcAQeT3ABBSDAELCyACQQFGIgJFBEAgAC0ACEEBRgRAIAAoAgQgAEEMaigCADYCAAsgBEECOgAACyAFEGggA0EQaiQAIAIMAQsQGQALQQFzCyABQSBqJABFDQBB2PcAQRUQRQRAEBkAC0Hc9wBB2PcANgIAIwBBIGsiAyQAIANBCGoiAEHg9wA2AgAgAEEAOgAMIABBADYCCCAAQeH3ADYCBCAAQQA6ABQgACgCAEEB/hkAACMAQRBrIgEkACAB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AkBBzOsAKAIAIgRBASADdCIHcUUEQEHM6wAgBCAHcjYCACACIAA2AgAgACACNgIYDAELIAFBGSADQQF2a0EAIANBH0cbdCEDIAIoAgAhAgNAIAIiBCgCBEF4cSABRg0CIANBHXYhAiADQQF0IQMgBCACQQRxaiIHKAIQIgINAAsgByAANgIQIAAgBDYCGAsgACAANgIMIAAgADYCCA8LIAQoAggiASAANgIMIAQgADYCCCAAQQA2AhggACAENgIMIAAgATYCCAsLyAEBA38jAEEQayIBJABBuO8AEBUaQbDrACgCAEUEQEHE6wBBAjYCAEG86wBCfzcCAEG06wBCgKCAgICABDcCAEGE7wBBAjYCACABQQxqIgJBADYCACMAQSBrIgBCADcDGCAAQgA3AxAgAEIANwMIQZjvACAAKQMYNwIAQZDvACAAKQMQNwIAQYjvACAAKQMINwIAIAIEQEGI7wAgAigCADYCAAtBsOsAIAFBCGpBcHFB2KrVqgVzNgIAC0G47wAQFBogAUEQaiQAC9sFAwJ/AX4FeyMAQRBrIgYkAAJAIAK9IghCAX1C/v///////wdWIAhCAFMgCEL///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0AIAb9DAAAAAAAAAAAAAAAAAAAAAD9CwQAIAAgASACIAMgBhBARQ0AIAYrAwgiAEQkuJGyRUNVQKREJLiRskVDVUAgAL1C////////////AIMiCEKAgICAgICA+P8AWBtEJLiRskVDVcClRAAAAAAAAAAAIAhCgICAgICAgPj/AFQbIgFEOZ1SokbfkT+iEBMhAiAE/QADUCEJIAYrAwAhACAE/QADECEKIAFEJLiRskVDVUCkRCS4kbJFQ1XApUQ5nVKiRt+RP6JEAAAAAAAA4D+iRBgtRFT7Iek/oBAXEBghASAE/QADYCAE/QADQEQAAAAAAAAAAEQAAAAAAAAAACACRJMQfEX4G4NBoiICoyACRAAAAAAAAAAAYRv9FCIL/fIBIAT9AAMAIABEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAAvUL///////////8Ag0KAgICAgICA+P8AVBv9FCIM/fIBIAFE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKP9FCINIAT9AAMg/fIB/fAB/fAB/fAB/Qz/////////f/////////9//U79DAAAAAAAAPB/AAAAAAAA8H/92wEgBP0AA3AgCSAL/fIBIAogDP3yASANIAT9AAMw/fIB/fAB/fAB/fABIgn9DP////////9//////////3/9Tv0MAAAAAAAA8H8AAAAAAADwf/3bAf0NAAECAwgJCgsQERITGBkaG/1TDQAgCf0hACAJ/SEBIgBEAAAAAAAA8D8gAEQAAAAAAAAAAGIboyIAvUL///////////8Ag0L/////////9/8AVg0AIAUgAJo5AwBBASEHCyAGQRBqJAAgBwsEACMDCyMBAX8gBUUgA0UgBEVycgR/QQAFIAAgASACIAMgBCAFEHMLCxoAIABBAP5BAgBBA0YEQCAAQf////8HEBYLC+4EAQZ/IwMiAUEBOgAoIAEgADYCQCABQQA6ACkgAUEB/iUCfEEBayIABEAgAUH8AGohAgNAIAIgAEQAAAAAAADwfxAhGiAC/hACACIADQALCyABKAJ4EFQCQCABKAJ4IgD+EAIARQRAIAAQVgwBC0H03gAQFRogAEHw3gA2AjggAEGk3wAoAgA2AjRBpN8AIAA2AgAgACgCNCAANgI4QfTeABAUGgsjAyECA0AgAigCRCIABEAgACgCBCAAKAIAIAIgACgCCDYCRBEAAAwBCwsCQCMDIgAtACpBAXFFDQADQBBDIAAgAC0AKkH+AXE6ACpBACECA0AgAkECdCIEKAKwZyEDIAAoAkggBGoiBigCACEEIAZBADYCACAERSADRXIgA0EQRnJFBEAQMiAEIAMRAAAQQwsgAkEBaiICQYABRw0ACxAyIAAtACpBAXFFDQEgBUEDSSAFQQFqIQUNAAsLEDZBAEEB/h4C4GIaAkAgASgCTCIARQ0AIAAgAUHMAGoiAkYNAANAIABBCGsoAgAgASAANgJUIAEgACgCADYCTCAAQQxrIgBBgICAgAT+QQIAIQQgAUEANgJURSAEQQBOcUUEQCAAQQEQFgsgAigCACIARQ0BIAAgAkcNAAsLEEdBnOEAQZzhACgCAEEBayIANgIAIABFBEBBm+EAQQA6AAALIAEoAgwiACABKAIIIgI2AgggAiAANgIMIAEgATYCCCABIAE2AgwQNSMFRQRAQQAkA0EAJARBACQFQQEkBiABQSBqIgBBAkEB/kgCAEEDRgRAIAEQAQ8LIABBAP4XAgAgAEEBEBYPC0EAEBAACxIAIAAoAiwiAEGEARBIIAAQEQsMAEHU4gAjA/4XAgALJgECf0GQ4QAoAgBBABAeIAAhAQNAIAEoAlggARBLIgEgAEcNAAsLOAAgACAAKAIAIAAoAgQgACgCCCAAKAIMIAAoAhAQCjkDGCAALQAgQQFGBEAgACgCEBARIAAQEQsLHQEBfyADRSAERXIEf0EABSAAIAEgAiADIAQQRgsL4gUCA38BfCMAQTBrIgUkACAFIAE2AgwgBSAANgIIIAVBADYAKSAFQQA6ACggBUIANwMgIAVBADYCHCAFIAM2AhggBSACNgIUIAUjAzYCECAFQQA2ACwCfCAEBEAjAEEQayIDJAAgAyAFQQhqNgIMIANBADYCCCADQQ82AgQgA0EEaiEEIwBBgAFrIgAkACMAQeAAayIBJAACQEGU4QAoAgBBAkYEQCMAQRBrQQA2AgwMAQsjAEEQayICJAADQAJAAkACQAJAAkBBlOEAQQBBAf5IAgAOBAACAQMFCyACQQRqIgZBlOEANgIEIAJBETYCBCACIwMiBygCRDYCDCAHIAY2AkQQSiMDIAIoAgw2AkRBlOEAQQL+QQIAQQNHDQBBlOEAQf////8HEBYLIAJBEGokAAwCC0GU4QBBAUED/kgCABoLQZThAEEAQQMQHQwBCwsLIAFBAEHQAPwLACABQQ42AlwgASAENgJYIAFBADYCVCABQQA2AlAgAEEgaiICIAEoAlw2AgAgAiABKAJYNgIEIAIgASgCVDYCCCACIAEoAlA2AgwgAkEQaiABQdAA/AoAACABQeAAaiQAIABBCTYCGCAAQQo2AhQgACAAKQIUNwMIIAAgAjYCHCAAIAI2AhBB7OAAQdDhACAAQQhqECsEfyAAQTBqIgEQFRogACgCLEUEQCAAQcgAaiECA0AgAiABEFIgACgCLEUNAAsLIAEQFBogACgCLEEBRgVBAAshASAAQSBqEEwgAEGAAWokACADQRBqJAAgBSsDIEQAAAAAAAAAACABGwwBC0EoEBoiASAFQQhqQSj8CgAAIAFBAToAICABIAJBA3QiABAaIgI2AhAgAiADIAAQIyMAQSBrIgAkACAAQQA2AhggAEEPNgIUIAAgATYCHCAAIAE2AhAgACAAKQIUNwMIQezgAEHQ4QAgAEEIahArGiAAQSBqJABEAAAAAAAAAAALIAVBMGokAAuVAQECfyABKAIIIAEoAgARAAAjAEEgayIBJAACQCAAKAIIRQRAIABBEGoiAhAVGiAAQQE2AgwgABBNIAIQFBogAEEoahBQDAELIAAQTSAAKAIQIQIgACgCDCABQQc2AhggAUEINgIUIAEgADYCHCABIAA2AhAgASABKQIUNwMIIAIgAUEIahArDQAgABAiCyABQSBqJAALEwAgACgCBCAAKAIYEQAAIAAQIgtsAQF/AkAjAygCSEGQ4QAoAgBBAnRqKAIAIgFFBEAgACAANgJYIAAgADYCXEGQ4QAoAgAgABAeDAELIAAgATYCWCAAIAEoAlw2AlwgASAANgJcIAAoAlwgADYCWAsgACAAKAIEIAAoAgARAwALEwAgACgCBCAAKAIUEQAAIAAQIgtLAAJAQeDgACAARAAAAAAAAAAAZAR/IABEAAAAAAAA4D+gnCIARAAAAAAAAPB/ZCAARAAAAAAAAPB/Y3JFDQEgAPwDBUEACzYCAAsLowQCAX4BfwJAIAVFIAZFcg0AAnwgAwRAIAMrAxAhAiADKwMIIQEgAysDAAwBC0QAAAAAAAAAACACRAAAAAAAAAAAIAK9Qv///////////wCDQoCAgICAgID4/wBUGyABRCS4kbJFQ1VApEQkuJGyRUNVQCABvUL///////////8AgyIHQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEAAAAAAAAAAAgB0KAgICAgICA+P8AVBsiAUQ5nVKiRt+RP6IQE0STEHxF+BuDQaIiAqMgAkQAAAAAAAAAAGEbIQIgAUQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gEBcQGET4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAoyEBIABEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAAvUL///////////8Ag0KAgICAgICA+P8AVBsLIQAgBSsDeCAFKwNYIAKiIAUrAxggAKIgASAFKwM4oqCgoCIAvSIHQgF9Qv7///////8HViAHQgBTIAdC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAEIACjIgC9IgdCAX1C/v///////wdWIAdCAFMgB0L///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0AIAYgADkDAEEBIQgLIAgLGQAgAEEB/hcCACAAEDggAEEBQQD+SAIAGgsGACAAEFQLrggDDHwBfgF/AkAgA0UgBEVyDQAgAr0iEUIBfUL+////////B1YgEUIAUyARQv///////////wCDQoCAgICAgIAIfUL/////////7/8AVnJxDQAgAysDeCIHIAMrA1giCEQAAAAAAAAAAKIgAysDGCAARAAAAAAAAAAAIAC9Qv///////////wCDQoCAgICAgID4/wBUGyIFoiABRAAAAAAAAAAAIAG9Qv///////////wCDQoCAgICAgID4/wBUGyIGIAMrAziioCIBoKAiAL1C////////////AINC//////////f/AFYNACAHIAggAaCgIgG9Qv///////////wCDQv/////////3/wBWIABEAAAAAAAAAABhciABRAAAAAAAAAAAYXINACADKwNgIgkgAysDQCIKRAAAAAAAAAAAoiADKwMAIAWiIAYgAysDIKKgIgugoCAAoyIHvUL///////////8Ag0L/////////9/8AVg0AIAMrA2giDCADKwNIIg1EAAAAAAAAAACiIAMrAwggBaIgBiADKwMooqAiDqCgIACjIgi9Qv///////////wCDQoCAgICAgID4/wBaDQAgAysDcCIPIAMrA1AiEEQAAAAAAAAAAKIgAysDECAFoiAGIAMrAzCioCIGoKAgAKMiBb1C////////////AINCgICAgICAgPj/AFoNACAJIAogC6CgIAGjIgm9Qv///////////wCDQoCAgICAgID4/wBaDQAgDCANIA6goCABoyIKvUL///////////8Ag0KAgICAgICA+P8AWg0AIA8gECAGoKAgAaMiAb1C////////////AINCgICAgICAgPj/AFoNAEQAAAAAAAAAACEAIAEgBaEiAUQAAAAAAAAAAGIEQEQAAAAAAAAAACAFoSABoyEACyAJIAehIACiIAegIgG9Qv///////////wCDQv/////////3/wBWDQAgCiAIoSAAoiAIoCIAvUL///////////8Ag0KAgICAgICA+P8AWg0AIAEgAqMiAb1C////////////AINC//////////f/AFYNACAAIAKjIgC9Qv///////////wCDQoCAgICAgID4/wBaDQBEAAAAAACAZkAgAEQAAAAAAIB2QKKhRBgtRFT7IQlAokQAAAAAAIBmQKMQWBBZRPjBYxrcpVxAokQAAAAAAIBWwKAiAEQkuJGyRUNVQKREJLiRskVDVUAgAL1C////////////AINCgICAgICAgPj/AFgbIAFEAAAAAACAdkCiRAAAAAAAgGbAoCIBvUL///////////8Ag0L/////////9/8AVg0ARCS4kbJFQ1XApSIAvUL///////////8Ag0KAgICAgICA+P8AWg0AIAQgADkDCCAEIAE5AwBBASESCyASC04BA38jASEAIwMiAigCdCIBBEAgAkEANgJ0IAEkASABQQBBBfwLACABDwsjAkEBIAAbBEBBASQCQQUQGiEACyAAJAEgAEEAQQX8CwAgAAvfBAMBfgJ8AX8CQCAERSAFRXINACADvSIGQgF9Qv7///////8HViAGQgBTIAZC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAEKwMAIQcgAUQkuJGyRUNVQKREJLiRskVDVUAgAb1C////////////AIMiBkKAgICAgICA+P8AWBtEJLiRskVDVcClRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6BEGC1EVPsh6T8gBkKAgICAgICA+P8AVBsQFxAYIQggBCsDYCAEKwNAIAJEAAAAAAAAAAAgAr1C////////////AINCgICAgICAgPj/AFQbIgGiIAcgAEQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IAC9Qv///////////wCDQoCAgICAgID4/wBUGyADoiIAoiADIAhE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKOiIgIgBCsDIKKgoKAiA71C////////////AINC//////////f/AFYNACAEKwNoIAQrA0ggAaIgBCsDCCAAoiACIAQrAyiioKCgIge9Qv///////////wCDQv/////////3/wBWDQAgBCsDeCAEKwNYIAGiIAQrAxggAKIgAiAEKwM4oqCgoCIAvSIGQgF9Qv7///////8HViAGQgBTIAZC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAFIAcgAKM5AwggBSADIACjOQMAQQEhCQsgCQtLAQJ/EGsgACgCACECIABBADYCACgCACACEB4gACgCDCAAKAIEIAAoAggQYSAAKAIAIQEgAEEANgIAIAEEQCABED8QEQsgABARQQALXAECfxBrIAAoAgAhAiAAQQA2AgAoAgAgAhAeIABBBGogACgCFCAAKAIYIAAoAhwoAgAgACgCIEEMbGoQYCAAKAIAIQEgAEEANgIAIAEEQCABED8QEQsgABARQQAL2wIBAX4gAwRAIAMgAEQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IAC9Qv///////////wCDQoCAgICAgID4/wBUGzkDACADRAAAAAAAAAAAIAJEAAAAAAAAAAAgAr1C////////////AINCgICAgICAgPj/AFQbIAFEJLiRskVDVUCkRCS4kbJFQ1VAIAG9Qv///////////wCDIgRCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQAAAAAAAAAACAEQoCAgICAgID4/wBUGyIARDmdUqJG35E/ohATRJMQfEX4G4NBoiIBoyABRAAAAAAAAAAAYRs5AxAgAyAARCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQFxAYRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjOQMICyADQQBHCwQAIwALEAAjACAAa0FwcSIAJAAgAAsGACAAJAALJgAgACQDIAEkBCACJAUgAyQGIAJFIARFckUEQEGs3wAgBDYCAAsLBwAgACgCBAsFAEG9CQsFAEGYCwvbXAQYfwd8A34DeyMAQbAEayIDJAACQAJAIABFIAFFcg0AIAH9DAAAAAAAAEJAAAAAAAAAEED9CwMQIAH9DAAAAAAAAAAAAAAAAABgYED9CwMAIAFCADcDICAB/QwAAAAAAAAAAAAAAAAAAAAA/QsDKCAAKwMAIhq9IiFC////////////AIMiIkIBfUL/////////B1QgIUIAUyICcSAiQoCAgICAgID4/wBRciAiQoCAgICAgID4/wBWciAiQoCAgICAgIAIfUKAgICAgICA8P8AVCACcXINACAaRAAAAAAAAOA/oJwiGkQAAAAAAADwf2QgGkQAAAAAAADwf2NyRQ0AIBr8AyIHQQ9JIBogB7hicg0AIAArAwgiGr0iIUL///////////8AgyIiQgF9Qv////////8HVCAhQgBTIgJxICJCgICAgICAgPj/AFFyICJCgICAgICAgPj/AFZyICJCgICAgICAgAh9QoCAgICAgIDw/wBUIAJxcg0AIBpEAAAAAAAA4D+gnCIaRAAAAAAAAPB/ZCAaRAAAAAAAAPB/Y3JFDQAgGvwDIgJBGEcgGiACuGJyDQAgACsDECIavSIhQv///////////wCDIiJCAX1C/////////wdUICFCAFMiAnEgIkKAgICAgICA+P8AUXIgIkKAgICAgICA+P8AVnIgIkKAgICAgICACH1CgICAgICAgPD/AFQgAnFyDQAgGkQAAAAAAADgP6CcIhpEAAAAAAAA8H9kIBpEAAAAAAAA8H9jckUNACAaIBr8AyIGuGIgBiAHS3IgByAGa0EwSXINACAAKwMYIhq9IiFC////////////AIMiIkIBfUL/////////B1QgIUIAUyICcSAiQoCAgICAgID4/wBRciAiQoCAgICAgID4/wBWciAiQoCAgICAgIAIfUKAgICAgICA8P8AVCACcXINACAaRAAAAAAAAOA/oJwiGkQAAAAAAADwf2QgGkQAAAAAAADwf2NyRQ0AIBogGvwDIg64Yg0AIAArAyAiGr0iIUL///////////8AgyIiQgF9Qv////////8HVCAhQgBTIgJxICJCgICAgICAgPj/AFFyICJCgICAgICAgPj/AFZyICJCgICAgICAgAh9QoCAgICAgIDw/wBUIAJxcg0AIBpEAAAAAAAA4D+gnCIaRAAAAAAAAPB/ZCAaRAAAAAAAAPB/Y3JFDQAgGiAa/AMiC7hiIAcgC0lyIAcgC2sgDkEJbElyDQAgACsDKCIavSIhQv///////////wCDIiJCAX1C/////////wdUICFCAFMiAnEgIkKAgICAgICA+P8AUXIgIkKAgICAgICA+P8AVnIgIkKAgICAgICACH1CgICAgICAgPD/AFQgAnFyDQAgGkQAAAAAAADgP6CcIhpEAAAAAAAA8H9kIBpEAAAAAAAA8H9jckUNACAaIBr8AyIFuGINACAAKwMwIhq9IiFC////////////AIMiIkIBfUL/////////B1QgIUIAUyIC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ADoAuAYgAkHABmoiAiALRw0ACwsgBCALNgIECyAEDAELDAILIQUgFQRAIAAgCUEDdGohCSAXKAIEIBcoAgAiBGtByABtIQsgBSgCACEHIAMoAtwCIQogAysDyAIhHUEAIQADQCADQQA6AJgBIANCADcDkAEgA/0MAAAAAAAAAAAAAAAAAAAAAP0LA4ABIAP9DAAAAAAAAAAAAAAAAAAAAAD9CwOgASADQQA6ALABIAP9DAAAAAAAAAAAAAAAAAAAAAD9CwO4ASADQQA6ANgBIANCADcD0AEgA0KAgICAgICA+D83A8gBIAP9DAAAAAAAAAAAAAAAAAAAAAD9CwPgASADQoCAgICAgID4PzcD8AEgA0EAOgCIAiAD/QwAAAAAAAAAAAAAAAAAAAAA/QsD+AEgA/0MAAAAAAAAAAAAAAAAAAAAAP0LA5ACIANBADoAoAIgAyAANgJcIAMgCSAAQdgBbGoiBjYCWCADAn9BACAGKwMIIhq9IiFC////////////AIMiIkIBfUL/////////B1QgIUIAUyICcSAiQoCAgICAgID4/wBRciAiQoCAgICAgID4/wBWciAiQoCAgICAgIAIfUKAgICAgICA8P8AVCACcXINABpBACAaRAAAAAAAAOA/oJwiGkQAAAAAAADwf2QgGkQAAAAAAADwf2NyRQ0AGkEAIBogGvwDIgK4Yg0AGiAEIAJByABsakEAIAIgC0kbCzYCYCAG/QADoAEhJCADIAYrA7ABOQN4IAMgJP0LA2hBACECAkAgCkUgHUQAAAAAAAAAAGVyDQAgAysDaCEeIAorAwAhHCADKwNwIhpEJLiRskVDVUCkRCS4kbJFQ1VAIBq9Qv///////////wCDIiFCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gRBgtRFT7Iek/ICFCgICAgICAgPj/AFQbEBcQGCEbIAorA2AgCisDQCADKwN4IhpEAAAAAAAAAAAgGr1C////////////AINCgICAgICAgPj/AFQbIiCiIBwgHSAeRAAAAAAAgGZAoEQAAAAAAIB2QKNEAAAAAAAA4D8gHr1C////////////AINCgICAgICAgPj/AFQboiIeoiAKKwMgIB0gG0T4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAo6IiHKKgoKAiG71C////////////AINC//////////f/AFYNACAKKwNoIAorA0ggIKIgCisDCCAeoiAcIAorAyiioKCgIhq9Qv///////////wCDQv/////////3/wBWDQAgCisDeCAKKwNYICCiIAorAxggHqIgHCAKKwM4oqCgoCIcvSIhQgF9Qv7///////8HViAhQgBTICFC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACADIBogHKM5A6gBIAMgGyAcozkDoAFBASECCyADIAI6ALABIAMrA3ghHCADKwNwIRsgAyADKwNoIhpEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAavUL///////////8Ag0KAgICAgICA+P8AVBs5A4ABIANEAAAAAAAAAAAgHEQAAAAAAAAAACAcvUL///////////8Ag0KAgICAgICA+P8AVBsgG0QkuJGyRUNVQKREJLiRskVDVUAgG71C////////////AIMiIUKAgICAgICA+P8AWBtEJLiRskVDVcClRAAAAAAAAAAAICFCgICAgICAgPj/AFQbIhtEOZ1SokbfkT+iEBNEkxB8Rfgbg0GiIhqjIBpEAAAAAAAAAABhGzkDkAEgAyAbRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQFxAYRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjOQOIASADQQE6AJgBAkAgAygCWCICKwMAIhq9Qv///////////wCDQv/////////3/wBYBEAgGp0iGiAa/AYiIblhDQELQgAhIQsgAyAhNwO4AQJAIAIrA1giH71C////////////AINCgICAgICAgPj/AFQNAEQAAAAAAAAAACEfIAIrA2AgAisDaKAiGr1C////////////AINC//////////f/AFYNAEQAAAAAAAAAAAJ8IBq9IiNCNIinQf8PcSICQf8PRgRAIBpEAAAAAACAdkCiIhogGqMMAQsgI0IBhiIhQoCAgICAgMD2gH9YBEAgGkQAAAAAAAAAAKIgGiAhQoCAgICAgMD2gH9RGwwBCwJ+IAJFBEBBACECICNCDIYiIUIAWQRAA0AgAkEBayECICFCAYYiIUIAWQ0ACwsgI0EBIAJrrYYMAQsgI0L/////////B4NCgICAgICAgAiECyEhIAJBhwhKBEADQAJAICFCgICAgICAoAt9IiJCAFMNACAiIiFCAFINACAaRAAAAAAAAAAAogwDCyAhQgGGISEgAkEBayICQYcISg0AC0GHCCECCwJAICFCgICAgICAoAt9IiJCAFMNACAiIiFCAFINACAaRAAAAAAAAAAAogwBCyAhQv////////8HWARAA0AgAkEBayECICFCgICAgICAgARUICFCAYYhIQ0ACwsgI0KAgICAgICAgIB/gyAhQoCAgICAgIAIfSACrUI0hoQgIUEBIAJrrYggAkEAShuEvwsiGkQAAAAAAIB2QKAgGiAaRAAAAAAAAAAAYxsiGiAaRAAAAAAAAAAAYRshHwsgAyAfOQPgASADIB9EOZ1Sokbfkb+iIhoQEzkD8AEgAyAaECA5A+gBIAcgAEHQAWxqIANB2ABqQckB/AoAACAAQQFqIgAgFUcNAAsLIANByAJqIRggA0HoAmohEiADLQDHAiEGIwBBIGsiCyQAIAUiACgCACIEIAAoAgQiBUcEQANAAkAgBCgCAEUNACAEKAIIIgJFDQAgBC0AWEEBRw0AIBIrAwghGiAYKAIQIQcgGCsDCCEgAkAgBC0AgAFBAUYEQCAEKwN4Ih29IiFCAX1C/////////wdUICFC////////////AINCgICAgICAgAh9QoCAgICAgIDw/wBUICFCAFlxcg0BCyAEKwMYIhtEOZ1SokbfkT+iEBNEkxB8Rfgbg0GiIBpEAAAAAAAAgECioyIevSIhQgF9Qv7///////8HViAhQgBTICFC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENAUQAAAAAAADwPyEfAkAgB0UgIEQAAAAAAAAAAGVyDQACfCAELQBAQQFGBEAgBCsDOCEdIAQrAyghGyAEKwMwDAELIBtEJLiRskVDVUCkRCS4kbJFQ1VAIBu9Qv///////////wCDIiFCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQAAAAAAAAAACAhQoCAgICAgID4/wBUGyIcRDmdUqJG35E/ohATIRtEAAAAAAAAAAAgBCsDICIaRAAAAAAAAAAAIBq9Qv///////////wCDQoCAgICAgID4/wBUGyAbRJMQfEX4G4NBoiIaoyAaRAAAAAAAAAAAYRshHSAEKwMQIhpEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAavUL///////////8Ag0KAgICAgICA+P8AVBshGyAcRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQFxAYRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjCyEaIAcrA3ggBysDWCAdoiAHKwMYIBuiIBogBysDOKKgoKAiGr0iIUIBfUL+////////B1YgIUIAUyAhQv///////////wCDQoCAgICAgIAIfUL/////////7/8AVnJxDQAgICAaoyIaRAAAAAAAAPA/IBogGr0iIUIAUxtEAAAAAAAA8D8gIUL///////////8Ag0KAgICAgICACH1CgICAgICAgPD/AFQbICFCAX1C/////////wdUGyEfC0QAAAAAAADwPyAeoyAfoiIdvSIhQgF9Qv7///////8HViAhQgBTICFC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENASAEQQE6AIABIAQgHTkDeCAEIB85A3AgBCAeOQNoCyALQRBqIARBASAYIBIgAiAdIAAgBhA9IAQgC/0AAxD9CwOgASAEQQE6ALABIAsgBEEAIBggEiAEKAIIIB0gACAGED0gBCAL/QADAP0LA7gBIARBAToAyAELIARB0AFqIgQgBUcNAAsLIAtBIGokACMAQTBrIggkACADQcwAaiIKQQA2AgggA0IANwJMIAhBADYCLCAIQgA3AiQgACILKAIEIgIgACgCACIAa0HQAW0hBSAAIAJHBEAgBUGAgIAQTw0CIAggBUEHdCIAEBIiAjYCKCAIIAI2AiQgCCAAIAJqNgIsCyAIIA0gD0EEcUECdnE6ACAgCCASNgIcIAggGDYCGCAIIAs2AhQCQAJAIAhBFGpBACAFQYAETwR/IAVBCHYiAhAxIgBBBCAAGyIAIAAgAksbIQVB4OAAKAIAIgJFBEAQMSIAQQQgABshAgsgAiAFIAIgBUkbIgxBAUsNASALKAIEIAsoAgBrQdABbQUgBQsgCEEkahBgDAELIAggDEEMbCIAEBIiAjYCCCAIIAAg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AEHy2QBBAEHkAPwLAEHW2gBBAEGXBPwIAwAjCQRAAAtB8N4AQQBBNPwLAEGk3wBBAEHlAPwIBABBieAAQQBBP/wLAEHI4ABBAEEM/AgFAEHg4ABBAEHQF/wLAEGw+ABBAv4XAgBBsPgAQX/+AAIAGgwBC0Gw+ABBAUJ//gECABoL/AkA/AkB/AkC/AkDQQEkCfwJBPwJBQuJAQBBwPgEJAhBwPgAJAdB8OEAQQI2AgBB0OEAQdDhADYCAEGc4gBBnOIANgIAQbDiAEG44QA2AgBB6OEAQSo2AgBBmOIAQYDjADYCAEHc4QBB0OEANgIAQdjhAEHQ4QA2AgBB0OEAEAlBhOIAIwg2AgBBiOIAIwgjB2s2AgBB0OEAEEFB0OEAEAgLC71WBgHoBSVzIGZhaWxlZCB0byByZWxlYXNlIG11dGV4ACVzIGZhaWxlZCB0byBhY3F1aXJlIG11dGV4ACVzIGZhaWxlZCB0byBicm9hZGNhc3QAJXM6JWQ6ICVzAHZlY3RvcgAvZW1zZGsvZW1zY3JpcHRlbi9zeXN0ZW0vbGliL2xpYmN4eGFiaS9zcmMvcHJpdmF0ZV90eXBlaW5mby5jcHAAc3RkOjpleGNlcHRpb24AYmFkX2FycmF5X25ld19sZW5ndGgAdGVybWluYXRpbmcAX19jeGFfZ3VhcmRfcmVsZWFzZQBfX2N4YV9ndWFyZF9hY3F1aXJlAHRlcm1pbmF0ZV9oYW5kbGVyIHVuZXhwZWN0ZWRseSByZXR1cm5lZAB0aHJlYWQgY29uc3RydWN0b3IgZmFpbGVkAF9fdGhyZWFkX3NwZWNpZmljX3B0ciBjb25zdHJ1Y3Rpb24gZmFpbGVkAHRocmVhZDo6am9pbiBmYWlsZWQAbXV0ZXggbG9jayBmYWlsZWQAc3RkOjpiYWRfYWxsb2MAY2F0Y2hpbmcgYSBjbGFzcyB3aXRob3V0IGFuIG9iamVjdD8AX19jeGFfZ3VhcmRfYWNxdWlyZSBkZXRlY3RlZCByZWN1cnNpdmUgaW5pdGlhbGl6YXRpb246IGRvIHlvdSBoYXZlIGEgZnVuY3Rpb24tbG9jYWwgc3RhdGljIHZhcmlhYmxlIHdob3NlIGluaXRpYWxpemF0aW9uIGRlcGVuZHMgb24gdGhhdCBmdW5jdGlvbj8AAAAAAAAAAQAAAAIA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AXY82SEp9f9v8j9hDH92u/x/PDw6kxQAkPI/K0ECPMoCcrwTY1UUALDyPwIf8jOCgJK8O1L+6//P8j/y3E84fv+IvJatuAsA8PI/xUEwUFH/hbyv4nr7/w/zP50oXohxAIG8f1+s/v8v8z8Vt7c/Xf+RvFZnpgwAUPM/vYKLIoJ/lTwh9/sRAHDzP8zVDcS6AIA8uS9Z+f+P8z9Rp7ItnT+UvELS3QQAsPM/4Th2cGt/hTxXybL1/8/zPzESvxA6Ano8GLSw6v/v8z+wUrFmbX+YPPSvMhUAEPQ/JIUZXzf4Zzwpi0cXADD0P0NR3HLmAYM8Y7SV5/9P9D9aibK4af+JPOB1BOj/b/Q/VPLCm7HAlbznwW/v/4/0P3IqOvIJQJs8BKe+5f+v9D9FfQ2/t/+UvN4nEBcA0PQ/PWrccWTAmbziPvAPAPD0PxxThQuJf5c80UvcEgAQ9T82pGZxZQRgPHonBRYAMPU/CTIjzs6/lrxMcNvs/0/1P9ehBQVyAom8qVRf7/9v9T8SZMkO5r+bPBIQ5hcAkPU/kO+vgcV+iDySPskDALD1P8AMvwoIQZ+8vBlJHQDQ9T8pRyX7KoGYvIl6uOf/7/U/BGntgLd+lLwC/wAEZAAgAAAE//8QAAEAAQABAP//Af8B//////8B/wH/Af8B/wH/Af8B/wH//////wr/IAD//wP/Af8E/x4AAAEF//////9jAAAIYwDoAwIAAAD//////wAAAAH/Af//////////////AAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAH/Af//////AAEgAAQAgAAACP//Af8B/////////wH/Bv8H/wj/Cf//////vAK8AgEA//8BAAEA//8AAP//////////AAAAAAAAAAAAAAAAAAAAABQBeP//AQAK////////////Af8B/wAAAAAAAAH/Af8B/wAAAAAAAAAAAAAAAAAAAAAAAAH/AAAAAAAAAf8B/wEAAAABAAAAAf//////AAAAAAH///8AAAAA/////////////ygACv//////AQAK/////wD//////////wGXBAH/Af///wEA//////////////////8K//////8M/w3/AAAILgAAhC0AAFgvAABOMTBfX2N4eGFiaXYxMTZfX3NoaW1fdHlwZV9pbmZvRQAAAAAILgAAtC0AAHgtAABOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0UAAAAAAAAAqC0AABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAAAAAACguAAAXAAAAHwAAABkAAAAaAAAAGwAAACAAAAAhAAAAIgAAAAguAAA0LgAAqC0AAE4xMF9fY3h4YWJpdjEyMF9fc2lfY2xhc3NfdHlwZV9pbmZvRQAAAAAAAAAAsC4AAAMAAAAjAAAAJAAAAAAAAADMLgAAAwAAACUAAAAmAAAAAAAAAJguAAADAAAAJwAAACgAAADgLQAAoC4AAFN0OWV4Y2VwdGlvbgAAAAAILgAAvC4AAJguAABTdDliYWRfYWxsb2MAAAAACC4AANguAACwLgAAU3QyMGJhZF9hcnJheV9uZXdfbGVuZ3RoAAAAAAAAAAAILwAABAAAACkAAAAqAAAACC4AABQvAACYLgAAU3QxMWxvZ2ljX2Vycm9yAAAAAAA4LwAABAAAACsAAAAqAAAACC4AAEQvAAAILwAAU3QxMmxlbmd0aF9lcnJvcgAAAADgLQAAYC8AAFN0OXR5cGVfaW5mbwABZXAvAABwLwAAAAABAAACAAAAAAAABQAAAAAAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAABQAAADYNwAAAAQAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAP////8KAQy4LwAAQDwBABYAAAA=\"","export default \"data:application/wasm;base64,AGFzbQEAAAABtAEZYAF/AX9gAX8AYAR/f39/AGABfAF8YAJ/fwF/YAV/f39/fwBgBn9/f39/fwBgAABgBXx8fH9/AX9gA39/fwF/YAZ8fHx/f38Bf2AMfHx8f39/f39/fHx/AX9gA39/fwBgA3x8fwF8YAR8fHx/AX9gBnx8fHx/fwF/YAd8fHx/fH9/AX9gAXwAYAl/f39/f398f38AYAJ/fwBgAnx8AXxgAnx/AX9gAXwBf2ACfH8BfGAAAX8CqwEFFndhc2lfc25hcHNob3RfcHJldmlldzEOYXJnc19zaXplc19nZXQABBZ3YXNpX3NuYXBzaG90X3ByZXZpZXcxCGFyZ3NfZ2V0AAQDZW52EF9fbWFpbl9hcmdjX2FyZ3YABBZ3YXNpX3NuYXBzaG90X3ByZXZpZXcxCXByb2NfZXhpdAABA2Vudh9lbXNjcmlwdGVuX25vdGlmeV9tZW1vcnlfZ3Jvd3RoAAEDQD8HDg8IEBEICAoKCAsLBAkHEgITCQIFDAQHAxQVDQMDAxYXAw0DAAEAAAAAAQEJCQwCAgIFBQYGAAAAAAEAARgEBQFwARkZBQcBAYICgIACBggBfwFBwNsECwe6AhAGbWVtb3J5AgAKZnJvbUxuZ0xhdAAGB3Byb2plY3QABwl1bnByb2plY3QACBljYWxjdWxhdGVQZXJzcGVjdGl2ZVJhdGlvAAkZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAEXNldFRocmVhZFBvb2xTaXplAAoYcHJvamVjdExuZ0xhdFRvQ2xpcFNwYWNlAAsaY2FsY3VsYXRlQmlsbGJvYXJkRGVwdGhLZXkADRhjYWxjdWxhdGVTdXJmYWNlRGVwdGhLZXkAEBdwcmVwYXJlRHJhd1Nwcml0ZUltYWdlcwASBl9zdGFydAAdBm1hbGxvYwAqBGZyZWUAKxlfZW1zY3JpcHRlbl9zdGFja19yZXN0b3JlAEIcZW1zY3JpcHRlbl9zdGFja19nZXRfY3VycmVudABDCR4BAEEBCxgvPwUvMTAwMzs5NTE6ODYxPTE+MTxAQUAMAQgKsc8DPwIAC9sCAQF+IAMEQCADIABEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAAvUL///////////8Ag0KAgICAgICA+P8AVBs5AwAgA0QAAAAAAAAAACACRAAAAAAAAAAAIAK9Qv///////////wCDQoCAgICAgID4/wBUGyABRCS4kbJFQ1VApEQkuJGyRUNVQCABvUL///////////8AgyIEQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEAAAAAAAAAAAgBEKAgICAgICA+P8AVBsiAEQ5nVKiRt+RP6IQIkSTEHxF+BuDQaIiAaMgAUQAAAAAAAAAAGEbOQMQIAMgAEQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gECkQJET4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAozkDCAsgA0EARwvfBAMBfgJ8AX8CQCAERSAFRXINACADvSIGQgF9Qv7///////8HViAGQgBTIAZC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAEKwMAIQcgAUQkuJGyRUNVQKREJLiRskVDVUAgAb1C////////////AIMiBkKAgICAgICA+P8AWBtEJLiRskVDVcClRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6BEGC1EVPsh6T8gBkKAgICAgICA+P8AVBsQKRAkIQggBCsDYCAEKwNAIAJEAAAAAAAAAAAgAr1C////////////AINCgICAgICAgPj/AFQbIgGiIAcgAEQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IAC9Qv///////////wCDQoCAgICAgID4/wBUGyADoiIAoiADIAhE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKOiIgIgBCsDIKKgoKAiA71C////////////AINC//////////f/AFYNACAEKwNoIAQrA0ggAaIgBCsDCCAAoiACIAQrAyiioKCgIge9Qv///////////wCDQv/////////3/wBWDQAgBCsDeCAEKwNYIAGiIAQrAxggAKIgAiAEKwM4oqCgoCIAvSIGQgF9Qv7///////8HViAGQgBTIAZC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAFIAcgAKM5AwggBSADIACjOQMAQQEhCQsgCQuuCAMMfAF+AX8CQCADRSAERXINACACvSIRQgF9Qv7///////8HViARQgBTIBFC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACADKwN4IgcgAysDWCIIRAAAAAAAAAAAoiADKwMYIABEAAAAAAAAAAAgAL1C////////////AINCgICAgICAgPj/AFQbIgWiIAFEAAAAAAAAAAAgAb1C////////////AINCgICAgICAgPj/AFQbIgYgAysDOKKgIgGgoCIAvUL///////////8Ag0L/////////9/8AVg0AIAcgCCABoKAiAb1C////////////AINC//////////f/AFYgAEQAAAAAAAAAAGFyIAFEAAAAAAAAAABhcg0AIAMrA2AiCSADKwNAIgpEAAAAAAAAAACiIAMrAwAgBaIgBiADKwMgoqAiC6CgIACjIge9Qv///////////wCDQv/////////3/wBWDQAgAysDaCIMIAMrA0giDUQAAAAAAAAAAKIgAysDCCAFoiAGIAMrAyiioCIOoKAgAKMiCL1C////////////AINCgICAgICAgPj/AFoNACADKwNwIg8gAysDUCIQRAAAAAAAAAAAoiADKwMQIAWiIAYgAysDMKKgIgagoCAAoyIFvUL///////////8Ag0KAgICAgICA+P8AWg0AIAkgCiALoKAgAaMiCb1C////////////AINCgICAgICAgPj/AFoNACAMIA0gDqCgIAGjIgq9Qv///////////wCDQoCAgICAgID4/wBaDQAgDyAQIAagoCABoyIBvUL///////////8Ag0KAgICAgICA+P8AWg0ARAAAAAAAAAAAIQAgASAFoSIBRAAAAAAAAAAAYgRARAAAAAAAAAAAIAWhIAGjIQALIAkgB6EgAKIgB6AiAb1C////////////AINC//////////f/AFYNACAKIAihIACiIAigIgC9Qv///////////wCDQoCAgICAgID4/wBaDQAgASACoyIBvUL///////////8Ag0L/////////9/8AVg0AIAAgAqMiAL1C////////////AINCgICAgICAgPj/AFoNAEQAAAAAAIBmQCAARAAAAAAAgHZAoqFEGC1EVPshCUCiRAAAAAAAgGZAoxAjEB5E+MFjGtylXECiRAAAAAAAgFbAoCIARCS4kbJFQ1VApEQkuJGyRUNVQCAAvUL///////////8Ag0KAgICAgICA+P8AWBsgAUQAAAAAAIB2QKJEAAAAAACAZsCgIgG9Qv///////////wCDQv/////////3/wBWDQBEJLiRskVDVcClIgC9Qv///////////wCDQoCAgICAgID4/wBaDQAgBCAAOQMIIAQgATkDAEEBIRILIBILowQCAX4BfwJAIAVFIAZFcg0AAnwgAwRAIAMrAxAhAiADKwMIIQEgAysDAAwBC0QAAAAAAAAAACACRAAAAAAAAAAAIAK9Qv///////////wCDQoCAgICAgID4/wBUGyABRCS4kbJFQ1VApEQkuJGyRUNVQCABvUL///////////8AgyIHQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEAAAAAAAAAAAgB0KAgICAgICA+P8AVBsiAUQ5nVKiRt+RP6IQIkSTEHxF+BuDQaIiAqMgAkQAAAAAAAAAAGEbIQIgAUQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gECkQJET4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAoyEBIABEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAAvUL///////////8Ag0KAgICAgICA+P8AVBsLIQAgBSsDeCAFKwNYIAKiIAUrAxggAKIgASAFKwM4oqCgoCIAvSIHQgF9Qv7///////8HViAHQgBTIAdC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAEIACjIgC9IgdCAX1C/v///////wdWIAdCAFMgB0L///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0AIAYgADkDAEEBIQgLIAgLAgALHQEBfyADRSAERXIEf0EABSAAIAEgAiADIAQQDAsL5QQEBnsBfgF8AX8gAUQkuJGyRUNVQKREJLiRskVDVUAgAb1C////////////AIMiC0KAgICAgICA+P8AWBtEJLiRskVDVcClRAAAAAAAAAAAIAtCgICAgICAgPj/AFQbIgFEOZ1SokbfkT+iECIhDCAD/QADUCEFIAP9AAMQIQcgAUQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gECkQJCEBAkAgA/0AA2AgA/0AA0BEAAAAAAAAAAAgAkQAAAAAAAAAACACvUL///////////8Ag0KAgICAgICA+P8AVBsgDESTEHxF+BuDQaIiAqMgAkQAAAAAAAAAAGEb/RQiCP3yASAD/QADACAARAAAAAAAgGZAoEQAAAAAAIB2QKNEAAAAAAAA4D8gAL1C////////////AINCgICAgICAgPj/AFQb/RQiCf3yASABRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCj/RQiCiAD/QADIP3yAf3wAf3wAf3wASIG/SEAvUL///////////8Ag0L/////////9/8AViAG/SEBvUL///////////8Ag0KAgICAgICA+P8AWnINACAD/QADcCAFIAj98gEgByAJ/fIBIAogA/0AAzD98gH98AH98AH98AEiBf0hAL1C////////////AINCgICAgICAgPj/AFoNACAF/SEBIgC9Qv///////////wCDQv/////////3/wBWIABEje21oPfGsD5lcg0AIAQgBv0LAwAgBCAF/QsDEEEBIQ0LIA0LIwEBfyAFRSADRSAERXJyBH9BAAUgACABIAIgAyAEIAUQDgsL2wUDAn8BfgV7IwBBEGsiBiQAAkAgAr0iCEIBfUL+////////B1YgCEIAUyAIQv///////////wCDQoCAgICAgIAIfUL/////////7/8AVnJxDQAgBv0MAAAAAAAAAAAAAAAAAAAAAP0LBAAgACABIAIgAyAGEA9FDQAgBisDCCIARCS4kbJFQ1VApEQkuJGyRUNVQCAAvUL///////////8AgyIIQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEAAAAAAAAAAAgCEKAgICAgICA+P8AVBsiAUQ5nVKiRt+RP6IQIiECIAT9AANQIQkgBisDACEAIAT9AAMQIQogAUQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gECkQJCEBIAT9AANgIAT9AANARAAAAAAAAAAARAAAAAAAAAAAIAJEkxB8Rfgbg0GiIgKjIAJEAAAAAAAAAABhG/0UIgv98gEgBP0AAwAgAEQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IAC9Qv///////////wCDQoCAgICAgID4/wBUG/0UIgz98gEgAUT4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAo/0UIg0gBP0AAyD98gH98AH98AH98AH9DP////////9//////////3/9Tv0MAAAAAAAA8H8AAAAAAADwf/3bASAE/QADcCAJIAv98gEgCiAM/fIBIA0gBP0AAzD98gH98AH98AH98AEiCf0M/////////3//////////f/1O/QwAAAAAAADwfwAAAAAAAPB//dsB/Q0AAQIDCAkKCxAREhMYGRob/VMNACAJ/SEAIAn9IQEiAEQAAAAAAADwPyAARAAAAAAAAAAAYhujIgC9Qv///////////wCDQv/////////3/wBWDQAgBSAAmjkDAEEBIQcLIAZBEGokACAHC+QHAgx8AX8CQCADKwN4IgcgAysDWCIIRAAAAAAAAAAAoiADKwMYIABEAAAAAAAAAAAgAL1C////////////AINCgICAgICAgPj/AFQbIgWiIAFEAAAAAAAAAAAgAb1C////////////AINCgICAgICAgPj/AFQbIgYgAysDOKKgIgGgoCIAvUL///////////8Ag0L/////////9/8AVg0AIAcgCCABoKAiAb1C////////////AINC//////////f/AFYgAEQAAAAAAAAAAGFyIAFEAAAAAAAAAABhcg0AIAMrA2AiCSADKwNAIgpEAAAAAAAAAACiIAMrAwAgBaIgBiADKwMgoqAiC6CgIACjIge9Qv///////////wCDQv/////////3/wBWDQAgAysDaCIMIAMrA0giDUQAAAAAAAAAAKIgAysDCCAFoiAGIAMrAyiioCIOoKAgAKMiCL1C////////////AINCgICAgICAgPj/AFoNACADKwNwIg8gAysDUCIQRAAAAAAAAAAAoiADKwMQIAWiIAYgAysDMKKgIgagoCAAoyIFvUL///////////8Ag0KAgICAgICA+P8AWg0AIAkgCiALoKAgAaMiCb1C////////////AINCgICAgICAgPj/AFoNACAMIA0gDqCgIAGjIgq9Qv///////////wCDQoCAgICAgID4/wBaDQAgDyAQIAagoCABoyIBvUL///////////8Ag0KAgICAgICA+P8AWg0ARAAAAAAAAAAAIQAgASAFoSIBRAAAAAAAAAAAYgRARAAAAAAAAAAAIAWhIAGjIQALIAkgB6EgAKIgB6AiAb1C////////////AINC//////////f/AFYNACAKIAihIACiIAigIgC9Qv///////////wCDQoCAgICAgID4/wBaDQAgASACoyIBvUL///////////8Ag0L/////////9/8AVg0AIAAgAqMiAL1C////////////AINCgICAgICAgPj/AFoNAEQAAAAAAIBmQCAARAAAAAAAgHZAoqFEGC1EVPshCUCiRAAAAAAAgGZAoxAjEB5E+MFjGtylXECiRAAAAAAAgFbAoCIARCS4kbJFQ1VApEQkuJGyRUNVQCAAvUL///////////8Ag0KAgICAgICA+P8AWBsgAUQAAAAAAIB2QKJEAAAAAACAZsCgIgG9Qv///////////wCDQv/////////3/wBWDQBEJLiRskVDVcClIgC9Qv///////////wCDQoCAgICAgID4/wBaDQAgBCAAOQMIIAQgATkDAEEBIRELIBELNgEBfyADRSAFRXIgB0UgC0VycgR/QQAFIAAgASACIAMgBCAFIAYgByAIQQBHIAkgCiALEBELC5wHAwh8An8BfgJAIARBAEwgBkEATHINACACRAAAAAAAAAAAIAK9Qv///////////wCDQoCAgICAgID4/wBUGyEQIAFEOZ1SokbfkT+iECIiAkSN7bWg98awPqVEje21oPfGsD4gAr1C////////////AINCgICAgICAgPj/AFgbRAAAAECmVFhBoiERRAAAAAAAAPD/IQIDQCAEIAUgFUECdGooAgAiFEsEQCABIAMgFEEEdGoiFCsDCEQAAABAplRYQaNE+MFjGtylTECioCIMRCS4kbJFQ1VApEQkuJGyRUNVQCAMvUL///////////8AgyIWQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEAAAAAAAAAAAgFkKAgICAgICA+P8AVBsiDEQ5nVKiRt+RP6IQIiENIAcrA1ghEiAUKwMAIQ4gBysDGCETIAxEJLiRskVDVUCkRCS4kbJFQ1XApUQ5nVKiRt+RP6JEAAAAAAAA4D+iRBgtRFT7Iek/oBApECQhD0EAIRQgBysDYCAHKwNARAAAAAAAAAAAIBAgDUSTEHxF+BuDQaIiDKMgDEQAAAAAAAAAAGEbIgyiIAcrAwAgACAOIBGjRPjBYxrcpUxAoqAiDUQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IA29Qv///////////wCDQoCAgICAgID4/wBUGyINoiAHKwMgIA9E+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKMiDqKgoKC9Qv///////////wCDQv/////////3/wBWDQIgBysDaCAHKwNIIAyiIAcrAwggDaIgBysDKCAOoqCgoL1C////////////AINCgICAgICAgPj/AFoNAiAHKwNwIAcrA1AgDKIgBysDECANoiAHKwMwIA6ioKCgIg+9Qv///////////wCDQoCAgICAgID4/wBaDQIgBysDeCASIAyiIBMgDaIgBysDOCAOoqCgoCIMvUL///////////8Ag0L/////////9/8AViAMRI3ttaD3xrA+ZXINAiAIBHwgCiAMoSINIAkgDKIgD6AiDiANIA5kGwUgDwsgDKMiDL1C////////////AINC//////////f/AFYNAiAMmiIMIAIgAiAMYxshAgsgFUEBaiIVIAZHDQALQQAhFCACvUL///////////8Ag0L/////////9/8AVg0AIAsgAjkDAEEBIRQLIBQL/qcBBBx/JHwDfiR7IwBBoARrIgMkAAJAIABFIAFFcg0AIAH9DAAAAAAAAEJAAAAAAAAAEED9CwMQIAH9DAAAAAAAAAAAAAAAAABgYED9CwMAIAFCADcDICAB/QwAAAAAAAAAAAAAAAAAAAAA/QsDKCAAKwMAIh69IkNC////////////AIMiQkIBfUL/////////B1QgQ0IAUyICcSBCQoCAgICAgID4/wBRciBCQoCAgICAgID4/wBWciBCQoCAgICAgIAIfUKAgICAgICA8P8AVCACcXINACAeRAAAAAAAAOA/oJwiHkQAAAAAAADwf2QgHkQAAAAAAADwf2NyRQ0AIB78AyICQQ9JIB4gArhicg0AIAArAwgiHr0iQ0L///////////8AgyJCQgF9Qv////////8HVCBDQgBTIgRxIEJCgICAgICAgPj/AFFyIEJCgICAgICAgPj/AFZyIEJCgICAgICAgAh9QoCAgICAgIDw/wBUIARxcg0AIB5EAAAAAAAA4D+gnCIeRAAAAAAAAPB/ZCAeRAAAAAAAAPB/Y3JFDQAgHvwDIgRBGEcgHiAEuGJyDQAgACsDECIevSJDQv///////////wCDIkJCAX1C/////////wdUIENCAFMiBHEgQkKAgICAgICA+P8AUXIgQkKAgICAgICA+P8AVnIgQkKAgICAgICACH1CgICAgICAgPD/AFQgBHFyDQAgHkQAAAAAAADgP6CcIh5EAAAAAAAA8H9kIB5EAAAAAAAA8H9jckUNACAeIB78AyIEuGIgAiAESXIgAiAEa0EwSXINACAAKwMYIh69IkNC////////////AIMiQkIBfUL/////////B1QgQ0IAUyIFcSBCQoCAgICAgID4/wBRciBCQoCAgICAgID4/wBWciBCQoCAgICAgIAIfUKAgICAgICA8P8AVCAFcXINACAeRAAAAAAAAOA/oJwiHkQAAAAAAADwf2QgHkQAAAAAAADwf2NyRQ0AIB4gHvwDIga4Yg0AIAArAyAiHr0iQ0L///////////8AgyJCQgF9Qv////////8HVCBDQgBTIgVxIEJCgICAgICAgPj/AFFyIEJCgICAgICAgPj/AFZyIEJCgICAgICAgAh9QoCAgICAgIDw/wBUIAVxcg0AIB5EAAAAAAAA4D+gnCIeRAAAAAAAAPB/ZCAeRAAAAAAAAPB/Y3JFDQAgHiAe/AMiCLhiIAIgCElyIAIgCGsgBkEJbElyDQAgACsDKCIevSJDQv///////////wCDIkJCAX1C/////////wdUIENCAFMiBXEgQkKAgICAgICA+P8AUXIgQkKAgICAgICA+P8AVnIgQkKAgICAgICACH1CgICAgICAgPD/AFQgBXFyDQAgHkQAAAAAAADgP6CcIh5EAAAAAAAA8H9kIB5EAAAAAAAA8H9jckUNACAeIB78AyIMuGINACAAKwMwIh69IkNC////////////AIMiQkIBfUL/////////B1QgQ0IAUyIFcSBCQoCAgICAgID4/wBRciBCQoCAgICAgID4/wBWciBCQoCAgICAgIAIfUKAgICAgICA8P8AVCAFcXINACAeRAAAAAAAAOA/oJwiHkQAAAAAAADwf2QgHkQAAAAAAADwf2NyRQ0AIB4gHvwDIgW4YiACIAVJciACIAVrIAxBBmxJcg0AIAArAzgiHr0iQ0L///////////8AgyJCQgF9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oAEgA/0MAAAAAAAAAAAAAAAAAAAAAP0LA6gBIANBADoAyAEgA0IANwPAASADQoCAgICAgID4PzcDuAEgA/0MAAAAAAAAAAAAAAAAAAAAAP0LA9ABIANCgICAgICAgPg/NwPgASADQQA6APgBIAP9DAAAAAAAAAAAAAAAAAAAAAD9CwPoASAD/QwAAAAAAAAAAAAAAAAAAAAA/QsDgAIgA0EAOgCQAiADIAA2AkwgAyAGIABB2AFsaiICNgJIIAMCf0EAIAIrAwgiHr0iQ0L///////////8AgyJCQgF9Qv////////8HVCBDQgBTIgVxIEJCgICAgICAgPj/AFFyIEJCgICAgICAgPj/AFZyIEJCgICAgICAgAh9QoCAgICAgIDw/wBUIAVxcg0AGkEAIB5EAAAAAAAA4D+gnCIeRAAAAAAAAPB/ZCAeRAAAAAAAAPB/Y3JFDQAaQQAgHiAe/AMiBbhiDQAaIAggBUHIAGxqQQAgBSANSRsLNgJQIAL9AAOgASFFIAMgAisDsAE5A2ggAyBF/QsDWEEAIQUCQCAERSAgRAAAAAAAAAAAZXINACADKwNYIR4gBCsDACEjIAMrA2AiH0QkuJGyRUNVQKREJLiRskVDVUAgH71C////////////AIMiQkKAgICAgICA+P8AWBtEJLiRskVDVcClRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6BEGC1EVPsh6T8gQkKAgICAgICA+P8AVBsQKRAkISEgBCsDYCAEKwNAIAMrA2giH0QAAAAAAAAAACAfvUL///////////8Ag0KAgICAgICA+P8AVBsiH6IgIyAgIB5EAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAevUL///////////8Ag0KAgICAgICA+P8AVBuiIh6iIAQrAyAgICAhRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjoiIjoqCgoCIhvUL///////////8Ag0L/////////9/8AVg0AIAQrA2ggBCsDSCAfoiAEKwMIIB6iICMgBCsDKKKgoKAiIr1C////////////AINC//////////f/AFYNACAEKwN4IAQrA1ggH6IgBCsDGCAeoiAjIAQrAziioKCgIh69IkJCAX1C/v///////wdWIEJCAFMgQkL///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0AIAMgIiAeozkDmAEgAyAhIB6jOQOQAUEBIQULIAMgBToAoAEgAysDaCEeIAMrA2AhHyADIAMrA1giI0QAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/ICO9Qv///////////wCDQoCAgICAgID4/wBUGzkDcCADRAAAAAAAAAAAIB5EAAAAAAAAAAAgHr1C////////////AINCgICAgICAgPj/AFQbIB9EJLiRskVDVUCkRCS4kbJFQ1VAIB+9Qv///////////wCDIkJCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQAAAAAAAAAACBCQoCAgICAgID4/wBUGyIeRDmdUqJG35E/ohAiRJMQfEX4G4NBoiIfoyAfRAAAAAAAAAAAYRs5A4ABIAMgHkQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gECkQJET4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAozkDeCADQQE6AIgBAkAgAygCSCICKwMAIh69Qv///////////wCDQv/////////3/wBYBEAgHp0iHiAe/AYiQrlhDQELQgAhQgsgAyBCNwOoAQJAIAIrA1giH71C////////////AINCgICAgICAgPj/AFQNAEQAAAAAAAAAACEfIAIrA2AgAisDaKAiHr1C////////////AINC//////////f/AFYNAEQAAAAAAAAAAAJ8IB69IkRCNIinQf8PcSICQf8PRgRAIB5EAAAAAACAdkCiIh4gHqMMAQsgREIBhiJCQoCAgICAgMD2gH9YBEAgHkQAAAAAAAAAAKIgHiBCQoCAgICAgMD2gH9RGwwBCwJ+IAJFBEBBACECIERCDIYiQkIAWQRAA0AgAkEBayECIEJCAYYiQkIAWQ0ACwsgREEBIAJrrYYMAQsgREL/////////B4NCgICAgICAgAiECyFCIAJBhwhKBEADQAJAIEJCgICAgICAoAt9IkNCAFMNACBDIkJCAFINACAeRAAAAAAAAAAAogwDCyBCQgGGIUIgAkEBayICQYcISg0AC0GHCCECCwJAIEJCgICAgICAoAt9IkNCAFMNACBDIkJCAFINACAeRAAAAAAAAAAAogwBCyBCQv////////8HWARAA0AgAkEBayECIEJCgICAgICAgARUIEJCAYYhQg0ACwsgREKAgICAgICAgIB/gyBCQoCAgICAgIAIfSACrUI0hoQgQkEBIAJrrYggAkEAShuEvwsiHkQAAAAAAIB2QKAgHiAeRAAAAAAAAAAAYxsiHiAeRAAAAAAAAAAAYRshHwsgAyAfOQPQASADIB9EOZ1Sokbfkb+iIh4QIjkD4AEgAyAeECc5A9gBIAkgAEHQAWxqIANByABqQckB/AoAACAAQQFqIgAgEkcNAAsLIANBuAJqIQkgA0HYAmohBiMAQSBrIgAkACAMKAIAIgIgDCgCBCIFRwRAA0ACQCACKAIARQ0AIAIoAggiCEUNACACLQBYQQFHDQAgBisDCCEfIAkoAhAhBCAJKwMIISACQCACLQCAAUEBRgRAIAIrA3giHr0iQkIBfUL/////////B1QgQkL///////////8Ag0KAgICAgICACH1CgICAgICAgPD/AFQgQkIAWXFyDQELIAIrAxgiHkQ5nVKiRt+RP6IQIkSTEHxF+BuDQaIgH0QAAAAAAACAQKKjIiO9IkJCAX1C/v///////wdWIEJCAFMgQkL///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0BRAAAAAAAAPA/IR8CQCAERSAgRAAAAAAAAAAAZXINAAJ8IAItAEBBAUYEQCACKwM4IR4gAisDKCEkIAIrAzAMAQsgHkQkuJGyRUNVQKREJLiRskVDVUAgHr1C////////////AIMiQkKAgICAgICA+P8AWBtEJLiRskVDVcClRAAAAAAAAAAAIEJCgICAgICAgPj/AFQbIiFEOZ1SokbfkT+iECIhHkQAAAAAAAAAACACKwMgIiJEAAAAAAAAAAAgIr1C////////////AINCgICAgICAgPj/AFQbIB5EkxB8Rfgbg0GiIh6jIB5EAAAAAAAAAABhGyEeIAIrAxAiIkQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/ICK9Qv///////////wCDQoCAgICAgID4/wBUGyEkICFEJLiRskVDVUCkRCS4kbJFQ1XApUQ5nVKiRt+RP6JEAAAAAAAA4D+iRBgtRFT7Iek/oBApECRE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKMLISEgBCsDeCAEKwNYIB6iIAQrAxggJKIgISAEKwM4oqCgoCIevSJCQgF9Qv7///////8HViBCQgBTIEJC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAgIB6jIh5EAAAAAAAA8D8gHiAevSJCQgBTG0QAAAAAAADwPyBCQv///////////wCDQoCAgICAgIAIfUKAgICAgICA8P8AVBsgQkIBfUL/////////B1QbIR8LRAAAAAAAAPA/ICOjIB+iIh69IkJCAX1C/v///////wdWIEJCAFMgQkL///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0BIAJBAToAgAEgAiAeOQN4IAIgHzkDcCACICM5A2gLIABBEGogAkEBIAkgBiAIIB4gDCAHEBUgAiAA/QADEP0LA6ABIAJBAToAsAEgACACQQAgCSAGIAIoAgggHiAMIAcQFSACIAD9AAMA/QsDuAEgAkEBOgDIAQsgAkHQAWoiAiAFRw0ACwsgAEEgaiQAIA9BBHFBAnZxIRBBACECQQAhAEEAIQ0jAEHQAGsiByQAIANBPGoiFyIPQQA2AgggD0IANwIAIAwoAgQiBCAMKAIAIgVrQdABbSERAkACQAJAIAQgBUcEQCARQYCAgBBPDQEgEUEHdCIAEC0iAiAAaiENIAIhAANAAkAgDCgCACAUQdABbGoiBCgCACIFRQ0AIAQoAggiCkUNACAKLQAYQQFHDQAgBC0AWEEBRw0AIAYrAwghHiAJKAIQIQggCSsDCCEfAkAgBC0AgAFBAUYEQCAEKwN4IiG9IkJCAX1C/////////wdUIEJC////////////AINCgICAgICAgAh9QoCAgICAgIDw/wBUIEJCAFlxcg0BCyAEKwMYIiBEOZ1SokbfkT+iECJEkxB8Rfgbg0GiIB5EAAAAAAAAgECioyIjvSJCQgF9Qv7///////8HViBCQgBTIEJC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENAUQAAAAAAADwPyEeAkAgCEUgH0QAAAAAAAAAAGVyDQACfCAELQBAQQFGBEAgBCsDOCEhIAQrAyghJCAEKwMwDAELICBEJLiRskVDVUCkRCS4kbJFQ1VAICC9Qv///////////wCDIkJCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQAAAAAAAAAACBCQoCAgICAgID4/wBUGyIgRDmdUqJG35E/ohAiISFEAAAAAAAAAAAgBCsDICIiRAAAAAAAAAAAICK9Qv///////////wCDQoCAgICAgID4/wBUGyAhRJMQfEX4G4NBoiIhoyAhRAAAAAAAAAAAYRshISAEKwMQIiJEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAivUL///////////8Ag0KAgICAgICA+P8AVBshJCAgRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQKRAkRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjCyEgIAgrA3ggCCsDWCAhoiAIKwMYICSiICAgCCsDOKKgoKAiIL0iQkIBfUL+////////B1YgQkIAUyBCQv///////////wCDQoCAgICAgIAIfUL/////////7/8AVnJxDQAgHyAgoyIeRAAAAAAAAPA/IB4gHr0iQkIAUxtEAAAAAAAA8D8gQkL///////////8Ag0KAgICAgICACH1CgICAgICAgPD/AFQbIEJCAX1C/////////wdUGyEeC0QAAAAAAADwPyAjoyAeoiIhvSJCQgF9Qv7///////8HViBCQgBTIEJC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENASAEQQE6AIABIAQgITkDeCAEIB45A3AgBCAjOQNoCyAEQaABQcgAIAQtALABIgsbaisDACEeIARBqAFB0AAgCxtqKwMAIR8gB0IANwNIAn8gBSsDIBAlRQRAIAhFDQJEAAAAAAAAAAAhIkQAAAAAAADwPyEeIAUrAygiH0QAAAAAAADwPyAfRAAAAAAAAAAAYhshIyAFKwNIISYgBUFAayAGKwNYISQCQCAKKwMIIiBEAAAAAAAAAABlBEBEAAAAAAAAAAAhHwwBCyAKKwMQIh9EAAAAAAAAAABlBEBEAAAAAAAAAAAhHwwBCyAGKwMoIiVEAAAAAAAAAABlBEBEAAAAAAAAAAAhHwwBCyAfICMgJaIgJKIiIqIiH0QAAAAAAAAAACAfvUL///////////8Ag0KAgICAgICA+P8AVBshHyAg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RAAAAAAAAAAAICFEAAAAAAAAAAAgIb1C////////////AINCgICAgICAgPj/AFQbIB5EJLiRskVDVUCkRCS4kbJFQ1VAIB69Qv///////////wCDIkJCgICAgICAgPj/AFgbRCS4kbJFQ1XApSIhRAAAAAAAAAAAIEJCgICAgICAgPj/AFQiEBsiMkQ5nVKiRt+RP6IQIkSTEHxF+BuDQaIiM6MgM0QAAAAAAAAAAGEbOQMQIAIgH0QAAAAAAADwPyAeRDmdUqJG35E/ohAiIh9Eje21oPfGsD6lRI3ttaD3xrA+IB+9Qv///////////wCDQoCAgICAgID4/wBYG0QAAABAplRYQaKjRPjBYxrcpUxAoqAiH0QAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IB+9Qv///////////wCDQoCAgICAgID4/wBUGyAxoTkDGCACIDJEJLiRskVDVUCkRCS4kbJFQ1XApUQ5nVKiRt+RP6JEAAAAAAAA4D+iRBgtRFT7Iek/oBApECRE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKM5AwggIUQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gRBgtRFT7Iek/IBAbECkQJCEfIAIgHkQecBggy9biPqAiHkQkuJGyRUNVQKREJLiRskVDVUAgHr1C////////////AINCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gRBgtRFT7Iek/IB69Qv///////////wCDQoCAgICAgID4/wBUGxApECRE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKMgH0T4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAo6E5AyAgCf0AAzAhRSACICY5A2AgAiAlOQNYIAIgRf0LA0ggBysDiAEhHiACICQ5A3AgAiAeOQNoIAIgAP0AA5AG/QsDeCACIABBqAhqIgcpAwA3A4gBIAIgB/0AAwj9CwOQASAA/QADqAYhRSAAKQOgBiFCIAIgIjkDuAEgAiBCNwOgASACIEX9CwOoASAHKwMIISEgBysDACEiAkAgKEQAAAAAAAAAAGUgKUQAAAAAAAAAAGVyBEAgCSsDMCIeISUgCSsDOCIgISYgHiIjISggICIfISkMAQsgK/0U/QwAAAAAAADwvwAAAAAAAPA//fIBICsgIKL9FP3xASJFICX9FCJG/fIBIkcgKv0U/e0BICogI6IiHv0U/fEBIkkgJv0UIkv98gH98AEgCf0AAzAiTCBF/Q0ICQoLDA0ODwgJCgsMDQ4PIk398AEiTv0hASEpIEUgS/3yASJFIEkgRv3yAf3xASBMIEX9DQABAgMEBQYHAAECAwQFBgciRv3wASJJ/SEBISggTv0hACEfIEn9IQAhIyBHICogHqEiHiAmov0U/fABIE398AEiR/0hASEmIEUgHiAlov0U/fEBIEb98AEiRf0hASElIEf9IQAhICBF/SEAIR4LIAJBADYCoAQgAiApOQOoAiACICg5A6ACIAIgHzkDiAIgAiAjOQOAAiACICY5A+gBIAIgJTkD4AEgAiAgOQPIASACIB45A8ABIAIgISApRAAAAECmVFhBo0T4wWMa3KVMQKKgOQO4AiACICEgH0QAAABAplRYQaNE+MFjGtylTECioDkDmAIgAiAhICZEAAAAQKZUWEGjRPjBYxrcpUxAoqA5A/gBIAIgISAgRAAAAECmVFhBo0T4wWMa3KVMQKKgOQPYASACICIgKESN7bWg98awPiAhRDmdUqJG35E/ohAiIh8gH0SN7bWg98awPmMbRAAAAECmVFhBoiIfo0T4wWMa3KVMQKKgOQOwAiACICIgIyAfo0T4wWMa3KVMQKKgOQOQAiACICIgJSAfo0T4wWMa3KVMQKKgOQPwASACICIgHiAfo0T4wWMa3KVMQKKgOQPQAUEAIQcgAEEwakEAQYAB/AsAIABBADYCLCAA/QwAAAAAAAAAAAAAAAAAAAAA/QsDGCAA/QwAAAAAAAAAAAAAAAAAAAAA/QsDCCAnvUL///////////8AgyJCUCBCQoCAgICAgID4/wBRciBCQoCAgICAgID4/wBWciEQRAAAAAAAAPA/RAAAAAAAAAAAIBVBAXEiCRshJSAvIC4gBiAAQQhqEAwhGCAAKwO4CCIeRAAAAAAAAAAAIB69Qv///////////wCDQoCAgICAgID4/wBUGyEmIAArA7AIIihEOZ1SokbfkT+iECIiHkSN7bWg98awPqVEje21oPfGsD4gHr1C////////////AINCgICAgICAgPj/AFgbRAAAAECmVFhBoiEpIAYrAwAhKiAGKwN4ISsgBisDWCEuIAYrAzghLyAGKwMYITAgBisDcCExIAYrA1AhMiAGKwMwITMgBisDECE4IAYrA2ghOSAGKwNIITogBisDKCE7IAYrAwghPCAGKwNgIT0gBisDQCE+IAYrAyAhPyAEKwOgASFAIABBgAlqIQIgACsDqAghQQNAID0gPkQAAAAAAAAAACAmICggDiAHKAKoCSIGQQR0IgRqIhYrAwhEAAAAQKZUWEGjRPjBYxrcpUxAoqAiHkQkuJGyRUNVQKREJLiRskVDVUAgHr1C////////////AIMiQkKAgICAgICA+P8AWBtEJLiRskVDVcClRAAAAAAAAAAAIEJCgICAgICAgPj/AFQbIh9EOZ1SokbfkT+iECJEkxB8Rfgbg0GiIh6jIB5EAAAAAAAAAABhGyIeoiAqIEEgFisDACApo0T4wWMa3KVMQKKgIiBEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAgvUL///////////8Ag0KAgICAgICA+P8AVBsiIKIgPyAfRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQKRAkRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjIiOioKCgIiG9Qv///////////wCDQv/////////3/wBWDQMgOSA6IB6iIDwgIKIgOyAjoqCgoCIivUL///////////8Ag0KAgICAgICA+P8AWg0DIDEgMiAeoiA4ICCiIDMgI6KgoKAiH71C////////////AINCgICAgICAgPj/AFoNAyArIC4gHqIgMCAgoiAvICOioKCgIiC9Qv///////////wCDQv/////////3/wBWICBEje21oPfGsD5lcg0DIB8hHiAkRAAAAAAAAAAAYgRAIEAgIKEiIyAkICCiIB6gIh4gHiAjYxshHgsgAEEsaiAGaiIWLQAARQRAIABBMGogBkEFdGoiBiAgOQMYIAYgHjkDECAGICI5AwggBiAhOQMAIBZBAToAACAQICwgIUQAAAAAAADwPyAgoyIeokQAAAAAAADwP6BEAAAAAAAA4D+ioiIjvUL///////////8Ag0L/////////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AGsgBjkDACAAQfwAayAUNgIAIABB8ABrIA5B8AD8CgAAIAsgDU0EQCAMIAgQHCEKIAAgARAcBEAgCCEBIAwhACAKRQ0FDAMLIAoNAQsLIAwgCCACIBAQFkEAIQMMAQsLCyAOQfABaiQAC8sMAwN/C3wBfiMAQfAAayICJAAgASgCeCEDIAICf0EAIAEtAHxBAUcNABpBACADRQ0AGkEAIAErA4ABRAAAAAAAAAAAZEUNABpBACABKwOIAUQAAAAAAAAAAGRFDQAaQQAgASsDkAEiB0QAAAAAAAAAAGENABogB71C////////////AINCgICAgICAgPj/AFQLOgBvIAIgAS0AfSADQQBHcToAbiACIAE2AmQgAiACQe4AajYCaCACIAJB7wBqNgJgIAErAzghCyABKwMwIQ1EAAAAAAAA8D8hCQJAAkAgASsDGCIIRAAAAAAAAAAAZQ0AIAErAyAiB0QAAAAAAAAAAGUNACABKwMoIgVEAAAAAAAAAABlDQAgByAFIA2iIAuiIgWiIgdEAAAAAAAAAAAgB71C////////////AINCgICAgICAgPj/AFQbIQcgCCAFoiIIRAAAAAAAAAAAIAi9Qv///////////wCDQoCAgICAgID4/wBUGyEIIAErA2AiBb0iEEIBfUL+////////B1YgEEIAUyAQQv///////////wCDQoCAgICAgIAIfUL/////////7/8AVnJxDQEgASsDcCIKRAAAAAAAAAAAZCIDIAErA2giBkQAAAAAAAAAAGRyRQ0BIAcgCCAHIAhkGyIMRAAAAAAAAAAAZEUNASAFIAyiIgW9IhBCAX1C/v///////wdWIBBCAFMgEEL///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0BIAogBaMgBiAFo0QAAAAAAADwPyAFIAZjG0QAAAAAAADwPyAGRAAAAAAAAAAAZBsiCSAFIAmiIApkGyAJIAMbIglEAAAAAAAA8D9hBEBEAAAAAAAA8D8hCQwCCyAHIAmiIQcgCCAJoiEIDAELRAAAAAAAAAAAIQdEAAAAAAAAAAAhCAsCfEQAAAAAAAAAACAHRAAAAAAAAOA/oiIFRAAAAAAAAAAAZQ0AGkQAAAAAAAAAACEGRAAAAAAAAAAAIAhEAAAAAAAA4D+iIg9EAAAAAAAAAABlDQAaIAErA1AhCiABKwNIIQwgBSABKAJYIgMEfCADKwMAIQYgAysDCAVEAAAAAAAAAAALoiEFIA8gBqIiBkQAAAAAAAAAAGEEQEQAAAAAAAAAACAFRAAAAAAAAAAAYQ0BGgsgBpogDKIgBSAKoqEhDiAMIAWiIAYgCqKhCyEKAnwgASgCXCIDRQRARAAAAAAAAAAAIQVEAAAAAAAAAAAMAQtEAAAAAAAAAAAhBUQAAAAAAAAAACAJIAsgDSADKwMAoqKiIgZEAAAAAAAAAABhDQAaIAYgAysDCEQ5nVKiRt+RP6IiCxAioiEFIAYgCxAnogshBiABKwMAIQ0gASsDCCELIAIgASsDECIMOQNYIAIgCyAOIAWgIg9EAAAAQKZUWEGjRPjBYxrcpUxAoqA5A1AgAiANIAogBqAiCiALRDmdUqJG35E/ohAiIg5Eje21oPfGsD6lRI3ttaD3xrA+IA69Qv///////////wCDQoCAgICAgID4/wBYG0QAAABAplRYQaIiDqNE+MFjGtylTECioDkDSCAC/QwAAAAAAAAAAAAAAAAAAAAA/QsDKEEAIQMgAkHgAGogAkHIAGogAkEoahAYBEAgAiACKQApNwM4IAIgAikAMDcAPyACLQAoIQRBASEDCyAAQQA6AKABIABBADoAiAEgAEEAOgCAASAAQQA6AHAgAEEAOgBoIABBADoAWCAAIAQ6AAAgACACKQM4NwABIAAgAikAPzcACCAAIA85AzggACAKOQMwIAAgCTkDKCAAIAc5AyAgACAIOQMYIAAgAzoAECAAIAL9AANQ/QsDSCAAIAIpA0g3A0AgAS0AmAFBAUYEQCACIAw5AyAgAiAFRAAAAECmVFhBo0T4wWMa3KVMQKIgC6A5AxggAiANIAYgDqNE+MFjGtylTECioDkDECAC/QwAAAAAAAAAAAAAAAAAAAAA/QsDACACQeAAaiACQRBqIAIQGARAIAAgAv0AAwD9CwNYIABBAToAaAsgAEEBOgCAASAAIAU5A3ggACAGOQNwIAAgAikDIDcDmAEgACAC/QADEP0LA4gBIABBAToAoAELIAJB8ABqJAALuQsDB3wCfwF+AkAgAgJ8AkAgACgCAC0AAEEBRw0AIAAoAgQiCygCeCgCECIKRQ0AIAErAwgiA0QkuJGyRUNVQKREJLiRskVDVUAgA71C////////////AIMiDEKAgICAgICA+P8AWBtEJLiRskVDVcClRAAAAAAAAAAAIAxCgICAgICAgPj/AFQbIgREOZ1SokbfkT+iECIhBiABKwMQIQMgCisDWCEHIAErAwAhBSAKKwMYIQggBEQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gECkQJCEEIAorA2AgCisDQEQAAAAAAAAAACADRAAAAAAAAAAAIAO9Qv///////////wCDQoCAgICAgID4/wBUGyAGRJMQfEX4G4NBoiIDoyADRAAAAAAAAAAAYRsiA6IgCisDACAFRAAAAAAAgGZAoEQAAAAAAIB2QKNEAAAAAAAA4D8gBb1C////////////AINCgICAgICAgPj/AFQbIgWiIAorAyAgBET4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAoyIEoqCgoCIGvUL///////////8Ag0L/////////9/8AVg0AIAorA2ggCisDSCADoiAKKwMIIAWiIAorAyggBKKgoKAiCb1C////////////AINCgICAgICAgPj/AFoNACAKKwNwIAorA1AgA6IgCisDECAFoiAKKwMwIASioKCgvUL///////////8Ag0KAgICAgICA+P8AWg0AIAorA3ggByADoiAIIAWiIAQgCisDOKKgoKAiA71C////////////AINC//////////f/AFYgA0SN7bWg98awPmVyDQAgBkQAAAAAAADwPyADoyIDokQAAAAAAADwP6BEAAAAAAAA4D+iIAsrA4ABoiIFvUL///////////8Ag0L/////////9/8AVg0ARAAAAAAAAPA/IAkgA6KhRAAAAAAAAOA/oiALKwOIAaIiBL1C////////////AINCgICAgICAgPj/AFoNACALKwOQASIDvUL///////////8AgyIMQgF9Qv7///////8HViAMQoCAgICAgIAIfUL/////////7/8AVnENACACIAUgA6M5AwAgBCADowwBC0EAIQogACgCCC0AAEEBRw0BIAAoAgQoAngiCygCFCIARQ0BIAsrAwAiA0QAAAAAAAAAAGUNASABKwMAIQUgACsDACEGIAErAwgiBEQkuJGyRUNVQKREJLiRskVDVUAgBL1C////////////AIMiDEKAgICAgICA+P8AWBtEJLiRskVDVcClRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6BEGC1EVPsh6T8gDEKAgICAgICA+P8AVBsQKRAkIQcgACsDYCAAKwNAIAErAxAiBEQAAAAAAAAAACAEvUL///////////8Ag0KAgICAgICA+P8AVBsiBKIgBiADIAVEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAFvUL///////////8Ag0KAgICAgICA+P8AVBuiIgWiIAArAyAgAyAHRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjoiIDoqCgoCIGvUL///////////8Ag0L/////////9/8AVg0BIAArA2ggACsDSCAEoiAAKwMIIAWiIAMgACsDKKKgoKAiB71C////////////AINC//////////f/AFYNASAAKwN4IAArA1ggBKIgACsDGCAFoiADIAArAziioKCgIgO9IgxCAX1C/v///////wdWIAxCAFMgDEL///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0BIAIgBiADozkDACAHIAOjCzkDCEEBIQoLIAoLiwYDAnwDfwJ+IwBBgAFrIgckACAAIAEgAhAbAkACQCADKwMIIgQgAisDCCIFYgRAIAQgBWMNAQwCCyACKAIAIQZEAAAAAAAAAAAhBUQAAAAAAAAAACEEIAMoAgAiCARAIAgoAgArA3AhBAsgBgRAIAYoAgArA3AhBQsgBCAFYgRAIAQgBWMNAQwCCyAIBEAgCCkDYCEJCyAGBEAgBikDYCEKCyAJIApSBEAgCSAKUw0BDAILRAAAAAAAAAAAIQQgCARAIAgoAgArA5gBIQQLIAYEfCAGKAIAKwOYAQVEAAAAAAAAAAALIARkRQ0BCyAHIAJBgAH8CgAAIAIgA0GAAfwKAAAgAyAHQYAB/AoAAAJAIAIrAwgiBCABKwMIIgViBEAgBCAFYw0BDAILIAEoAgAhA0QAAAAAAAAAACEFRAAAAAAAAAAAIQQgAigCACIGBEAgBigCACsDcCEECyADBEAgAygCACsDcCEFCyAEIAViBEAgBCAFYw0BDAILQgAhCkIAIQkgBgRAIAYpA2AhCQsgAwRAIAMpA2AhCgsg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IAAgAUEAEDINABpBACABRQ0AGiMAQRBrIgYkACAGIAEoAgAiB0EIaygCACIENgIMIAYgASAEajYCBCAGIAdBBGsoAgA2AgggBigCCCIHQfDTAEEAEDIhBCAGKAIEIQgCQCAEBEAgBigCDCEBIwBBQGoiAyQAIANBQGskAEEAIAggARshAwwBCyMAQUBqIgQkACABIAhOBEAgBEIANwIUIARBADYCECAEQfDTADYCDCAEIAc2AgQgBEIANwIcIARCADcCJCAEQgA3AiwgBEEANgI8IARCgYCAgICAgIABNwI0IAQgATYCCCAHIARBBGogCCAIQQFBACAHKAIAKAIUEQYAIAFBACAEKAIcGyEDCyAEQUBrJAAgAw0AIwBBQGoiAyQAIANBADYCECADQcDTADYCDCADIAE2AgggA0Hw0wA2AgRBACEBIANBFGpBAEEn/AsAIANBADYCPCADQQE6ADsgByADQQRqIAhBAUEAIAcoAgAoAhgRBQACQAJAAkAgAygCKA4CAAECCyADKAIYQQAgAygCJEEBRhtBACADKAIgQQFGG0EAIAMoAixBAUYbIQEMAQsgAygCHEEBRwRAIAMoAiwNASADKAIgQQFHDQEgAygCJEEBRw0BCyADKAIUIQELIANBQGskACABIQMLIAZBEGokAEEAIANFDQAaIAIoAgAiAUUNASAFQRhqQQBBOPwLACAFQQE6AEsgBUF/NgIgIAUgADYCHCAFIAM2AhQgBUEBNgJEIAMgBUEUaiABQQEgAygCACgCHBECACAFKAIsIgBBAUYEQCACIAUoAiQ2AgALIABBAUYLIAVB0ABqJAAPCyAFQYQJNgIIIAVB5wM2AgQgBUGRCDYCAAALdgEBfyAAKAIkIgNFBEAgACACNgIYIAAgATYCECAAQQE2AiQgACAAKAI4NgIUDwsCQAJAIAAoAhQgACgCOEcNACAAKAIQIAFHDQAgACgCGEECRw0BIAAgAjYCGA8LIABBAToANiAAQQI2AhggACADQQFqNgIkCwsYACAAIAEoAghBABAyBEAgASACIAMQNAsLMQAgACABKAIIQQAQMgRAIAEgAiADEDQPCyAAKAIIIgAgASACIAMgACgCACgCHBECAAuaAQAgAEEBOgA1AkAgAiAAKAIERw0AIABBAToANAJAIAAoAhAiAkUEQCAAQQE2AiQgACAD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\"","// maplibre-gl-layers - MapLibre's layer extension library enabling\n// the display, movement, and modification of large numbers of dynamic sprite images\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT\n// https://github.com/kekyo/maplibre-gl-layers\n\nimport type { Releaseable } from './internalTypes';\nimport type { SpriteLayerCalculationVariant } from './types';\nimport wasmConfig from './wasm/config.json' assert { type: 'json' };\n\n//////////////////////////////////////////////////////////////////////////////////////\n\nconst BUFFER_POOL_ENTRY_TTL_MS = 5_000;\nconst BUFFER_POOL_SWEEP_INTERVAL_MS = 3_000;\nconst BUFFER_POOL_MAX_REUSE_RATIO = 2;\nconst CONFIGURED_PTHREAD_POOL_SIZE =\n  typeof wasmConfig?.pthreadPoolSize === 'number'\n    ? Math.max(0, Math.trunc(wasmConfig.pthreadPoolSize))\n    : 0;\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * `fromLngLat` function parameter\n */\nexport type WasmFromLngLat = (\n  lng: number,\n  lat: number,\n  altitude: number,\n  outPtr: number\n) => boolean;\n\n/**\n * `project` function parameter\n */\nexport type WasmProject = (\n  lng: number,\n  lat: number,\n  altitude: number,\n  worldSize: number,\n  matrixPtr: number,\n  outPtr: number\n) => boolean;\n\n/**\n * `unproject` function parameter\n */\nexport type WasmUnproject = (\n  x: number,\n  y: number,\n  worldSize: number,\n  matrixPtr: number,\n  outPtr: number\n) => boolean;\n\n/**\n * `calculatePerspectiveRatio` function parameter\n */\nexport type WasmCalculatePerspectiveRatio = (\n  lng: number,\n  lat: number,\n  altitude: number,\n  cachedMercatorPtr: number,\n  cameraToCenterDistance: number,\n  matrixPtr: number,\n  outPtr: number\n) => boolean;\n\nexport type WasmProjectLngLatToClipSpace = (\n  lng: number,\n  lat: number,\n  altitude: number,\n  matrixPtr: number,\n  outPtr: number\n) => boolean;\n\nexport type WasmCalculateBillboardDepthKey = (\n  centerX: number,\n  centerY: number,\n  worldSize: number,\n  inverseMatrixPtr: number,\n  mercatorMatrixPtr: number,\n  outPtr: number\n) => boolean;\n\nexport type WasmCalculateSurfaceDepthKey = (\n  baseLng: number,\n  baseLat: number,\n  baseAltitude: number,\n  displacementPtr: number,\n  displacementCount: number,\n  indexPtr: number,\n  indexCount: number,\n  mercatorMatrixPtr: number,\n  applyBias: number,\n  biasNdc: number,\n  minClipZEpsilon: number,\n  outPtr: number\n) => boolean;\n\nexport type WasmPrepareDrawSpriteImages = (\n  paramsPtr: number,\n  resultPtr: number\n) => boolean;\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Wasm raw pointer type.\n */\nexport type Pointer = number;\n\n/**\n * An array element type that createTypedBuffer.\n * @param TArray - A type for ArrayBufferView (ex: Float64Array)\n */\nexport type TypedArrayElement<TArray> = TArray extends {\n  [index: number]: infer T;\n}\n  ? T\n  : never;\n\n/**\n * Typed ArrayBufferView.\n * @param TArray - A type for ArrayBufferView (ex: Float64Array)\n */\nexport interface TypedArrayBufferView<TArray> extends ArrayBufferView {\n  /**\n   * Copy in an array.\n   * @param from An array.\n   */\n  readonly set: (from: ArrayLike<TypedArrayElement<TArray>>) => void;\n  readonly length: number;\n}\n\n/**\n * TypedArrayBuffer view constructor type.\n * @param TArray - A type for ArrayBufferView (ex: Float64Array)\n */\nexport type TypedArrayConstructor<TArray extends TypedArrayBufferView<TArray>> =\n  {\n    readonly BYTES_PER_ELEMENT: number;\n    new (buffer: ArrayBuffer, byteOffset: number, length: number): TArray;\n  };\n\n/**\n * The BufferHolder, capsule both wasm raw memory pointer and ArrayBufferBuffer.\n * @param TArray - A type for ArrayBufferView (ex: Float64Array)\n */\nexport interface BufferHolder<TArray extends TypedArrayBufferView<TArray>> {\n  /**\n   * Element count (Float64Array: mod 8)\n   */\n  readonly length: number;\n  /**\n   * Prepare and get the raw pointer and the buffer reference.\n   * @returns The raw pointer and the buffer reference.\n   */\n  readonly prepare: () => { ptr: Pointer; buffer: TArray };\n  /**\n   * Release the buffer.\n   * @returns\n   */\n  readonly release: () => void;\n}\n\n/**\n * Wasm host reference.\n */\nexport interface WasmHost {\n  /**\n   * Helper for wasm interoperation buffer.\n   * @param TArray - A type for ArrayBufferView (ex: Float64Array)\n   * @param ArrayType - ArrayBufferView constructor\n   * @param elements - Buffer element count or copy in data array.\n   */\n  readonly allocateTypedBuffer: <TArray extends TypedArrayBufferView<TArray>>(\n    ArrayType: TypedArrayConstructor<TArray>,\n    elements: number | ArrayLike<TypedArrayElement<TArray>>\n  ) => BufferHolder<TArray>;\n\n  // ProjectionHost related functions.\n  readonly fromLngLat: WasmFromLngLat;\n  readonly project: WasmProject;\n  readonly unproject: WasmUnproject;\n  readonly calculatePerspectiveRatio: WasmCalculatePerspectiveRatio;\n  readonly projectLngLatToClipSpace: WasmProjectLngLatToClipSpace;\n\n  // CalculationHost related functions.\n  readonly calculateBillboardDepthKey: WasmCalculateBillboardDepthKey;\n  readonly calculateSurfaceDepthKey: WasmCalculateSurfaceDepthKey;\n  readonly prepareDrawSpriteImages?: WasmPrepareDrawSpriteImages;\n}\n\nexport type WasmVariant = SpriteLayerCalculationVariant;\n\n//////////////////////////////////////////////////////////////////////////////////////\n\ntype WasmBinaryVariant = Exclude<WasmVariant, 'disabled'>;\n\ntype WasmAssetKind = 'wasm' | 'js' | 'worker';\n\nconst WASM_ASSET_FILES: Record<\n  WasmBinaryVariant,\n  Partial<Record<WasmAssetKind, string>>\n> = {\n  'simd-mt': {\n    wasm: 'offloads-simd-mt.wasm',\n    js: 'offloads-simd-mt.js',\n    worker: 'offloads-simd-mt.worker.js',\n  },\n  simd: {\n    wasm: 'offloads-simd.wasm',\n  },\n  nosimd: {\n    wasm: 'offloads-nosimd.wasm',\n  },\n};\n\nconst VARIANT_FALLBACKS: Record<WasmBinaryVariant, WasmBinaryVariant[]> = {\n  'simd-mt': ['simd-mt', 'simd', 'nosimd'],\n  simd: ['simd', 'nosimd'],\n  nosimd: ['nosimd'],\n};\n\nlet threadedVariantWarningPrinted = false;\n\nconst ensureTrailingSlash = (value: string): string =>\n  value.endsWith('/') ? value : `${value}/`;\n\nconst resolveRuntimeBase = (): string => {\n  const runtimeLocation = (globalThis as { location?: Location }).location;\n  if (runtimeLocation?.href) {\n    return runtimeLocation.href;\n  }\n  return import.meta.url;\n};\n\nconst buildAssetUrlFromFile = (fileName: string): URL => {\n  if (wasmBaseUrlOverride !== undefined) {\n    const normalizedBase = ensureTrailingSlash(wasmBaseUrlOverride);\n    const baseUrl = resolveBaseUrl(normalizedBase);\n    return new URL(fileName, baseUrl);\n  }\n  return new URL(`./wasm/${fileName}`, import.meta.url);\n};\n\nconst resolveVariantAssetUrl = (\n  variant: WasmBinaryVariant,\n  kind: WasmAssetKind\n): URL => {\n  const files = WASM_ASSET_FILES[variant];\n  const fileName = files?.[kind];\n  if (!fileName) {\n    throw new Error(`Asset ${kind} is not defined for variant \"${variant}\".`);\n  }\n  return buildAssetUrlFromFile(fileName);\n};\n\nconst resolveBaseUrl = (base: string): URL => {\n  try {\n    return new URL(base);\n  } catch {\n    return new URL(base, resolveRuntimeBase());\n  }\n};\n\nlet wasmBaseUrlOverride: string | undefined;\n\ntype NodeFsPromisesModule = typeof import('fs/promises');\ntype NodeUrlModule = typeof import('url');\n\nconst isNodeEnvironment = (() => {\n  const globalProcess = (\n    globalThis as {\n      process?: { versions?: { node?: string } };\n    }\n  ).process;\n  return !!globalProcess?.versions?.node;\n})();\n\nconst canUseThreadedWasm = (): boolean => {\n  if (isNodeEnvironment) {\n    return true;\n  }\n  if (typeof SharedArrayBuffer === 'undefined') {\n    return false;\n  }\n  const globalFlags = globalThis as { crossOriginIsolated?: boolean };\n  if ('crossOriginIsolated' in globalFlags) {\n    return !!globalFlags.crossOriginIsolated;\n  }\n  return false;\n};\n\nconst importNodeModule = async <T>(specifier: string): Promise<T> =>\n  (await import(/* @vite-ignore */ specifier)) as T;\n\nconst createImportNamespace = (\n  additional?: Record<string, unknown>\n): Record<string, unknown> => {\n  const functionStub = () => 0;\n  const target: Record<string, unknown> = additional ? { ...additional } : {};\n  return new Proxy(target, {\n    get(currentTarget, prop: string) {\n      if (prop in currentTarget) {\n        return currentTarget[prop];\n      }\n      return functionStub;\n    },\n  });\n};\n\n/**\n * Load wasm binary.\n * @returns Raw wasm binary stream.\n */\nconst loadWasmBinary = async (\n  variant: WasmBinaryVariant\n): Promise<ArrayBuffer> => {\n  const wasmUrl = resolveVariantAssetUrl(variant, 'wasm');\n\n  if (typeof fetch === 'function') {\n    try {\n      const response = await fetch(wasmUrl);\n      if (response.ok) {\n        return await response.arrayBuffer();\n      }\n    } catch {\n      // Ignore and fall back to Node resolution.\n    }\n  }\n\n  if (isNodeEnvironment && wasmUrl.protocol === 'file:') {\n    const [{ readFile }, { fileURLToPath }] = await Promise.all([\n      importNodeModule<NodeFsPromisesModule>('node:fs/promises'),\n      importNodeModule<NodeUrlModule>('node:url'),\n    ]);\n    const filePath = fileURLToPath(wasmUrl);\n    const fileBuffer = await readFile(filePath);\n    const arrayBuffer = fileBuffer.buffer as ArrayBuffer;\n    return arrayBuffer.slice(\n      fileBuffer.byteOffset,\n      fileBuffer.byteOffset + fileBuffer.byteLength\n    );\n  }\n\n  const response = await fetch(wasmUrl);\n  if (!response.ok) {\n    throw new Error(`Failed to load ${variant} offloads WASM: ${wasmUrl.href}`);\n  }\n  return await response.arrayBuffer();\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Raw interface for wasm export functions.\n */\ninterface RawProjectionWasmExports {\n  // Runtime related functions\n  readonly memory?: WebAssembly.Memory;\n  readonly _malloc?: (size: number) => number;\n  readonly malloc?: (size: number) => number;\n  readonly _free?: (ptr: number) => void;\n  readonly free?: (ptr: number) => void;\n  readonly __wasm_call_ctors?: () => void;\n\n  // Wasm implementations\n  readonly _fromLngLat?: WasmFromLngLat;\n  readonly fromLngLat?: WasmFromLngLat;\n  readonly _project?: WasmProject;\n  readonly project?: WasmProject;\n  readonly _unproject?: WasmUnproject;\n  readonly unproject?: WasmUnproject;\n  readonly _calculatePerspectiveRatio?: WasmCalculatePerspectiveRatio;\n  readonly calculatePerspectiveRatio?: WasmCalculatePerspectiveRatio;\n  readonly _projectLngLatToClipSpace?: WasmProjectLngLatToClipSpace;\n  readonly projectLngLatToClipSpace?: WasmProjectLngLatToClipSpace;\n  readonly _calculateBillboardDepthKey?: WasmCalculateBillboardDepthKey;\n  readonly calculateBillboardDepthKey?: WasmCalculateBillboardDepthKey;\n  readonly _calculateSurfaceDepthKey?: WasmCalculateSurfaceDepthKey;\n  readonly calculateSurfaceDepthKey?: WasmCalculateSurfaceDepthKey;\n  readonly _prepareDrawSpriteImages?: WasmPrepareDrawSpriteImages;\n  readonly prepareDrawSpriteImages?: WasmPrepareDrawSpriteImages;\n  readonly _setThreadPoolSize?: (count: number) => void;\n}\n\n/**\n * Internal interface of BufferHolder.\n */\ninterface InternalBufferHolder<TArray extends TypedArrayBufferView<TArray>>\n  extends BufferHolder<TArray> {\n  /** Raw pointer */\n  __ptr: Pointer;\n  /** Buffer view (ex: Float64Array) */\n  __buffer: TArray;\n  /** Real capacity */\n  __capacity: number;\n  /** Is this pooled? */\n  __pooled: boolean;\n  /** Last time this holder returned to the pool. */\n  __lastReleasedAt: number;\n  /** Completely free heap memory */\n  __free: () => void;\n  /** Element count (Float64Array: mod 8) */\n  length: number;\n\n  // Mutable BufferHolder members\n  prepare: () => { ptr: Pointer; buffer: TArray };\n  release: () => void;\n}\n\nconst instantiateThreadedProjectionWasm =\n  async (): Promise<RawProjectionWasmExports> => {\n    const scriptUrl = resolveVariantAssetUrl('simd-mt', 'js');\n    const wasmUrl = resolveVariantAssetUrl('simd-mt', 'wasm');\n    const workerUrl = resolveVariantAssetUrl('simd-mt', 'worker');\n\n    const moduleFactory = await import(/* @vite-ignore */ scriptUrl.href);\n    const createModule = (moduleFactory?.default ??\n      moduleFactory?.Module ??\n      moduleFactory) as\n      | ((moduleArgs?: Record<string, unknown>) => Promise<unknown>)\n      | undefined;\n\n    if (typeof createModule !== 'function') {\n      throw new Error('maplibre-gl-layers: simd-mt module is unavailable.');\n    }\n\n    const moduleInstance = (await createModule({\n      locateFile: (path: string) => {\n        if (path.endsWith('.wasm')) {\n          return wasmUrl.href;\n        }\n        if (path.endsWith('.worker.js')) {\n          return workerUrl.href;\n        }\n        return path;\n      },\n    })) as RawProjectionWasmExports;\n\n    const threadLimit = resolveThreadPoolLimit();\n    if (\n      threadLimit > 0 &&\n      typeof moduleInstance._setThreadPoolSize === 'function'\n    ) {\n      moduleInstance._setThreadPoolSize(threadLimit);\n    }\n\n    return moduleInstance;\n  };\n\n/**\n * Load wasm binary, instantiate and refer entry points.\n * @returns WasmHost\n */\nconst instantiateProjectionWasm = async (\n  variant: WasmBinaryVariant\n): Promise<WasmHost & Releaseable> => {\n  if (variant === 'simd-mt') {\n    const threadedExports = await instantiateThreadedProjectionWasm();\n    return createWasmHostFromExports(threadedExports);\n  }\n\n  const binary = await loadWasmBinary(variant);\n  const imports: WebAssembly.Imports = {};\n  const importTargets = imports as Record<string, unknown>;\n  importTargets.wasi_snapshot_preview1 = createImportNamespace();\n  importTargets.env = createImportNamespace();\n  const { instance } = await WebAssembly.instantiate(binary, imports);\n  const exports = instance.exports as RawProjectionWasmExports;\n  return createWasmHostFromExports(exports);\n};\n\nconst createWasmHostFromExports = (\n  exports: RawProjectionWasmExports\n): WasmHost & Releaseable => {\n  if (typeof exports.__wasm_call_ctors === 'function') {\n    exports.__wasm_call_ctors();\n  }\n\n  const memory =\n    exports.memory ??\n    (exports as unknown as { wasmMemory?: WebAssembly.Memory }).wasmMemory;\n  if (!memory) {\n    throw new Error('maplibre-gl-layers: wasm memory is unavailable.');\n  }\n  const malloc =\n    (exports._malloc as ((size: number) => number) | undefined) ??\n    (exports.malloc as ((size: number) => number) | undefined);\n  const free =\n    (exports._free as ((ptr: number) => void) | undefined) ??\n    (exports.free as ((ptr: number) => void) | undefined);\n\n  const fromLngLat =\n    (exports._fromLngLat as WasmFromLngLat | undefined) ??\n    (exports.fromLngLat as WasmFromLngLat | undefined);\n  const project =\n    (exports._project as WasmProject | undefined) ??\n    (exports.project as WasmProject | undefined);\n  const unproject =\n    (exports._unproject as WasmUnproject | undefined) ??\n    (exports.unproject as WasmUnproject | undefined);\n  const calculatePerspectiveRatio =\n    (exports._calculatePerspectiveRatio as\n      | WasmCalculatePerspectiveRatio\n      | undefined) ??\n    (exports.calculatePerspectiveRatio as\n      | WasmCalculatePerspectiveRatio\n      | undefined);\n  const projectLngLatToClipSpace =\n    (exports._projectLngLatToClipSpace as\n      | WasmProjectLngLatToClipSpace\n      | undefined) ??\n    (exports.projectLngLatToClipSpace as\n      | WasmProjectLngLatToClipSpace\n      | undefined);\n  const calculateBillboardDepthKey =\n    (exports._calculateBillboardDepthKey as\n      | WasmCalculateBillboardDepthKey\n      | undefined) ??\n    (exports.calculateBillboardDepthKey as\n      | WasmCalculateBillboardDepthKey\n      | undefined);\n  const calculateSurfaceDepthKey =\n    (exports._calculateSurfaceDepthKey as\n      | WasmCalculateSurfaceDepthKey\n      | undefined) ??\n    (exports.calculateSurfaceDepthKey as\n      | WasmCalculateSurfaceDepthKey\n      | undefined);\n  const prepareDrawSpriteImages =\n    (exports._prepareDrawSpriteImages as\n      | WasmPrepareDrawSpriteImages\n      | undefined) ??\n    (exports.prepareDrawSpriteImages as\n      | WasmPrepareDrawSpriteImages\n      | undefined);\n\n  if (\n    !memory ||\n    !malloc ||\n    !free ||\n    !fromLngLat ||\n    !project ||\n    !unproject ||\n    !calculatePerspectiveRatio ||\n    !projectLngLatToClipSpace ||\n    !calculateBillboardDepthKey ||\n    !calculateSurfaceDepthKey ||\n    !prepareDrawSpriteImages\n  ) {\n    throw new Error('Projection host WASM exports are incomplete.');\n  }\n\n  //====================================================================\n\n  /** Pooled BufferHolder, grouping by the type and length. */\n  const pool = new Map<\n    TypedArrayConstructor<any>,\n    Map<number, InternalBufferHolder<any>[]>\n  >();\n  let destroyed = false;\n  let sweepTimer: ReturnType<typeof setTimeout> | undefined;\n\n  const getNow = () =>\n    typeof performance !== 'undefined' && typeof performance.now === 'function'\n      ? performance.now()\n      : Date.now();\n\n  const sweepPool = () => {\n    if (destroyed || pool.size === 0) {\n      return;\n    }\n\n    const limit = getNow() - BUFFER_POOL_ENTRY_TTL_MS;\n    const emptyTypeKeys: TypedArrayConstructor<any>[] = [];\n    pool.forEach((typedPool, typeKey) => {\n      const emptyLengths: number[] = [];\n      typedPool.forEach((stack, length) => {\n        let writeIndex = 0;\n        for (let i = 0; i < stack.length; i++) {\n          const holder = stack[i]!;\n          if (!holder.__pooled) {\n            continue;\n          }\n          if (holder.__lastReleasedAt <= limit) {\n            //console.log(`freed:${holder.__length}`);\n            holder.__free();\n            continue;\n          }\n          stack[writeIndex++] = holder;\n        }\n        if (writeIndex === 0) {\n          stack.length = 0;\n          emptyLengths.push(length);\n        } else {\n          stack.length = writeIndex;\n        }\n      });\n      emptyLengths.forEach((length) => typedPool.delete(length));\n      if (typedPool.size === 0) {\n        emptyTypeKeys.push(typeKey);\n      }\n    });\n    emptyTypeKeys.forEach((typeKey) => pool.delete(typeKey));\n\n    if (!destroyed && pool.size > 0) {\n      sweepTimer = setTimeout(() => {\n        sweepTimer = undefined;\n        sweepPool();\n      }, BUFFER_POOL_SWEEP_INTERVAL_MS);\n    }\n  };\n\n  const schedulePoolSweep = () => {\n    if (destroyed || pool.size === 0 || sweepTimer) {\n      return;\n    }\n    sweepTimer = setTimeout(() => {\n      sweepTimer = undefined;\n      sweepPool();\n    }, BUFFER_POOL_SWEEP_INTERVAL_MS);\n  };\n\n  /**\n   * Allocate a buffer.\n   * @param TArray - A type for ArrayBufferView (ex: Float64Array)\n   * @param length Buffer length (not size)\n   * @param ArrayType - ArrayBufferView constructor\n   * @returns `InternalBufferHolder<TArray>`\n   */\n  const allocate = <TArray extends TypedArrayBufferView<TArray>>(\n    length: number,\n    ArrayType: TypedArrayConstructor<TArray>\n  ) => {\n    // Find typed pool by `ArrayType` constructor.\n    let typedPool = pool.get(ArrayType);\n    if (!typedPool) {\n      typedPool = new Map();\n      pool.set(ArrayType, typedPool);\n    }\n\n    // Get exact length pooled holder\n    let candidate: InternalBufferHolder<TArray> | undefined;\n    const exactStack = typedPool.get(length);\n    if (exactStack && exactStack.length > 0) {\n      // Got and last one\n      candidate = exactStack.pop()!;\n      if (exactStack.length === 0) {\n        // Shrink the maps.\n        typedPool.delete(length);\n        if (typedPool.size === 0) {\n          pool.delete(ArrayType);\n        }\n      }\n      candidate.__pooled = false;\n      candidate.__lastReleasedAt = 0;\n      return candidate;\n    }\n\n    // Could not get exact length holder and available remains\n    if (typedPool.size > 0) {\n      // Find not exact but loose fit holder\n      const maxCapacity = length * BUFFER_POOL_MAX_REUSE_RATIO;\n      let bestCapacity: number | undefined;\n      let bestStack: InternalBufferHolder<TArray>[] | undefined;\n      typedPool.forEach((stack, capacity) => {\n        // Removed garbage\n        if (stack.length === 0) {\n          typedPool.delete(capacity);\n          return;\n        }\n        // Ignore this when not loose fit\n        if (capacity < length || capacity > maxCapacity) {\n          return;\n        }\n        // Better than last one\n        if (bestStack === undefined || capacity < (bestCapacity as number)) {\n          // Found candidate stack\n          bestStack = stack;\n          bestCapacity = capacity;\n        }\n      });\n\n      // Found it\n      if (bestStack && bestStack.length > 0) {\n        // Got holder\n        candidate = bestStack.pop()!;\n        // Shrink the maps.\n        if (bestStack.length === 0) {\n          typedPool.delete(bestCapacity!);\n          if (typedPool.size === 0) {\n            pool.delete(ArrayType);\n          }\n        }\n        candidate.__pooled = false;\n        candidate.__lastReleasedAt = 0;\n        return candidate;\n      }\n    }\n\n    //console.log(`allocated: ${length}`);\n    let ptr = malloc(length * ArrayType.BYTES_PER_ELEMENT);\n    let buffer: TArray = new ArrayType(memory.buffer, ptr, length);\n    const prepare = () => {\n      if (candidate!.__ptr === 0) {\n        throw new Error('Buffer already freed.');\n      }\n      // Out of dated the buffer\n      if (\n        candidate!.__buffer.buffer !== memory.buffer ||\n        candidate!.__buffer.length !== candidate!.length\n      ) {\n        candidate!.__buffer = new ArrayType(\n          memory.buffer,\n          candidate!.__ptr,\n          candidate!.length\n        );\n      }\n      return { ptr: candidate!.__ptr, buffer: candidate!.__buffer };\n    };\n    const release = () => {\n      if (candidate!.__pooled) {\n        return;\n      }\n      if (destroyed) {\n        candidate!.__free();\n        return;\n      }\n      candidate!.__pooled = true;\n      candidate!.__lastReleasedAt = getNow();\n      const capacity = candidate!.__capacity;\n      let stack = typedPool!.get(capacity);\n      if (!stack) {\n        stack = [];\n        typedPool!.set(capacity, stack);\n      }\n      if (!pool.has(ArrayType)) {\n        pool.set(ArrayType, typedPool!);\n      }\n      stack.push(candidate!);\n      schedulePoolSweep();\n    };\n    const __free = () => {\n      if (candidate!.__ptr) {\n        //console.log(`freed: ${length}`);\n        free(candidate!.__ptr);\n        candidate!.__ptr = 0;\n        candidate!.__buffer = undefined!;\n        candidate!.__capacity = 0;\n        candidate!.__pooled = false;\n        candidate!.__lastReleasedAt = 0;\n        candidate!.__free = undefined!;\n        candidate!.length = 0;\n        candidate!.prepare = undefined!;\n        candidate!.release = undefined!;\n      }\n    };\n    candidate = {\n      length: length,\n      prepare,\n      release,\n      __ptr: ptr,\n      __buffer: buffer,\n      __capacity: length,\n      __pooled: false,\n      __lastReleasedAt: 0,\n      __free,\n    };\n\n    return candidate;\n  };\n\n  /**\n   * Helper for wasm interoperation buffer.\n   * @param TArray - A type for ArrayBufferView (ex: Float64Array)\n   * @param ArrayType - ArrayBufferView constructor\n   * @param elements - Buffer element count or copy in data array.\n   */\n  const allocateTypedBuffer = <TArray extends TypedArrayBufferView<TArray>>(\n    ArrayType: TypedArrayConstructor<TArray>,\n    elements: number | ArrayLike<TypedArrayElement<TArray>>\n  ): BufferHolder<TArray> => {\n    const isElementLength = typeof elements === 'number';\n    const length = isElementLength ? elements : elements.length;\n\n    const candidate = allocate(length, ArrayType);\n\n    // Copy in initial values\n    if (!isElementLength) {\n      const { buffer } = candidate.prepare();\n      buffer.set(elements);\n    }\n\n    return candidate;\n  };\n\n  /**\n   * Free overall pooled buffers.\n   */\n  const release = () => {\n    if (destroyed) {\n      return;\n    }\n    destroyed = true;\n    if (sweepTimer) {\n      clearTimeout(sweepTimer);\n      sweepTimer = undefined;\n    }\n    pool.forEach((typedPool) => {\n      typedPool.forEach((stack) => {\n        stack.forEach((holder) => {\n          holder.__free();\n        });\n        stack.length = 0;\n      });\n      typedPool.clear();\n    });\n    pool.clear();\n  };\n\n  return {\n    allocateTypedBuffer,\n    fromLngLat,\n    project,\n    unproject,\n    calculatePerspectiveRatio,\n    projectLngLatToClipSpace,\n    calculateBillboardDepthKey,\n    calculateSurfaceDepthKey,\n    prepareDrawSpriteImages,\n    release,\n  };\n};\n\nconst initializeWasmHostInternal = async (\n  preferredVariant: WasmVariant\n): Promise<[WasmVariant, (WasmHost & Releaseable) | undefined]> => {\n  if (preferredVariant === 'disabled') {\n    console.log(\n      'maplibre-gl-layers: Wasm execution disabled by configuration.'\n    );\n    return ['disabled', undefined];\n  }\n\n  const variantsToTry: WasmBinaryVariant[] = VARIANT_FALLBACKS[\n    preferredVariant as WasmBinaryVariant\n  ] ?? ['nosimd'];\n\n  for (const variant of variantsToTry) {\n    if (variant === 'simd-mt' && !canUseThreadedWasm()) {\n      if (!threadedVariantWarningPrinted) {\n        console.warn(\n          'maplibre-gl-layers: SharedArrayBuffer is unavailable, skipping simd-mt wasm variant.'\n        );\n        threadedVariantWarningPrinted = true;\n      }\n      continue;\n    }\n    try {\n      const wasmHost = await instantiateProjectionWasm(variant);\n      console.log(\n        `maplibre-gl-layers: Initialized wasm module (variant: ${variant}).`\n      );\n      return [variant, wasmHost];\n    } catch (error) {\n      console.warn(\n        `maplibre-gl-layers: Failed to initialize ${variant} wasm module.`,\n        error\n      );\n    }\n  }\n\n  console.warn(\n    'maplibre-gl-layers: Falling back to JavaScript implementation.'\n  );\n  return ['disabled', undefined];\n};\n\nlet currentVariant: WasmVariant = 'disabled';\nlet currentWasmHost: (WasmHost & Releaseable) | undefined;\n\n/**\n * Wasm initialization options.\n */\nexport interface InitializeWasmHostOptions {\n  /** Force initialization. Default is false. */\n  readonly force: boolean;\n  /** Override the URL used to fetch wasm artifacts. */\n  readonly wasmBaseUrl: string | undefined;\n}\n\n/**\n * Initialize wasm offload module.\n * @param preferredVariant Uses wasm offload module variant.\n * @param options Options.\n * @returns Initialized WasmHost.\n */\nexport const initializeWasmHost = async (\n  preferredVariant: WasmVariant,\n  options: InitializeWasmHostOptions | undefined\n): Promise<WasmVariant> => {\n  let nextBaseUrl = wasmBaseUrlOverride;\n  if (options?.wasmBaseUrl !== undefined) {\n    nextBaseUrl = options.wasmBaseUrl === '' ? undefined : options.wasmBaseUrl;\n  }\n\n  const baseChanged = nextBaseUrl !== wasmBaseUrlOverride;\n  if (options?.wasmBaseUrl !== undefined) {\n    wasmBaseUrlOverride = nextBaseUrl;\n  }\n\n  if (options?.force || baseChanged) {\n    currentWasmHost = undefined;\n  }\n\n  if (currentWasmHost !== undefined) {\n    return currentVariant;\n  }\n\n  const [variant, wasmHost] =\n    await initializeWasmHostInternal(preferredVariant);\n  currentVariant = variant;\n  currentWasmHost = wasmHost;\n\n  return variant;\n};\n\n/**\n * Release wasm offload module.\n */\nexport const releaseWasmHost = () => {\n  if (currentWasmHost) {\n    currentWasmHost.release();\n    currentWasmHost = undefined;\n    currentVariant = 'disabled';\n  }\n};\n\n/**\n * Get wasm host.\n * @returns Entry points.\n */\nexport const prepareWasmHost = (): WasmHost => {\n  if (!currentWasmHost) {\n    throw new Error('Could not use WasmHost, needs before initialization.');\n  }\n  return currentWasmHost;\n};\nconst resolveThreadPoolLimit = (): number => {\n  const hardware =\n    typeof navigator !== 'undefined' &&\n    typeof navigator.hardwareConcurrency === 'number'\n      ? navigator.hardwareConcurrency\n      : 0;\n  if (CONFIGURED_PTHREAD_POOL_SIZE > 0 && hardware > 0) {\n    return Math.min(CONFIGURED_PTHREAD_POOL_SIZE, hardware);\n  }\n  if (CONFIGURED_PTHREAD_POOL_SIZE > 0) {\n    return CONFIGURED_PTHREAD_POOL_SIZE;\n  }\n  return hardware;\n};\n","// maplibre-gl-layers - MapLibre's layer extension library enabling\n// the display, movement, and modification of large numbers of dynamic sprite images\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT\n// https://github.com/kekyo/maplibre-gl-layers\n\nimport { createMutex } from 'async-primitives';\n\nimport type {\n  SpriteLayerCalculationVariant,\n  SpriteLayerHostOptions,\n} from './types';\nimport {\n  initializeWasmHost,\n  releaseWasmHost,\n  type WasmVariant,\n} from './wasmHost';\n\n//////////////////////////////////////////////////////////////////////////////////////\n\nconst spriteLayerHostInitializationMutex = createMutex();\nlet spriteLayerHostVariant: WasmVariant = 'disabled';\n\nexport const isSpriteLayerHostEnabled = () =>\n  spriteLayerHostVariant !== 'disabled';\n\n/**\n * Initialize maplibre-gl-layers runtime host.\n * @param variantOrOptions Options.\n * @returns Initialized calculation variant.\n */\nexport const initializeRuntimeHost = async (\n  options?: SpriteLayerHostOptions\n): Promise<SpriteLayerCalculationVariant> => {\n  const locker = await spriteLayerHostInitializationMutex.lock();\n  try {\n    const requestedVariant = options?.variant ?? 'simd';\n    if (requestedVariant === 'disabled') {\n      releaseRuntimeHost();\n      return 'disabled';\n    }\n    const forceReload = options !== undefined;\n    spriteLayerHostVariant = await initializeWasmHost(requestedVariant, {\n      force: forceReload,\n      wasmBaseUrl: options?.wasmBaseUrl,\n    });\n    return spriteLayerHostVariant;\n  } finally {\n    locker.release();\n  }\n};\n\n/**\n * Release maplibre-gl-layers runtime host.\n * @returns\n */\nexport const releaseRuntimeHost = (): void => {\n  if (spriteLayerHostVariant === 'disabled') {\n    return;\n  }\n  spriteLayerHostVariant = 'disabled';\n  releaseWasmHost();\n};\n\n/**\n * SIMD and multi-threading module availability.\n */\nexport interface MultiThreadedModuleAvailability {\n  /** Is available? */\n  readonly available: boolean;\n  /** Not available, reason text */\n  readonly reason?: string;\n}\n\n/**\n * Detects SIMD and multi-threading module availability.\n * @returns MultiThreadedModuleAvailability.\n */\nexport const detectMultiThreadedModuleAvailability =\n  (): MultiThreadedModuleAvailability => {\n    const scope =\n      typeof globalThis === 'object'\n        ? (globalThis as typeof globalThis & {\n            SharedArrayBuffer?: typeof SharedArrayBuffer;\n            Atomics?: typeof Atomics;\n            Worker?: typeof Worker;\n            crossOriginIsolated?: boolean;\n          })\n        : undefined;\n    if (!scope) {\n      return {\n        available: false,\n        reason: 'Global scope is unavailable.',\n      };\n    }\n    if (typeof scope.SharedArrayBuffer !== 'function') {\n      return {\n        available: false,\n        reason: 'SharedArrayBuffer is not available in this environment.',\n      };\n    }\n    if (typeof scope.Atomics !== 'object') {\n      return {\n        available: false,\n        reason: 'Atomics API is not available in this environment.',\n      };\n    }\n    if (typeof scope.Worker !== 'function') {\n      return {\n        available: false,\n        reason: 'Web Worker API is unavailable in this environment.',\n      };\n    }\n    if (scope.crossOriginIsolated !== true) {\n      return {\n        available: false,\n        reason:\n          'Enable cross-origin isolation (COOP/COEP) so SharedArrayBuffer can be used.',\n      };\n    }\n    return { available: true };\n  };\n","/**\n * MapLibre GL JS\n * @license 3-Clause BSD. Full text of license: https://github.com/maplibre/maplibre-gl-js/blob/v5.10.0/LICENSE.txt\n */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\ntypeof define === 'function' && define.amd ? define(factory) :\n(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.maplibregl = factory());\n})(this, (function () { 'use strict';\n\n/* eslint-disable */\n\nvar maplibregl = {};\nvar modules = {};\nfunction define(moduleName, _dependencies, moduleFactory) {\n    modules[moduleName] = moduleFactory;\n\n    // to get the list of modules see generated dist/maplibre-gl-dev.js file (look for `define(` calls)\n    if (moduleName !== 'index') {\n        return;\n    }\n\n    // we assume that when an index module is initializing then other modules are loaded already\n    var workerBundleString = 'var sharedModule = {}; (' + modules.shared + ')(sharedModule); (' + modules.worker + ')(sharedModule);'\n\n    var sharedModule = {};\n    // the order of arguments of a module factory depends on rollup (it decides who is whose dependency)\n    // to check the correct order, see dist/maplibre-gl-dev.js file (look for `define(` calls)\n    // we assume that for our 3 chunks it will generate 3 modules and their order is predefined like the following\n    modules.shared(sharedModule);\n    modules.index(maplibregl, sharedModule);\n\n    if (typeof window !== 'undefined') {\n        maplibregl.setWorkerUrl(window.URL.createObjectURL(new Blob([workerBundleString], { type: 'text/javascript' })));\n    }\n\n    return maplibregl;\n};\n\n\n\ndefine(\"shared\",[\"exports\"],(function(t){\"use strict\";function e(t,e,r,n){return new(r||(r=Promise))((function(i,s){function a(t){try{l(n.next(t));}catch(t){s(t);}}function o(t){try{l(n.throw(t));}catch(t){s(t);}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e);}))).then(a,o);}l((n=n.apply(t,e||[])).next());}))}function r(t,e){this.x=t,this.y=e;}function n(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,\"default\")?t.default:t}var i,s;\"function\"==typeof SuppressedError&&SuppressedError,r.prototype={clone(){return new r(this.x,this.y)},add(t){return this.clone()._add(t)},sub(t){return this.clone()._sub(t)},multByPoint(t){return this.clone()._multByPoint(t)},divByPoint(t){return this.clone()._divByPoint(t)},mult(t){return this.clone()._mult(t)},div(t){return this.clone()._div(t)},rotate(t){return this.clone()._rotate(t)},rotateAround(t,e){return this.clone()._rotateAround(t,e)},matMult(t){return this.clone()._matMult(t)},unit(){return this.clone()._unit()},perp(){return this.clone()._perp()},round(){return this.clone()._round()},mag(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals(t){return this.x===t.x&&this.y===t.y},dist(t){return Math.sqrt(this.distSqr(t))},distSqr(t){const e=t.x-this.x,r=t.y-this.y;return e*e+r*r},angle(){return Math.atan2(this.y,this.x)},angleTo(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith(t){return this.angleWithSep(t.x,t.y)},angleWithSep(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult(t){const 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(t){return this.x+=t.x,this.y+=t.y,this},_sub(t){return this.x-=t.x,this.y-=t.y,this},_mult(t){return this.x*=t,this.y*=t,this},_div(t){return this.x/=t,this.y/=t,this},_multByPoint(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint(t){return this.x/=t.x,this.y/=t.y,this},_unit(){return this._div(this.mag()),this},_perp(){const t=this.y;return this.y=this.x,this.x=-t,this},_rotate(t){const 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(t,e){const 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(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},constructor:r},r.convert=function(t){if(t instanceof r)return t;if(Array.isArray(t))return new r(+t[0],+t[1]);if(void 0!==t.x&&void 0!==t.y)return new r(+t.x,+t.y);throw new Error(\"Expected [x, y] or {x, y} point format\")};var a=function(){if(s)return i;function t(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;}return s=1,i=t,t.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))}},i}(),o=n(a);let l,u;function c(){return null==l&&(l=\"undefined\"!=typeof OffscreenCanvas&&new OffscreenCanvas(1,1).getContext(\"2d\")&&\"function\"==typeof createImageBitmap),l}function h(){if(null==u&&(u=!1,c())){const t=5,e=new OffscreenCanvas(t,t).getContext(\"2d\",{willReadFrequently:!0});if(e){for(let r=0;r<t*t;r++){const n=4*r;e.fillStyle=`rgb(${n},${n+1},${n+2})`,e.fillRect(r%t,Math.floor(r/t),1,1);}const r=e.getImageData(0,0,t,t).data;for(let e=0;e<t*t*4;e++)if(e%4!=3&&r[e]!==e){u=!0;break}}}return u||!1}var p=1e-6,f=\"undefined\"!=typeof Float32Array?Float32Array:Array;function d(){var t=new f(9);return f!=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}function y(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 m(){var t=new f(3);return f!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function g(t){var e=t[0],r=t[1],n=t[2];return Math.sqrt(e*e+r*r+n*n)}function x(t,e,r){var n=new f(3);return n[0]=t,n[1]=e,n[2]=r,n}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}function b(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}function w(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}var _,S=g;function A(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}function k(){var t=new f(4);return f!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t[3]=1,t}function M(t,e,r,n){var i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"zyx\",s=Math.PI/360;e*=s,n*=s,r*=s;var a=Math.sin(e),o=Math.cos(e),l=Math.sin(r),u=Math.cos(r),c=Math.sin(n),h=Math.cos(n);switch(i){case \"xyz\":t[0]=a*u*h+o*l*c,t[1]=o*l*h-a*u*c,t[2]=o*u*c+a*l*h,t[3]=o*u*h-a*l*c;break;case \"xzy\":t[0]=a*u*h-o*l*c,t[1]=o*l*h-a*u*c,t[2]=o*u*c+a*l*h,t[3]=o*u*h+a*l*c;break;case \"yxz\":t[0]=a*u*h+o*l*c,t[1]=o*l*h-a*u*c,t[2]=o*u*c-a*l*h,t[3]=o*u*h+a*l*c;break;case \"yzx\":t[0]=a*u*h+o*l*c,t[1]=o*l*h+a*u*c,t[2]=o*u*c-a*l*h,t[3]=o*u*h-a*l*c;break;case \"zxy\":t[0]=a*u*h-o*l*c,t[1]=o*l*h+a*u*c,t[2]=o*u*c+a*l*h,t[3]=o*u*h-a*l*c;break;case \"zyx\":t[0]=a*u*h-o*l*c,t[1]=o*l*h+a*u*c,t[2]=o*u*c-a*l*h,t[3]=o*u*h+a*l*c;break;default:throw new Error(\"Unknown angle order \"+i)}return t}function I(){var t=new f(2);return f!=Float32Array&&(t[0]=0,t[1]=0),t}function z(t,e){var r=new f(2);return r[0]=t,r[1]=e,r}m(),_=new f(4),f!=Float32Array&&(_[0]=0,_[1]=0,_[2]=0,_[3]=0),m(),x(1,0,0),x(0,1,0),k(),k(),d(),I();const P=8192;function C(t,e,r){return e*(P/(t.tileSize*Math.pow(2,r-t.tileID.overscaledZ)))}function E(t,e){return (t%e+e)%e}function T(t,e,r){return t*(1-r)+e*r}function B(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 V(t,e,r,n){const i=new o(t,e,r,n);return t=>i.solve(t)}const F=V(.25,.1,.25,1);function D(t,e,r){return Math.min(r,Math.max(e,t))}function $(t,e,r){const n=r-e,i=((t-e)%n+n)%n+e;return i===e?r:i}function L(t,...e){for(const r of e)for(const e in r)t[e]=r[e];return t}let O=1;function R(t,e,r){const n={};for(const r in t)n[r]=e.call(this,t[r],r,t);return n}function U(t,e,r){const n={};for(const r in t)e.call(this,t[r],r,t)&&(n[r]=t[r]);return n}function j(t){return Array.isArray(t)?t.map(j):\"object\"==typeof t&&t?R(t,j):t}const N={};function q(t){N[t]||(\"undefined\"!=typeof console&&console.warn(t),N[t]=!0);}function G(t,e,r){return (r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function X(t){return \"undefined\"!=typeof WorkerGlobalScope&&void 0!==t&&t instanceof WorkerGlobalScope}let Z=null;function Y(t){if(null==Z){const e=t.navigator?t.navigator.userAgent:null;Z=!!t.safari||!(!e||!(/\\b(iPad|iPhone|iPod)\\b/.test(e)||e.match(\"Safari\")&&!e.match(\"Chrome\")));}return Z}function H(t){return \"undefined\"!=typeof ImageBitmap&&t instanceof ImageBitmap}const K=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=\";function J(t,r,n,i,s){return e(this,void 0,void 0,(function*(){if(\"undefined\"==typeof VideoFrame)throw new Error(\"VideoFrame not supported\");const e=new VideoFrame(t,{timestamp:0});try{const a=null==e?void 0:e.format;if(!a||!a.startsWith(\"BGR\")&&!a.startsWith(\"RGB\"))throw new Error(`Unrecognized format ${a}`);const o=a.startsWith(\"BGR\"),l=new Uint8ClampedArray(i*s*4);if(yield e.copyTo(l,function(t,e,r,n,i){const s=4*Math.max(-e,0),a=(Math.max(0,r)-r)*n*4+s,o=4*n,l=Math.max(0,e),u=Math.max(0,r);return {rect:{x:l,y:u,width:Math.min(t.width,e+n)-l,height:Math.min(t.height,r+i)-u},layout:[{offset:a,stride:o}]}}(t,r,n,i,s)),o)for(let t=0;t<l.length;t+=4){const e=l[t];l[t]=l[t+2],l[t+2]=e;}return l}finally{e.close();}}))}let W,Q;function tt(t,e,r,n){return t.addEventListener(e,r,n),{unsubscribe:()=>{t.removeEventListener(e,r,n);}}}function et(t){return t*Math.PI/180}function rt(t){return t/Math.PI*180}const nt={touchstart:!0,touchmove:!0,touchmoveWindow:!0,touchend:!0,touchcancel:!0},it={dblclick:!0,click:!0,mouseover:!0,mouseout:!0,mousedown:!0,mousemove:!0,mousemoveWindow:!0,mouseup:!0,mouseupWindow:!0,contextmenu:!0,wheel:!0},st=\"AbortError\";function at(){return new Error(st)}const ot={MAX_PARALLEL_IMAGE_REQUESTS:16,MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:8,MAX_TILE_CACHE_ZOOM_LEVELS:5,REGISTERED_PROTOCOLS:{},WORKER_URL:\"\"};function lt(t){return ot.REGISTERED_PROTOCOLS[t.substring(0,t.indexOf(\"://\"))]}const ut=\"global-dispatcher\";class ct extends Error{constructor(t,e,r,n){super(`AJAXError: ${e} (${t}): ${r}`),this.status=t,this.statusText=e,this.url=r,this.body=n;}}const ht=()=>X(self)?self.worker&&self.worker.referrer:(\"blob:\"===window.location.protocol?window.parent:window).location.href,pt=function(t,r){if(/:\\/\\//.test(t.url)&&!/^https?:|^file:/.test(t.url)){const e=lt(t.url);if(e)return e(t,r);if(X(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:\"GR\",data:t,targetMapId:ut},r)}if(!(/^file:/.test(n=t.url)||/^file:/.test(ht())&&!/^\\w+:/.test(n))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,\"signal\"))return function(t,r){return e(this,void 0,void 0,(function*(){const e=new Request(t.url,{method:t.method||\"GET\",body:t.body,credentials:t.credentials,headers:t.headers,cache:t.cache,referrer:ht(),signal:r.signal});let n,i;\"json\"!==t.type||e.headers.has(\"Accept\")||e.headers.set(\"Accept\",\"application/json\");try{n=yield fetch(e);}catch(e){throw new ct(0,e.message,t.url,new Blob)}if(!n.ok){const e=yield n.blob();throw new ct(n.status,n.statusText,t.url,e)}i=\"arrayBuffer\"===t.type||\"image\"===t.type?n.arrayBuffer():\"json\"===t.type?n.json():n.text();const s=yield i;if(r.signal.aborted)throw at();return {data:s,cacheControl:n.headers.get(\"Cache-Control\"),expires:n.headers.get(\"Expires\")}}))}(t,r);if(X(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:\"GR\",data:t,mustQueue:!0,targetMapId:ut},r)}var n;return function(t,e){return new Promise(((r,n)=>{var i;const s=new XMLHttpRequest;s.open(t.method||\"GET\",t.url,!0),\"arrayBuffer\"!==t.type&&\"image\"!==t.type||(s.responseType=\"arraybuffer\");for(const e in t.headers)s.setRequestHeader(e,t.headers[e]);\"json\"===t.type&&(s.responseType=\"text\",(null===(i=t.headers)||void 0===i?void 0:i.Accept)||s.setRequestHeader(\"Accept\",\"application/json\")),s.withCredentials=\"include\"===t.credentials,s.onerror=()=>{n(new Error(s.statusText));},s.onload=()=>{if(!e.signal.aborted)if((s.status>=200&&s.status<300||0===s.status)&&null!==s.response){let e=s.response;if(\"json\"===t.type)try{e=JSON.parse(s.response);}catch(t){return void n(t)}r({data:e,cacheControl:s.getResponseHeader(\"Cache-Control\"),expires:s.getResponseHeader(\"Expires\")});}else {const e=new Blob([s.response],{type:s.getResponseHeader(\"Content-Type\")});n(new ct(s.status,s.statusText,t.url,e));}},e.signal.addEventListener(\"abort\",(()=>{s.abort(),n(at());})),s.send(t.body);}))}(t,r)};function ft(t){if(!t||t.indexOf(\"://\")<=0||0===t.indexOf(\"data:image/\")||0===t.indexOf(\"blob:\"))return !0;const e=new URL(t),r=window.location;return e.protocol===r.protocol&&e.host===r.host}function dt(t,e,r){r[t]&&-1!==r[t].indexOf(e)||(r[t]=r[t]||[],r[t].push(e));}function yt(t,e,r){if(r&&r[t]){const n=r[t].indexOf(e);-1!==n&&r[t].splice(n,1);}}class mt{constructor(t,e={}){L(this,e),this.type=t;}}class gt extends mt{constructor(t,e={}){super(\"error\",L({error:t},e));}}class xt{on(t,e){return this._listeners=this._listeners||{},dt(t,e,this._listeners),{unsubscribe:()=>{this.off(t,e);}}}off(t,e){return yt(t,e,this._listeners),yt(t,e,this._oneTimeListeners),this}once(t,e){return e?(this._oneTimeListeners=this._oneTimeListeners||{},dt(t,e,this._oneTimeListeners),this):new Promise((e=>this.once(t,e)))}fire(t,e){\"string\"==typeof t&&(t=new mt(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)yt(r,e,this._oneTimeListeners),e.call(this,t);const i=this._eventedParent;i&&(L(t,\"function\"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData),i.fire(t));}else t instanceof gt&&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}}var vt={$version:8,$root:{version:{required:!0,type:\"enum\",values:[8]},name:{type:\"string\"},metadata:{type:\"*\"},center:{type:\"array\",value:\"number\"},centerAltitude:{type:\"number\"},zoom:{type:\"number\"},bearing:{type:\"number\",default:0,period:360,units:\"degrees\"},pitch:{type:\"number\",default:0,units:\"degrees\"},roll:{type:\"number\",default:0,units:\"degrees\"},state:{type:\"state\",default:{}},light:{type:\"light\"},sky:{type:\"sky\"},projection:{type:\"projection\"},terrain:{type:\"terrain\"},sources:{required:!0,type:\"sources\"},sprite:{type:\"sprite\"},glyphs:{type:\"string\"},\"font-faces\":{type:\"array\",value:\"fontFaces\"},transition:{type:\"transition\"},layers:{required:!0,type:\"array\",value:\"layer\"}},sources:{\"*\":{type:\"source\"}},source:[\"source_vector\",\"source_raster\",\"source_raster_dem\",\"source_geojson\",\"source_video\",\"source_image\"],source_vector:{type:{required:!0,type:\"enum\",values:{vector:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},attribution:{type:\"string\"},promoteId:{type:\"promoteId\"},volatile:{type:\"boolean\",default:!1},encoding:{type:\"enum\",values:{mvt:{},mlt:{}},default:\"mvt\"},\"*\":{type:\"*\"}},source_raster:{type:{required:!0,type:\"enum\",values:{raster:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},attribution:{type:\"string\"},volatile:{type:\"boolean\",default:!1},\"*\":{type:\"*\"}},source_raster_dem:{type:{required:!0,type:\"enum\",values:{\"raster-dem\":{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},attribution:{type:\"string\"},encoding:{type:\"enum\",values:{terrarium:{},mapbox:{},custom:{}},default:\"mapbox\"},redFactor:{type:\"number\",default:1},blueFactor:{type:\"number\",default:1},greenFactor:{type:\"number\",default:1},baseShift:{type:\"number\",default:0},volatile:{type:\"boolean\",default:!1},\"*\":{type:\"*\"}},source_geojson:{type:{required:!0,type:\"enum\",values:{geojson:{}}},data:{required:!0,type:\"*\"},maxzoom:{type:\"number\",default:18},attribution:{type:\"string\"},buffer:{type:\"number\",default:128,maximum:512,minimum:0},filter:{type:\"*\"},tolerance:{type:\"number\",default:.375},cluster:{type:\"boolean\",default:!1},clusterRadius:{type:\"number\",default:50,minimum:0},clusterMaxZoom:{type:\"number\"},clusterMinPoints:{type:\"number\"},clusterProperties:{type:\"*\"},lineMetrics:{type:\"boolean\",default:!1},generateId:{type:\"boolean\",default:!1},promoteId:{type:\"promoteId\"}},source_video:{type:{required:!0,type:\"enum\",values:{video:{}}},urls:{required:!0,type:\"array\",value:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},source_image:{type:{required:!0,type:\"enum\",values:{image:{}}},url:{required:!0,type:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},layer:{id:{type:\"string\",required:!0},type:{type:\"enum\",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},\"fill-extrusion\":{},raster:{},hillshade:{},\"color-relief\":{},background:{}},required:!0},metadata:{type:\"*\"},source:{type:\"string\"},\"source-layer\":{type:\"string\"},minzoom:{type:\"number\",minimum:0,maximum:24},maxzoom:{type:\"number\",minimum:0,maximum:24},filter:{type:\"filter\"},layout:{type:\"layout\"},paint:{type:\"paint\"}},layout:[\"layout_fill\",\"layout_line\",\"layout_circle\",\"layout_heatmap\",\"layout_fill-extrusion\",\"layout_symbol\",\"layout_raster\",\"layout_hillshade\",\"layout_color-relief\",\"layout_background\"],layout_background:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_fill:{\"fill-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_circle:{\"circle-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_heatmap:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},\"layout_fill-extrusion\":{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_line:{\"line-cap\":{type:\"enum\",values:{butt:{},round:{},square:{}},default:\"butt\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-join\":{type:\"enum\",values:{bevel:{},round:{},miter:{}},default:\"miter\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-miter-limit\":{type:\"number\",default:2,requires:[{\"line-join\":\"miter\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-round-limit\":{type:\"number\",default:1.05,requires:[{\"line-join\":\"round\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_symbol:{\"symbol-placement\":{type:\"enum\",values:{point:{},line:{},\"line-center\":{}},default:\"point\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-spacing\":{type:\"number\",default:250,minimum:1,units:\"pixels\",requires:[{\"symbol-placement\":\"line\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-avoid-edges\":{type:\"boolean\",default:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"symbol-z-order\":{type:\"enum\",values:{auto:{},\"viewport-y\":{},source:{}},default:\"auto\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"icon-image\",{\"!\":\"icon-overlap\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-overlap\":{type:\"enum\",values:{never:{},always:{},cooperative:{}},requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-optional\":{type:\"boolean\",default:!1,requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-size\":{type:\"number\",default:1,minimum:0,units:\"factor of the original icon size\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-text-fit\":{type:\"enum\",values:{none:{},width:{},height:{},both:{}},default:\"none\",requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-text-fit-padding\":{type:\"array\",value:\"number\",length:4,default:[0,0,0,0],units:\"pixels\",requires:[\"icon-image\",\"text-field\",{\"icon-text-fit\":[\"both\",\"width\",\"height\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-image\":{type:\"resolvedImage\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-padding\":{type:\"padding\",default:[2],units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-keep-upright\":{type:\"boolean\",default:!1,requires:[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-offset\":{type:\"array\",value:\"number\",length:2,default:[0,0],requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},\"viewport-glyph\":{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-field\":{type:\"formatted\",default:\"\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-font\":{type:\"array\",value:\"string\",default:[\"Open Sans Regular\",\"Arial Unicode MS Regular\"],requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-size\":{type:\"number\",default:16,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-width\":{type:\"number\",default:10,minimum:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-line-height\":{type:\"number\",default:1.2,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-letter-spacing\":{type:\"number\",default:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-justify\":{type:\"enum\",values:{auto:{},left:{},center:{},right:{}},default:\"center\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-radial-offset\":{type:\"number\",units:\"ems\",default:0,requires:[\"text-field\"],\"property-type\":\"data-driven\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]}},\"text-variable-anchor\":{type:\"array\",value:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-variable-anchor-offset\":{type:\"variableAnchorOffsetCollection\",requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"text-field\",{\"!\":\"text-variable-anchor\"}],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-angle\":{type:\"number\",default:45,units:\"degrees\",requires:[\"text-field\",{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-writing-mode\":{type:\"array\",value:\"enum\",values:{horizontal:{},vertical:{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-keep-upright\":{type:\"boolean\",default:!0,requires:[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-transform\":{type:\"enum\",values:{none:{},uppercase:{},lowercase:{}},default:\"none\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-offset\":{type:\"array\",value:\"number\",units:\"ems\",length:2,default:[0,0],requires:[\"text-field\",{\"!\":\"text-radial-offset\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"text-field\",{\"!\":\"text-overlap\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-overlap\":{type:\"enum\",values:{never:{},always:{},cooperative:{}},requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-optional\":{type:\"boolean\",default:!1,requires:[\"text-field\",\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_raster:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_hillshade:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},\"layout_color-relief\":{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},filter:{type:\"array\",value:\"*\"},filter_operator:{type:\"enum\",values:{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},in:{},\"!in\":{},all:{},any:{},none:{},has:{},\"!has\":{}}},geometry_type:{type:\"enum\",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:\"expression\"},stops:{type:\"array\",value:\"function_stop\"},base:{type:\"number\",default:1,minimum:0},property:{type:\"string\",default:\"$zoom\"},type:{type:\"enum\",values:{identity:{},exponential:{},interval:{},categorical:{}},default:\"exponential\"},colorSpace:{type:\"enum\",values:{rgb:{},lab:{},hcl:{}},default:\"rgb\"},default:{type:\"*\",required:!1}},function_stop:{type:\"array\",minimum:0,maximum:24,value:[\"number\",\"color\"],length:2},expression:{type:\"array\",value:\"*\",minimum:1},light:{anchor:{type:\"enum\",default:\"viewport\",values:{map:{},viewport:{}},\"property-type\":\"data-constant\",transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]}},position:{type:\"array\",default:[1.15,210,30],length:3,value:\"number\",\"property-type\":\"data-constant\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]}},color:{type:\"color\",\"property-type\":\"data-constant\",default:\"#ffffff\",expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0},intensity:{type:\"number\",\"property-type\":\"data-constant\",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0}},sky:{\"sky-color\":{type:\"color\",\"property-type\":\"data-constant\",default:\"#88C6FC\",expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0},\"horizon-color\":{type:\"color\",\"property-type\":\"data-constant\",default:\"#ffffff\",expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0},\"fog-color\":{type:\"color\",\"property-type\":\"data-constant\",default:\"#ffffff\",expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0},\"fog-ground-blend\":{type:\"number\",\"property-type\":\"data-constant\",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0},\"horizon-fog-blend\":{type:\"number\",\"property-type\":\"data-constant\",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0},\"sky-horizon-blend\":{type:\"number\",\"property-type\":\"data-constant\",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0},\"atmosphere-blend\":{type:\"number\",\"property-type\":\"data-constant\",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0}},terrain:{source:{type:\"string\",required:!0},exaggeration:{type:\"number\",minimum:0,default:1}},projection:{type:{type:\"projectionDefinition\",default:\"mercator\",\"property-type\":\"data-constant\",transition:!1,expression:{interpolated:!0,parameters:[\"zoom\"]}}},paint:[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_heatmap\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_hillshade\",\"paint_color-relief\",\"paint_background\"],paint_fill:{\"fill-antialias\":{type:\"boolean\",default:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-outline-color\":{type:\"color\",transition:!0,requires:[{\"!\":\"fill-pattern\"},{\"fill-antialias\":!0}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-extrusion-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-extrusion-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"fill-extrusion-height\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-base\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,requires:[\"fill-extrusion-height\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-vertical-gradient\":{type:\"boolean\",default:!0,transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_line:{\"line-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"line-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-width\":{type:\"number\",default:1,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-gap-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-offset\":{type:\"number\",default:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-dasharray\":{type:\"array\",value:\"number\",minimum:0,transition:!0,units:\"line widths\",requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"line-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"line-gradient\":{type:\"color\",transition:!1,requires:[{\"!\":\"line-dasharray\"},{\"!\":\"line-pattern\"},{source:\"geojson\",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:[\"line-progress\"]},\"property-type\":\"color-ramp\"}},paint_circle:{\"circle-radius\":{type:\"number\",default:5,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-blur\":{type:\"number\",default:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"circle-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-scale\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-stroke-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"}},paint_heatmap:{\"heatmap-radius\":{type:\"number\",default:30,minimum:1,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-weight\":{type:\"number\",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-intensity\":{type:\"number\",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"heatmap-color\":{type:\"color\",default:[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,\"rgba(0, 0, 255, 0)\",.1,\"royalblue\",.3,\"cyan\",.5,\"lime\",.7,\"yellow\",1,\"red\"],transition:!1,expression:{interpolated:!0,parameters:[\"heatmap-density\"]},\"property-type\":\"color-ramp\"},\"heatmap-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_symbol:{\"icon-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"icon-image\",\"icon-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-color\":{type:\"color\",default:\"#000000\",transition:!0,overridable:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"text-field\",\"text-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_raster:{\"raster-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-hue-rotate\":{type:\"number\",default:0,period:360,transition:!0,units:\"degrees\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-min\":{type:\"number\",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-max\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-saturation\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-contrast\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-resampling\":{type:\"enum\",values:{linear:{},nearest:{}},default:\"linear\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-fade-duration\":{type:\"number\",default:300,minimum:0,transition:!1,units:\"milliseconds\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_hillshade:{\"hillshade-illumination-direction\":{type:\"numberArray\",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-illumination-altitude\":{type:\"numberArray\",default:45,minimum:0,maximum:90,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-illumination-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-exaggeration\":{type:\"number\",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-shadow-color\":{type:\"colorArray\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-highlight-color\":{type:\"colorArray\",default:\"#FFFFFF\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-accent-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-method\":{type:\"enum\",values:{standard:{},basic:{},combined:{},igor:{},multidirectional:{}},default:\"standard\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_color-relief\":{\"color-relief-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"color-relief-color\":{type:\"color\",transition:!1,expression:{interpolated:!0,parameters:[\"elevation\"]},\"property-type\":\"color-ramp\"}},paint_background:{\"background-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"background-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"background-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"background-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},transition:{duration:{type:\"number\",default:300,minimum:0,units:\"milliseconds\"},delay:{type:\"number\",default:0,minimum:0,units:\"milliseconds\"}},\"property-type\":{\"data-driven\":{type:\"property-type\"},\"cross-faded\":{type:\"property-type\"},\"cross-faded-data-driven\":{type:\"property-type\"},\"color-ramp\":{type:\"property-type\"},\"data-constant\":{type:\"property-type\"},constant:{type:\"property-type\"}},promoteId:{\"*\":{type:\"string\"}}};const bt=[\"type\",\"source\",\"source-layer\",\"minzoom\",\"maxzoom\",\"filter\",\"layout\"];function wt(t,e){const r={};for(const e in t)\"ref\"!==e&&(r[e]=t[e]);return bt.forEach((t=>{t in e&&(r[t]=e[t]);})),r}function _t(t,e){if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return !1;for(let r=0;r<t.length;r++)if(!_t(t[r],e[r]))return !1;return !0}if(\"object\"==typeof t&&null!==t&&null!==e){if(\"object\"!=typeof e)return !1;if(Object.keys(t).length!==Object.keys(e).length)return !1;for(const r in t)if(!_t(t[r],e[r]))return !1;return !0}return t===e}function St(t,e){t.push(e);}function At(t,e,r){St(r,{command:\"addSource\",args:[t,e[t]]});}function kt(t,e,r){St(e,{command:\"removeSource\",args:[t]}),r[t]=!0;}function Mt(t,e,r,n){kt(t,r,n),At(t,e,r);}function It(t,e,r){let n;for(n in t[r])if(Object.prototype.hasOwnProperty.call(t[r],n)&&\"data\"!==n&&!_t(t[r][n],e[r][n]))return !1;for(n in e[r])if(Object.prototype.hasOwnProperty.call(e[r],n)&&\"data\"!==n&&!_t(t[r][n],e[r][n]))return !1;return !0}function zt(t,e,r,n,i,s){t=t||{},e=e||{};for(const a in t)Object.prototype.hasOwnProperty.call(t,a)&&(_t(t[a],e[a])||r.push({command:s,args:[n,a,e[a],i]}));for(const a in e)Object.prototype.hasOwnProperty.call(e,a)&&!Object.prototype.hasOwnProperty.call(t,a)&&(_t(t[a],e[a])||r.push({command:s,args:[n,a,e[a],i]}));}function Pt(t){return t.id}function Ct(t,e){return t[e.id]=e,t}class Et{constructor(t,e,r,n){this.message=(t?`${t}: `:\"\")+r,n&&(this.identifier=n),null!=e&&e.__line__&&(this.line=e.__line__);}}function Tt(t,...e){for(const r of e)for(const e in r)t[e]=r[e];return t}class Bt extends Error{constructor(t,e){super(e),this.message=e,this.key=t;}}class Vt{constructor(t,e=[]){this.parent=t,this.bindings={};for(const[t,r]of e)this.bindings[t]=r;}concat(t){return new Vt(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 Ft={kind:\"null\"},Dt={kind:\"number\"},$t={kind:\"string\"},Lt={kind:\"boolean\"},Ot={kind:\"color\"},Rt={kind:\"projectionDefinition\"},Ut={kind:\"object\"},jt={kind:\"value\"},Nt={kind:\"collator\"},qt={kind:\"formatted\"},Gt={kind:\"padding\"},Xt={kind:\"colorArray\"},Zt={kind:\"numberArray\"},Yt={kind:\"resolvedImage\"},Ht={kind:\"variableAnchorOffsetCollection\"};function Kt(t,e){return {kind:\"array\",itemType:t,N:e}}function Jt(t){if(\"array\"===t.kind){const e=Jt(t.itemType);return \"number\"==typeof t.N?`array<${e}, ${t.N}>`:\"value\"===t.itemType.kind?\"array\":`array<${e}>`}return t.kind}const Wt=[Ft,Dt,$t,Lt,Ot,Rt,qt,Ut,Kt(jt),Gt,Zt,Xt,Yt,Ht];function Qt(t,e){if(\"error\"===e.kind)return null;if(\"array\"===t.kind){if(\"array\"===e.kind&&(0===e.N&&\"value\"===e.itemType.kind||!Qt(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 Wt)if(!Qt(t,e))return null}return `Expected ${Jt(t)} but found ${Jt(e)} instead.`}function te(t,e){return e.some((e=>e.kind===t.kind))}function ee(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))}function re(t,e){return \"array\"===t.kind&&\"array\"===e.kind?t.itemType.kind===e.itemType.kind&&\"number\"==typeof t.N:t.kind===e.kind}const ne=.96422,ie=.82521,se=4/29,ae=6/29,oe=3*ae*ae,le=ae*ae*ae,ue=Math.PI/180,ce=180/Math.PI;function he(t){return (t%=360)<0&&(t+=360),t}function pe([t,e,r,n]){let i,s;const a=de((.2225045*(t=fe(t))+.7168786*(e=fe(e))+.0606169*(r=fe(r)))/1);t===e&&e===r?i=s=a:(i=de((.4360747*t+.3850649*e+.1430804*r)/ne),s=de((.0139322*t+.0971045*e+.7141733*r)/ie));const o=116*a-16;return [o<0?0:o,500*(i-a),200*(a-s),n]}function fe(t){return t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function de(t){return t>le?Math.pow(t,1/3):t/oe+se}function ye([t,e,r,n]){let i=(t+16)/116,s=isNaN(e)?i:i+e/500,a=isNaN(r)?i:i-r/200;return i=1*ge(i),s=ne*ge(s),a=ie*ge(a),[me(3.1338561*s-1.6168667*i-.4906146*a),me(-.9787684*s+1.9161415*i+.033454*a),me(.0719453*s-.2289914*i+1.4052427*a),n]}function me(t){return (t=t<=.00304?12.92*t:1.055*Math.pow(t,1/2.4)-.055)<0?0:t>1?1:t}function ge(t){return t>ae?t*t*t:oe*(t-se)}const xe=Object.hasOwn||function(t,e){return Object.prototype.hasOwnProperty.call(t,e)};function ve(t,e){return xe(t,e)?t[e]:void 0}function be(t){return parseInt(t.padEnd(2,t),16)/255}function we(t,e){return _e(e?t/100:t,0,1)}function _e(t,e,r){return Math.min(Math.max(e,t),r)}function Se(t){return !t.some(Number.isNaN)}const Ae={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};function ke(t,e,r){return t+r*(e-t)}function Me(t,e,r){return t.map(((t,n)=>ke(t,e[n],r)))}class Ie{constructor(t,e,r,n=1,i=!0){this.r=t,this.g=e,this.b=r,this.a=n,i||(this.r*=n,this.g*=n,this.b*=n,n||this.overwriteGetter(\"rgb\",[t,e,r,n]));}static parse(t){if(t instanceof Ie)return t;if(\"string\"!=typeof t)return;const e=function(t){if(\"transparent\"===(t=t.toLowerCase().trim()))return [0,0,0,0];const e=ve(Ae,t);if(e){const[t,r,n]=e;return [t/255,r/255,n/255,1]}if(t.startsWith(\"#\")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(t)){const e=t.length<6?1:2;let r=1;return [be(t.slice(r,r+=e)),be(t.slice(r,r+=e)),be(t.slice(r,r+=e)),be(t.slice(r,r+e)||\"ff\")]}if(t.startsWith(\"rgb\")){const e=t.match(/^rgba?\\(\\s*([\\de.+-]+)(%)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)(%)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)(%)?(?:\\s*([,\\/])\\s*([\\de.+-]+)(%)?)?\\s*\\)$/);if(e){const[t,r,n,i,s,a,o,l,u,c,h,p]=e,f=[i||\" \",o||\" \",c].join(\"\");if(\"  \"===f||\"  /\"===f||\",,\"===f||\",,,\"===f){const t=[n,a,u].join(\"\"),e=\"%%%\"===t?100:\"\"===t?255:0;if(e){const t=[_e(+r/e,0,1),_e(+s/e,0,1),_e(+l/e,0,1),h?we(+h,p):1];if(Se(t))return t}}return}}const r=t.match(/^hsla?\\(\\s*([\\de.+-]+)(?:deg)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)%(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)%(?:\\s*([,\\/])\\s*([\\de.+-]+)(%)?)?\\s*\\)$/);if(r){const[t,e,n,i,s,a,o,l,u]=r,c=[n||\" \",s||\" \",o].join(\"\");if(\"  \"===c||\"  /\"===c||\",,\"===c||\",,,\"===c){const t=[+e,_e(+i,0,100),_e(+a,0,100),l?we(+l,u):1];if(Se(t))return function([t,e,r,n]){function i(n){const i=(n+t/30)%12,s=e*Math.min(r,1-r);return r-s*Math.max(-1,Math.min(i-3,9-i,1))}return t=he(t),e/=100,r/=100,[i(0),i(8),i(4),n]}(t)}}}(t);return e?new Ie(...e,!1):void 0}get rgb(){const{r:t,g:e,b:r,a:n}=this,i=n||1/0;return this.overwriteGetter(\"rgb\",[t/i,e/i,r/i,n])}get hcl(){return this.overwriteGetter(\"hcl\",function(t){const[e,r,n,i]=pe(t),s=Math.sqrt(r*r+n*n);return [Math.round(1e4*s)?he(Math.atan2(n,r)*ce):NaN,s,e,i]}(this.rgb))}get lab(){return this.overwriteGetter(\"lab\",pe(this.rgb))}overwriteGetter(t,e){return Object.defineProperty(this,t,{value:e}),e}toString(){const[t,e,r,n]=this.rgb;return `rgba(${[t,e,r].map((t=>Math.round(255*t))).join(\",\")},${n})`}static interpolate(t,e,r,n=\"rgb\"){switch(n){case \"rgb\":{const[n,i,s,a]=Me(t.rgb,e.rgb,r);return new Ie(n,i,s,a,!1)}case \"hcl\":{const[n,i,s,a]=t.hcl,[o,l,u,c]=e.hcl;let h,p;if(isNaN(n)||isNaN(o))isNaN(n)?isNaN(o)?h=NaN:(h=o,1!==s&&0!==s||(p=l)):(h=n,1!==u&&0!==u||(p=i));else {let t=o-n;o>n&&t>180?t-=360:o<n&&n-o>180&&(t+=360),h=n+r*t;}const[f,d,y,m]=function([t,e,r,n]){return t=isNaN(t)?0:t*ue,ye([r,Math.cos(t)*e,Math.sin(t)*e,n])}([h,null!=p?p:ke(i,l,r),ke(s,u,r),ke(a,c,r)]);return new Ie(f,d,y,m,!1)}case \"lab\":{const[n,i,s,a]=ye(Me(t.lab,e.lab,r));return new Ie(n,i,s,a,!1)}}}}Ie.black=new Ie(0,0,0,1),Ie.white=new Ie(1,1,1,1),Ie.transparent=new Ie(0,0,0,0),Ie.red=new Ie(1,0,0,1);class ze{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}}const Pe=[\"bottom\",\"center\",\"top\"];class Ce{constructor(t,e,r,n,i,s){this.text=t,this.image=e,this.scale=r,this.fontStack=n,this.textColor=i,this.verticalAlign=s;}}class Ee{constructor(t){this.sections=t;}static fromString(t){return new Ee([new Ce(t,null,null,null,null,null)])}isEmpty(){return 0===this.sections.length||!this.sections.some((t=>0!==t.text.length||t.image&&0!==t.image.name.length))}static factory(t){return t instanceof Ee?t:Ee.fromString(t)}toString(){return 0===this.sections.length?\"\":this.sections.map((t=>t.text)).join(\"\")}}class Te{constructor(t){this.values=t.slice();}static parse(t){if(t instanceof Te)return t;if(\"number\"==typeof t)return new Te([t,t,t,t]);if(Array.isArray(t)&&!(t.length<1||t.length>4)){for(const e of t)if(\"number\"!=typeof e)return;switch(t.length){case 1:t=[t[0],t[0],t[0],t[0]];break;case 2:t=[t[0],t[1],t[0],t[1]];break;case 3:t=[t[0],t[1],t[2],t[1]];}return new Te(t)}}toString(){return JSON.stringify(this.values)}static interpolate(t,e,r){return new Te(Me(t.values,e.values,r))}}class Be{constructor(t){this.values=t.slice();}static parse(t){if(t instanceof Be)return t;if(\"number\"==typeof t)return new Be([t]);if(Array.isArray(t)){for(const e of t)if(\"number\"!=typeof e)return;return new Be(t)}}toString(){return JSON.stringify(this.values)}static interpolate(t,e,r){return new Be(Me(t.values,e.values,r))}}class Ve{constructor(t){this.values=t.slice();}static parse(t){if(t instanceof Ve)return t;if(\"string\"==typeof t){const e=Ie.parse(t);if(!e)return;return new Ve([e])}if(!Array.isArray(t))return;const e=[];for(const r of t){if(\"string\"!=typeof r)return;const t=Ie.parse(r);if(!t)return;e.push(t);}return new Ve(e)}toString(){return JSON.stringify(this.values)}static interpolate(t,e,r,n=\"rgb\"){const i=[];if(t.values.length!=e.values.length)throw new Error(`colorArray: Arrays have mismatched length (${t.values.length} vs. ${e.values.length}), cannot interpolate.`);for(let s=0;s<t.values.length;s++)i.push(Ie.interpolate(t.values[s],e.values[s],r,n));return new Ve(i)}}class Fe extends Error{constructor(t){super(t),this.name=\"RuntimeError\";}toJSON(){return this.message}}const De=new Set([\"center\",\"left\",\"right\",\"top\",\"bottom\",\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"]);class $e{constructor(t){this.values=t.slice();}static parse(t){if(t instanceof $e)return t;if(Array.isArray(t)&&!(t.length<1)&&t.length%2==0){for(let e=0;e<t.length;e+=2){const r=t[e],n=t[e+1];if(\"string\"!=typeof r||!De.has(r))return;if(!Array.isArray(n)||2!==n.length||\"number\"!=typeof n[0]||\"number\"!=typeof n[1])return}return new $e(t)}}toString(){return JSON.stringify(this.values)}static interpolate(t,e,r){const n=t.values,i=e.values;if(n.length!==i.length)throw new Fe(`Cannot interpolate values of different length. from: ${t.toString()}, to: ${e.toString()}`);const s=[];for(let t=0;t<n.length;t+=2){if(n[t]!==i[t])throw new Fe(`Cannot interpolate values containing mismatched anchors. from[${t}]: ${n[t]}, to[${t}]: ${i[t]}`);s.push(n[t]);const[e,a]=n[t+1],[o,l]=i[t+1];s.push([ke(e,o,r),ke(a,l,r)]);}return new $e(s)}}class Le{constructor(t){this.name=t.name,this.available=t.available;}toString(){return this.name}static fromString(t){return t?new Le({name:t,available:!1}):null}}class Oe{constructor(t,e,r){this.from=t,this.to=e,this.transition=r;}static interpolate(t,e,r){return new Oe(t,e,r)}static parse(t){return t instanceof Oe?t:Array.isArray(t)&&3===t.length&&\"string\"==typeof t[0]&&\"string\"==typeof t[1]&&\"number\"==typeof t[2]?new Oe(t[0],t[1],t[2]):\"object\"==typeof t&&\"string\"==typeof t.from&&\"string\"==typeof t.to&&\"number\"==typeof t.transition?new Oe(t.from,t.to,t.transition):\"string\"==typeof t?new Oe(t,t,1):void 0}}function Re(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 Ue(t){if(null===t||\"string\"==typeof t||\"boolean\"==typeof t||\"number\"==typeof t||t instanceof Oe||t instanceof Ie||t instanceof ze||t instanceof Ee||t instanceof Te||t instanceof Be||t instanceof Ve||t instanceof $e||t instanceof Le)return !0;if(Array.isArray(t)){for(const e of t)if(!Ue(e))return !1;return !0}if(\"object\"==typeof t){for(const e in t)if(!Ue(t[e]))return !1;return !0}return !1}function je(t){if(null===t)return Ft;if(\"string\"==typeof t)return $t;if(\"boolean\"==typeof t)return Lt;if(\"number\"==typeof t)return Dt;if(t instanceof Ie)return Ot;if(t instanceof Oe)return Rt;if(t instanceof ze)return Nt;if(t instanceof Ee)return qt;if(t instanceof Te)return Gt;if(t instanceof Be)return Zt;if(t instanceof Ve)return Xt;if(t instanceof $e)return Ht;if(t instanceof Le)return Yt;if(Array.isArray(t)){const e=t.length;let r;for(const e of t){const t=je(e);if(r){if(r===t)continue;r=jt;break}r=t;}return Kt(r||jt,e)}return Ut}function Ne(t){const e=typeof t;return null===t?\"\":\"string\"===e||\"number\"===e||\"boolean\"===e?String(t):t instanceof Ie||t instanceof Oe||t instanceof Ee||t instanceof Te||t instanceof Be||t instanceof Ve||t instanceof $e||t instanceof Le?t.toString():JSON.stringify(t)}class qe{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(!Ue(t[1]))return e.error(\"invalid value\");const r=t[1];let n=je(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 qe(n,r)}evaluate(){return this.value}eachChild(){}outputDefined(){return !0}}const Ge={string:$t,number:Dt,boolean:Lt,object:Ut};class Xe{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 Ge)||\"object\"===r)return e.error('The item type argument of \"array\" must be one of string, number, boolean',1);i=Ge[r],n++;}else i=jt;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=Kt(i,s);}else {if(!Ge[i])throw new Error(`Types doesn't contain name = ${i}`);r=Ge[i];}const s=[];for(;n<t.length;n++){const r=e.parse(t[n],n,jt);if(!r)return null;s.push(r);}return new Xe(r,s)}evaluate(t){for(let e=0;e<this.args.length;e++){const r=this.args[e].evaluate(t);if(!Qt(this.type,je(r)))return r;if(e===this.args.length-1)throw new Fe(`Expected value to be of type ${Jt(this.type)}, but found ${Jt(je(r))} instead.`)}throw new Error}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}}const Ze={\"to-boolean\":Lt,\"to-color\":Ot,\"to-number\":Dt,\"to-string\":$t};class Ye{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.\");const r=t[0];if(!Ze[r])throw new Error(`Can't parse ${r} as it is not part of the known types`);if((\"to-boolean\"===r||\"to-string\"===r)&&2!==t.length)return e.error(\"Expected one argument.\");const n=Ze[r],i=[];for(let r=1;r<t.length;r++){const n=e.parse(t[r],r,jt);if(!n)return null;i.push(n);}return new Ye(n,i)}evaluate(t){switch(this.type.kind){case \"boolean\":return Boolean(this.args[0].evaluate(t));case \"color\":{let e,r;for(const n of this.args){if(e=n.evaluate(t),r=null,e instanceof Ie)return e;if(\"string\"==typeof e){const r=t.parseColor(e);if(r)return r}else if(Array.isArray(e)&&(r=e.length<3||e.length>4?`Invalid rgba value ${JSON.stringify(e)}: expected an array containing either three or four numeric values.`:Re(e[0],e[1],e[2],e[3]),!r))return new Ie(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new Fe(r||`Could not parse color from value '${\"string\"==typeof e?e:JSON.stringify(e)}'`)}case \"padding\":{let e;for(const r of this.args){e=r.evaluate(t);const n=Te.parse(e);if(n)return n}throw new Fe(`Could not parse padding from value '${\"string\"==typeof e?e:JSON.stringify(e)}'`)}case \"numberArray\":{let e;for(const r of this.args){e=r.evaluate(t);const n=Be.parse(e);if(n)return n}throw new Fe(`Could not parse numberArray from value '${\"string\"==typeof e?e:JSON.stringify(e)}'`)}case \"colorArray\":{let e;for(const r of this.args){e=r.evaluate(t);const n=Ve.parse(e);if(n)return n}throw new Fe(`Could not parse colorArray from value '${\"string\"==typeof e?e:JSON.stringify(e)}'`)}case \"variableAnchorOffsetCollection\":{let e;for(const r of this.args){e=r.evaluate(t);const n=$e.parse(e);if(n)return n}throw new Fe(`Could not parse variableAnchorOffsetCollection from value '${\"string\"==typeof e?e:JSON.stringify(e)}'`)}case \"number\":{let e=null;for(const r of this.args){if(e=r.evaluate(t),null===e)return 0;const n=Number(e);if(!isNaN(n))return n}throw new Fe(`Could not convert ${JSON.stringify(e)} to number.`)}case \"formatted\":return Ee.fromString(Ne(this.args[0].evaluate(t)));case \"resolvedImage\":return Le.fromString(Ne(this.args[0].evaluate(t)));case \"projectionDefinition\":return this.args[0].evaluate(t);default:return Ne(this.args[0].evaluate(t))}}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}}const He=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"];class Ke{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache=new Map,this.availableImages=null,this.canonical=null;}id(){return this.feature&&\"id\"in this.feature?this.feature.id:null}geometryType(){return this.feature?\"number\"==typeof this.feature.type?He[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&\"geometry\"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}parseColor(t){let e=this._parseColorCache.get(t);return e||(e=Ie.parse(t),this._parseColorCache.set(t,e)),e}}class Je{constructor(t,e,r=[],n,i=new Vt,s=[]){this.registry=t,this.path=r,this.key=r.map((t=>`[${t}]`)).join(\"\"),this.scope=i,this.errors=s,this.expectedType=n,this._isConstant=e;}parse(t,e,r,n,i={}){return e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)}_parse(t,e){function r(t,e,r){return \"assert\"===r?new Xe(e,[t]):\"coerce\"===r?new Ye(e,[t]):t}if(null!==t&&\"string\"!=typeof t&&\"boolean\"!=typeof t&&\"number\"!=typeof t||(t=[\"literal\",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');const n=t[0];if(\"string\"!=typeof n)return this.error(`Expression name must be a string, but found ${typeof n} instead. If you wanted a literal array, use [\"literal\", [...]].`,0),null;const i=this.registry[n];if(i){let n=i.parse(t,this);if(!n)return null;if(this.expectedType){const t=this.expectedType,i=n.type;if(\"string\"!==t.kind&&\"number\"!==t.kind&&\"boolean\"!==t.kind&&\"object\"!==t.kind&&\"array\"!==t.kind||\"value\"!==i.kind){if(\"projectionDefinition\"===t.kind&&[\"string\",\"array\"].includes(i.kind)||[\"color\",\"formatted\",\"resolvedImage\"].includes(t.kind)&&[\"value\",\"string\"].includes(i.kind)||[\"padding\",\"numberArray\"].includes(t.kind)&&[\"value\",\"number\",\"array\"].includes(i.kind)||\"colorArray\"===t.kind&&[\"value\",\"string\",\"array\"].includes(i.kind)||\"variableAnchorOffsetCollection\"===t.kind&&[\"value\",\"array\"].includes(i.kind))n=r(n,t,e.typeAnnotation||\"coerce\");else if(this.checkSubtype(t,i))return null}else n=r(n,t,e.typeAnnotation||\"assert\");}if(!(n instanceof qe)&&\"resolvedImage\"!==n.type.kind&&this._isConstant(n)){const t=new Ke;try{n=new qe(n.type,n.evaluate(t));}catch(t){return this.error(t.message),null}}return n}return this.error(`Unknown expression \"${n}\". If you wanted a literal array, use [\"literal\", [...]].`,0)}return this.error(void 0===t?\"'undefined' value invalid. Use null instead.\":\"object\"==typeof t?'Bare objects invalid. Use [\"literal\", {...}] instead.':`Expected an array, but found ${typeof t} instead.`)}concat(t,e,r){const n=\"number\"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new Je(this.registry,this._isConstant,n,e||null,i,this.errors)}error(t,...e){const r=`${this.key}${e.map((t=>`[${t}]`)).join(\"\")}`;this.errors.push(new Bt(r,t));}checkSubtype(t,e){const r=Qt(t,e);return r&&this.error(r),r}}class We{constructor(t,e){this.type=e.type,this.bindings=[].concat(t),this.result=e;}evaluate(t){return this.result.evaluate(t)}eachChild(t){for(const e of this.bindings)t(e[1]);t(this.result);}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found ${t.length-1} instead.`);const r=[];for(let n=1;n<t.length-1;n+=2){const i=t[n];if(\"string\"!=typeof i)return e.error(`Expected string, but found ${typeof i} instead.`,n);if(/[^a-zA-Z0-9_]/.test(i))return e.error(\"Variable names must contain only alphanumeric characters or '_'.\",n);const s=e.parse(t[n+1],n+1);if(!s)return null;r.push([i,s]);}const n=e.parse(t[t.length-1],t.length-1,e.expectedType,r);return n?new We(r,n):null}outputDefined(){return this.result.outputDefined()}}class Qe{constructor(t,e){this.type=e.type,this.name=t,this.boundExpression=e;}static parse(t,e){if(2!==t.length||\"string\"!=typeof t[1])return e.error(\"'var' expression requires exactly one string literal argument.\");const r=t[1];return e.scope.has(r)?new Qe(r,e.scope.get(r)):e.error(`Unknown variable \"${r}\". Make sure \"${r}\" has been bound in an enclosing \"let\" expression before using it.`,1)}evaluate(t){return this.boundExpression.evaluate(t)}eachChild(){}outputDefined(){return !1}}class tr{constructor(t,e,r){this.type=t,this.index=e,this.input=r;}static parse(t,e){if(3!==t.length)return e.error(`Expected 2 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,Dt),n=e.parse(t[2],2,Kt(e.expectedType||jt));return r&&n?new tr(n.type.itemType,r,n):null}evaluate(t){const e=this.index.evaluate(t),r=this.input.evaluate(t);if(e<0)throw new Fe(`Array index out of bounds: ${e} < 0.`);if(e>=r.length)throw new Fe(`Array index out of bounds: ${e} > ${r.length-1}.`);if(e!==Math.floor(e))throw new Fe(`Array index must be an integer, but found ${e} instead.`);return r[e]}eachChild(t){t(this.index),t(this.input);}outputDefined(){return !1}}class er{constructor(t,e){this.type=Lt,this.needle=t,this.haystack=e;}static parse(t,e){if(3!==t.length)return e.error(`Expected 2 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,jt),n=e.parse(t[2],2,jt);return r&&n?te(r.type,[Lt,$t,Dt,Ft,jt])?new er(r,n):e.error(`Expected first argument to be of type boolean, string, number or null, but found ${Jt(r.type)} instead`):null}evaluate(t){const e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!r)return !1;if(!ee(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new Fe(`Expected first argument to be of type boolean, string, number or null, but found ${Jt(je(e))} instead.`);if(!ee(r,[\"string\",\"array\"]))throw new Fe(`Expected second argument to be of type array or string, but found ${Jt(je(r))} instead.`);return r.indexOf(e)>=0}eachChild(t){t(this.needle),t(this.haystack);}outputDefined(){return !0}}class rr{constructor(t,e,r){this.type=Dt,this.needle=t,this.haystack=e,this.fromIndex=r;}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 2 or 3 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,jt),n=e.parse(t[2],2,jt);if(!r||!n)return null;if(!te(r.type,[Lt,$t,Dt,Ft,jt]))return e.error(`Expected first argument to be of type boolean, string, number or null, but found ${Jt(r.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,Dt);return i?new rr(r,n,i):null}return new rr(r,n)}evaluate(t){const e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!ee(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new Fe(`Expected first argument to be of type boolean, string, number or null, but found ${Jt(je(e))} instead.`);let n;if(this.fromIndex&&(n=this.fromIndex.evaluate(t)),ee(r,[\"string\"])){const t=r.indexOf(e,n);return -1===t?-1:[...r.slice(0,t)].length}if(ee(r,[\"array\"]))return r.indexOf(e,n);throw new Fe(`Expected second argument to be of type array or string, but found ${Jt(je(r))} instead.`)}eachChild(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex);}outputDefined(){return !1}}class nr{constructor(t,e,r,n,i,s){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=s;}static parse(t,e){if(t.length<5)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if(t.length%2!=1)return e.error(\"Expected an even number of arguments.\");let r,n;e.expectedType&&\"value\"!==e.expectedType.kind&&(n=e.expectedType);const i={},s=[];for(let a=2;a<t.length-1;a+=2){let o=t[a];const l=t[a+1];Array.isArray(o)||(o=[o]);const u=e.concat(a);if(0===o.length)return u.error(\"Expected at least one branch label.\");for(const t of o){if(\"number\"!=typeof t&&\"string\"!=typeof t)return u.error(\"Branch labels must be numbers or strings.\");if(\"number\"==typeof t&&Math.abs(t)>Number.MAX_SAFE_INTEGER)return u.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(\"number\"==typeof t&&Math.floor(t)!==t)return u.error(\"Numeric branch labels must be integer values.\");if(r){if(u.checkSubtype(r,je(t)))return null}else r=je(t);if(void 0!==i[String(t)])return u.error(\"Branch labels must be unique.\");i[String(t)]=s.length;}const c=e.parse(l,a,n);if(!c)return null;n=n||c.type,s.push(c);}const a=e.parse(t[1],1,jt);if(!a)return null;const o=e.parse(t[t.length-1],t.length-1,n);return o?\"value\"!==a.type.kind&&e.concat(1).checkSubtype(r,a.type)?null:new nr(r,n,a,i,s,o):null}evaluate(t){const e=this.input.evaluate(t);return (je(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)}eachChild(t){t(this.input),this.outputs.forEach(t),t(this.otherwise);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))&&this.otherwise.outputDefined()}}class ir{constructor(t,e,r){this.type=t,this.branches=e,this.otherwise=r;}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found only ${t.length-1}.`);if(t.length%2!=0)return e.error(\"Expected an odd number of arguments.\");let r;e.expectedType&&\"value\"!==e.expectedType.kind&&(r=e.expectedType);const n=[];for(let i=1;i<t.length-1;i+=2){const s=e.parse(t[i],i,Lt);if(!s)return null;const a=e.parse(t[i+1],i+1,r);if(!a)return null;n.push([s,a]),r=r||a.type;}const i=e.parse(t[t.length-1],t.length-1,r);if(!i)return null;if(!r)throw new Error(\"Can't infer output type\");return new ir(r,n,i)}evaluate(t){for(const[e,r]of this.branches)if(e.evaluate(t))return r.evaluate(t);return this.otherwise.evaluate(t)}eachChild(t){for(const[e,r]of this.branches)t(e),t(r);t(this.otherwise);}outputDefined(){return this.branches.every((([t,e])=>e.outputDefined()))&&this.otherwise.outputDefined()}}class sr{constructor(t,e,r,n){this.type=t,this.input=e,this.beginIndex=r,this.endIndex=n;}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 2 or 3 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,jt),n=e.parse(t[2],2,Dt);if(!r||!n)return null;if(!te(r.type,[Kt(jt),$t,jt]))return e.error(`Expected first argument to be of type array or string, but found ${Jt(r.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,Dt);return i?new sr(r.type,r,n,i):null}return new sr(r.type,r,n)}evaluate(t){const e=this.input.evaluate(t),r=this.beginIndex.evaluate(t);let n;if(this.endIndex&&(n=this.endIndex.evaluate(t)),ee(e,[\"string\"]))return [...e].slice(r,n).join(\"\");if(ee(e,[\"array\"]))return e.slice(r,n);throw new Fe(`Expected first argument to be of type array or string, but found ${Jt(je(e))} instead.`)}eachChild(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex);}outputDefined(){return !1}}function ar(t,e){const r=t.length-1;let n,i,s=0,a=r,o=0;for(;s<=a;)if(o=Math.floor((s+a)/2),n=t[o],i=t[o+1],n<=e){if(o===r||e<i)return o;s=o+1;}else {if(!(n>e))throw new Fe(\"Input is not a number.\");a=o-1;}return 0}class or{constructor(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(const[t,e]of r)this.labels.push(t),this.outputs.push(e);}static parse(t,e){if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");const r=e.parse(t[1],1,Dt);if(!r)return null;const n=[];let i=null;e.expectedType&&\"value\"!==e.expectedType.kind&&(i=e.expectedType);for(let r=1;r<t.length;r+=2){const s=1===r?-1/0:t[r],a=t[r+1],o=r,l=r+1;if(\"number\"!=typeof s)return e.error('Input/output pairs for \"step\" expressions must be defined using literal numeric values (not computed expressions) for the input values.',o);if(n.length&&n[n.length-1][0]>=s)return e.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.',o);const u=e.parse(a,l,i);if(!u)return null;i=i||u.type,n.push([s,u]);}return new or(i,r,n)}evaluate(t){const e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);const n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);const i=e.length;return n>=e[i-1]?r[i-1].evaluate(t):r[ar(e,n)].evaluate(t)}eachChild(t){t(this.input);for(const e of this.outputs)t(e);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))}}function lr(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,\"default\")?t.default:t}var ur,cr,hr=function(){if(cr)return ur;function t(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;}return cr=1,ur=t,t.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))}},ur}(),pr=lr(hr);class fr{constructor(t,e,r,n,i){this.type=t,this.operator=e,this.interpolation=r,this.input=n,this.labels=[],this.outputs=[];for(const[t,e]of i)this.labels.push(t),this.outputs.push(e);}static interpolationFactor(t,e,r,n){let i=0;if(\"exponential\"===t.name)i=dr(e,t.base,r,n);else if(\"linear\"===t.name)i=dr(e,1,r,n);else if(\"cubic-bezier\"===t.name){const s=t.controlPoints;i=new pr(s[0],s[1],s[2],s[3]).solve(dr(e,1,r,n));}return i}static parse(t,e){let[r,n,i,...s]=t;if(!Array.isArray(n)||0===n.length)return e.error(\"Expected an interpolation type expression.\",1);if(\"linear\"===n[0])n={name:\"linear\"};else if(\"exponential\"===n[0]){const t=n[1];if(\"number\"!=typeof t)return e.error(\"Exponential interpolation requires a numeric base.\",1,1);n={name:\"exponential\",base:t};}else {if(\"cubic-bezier\"!==n[0])return e.error(`Unknown interpolation type ${String(n[0])}`,1,0);{const t=n.slice(1);if(4!==t.length||t.some((t=>\"number\"!=typeof t||t<0||t>1)))return e.error(\"Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.\",1);n={name:\"cubic-bezier\",controlPoints:t};}}if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");if(i=e.parse(i,2,Dt),!i)return null;const a=[];let o=null;\"interpolate-hcl\"!==r&&\"interpolate-lab\"!==r||e.expectedType==Xt?e.expectedType&&\"value\"!==e.expectedType.kind&&(o=e.expectedType):o=Ot;for(let t=0;t<s.length;t+=2){const r=s[t],n=s[t+1],i=t+3,l=t+4;if(\"number\"!=typeof r)return e.error('Input/output pairs for \"interpolate\" expressions must be defined using literal numeric values (not computed expressions) for the input values.',i);if(a.length&&a[a.length-1][0]>=r)return e.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.',i);const u=e.parse(n,l,o);if(!u)return null;o=o||u.type,a.push([r,u]);}return re(o,Dt)||re(o,Rt)||re(o,Ot)||re(o,Gt)||re(o,Zt)||re(o,Xt)||re(o,Ht)||re(o,Kt(Dt))?new fr(o,r,n,i,a):e.error(`Type ${Jt(o)} is not interpolatable.`)}evaluate(t){const e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);const n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);const i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);const s=ar(e,n),a=fr.interpolationFactor(this.interpolation,n,e[s],e[s+1]),o=r[s].evaluate(t),l=r[s+1].evaluate(t);switch(this.operator){case \"interpolate\":switch(this.type.kind){case \"number\":return ke(o,l,a);case \"color\":return Ie.interpolate(o,l,a);case \"padding\":return Te.interpolate(o,l,a);case \"colorArray\":return Ve.interpolate(o,l,a);case \"numberArray\":return Be.interpolate(o,l,a);case \"variableAnchorOffsetCollection\":return $e.interpolate(o,l,a);case \"array\":return Me(o,l,a);case \"projectionDefinition\":return Oe.interpolate(o,l,a)}case \"interpolate-hcl\":switch(this.type.kind){case \"color\":return Ie.interpolate(o,l,a,\"hcl\");case \"colorArray\":return Ve.interpolate(o,l,a,\"hcl\")}case \"interpolate-lab\":switch(this.type.kind){case \"color\":return Ie.interpolate(o,l,a,\"lab\");case \"colorArray\":return Ve.interpolate(o,l,a,\"lab\")}}}eachChild(t){t(this.input);for(const e of this.outputs)t(e);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))}}function dr(t,e,r,n){const i=n-r,s=t-r;return 0===i?0:1===e?s/i:(Math.pow(e,s)-1)/(Math.pow(e,i)-1)}const yr={color:Ie.interpolate,number:ke,padding:Te.interpolate,numberArray:Be.interpolate,colorArray:Ve.interpolate,variableAnchorOffsetCollection:$e.interpolate,array:Me};class mr{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=null;const n=e.expectedType;n&&\"value\"!==n.kind&&(r=n);const i=[];for(const n of t.slice(1)){const t=e.parse(n,1+i.length,r,void 0,{typeAnnotation:\"omit\"});if(!t)return null;r=r||t.type,i.push(t);}if(!r)throw new Error(\"No output type\");const s=n&&i.some((t=>Qt(n,t.type)));return new mr(s?jt:r,i)}evaluate(t){let e,r=null,n=0;for(const i of this.args)if(n++,r=i.evaluate(t),r&&r instanceof Le&&!r.available&&(e||(e=r.name),r=null,n===this.args.length&&(r=e)),null!==r)break;return r}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}}function gr(t,e){return \"==\"===t||\"!=\"===t?\"boolean\"===e.kind||\"string\"===e.kind||\"number\"===e.kind||\"null\"===e.kind||\"value\"===e.kind:\"string\"===e.kind||\"number\"===e.kind||\"value\"===e.kind}function xr(t,e,r,n){return 0===n.compare(e,r)}function vr(t,e,r){const n=\"==\"!==t&&\"!=\"!==t;return class i{constructor(t,e,r){this.type=Lt,this.lhs=t,this.rhs=e,this.collator=r,this.hasUntypedArgument=\"value\"===t.type.kind||\"value\"===e.type.kind;}static parse(t,e){if(3!==t.length&&4!==t.length)return e.error(\"Expected two or three arguments.\");const r=t[0];let s=e.parse(t[1],1,jt);if(!s)return null;if(!gr(r,s.type))return e.concat(1).error(`\"${r}\" comparisons are not supported for type '${Jt(s.type)}'.`);let a=e.parse(t[2],2,jt);if(!a)return null;if(!gr(r,a.type))return e.concat(2).error(`\"${r}\" comparisons are not supported for type '${Jt(a.type)}'.`);if(s.type.kind!==a.type.kind&&\"value\"!==s.type.kind&&\"value\"!==a.type.kind)return e.error(`Cannot compare types '${Jt(s.type)}' and '${Jt(a.type)}'.`);n&&(\"value\"===s.type.kind&&\"value\"!==a.type.kind?s=new Xe(a.type,[s]):\"value\"!==s.type.kind&&\"value\"===a.type.kind&&(a=new Xe(s.type,[a])));let o=null;if(4===t.length){if(\"string\"!==s.type.kind&&\"string\"!==a.type.kind&&\"value\"!==s.type.kind&&\"value\"!==a.type.kind)return e.error(\"Cannot use collator to compare non-string types.\");if(o=e.parse(t[3],3,Nt),!o)return null}return new i(s,a,o)}evaluate(i){const s=this.lhs.evaluate(i),a=this.rhs.evaluate(i);if(n&&this.hasUntypedArgument){const e=je(s),r=je(a);if(e.kind!==r.kind||\"string\"!==e.kind&&\"number\"!==e.kind)throw new Fe(`Expected arguments for \"${t}\" to be (string, string) or (number, number), but found (${e.kind}, ${r.kind}) instead.`)}if(this.collator&&!n&&this.hasUntypedArgument){const t=je(s),r=je(a);if(\"string\"!==t.kind||\"string\"!==r.kind)return e(i,s,a)}return this.collator?r(i,s,a,this.collator.evaluate(i)):e(i,s,a)}eachChild(t){t(this.lhs),t(this.rhs),this.collator&&t(this.collator);}outputDefined(){return !0}}}const br=vr(\"==\",(function(t,e,r){return e===r}),xr),wr=vr(\"!=\",(function(t,e,r){return e!==r}),(function(t,e,r,n){return !xr(0,e,r,n)})),_r=vr(\"<\",(function(t,e,r){return e<r}),(function(t,e,r,n){return n.compare(e,r)<0})),Sr=vr(\">\",(function(t,e,r){return e>r}),(function(t,e,r,n){return n.compare(e,r)>0})),Ar=vr(\"<=\",(function(t,e,r){return e<=r}),(function(t,e,r,n){return n.compare(e,r)<=0})),kr=vr(\">=\",(function(t,e,r){return e>=r}),(function(t,e,r,n){return n.compare(e,r)>=0}));class Mr{constructor(t,e,r){this.type=Nt,this.locale=r,this.caseSensitive=t,this.diacriticSensitive=e;}static parse(t,e){if(2!==t.length)return e.error(\"Expected one argument.\");const r=t[1];if(\"object\"!=typeof r||Array.isArray(r))return e.error(\"Collator options argument must be an object.\");const n=e.parse(void 0!==r[\"case-sensitive\"]&&r[\"case-sensitive\"],1,Lt);if(!n)return null;const i=e.parse(void 0!==r[\"diacritic-sensitive\"]&&r[\"diacritic-sensitive\"],1,Lt);if(!i)return null;let s=null;return r.locale&&(s=e.parse(r.locale,1,$t),!s)?null:new Mr(n,i,s)}evaluate(t){return new ze(this.caseSensitive.evaluate(t),this.diacriticSensitive.evaluate(t),this.locale?this.locale.evaluate(t):null)}eachChild(t){t(this.caseSensitive),t(this.diacriticSensitive),this.locale&&t(this.locale);}outputDefined(){return !1}}class Ir{constructor(t,e,r,n,i){this.type=$t,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=n,this.maxFractionDigits=i;}static parse(t,e){if(3!==t.length)return e.error(\"Expected two arguments.\");const r=e.parse(t[1],1,Dt);if(!r)return null;const n=t[2];if(\"object\"!=typeof n||Array.isArray(n))return e.error(\"NumberFormat options argument must be an object.\");let i=null;if(n.locale&&(i=e.parse(n.locale,1,$t),!i))return null;let s=null;if(n.currency&&(s=e.parse(n.currency,1,$t),!s))return null;let a=null;if(n[\"min-fraction-digits\"]&&(a=e.parse(n[\"min-fraction-digits\"],1,Dt),!a))return null;let o=null;return n[\"max-fraction-digits\"]&&(o=e.parse(n[\"max-fraction-digits\"],1,Dt),!o)?null:new Ir(r,i,s,a,o)}evaluate(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?\"currency\":\"decimal\",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))}eachChild(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits);}outputDefined(){return !1}}class zr{constructor(t){this.type=qt,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\"==typeof s&&!Array.isArray(s)){i=!1;let t=null;if(s[\"font-scale\"]&&(t=e.parse(s[\"font-scale\"],1,Dt),!t))return null;let r=null;if(s[\"text-font\"]&&(r=e.parse(s[\"text-font\"],1,Kt($t)),!r))return null;let a=null;if(s[\"text-color\"]&&(a=e.parse(s[\"text-color\"],1,Ot),!a))return null;let o=null;if(s[\"vertical-align\"]){if(\"string\"==typeof s[\"vertical-align\"]&&!Pe.includes(s[\"vertical-align\"]))return e.error(`'vertical-align' must be one of: 'bottom', 'center', 'top' but found '${s[\"vertical-align\"]}' instead.`);if(o=e.parse(s[\"vertical-align\"],1,$t),!o)return null}const l=n[n.length-1];l.scale=t,l.font=r,l.textColor=a,l.verticalAlign=o;}else {const s=e.parse(t[r],1,jt);if(!s)return null;const a=s.type.kind;if(\"string\"!==a&&\"value\"!==a&&\"null\"!==a&&\"resolvedImage\"!==a)return e.error(\"Formatted text type must be 'string', 'value', 'image' or 'null'.\");i=!0,n.push({content:s,scale:null,font:null,textColor:null,verticalAlign:null});}}return new zr(n)}evaluate(t){return new Ee(this.sections.map((e=>{const r=e.content.evaluate(t);return je(r)===Yt?new Ce(\"\",r,null,null,null,e.verticalAlign?e.verticalAlign.evaluate(t):null):new Ce(Ne(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(\",\"):null,e.textColor?e.textColor.evaluate(t):null,e.verticalAlign?e.verticalAlign.evaluate(t):null)})))}eachChild(t){for(const e of this.sections)t(e.content),e.scale&&t(e.scale),e.font&&t(e.font),e.textColor&&t(e.textColor),e.verticalAlign&&t(e.verticalAlign);}outputDefined(){return !1}}class Pr{constructor(t){this.type=Yt,this.input=t;}static parse(t,e){if(2!==t.length)return e.error(\"Expected two arguments.\");const r=e.parse(t[1],1,$t);return r?new Pr(r):e.error(\"No image name provided.\")}evaluate(t){const e=this.input.evaluate(t),r=Le.fromString(e);return r&&t.availableImages&&(r.available=t.availableImages.indexOf(e)>-1),r}eachChild(t){t(this.input);}outputDefined(){return !1}}class Cr{constructor(t){this.type=Dt,this.input=t;}static parse(t,e){if(2!==t.length)return e.error(`Expected 1 argument, but found ${t.length-1} instead.`);const r=e.parse(t[1],1);return r?\"array\"!==r.type.kind&&\"string\"!==r.type.kind&&\"value\"!==r.type.kind?e.error(`Expected argument of type string or array, but found ${Jt(r.type)} instead.`):new Cr(r):null}evaluate(t){const e=this.input.evaluate(t);if(\"string\"==typeof e)return [...e].length;if(Array.isArray(e))return e.length;throw new Fe(`Expected value to be of type string or array, but found ${Jt(je(e))} instead.`)}eachChild(t){t(this.input);}outputDefined(){return !1}}const Er=8192;function Tr(t,e){const r=(180+t[0])/360,n=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t[1]*Math.PI/360)))/360,i=Math.pow(2,e.z);return [Math.round(r*i*Er),Math.round(n*i*Er)]}function Br(t,e){const r=Math.pow(2,e.z);return [(i=(t[0]/Er+e.x)/r,360*i-180),(n=(t[1]/Er+e.y)/r,360/Math.PI*Math.atan(Math.exp((180-360*n)*Math.PI/180))-90)];var n,i;}function Vr(t,e){t[0]=Math.min(t[0],e[0]),t[1]=Math.min(t[1],e[1]),t[2]=Math.max(t[2],e[0]),t[3]=Math.max(t[3],e[1]);}function Fr(t,e){return !(t[0]<=e[0]||t[2]>=e[2]||t[1]<=e[1]||t[3]>=e[3])}function Dr(t,e,r){const n=t[0]-e[0],i=t[1]-e[1],s=t[0]-r[0],a=t[1]-r[1];return n*a-s*i==0&&n*s<=0&&i*a<=0}function $r(t,e,r,n){return 0!=(i=[n[0]-r[0],n[1]-r[1]])[0]*(s=[e[0]-t[0],e[1]-t[1]])[1]-i[1]*s[0]&&!(!Nr(t,e,r,n)||!Nr(r,n,t,e));var i,s;}function Lr(t,e,r){for(const n of r)for(let r=0;r<n.length-1;++r)if($r(t,e,n[r],n[r+1]))return !0;return !1}function Or(t,e,r=!1){let n=!1;for(const o of e)for(let e=0;e<o.length-1;e++){if(Dr(t,o[e],o[e+1]))return r;(s=o[e])[1]>(i=t)[1]!=(a=o[e+1])[1]>i[1]&&i[0]<(a[0]-s[0])*(i[1]-s[1])/(a[1]-s[1])+s[0]&&(n=!n);}var i,s,a;return n}function Rr(t,e){for(const r of e)if(Or(t,r))return !0;return !1}function Ur(t,e){for(const r of t)if(!Or(r,e))return !1;for(let r=0;r<t.length-1;++r)if(Lr(t[r],t[r+1],e))return !1;return !0}function jr(t,e){for(const r of e)if(Ur(t,r))return !0;return !1}function Nr(t,e,r,n){const i=n[0]-r[0],s=n[1]-r[1],a=(t[0]-r[0])*s-i*(t[1]-r[1]),o=(e[0]-r[0])*s-i*(e[1]-r[1]);return a>0&&o<0||a<0&&o>0}function qr(t,e,r){const n=[];for(let i=0;i<t.length;i++){const s=[];for(let n=0;n<t[i].length;n++){const a=Tr(t[i][n],r);Vr(e,a),s.push(a);}n.push(s);}return n}function Gr(t,e,r){const n=[];for(let i=0;i<t.length;i++){const s=qr(t[i],e,r);n.push(s);}return n}function Xr(t,e,r,n){if(t[0]<r[0]||t[0]>r[2]){const e=.5*n;let i=t[0]-r[0]>e?-n:r[0]-t[0]>e?n:0;0===i&&(i=t[0]-r[2]>e?-n:r[2]-t[0]>e?n:0),t[0]+=i;}Vr(e,t);}function Zr(t,e,r,n){const i=Math.pow(2,n.z)*Er,s=[n.x*Er,n.y*Er],a=[];for(const n of t)for(const t of n){const n=[t.x+s[0],t.y+s[1]];Xr(n,e,r,i),a.push(n);}return a}function Yr(t,e,r,n){const i=Math.pow(2,n.z)*Er,s=[n.x*Er,n.y*Er],a=[];for(const r of t){const t=[];for(const n of r){const r=[n.x+s[0],n.y+s[1]];Vr(e,r),t.push(r);}a.push(t);}if(e[2]-e[0]<=i/2){(o=e)[0]=o[1]=1/0,o[2]=o[3]=-1/0;for(const t of a)for(const n of t)Xr(n,e,r,i);}var o;return a}class Hr{constructor(t,e){this.type=Lt,this.geojson=t,this.geometries=e;}static parse(t,e){if(2!==t.length)return e.error(`'within' expression requires exactly one argument, but found ${t.length-1} instead.`);if(Ue(t[1])){const e=t[1];if(\"FeatureCollection\"===e.type){const t=[];for(const r of e.features){const{type:e,coordinates:n}=r.geometry;\"Polygon\"===e&&t.push(n),\"MultiPolygon\"===e&&t.push(...n);}if(t.length)return new Hr(e,{type:\"MultiPolygon\",coordinates:t})}else if(\"Feature\"===e.type){const t=e.geometry.type;if(\"Polygon\"===t||\"MultiPolygon\"===t)return new Hr(e,e.geometry)}else if(\"Polygon\"===e.type||\"MultiPolygon\"===e.type)return new Hr(e,e)}return e.error(\"'within' expression requires valid geojson object that contains polygon geometry type.\")}evaluate(t){if(null!=t.geometry()&&null!=t.canonicalID()){if(\"Point\"===t.geometryType())return function(t,e){const r=[1/0,1/0,-1/0,-1/0],n=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if(\"Polygon\"===e.type){const s=qr(e.coordinates,n,i),a=Zr(t.geometry(),r,n,i);if(!Fr(r,n))return !1;for(const t of a)if(!Or(t,s))return !1}if(\"MultiPolygon\"===e.type){const s=Gr(e.coordinates,n,i),a=Zr(t.geometry(),r,n,i);if(!Fr(r,n))return !1;for(const t of a)if(!Rr(t,s))return !1}return !0}(t,this.geometries);if(\"LineString\"===t.geometryType())return function(t,e){const r=[1/0,1/0,-1/0,-1/0],n=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if(\"Polygon\"===e.type){const s=qr(e.coordinates,n,i),a=Yr(t.geometry(),r,n,i);if(!Fr(r,n))return !1;for(const t of a)if(!Ur(t,s))return !1}if(\"MultiPolygon\"===e.type){const s=Gr(e.coordinates,n,i),a=Yr(t.geometry(),r,n,i);if(!Fr(r,n))return !1;for(const t of a)if(!jr(t,s))return !1}return !0}(t,this.geometries)}return !1}eachChild(){}outputDefined(){return !0}}let Kr=class{constructor(t=[],e=(t,e)=>t<e?-1:t>e?1:0){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let t=(this.length>>1)-1;t>=0;t--)this._down(t);}push(t){this.data.push(t),this._up(this.length++);}pop(){if(0===this.length)return;const t=this.data[0],e=this.data.pop();return --this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){const{data:e,compare:r}=this,n=e[t];for(;t>0;){const i=t-1>>1,s=e[i];if(r(n,s)>=0)break;e[t]=s,t=i;}e[t]=n;}_down(t){const{data:e,compare:r}=this,n=this.length>>1,i=e[t];for(;t<n;){let n=1+(t<<1);const s=n+1;if(s<this.length&&r(e[s],e[n])<0&&(n=s),r(e[n],i)>=0)break;e[t]=e[n],t=n;}e[t]=i;}};function Jr(t,e,r=0,n=t.length-1,i=Qr){for(;n>r;){if(n-r>600){const s=n-r+1,a=e-r+1,o=Math.log(s),l=.5*Math.exp(2*o/3),u=.5*Math.sqrt(o*l*(s-l)/s)*(a-s/2<0?-1:1);Jr(t,e,Math.max(r,Math.floor(e-a*l/s+u)),Math.min(n,Math.floor(e+(s-a)*l/s+u)),i);}const s=t[e];let a=r,o=n;for(Wr(t,r,e),i(t[n],s)>0&&Wr(t,r,n);a<o;){for(Wr(t,a,o),a++,o--;i(t[a],s)<0;)a++;for(;i(t[o],s)>0;)o--;}0===i(t[r],s)?Wr(t,r,o):(o++,Wr(t,o,n)),o<=e&&(r=o+1),e<=o&&(n=o-1);}}function Wr(t,e,r){const n=t[e];t[e]=t[r],t[r]=n;}function Qr(t,e){return t<e?-1:t>e?1:0}function tn(t,e){if(t.length<=1)return [t];const r=[];let n,i;for(const e of t){const t=rn(e);0!==t&&(e.area=Math.abs(t),void 0===i&&(i=t<0),i===t<0?(n&&r.push(n),n=[e]):n.push(e));}if(n&&r.push(n),e>1)for(let t=0;t<r.length;t++)r[t].length<=e||(Jr(r[t],e,1,r[t].length-1,en),r[t]=r[t].slice(0,e));return r}function en(t,e){return e.area-t.area}function rn(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}const nn=1/298.257223563,sn=nn*(2-nn),an=Math.PI/180;class on{constructor(t){const e=6378.137*an*1e3,r=Math.cos(t*an),n=1/(1-sn*(1-r*r)),i=Math.sqrt(n);this.kx=e*i*r,this.ky=e*i*n*(1-sn);}distance(t,e){const r=this.wrap(t[0]-e[0])*this.kx,n=(t[1]-e[1])*this.ky;return Math.sqrt(r*r+n*n)}pointOnLine(t,e){let r,n,i,s,a=1/0;for(let o=0;o<t.length-1;o++){let l=t[o][0],u=t[o][1],c=this.wrap(t[o+1][0]-l)*this.kx,h=(t[o+1][1]-u)*this.ky,p=0;0===c&&0===h||(p=(this.wrap(e[0]-l)*this.kx*c+(e[1]-u)*this.ky*h)/(c*c+h*h),p>1?(l=t[o+1][0],u=t[o+1][1]):p>0&&(l+=c/this.kx*p,u+=h/this.ky*p)),c=this.wrap(e[0]-l)*this.kx,h=(e[1]-u)*this.ky;const f=c*c+h*h;f<a&&(a=f,r=l,n=u,i=o,s=p);}return {point:[r,n],index:i,t:Math.max(0,Math.min(1,s))}}wrap(t){for(;t<-180;)t+=360;for(;t>180;)t-=360;return t}}function ln(t,e){return e[0]-t[0]}function un(t){return t[1]-t[0]+1}function cn(t,e){return t[1]>=t[0]&&t[1]<e}function hn(t,e){if(t[0]>t[1])return [null,null];const r=un(t);if(e){if(2===r)return [t,null];const e=Math.floor(r/2);return [[t[0],t[0]+e],[t[0]+e,t[1]]]}if(1===r)return [t,null];const n=Math.floor(r/2)-1;return [[t[0],t[0]+n],[t[0]+n+1,t[1]]]}function pn(t,e){if(!cn(e,t.length))return [1/0,1/0,-1/0,-1/0];const r=[1/0,1/0,-1/0,-1/0];for(let n=e[0];n<=e[1];++n)Vr(r,t[n]);return r}function fn(t){const e=[1/0,1/0,-1/0,-1/0];for(const r of t)for(const t of r)Vr(e,t);return e}function dn(t){return t[0]!==-1/0&&t[1]!==-1/0&&t[2]!==1/0&&t[3]!==1/0}function yn(t,e,r){if(!dn(t)||!dn(e))return NaN;let n=0,i=0;return t[2]<e[0]&&(n=e[0]-t[2]),t[0]>e[2]&&(n=t[0]-e[2]),t[1]>e[3]&&(i=t[1]-e[3]),t[3]<e[1]&&(i=e[1]-t[3]),r.distance([0,0],[n,i])}function mn(t,e,r){const n=r.pointOnLine(e,t);return r.distance(t,n.point)}function gn(t,e,r,n,i){const s=Math.min(mn(t,[r,n],i),mn(e,[r,n],i)),a=Math.min(mn(r,[t,e],i),mn(n,[t,e],i));return Math.min(s,a)}function xn(t,e,r,n,i){if(!cn(e,t.length)||!cn(n,r.length))return 1/0;let s=1/0;for(let a=e[0];a<e[1];++a){const e=t[a],o=t[a+1];for(let t=n[0];t<n[1];++t){const n=r[t],a=r[t+1];if($r(e,o,n,a))return 0;s=Math.min(s,gn(e,o,n,a,i));}}return s}function vn(t,e,r,n,i){if(!cn(e,t.length)||!cn(n,r.length))return NaN;let s=1/0;for(let a=e[0];a<=e[1];++a)for(let e=n[0];e<=n[1];++e)if(s=Math.min(s,i.distance(t[a],r[e])),0===s)return s;return s}function bn(t,e,r){if(Or(t,e,!0))return 0;let n=1/0;for(const i of e){const e=i[0],s=i[i.length-1];if(e!==s&&(n=Math.min(n,mn(t,[s,e],r)),0===n))return n;const a=r.pointOnLine(i,t);if(n=Math.min(n,r.distance(t,a.point)),0===n)return n}return n}function wn(t,e,r,n){if(!cn(e,t.length))return NaN;for(let n=e[0];n<=e[1];++n)if(Or(t[n],r,!0))return 0;let i=1/0;for(let s=e[0];s<e[1];++s){const e=t[s],a=t[s+1];for(const t of r)for(let r=0,s=t.length,o=s-1;r<s;o=r++){const s=t[o],l=t[r];if($r(e,a,s,l))return 0;i=Math.min(i,gn(e,a,s,l,n));}}return i}function _n(t,e){for(const r of t)for(const t of r)if(Or(t,e,!0))return !0;return !1}function Sn(t,e,r,n=1/0){const i=fn(t),s=fn(e);if(n!==1/0&&yn(i,s,r)>=n)return n;if(Fr(i,s)){if(_n(t,e))return 0}else if(_n(e,t))return 0;let a=1/0;for(const n of t)for(let t=0,i=n.length,s=i-1;t<i;s=t++){const i=n[s],o=n[t];for(const t of e)for(let e=0,n=t.length,s=n-1;e<n;s=e++){const n=t[s],l=t[e];if($r(i,o,n,l))return 0;a=Math.min(a,gn(i,o,n,l,r));}}return a}function An(t,e,r,n,i,s){if(!s)return;const a=yn(pn(n,s),i,r);a<e&&t.push([a,s,[0,0]]);}function kn(t,e,r,n,i,s,a){if(!s||!a)return;const o=yn(pn(n,s),pn(i,a),r);o<e&&t.push([o,s,a]);}function Mn(t,e,r,n,i=1/0){let s=Math.min(n.distance(t[0],r[0][0]),i);if(0===s)return s;const a=new Kr([[0,[0,t.length-1],[0,0]]],ln),o=fn(r);for(;a.length>0;){const i=a.pop();if(i[0]>=s)continue;const l=i[1],u=e?50:100;if(un(l)<=u){if(!cn(l,t.length))return NaN;if(e){const e=wn(t,l,r,n);if(isNaN(e)||0===e)return e;s=Math.min(s,e);}else for(let e=l[0];e<=l[1];++e){const i=bn(t[e],r,n);if(s=Math.min(s,i),0===s)return 0}}else {const r=hn(l,e);An(a,s,n,t,o,r[0]),An(a,s,n,t,o,r[1]);}}return s}function In(t,e,r,n,i,s=1/0){let a=Math.min(s,i.distance(t[0],r[0]));if(0===a)return a;const o=new Kr([[0,[0,t.length-1],[0,r.length-1]]],ln);for(;o.length>0;){const s=o.pop();if(s[0]>=a)continue;const l=s[1],u=s[2],c=e?50:100,h=n?50:100;if(un(l)<=c&&un(u)<=h){if(!cn(l,t.length)&&cn(u,r.length))return NaN;let s;if(e&&n)s=xn(t,l,r,u,i),a=Math.min(a,s);else if(e&&!n){const e=t.slice(l[0],l[1]+1);for(let t=u[0];t<=u[1];++t)if(s=mn(r[t],e,i),a=Math.min(a,s),0===a)return a}else if(!e&&n){const e=r.slice(u[0],u[1]+1);for(let r=l[0];r<=l[1];++r)if(s=mn(t[r],e,i),a=Math.min(a,s),0===a)return a}else s=vn(t,l,r,u,i),a=Math.min(a,s);}else {const s=hn(l,e),c=hn(u,n);kn(o,a,i,t,r,s[0],c[0]),kn(o,a,i,t,r,s[0],c[1]),kn(o,a,i,t,r,s[1],c[0]),kn(o,a,i,t,r,s[1],c[1]);}}return a}function zn(t){return \"MultiPolygon\"===t.type?t.coordinates.map((t=>({type:\"Polygon\",coordinates:t}))):\"MultiLineString\"===t.type?t.coordinates.map((t=>({type:\"LineString\",coordinates:t}))):\"MultiPoint\"===t.type?t.coordinates.map((t=>({type:\"Point\",coordinates:t}))):[t]}class Pn{constructor(t,e){this.type=Dt,this.geojson=t,this.geometries=e;}static parse(t,e){if(2!==t.length)return e.error(`'distance' expression requires exactly one argument, but found ${t.length-1} instead.`);if(Ue(t[1])){const e=t[1];if(\"FeatureCollection\"===e.type)return new Pn(e,e.features.map((t=>zn(t.geometry))).flat());if(\"Feature\"===e.type)return new Pn(e,zn(e.geometry));if(\"type\"in e&&\"coordinates\"in e)return new Pn(e,zn(e))}return e.error(\"'distance' expression requires valid geojson object that contains polygon geometry type.\")}evaluate(t){if(null!=t.geometry()&&null!=t.canonicalID()){if(\"Point\"===t.geometryType())return function(t,e){const r=t.geometry(),n=r.flat().map((e=>Br([e.x,e.y],t.canonical)));if(0===r.length)return NaN;const i=new on(n[0][1]);let s=1/0;for(const t of e){switch(t.type){case \"Point\":s=Math.min(s,In(n,!1,[t.coordinates],!1,i,s));break;case \"LineString\":s=Math.min(s,In(n,!1,t.coordinates,!0,i,s));break;case \"Polygon\":s=Math.min(s,Mn(n,!1,t.coordinates,i,s));}if(0===s)return s}return s}(t,this.geometries);if(\"LineString\"===t.geometryType())return function(t,e){const r=t.geometry(),n=r.flat().map((e=>Br([e.x,e.y],t.canonical)));if(0===r.length)return NaN;const i=new on(n[0][1]);let s=1/0;for(const t of e){switch(t.type){case \"Point\":s=Math.min(s,In(n,!0,[t.coordinates],!1,i,s));break;case \"LineString\":s=Math.min(s,In(n,!0,t.coordinates,!0,i,s));break;case \"Polygon\":s=Math.min(s,Mn(n,!0,t.coordinates,i,s));}if(0===s)return s}return s}(t,this.geometries);if(\"Polygon\"===t.geometryType())return function(t,e){const r=t.geometry();if(0===r.length||0===r[0].length)return NaN;const n=tn(r,0).map((e=>e.map((e=>e.map((e=>Br([e.x,e.y],t.canonical))))))),i=new on(n[0][0][0][1]);let s=1/0;for(const t of e)for(const e of n){switch(t.type){case \"Point\":s=Math.min(s,Mn([t.coordinates],!1,e,i,s));break;case \"LineString\":s=Math.min(s,Mn(t.coordinates,!0,e,i,s));break;case \"Polygon\":s=Math.min(s,Sn(e,t.coordinates,i,s));}if(0===s)return s}return s}(t,this.geometries)}return NaN}eachChild(){}outputDefined(){return !0}}class Cn{constructor(t){this.type=jt,this.key=t;}static parse(t,e){if(2!==t.length)return e.error(`Expected 1 argument, but found ${t.length-1} instead.`);const r=t[1];return null==r?e.error(\"Global state property must be defined.\"):\"string\"!=typeof r?e.error(`Global state property must be string, but found ${typeof t[1]} instead.`):new Cn(r)}evaluate(t){var e;const r=null===(e=t.globals)||void 0===e?void 0:e.globalState;return r&&0!==Object.keys(r).length?ve(r,this.key):null}eachChild(){}outputDefined(){return !1}}const En={\"==\":br,\"!=\":wr,\">\":Sr,\"<\":_r,\">=\":kr,\"<=\":Ar,array:Xe,at:tr,boolean:Xe,case:ir,coalesce:mr,collator:Mr,format:zr,image:Pr,in:er,\"index-of\":rr,interpolate:fr,\"interpolate-hcl\":fr,\"interpolate-lab\":fr,length:Cr,let:We,literal:qe,match:nr,number:Xe,\"number-format\":Ir,object:Xe,slice:sr,step:or,string:Xe,\"to-boolean\":Ye,\"to-color\":Ye,\"to-number\":Ye,\"to-string\":Ye,var:Qe,within:Hr,distance:Pn,\"global-state\":Cn};class Tn{constructor(t,e,r,n){this.name=t,this.type=e,this._evaluate=r,this.args=n;}evaluate(t){return this._evaluate(t,this.args)}eachChild(t){this.args.forEach(t);}outputDefined(){return !1}static parse(t,e){const r=t[0],n=Tn.definitions[r];if(!n)return e.error(`Unknown expression \"${r}\". If you wanted a literal array, use [\"literal\", [...]].`,0);const i=Array.isArray(n)?n[0]:n.type,s=Array.isArray(n)?[[n[1],n[2]]]:n.overloads,a=s.filter((([e])=>!Array.isArray(e)||e.length===t.length-1));let o=null;for(const[n,s]of a){o=new Je(e.registry,$n,e.path,null,e.scope);const a=[];let l=!1;for(let e=1;e<t.length;e++){const r=t[e],i=Array.isArray(n)?n[e-1]:n.type,s=o.parse(r,1+a.length,i);if(!s){l=!0;break}a.push(s);}if(!l)if(Array.isArray(n)&&n.length!==a.length)o.error(`Expected ${n.length} arguments, but found ${a.length} instead.`);else {for(let t=0;t<a.length;t++){const e=Array.isArray(n)?n[t]:n.type,r=a[t];o.concat(t+1).checkSubtype(e,r.type);}if(0===o.errors.length)return new Tn(r,i,s,a)}}if(1===a.length)e.errors.push(...o.errors);else {const r=(a.length?a:s).map((([t])=>{return e=t,Array.isArray(e)?`(${e.map(Jt).join(\", \")})`:`(${Jt(e.type)}...)`;var e;})).join(\" | \"),n=[];for(let r=1;r<t.length;r++){const i=e.parse(t[r],1+n.length);if(!i)return null;n.push(Jt(i.type));}e.error(`Expected arguments of type ${r}, but found (${n.join(\", \")}) instead.`);}return null}static register(t,e){Tn.definitions=e;for(const r in e)t[r]=Tn;}}function Bn(t,[e,r,n,i]){e=e.evaluate(t),r=r.evaluate(t),n=n.evaluate(t);const s=i?i.evaluate(t):1,a=Re(e,r,n,s);if(a)throw new Fe(a);return new Ie(e/255,r/255,n/255,s,!1)}function Vn(t,e){return t in e}function Fn(t,e){const r=e[t];return void 0===r?null:r}function Dn(t){return {type:t}}function $n(t){if(t instanceof Qe)return $n(t.boundExpression);if(t instanceof Tn&&\"error\"===t.name)return !1;if(t instanceof Mr)return !1;if(t instanceof Hr)return !1;if(t instanceof Pn)return !1;if(t instanceof Cn)return !1;const e=t instanceof Ye||t instanceof Xe;let r=!0;return t.eachChild((t=>{r=e?r&&$n(t):r&&t instanceof qe;})),!!r&&Ln(t)&&Rn(t,[\"zoom\",\"heatmap-density\",\"elevation\",\"line-progress\",\"accumulated\",\"is-supported-script\"])}function Ln(t){if(t instanceof Tn){if(\"get\"===t.name&&1===t.args.length)return !1;if(\"feature-state\"===t.name)return !1;if(\"has\"===t.name&&1===t.args.length)return !1;if(\"properties\"===t.name||\"geometry-type\"===t.name||\"id\"===t.name)return !1;if(/^filter-/.test(t.name))return !1}if(t instanceof Hr)return !1;if(t instanceof Pn)return !1;let e=!0;return t.eachChild((t=>{e&&!Ln(t)&&(e=!1);})),e}function On(t){if(t instanceof Tn&&\"feature-state\"===t.name)return !1;let e=!0;return t.eachChild((t=>{e&&!On(t)&&(e=!1);})),e}function Rn(t,e){if(t instanceof Tn&&e.indexOf(t.name)>=0)return !1;let r=!0;return t.eachChild((t=>{r&&!Rn(t,e)&&(r=!1);})),r}function Un(t){return {result:\"success\",value:t}}function jn(t){return {result:\"error\",value:t}}function Nn(t){return \"data-driven\"===t[\"property-type\"]||\"cross-faded-data-driven\"===t[\"property-type\"]}function qn(t){return !!t.expression&&t.expression.parameters.indexOf(\"zoom\")>-1}function Gn(t){return !!t.expression&&t.expression.interpolated}function Xn(t){return t instanceof Number?\"number\":t instanceof String?\"string\":t instanceof Boolean?\"boolean\":Array.isArray(t)?\"array\":null===t?\"null\":typeof t}function Zn(t){return \"object\"==typeof t&&null!==t&&!Array.isArray(t)&&je(t)===Ut}function Yn(t){return t}function Hn(t,e){const r=t.stops&&\"object\"==typeof t.stops[0][0],n=r||!(r||void 0!==t.property),i=t.type||(Gn(e)?\"exponential\":\"interval\"),s=function(t){switch(t.type){case \"color\":return Ie.parse;case \"padding\":return Te.parse;case \"numberArray\":return Be.parse;case \"colorArray\":return Ve.parse;default:return null}}(e);if(s&&((t=Tt({},t)).stops&&(t.stops=t.stops.map((t=>[t[0],s(t[1])]))),t.default=s(t.default?t.default:e.default)),t.colorSpace&&\"rgb\"!==(a=t.colorSpace)&&\"hcl\"!==a&&\"lab\"!==a)throw new Error(`Unknown color space: \"${t.colorSpace}\"`);var a;const o=function(t){switch(t){case \"exponential\":return Qn;case \"interval\":return Wn;case \"categorical\":return Jn;case \"identity\":return ti;default:throw new Error(`Unknown function type \"${t}\"`)}}(i);let l,u;if(\"categorical\"===i){l=Object.create(null);for(const e of t.stops)l[e[0]]=e[1];u=typeof t.stops[0][0];}if(r){const r={},n=[];for(let e=0;e<t.stops.length;e++){const i=t.stops[e],s=i[0].zoom;void 0===r[s]&&(r[s]={zoom:s,type:t.type,property:t.property,default:t.default,stops:[]},n.push(s)),r[s].stops.push([i[0].value,i[1]]);}const i=[];for(const t of n)i.push([r[t].zoom,Hn(r[t],e)]);const s={name:\"linear\"};return {kind:\"composite\",interpolationType:s,interpolationFactor:fr.interpolationFactor.bind(void 0,s),zoomStops:i.map((t=>t[0])),evaluate:({zoom:r},n)=>Qn({stops:i,base:t.base},e,r).evaluate(r,n)}}if(n){const r=\"exponential\"===i?{name:\"exponential\",base:void 0!==t.base?t.base:1}:null;return {kind:\"camera\",interpolationType:r,interpolationFactor:fr.interpolationFactor.bind(void 0,r),zoomStops:t.stops.map((t=>t[0])),evaluate:({zoom:r})=>o(t,e,r,l,u)}}return {kind:\"source\",evaluate(r,n){const i=n&&n.properties?n.properties[t.property]:void 0;return void 0===i?Kn(t.default,e.default):o(t,e,i,l,u)}}}function Kn(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function Jn(t,e,r,n,i){return Kn(typeof r===i?n[r]:void 0,t.default,e.default)}function Wn(t,e,r){if(\"number\"!==Xn(r))return Kn(t.default,e.default);const n=t.stops.length;if(1===n)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[n-1][0])return t.stops[n-1][1];const i=ar(t.stops.map((t=>t[0])),r);return t.stops[i][1]}function Qn(t,e,r){const n=void 0!==t.base?t.base:1;if(\"number\"!==Xn(r))return Kn(t.default,e.default);const i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];const s=ar(t.stops.map((t=>t[0])),r),a=function(t,e,r,n){const i=n-r,s=t-r;return 0===i?0:1===e?s/i:(Math.pow(e,s)-1)/(Math.pow(e,i)-1)}(r,n,t.stops[s][0],t.stops[s+1][0]),o=t.stops[s][1],l=t.stops[s+1][1],u=yr[e.type]||Yn;return \"function\"==typeof o.evaluate?{evaluate(...e){const r=o.evaluate.apply(void 0,e),n=l.evaluate.apply(void 0,e);if(void 0!==r&&void 0!==n)return u(r,n,a,t.colorSpace)}}:u(o,l,a,t.colorSpace)}function ti(t,e,r){switch(e.type){case \"color\":r=Ie.parse(r);break;case \"formatted\":r=Ee.fromString(r.toString());break;case \"resolvedImage\":r=Le.fromString(r.toString());break;case \"padding\":r=Te.parse(r);break;case \"colorArray\":r=Ve.parse(r);break;case \"numberArray\":r=Be.parse(r);break;default:Xn(r)===e.type||\"enum\"===e.type&&e.values[r]||(r=void 0);}return Kn(r,t.default,e.default)}Tn.register(En,{error:[{kind:\"error\"},[$t],(t,[e])=>{throw new Fe(e.evaluate(t))}],typeof:[$t,[jt],(t,[e])=>Jt(je(e.evaluate(t)))],\"to-rgba\":[Kt(Dt,4),[Ot],(t,[e])=>{const[r,n,i,s]=e.evaluate(t).rgb;return [255*r,255*n,255*i,s]}],rgb:[Ot,[Dt,Dt,Dt],Bn],rgba:[Ot,[Dt,Dt,Dt,Dt],Bn],has:{type:Lt,overloads:[[[$t],(t,[e])=>Vn(e.evaluate(t),t.properties())],[[$t,Ut],(t,[e,r])=>Vn(e.evaluate(t),r.evaluate(t))]]},get:{type:jt,overloads:[[[$t],(t,[e])=>Fn(e.evaluate(t),t.properties())],[[$t,Ut],(t,[e,r])=>Fn(e.evaluate(t),r.evaluate(t))]]},\"feature-state\":[jt,[$t],(t,[e])=>Fn(e.evaluate(t),t.featureState||{})],properties:[Ut,[],t=>t.properties()],\"geometry-type\":[$t,[],t=>t.geometryType()],id:[jt,[],t=>t.id()],zoom:[Dt,[],t=>t.globals.zoom],\"heatmap-density\":[Dt,[],t=>t.globals.heatmapDensity||0],elevation:[Dt,[],t=>t.globals.elevation||0],\"line-progress\":[Dt,[],t=>t.globals.lineProgress||0],accumulated:[jt,[],t=>void 0===t.globals.accumulated?null:t.globals.accumulated],\"+\":[Dt,Dn(Dt),(t,e)=>{let r=0;for(const n of e)r+=n.evaluate(t);return r}],\"*\":[Dt,Dn(Dt),(t,e)=>{let r=1;for(const n of e)r*=n.evaluate(t);return r}],\"-\":{type:Dt,overloads:[[[Dt,Dt],(t,[e,r])=>e.evaluate(t)-r.evaluate(t)],[[Dt],(t,[e])=>-e.evaluate(t)]]},\"/\":[Dt,[Dt,Dt],(t,[e,r])=>e.evaluate(t)/r.evaluate(t)],\"%\":[Dt,[Dt,Dt],(t,[e,r])=>e.evaluate(t)%r.evaluate(t)],ln2:[Dt,[],()=>Math.LN2],pi:[Dt,[],()=>Math.PI],e:[Dt,[],()=>Math.E],\"^\":[Dt,[Dt,Dt],(t,[e,r])=>Math.pow(e.evaluate(t),r.evaluate(t))],sqrt:[Dt,[Dt],(t,[e])=>Math.sqrt(e.evaluate(t))],log10:[Dt,[Dt],(t,[e])=>Math.log(e.evaluate(t))/Math.LN10],ln:[Dt,[Dt],(t,[e])=>Math.log(e.evaluate(t))],log2:[Dt,[Dt],(t,[e])=>Math.log(e.evaluate(t))/Math.LN2],sin:[Dt,[Dt],(t,[e])=>Math.sin(e.evaluate(t))],cos:[Dt,[Dt],(t,[e])=>Math.cos(e.evaluate(t))],tan:[Dt,[Dt],(t,[e])=>Math.tan(e.evaluate(t))],asin:[Dt,[Dt],(t,[e])=>Math.asin(e.evaluate(t))],acos:[Dt,[Dt],(t,[e])=>Math.acos(e.evaluate(t))],atan:[Dt,[Dt],(t,[e])=>Math.atan(e.evaluate(t))],min:[Dt,Dn(Dt),(t,e)=>Math.min(...e.map((e=>e.evaluate(t))))],max:[Dt,Dn(Dt),(t,e)=>Math.max(...e.map((e=>e.evaluate(t))))],abs:[Dt,[Dt],(t,[e])=>Math.abs(e.evaluate(t))],round:[Dt,[Dt],(t,[e])=>{const r=e.evaluate(t);return r<0?-Math.round(-r):Math.round(r)}],floor:[Dt,[Dt],(t,[e])=>Math.floor(e.evaluate(t))],ceil:[Dt,[Dt],(t,[e])=>Math.ceil(e.evaluate(t))],\"filter-==\":[Lt,[$t,jt],(t,[e,r])=>t.properties()[e.value]===r.value],\"filter-id-==\":[Lt,[jt],(t,[e])=>t.id()===e.value],\"filter-type-==\":[Lt,[$t],(t,[e])=>t.geometryType()===e.value],\"filter-<\":[Lt,[$t,jt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n<i}],\"filter-id-<\":[Lt,[jt],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r<n}],\"filter->\":[Lt,[$t,jt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n>i}],\"filter-id->\":[Lt,[jt],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r>n}],\"filter-<=\":[Lt,[$t,jt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n<=i}],\"filter-id-<=\":[Lt,[jt],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r<=n}],\"filter->=\":[Lt,[$t,jt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n>=i}],\"filter-id->=\":[Lt,[jt],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r>=n}],\"filter-has\":[Lt,[jt],(t,[e])=>e.value in t.properties()],\"filter-has-id\":[Lt,[],t=>null!==t.id()&&void 0!==t.id()],\"filter-type-in\":[Lt,[Kt($t)],(t,[e])=>e.value.indexOf(t.geometryType())>=0],\"filter-id-in\":[Lt,[Kt(jt)],(t,[e])=>e.value.indexOf(t.id())>=0],\"filter-in-small\":[Lt,[$t,Kt(jt)],(t,[e,r])=>r.value.indexOf(t.properties()[e.value])>=0],\"filter-in-large\":[Lt,[$t,Kt(jt)],(t,[e,r])=>function(t,e,r,n){for(;r<=n;){const i=r+n>>1;if(e[i]===t)return !0;e[i]>t?n=i-1:r=i+1;}return !1}(t.properties()[e.value],r.value,0,r.value.length-1)],all:{type:Lt,overloads:[[[Lt,Lt],(t,[e,r])=>e.evaluate(t)&&r.evaluate(t)],[Dn(Lt),(t,e)=>{for(const r of e)if(!r.evaluate(t))return !1;return !0}]]},any:{type:Lt,overloads:[[[Lt,Lt],(t,[e,r])=>e.evaluate(t)||r.evaluate(t)],[Dn(Lt),(t,e)=>{for(const r of e)if(r.evaluate(t))return !0;return !1}]]},\"!\":[Lt,[Lt],(t,[e])=>!e.evaluate(t)],\"is-supported-script\":[Lt,[$t],(t,[e])=>{const r=t.globals&&t.globals.isSupportedScript;return !r||r(e.evaluate(t))}],upcase:[$t,[$t],(t,[e])=>e.evaluate(t).toUpperCase()],downcase:[$t,[$t],(t,[e])=>e.evaluate(t).toLowerCase()],concat:[$t,Dn(jt),(t,e)=>e.map((e=>Ne(e.evaluate(t)))).join(\"\")],\"resolved-locale\":[$t,[Nt],(t,[e])=>e.evaluate(t).resolvedLocale()]});class ei{constructor(t,e,r){this.expression=t,this._warningHistory={},this._evaluator=new Ke,this._defaultValue=e?function(t){if(\"color\"===t.type&&Zn(t.default))return new Ie(0,0,0,0);switch(t.type){case \"color\":return Ie.parse(t.default)||null;case \"padding\":return Te.parse(t.default)||null;case \"numberArray\":return Be.parse(t.default)||null;case \"colorArray\":return Ve.parse(t.default)||null;case \"variableAnchorOffsetCollection\":return $e.parse(t.default)||null;case \"projectionDefinition\":return Oe.parse(t.default)||null;default:return void 0===t.default?null:t.default}}(e):null,this._enumValues=e&&\"enum\"===e.type?e.values:null,this._globalState=r;}evaluateWithoutErrorHandling(t,e,r,n,i,s){return this._globalState&&(t=ci(t,this._globalState)),this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=s,this.expression.evaluate(this._evaluator)}evaluate(t,e,r,n,i,s){this._globalState&&(t=ci(t,this._globalState)),this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=s||null;try{const t=this.expression.evaluate(this._evaluator);if(null==t||\"number\"==typeof t&&t!=t)return this._defaultValue;if(this._enumValues&&!(t in this._enumValues))throw new Fe(`Expected value to be one of ${Object.keys(this._enumValues).map((t=>JSON.stringify(t))).join(\", \")}, but found ${JSON.stringify(t)} instead.`);return t}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,\"undefined\"!=typeof console&&console.warn(t.message)),this._defaultValue}}}function ri(t){return Array.isArray(t)&&t.length>0&&\"string\"==typeof t[0]&&t[0]in En}function ni(t,e,r){const n=new Je(En,$n,[],e?function(t){const e={color:Ot,string:$t,number:Dt,enum:$t,boolean:Lt,formatted:qt,padding:Gt,numberArray:Zt,colorArray:Xt,projectionDefinition:Rt,resolvedImage:Yt,variableAnchorOffsetCollection:Ht};return \"array\"===t.type?Kt(e[t.value]||jt,t.length):e[t.type]}(e):void 0),i=n.parse(t,void 0,void 0,void 0,e&&\"string\"===e.type?{typeAnnotation:\"coerce\"}:void 0);return i?Un(new ei(i,e,r)):jn(n.errors)}class ii{constructor(t,e,r){this.kind=t,this._styleExpression=e,this.isStateDependent=\"constant\"!==t&&!On(e.expression),this.globalStateRefs=ui(e.expression),this._globalState=r;}evaluateWithoutErrorHandling(t,e,r,n,i,s){return this._globalState&&(t=ci(t,this._globalState)),this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,s)}evaluate(t,e,r,n,i,s){return this._globalState&&(t=ci(t,this._globalState)),this._styleExpression.evaluate(t,e,r,n,i,s)}}class si{constructor(t,e,r,n,i){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent=\"camera\"!==t&&!On(e.expression),this.globalStateRefs=ui(e.expression),this.interpolationType=n,this._globalState=i;}evaluateWithoutErrorHandling(t,e,r,n,i,s){return this._globalState&&(t=ci(t,this._globalState)),this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,s)}evaluate(t,e,r,n,i,s){return this._globalState&&(t=ci(t,this._globalState)),this._styleExpression.evaluate(t,e,r,n,i,s)}interpolationFactor(t,e,r){return this.interpolationType?fr.interpolationFactor(this.interpolationType,t,e,r):0}}function ai(t,e,r){const n=ni(t,e,r);if(\"error\"===n.result)return n;const i=n.value.expression,s=Ln(i);if(!s&&!Nn(e))return jn([new Bt(\"\",\"data expressions not supported\")]);const a=Rn(i,[\"zoom\"]);if(!a&&!qn(e))return jn([new Bt(\"\",\"zoom expressions not supported\")]);const o=li(i);return o||a?o instanceof Bt?jn([o]):o instanceof fr&&!Gn(e)?jn([new Bt(\"\",'\"interpolate\" expressions cannot be used with this property')]):Un(o?new si(s?\"camera\":\"composite\",n.value,o.labels,o instanceof fr?o.interpolation:void 0,r):new ii(s?\"constant\":\"source\",n.value,r)):jn([new Bt(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')])}class oi{constructor(t,e){this._parameters=t,this._specification=e,Tt(this,Hn(this._parameters,this._specification));}static deserialize(t){return new oi(t._parameters,t._specification)}static serialize(t){return {_parameters:t._parameters,_specification:t._specification}}}function li(t){let e=null;if(t instanceof We)e=li(t.result);else if(t instanceof mr){for(const r of t.args)if(e=li(r),e)break}else (t instanceof or||t instanceof fr)&&t.input instanceof Tn&&\"zoom\"===t.input.name&&(e=t);return e instanceof Bt||t.eachChild((t=>{const r=li(t);r instanceof Bt?e=r:!e&&r?e=new Bt(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.'):e&&r&&e!==r&&(e=new Bt(\"\",'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.'));})),e}function ui(t,e=new Set){return t instanceof Cn&&e.add(t.key),t.eachChild((t=>{ui(t,e);})),e}function ci(t,e){const{zoom:r,heatmapDensity:n,elevation:i,lineProgress:s,isSupportedScript:a,accumulated:o}=null!=t?t:{};return {zoom:r,heatmapDensity:n,elevation:i,lineProgress:s,isSupportedScript:a,accumulated:o,globalState:e}}function hi(t){if(!0===t||!1===t)return !0;if(!Array.isArray(t)||0===t.length)return !1;switch(t[0]){case \"has\":return t.length>=2&&\"$id\"!==t[1]&&\"$type\"!==t[1];case \"in\":return t.length>=3&&(\"string\"!=typeof t[1]||Array.isArray(t[2]));case \"!in\":case \"!has\":case \"none\":return !1;case \"==\":case \"!=\":case \">\":case \">=\":case \"<\":case \"<=\":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case \"any\":case \"all\":for(const e of t.slice(1))if(!hi(e)&&\"boolean\"!=typeof e)return !1;return !0;default:return !0}}const pi={type:\"boolean\",default:!1,transition:!1,\"property-type\":\"data-driven\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]}};function fi(t,e){if(null==t)return {filter:()=>!0,needGeometry:!1,getGlobalStateRefs:()=>new Set};hi(t)||(t=mi(t));const r=ni(t,pi,e);if(\"error\"===r.result)throw new Error(r.value.map((t=>`${t.key}: ${t.message}`)).join(\", \"));return {filter:(t,e,n)=>r.value.evaluate(t,e,{},n),needGeometry:yi(t),getGlobalStateRefs:()=>ui(r.value.expression)}}function di(t,e){return t<e?-1:t>e?1:0}function yi(t){if(!Array.isArray(t))return !1;if(\"within\"===t[0]||\"distance\"===t[0])return !0;for(let e=1;e<t.length;e++)if(yi(t[e]))return !0;return !1}function mi(t){if(!t)return !0;const e=t[0];return t.length<=1?\"any\"!==e:\"==\"===e?gi(t[1],t[2],\"==\"):\"!=\"===e?bi(gi(t[1],t[2],\"==\")):\"<\"===e||\">\"===e||\"<=\"===e||\">=\"===e?gi(t[1],t[2],e):\"any\"===e?(r=t.slice(1),[\"any\"].concat(r.map(mi))):\"all\"===e?[\"all\"].concat(t.slice(1).map(mi)):\"none\"===e?[\"all\"].concat(t.slice(1).map(mi).map(bi)):\"in\"===e?xi(t[1],t.slice(2)):\"!in\"===e?bi(xi(t[1],t.slice(2))):\"has\"===e?vi(t[1]):\"!has\"!==e||bi(vi(t[1]));var r;}function gi(t,e,r){switch(t){case \"$type\":return [`filter-type-${r}`,e];case \"$id\":return [`filter-id-${r}`,e];default:return [`filter-${r}`,t,e]}}function xi(t,e){if(0===e.length)return !1;switch(t){case \"$type\":return [\"filter-type-in\",[\"literal\",e]];case \"$id\":return [\"filter-id-in\",[\"literal\",e]];default:return e.length>200&&!e.some((t=>typeof t!=typeof e[0]))?[\"filter-in-large\",t,[\"literal\",e.sort(di)]]:[\"filter-in-small\",t,[\"literal\",e]]}}function vi(t){switch(t){case \"$type\":return !0;case \"$id\":return [\"filter-has-id\"];default:return [\"filter-has\",t]}}function bi(t){return [\"!\",t]}function wi(t){const e=typeof t;if(\"number\"===e||\"boolean\"===e||\"string\"===e||null==t)return JSON.stringify(t);if(Array.isArray(t)){let e=\"[\";for(const r of t)e+=`${wi(r)},`;return `${e}]`}const r=Object.keys(t).sort();let n=\"{\";for(let e=0;e<r.length;e++)n+=`${JSON.stringify(r[e])}:${wi(t[r[e]])},`;return `${n}}`}function _i(t){let e=\"\";for(const r of bt)e+=`/${wi(t[r])}`;return e}function Si(t){const e=t.value;return e?[new Et(t.key,e,\"constants have been deprecated as of v8\")]:[]}function Ai(t){return t instanceof Number||t instanceof String||t instanceof Boolean?t.valueOf():t}function ki(t){if(Array.isArray(t))return t.map(ki);if(t instanceof Object&&!(t instanceof Number||t instanceof String||t instanceof Boolean)){const e={};for(const r in t)e[r]=ki(t[r]);return e}return Ai(t)}function Mi(t){const e=t.key,r=t.value,n=t.valueSpec||{},i=t.objectElementValidators||{},s=t.style,a=t.styleSpec,o=t.validateSpec;let l=[];const u=Xn(r);if(\"object\"!==u)return [new Et(e,r,`object expected, ${u} found`)];for(const t in r){const u=t.split(\".\")[0],c=ve(n,u)||n[\"*\"];let h;if(ve(i,u))h=i[u];else if(ve(n,u))h=o;else if(i[\"*\"])h=i[\"*\"];else {if(!n[\"*\"]){l.push(new Et(e,r[t],`unknown property \"${t}\"`));continue}h=o;}l=l.concat(h({key:(e?`${e}.`:e)+t,value:r[t],valueSpec:c,style:s,styleSpec:a,object:r,objectKey:t,validateSpec:o},r));}for(const t in n)i[t]||n[t].required&&void 0===n[t].default&&void 0===r[t]&&l.push(new Et(e,r,`missing required property \"${t}\"`));return l}function Ii(t){const e=t.value,r=t.valueSpec,n=t.style,i=t.styleSpec,s=t.key,a=t.arrayElementValidator||t.validateSpec;if(\"array\"!==Xn(e))return [new Et(s,e,`array expected, ${Xn(e)} found`)];if(r.length&&e.length!==r.length)return [new Et(s,e,`array length ${r.length} expected, length ${e.length} found`)];if(r[\"min-length\"]&&e.length<r[\"min-length\"])return [new Et(s,e,`array length at least ${r[\"min-length\"]} expected, length ${e.length} found`)];let o={type:r.value,values:r.values};i.$version<7&&(o.function=r.function),\"object\"===Xn(r.value)&&(o=r.value);let l=[];for(let r=0;r<e.length;r++)l=l.concat(a({array:e,arrayIndex:r,value:e[r],valueSpec:o,validateSpec:t.validateSpec,style:n,styleSpec:i,key:`${s}[${r}]`}));return l}function zi(t){const e=t.key,r=t.value,n=t.valueSpec;let i=Xn(r);return \"number\"===i&&r!=r&&(i=\"NaN\"),\"number\"!==i?[new Et(e,r,`number expected, ${i} found`)]:\"minimum\"in n&&r<n.minimum?[new Et(e,r,`${r} is less than the minimum value ${n.minimum}`)]:\"maximum\"in n&&r>n.maximum?[new Et(e,r,`${r} is greater than the maximum value ${n.maximum}`)]:[]}function Pi(t){const e=t.valueSpec,r=Ai(t.value.type);let n,i,s,a={};const o=\"categorical\"!==r&&void 0===t.value.property,l=!o,u=\"array\"===Xn(t.value.stops)&&\"array\"===Xn(t.value.stops[0])&&\"object\"===Xn(t.value.stops[0][0]),c=Mi({key:t.key,value:t.value,valueSpec:t.styleSpec.function,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if(\"identity\"===r)return [new Et(t.key,t.value,'identity function may not have a \"stops\" property')];let e=[];const n=t.value;return e=e.concat(Ii({key:t.key,value:n,valueSpec:t.valueSpec,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:h})),\"array\"===Xn(n)&&0===n.length&&e.push(new Et(t.key,n,\"array must have at least one stop\")),e},default:function(t){return t.validateSpec({key:t.key,value:t.value,valueSpec:e,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec})}}});return \"identity\"===r&&o&&c.push(new Et(t.key,t.value,'missing required property \"property\"')),\"identity\"===r||t.value.stops||c.push(new Et(t.key,t.value,'missing required property \"stops\"')),\"exponential\"===r&&t.valueSpec.expression&&!Gn(t.valueSpec)&&c.push(new Et(t.key,t.value,\"exponential functions not supported\")),t.styleSpec.$version>=8&&(l&&!Nn(t.valueSpec)?c.push(new Et(t.key,t.value,\"property functions not supported\")):o&&!qn(t.valueSpec)&&c.push(new Et(t.key,t.value,\"zoom functions not supported\"))),\"categorical\"!==r&&!u||void 0!==t.value.property||c.push(new Et(t.key,t.value,'\"property\" property is required')),c;function h(t){let r=[];const n=t.value,o=t.key;if(\"array\"!==Xn(n))return [new Et(o,n,`array expected, ${Xn(n)} found`)];if(2!==n.length)return [new Et(o,n,`array length 2 expected, length ${n.length} found`)];if(u){if(\"object\"!==Xn(n[0]))return [new Et(o,n,`object expected, ${Xn(n[0])} found`)];if(void 0===n[0].zoom)return [new Et(o,n,\"object stop key must have zoom\")];if(void 0===n[0].value)return [new Et(o,n,\"object stop key must have value\")];if(s&&s>Ai(n[0].zoom))return [new Et(o,n[0].zoom,\"stop zoom values must appear in ascending order\")];Ai(n[0].zoom)!==s&&(s=Ai(n[0].zoom),i=void 0,a={}),r=r.concat(Mi({key:`${o}[0]`,value:n[0],valueSpec:{zoom:{}},validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:zi,value:p}}));}else r=r.concat(p({key:`${o}[0]`,value:n[0],validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec},n));return ri(ki(n[1]))?r.concat([new Et(`${o}[1]`,n[1],\"expressions are not allowed in function stops.\")]):r.concat(t.validateSpec({key:`${o}[1]`,value:n[1],valueSpec:e,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec}))}function p(t,s){const o=Xn(t.value),l=Ai(t.value),u=null!==t.value?t.value:s;if(n){if(o!==n)return [new Et(t.key,u,`${o} stop domain type must match previous stop domain type ${n}`)]}else n=o;if(\"number\"!==o&&\"string\"!==o&&\"boolean\"!==o)return [new Et(t.key,u,\"stop domain value must be a number, string, or boolean\")];if(\"number\"!==o&&\"categorical\"!==r){let n=`number expected, ${o} found`;return Nn(e)&&void 0===r&&(n+='\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.'),[new Et(t.key,u,n)]}return \"categorical\"!==r||\"number\"!==o||isFinite(l)&&Math.floor(l)===l?\"categorical\"!==r&&\"number\"===o&&void 0!==i&&l<i?[new Et(t.key,u,\"stop domain values must appear in ascending order\")]:(i=l,\"categorical\"===r&&l in a?[new Et(t.key,u,\"stop domain values must be unique\")]:(a[l]=!0,[])):[new Et(t.key,u,`integer expected, found ${l}`)]}}function Ci(t){const e=(\"property\"===t.expressionContext?ai:ni)(ki(t.value),t.valueSpec);if(\"error\"===e.result)return e.value.map((e=>new Et(`${t.key}${e.key}`,t.value,e.message)));const r=e.value.expression||e.value._styleExpression.expression;if(\"property\"===t.expressionContext&&\"text-font\"===t.propertyKey&&!r.outputDefined())return [new Et(t.key,t.value,`Invalid data expression for \"${t.propertyKey}\". Output values must be contained as literals within the expression.`)];if(\"property\"===t.expressionContext&&\"layout\"===t.propertyType&&!On(r))return [new Et(t.key,t.value,'\"feature-state\" data expressions are not supported with layout properties.')];if(\"filter\"===t.expressionContext&&!On(r))return [new Et(t.key,t.value,'\"feature-state\" data expressions are not supported with filters.')];if(t.expressionContext&&0===t.expressionContext.indexOf(\"cluster\")){if(!Rn(r,[\"zoom\",\"feature-state\"]))return [new Et(t.key,t.value,'\"zoom\" and \"feature-state\" expressions are not supported with cluster properties.')];if(\"cluster-initial\"===t.expressionContext&&!Ln(r))return [new Et(t.key,t.value,\"Feature data expressions are not supported with initial expression part of cluster properties.\")]}return []}function Ei(t){const e=t.key,r=t.value,n=Xn(r);return \"string\"!==n?[new Et(e,r,`color expected, ${n} found`)]:Ie.parse(String(r))?[]:[new Et(e,r,`color expected, \"${r}\" found`)]}function Ti(t){const e=t.key,r=t.value,n=t.valueSpec,i=[];return Array.isArray(n.values)?-1===n.values.indexOf(Ai(r))&&i.push(new Et(e,r,`expected one of [${n.values.join(\", \")}], ${JSON.stringify(r)} found`)):-1===Object.keys(n.values).indexOf(Ai(r))&&i.push(new Et(e,r,`expected one of [${Object.keys(n.values).join(\", \")}], ${JSON.stringify(r)} found`)),i}function Bi(t){return hi(ki(t.value))?Ci(Tt({},t,{expressionContext:\"filter\",valueSpec:{value:\"boolean\"}})):Vi(t)}function Vi(t){const e=t.value,r=t.key;if(\"array\"!==Xn(e))return [new Et(r,e,`array expected, ${Xn(e)} found`)];const n=t.styleSpec;let i,s=[];if(e.length<1)return [new Et(r,e,\"filter array must have at least 1 element\")];switch(s=s.concat(Ti({key:`${r}[0]`,value:e[0],valueSpec:n.filter_operator,style:t.style,styleSpec:t.styleSpec})),Ai(e[0])){case \"<\":case \"<=\":case \">\":case \">=\":e.length>=2&&\"$type\"===Ai(e[1])&&s.push(new Et(r,e,`\"$type\" cannot be use with operator \"${e[0]}\"`));case \"==\":case \"!=\":3!==e.length&&s.push(new Et(r,e,`filter array for operator \"${e[0]}\" must have 3 elements`));case \"in\":case \"!in\":e.length>=2&&(i=Xn(e[1]),\"string\"!==i&&s.push(new Et(`${r}[1]`,e[1],`string expected, ${i} found`)));for(let a=2;a<e.length;a++)i=Xn(e[a]),\"$type\"===Ai(e[1])?s=s.concat(Ti({key:`${r}[${a}]`,value:e[a],valueSpec:n.geometry_type,style:t.style,styleSpec:t.styleSpec})):\"string\"!==i&&\"number\"!==i&&\"boolean\"!==i&&s.push(new Et(`${r}[${a}]`,e[a],`string, number, or boolean expected, ${i} found`));break;case \"any\":case \"all\":case \"none\":for(let n=1;n<e.length;n++)s=s.concat(Vi({key:`${r}[${n}]`,value:e[n],style:t.style,styleSpec:t.styleSpec}));break;case \"has\":case \"!has\":i=Xn(e[1]),2!==e.length?s.push(new Et(r,e,`filter array for \"${e[0]}\" operator must have 2 elements`)):\"string\"!==i&&s.push(new Et(`${r}[1]`,e[1],`string expected, ${i} found`));}return s}function Fi(t,e){const r=t.key,n=t.validateSpec,i=t.style,s=t.styleSpec,a=t.value,o=t.objectKey,l=s[`${e}_${t.layerType}`];if(!l)return [];const u=o.match(/^(.*)-transition$/);if(\"paint\"===e&&u&&l[u[1]]&&l[u[1]].transition)return n({key:r,value:a,valueSpec:s.transition,style:i,styleSpec:s});const c=t.valueSpec||l[o];if(!c)return [new Et(r,a,`unknown property \"${o}\"`)];let h;if(\"string\"===Xn(a)&&Nn(c)&&!c.tokens&&(h=/^{([^}]+)}$/.exec(a)))return [new Et(r,a,`\"${o}\" does not support interpolation syntax\\nUse an identity property function instead: \\`{ \"type\": \"identity\", \"property\": ${JSON.stringify(h[1])} }\\`.`)];const p=[];return \"symbol\"===t.layerType&&(\"text-field\"===o&&i&&!i.glyphs&&p.push(new Et(r,a,'use of \"text-field\" requires a style \"glyphs\" property')),\"text-font\"===o&&Zn(ki(a))&&\"identity\"===Ai(a.type)&&p.push(new Et(r,a,'\"text-font\" does not support identity functions'))),p.concat(n({key:t.key,value:a,valueSpec:c,style:i,styleSpec:s,expressionContext:\"property\",propertyType:e,propertyKey:o}))}function Di(t){return Fi(t,\"paint\")}function $i(t){return Fi(t,\"layout\")}function Li(t){let e=[];const r=t.value,n=t.key,i=t.style,s=t.styleSpec;if(\"object\"!==Xn(r))return [new Et(n,r,`object expected, ${Xn(r)} found`)];r.type||r.ref||e.push(new Et(n,r,'either \"type\" or \"ref\" is required'));let a=Ai(r.type);const o=Ai(r.ref);if(r.id){const s=Ai(r.id);for(let a=0;a<t.arrayIndex;a++){const t=i.layers[a];Ai(t.id)===s&&e.push(new Et(n,r.id,`duplicate layer id \"${r.id}\", previously used at line ${t.id.__line__}`));}}if(\"ref\"in r){let t;[\"type\",\"source\",\"source-layer\",\"filter\",\"layout\"].forEach((t=>{t in r&&e.push(new Et(n,r[t],`\"${t}\" is prohibited for ref layers`));})),i.layers.forEach((e=>{Ai(e.id)===o&&(t=e);})),t?t.ref?e.push(new Et(n,r.ref,\"ref cannot reference another ref layer\")):a=Ai(t.type):e.push(new Et(n,r.ref,`ref layer \"${o}\" not found`));}else if(\"background\"!==a)if(r.source){const t=i.sources&&i.sources[r.source],s=t&&Ai(t.type);t?\"vector\"===s&&\"raster\"===a?e.push(new Et(n,r.source,`layer \"${r.id}\" requires a raster source`)):\"raster-dem\"!==s&&\"hillshade\"===a||\"raster-dem\"!==s&&\"color-relief\"===a?e.push(new Et(n,r.source,`layer \"${r.id}\" requires a raster-dem source`)):\"raster\"===s&&\"raster\"!==a?e.push(new Et(n,r.source,`layer \"${r.id}\" requires a vector source`)):\"vector\"!==s||r[\"source-layer\"]?\"raster-dem\"===s&&\"hillshade\"!==a&&\"color-relief\"!==a?e.push(new Et(n,r.source,\"raster-dem source can only be used with layer type 'hillshade' or 'color-relief'.\")):\"line\"!==a||!r.paint||!r.paint[\"line-gradient\"]||\"geojson\"===s&&t.lineMetrics||e.push(new Et(n,r,`layer \"${r.id}\" specifies a line-gradient, which requires a GeoJSON source with \\`lineMetrics\\` enabled.`)):e.push(new Et(n,r,`layer \"${r.id}\" must specify a \"source-layer\"`)):e.push(new Et(n,r.source,`source \"${r.source}\" not found`));}else e.push(new Et(n,r,'missing required property \"source\"'));return e=e.concat(Mi({key:n,value:r,valueSpec:s.layer,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,objectElementValidators:{\"*\":()=>[],type:()=>t.validateSpec({key:`${n}.type`,value:r.type,valueSpec:s.layer.type,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,object:r,objectKey:\"type\"}),filter:Bi,layout:t=>Mi({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,objectElementValidators:{\"*\":t=>$i(Tt({layerType:a},t))}}),paint:t=>Mi({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,objectElementValidators:{\"*\":t=>Di(Tt({layerType:a},t))}})}})),e}function Oi(t){const e=t.value,r=t.key,n=Xn(e);return \"string\"!==n?[new Et(r,e,`string expected, ${n} found`)]:[]}const Ri={promoteId:function({key:t,value:e}){if(\"string\"===Xn(e))return Oi({key:t,value:e});{const r=[];for(const n in e)r.push(...Oi({key:`${t}.${n}`,value:e[n]}));return r}}};function Ui(t){const e=t.value,r=t.key,n=t.styleSpec,i=t.style,s=t.validateSpec;if(!e.type)return [new Et(r,e,'\"type\" is required')];const a=Ai(e.type);let o;switch(a){case \"vector\":case \"raster\":return o=Mi({key:r,value:e,valueSpec:n[`source_${a.replace(\"-\",\"_\")}`],style:t.style,styleSpec:n,objectElementValidators:Ri,validateSpec:s}),o;case \"raster-dem\":return o=function(t){var e;const r=null!==(e=t.sourceName)&&void 0!==e?e:\"\",n=t.value,i=t.styleSpec,s=i.source_raster_dem,a=t.style;let o=[];const l=Xn(n);if(void 0===n)return o;if(\"object\"!==l)return o.push(new Et(\"source_raster_dem\",n,`object expected, ${l} found`)),o;const u=\"custom\"===Ai(n.encoding),c=[\"redFactor\",\"greenFactor\",\"blueFactor\",\"baseShift\"],h=t.value.encoding?`\"${t.value.encoding}\"`:\"Default\";for(const e in n)!u&&c.includes(e)?o.push(new Et(e,n[e],`In \"${r}\": \"${e}\" is only valid when \"encoding\" is set to \"custom\". ${h} encoding found`)):s[e]?o=o.concat(t.validateSpec({key:e,value:n[e],valueSpec:s[e],validateSpec:t.validateSpec,style:a,styleSpec:i})):o.push(new Et(e,n[e],`unknown property \"${e}\"`));return o}({sourceName:r,value:e,style:t.style,styleSpec:n,validateSpec:s}),o;case \"geojson\":if(o=Mi({key:r,value:e,valueSpec:n.source_geojson,style:i,styleSpec:n,validateSpec:s,objectElementValidators:Ri}),e.cluster)for(const t in e.clusterProperties){const[n,i]=e.clusterProperties[t],s=\"string\"==typeof n?[n,[\"accumulated\"],[\"get\",t]]:n;o.push(...Ci({key:`${r}.${t}.map`,value:i,expressionContext:\"cluster-map\"})),o.push(...Ci({key:`${r}.${t}.reduce`,value:s,expressionContext:\"cluster-reduce\"}));}return o;case \"video\":return Mi({key:r,value:e,valueSpec:n.source_video,style:i,validateSpec:s,styleSpec:n});case \"image\":return Mi({key:r,value:e,valueSpec:n.source_image,style:i,validateSpec:s,styleSpec:n});case \"canvas\":return [new Et(r,null,\"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.\",\"source.canvas\")];default:return Ti({key:`${r}.type`,value:e.type,valueSpec:{values:[\"vector\",\"raster\",\"raster-dem\",\"geojson\",\"video\",\"image\"]}})}}function ji(t){const e=t.value,r=t.styleSpec,n=r.light,i=t.style;let s=[];const a=Xn(e);if(void 0===e)return s;if(\"object\"!==a)return s=s.concat([new Et(\"light\",e,`object expected, ${a} found`)]),s;for(const a in e){const o=a.match(/^(.*)-transition$/);s=s.concat(o&&n[o[1]]&&n[o[1]].transition?t.validateSpec({key:a,value:e[a],valueSpec:r.transition,validateSpec:t.validateSpec,style:i,styleSpec:r}):n[a]?t.validateSpec({key:a,value:e[a],valueSpec:n[a],validateSpec:t.validateSpec,style:i,styleSpec:r}):[new Et(a,e[a],`unknown property \"${a}\"`)]);}return s}function Ni(t){const e=t.value,r=t.styleSpec,n=r.sky,i=t.style,s=Xn(e);if(void 0===e)return [];if(\"object\"!==s)return [new Et(\"sky\",e,`object expected, ${s} found`)];let a=[];for(const s in e)a=a.concat(n[s]?t.validateSpec({key:s,value:e[s],valueSpec:n[s],style:i,styleSpec:r}):[new Et(s,e[s],`unknown property \"${s}\"`)]);return a}function qi(t){const e=t.value,r=t.styleSpec,n=r.terrain,i=t.style;let s=[];const a=Xn(e);if(void 0===e)return s;if(\"object\"!==a)return s=s.concat([new Et(\"terrain\",e,`object expected, ${a} found`)]),s;for(const a in e)s=s.concat(n[a]?t.validateSpec({key:a,value:e[a],valueSpec:n[a],validateSpec:t.validateSpec,style:i,styleSpec:r}):[new Et(a,e[a],`unknown property \"${a}\"`)]);return s}function Gi(t){let e=[];const r=t.value,n=t.key;if(Array.isArray(r)){const i=[],s=[];for(const a in r)r[a].id&&i.includes(r[a].id)&&e.push(new Et(n,r,`all the sprites' ids must be unique, but ${r[a].id} is duplicated`)),i.push(r[a].id),r[a].url&&s.includes(r[a].url)&&e.push(new Et(n,r,`all the sprites' URLs must be unique, but ${r[a].url} is duplicated`)),s.push(r[a].url),e=e.concat(Mi({key:`${n}[${a}]`,value:r[a],valueSpec:{id:{type:\"string\",required:!0},url:{type:\"string\",required:!0}},validateSpec:t.validateSpec}));return e}return Oi({key:n,value:r})}function Xi(t){return e=t.value,Boolean(e)&&e.constructor===Object?[]:[new Et(t.key,t.value,`object expected, ${Xn(t.value)} found`)];var e;}const Zi={\"*\":()=>[],array:Ii,boolean:function(t){const e=t.value,r=t.key,n=Xn(e);return \"boolean\"!==n?[new Et(r,e,`boolean expected, ${n} found`)]:[]},number:zi,color:Ei,constants:Si,enum:Ti,filter:Bi,function:Pi,layer:Li,object:Mi,source:Ui,light:ji,sky:Ni,terrain:qi,projection:function(t){const e=t.value,r=t.styleSpec,n=r.projection,i=t.style,s=Xn(e);if(void 0===e)return [];if(\"object\"!==s)return [new Et(\"projection\",e,`object expected, ${s} found`)];let a=[];for(const s in e)a=a.concat(n[s]?t.validateSpec({key:s,value:e[s],valueSpec:n[s],style:i,styleSpec:r}):[new Et(s,e[s],`unknown property \"${s}\"`)]);return a},projectionDefinition:function(t){const e=t.key;let r=t.value;r=r instanceof String?r.valueOf():r;const n=Xn(r);return \"array\"!==n||function(t){return Array.isArray(t)&&3===t.length&&\"string\"==typeof t[0]&&\"string\"==typeof t[1]&&\"number\"==typeof t[2]}(r)||function(t){return !![\"interpolate\",\"step\",\"literal\"].includes(t[0])}(r)?[\"array\",\"string\"].includes(n)?[]:[new Et(e,r,`projection expected, invalid type \"${n}\" found`)]:[new Et(e,r,`projection expected, invalid array ${JSON.stringify(r)} found`)]},string:Oi,formatted:function(t){return 0===Oi(t).length?[]:Ci(t)},resolvedImage:function(t){return 0===Oi(t).length?[]:Ci(t)},padding:function(t){const e=t.key,r=t.value;if(\"array\"===Xn(r)){if(r.length<1||r.length>4)return [new Et(e,r,`padding requires 1 to 4 values; ${r.length} values found`)];const n={type:\"number\"};let i=[];for(let s=0;s<r.length;s++)i=i.concat(t.validateSpec({key:`${e}[${s}]`,value:r[s],validateSpec:t.validateSpec,valueSpec:n}));return i}return zi({key:e,value:r,valueSpec:{}})},numberArray:function(t){const e=t.key,r=t.value;if(\"array\"===Xn(r)){const n={type:\"number\"};if(r.length<1)return [new Et(e,r,\"array length at least 1 expected, length 0 found\")];let i=[];for(let s=0;s<r.length;s++)i=i.concat(t.validateSpec({key:`${e}[${s}]`,value:r[s],validateSpec:t.validateSpec,valueSpec:n}));return i}return zi({key:e,value:r,valueSpec:{}})},colorArray:function(t){const e=t.key,r=t.value;if(\"array\"===Xn(r)){if(r.length<1)return [new Et(e,r,\"array length at least 1 expected, length 0 found\")];let t=[];for(let n=0;n<r.length;n++)t=t.concat(Ei({key:`${e}[${n}]`,value:r[n]}));return t}return Ei({key:e,value:r})},variableAnchorOffsetCollection:function(t){const e=t.key,r=t.value,n=Xn(r),i=t.styleSpec;if(\"array\"!==n||r.length<1||r.length%2!=0)return [new Et(e,r,\"variableAnchorOffsetCollection requires a non-empty array of even length\")];let s=[];for(let n=0;n<r.length;n+=2)s=s.concat(Ti({key:`${e}[${n}]`,value:r[n],valueSpec:i.layout_symbol[\"text-anchor\"]})),s=s.concat(Ii({key:`${e}[${n+1}]`,value:r[n+1],valueSpec:{length:2,value:\"number\"},validateSpec:t.validateSpec,style:t.style,styleSpec:i}));return s},sprite:Gi,state:Xi};function Yi(t){const e=t.value,r=t.valueSpec,n=t.styleSpec;return t.validateSpec=Yi,r.expression&&Zn(Ai(e))?Pi(t):r.expression&&ri(ki(e))?Ci(t):r.type&&Zi[r.type]?Zi[r.type](t):Mi(Tt({},t,{valueSpec:r.type?n[r.type]:r}))}function Hi(t){const e=t.value,r=t.key,n=Oi(t);return n.length||(-1===e.indexOf(\"{fontstack}\")&&n.push(new Et(r,e,'\"glyphs\" url must include a \"{fontstack}\" token')),-1===e.indexOf(\"{range}\")&&n.push(new Et(r,e,'\"glyphs\" url must include a \"{range}\" token'))),n}function Ki(t,e=vt){let r=[];return r=r.concat(Yi({key:\"\",value:t,valueSpec:e.$root,styleSpec:e,style:t,validateSpec:Yi,objectElementValidators:{glyphs:Hi,\"*\":()=>[]}})),t.constants&&(r=r.concat(Si({key:\"constants\",value:t.constants}))),Wi(r)}function Ji(t){return function(e){return t(Object.assign({},e,{validateSpec:Yi}))}}function Wi(t){return [].concat(t).sort(((t,e)=>t.line-e.line))}function Qi(t){return function(...e){return Wi(t.apply(this,e))}}Ki.source=Qi(Ji(Ui)),Ki.sprite=Qi(Ji(Gi)),Ki.glyphs=Qi(Ji(Hi)),Ki.light=Qi(Ji(ji)),Ki.sky=Qi(Ji(Ni)),Ki.terrain=Qi(Ji(qi)),Ki.state=Qi(Ji(Xi)),Ki.layer=Qi(Ji(Li)),Ki.filter=Qi(Ji(Bi)),Ki.paintProperty=Qi(Ji(Di)),Ki.layoutProperty=Qi(Ji($i));const ts=Ki,es=ts.light,rs=ts.sky,ns=ts.paintProperty,is=ts.layoutProperty;function ss(t,e){let r=!1;if(e&&e.length)for(const n of e)t.fire(new gt(new Error(n.message))),r=!0;return r}class as{constructor(t,e,r){const n=this.cells=[];if(t instanceof ArrayBuffer){this.arrayBuffer=t;const i=new Int32Array(this.arrayBuffer);t=i[0],this.d=(e=i[1])+2*(r=i[2]);for(let t=0;t<this.d*this.d;t++){const e=i[3+t],r=i[3+t+1];n.push(e===r?null:i.subarray(e,r));}const s=i[3+n.length+1];this.keys=i.subarray(i[3+n.length],s),this.bboxes=i.subarray(s),this.insert=this._insertReadonly;}else {this.d=e+2*r;for(let t=0;t<this.d*this.d;t++)n.push([]);this.keys=[],this.bboxes=[];}this.n=e,this.extent=t,this.padding=r,this.scale=e/t,this.uid=0;const i=r/e*t;this.min=-i,this.max=t+i;}insert(t,e,r,n,i){this._forEachCell(e,r,n,i,this._insertCell,this.uid++,void 0,void 0),this.keys.push(t),this.bboxes.push(e),this.bboxes.push(r),this.bboxes.push(n),this.bboxes.push(i);}_insertReadonly(){throw new Error(\"Cannot insert into a GridIndex created from an ArrayBuffer.\")}_insertCell(t,e,r,n,i,s){this.cells[i].push(s);}query(t,e,r,n,i){const s=this.min,a=this.max;if(t<=s&&e<=s&&a<=r&&a<=n&&!i)return Array.prototype.slice.call(this.keys);{const s=[];return this._forEachCell(t,e,r,n,this._queryCell,s,{},i),s}}_queryCell(t,e,r,n,i,s,a,o){const l=this.cells[i];if(null!==l){const i=this.keys,u=this.bboxes;for(let c=0;c<l.length;c++){const h=l[c];if(void 0===a[h]){const l=4*h;(o?o(u[l+0],u[l+1],u[l+2],u[l+3]):t<=u[l+2]&&e<=u[l+3]&&r>=u[l+0]&&n>=u[l+1])?(a[h]=!0,s.push(i[h])):a[h]=!1;}}}}_forEachCell(t,e,r,n,i,s,a,o){const l=this._convertToCellCoord(t),u=this._convertToCellCoord(e),c=this._convertToCellCoord(r),h=this._convertToCellCoord(n);for(let p=l;p<=c;p++)for(let l=u;l<=h;l++){const u=this.d*l+p;if((!o||o(this._convertFromCellCoord(p),this._convertFromCellCoord(l),this._convertFromCellCoord(p+1),this._convertFromCellCoord(l+1)))&&i.call(this,t,e,r,n,u,s,a,o))return}}_convertFromCellCoord(t){return (t-this.padding)/this.scale}_convertToCellCoord(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;const t=this.cells,e=3+this.cells.length+1+1;let r=0;for(let t=0;t<this.cells.length;t++)r+=this.cells[t].length;const n=new Int32Array(e+r+this.keys.length+this.bboxes.length);n[0]=this.extent,n[1]=this.n,n[2]=this.padding;let i=e;for(let e=0;e<t.length;e++){const r=t[e];n[3+e]=i,n.set(r,i),i+=r.length;}return n[3+t.length]=i,n.set(this.keys,i),i+=this.keys.length,n[3+t.length+1]=i,n.set(this.bboxes,i),i+=this.bboxes.length,n.buffer}static serialize(t,e){const r=t.toArrayBuffer();return e&&e.push(r),{buffer:r}}static deserialize(t){return new as(t.buffer)}}const os={};function ls(t,e,r={}){if(os[t])throw new Error(`${t} is already registered.`);Object.defineProperty(e,\"_classRegistryKey\",{value:t,writeable:!1}),os[t]={klass:e,omit:r.omit||[],shallow:r.shallow||[]};}ls(\"Object\",Object),ls(\"Set\",Set),ls(\"TransferableGridIndex\",as),ls(\"Color\",Ie),ls(\"Error\",Error),ls(\"AJAXError\",ct),ls(\"ResolvedImage\",Le),ls(\"StylePropertyFunction\",oi),ls(\"StyleExpression\",ei,{omit:[\"_evaluator\"]}),ls(\"ZoomDependentExpression\",si),ls(\"ZoomConstantExpression\",ii),ls(\"CompoundExpression\",Tn,{omit:[\"_evaluate\"]});for(const t in En)En[t]._classRegistryKey||ls(`Expression_${t}`,En[t]);function us(t){return t&&\"undefined\"!=typeof ArrayBuffer&&(t instanceof ArrayBuffer||t.constructor&&\"ArrayBuffer\"===t.constructor.name)}function cs(t){return t.$name||t.constructor._classRegistryKey}function hs(t){return !function(t){if(null===t||\"object\"!=typeof t)return !1;const e=cs(t);return !(!e||\"Object\"===e)}(t)&&(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||t instanceof Blob||t instanceof Error||us(t)||H(t)||ArrayBuffer.isView(t)||t instanceof ImageData)}function ps(t,e){if(hs(t))return (us(t)||H(t))&&e&&e.push(t),ArrayBuffer.isView(t)&&e&&e.push(t.buffer),t instanceof ImageData&&e&&e.push(t.data.buffer),t;if(Array.isArray(t)){const r=[];for(const n of t)r.push(ps(n,e));return r}if(\"object\"!=typeof t)throw new Error(\"can't serialize object of type \"+typeof t);const r=cs(t);if(!r)throw new Error(`can't serialize object of unregistered class ${t.constructor.name}`);if(!os[r])throw new Error(`${r} is not registered.`);const{klass:n}=os[r],i=n.serialize?n.serialize(t,e):{};if(n.serialize){if(e&&i===e[e.length-1])throw new Error(\"statically serialized object won't survive transfer of $name property\")}else {for(const n in t){if(!t.hasOwnProperty(n))continue;if(os[r].omit.indexOf(n)>=0)continue;const s=t[n];i[n]=os[r].shallow.indexOf(n)>=0?s:ps(s,e);}t instanceof Error&&(i.message=t.message);}if(i.$name)throw new Error(\"$name property is reserved for worker serialization logic.\");return \"Object\"!==r&&(i.$name=r),i}function fs(t){if(hs(t))return t;if(Array.isArray(t))return t.map(fs);if(\"object\"!=typeof t)throw new Error(\"can't deserialize object of type \"+typeof t);const e=cs(t)||\"Object\";if(!os[e])throw new Error(`can't deserialize unregistered class ${e}`);const{klass:r}=os[e];if(!r)throw new Error(`can't deserialize unregistered class ${e}`);if(r.deserialize)return r.deserialize(t);const n=Object.create(r.prototype);for(const r of Object.keys(t)){if(\"$name\"===r)continue;const i=t[r];n[r]=os[e].shallow.indexOf(r)>=0?i:fs(i);}return n}class ds{constructor(){this.first=!0;}update(t,e){const r=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=r,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=r,!0):(this.lastFloorZoom>r?(this.lastIntegerZoom=r+1,this.lastIntegerZoomTime=e):this.lastFloorZoom<r&&(this.lastIntegerZoom=r,this.lastIntegerZoomTime=e),t!==this.lastZoom&&(this.lastZoom=t,this.lastFloorZoom=r,!0))}}const ys={\"Latin-1 Supplement\":t=>t>=128&&t<=255,\"Hangul Jamo\":t=>t>=4352&&t<=4607,Khmer:t=>t>=6016&&t<=6143,\"General Punctuation\":t=>t>=8192&&t<=8303,\"Letterlike Symbols\":t=>t>=8448&&t<=8527,\"Number Forms\":t=>t>=8528&&t<=8591,\"Miscellaneous Technical\":t=>t>=8960&&t<=9215,\"Control Pictures\":t=>t>=9216&&t<=9279,\"Optical Character Recognition\":t=>t>=9280&&t<=9311,\"Enclosed Alphanumerics\":t=>t>=9312&&t<=9471,\"Geometric Shapes\":t=>t>=9632&&t<=9727,\"Miscellaneous Symbols\":t=>t>=9728&&t<=9983,\"Miscellaneous Symbols and Arrows\":t=>t>=11008&&t<=11263,\"Ideographic Description Characters\":t=>t>=12272&&t<=12287,\"CJK Symbols and Punctuation\":t=>t>=12288&&t<=12351,Hiragana:t=>t>=12352&&t<=12447,Katakana:t=>t>=12448&&t<=12543,Kanbun:t=>t>=12688&&t<=12703,\"CJK Strokes\":t=>t>=12736&&t<=12783,\"Enclosed CJK Letters and Months\":t=>t>=12800&&t<=13055,\"CJK Compatibility\":t=>t>=13056&&t<=13311,\"Yijing Hexagram Symbols\":t=>t>=19904&&t<=19967,\"CJK Unified Ideographs\":t=>t>=19968&&t<=40959,\"Hangul Syllables\":t=>t>=44032&&t<=55215,\"Private Use Area\":t=>t>=57344&&t<=63743,\"Vertical Forms\":t=>t>=65040&&t<=65055,\"CJK Compatibility Forms\":t=>t>=65072&&t<=65103,\"Small Form Variants\":t=>t>=65104&&t<=65135,\"Halfwidth and Fullwidth Forms\":t=>t>=65280&&t<=65519};function ms(t){for(const e of t)if(_s(e.charCodeAt(0)))return !0;return !1}function gs(t){for(const e of t)if(!bs(e.charCodeAt(0)))return !1;return !0}function xs(t){const e=t.map((t=>{try{return new RegExp(`\\\\p{sc=${t}}`,\"u\").source}catch(t){return null}})).filter((t=>t));return new RegExp(e.join(\"|\"),\"u\")}const vs=xs([\"Arab\",\"Dupl\",\"Mong\",\"Ougr\",\"Syrc\"]);function bs(t){return !vs.test(String.fromCodePoint(t))}const ws=xs([\"Bopo\",\"Hani\",\"Hira\",\"Kana\",\"Kits\",\"Nshu\",\"Tang\",\"Yiii\"]);function _s(t){return !(746!==t&&747!==t&&(t<4352||!(ys[\"CJK Compatibility Forms\"](t)&&!(t>=65097&&t<=65103)||ys[\"CJK Compatibility\"](t)||ys[\"CJK Strokes\"](t)||!(!ys[\"CJK Symbols and Punctuation\"](t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||ys[\"Enclosed CJK Letters and Months\"](t)||ys[\"Ideographic Description Characters\"](t)||ys.Kanbun(t)||ys.Katakana(t)&&12540!==t||!(!ys[\"Halfwidth and Fullwidth Forms\"](t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||!(!ys[\"Small Form Variants\"](t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||ys[\"Vertical Forms\"](t)||ys[\"Yijing Hexagram Symbols\"](t)||/\\p{sc=Cans}/u.test(String.fromCodePoint(t))||/\\p{sc=Hang}/u.test(String.fromCodePoint(t))||ws.test(String.fromCodePoint(t)))))}function Ss(t){return !(_s(t)||function(t){return !!(ys[\"Latin-1 Supplement\"](t)&&(167===t||169===t||174===t||177===t||188===t||189===t||190===t||215===t||247===t)||ys[\"General Punctuation\"](t)&&(8214===t||8224===t||8225===t||8240===t||8241===t||8251===t||8252===t||8258===t||8263===t||8264===t||8265===t||8273===t)||ys[\"Letterlike Symbols\"](t)||ys[\"Number Forms\"](t)||ys[\"Miscellaneous Technical\"](t)&&(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||9003===t||t>=9085&&t<=9114||t>=9150&&t<=9165||9167===t||t>=9169&&t<=9179||t>=9186&&t<=9215)||ys[\"Control Pictures\"](t)&&9251!==t||ys[\"Optical Character Recognition\"](t)||ys[\"Enclosed Alphanumerics\"](t)||ys[\"Geometric Shapes\"](t)||ys[\"Miscellaneous Symbols\"](t)&&!(t>=9754&&t<=9759)||ys[\"Miscellaneous Symbols and Arrows\"](t)&&(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243)||ys[\"CJK Symbols and Punctuation\"](t)||ys.Katakana(t)||ys[\"Private Use Area\"](t)||ys[\"CJK Compatibility Forms\"](t)||ys[\"Small Form Variants\"](t)||ys[\"Halfwidth and Fullwidth Forms\"](t)||8734===t||8756===t||8757===t||t>=9984&&t<=10087||t>=10102&&t<=10131||65532===t||65533===t)}(t))}const As=xs([\"Adlm\",\"Arab\",\"Armi\",\"Avst\",\"Chrs\",\"Cprt\",\"Egyp\",\"Elym\",\"Gara\",\"Hatr\",\"Hebr\",\"Hung\",\"Khar\",\"Lydi\",\"Mand\",\"Mani\",\"Mend\",\"Merc\",\"Mero\",\"Narb\",\"Nbat\",\"Nkoo\",\"Orkh\",\"Palm\",\"Phli\",\"Phlp\",\"Phnx\",\"Prti\",\"Rohg\",\"Samr\",\"Sarb\",\"Sogo\",\"Syrc\",\"Thaa\",\"Todr\",\"Yezi\"]);function ks(t){return As.test(String.fromCodePoint(t))}function Ms(t,e){return !(!e&&ks(t)||t>=2304&&t<=3583||t>=3840&&t<=4255||ys.Khmer(t))}function Is(t){for(const e of t)if(ks(e.charCodeAt(0)))return !0;return !1}const zs=new class{constructor(){this.TIMEOUT=5e3,this.applyArabicShaping=null,this.processBidirectionalText=null,this.processStyledBidirectionalText=null,this.pluginStatus=\"unavailable\",this.pluginURL=null,this.loadScriptResolve=()=>{};}setState(t){this.pluginStatus=t.pluginStatus,this.pluginURL=t.pluginURL;}getState(){return {pluginStatus:this.pluginStatus,pluginURL:this.pluginURL}}setMethods(t){if(zs.isParsed())throw new Error(\"RTL text plugin already registered.\");this.applyArabicShaping=t.applyArabicShaping,this.processBidirectionalText=t.processBidirectionalText,this.processStyledBidirectionalText=t.processStyledBidirectionalText,this.loadScriptResolve();}isParsed(){return null!=this.applyArabicShaping&&null!=this.processBidirectionalText&&null!=this.processStyledBidirectionalText}getRTLTextPluginStatus(){return this.pluginStatus}syncState(t,r){return e(this,void 0,void 0,(function*(){if(this.isParsed())return this.getState();if(\"loading\"!==t.pluginStatus)return this.setState(t),t;const e=t.pluginURL,n=new Promise((t=>{this.loadScriptResolve=t;}));r(e);const i=new Promise((t=>setTimeout((()=>t()),this.TIMEOUT)));if(yield Promise.race([n,i]),this.isParsed()){const t={pluginStatus:\"loaded\",pluginURL:e};return this.setState(t),t}throw this.setState({pluginStatus:\"error\",pluginURL:\"\"}),new Error(`RTL Text Plugin failed to import scripts from ${e}`)}))}};class Ps{constructor(t,e){this.isSupportedScript=Cs,this.zoom=t,e?(this.now=e.now||0,this.fadeDuration=e.fadeDuration||0,this.zoomHistory=e.zoomHistory||new ds,this.transition=e.transition||{}):(this.now=0,this.fadeDuration=0,this.zoomHistory=new ds,this.transition={});}crossFadingFactor(){return 0===this.fadeDuration?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){const t=this.zoom,e=t-Math.floor(t),r=this.crossFadingFactor();return t>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*r}:{fromScale:.5,toScale:1,t:1-(1-r)*e}}}function Cs(t){return function(t,e){for(const r of t)if(!Ms(r.charCodeAt(0),e))return !1;return !0}(t,\"loaded\"===zs.getRTLTextPluginStatus())}class Es{constructor(t,e,r){this.property=t,this.value=e,this.expression=function(t,e,r){if(Zn(t))return new oi(t,e);if(ri(t)){const n=ai(t,e,r);if(\"error\"===n.result)throw new Error(n.value.map((t=>`${t.key}: ${t.message}`)).join(\", \"));return n.value}{let r=t;return \"color\"===e.type&&\"string\"==typeof t?r=Ie.parse(t):\"padding\"!==e.type||\"number\"!=typeof t&&!Array.isArray(t)?\"numberArray\"!==e.type||\"number\"!=typeof t&&!Array.isArray(t)?\"colorArray\"!==e.type||\"string\"!=typeof t&&!Array.isArray(t)?\"variableAnchorOffsetCollection\"===e.type&&Array.isArray(t)?r=$e.parse(t):\"projectionDefinition\"===e.type&&\"string\"==typeof t&&(r=Oe.parse(t)):r=Ve.parse(t):r=Be.parse(t):r=Te.parse(t),{globalStateRefs:new Set,_globalState:null,kind:\"constant\",evaluate:()=>r}}}(void 0===e?t.specification.default:e,t.specification,r);}isDataDriven(){return \"source\"===this.expression.kind||\"composite\"===this.expression.kind}getGlobalStateRefs(){return this.expression.globalStateRefs||new Set}possiblyEvaluate(t,e,r){return this.property.possiblyEvaluate(this,t,e,r)}}class Ts{constructor(t,e){this.property=t,this.value=new Es(t,void 0,e);}transitioned(t,e){return new Vs(this.property,this.value,e,L({},t.transition,this.transition),t.now)}untransitioned(){return new Vs(this.property,this.value,null,{},0)}}class Bs{constructor(t,e){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues),this._globalState=e;}getValue(t){return j(this._values[t].value.value)}setValue(t,e){Object.prototype.hasOwnProperty.call(this._values,t)||(this._values[t]=new Ts(this._values[t].property,this._globalState)),this._values[t].value=new Es(this._values[t].property,null===e?void 0:j(e),this._globalState);}getTransition(t){return j(this._values[t].transition)}setTransition(t,e){Object.prototype.hasOwnProperty.call(this._values,t)||(this._values[t]=new Ts(this._values[t].property,this._globalState)),this._values[t].transition=j(e)||void 0;}serialize(){const t={};for(const e of Object.keys(this._values)){const r=this.getValue(e);void 0!==r&&(t[e]=r);const n=this.getTransition(e);void 0!==n&&(t[`${e}-transition`]=n);}return t}transitioned(t,e){const r=new Fs(this._properties);for(const n of Object.keys(this._values))r._values[n]=this._values[n].transitioned(t,e._values[n]);return r}untransitioned(){const t=new Fs(this._properties);for(const e of Object.keys(this._values))t._values[e]=this._values[e].untransitioned();return t}}class Vs{constructor(t,e,r,n,i){this.property=t,this.value=e,this.begin=i+n.delay||0,this.end=this.begin+n.duration||0,t.specification.transition&&(n.delay||n.duration)&&(this.prior=r);}possiblyEvaluate(t,e,r){const n=t.now||0,i=this.value.possiblyEvaluate(t,e,r),s=this.prior;if(s){if(n>this.end)return this.prior=null,i;if(this.value.isDataDriven())return this.prior=null,i;if(n<this.begin)return s.possiblyEvaluate(t,e,r);{const a=(n-this.begin)/(this.end-this.begin);return this.property.interpolate(s.possiblyEvaluate(t,e,r),i,B(a))}}return i}}class Fs{constructor(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues);}possiblyEvaluate(t,e,r){const n=new Ls(this._properties);for(const i of Object.keys(this._values))n._values[i]=this._values[i].possiblyEvaluate(t,e,r);return n}hasTransition(){for(const t of Object.keys(this._values))if(this._values[t].prior)return !0;return !1}}class Ds{constructor(t,e){this._properties=t,this._values=Object.create(t.defaultPropertyValues),this._globalState=e;}hasValue(t){return void 0!==this._values[t].value}getValue(t){return j(this._values[t].value)}setValue(t,e){this._values[t]=new Es(this._values[t].property,null===e?void 0:j(e),this._globalState);}serialize(){const t={};for(const e of Object.keys(this._values)){const r=this.getValue(e);void 0!==r&&(t[e]=r);}return t}possiblyEvaluate(t,e,r){const n=new Ls(this._properties);for(const i of Object.keys(this._values))n._values[i]=this._values[i].possiblyEvaluate(t,e,r);return n}}class $s{constructor(t,e,r){this.property=t,this.value=e,this.parameters=r;}isConstant(){return \"constant\"===this.value.kind}constantOr(t){return \"constant\"===this.value.kind?this.value.value:t}evaluate(t,e,r,n){return this.property.evaluate(this.value,this.parameters,t,e,r,n)}}class Ls{constructor(t){this._properties=t,this._values=Object.create(t.defaultPossiblyEvaluatedValues);}get(t){return this._values[t]}}class Os{constructor(t){this.specification=t;}possiblyEvaluate(t,e){if(t.isDataDriven())throw new Error(\"Value should not be data driven\");return t.expression.evaluate(e)}interpolate(t,e,r){const n=yr[this.specification.type];return n?n(t,e,r):t}}class Rs{constructor(t,e){this.specification=t,this.overrides=e;}possiblyEvaluate(t,e,r,n){return new $s(this,\"constant\"===t.expression.kind||\"camera\"===t.expression.kind?{kind:\"constant\",value:t.expression.evaluate(e,null,{},r,n)}:t.expression,e)}interpolate(t,e,r){if(\"constant\"!==t.value.kind||\"constant\"!==e.value.kind)return t;if(void 0===t.value.value||void 0===e.value.value)return new $s(this,{kind:\"constant\",value:void 0},t.parameters);const n=yr[this.specification.type];if(n){const i=n(t.value.value,e.value.value,r);return new $s(this,{kind:\"constant\",value:i},t.parameters)}return t}evaluate(t,e,r,n,i,s){return \"constant\"===t.kind?t.value:t.evaluate(e,r,n,i,s)}}class Us extends Rs{possiblyEvaluate(t,e,r,n){if(void 0===t.value)return new $s(this,{kind:\"constant\",value:void 0},e);if(\"constant\"===t.expression.kind){const i=t.expression.evaluate(e,null,{},r,n),s=\"resolvedImage\"===t.property.specification.type&&\"string\"!=typeof i?i.name:i,a=this._calculate(s,s,s,e);return new $s(this,{kind:\"constant\",value:a},e)}if(\"camera\"===t.expression.kind){const r=this._calculate(t.expression.evaluate({zoom:e.zoom-1}),t.expression.evaluate({zoom:e.zoom}),t.expression.evaluate({zoom:e.zoom+1}),e);return new $s(this,{kind:\"constant\",value:r},e)}return new $s(this,t.expression,e)}evaluate(t,e,r,n,i,s){if(\"source\"===t.kind){const a=t.evaluate(e,r,n,i,s);return this._calculate(a,a,a,e)}return \"composite\"===t.kind?this._calculate(t.evaluate({zoom:Math.floor(e.zoom)-1},r,n),t.evaluate({zoom:Math.floor(e.zoom)},r,n),t.evaluate({zoom:Math.floor(e.zoom)+1},r,n),e):t.value}_calculate(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}}interpolate(t){return t}}class js{constructor(t){this.specification=t;}possiblyEvaluate(t,e,r,n){if(void 0!==t.value){if(\"constant\"===t.expression.kind){const i=t.expression.evaluate(e,null,{},r,n);return this._calculate(i,i,i,e)}return this._calculate(t.expression.evaluate(new Ps(Math.floor(e.zoom-1),e)),t.expression.evaluate(new Ps(Math.floor(e.zoom),e)),t.expression.evaluate(new Ps(Math.floor(e.zoom+1),e)),e)}}_calculate(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}}interpolate(t){return t}}class Ns{constructor(t){this.specification=t;}possiblyEvaluate(t,e,r,n){return !!t.expression.evaluate(e,null,{},r,n)}interpolate(){return !1}}class qs{constructor(t){this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(const e in t){const r=t[e];r.specification.overridable&&this.overridableProperties.push(e);const n=this.defaultPropertyValues[e]=new Es(r,void 0,void 0),i=this.defaultTransitionablePropertyValues[e]=new Ts(r,void 0);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=n.possiblyEvaluate({});}}}ls(\"DataDrivenProperty\",Rs),ls(\"DataConstantProperty\",Os),ls(\"CrossFadedDataDrivenProperty\",Us),ls(\"CrossFadedProperty\",js),ls(\"ColorRampProperty\",Ns);const Gs=\"-transition\";class Xs extends xt{constructor(t,e,r){if(super(),this.id=t.id,this.type=t.type,this._globalState=r,this._featureFilter={filter:()=>!0,needGeometry:!1,getGlobalStateRefs:()=>new Set},\"custom\"!==t.type&&(this.metadata=t.metadata,this.minzoom=t.minzoom,this.maxzoom=t.maxzoom,\"background\"!==t.type&&(this.source=t.source,this.sourceLayer=t[\"source-layer\"],this.filter=t.filter,this._featureFilter=fi(t.filter,r)),e.layout&&(this._unevaluatedLayout=new Ds(e.layout,r)),e.paint)){this._transitionablePaint=new Bs(e.paint,r);for(const e in t.paint)this.setPaintProperty(e,t.paint[e],{validate:!1});for(const e in t.layout)this.setLayoutProperty(e,t.layout[e],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new Ls(e.paint);}}setFilter(t){this.filter=t,this._featureFilter=fi(t,this._globalState);}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(t){return \"visibility\"===t?this.visibility:this._unevaluatedLayout.getValue(t)}getLayoutAffectingGlobalStateRefs(){const t=new Set;if(this._unevaluatedLayout)for(const e in this._unevaluatedLayout._values){const r=this._unevaluatedLayout._values[e];for(const e of r.getGlobalStateRefs())t.add(e);}for(const e of this._featureFilter.getGlobalStateRefs())t.add(e);return t}getPaintAffectingGlobalStateRefs(){var t;const e=new globalThis.Map;if(this._transitionablePaint)for(const r in this._transitionablePaint._values){const n=this._transitionablePaint._values[r].value;for(const i of n.getGlobalStateRefs()){const s=null!==(t=e.get(i))&&void 0!==t?t:[];s.push({name:r,value:n.value}),e.set(i,s);}}return e}setLayoutProperty(t,e,r={}){null!=e&&this._validate(is,`layers.${this.id}.layout.${t}`,t,e,r)||(\"visibility\"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=e);}getPaintProperty(t){return t.endsWith(Gs)?this._transitionablePaint.getTransition(t.slice(0,-11)):this._transitionablePaint.getValue(t)}setPaintProperty(t,e,r={}){if(null!=e&&this._validate(ns,`layers.${this.id}.paint.${t}`,t,e,r))return !1;if(t.endsWith(Gs))return this._transitionablePaint.setTransition(t.slice(0,-11),e||void 0),!1;{const r=this._transitionablePaint._values[t],n=\"cross-faded-data-driven\"===r.property.specification[\"property-type\"],i=r.value.isDataDriven(),s=r.value;this._transitionablePaint.setValue(t,e),this._handleSpecialPaintPropertyUpdate(t);const a=this._transitionablePaint._values[t].value;return a.isDataDriven()||i||n||this._handleOverridablePaintPropertyUpdate(t,s,a)}}_handleSpecialPaintPropertyUpdate(t){}_handleOverridablePaintPropertyUpdate(t,e,r){return !1}isHidden(t,e=!1){return !!(this.minzoom&&t<(e?Math.floor(this.minzoom):this.minzoom))||!!(this.maxzoom&&t>=this.maxzoom)||\"none\"===this.visibility}updateTransitions(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint);}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(t,e){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,void 0,e)),this.paint=this._transitioningPaint.possiblyEvaluate(t,void 0,e);}serialize(){const t={id:this.id,type:this.type,source:this.source,\"source-layer\":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(t.layout=t.layout||{},t.layout.visibility=this.visibility),U(t,((t,e)=>!(void 0===t||\"layout\"===e&&!Object.keys(t).length||\"paint\"===e&&!Object.keys(t).length)))}_validate(t,e,r,n,i={}){return (!i||!1!==i.validate)&&ss(this,t.call(ts,{key:e,layerType:this.type,objectKey:r,value:n,styleSpec:vt,style:{glyphs:!0,sprite:!0}}))}is3D(){return !1}isTileClipped(){return !1}hasOffscreenPass(){return !1}resize(){}isStateDependent(){for(const t in this.paint._values){const e=this.paint.get(t);if(e instanceof $s&&Nn(e.property.specification)&&(\"source\"===e.value.kind||\"composite\"===e.value.kind)&&e.value.isStateDependent)return !0}return !1}}let Zs;var Ys={get paint(){return Zs=Zs||new qs({\"raster-opacity\":new Os(vt.paint_raster[\"raster-opacity\"]),\"raster-hue-rotate\":new Os(vt.paint_raster[\"raster-hue-rotate\"]),\"raster-brightness-min\":new Os(vt.paint_raster[\"raster-brightness-min\"]),\"raster-brightness-max\":new Os(vt.paint_raster[\"raster-brightness-max\"]),\"raster-saturation\":new Os(vt.paint_raster[\"raster-saturation\"]),\"raster-contrast\":new Os(vt.paint_raster[\"raster-contrast\"]),\"raster-resampling\":new Os(vt.paint_raster[\"raster-resampling\"]),\"raster-fade-duration\":new Os(vt.paint_raster[\"raster-fade-duration\"])})}};class Hs extends Xs{constructor(t,e){super(t,Ys,e);}}const Ks={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class Js{constructor(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8;}}class Ws{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0);}static serialize(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}}static deserialize(t){const e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews());}clear(){this.length=0;}resize(t){this.reserve(t),this.length=t;}reserve(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);const e=this.uint8;this._refreshViews(),e&&this.uint8.set(e);}}_refreshViews(){throw new Error(\"_refreshViews() must be implemented by each concrete StructArray layout\")}}function Qs(t,e=1){let r=0,n=0;return {members:t.map((t=>{const i=Ks[t.type].BYTES_PER_ELEMENT,s=r=ta(r,Math.max(e,i)),a=t.components||1;return n=Math.max(n,i),r+=i*a,{name:t.name,type:t.type,components:a,offset:s}})),size:ta(r,Math.max(n,e)),alignment:e}}function ta(t,e){return Math.ceil(t/e)*e}class ea extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.int16[n+0]=e,this.int16[n+1]=r,t}}ea.prototype.bytesPerElement=4,ls(\"StructArrayLayout2i4\",ea);class ra extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.int16[i+0]=e,this.int16[i+1]=r,this.int16[i+2]=n,t}}ra.prototype.bytesPerElement=6,ls(\"StructArrayLayout3i6\",ra);class na extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const s=4*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,t}}na.prototype.bytesPerElement=8,ls(\"StructArrayLayout4i8\",na);class ia extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s){const a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,n,i,s)}emplace(t,e,r,n,i,s,a){const o=6*t;return this.int16[o+0]=e,this.int16[o+1]=r,this.int16[o+2]=n,this.int16[o+3]=i,this.int16[o+4]=s,this.int16[o+5]=a,t}}ia.prototype.bytesPerElement=12,ls(\"StructArrayLayout2i4i12\",ia);class sa extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s){const a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,n,i,s)}emplace(t,e,r,n,i,s,a){const o=4*t,l=8*t;return this.int16[o+0]=e,this.int16[o+1]=r,this.uint8[l+4]=n,this.uint8[l+5]=i,this.uint8[l+6]=s,this.uint8[l+7]=a,t}}sa.prototype.bytesPerElement=8,ls(\"StructArrayLayout2i4ub8\",sa);class aa extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.float32[n+0]=e,this.float32[n+1]=r,t}}aa.prototype.bytesPerElement=8,ls(\"StructArrayLayout2f8\",aa);class oa extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l,u){const c=this.length;return this.resize(c+1),this.emplace(c,t,e,r,n,i,s,a,o,l,u)}emplace(t,e,r,n,i,s,a,o,l,u,c){const h=10*t;return this.uint16[h+0]=e,this.uint16[h+1]=r,this.uint16[h+2]=n,this.uint16[h+3]=i,this.uint16[h+4]=s,this.uint16[h+5]=a,this.uint16[h+6]=o,this.uint16[h+7]=l,this.uint16[h+8]=u,this.uint16[h+9]=c,t}}oa.prototype.bytesPerElement=20,ls(\"StructArrayLayout10ui20\",oa);class la extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o){const l=this.length;return this.resize(l+1),this.emplace(l,t,e,r,n,i,s,a,o)}emplace(t,e,r,n,i,s,a,o,l){const u=8*t;return this.uint16[u+0]=e,this.uint16[u+1]=r,this.uint16[u+2]=n,this.uint16[u+3]=i,this.uint16[u+4]=s,this.uint16[u+5]=a,this.uint16[u+6]=o,this.uint16[u+7]=l,t}}la.prototype.bytesPerElement=16,ls(\"StructArrayLayout8ui16\",la);class ua extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l,u,c,h){const p=this.length;return this.resize(p+1),this.emplace(p,t,e,r,n,i,s,a,o,l,u,c,h)}emplace(t,e,r,n,i,s,a,o,l,u,c,h,p){const f=12*t;return this.int16[f+0]=e,this.int16[f+1]=r,this.int16[f+2]=n,this.int16[f+3]=i,this.uint16[f+4]=s,this.uint16[f+5]=a,this.uint16[f+6]=o,this.uint16[f+7]=l,this.int16[f+8]=u,this.int16[f+9]=c,this.int16[f+10]=h,this.int16[f+11]=p,t}}ua.prototype.bytesPerElement=24,ls(\"StructArrayLayout4i4ui4i24\",ua);class ca extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.float32[i+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t}}ca.prototype.bytesPerElement=12,ls(\"StructArrayLayout3f12\",ca);class ha extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.uint32[1*t+0]=e,t}}ha.prototype.bytesPerElement=4,ls(\"StructArrayLayout1ul4\",ha);class pa extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l){const u=this.length;return this.resize(u+1),this.emplace(u,t,e,r,n,i,s,a,o,l)}emplace(t,e,r,n,i,s,a,o,l,u){const c=10*t,h=5*t;return this.int16[c+0]=e,this.int16[c+1]=r,this.int16[c+2]=n,this.int16[c+3]=i,this.int16[c+4]=s,this.int16[c+5]=a,this.uint32[h+3]=o,this.uint16[c+8]=l,this.uint16[c+9]=u,t}}pa.prototype.bytesPerElement=20,ls(\"StructArrayLayout6i1ul2ui20\",pa);class fa extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s){const a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,n,i,s)}emplace(t,e,r,n,i,s,a){const o=6*t;return this.int16[o+0]=e,this.int16[o+1]=r,this.int16[o+2]=n,this.int16[o+3]=i,this.int16[o+4]=s,this.int16[o+5]=a,t}}fa.prototype.bytesPerElement=12,ls(\"StructArrayLayout2i2i2i12\",fa);class da extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i){const s=this.length;return this.resize(s+1),this.emplace(s,t,e,r,n,i)}emplace(t,e,r,n,i,s){const a=4*t,o=8*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=n,this.int16[o+6]=i,this.int16[o+7]=s,t}}da.prototype.bytesPerElement=16,ls(\"StructArrayLayout2f1f2i16\",da);class ya extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s){const a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,n,i,s)}emplace(t,e,r,n,i,s,a){const o=16*t,l=4*t,u=8*t;return this.uint8[o+0]=e,this.uint8[o+1]=r,this.float32[l+1]=n,this.float32[l+2]=i,this.int16[u+6]=s,this.int16[u+7]=a,t}}ya.prototype.bytesPerElement=16,ls(\"StructArrayLayout2ub2f2i16\",ya);class ma extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.uint16[i+0]=e,this.uint16[i+1]=r,this.uint16[i+2]=n,t}}ma.prototype.bytesPerElement=6,ls(\"StructArrayLayout3ui6\",ma);class ga extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m){const g=this.length;return this.resize(g+1),this.emplace(g,t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m)}emplace(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g){const x=24*t,v=12*t,b=48*t;return this.int16[x+0]=e,this.int16[x+1]=r,this.uint16[x+2]=n,this.uint16[x+3]=i,this.uint32[v+2]=s,this.uint32[v+3]=a,this.uint32[v+4]=o,this.uint16[x+10]=l,this.uint16[x+11]=u,this.uint16[x+12]=c,this.float32[v+7]=h,this.float32[v+8]=p,this.uint8[b+36]=f,this.uint8[b+37]=d,this.uint8[b+38]=y,this.uint32[v+10]=m,this.int16[x+22]=g,t}}ga.prototype.bytesPerElement=48,ls(\"StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48\",ga);class xa extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,S,A,k,M,I){const z=this.length;return this.resize(z+1),this.emplace(z,t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,S,A,k,M,I)}emplace(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,S,A,k,M,I,z){const P=32*t,C=16*t;return this.int16[P+0]=e,this.int16[P+1]=r,this.int16[P+2]=n,this.int16[P+3]=i,this.int16[P+4]=s,this.int16[P+5]=a,this.int16[P+6]=o,this.int16[P+7]=l,this.uint16[P+8]=u,this.uint16[P+9]=c,this.uint16[P+10]=h,this.uint16[P+11]=p,this.uint16[P+12]=f,this.uint16[P+13]=d,this.uint16[P+14]=y,this.uint16[P+15]=m,this.uint16[P+16]=g,this.uint16[P+17]=x,this.uint16[P+18]=v,this.uint16[P+19]=b,this.uint16[P+20]=w,this.uint16[P+21]=_,this.uint16[P+22]=S,this.uint32[C+12]=A,this.float32[C+13]=k,this.float32[C+14]=M,this.uint16[P+30]=I,this.uint16[P+31]=z,t}}xa.prototype.bytesPerElement=64,ls(\"StructArrayLayout8i15ui1ul2f2ui64\",xa);class va extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.float32[1*t+0]=e,t}}va.prototype.bytesPerElement=4,ls(\"StructArrayLayout1f4\",va);class ba extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.uint16[6*t+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t}}ba.prototype.bytesPerElement=12,ls(\"StructArrayLayout1ui2f12\",ba);class wa extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=4*t;return this.uint32[2*t+0]=e,this.uint16[i+2]=r,this.uint16[i+3]=n,t}}wa.prototype.bytesPerElement=8,ls(\"StructArrayLayout1ul2ui8\",wa);class _a extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.uint16[n+0]=e,this.uint16[n+1]=r,t}}_a.prototype.bytesPerElement=4,ls(\"StructArrayLayout2ui4\",_a);class Sa extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.uint16[1*t+0]=e,t}}Sa.prototype.bytesPerElement=2,ls(\"StructArrayLayout1ui2\",Sa);class Aa extends Ws{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const s=4*t;return this.float32[s+0]=e,this.float32[s+1]=r,this.float32[s+2]=n,this.float32[s+3]=i,t}}Aa.prototype.bytesPerElement=16,ls(\"StructArrayLayout4f16\",Aa);class ka extends Js{get anchorPointX(){return this._structArray.int16[this._pos2+0]}get anchorPointY(){return this._structArray.int16[this._pos2+1]}get x1(){return this._structArray.int16[this._pos2+2]}get y1(){return this._structArray.int16[this._pos2+3]}get x2(){return this._structArray.int16[this._pos2+4]}get y2(){return this._structArray.int16[this._pos2+5]}get featureIndex(){return this._structArray.uint32[this._pos4+3]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+8]}get bucketIndex(){return this._structArray.uint16[this._pos2+9]}get anchorPoint(){return new r(this.anchorPointX,this.anchorPointY)}}ka.prototype.size=20;class Ma extends pa{get(t){return new ka(this,t)}}ls(\"CollisionBoxArray\",Ma);class Ia extends Js{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+2]}get numGlyphs(){return this._structArray.uint16[this._pos2+3]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+2]}get lineStartIndex(){return this._structArray.uint32[this._pos4+3]}get lineLength(){return this._structArray.uint32[this._pos4+4]}get segment(){return this._structArray.uint16[this._pos2+10]}get lowerSize(){return this._structArray.uint16[this._pos2+11]}get upperSize(){return this._structArray.uint16[this._pos2+12]}get lineOffsetX(){return this._structArray.float32[this._pos4+7]}get lineOffsetY(){return this._structArray.float32[this._pos4+8]}get writingMode(){return this._structArray.uint8[this._pos1+36]}get placedOrientation(){return this._structArray.uint8[this._pos1+37]}set placedOrientation(t){this._structArray.uint8[this._pos1+37]=t;}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(t){this._structArray.uint8[this._pos1+38]=t;}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(t){this._structArray.uint32[this._pos4+10]=t;}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}}Ia.prototype.size=48;class za extends ga{get(t){return new Ia(this,t)}}ls(\"PlacedSymbolArray\",za);class Pa extends Js{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+2]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+3]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+4]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+5]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+6]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+7]}get key(){return this._structArray.uint16[this._pos2+8]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+9]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+10]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+11]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+12]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+13]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+14]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get featureIndex(){return this._structArray.uint16[this._pos2+17]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+18]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+19]}get numIconVertices(){return this._structArray.uint16[this._pos2+20]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+21]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+22]}get crossTileID(){return this._structArray.uint32[this._pos4+12]}set crossTileID(t){this._structArray.uint32[this._pos4+12]=t;}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+14]}get textAnchorOffsetStartIndex(){return this._structArray.uint16[this._pos2+30]}get textAnchorOffsetEndIndex(){return this._structArray.uint16[this._pos2+31]}}Pa.prototype.size=64;class Ca extends xa{get(t){return new Pa(this,t)}}ls(\"SymbolInstanceArray\",Ca);class Ea extends va{getoffsetX(t){return this.float32[1*t+0]}}ls(\"GlyphOffsetArray\",Ea);class Ta extends ra{getx(t){return this.int16[3*t+0]}gety(t){return this.int16[3*t+1]}gettileUnitDistanceFromAnchor(t){return this.int16[3*t+2]}}ls(\"SymbolLineVertexArray\",Ta);class Ba extends Js{get textAnchor(){return this._structArray.uint16[this._pos2+0]}get textOffset0(){return this._structArray.float32[this._pos4+1]}get textOffset1(){return this._structArray.float32[this._pos4+2]}}Ba.prototype.size=12;class Va extends ba{get(t){return new Ba(this,t)}}ls(\"TextAnchorOffsetArray\",Va);class Fa extends Js{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}}Fa.prototype.size=8;class Da extends wa{get(t){return new Fa(this,t)}}ls(\"FeatureIndexArray\",Da);class $a extends ea{}class La extends ea{}class Oa extends ea{}class Ra extends ia{}class Ua extends sa{}class ja extends aa{}class Na extends oa{}class qa extends la{}class Ga extends ua{}class Xa extends ca{}class Za extends ha{}class Ya extends fa{}class Ha extends ya{}class Ka extends ma{}class Ja extends _a{}const Wa=Qs([{name:\"a_pos\",components:2,type:\"Int16\"}],4),{members:Qa}=Wa;class to{constructor(t=[]){this._forceNewSegmentOnNextPrepare=!1,this.segments=t;}prepareSegment(t,e,r,n){const i=this.segments[this.segments.length-1];return t>to.MAX_VERTEX_ARRAY_LENGTH&&q(`Max vertices per segment is ${to.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${t}. Consider using the \\`fillLargeMeshArrays\\` function if you require meshes with more than ${to.MAX_VERTEX_ARRAY_LENGTH} vertices.`),this._forceNewSegmentOnNextPrepare||!i||i.vertexLength+t>to.MAX_VERTEX_ARRAY_LENGTH||i.sortKey!==n?this.createNewSegment(e,r,n):i}createNewSegment(t,e,r){const n={vertexOffset:t.length,primitiveOffset:e.length,vertexLength:0,primitiveLength:0,vaos:{}};return void 0!==r&&(n.sortKey=r),this._forceNewSegmentOnNextPrepare=!1,this.segments.push(n),n}getOrCreateLatestSegment(t,e,r){return this.prepareSegment(0,t,e,r)}forceNewSegmentOnNextPrepare(){this._forceNewSegmentOnNextPrepare=!0;}get(){return this.segments}destroy(){for(const t of this.segments)for(const e in t.vaos)t.vaos[e].destroy();}static simpleSegment(t,e,r,n){return new to([{vertexOffset:t,primitiveOffset:e,vertexLength:r,primitiveLength:n,vaos:{},sortKey:0}])}}function eo(t,e){return 256*(t=D(Math.floor(t),0,255))+D(Math.floor(e),0,255)}to.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,ls(\"SegmentVector\",to);const ro=Qs([{name:\"a_pattern_from\",components:4,type:\"Uint16\"},{name:\"a_pattern_to\",components:4,type:\"Uint16\"},{name:\"a_pixel_ratio_from\",components:1,type:\"Uint16\"},{name:\"a_pixel_ratio_to\",components:1,type:\"Uint16\"}]),no=Qs([{name:\"a_dasharray_from\",components:4,type:\"Uint16\"},{name:\"a_dasharray_to\",components:4,type:\"Uint16\"}]);var io,so,ao,oo={exports:{}},lo={exports:{}},uo={exports:{}},co=function(){if(ao)return oo.exports;ao=1;var t=(io||(io=1,lo.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}),lo.exports),e=(so||(so=1,uo.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}),uo.exports);return oo.exports=t,oo.exports.murmur3=t,oo.exports.murmur2=e,oo.exports}(),ho=n(co);class po{constructor(){this.ids=[],this.positions=[],this.indexed=!1;}add(t,e,r,n){this.ids.push(fo(t)),this.positions.push(e,r,n);}getPositions(t){if(!this.indexed)throw new Error(\"Trying to get index, but feature positions are not indexed\");const e=fo(t);let r=0,n=this.ids.length-1;for(;r<n;){const t=r+n>>1;this.ids[t]>=e?n=t:r=t+1;}const i=[];for(;this.ids[r]===e;)i.push({index:this.positions[3*r],start:this.positions[3*r+1],end:this.positions[3*r+2]}),r++;return i}static serialize(t,e){const r=new Float64Array(t.ids),n=new Uint32Array(t.positions);return yo(r,n,0,r.length-1),e&&e.push(r.buffer,n.buffer),{ids:r,positions:n}}static deserialize(t){const e=new po;return e.ids=t.ids,e.positions=t.positions,e.indexed=!0,e}}function fo(t){const e=+t;return !isNaN(e)&&e<=Number.MAX_SAFE_INTEGER?e:ho(String(t))}function yo(t,e,r,n){for(;r<n;){const i=t[r+n>>1];let s=r-1,a=n+1;for(;;){do{s++;}while(t[s]<i);do{a--;}while(t[a]>i);if(s>=a)break;mo(t,s,a),mo(e,3*s,3*a),mo(e,3*s+1,3*a+1),mo(e,3*s+2,3*a+2);}a-r<n-a?(yo(t,e,r,a),r=a+1):(yo(t,e,a+1,n),n=a);}}function mo(t,e,r){const n=t[e];t[e]=t[r],t[r]=n;}ls(\"FeaturePositionMap\",po);class go{constructor(t,e){this.gl=t.gl,this.location=e;}}class xo extends go{constructor(t,e){super(t,e),this.current=0;}set(t){this.current!==t&&(this.current=t,this.gl.uniform1f(this.location,t));}}class vo extends go{constructor(t,e){super(t,e),this.current=[0,0,0,0];}set(t){t[0]===this.current[0]&&t[1]===this.current[1]&&t[2]===this.current[2]&&t[3]===this.current[3]||(this.current=t,this.gl.uniform4f(this.location,t[0],t[1],t[2],t[3]));}}class bo extends go{constructor(t,e){super(t,e),this.current=Ie.transparent;}set(t){t.r===this.current.r&&t.g===this.current.g&&t.b===this.current.b&&t.a===this.current.a||(this.current=t,this.gl.uniform4f(this.location,t.r,t.g,t.b,t.a));}}const wo=new Float32Array(16);function _o(t){return [eo(255*t.r,255*t.g),eo(255*t.b,255*t.a)]}class So{constructor(t,e,r){this.value=t,this.uniformNames=e.map((t=>`u_${t}`)),this.type=r;}setUniform(t,e,r){t.set(r.constantOr(this.value));}getBinding(t,e,r){return \"color\"===this.type?new bo(t,e):new xo(t,e)}}class Ao{constructor(t,e){this.uniformNames=e.map((t=>`u_${t}`)),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1;}setConstantPatternPositions(t,e){this.pixelRatioFrom=e.pixelRatio,this.pixelRatioTo=t.pixelRatio,this.patternFrom=e.tlbr,this.patternTo=t.tlbr;}setConstantDashPositions(t,e){this.dashTo=[0,t.y,t.height,t.width],this.dashFrom=[0,e.y,e.height,e.width];}setUniform(t,e,r,n){let i=null;\"u_pattern_to\"===n?i=this.patternTo:\"u_pattern_from\"===n?i=this.patternFrom:\"u_dasharray_to\"===n?i=this.dashTo:\"u_dasharray_from\"===n?i=this.dashFrom:\"u_pixel_ratio_to\"===n?i=this.pixelRatioTo:\"u_pixel_ratio_from\"===n&&(i=this.pixelRatioFrom),null!==i&&t.set(i);}getBinding(t,e,r){return \"u_pattern\"===r.substr(0,9)||\"u_dasharray_\"===r.substr(0,12)?new vo(t,e):new xo(t,e)}}class ko{constructor(t,e,r,n){this.expression=t,this.type=r,this.maxValue=0,this.paintVertexAttributes=e.map((t=>({name:`a_${t}`,type:\"Float32\",components:\"color\"===r?2:1,offset:0}))),this.paintVertexArray=new n;}populatePaintArray(t,e,r){const n=this.paintVertexArray.length,i=this.expression.evaluate(new Ps(0,r),e,{},r.canonical,[],r.formattedSection);this.paintVertexArray.resize(t),this._setPaintValue(n,t,i);}updatePaintArray(t,e,r,n,i){const s=this.expression.evaluate(new Ps(0,i),r,n);this._setPaintValue(t,e,s);}_setPaintValue(t,e,r){if(\"color\"===this.type){const n=_o(r);for(let r=t;r<e;r++)this.paintVertexArray.emplace(r,n[0],n[1]);}else {for(let n=t;n<e;n++)this.paintVertexArray.emplace(n,r);this.maxValue=Math.max(this.maxValue,Math.abs(r));}}upload(t){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=t.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent));}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy();}}class Mo{constructor(t,e,r,n,i,s){this.expression=t,this.uniformNames=e.map((t=>`u_${t}_t`)),this.type=r,this.useIntegerZoom=n,this.zoom=i,this.maxValue=0,this.paintVertexAttributes=e.map((t=>({name:`a_${t}`,type:\"Float32\",components:\"color\"===r?4:2,offset:0}))),this.paintVertexArray=new s;}populatePaintArray(t,e,r){const n=this.expression.evaluate(new Ps(this.zoom,r),e,{},r.canonical,[],r.formattedSection),i=this.expression.evaluate(new Ps(this.zoom+1,r),e,{},r.canonical,[],r.formattedSection),s=this.paintVertexArray.length;this.paintVertexArray.resize(t),this._setPaintValue(s,t,n,i);}updatePaintArray(t,e,r,n,i){const s=this.expression.evaluate(new Ps(this.zoom,i),r,n),a=this.expression.evaluate(new Ps(this.zoom+1,i),r,n);this._setPaintValue(t,e,s,a);}_setPaintValue(t,e,r,n){if(\"color\"===this.type){const i=_o(r),s=_o(n);for(let r=t;r<e;r++)this.paintVertexArray.emplace(r,i[0],i[1],s[0],s[1]);}else {for(let i=t;i<e;i++)this.paintVertexArray.emplace(i,r,n);this.maxValue=Math.max(this.maxValue,Math.abs(r),Math.abs(n));}}upload(t){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=t.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent));}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy();}setUniform(t,e){const r=this.useIntegerZoom?Math.floor(e.zoom):e.zoom,n=D(this.expression.interpolationFactor(r,this.zoom,this.zoom+1),0,1);t.set(n);}getBinding(t,e,r){return new xo(t,e)}}class Io{constructor(t,e,r,n,i,s){this.expression=t,this.type=e,this.useIntegerZoom=r,this.zoom=n,this.layerId=s,this.zoomInPaintVertexArray=new i,this.zoomOutPaintVertexArray=new i;}populatePaintArray(t,e,r){const n=this.zoomInPaintVertexArray.length;this.zoomInPaintVertexArray.resize(t),this.zoomOutPaintVertexArray.resize(t),this._setPaintValues(n,t,this.getPositionIds(e),r);}updatePaintArray(t,e,r,n,i){this._setPaintValues(t,e,this.getPositionIds(r),i);}_setPaintValues(t,e,r,n){const i=this.getPositions(n);if(!i||!r)return;const s=i[r.min],a=i[r.mid],o=i[r.max];if(s&&a&&o)for(let r=t;r<e;r++)this.emplace(this.zoomInPaintVertexArray,r,a,s),this.emplace(this.zoomOutPaintVertexArray,r,a,o);}upload(t){if(this.zoomInPaintVertexArray&&this.zoomInPaintVertexArray.arrayBuffer&&this.zoomOutPaintVertexArray&&this.zoomOutPaintVertexArray.arrayBuffer){const e=this.getVertexAttributes();this.zoomInPaintVertexBuffer=t.createVertexBuffer(this.zoomInPaintVertexArray,e,this.expression.isStateDependent),this.zoomOutPaintVertexBuffer=t.createVertexBuffer(this.zoomOutPaintVertexArray,e,this.expression.isStateDependent);}}destroy(){this.zoomOutPaintVertexBuffer&&this.zoomOutPaintVertexBuffer.destroy(),this.zoomInPaintVertexBuffer&&this.zoomInPaintVertexBuffer.destroy();}}class zo extends Io{getPositions(t){return t.imagePositions}getPositionIds(t){return t.patterns&&t.patterns[this.layerId]}getVertexAttributes(){return ro.members}emplace(t,e,r,n){t.emplace(e,r.tlbr[0],r.tlbr[1],r.tlbr[2],r.tlbr[3],n.tlbr[0],n.tlbr[1],n.tlbr[2],n.tlbr[3],r.pixelRatio,n.pixelRatio);}}class Po extends Io{getPositions(t){return t.dashPositions}getPositionIds(t){return t.dashes&&t.dashes[this.layerId]}getVertexAttributes(){return no.members}emplace(t,e,r,n){t.emplace(e,0,r.y,r.height,r.width,0,n.y,n.height,n.width);}}class Co{constructor(t,e,r){this.binders={},this._buffers=[];const n=[];for(const i in t.paint._values){if(!r(i))continue;const s=t.paint.get(i);if(!(s instanceof $s&&Nn(s.property.specification)))continue;const a=To(i,t.type),o=s.value,l=s.property.specification.type,u=s.property.useIntegerZoom,c=s.property.specification[\"property-type\"],h=\"cross-faded\"===c||\"cross-faded-data-driven\"===c;if(\"constant\"===o.kind)this.binders[i]=h?new Ao(o.value,a):new So(o.value,a,l),n.push(`/u_${i}`);else if(\"source\"===o.kind||h){const r=Bo(i,l,\"source\");this.binders[i]=h?\"line-dasharray\"===i?new Po(o,l,u,e,r,t.id):new zo(o,l,u,e,r,t.id):new ko(o,a,l,r),n.push(`/a_${i}`);}else {const t=Bo(i,l,\"composite\");this.binders[i]=new Mo(o,a,l,u,e,t),n.push(`/z_${i}`);}}this.cacheKey=n.sort().join(\"\");}getMaxValue(t){const e=this.binders[t];return e instanceof ko||e instanceof Mo?e.maxValue:0}populatePaintArrays(t,e,r){for(const n in this.binders){const i=this.binders[n];(i instanceof ko||i instanceof Mo||i instanceof Io)&&i.populatePaintArray(t,e,r);}}setConstantPatternPositions(t,e){for(const r in this.binders){const n=this.binders[r];n instanceof Ao&&n.setConstantPatternPositions(t,e);}}setConstantDashPositions(t,e){for(const r in this.binders){const n=this.binders[r];n instanceof Ao&&n.setConstantDashPositions(t,e);}}updatePaintArrays(t,e,r,n,i){let s=!1;for(const a in t){const o=e.getPositions(a);for(const e of o){const o=r.feature(e.index);for(const r in this.binders){const l=this.binders[r];if((l instanceof ko||l instanceof Mo||l instanceof Io)&&!0===l.expression.isStateDependent){const u=n.paint.get(r);l.expression=u.value,l.updatePaintArray(e.start,e.end,o,t[a],i),s=!0;}}}}return s}defines(){const t=[];for(const e in this.binders){const r=this.binders[e];(r instanceof So||r instanceof Ao)&&t.push(...r.uniformNames.map((t=>`#define HAS_UNIFORM_${t}`)));}return t}getBinderAttributes(){const t=[];for(const e in this.binders){const r=this.binders[e];if(r instanceof ko||r instanceof Mo)for(let e=0;e<r.paintVertexAttributes.length;e++)t.push(r.paintVertexAttributes[e].name);else if(r instanceof Io){const e=r.getVertexAttributes();for(const r of e)t.push(r.name);}}return t}getBinderUniforms(){const t=[];for(const e in this.binders){const r=this.binders[e];if(r instanceof So||r instanceof Ao||r instanceof Mo)for(const e of r.uniformNames)t.push(e);}return t}getPaintVertexBuffers(){return this._buffers}getUniforms(t,e){const r=[];for(const n in this.binders){const i=this.binders[n];if(i instanceof So||i instanceof Ao||i instanceof Mo)for(const s of i.uniformNames)if(e[s]){const a=i.getBinding(t,e[s],s);r.push({name:s,property:n,binding:a});}}return r}setUniforms(t,e,r,n){for(const{name:t,property:i,binding:s}of e)this.binders[i].setUniform(s,n,r.get(i),t);}updatePaintBuffers(t){this._buffers=[];for(const e in this.binders){const r=this.binders[e];if(t&&r instanceof Io){const e=2===t.fromScale?r.zoomInPaintVertexBuffer:r.zoomOutPaintVertexBuffer;e&&this._buffers.push(e);}else (r instanceof ko||r instanceof Mo)&&r.paintVertexBuffer&&this._buffers.push(r.paintVertexBuffer);}}upload(t){for(const e in this.binders){const r=this.binders[e];(r instanceof ko||r instanceof Mo||r instanceof Io)&&r.upload(t);}this.updatePaintBuffers();}destroy(){for(const t in this.binders){const e=this.binders[t];(e instanceof ko||e instanceof Mo||e instanceof Io)&&e.destroy();}}}class Eo{constructor(t,e,r=()=>!0){this.programConfigurations={};for(const n of t)this.programConfigurations[n.id]=new Co(n,e,r);this.needsUpload=!1,this._featureMap=new po,this._bufferOffset=0;}populatePaintArrays(t,e,r,n){for(const r in this.programConfigurations)this.programConfigurations[r].populatePaintArrays(t,e,n);void 0!==e.id&&this._featureMap.add(e.id,r,this._bufferOffset,t),this._bufferOffset=t,this.needsUpload=!0;}updatePaintArrays(t,e,r,n){for(const i of r)this.needsUpload=this.programConfigurations[i.id].updatePaintArrays(t,this._featureMap,e,i,n)||this.needsUpload;}get(t){return this.programConfigurations[t]}upload(t){if(this.needsUpload){for(const e in this.programConfigurations)this.programConfigurations[e].upload(t);this.needsUpload=!1;}}destroy(){for(const t in this.programConfigurations)this.programConfigurations[t].destroy();}}function To(t,e){return {\"text-opacity\":[\"opacity\"],\"icon-opacity\":[\"opacity\"],\"text-color\":[\"fill_color\"],\"icon-color\":[\"fill_color\"],\"text-halo-color\":[\"halo_color\"],\"icon-halo-color\":[\"halo_color\"],\"text-halo-blur\":[\"halo_blur\"],\"icon-halo-blur\":[\"halo_blur\"],\"text-halo-width\":[\"halo_width\"],\"icon-halo-width\":[\"halo_width\"],\"line-gap-width\":[\"gapwidth\"],\"line-dasharray\":[\"dasharray_to\",\"dasharray_from\"],\"line-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"],\"fill-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"],\"fill-extrusion-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"]}[t]||[t.replace(`${e}-`,\"\").replace(/-/g,\"_\")]}function Bo(t,e,r){const n={color:{source:aa,composite:Aa},number:{source:va,composite:aa}},i=function(t){return {\"line-pattern\":{source:Na,composite:Na},\"fill-pattern\":{source:Na,composite:Na},\"fill-extrusion-pattern\":{source:Na,composite:Na},\"line-dasharray\":{source:qa,composite:qa}}[t]}(t);return i&&i[r]||n[e][r]}ls(\"ConstantBinder\",So),ls(\"CrossFadedConstantBinder\",Ao),ls(\"SourceExpressionBinder\",ko),ls(\"CrossFadedPatternBinder\",zo),ls(\"CrossFadedDasharrayBinder\",Po),ls(\"CompositeExpressionBinder\",Mo),ls(\"ProgramConfiguration\",Co,{omit:[\"_buffers\"]}),ls(\"ProgramConfigurationSet\",Eo);const Vo=Math.pow(2,14)-1,Fo=-Vo-1;function Do(t){const e=P/t.extent,r=t.loadGeometry();for(let t=0;t<r.length;t++){const n=r[t];for(let t=0;t<n.length;t++){const r=n[t],i=Math.round(r.x*e),s=Math.round(r.y*e);r.x=D(i,Fo,Vo),r.y=D(s,Fo,Vo),(i<r.x||i>r.x+1||s<r.y||s>r.y+1)&&q(\"Geometry exceeds allowed extent, reduce your vector tile buffer size\");}}return r}function $o(t,e){return {type:t.type,id:t.id,properties:t.properties,geometry:e?Do(t):[]}}const Lo=-32768;function Oo(t,e,r,n,i){t.emplaceBack(Lo+8*e+n,Lo+8*r+i);}class Ro{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasDependencies=!1,this.layoutVertexArray=new La,this.indexArray=new Ka,this.segments=new to,this.programConfigurations=new Eo(t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r){const n=this.layers[0],i=[];let s=null,a=!1,o=\"heatmap\"===n.type;if(\"circle\"===n.type){const t=n;s=t.layout.get(\"circle-sort-key\"),a=!s.isConstant(),o=o||\"map\"===t.paint.get(\"circle-pitch-alignment\");}const l=o?e.subdivisionGranularity.circle:1;for(const{feature:e,id:n,index:o,sourceLayerIndex:l}of t){const t=this.layers[0]._featureFilter.needGeometry,u=$o(e,t);if(!this.layers[0]._featureFilter.filter(new Ps(this.zoom),u,r))continue;const c=a?s.evaluate(u,{},r):void 0,h={id:n,properties:e.properties,type:e.type,sourceLayerIndex:l,index:o,geometry:t?u.geometry:Do(e),patterns:{},sortKey:c};i.push(h);}a&&i.sort(((t,e)=>t.sortKey-e.sortKey));for(const n of i){const{geometry:i,index:s,sourceLayerIndex:a}=n,o=t[s].feature;this.addFeature(n,i,s,r,l),e.featureIndex.insert(o,i,s,a,this.index);}}update(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,{imagePositions:r});}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Qa),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());}addFeature(t,e,r,n,i=1){let s;switch(i){case 1:s=[0,7];break;case 3:s=[0,2,5,7];break;case 5:s=[0,1,3,4,6,7];break;case 7:s=[0,1,2,3,4,5,6,7];break;default:throw new Error(`Invalid circle bucket granularity: ${i}; valid values are 1, 3, 5, 7.`)}const a=s.length;for(const r of e)for(const e of r){const r=e.x,n=e.y;if(r<0||r>=P||n<0||n>=P)continue;const i=this.segments.prepareSegment(a*a,this.layoutVertexArray,this.indexArray,t.sortKey),o=i.vertexLength;for(let t=0;t<a;t++)for(let e=0;e<a;e++)Oo(this.layoutVertexArray,r,n,s[e],s[t]);for(let t=0;t<a-1;t++)for(let e=0;e<a-1;e++){const r=o+t*a+e,n=o+(t+1)*a+e;this.indexArray.emplaceBack(r,n+1,r+1),this.indexArray.emplaceBack(r,n,n+1);}i.vertexLength+=a*a,i.primitiveLength+=(a-1)*(a-1)*2;}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{imagePositions:{},canonical:n});}}function Uo(t,e){for(let r=0;r<t.length;r++)if(Ko(e,t[r]))return !0;for(let r=0;r<e.length;r++)if(Ko(t,e[r]))return !0;return !!Go(t,e)}function jo(t,e,r){return !!Ko(t,e)||!!Zo(e,t,r)}function No(t,e){if(1===t.length)return Ho(e,t[0]);for(let r=0;r<e.length;r++){const n=e[r];for(let e=0;e<n.length;e++)if(Ko(t,n[e]))return !0}for(let r=0;r<t.length;r++)if(Ho(e,t[r]))return !0;for(let r=0;r<e.length;r++)if(Go(t,e[r]))return !0;return !1}function qo(t,e,r){if(t.length>1){if(Go(t,e))return !0;for(let n=0;n<e.length;n++)if(Zo(e[n],t,r))return !0}for(let n=0;n<t.length;n++)if(Zo(t[n],e,r))return !0;return !1}function Go(t,e){if(0===t.length||0===e.length)return !1;for(let r=0;r<t.length-1;r++){const n=t[r],i=t[r+1];for(let t=0;t<e.length-1;t++)if(Xo(n,i,e[t],e[t+1]))return !0}return !1}function Xo(t,e,r,n){return G(t,r,n)!==G(e,r,n)&&G(t,e,r)!==G(t,e,n)}function Zo(t,e,r){const n=r*r;if(1===e.length)return t.distSqr(e[0])<n;for(let r=1;r<e.length;r++)if(Yo(t,e[r-1],e[r])<n)return !0;return !1}function Yo(t,e,r){const n=e.distSqr(r);if(0===n)return t.distSqr(e);const i=((t.x-e.x)*(r.x-e.x)+(t.y-e.y)*(r.y-e.y))/n;return t.distSqr(i<0?e:i>1?r:r.sub(e)._mult(i)._add(e))}function Ho(t,e){let r,n,i,s=!1;for(let a=0;a<t.length;a++){r=t[a];for(let t=0,a=r.length-1;t<r.length;a=t++)n=r[t],i=r[a],n.y>e.y!=i.y>e.y&&e.x<(i.x-n.x)*(e.y-n.y)/(i.y-n.y)+n.x&&(s=!s);}return s}function Ko(t,e){let r=!1;for(let n=0,i=t.length-1;n<t.length;i=n++){const s=t[n],a=t[i];s.y>e.y!=a.y>e.y&&e.x<(a.x-s.x)*(e.y-s.y)/(a.y-s.y)+s.x&&(r=!r);}return r}function Jo(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>i.x||t.y<n.y&&e.y<n.y||t.y>i.y&&e.y>i.y)return !1;const s=G(t,e,r[0]);return s!==G(t,e,r[1])||s!==G(t,e,r[2])||s!==G(t,e,r[3])}function Wo(t,e,r){const n=e.paint.get(t).value;return \"constant\"===n.kind?n.value:r.programConfigurations.get(e.id).getMaxValue(t)}function Qo(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function tl(t,e,n,i,s){if(!e[0]&&!e[1])return t;const a=r.convert(e)._mult(s);\"viewport\"===n&&a._rotate(-i);const o=[];for(let e=0;e<t.length;e++)o.push(t[e].sub(a));return o}function el({queryGeometry:t,size:e},r){return jo(t,r,e)}function rl({queryGeometry:t,size:e,transform:r,unwrappedTileID:n,getElevation:i},s){return jo(t,s,e*(r.projectTileCoordinates(s.x,s.y,n,i).signedDistanceFromCamera/r.cameraToCenterDistance))}function nl({queryGeometry:t,size:e,transform:r,unwrappedTileID:n,getElevation:i},s){const a=r.projectTileCoordinates(s.x,s.y,n,i).signedDistanceFromCamera,o=e*(r.cameraToCenterDistance/a);return jo(t,al(s,r,n,i),o)}function il({queryGeometry:t,size:e,transform:r,unwrappedTileID:n,getElevation:i},s){return jo(t,al(s,r,n,i),e)}function sl({queryGeometry:t,size:e,transform:r,unwrappedTileID:n,getElevation:i,pitchAlignment:s=\"map\",pitchScale:a=\"map\"},o){const l=\"map\"===s?\"map\"===a?el:rl:\"map\"===a?nl:il,u={queryGeometry:t,size:e,transform:r,unwrappedTileID:n,getElevation:i};for(const t of o)for(const e of t)if(l(u,e))return !0;return !1}function al(t,e,n,i){const s=e.projectTileCoordinates(t.x,t.y,n,i).point;return new r((.5*s.x+.5)*e.width,(.5*-s.y+.5)*e.height)}let ol,ll;ls(\"CircleBucket\",Ro,{omit:[\"layers\"]});var ul={get paint(){return ll=ll||new qs({\"circle-radius\":new Rs(vt.paint_circle[\"circle-radius\"]),\"circle-color\":new Rs(vt.paint_circle[\"circle-color\"]),\"circle-blur\":new Rs(vt.paint_circle[\"circle-blur\"]),\"circle-opacity\":new Rs(vt.paint_circle[\"circle-opacity\"]),\"circle-translate\":new Os(vt.paint_circle[\"circle-translate\"]),\"circle-translate-anchor\":new Os(vt.paint_circle[\"circle-translate-anchor\"]),\"circle-pitch-scale\":new Os(vt.paint_circle[\"circle-pitch-scale\"]),\"circle-pitch-alignment\":new Os(vt.paint_circle[\"circle-pitch-alignment\"]),\"circle-stroke-width\":new Rs(vt.paint_circle[\"circle-stroke-width\"]),\"circle-stroke-color\":new Rs(vt.paint_circle[\"circle-stroke-color\"]),\"circle-stroke-opacity\":new Rs(vt.paint_circle[\"circle-stroke-opacity\"])})},get layout(){return ol=ol||new qs({\"circle-sort-key\":new Rs(vt.layout_circle[\"circle-sort-key\"])})}};class cl extends Xs{constructor(t,e){super(t,ul,e);}createBucket(t){return new Ro(t)}queryRadius(t){const e=t;return Wo(\"circle-radius\",this,e)+Wo(\"circle-stroke-width\",this,e)+Qo(this.paint.get(\"circle-translate\"))}queryIntersectsFeature({queryGeometry:t,feature:e,featureState:r,geometry:n,transform:i,pixelsToTileUnits:s,unwrappedTileID:a,getElevation:o}){const l=tl(t,this.paint.get(\"circle-translate\"),this.paint.get(\"circle-translate-anchor\"),-i.bearingInRadians,s),u=this.paint.get(\"circle-radius\").evaluate(e,r)+this.paint.get(\"circle-stroke-width\").evaluate(e,r),c=this.paint.get(\"circle-pitch-scale\"),h=this.paint.get(\"circle-pitch-alignment\");let p,f;return \"map\"===h?(p=l,f=u*s):(p=function(t,e,r,n){return t.map((t=>al(t,e,r,n)))}(l,i,a,o),f=u),sl({queryGeometry:p,size:f,transform:i,unwrappedTileID:a,getElevation:o,pitchAlignment:h,pitchScale:c},n)}}class hl extends Ro{}let pl;ls(\"HeatmapBucket\",hl,{omit:[\"layers\"]});var fl={get paint(){return pl=pl||new qs({\"heatmap-radius\":new Rs(vt.paint_heatmap[\"heatmap-radius\"]),\"heatmap-weight\":new Rs(vt.paint_heatmap[\"heatmap-weight\"]),\"heatmap-intensity\":new Os(vt.paint_heatmap[\"heatmap-intensity\"]),\"heatmap-color\":new Ns(vt.paint_heatmap[\"heatmap-color\"]),\"heatmap-opacity\":new Os(vt.paint_heatmap[\"heatmap-opacity\"])})}};function dl(t,{width:e,height:r},n,i){if(i){if(i instanceof Uint8ClampedArray)i=new Uint8Array(i.buffer);else if(i.length!==e*r*n)throw new RangeError(`mismatched image size. expected: ${i.length} but got: ${e*r*n}`)}else i=new Uint8Array(e*r*n);return t.width=e,t.height=r,t.data=i,t}function yl(t,{width:e,height:r},n){if(e===t.width&&r===t.height)return;const i=dl({},{width:e,height:r},n);ml(t,i,{x:0,y:0},{x:0,y:0},{width:Math.min(t.width,e),height:Math.min(t.height,r)},n),t.width=e,t.height=r,t.data=i.data;}function ml(t,e,r,n,i,s){if(0===i.width||0===i.height)return e;if(i.width>t.width||i.height>t.height||r.x>t.width-i.width||r.y>t.height-i.height)throw new RangeError(\"out of range source coordinates for image copy\");if(i.width>e.width||i.height>e.height||n.x>e.width-i.width||n.y>e.height-i.height)throw new RangeError(\"out of range destination coordinates for image copy\");const a=t.data,o=e.data;if(a===o)throw new Error(\"srcData equals dstData, so image is already copied\");for(let l=0;l<i.height;l++){const u=((r.y+l)*t.width+r.x)*s,c=((n.y+l)*e.width+n.x)*s;for(let t=0;t<i.width*s;t++)o[c+t]=a[u+t];}return e}class gl{constructor(t,e){dl(this,t,1,e);}resize(t){yl(this,t,1);}clone(){return new gl({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(t,e,r,n,i){ml(t,e,r,n,i,1);}}class xl{constructor(t,e){dl(this,t,4,e);}resize(t){yl(this,t,4);}replace(t,e){e?this.data.set(t):this.data=t instanceof Uint8ClampedArray?new Uint8Array(t.buffer):t;}clone(){return new xl({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(t,e,r,n,i){ml(t,e,r,n,i,4);}setPixel(t,e,r){const n=4*(t*this.width+e);this.data[n+0]=Math.round(255*r.r/r.a),this.data[n+1]=Math.round(255*r.g/r.a),this.data[n+2]=Math.round(255*r.b/r.a),this.data[n+3]=Math.round(255*r.a);}}function vl(t){const e={},r=t.resolution||256,n=t.clips?t.clips.length:1,i=t.image||new xl({width:r,height:n});if(Math.log(r)/Math.LN2%1!=0)throw new Error(`width is not a power of 2 - ${r}`);const s=(n,s,a)=>{e[t.evaluationKey]=a;const o=t.expression.evaluate(e);i.setPixel(n/4/r,s/4,o);};if(t.clips)for(let e=0,i=0;e<n;++e,i+=4*r)for(let n=0,a=0;n<r;n++,a+=4){const o=n/(r-1),{start:l,end:u}=t.clips[e];s(i,a,l*(1-o)+u*o);}else for(let t=0,e=0;t<r;t++,e+=4)s(0,e,t/(r-1));return i}ls(\"AlphaImage\",gl),ls(\"RGBAImage\",xl);const bl=\"big-fb\";class wl extends Xs{createBucket(t){return new hl(t)}constructor(t,e){super(t,fl,e),this.heatmapFbos=new Map,this._updateColorRamp();}_handleSpecialPaintPropertyUpdate(t){\"heatmap-color\"===t&&this._updateColorRamp();}_updateColorRamp(){this.colorRamp=vl({expression:this._transitionablePaint._values[\"heatmap-color\"].value.expression,evaluationKey:\"heatmapDensity\",image:this.colorRamp}),this.colorRampTexture=null;}resize(){this.heatmapFbos.has(bl)&&this.heatmapFbos.delete(bl);}queryRadius(t){return Wo(\"heatmap-radius\",this,t)}queryIntersectsFeature({queryGeometry:t,feature:e,featureState:r,geometry:n,transform:i,pixelsToTileUnits:s,unwrappedTileID:a,getElevation:o}){return sl({queryGeometry:t,size:this.paint.get(\"heatmap-radius\").evaluate(e,r)*s,transform:i,unwrappedTileID:a,getElevation:o},n)}hasOffscreenPass(){return 0!==this.paint.get(\"heatmap-opacity\")&&\"none\"!==this.visibility}}let _l;var Sl={get paint(){return _l=_l||new qs({\"hillshade-illumination-direction\":new Os(vt.paint_hillshade[\"hillshade-illumination-direction\"]),\"hillshade-illumination-altitude\":new Os(vt.paint_hillshade[\"hillshade-illumination-altitude\"]),\"hillshade-illumination-anchor\":new Os(vt.paint_hillshade[\"hillshade-illumination-anchor\"]),\"hillshade-exaggeration\":new Os(vt.paint_hillshade[\"hillshade-exaggeration\"]),\"hillshade-shadow-color\":new Os(vt.paint_hillshade[\"hillshade-shadow-color\"]),\"hillshade-highlight-color\":new Os(vt.paint_hillshade[\"hillshade-highlight-color\"]),\"hillshade-accent-color\":new Os(vt.paint_hillshade[\"hillshade-accent-color\"]),\"hillshade-method\":new Os(vt.paint_hillshade[\"hillshade-method\"])})}};class Al extends Xs{constructor(t,e){super(t,Sl,e),this.recalculate({zoom:0,zoomHistory:{}},void 0);}getIlluminationProperties(){let t=this.paint.get(\"hillshade-illumination-direction\").values,e=this.paint.get(\"hillshade-illumination-altitude\").values,r=this.paint.get(\"hillshade-highlight-color\").values,n=this.paint.get(\"hillshade-shadow-color\").values;const i=Math.max(t.length,e.length,r.length,n.length);t=t.concat(Array(i-t.length).fill(t.at(-1))),e=e.concat(Array(i-e.length).fill(e.at(-1))),r=r.concat(Array(i-r.length).fill(r.at(-1))),n=n.concat(Array(i-n.length).fill(n.at(-1)));const s=e.map(et);return {directionRadians:t.map(et),altitudeRadians:s,shadowColor:n,highlightColor:r}}hasOffscreenPass(){return 0!==this.paint.get(\"hillshade-exaggeration\")&&\"none\"!==this.visibility}}let kl;var Ml={get paint(){return kl=kl||new qs({\"color-relief-opacity\":new Os(vt[\"paint_color-relief\"][\"color-relief-opacity\"]),\"color-relief-color\":new Ns(vt[\"paint_color-relief\"][\"color-relief-color\"])})}};class Il{constructor(t,e,r,n){this.context=t,this.format=r,this.texture=t.gl.createTexture(),this.update(e,n);}update(t,e,r){const{width:n,height:i}=t,s=!(this.size&&this.size[0]===n&&this.size[1]===i||r),{context:a}=this,{gl:o}=a;if(this.useMipmap=Boolean(e&&e.useMipmap),o.bindTexture(o.TEXTURE_2D,this.texture),a.pixelStoreUnpackFlipY.set(!1),a.pixelStoreUnpack.set(1),a.pixelStoreUnpackPremultiplyAlpha.set(this.format===o.RGBA&&(!e||!1!==e.premultiply)),s)this.size=[n,i],t instanceof HTMLImageElement||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement||t instanceof ImageData||H(t)?o.texImage2D(o.TEXTURE_2D,0,this.format,this.format,o.UNSIGNED_BYTE,t):o.texImage2D(o.TEXTURE_2D,0,this.format,n,i,0,this.format,o.UNSIGNED_BYTE,t.data);else {const{x:e,y:s}=r||{x:0,y:0};t instanceof HTMLImageElement||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement||t instanceof ImageData||H(t)?o.texSubImage2D(o.TEXTURE_2D,0,e,s,o.RGBA,o.UNSIGNED_BYTE,t):o.texSubImage2D(o.TEXTURE_2D,0,e,s,n,i,o.RGBA,o.UNSIGNED_BYTE,t.data);}this.useMipmap&&this.isSizePowerOfTwo()&&o.generateMipmap(o.TEXTURE_2D),a.pixelStoreUnpackFlipY.setDefault(),a.pixelStoreUnpack.setDefault(),a.pixelStoreUnpackPremultiplyAlpha.setDefault();}bind(t,e,r){const{context:n}=this,{gl:i}=n;i.bindTexture(i.TEXTURE_2D,this.texture),r!==i.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(r=i.LINEAR),t!==this.filter&&(i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,t),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,r||t),this.filter=t),e!==this.wrap&&(i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,e),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,e),this.wrap=e);}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){const{gl:t}=this.context;t.deleteTexture(this.texture),this.texture=null;}}class zl{constructor(t,e,r,n=1,i=1,s=1,a=0){if(this.uid=t,e.height!==e.width)throw new RangeError(\"DEM tiles must be square\");if(r&&![\"mapbox\",\"terrarium\",\"custom\"].includes(r))return void q(`\"${r}\" is not a valid encoding type. Valid types include \"mapbox\", \"terrarium\" and \"custom\".`);this.stride=e.height;const o=this.dim=e.height-2;switch(this.data=new Uint32Array(e.data.buffer),r){case \"terrarium\":this.redFactor=256,this.greenFactor=1,this.blueFactor=1/256,this.baseShift=32768;break;case \"custom\":this.redFactor=n,this.greenFactor=i,this.blueFactor=s,this.baseShift=a;break;default:this.redFactor=6553.6,this.greenFactor=25.6,this.blueFactor=.1,this.baseShift=1e4;}for(let t=0;t<o;t++)this.data[this._idx(-1,t)]=this.data[this._idx(0,t)],this.data[this._idx(o,t)]=this.data[this._idx(o-1,t)],this.data[this._idx(t,-1)]=this.data[this._idx(t,0)],this.data[this._idx(t,o)]=this.data[this._idx(t,o-1)];this.data[this._idx(-1,-1)]=this.data[this._idx(0,0)],this.data[this._idx(o,-1)]=this.data[this._idx(o-1,0)],this.data[this._idx(-1,o)]=this.data[this._idx(0,o-1)],this.data[this._idx(o,o)]=this.data[this._idx(o-1,o-1)],this.min=Number.MAX_SAFE_INTEGER,this.max=Number.MIN_SAFE_INTEGER;for(let t=0;t<o;t++)for(let e=0;e<o;e++){const r=this.get(t,e);r>this.max&&(this.max=r),r<this.min&&(this.min=r);}}get(t,e){const r=new Uint8Array(this.data.buffer),n=4*this._idx(t,e);return this.unpack(r[n],r[n+1],r[n+2])}getUnpackVector(){return [this.redFactor,this.greenFactor,this.blueFactor,this.baseShift]}_idx(t,e){if(t<-1||t>=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError(\"out of range source coordinates for DEM data\");return (e+1)*this.stride+(t+1)}unpack(t,e,r){return t*this.redFactor+e*this.greenFactor+r*this.blueFactor-this.baseShift}pack(t){return Pl(t,this.getUnpackVector())}getPixels(){return new xl({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(t,e,r){if(this.dim!==t.dim)throw new Error(\"dem dimension mismatch\");let n=e*this.dim,i=e*this.dim+this.dim,s=r*this.dim,a=r*this.dim+this.dim;switch(e){case -1:n=i-1;break;case 1:i=n+1;}switch(r){case -1:s=a-1;break;case 1:a=s+1;}const o=-e*this.dim,l=-r*this.dim;for(let e=s;e<a;e++)for(let r=n;r<i;r++)this.data[this._idx(r,e)]=t.data[this._idx(r+o,e+l)];}}function Pl(t,e){const r=e[0],n=e[1],i=e[2],s=e[3],a=Math.min(r,n,i),o=Math.round((t+s)/a);return {r:Math.floor(o*a/r)%256,g:Math.floor(o*a/n)%256,b:Math.floor(o*a/i)%256}}ls(\"DEMData\",zl);class Cl extends Xs{constructor(t,e){super(t,Ml,e);}_createColorRamp(t){const e={elevationStops:[],colorStops:[]},r=this._transitionablePaint._values[\"color-relief-color\"].value.expression;if(r instanceof ii&&r._styleExpression.expression instanceof fr){this.colorRampExpression=r;const t=r._styleExpression.expression;e.elevationStops=t.labels,e.colorStops=[];for(const r of e.elevationStops)e.colorStops.push(t.evaluate({globals:{elevation:r}}));}if(e.elevationStops.length<1&&(e.elevationStops=[0],e.colorStops=[Ie.transparent]),e.elevationStops.length<2&&(e.elevationStops.push(e.elevationStops[0]+1),e.colorStops.push(e.colorStops[0])),e.elevationStops.length<=t)return e;const n={elevationStops:[],colorStops:[]},i=(e.elevationStops.length-1)/(t-1);for(let t=0;t<e.elevationStops.length-.5;t+=i)n.elevationStops.push(e.elevationStops[Math.round(t)]),n.colorStops.push(e.colorStops[Math.round(t)]);return q(`Too many colors in specification of ${this.id} color-relief layer, may not render properly.`),n}_colorRampChanged(){return this.colorRampExpression!=this._transitionablePaint._values[\"color-relief-color\"].value.expression}getColorRampTextures(t,e,r){if(this.colorRampTextures&&!this._colorRampChanged())return this.colorRampTextures;const n=this._createColorRamp(e),i=new xl({width:n.colorStops.length,height:1}),s=new xl({width:n.colorStops.length,height:1});for(let t=0;t<n.elevationStops.length;t++){const e=Pl(n.elevationStops[t],r);s.setPixel(0,t,new Ie(e.r/255,e.g/255,e.b/255,1)),i.setPixel(0,t,n.colorStops[t]);}return this.colorRampTextures={elevationTexture:new Il(t,s,t.gl.RGBA),colorTexture:new Il(t,i,t.gl.RGBA)},this.colorRampTextures}hasOffscreenPass(){return \"none\"!==this.visibility&&!!this.colorRampTextures}}const El=Qs([{name:\"a_pos\",components:2,type:\"Int16\"}],4),{members:Tl}=El;function Bl(t,e,r){const n=r.patternDependencies;let i=!1;for(const r of e){const e=r.paint.get(`${t}-pattern`);e.isConstant()||(i=!0);const s=e.constantOr(null);s&&(i=!0,n[s.to]=!0,n[s.from]=!0);}return i}function Vl(t,e,r,n,i){const{zoom:s}=n,a=i.patternDependencies;for(const n of e){const e=n.paint.get(`${t}-pattern`).value;if(\"constant\"!==e.kind){let t=e.evaluate({zoom:s-1},r,{},i.availableImages),o=e.evaluate({zoom:s},r,{},i.availableImages),l=e.evaluate({zoom:s+1},r,{},i.availableImages);t=t&&t.name?t.name:t,o=o&&o.name?o.name:o,l=l&&l.name?l.name:l,a[t]=!0,a[o]=!0,a[l]=!0,r.patterns[n.id]={min:t,mid:o,max:l};}}return r}function Fl(t,e,r,n,i){let s;if(i===function(t,e,r,n){let i=0;for(let s=e,a=r-n;s<r;s+=n)i+=(t[a]-t[s])*(t[s+1]+t[a+1]),a=s;return i}(t,e,r,n)>0)for(let i=e;i<r;i+=n)s=nu(i/n|0,t[i],t[i+1],s);else for(let i=r-n;i>=e;i-=n)s=nu(i/n|0,t[i],t[i+1],s);return s&&Jl(s,s.next)&&(iu(s),s=s.next),s}function Dl(t,e){if(!t)return t;e||(e=t);let r,n=t;do{if(r=!1,n.steiner||!Jl(n,n.next)&&0!==Kl(n.prev,n,n.next))n=n.next;else {if(iu(n),n=e=n.prev,n===n.next)break;r=!0;}}while(r||n!==e);return e}function $l(t,e,r,n,i,s,a){if(!t)return;!a&&s&&function(t,e,r,n){let i=t;do{0===i.z&&(i.z=Gl(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){let e,r=1;do{let n,i=t;t=null;let s=null;for(e=0;i;){e++;let a=i,o=0;for(let t=0;t<r&&(o++,a=a.nextZ,a);t++);let l=r;for(;o>0||l>0&&a;)0!==o&&(0===l||!a||i.z<=a.z)?(n=i,i=i.nextZ,o--):(n=a,a=a.nextZ,l--),s?s.nextZ=n:t=n,n.prevZ=s,s=n;i=a;}s.nextZ=null,r*=2;}while(e>1)}(i);}(t,n,i,s);let o=t;for(;t.prev!==t.next;){const l=t.prev,u=t.next;if(s?Ol(t,n,i,s):Ll(t))e.push(l.i,t.i,u.i),iu(t),t=u.next,o=u.next;else if((t=u)===o){a?1===a?$l(t=Rl(Dl(t),e),e,r,n,i,s,2):2===a&&Ul(t,e,r,n,i,s):$l(Dl(t),e,r,n,i,s,1);break}}}function Ll(t){const e=t.prev,r=t,n=t.next;if(Kl(e,r,n)>=0)return !1;const i=e.x,s=r.x,a=n.x,o=e.y,l=r.y,u=n.y,c=Math.min(i,s,a),h=Math.min(o,l,u),p=Math.max(i,s,a),f=Math.max(o,l,u);let d=n.next;for(;d!==e;){if(d.x>=c&&d.x<=p&&d.y>=h&&d.y<=f&&Yl(i,o,s,l,a,u,d.x,d.y)&&Kl(d.prev,d,d.next)>=0)return !1;d=d.next;}return !0}function Ol(t,e,r,n){const i=t.prev,s=t,a=t.next;if(Kl(i,s,a)>=0)return !1;const o=i.x,l=s.x,u=a.x,c=i.y,h=s.y,p=a.y,f=Math.min(o,l,u),d=Math.min(c,h,p),y=Math.max(o,l,u),m=Math.max(c,h,p),g=Gl(f,d,e,r,n),x=Gl(y,m,e,r,n);let v=t.prevZ,b=t.nextZ;for(;v&&v.z>=g&&b&&b.z<=x;){if(v.x>=f&&v.x<=y&&v.y>=d&&v.y<=m&&v!==i&&v!==a&&Yl(o,c,l,h,u,p,v.x,v.y)&&Kl(v.prev,v,v.next)>=0)return !1;if(v=v.prevZ,b.x>=f&&b.x<=y&&b.y>=d&&b.y<=m&&b!==i&&b!==a&&Yl(o,c,l,h,u,p,b.x,b.y)&&Kl(b.prev,b,b.next)>=0)return !1;b=b.nextZ;}for(;v&&v.z>=g;){if(v.x>=f&&v.x<=y&&v.y>=d&&v.y<=m&&v!==i&&v!==a&&Yl(o,c,l,h,u,p,v.x,v.y)&&Kl(v.prev,v,v.next)>=0)return !1;v=v.prevZ;}for(;b&&b.z<=x;){if(b.x>=f&&b.x<=y&&b.y>=d&&b.y<=m&&b!==i&&b!==a&&Yl(o,c,l,h,u,p,b.x,b.y)&&Kl(b.prev,b,b.next)>=0)return !1;b=b.nextZ;}return !0}function Rl(t,e){let r=t;do{const n=r.prev,i=r.next.next;!Jl(n,i)&&Wl(n,r,r.next,i)&&eu(n,i)&&eu(i,n)&&(e.push(n.i,r.i,i.i),iu(r),iu(r.next),r=t=i),r=r.next;}while(r!==t);return Dl(r)}function Ul(t,e,r,n,i,s){let a=t;do{let t=a.next.next;for(;t!==a.prev;){if(a.i!==t.i&&Hl(a,t)){let o=ru(a,t);return a=Dl(a,a.next),o=Dl(o,o.next),$l(a,e,r,n,i,s,0),void $l(o,e,r,n,i,s,0)}t=t.next;}a=a.next;}while(a!==t)}function jl(t,e){let r=t.x-e.x;return 0===r&&(r=t.y-e.y,0===r)&&(r=(t.next.y-t.y)/(t.next.x-t.x)-(e.next.y-e.y)/(e.next.x-e.x)),r}function Nl(t,e){const r=function(t,e){let r=e;const n=t.x,i=t.y;let s,a=-1/0;if(Jl(t,r))return r;do{if(Jl(t,r.next))return r.next;if(i<=r.y&&i>=r.next.y&&r.next.y!==r.y){const t=r.x+(i-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(t<=n&&t>a&&(a=t,s=r.x<r.next.x?r:r.next,t===n))return s}r=r.next;}while(r!==e);if(!s)return null;const o=s,l=s.x,u=s.y;let c=1/0;r=s;do{if(n>=r.x&&r.x>=l&&n!==r.x&&Zl(i<u?n:a,i,l,u,i<u?a:n,i,r.x,r.y)){const e=Math.abs(i-r.y)/(n-r.x);eu(r,t)&&(e<c||e===c&&(r.x>s.x||r.x===s.x&&ql(s,r)))&&(s=r,c=e);}r=r.next;}while(r!==o);return s}(t,e);if(!r)return e;const n=ru(r,t);return Dl(n,n.next),Dl(r,r.next)}function ql(t,e){return Kl(t.prev,t,e.prev)<0&&Kl(e.next,t,t.next)<0}function Gl(t,e,r,n,i){return (t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-r)*i|0)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-n)*i|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function Xl(t){let e=t,r=t;do{(e.x<r.x||e.x===r.x&&e.y<r.y)&&(r=e),e=e.next;}while(e!==t);return r}function Zl(t,e,r,n,i,s,a,o){return (i-a)*(e-o)>=(t-a)*(s-o)&&(t-a)*(n-o)>=(r-a)*(e-o)&&(r-a)*(s-o)>=(i-a)*(n-o)}function Yl(t,e,r,n,i,s,a,o){return !(t===a&&e===o)&&Zl(t,e,r,n,i,s,a,o)}function Hl(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){let r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&Wl(r,r.next,t,e))return !0;r=r.next;}while(r!==t);return !1}(t,e)&&(eu(t,e)&&eu(e,t)&&function(t,e){let r=t,n=!1;const i=(t.x+e.x)/2,s=(t.y+e.y)/2;do{r.y>s!=r.next.y>s&&r.next.y!==r.y&&i<(r.next.x-r.x)*(s-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next;}while(r!==t);return n}(t,e)&&(Kl(t.prev,t,e.prev)||Kl(t,e.prev,e))||Jl(t,e)&&Kl(t.prev,t,t.next)>0&&Kl(e.prev,e,e.next)>0)}function Kl(t,e,r){return (e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function Jl(t,e){return t.x===e.x&&t.y===e.y}function Wl(t,e,r,n){const i=tu(Kl(t,e,r)),s=tu(Kl(t,e,n)),a=tu(Kl(r,n,t)),o=tu(Kl(r,n,e));return i!==s&&a!==o||!(0!==i||!Ql(t,r,e))||!(0!==s||!Ql(t,n,e))||!(0!==a||!Ql(r,t,n))||!(0!==o||!Ql(r,e,n))}function Ql(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function tu(t){return t>0?1:t<0?-1:0}function eu(t,e){return Kl(t.prev,t,t.next)<0?Kl(t,e,t.next)>=0&&Kl(t,t.prev,e)>=0:Kl(t,e,t.prev)<0||Kl(t,t.next,e)<0}function ru(t,e){const r=su(t.i,t.x,t.y),n=su(e.i,e.x,e.y),i=t.next,s=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,s.next=n,n.prev=s,n}function nu(t,e,r,n){const i=su(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function iu(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ);}function su(t,e,r){return {i:t,x:e,y:r,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}class au{constructor(t,e){if(e>t)throw new Error(\"Min granularity must not be greater than base granularity.\");this._baseZoomGranularity=t,this._minGranularity=e;}getGranularityForZoomLevel(t){return Math.max(Math.floor(this._baseZoomGranularity/(1<<t)),this._minGranularity,1)}}class ou{constructor(t){this.fill=t.fill,this.line=t.line,this.tile=t.tile,this.stencil=t.stencil,this.circle=t.circle;}}ou.noSubdivision=new ou({fill:new au(0,0),line:new au(0,0),tile:new au(0,0),stencil:new au(0,0),circle:1}),ls(\"SubdivisionGranularityExpression\",au),ls(\"SubdivisionGranularitySetting\",ou);const lu=-32768,uu=32767;class cu{constructor(t,e){this._vertexBuffer=[],this._vertexDictionary=new Map,this._used=!1,this._granularity=t,this._granularityCellSize=P/t,this._canonical=e;}_getKey(t,e){return (t+=32768)<<16|e+32768}_vertexToIndex(t,e){if(t<-32768||e<-32768||t>32767||e>32767)throw new Error(\"Vertex coordinates are out of signed 16 bit integer range.\");const r=0|Math.round(t),n=0|Math.round(e),i=this._getKey(r,n);if(this._vertexDictionary.has(i))return this._vertexDictionary.get(i);const s=this._vertexBuffer.length/2;return this._vertexDictionary.set(i,s),this._vertexBuffer.push(r,n),s}_subdivideTrianglesScanline(t){if(this._granularity<2)return function(t,e){const r=[];for(let n=0;n<e.length;n+=3){const i=e[n],s=e[n+1],a=e[n+2],o=t[2*i],l=t[2*i+1];(t[2*s]-o)*(t[2*a+1]-l)-(t[2*s+1]-l)*(t[2*a]-o)>0?(r.push(i),r.push(a),r.push(s)):(r.push(i),r.push(s),r.push(a));}return r}(this._vertexBuffer,t);const e=[],r=t.length;for(let n=0;n<r;n+=3){const r=[t[n+0],t[n+1],t[n+2]],i=[this._vertexBuffer[2*t[n+0]+0],this._vertexBuffer[2*t[n+0]+1],this._vertexBuffer[2*t[n+1]+0],this._vertexBuffer[2*t[n+1]+1],this._vertexBuffer[2*t[n+2]+0],this._vertexBuffer[2*t[n+2]+1]];let s=1/0,a=1/0,o=-1/0,l=-1/0;for(let t=0;t<3;t++){const e=i[2*t],r=i[2*t+1];s=Math.min(s,e),o=Math.max(o,e),a=Math.min(a,r),l=Math.max(l,r);}if(s===o||a===l)continue;const u=Math.floor(s/this._granularityCellSize),c=Math.ceil(o/this._granularityCellSize),h=Math.floor(a/this._granularityCellSize),p=Math.ceil(l/this._granularityCellSize);if(u!==c||h!==p)for(let t=h;t<p;t++){const n=this._scanlineGenerateVertexRingForCellRow(t,i,r);fu(this._vertexBuffer,n,e);}else e.push(...r);}return e}_scanlineGenerateVertexRingForCellRow(t,e,r){const n=t*this._granularityCellSize,i=n+this._granularityCellSize,s=[];for(let t=0;t<3;t++){const a=e[2*t],o=e[2*t+1],l=e[2*(t+1)%6],u=e[(2*(t+1)+1)%6],c=e[2*(t+2)%6],h=e[(2*(t+2)+1)%6],p=l-a,f=u-o,d=0===p,y=0===f,m=(n-o)/f,g=(i-o)/f,x=Math.min(m,g),v=Math.max(m,g);if(!y&&(x>=1||v<=0)||y&&(o<n||o>i)){u>=n&&u<=i&&s.push(r[(t+1)%3]);continue}!y&&x>0&&s.push(this._vertexToIndex(a+p*x,o+f*x));const b=a+p*Math.max(x,0),w=a+p*Math.min(v,1);d||this._generateIntraEdgeVertices(s,a,o,l,u,b,w),!y&&v<1&&s.push(this._vertexToIndex(a+p*v,o+f*v)),(y||u>=n&&u<=i)&&s.push(r[(t+1)%3]),!y&&(u<=n||u>=i)&&this._generateInterEdgeVertices(s,a,o,l,u,c,h,w,n,i);}return s}_generateIntraEdgeVertices(t,e,r,n,i,s,a){const o=n-e,l=i-r,u=0===l,c=u?Math.min(e,n):Math.min(s,a),h=u?Math.max(e,n):Math.max(s,a),p=Math.floor(c/this._granularityCellSize)+1,f=Math.ceil(h/this._granularityCellSize)-1;if(u?e<n:s<a)for(let n=p;n<=f;n++){const i=n*this._granularityCellSize;t.push(this._vertexToIndex(i,r+l*(i-e)/o));}else for(let n=f;n>=p;n--){const i=n*this._granularityCellSize;t.push(this._vertexToIndex(i,r+l*(i-e)/o));}}_generateInterEdgeVertices(t,e,r,n,i,s,a,o,l,u){const c=i-r,h=s-n,p=a-i,f=(l-i)/p,d=(u-i)/p,y=Math.min(f,d),m=Math.max(f,d),g=n+h*y;let x=Math.floor(Math.min(g,o)/this._granularityCellSize)+1,v=Math.ceil(Math.max(g,o)/this._granularityCellSize)-1,b=o<g;const w=0===p;if(w&&(a===l||a===u))return;if(w||y>=1||m<=0){const t=r-a,n=s+(e-s)*Math.min((l-a)/t,(u-a)/t);x=Math.floor(Math.min(n,o)/this._granularityCellSize)+1,v=Math.ceil(Math.max(n,o)/this._granularityCellSize)-1,b=o<n;}const _=c>0?u:l;if(b)for(let e=x;e<=v;e++)t.push(this._vertexToIndex(e*this._granularityCellSize,_));else for(let e=v;e>=x;e--)t.push(this._vertexToIndex(e*this._granularityCellSize,_));}_generateOutline(t){const e=[];for(const r of t){const t=pu(r,this._granularity,!0),n=this._pointArrayToIndices(t),i=[];for(let t=1;t<n.length;t++)i.push(n[t-1]),i.push(n[t]);e.push(i);}return e}_handlePoles(t){let e=!1,r=!1;this._canonical&&(0===this._canonical.y&&(e=!0),this._canonical.y===(1<<this._canonical.z)-1&&(r=!0)),(e||r)&&this._fillPoles(t,e,r);}_ensureNoPoleVertices(){const t=this._vertexBuffer;for(let e=0;e<t.length;e+=2){const r=t[e+1];r===lu&&(t[e+1]=-32767),r===uu&&(t[e+1]=32766);}}_generatePoleQuad(t,e,r,n,i,s){n>i!=(s===lu)?(t.push(e),t.push(r),t.push(this._vertexToIndex(n,s)),t.push(r),t.push(this._vertexToIndex(i,s)),t.push(this._vertexToIndex(n,s))):(t.push(r),t.push(e),t.push(this._vertexToIndex(n,s)),t.push(this._vertexToIndex(i,s)),t.push(r),t.push(this._vertexToIndex(n,s)));}_fillPoles(t,e,r){const n=this._vertexBuffer,i=P,s=t.length;for(let a=2;a<s;a+=3){const s=t[a-2],o=t[a-1],l=t[a],u=n[2*s],c=n[2*s+1],h=n[2*o],p=n[2*o+1],f=n[2*l],d=n[2*l+1];e&&(0===c&&0===p&&this._generatePoleQuad(t,s,o,u,h,lu),0===p&&0===d&&this._generatePoleQuad(t,o,l,h,f,lu),0===d&&0===c&&this._generatePoleQuad(t,l,s,f,u,lu)),r&&(c===i&&p===i&&this._generatePoleQuad(t,s,o,u,h,uu),p===i&&d===i&&this._generatePoleQuad(t,o,l,h,f,uu),d===i&&c===i&&this._generatePoleQuad(t,l,s,f,u,uu));}}_initializeVertices(t){for(let e=0;e<t.length;e+=2)this._vertexToIndex(t[e],t[e+1]);}subdividePolygonInternal(t,e){if(this._used)throw new Error(\"Subdivision: multiple use not allowed.\");this._used=!0;const{flattened:r,holeIndices:n}=function(t){const e=[],r=[];for(const n of t)if(0!==n.length){n!==t[0]&&e.push(r.length/2);for(let t=0;t<n.length;t++)r.push(n[t].x),r.push(n[t].y);}return {flattened:r,holeIndices:e}}(t);let i;this._initializeVertices(r);try{const t=function(t,e,r=2){const n=e&&e.length,i=n?e[0]*r:t.length;let s=Fl(t,0,i,r,!0);const a=[];if(!s||s.next===s.prev)return a;let o,l,u;if(n&&(s=function(t,e,r,n){const i=[];for(let r=0,s=e.length;r<s;r++){const a=Fl(t,e[r]*n,r<s-1?e[r+1]*n:t.length,n,!1);a===a.next&&(a.steiner=!0),i.push(Xl(a));}i.sort(jl);for(let t=0;t<i.length;t++)r=Nl(i[t],r);return r}(t,e,s,r)),t.length>80*r){o=t[0],l=t[1];let e=o,n=l;for(let s=r;s<i;s+=r){const r=t[s],i=t[s+1];r<o&&(o=r),i<l&&(l=i),r>e&&(e=r),i>n&&(n=i);}u=Math.max(e-o,n-l),u=0!==u?32767/u:0;}return $l(s,a,r,o,l,u,0),a}(r,n),e=this._convertIndices(r,t);i=this._subdivideTrianglesScanline(e);}catch(t){console.error(t);}let s=[];return e&&(s=this._generateOutline(t)),this._ensureNoPoleVertices(),this._handlePoles(i),{verticesFlattened:this._vertexBuffer,indicesTriangles:i,indicesLineList:s}}_convertIndices(t,e){const r=[];for(let n=0;n<e.length;n++)r.push(this._vertexToIndex(t[2*e[n]],t[2*e[n]+1]));return r}_pointArrayToIndices(t){const e=[];for(let r=0;r<t.length;r++){const n=t[r];e.push(this._vertexToIndex(n.x,n.y));}return e}}function hu(t,e,r,n=!0){return new cu(r,e).subdividePolygonInternal(t,n)}function pu(t,e,n=!1){if(!t||t.length<1)return [];if(t.length<2)return [];const i=t[0],s=t[t.length-1],a=n&&(i.x!==s.x||i.y!==s.y);if(e<2)return a?[...t,t[0]]:[...t];const o=Math.floor(P/e),l=[];l.push(new r(t[0].x,t[0].y));const u=t.length,c=a?u:u-1;for(let e=0;e<c;e++){const n=t[e],i=e<u-1?t[e+1]:t[0],s=n.x,a=n.y,c=i.x,h=i.y,p=s!==c,f=a!==h;if(!p&&!f)continue;const d=c-s,y=h-a,m=Math.abs(d),g=Math.abs(y);let x=s,v=a;for(;;){const t=d>0?(Math.floor(x/o)+1)*o:(Math.ceil(x/o)-1)*o,e=y>0?(Math.floor(v/o)+1)*o:(Math.ceil(v/o)-1)*o,n=Math.abs(x-t),i=Math.abs(v-e),s=Math.abs(x-c),a=Math.abs(v-h),u=p?n/m:Number.POSITIVE_INFINITY,b=f?i/g:Number.POSITIVE_INFINITY;if((s<=n||!p)&&(a<=i||!f))break;if(u<b&&p||!f){x=t,v+=y*u;const e=new r(x,Math.round(v));l[l.length-1].x===e.x&&l[l.length-1].y===e.y||l.push(e);}else {x+=d*b,v=e;const t=new r(Math.round(x),v);l[l.length-1].x===t.x&&l[l.length-1].y===t.y||l.push(t);}}const b=new r(c,h);l[l.length-1].x===b.x&&l[l.length-1].y===b.y||l.push(b);}return l}function fu(t,e,r){if(0===e.length)throw new Error(\"Subdivision vertex ring is empty.\");let n=0,i=t[2*e[0]];for(let r=1;r<e.length;r++){const s=t[2*e[r]];s<i&&(i=s,n=r);}const s=e.length;let a=n,o=(a+1)%s;for(;;){const n=a-1>=0?a-1:s-1,i=(o+1)%s,l=t[2*e[n]],u=t[2*e[i]],c=t[2*e[a]],h=t[2*e[a]+1],p=t[2*e[o]+1];let f=!1;if(l<u)f=!0;else if(l>u)f=!1;else {const r=p-h,s=-(t[2*e[o]]-c),a=h<p?1:-1;((l-c)*r+(t[2*e[n]+1]-h)*s)*a>((u-c)*r+(t[2*e[i]+1]-h)*s)*a&&(f=!0);}if(f){const t=e[n],i=e[a],l=e[o];t!==i&&t!==l&&i!==l&&r.push(l,i,t),a--,a<0&&(a=s-1);}else {const t=e[i],n=e[a],l=e[o];t!==n&&t!==l&&n!==l&&r.push(l,n,t),o++,o>=s&&(o=0);}if(n===i)break}}function du(t,e,r,n,i,s,a,o,l){const u=i.length/2,c=a&&o&&l;if(u<to.MAX_VERTEX_ARRAY_LENGTH){const h=e.prepareSegment(u,r,n),p=h.vertexLength;for(let t=0;t<s.length;t+=3)n.emplaceBack(p+s[t],p+s[t+1],p+s[t+2]);let f,d;h.vertexLength+=u,h.primitiveLength+=s.length/3,c&&(d=a.prepareSegment(u,r,o),f=d.vertexLength,d.vertexLength+=u);for(let e=0;e<i.length;e+=2)t(i[e],i[e+1]);if(c)for(let t=0;t<l.length;t++){const e=l[t];for(let t=1;t<e.length;t+=2)o.emplaceBack(f+e[t-1],f+e[t]);d.primitiveLength+=e.length/2;}}else !function(t,e,r,n,i,s){const a=[];for(let t=0;t<n.length/2;t++)a.push(-1);const o={count:0};let l=0,u=t.getOrCreateLatestSegment(e,r),c=u.vertexLength;for(let h=2;h<i.length;h+=3){const p=i[h-2],f=i[h-1],d=i[h];let y=a[p]<l,m=a[f]<l,g=a[d]<l;u.vertexLength+((y?1:0)+(m?1:0)+(g?1:0))>to.MAX_VERTEX_ARRAY_LENGTH&&(u=t.createNewSegment(e,r),l=o.count,y=!0,m=!0,g=!0,c=0);const x=yu(a,n,s,o,p,y,u),v=yu(a,n,s,o,f,m,u),b=yu(a,n,s,o,d,g,u);r.emplaceBack(c+x-l,c+v-l,c+b-l),u.primitiveLength++;}}(e,r,n,i,s,t),c&&function(t,e,r,n,i,s){const a=[];for(let t=0;t<n.length/2;t++)a.push(-1);const o={count:0};let l=0,u=t.getOrCreateLatestSegment(e,r),c=u.vertexLength;for(let h=0;h<i.length;h++){const p=i[h];for(let f=1;f<i[h].length;f+=2){const i=p[f-1],h=p[f];let d=a[i]<l,y=a[h]<l;u.vertexLength+((d?1:0)+(y?1:0))>to.MAX_VERTEX_ARRAY_LENGTH&&(u=t.createNewSegment(e,r),l=o.count,d=!0,y=!0,c=0);const m=yu(a,n,s,o,i,d,u),g=yu(a,n,s,o,h,y,u);r.emplaceBack(c+m-l,c+g-l),u.primitiveLength++;}}}(a,r,o,i,l,t),e.forceNewSegmentOnNextPrepare(),null==a||a.forceNewSegmentOnNextPrepare();}function yu(t,e,r,n,i,s,a){if(s){const s=n.count;return r(e[2*i],e[2*i+1]),t[i]=n.count,n.count++,a.vertexLength++,s}return t[i]}class mu{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasDependencies=!1,this.patternFeatures=[],this.layoutVertexArray=new Oa,this.indexArray=new Ka,this.indexArray2=new Ja,this.programConfigurations=new Eo(t.layers,t.zoom),this.segments=new to,this.segments2=new to,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r){this.hasDependencies=Bl(\"fill\",this.layers,e);const n=this.layers[0].layout.get(\"fill-sort-key\"),i=!n.isConstant(),s=[];for(const{feature:a,id:o,index:l,sourceLayerIndex:u}of t){const t=this.layers[0]._featureFilter.needGeometry,c=$o(a,t);if(!this.layers[0]._featureFilter.filter(new Ps(this.zoom),c,r))continue;const h=i?n.evaluate(c,{},r,e.availableImages):void 0,p={id:o,properties:a.properties,type:a.type,sourceLayerIndex:u,index:l,geometry:t?c.geometry:Do(a),patterns:{},sortKey:h};s.push(p);}i&&s.sort(((t,e)=>t.sortKey-e.sortKey));for(const n of s){const{geometry:i,index:s,sourceLayerIndex:a}=n;if(this.hasDependencies){const t=Vl(\"fill\",this.layers,n,{zoom:this.zoom},e);this.patternFeatures.push(t);}else this.addFeature(n,i,s,r,{},e.subdivisionGranularity);e.featureIndex.insert(t[s].feature,i,s,a,this.index);}}update(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,{imagePositions:r});}addFeatures(t,e,r){for(const n of this.patternFeatures)this.addFeature(n,n.geometry,n.index,e,r,t.subdivisionGranularity);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Tl),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.indexBuffer2=t.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy());}addFeature(t,e,r,n,i,s){for(const t of tn(e,500)){const e=hu(t,n,s.fill.getGranularityForZoomLevel(n.z)),r=this.layoutVertexArray;du(((t,e)=>{r.emplaceBack(t,e);}),this.segments,this.layoutVertexArray,this.indexArray,e.verticesFlattened,e.indicesTriangles,this.segments2,this.indexArray2,e.indicesLineList);}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{imagePositions:i,canonical:n});}}let gu,xu;ls(\"FillBucket\",mu,{omit:[\"layers\",\"patternFeatures\"]});var vu={get paint(){return xu=xu||new qs({\"fill-antialias\":new Os(vt.paint_fill[\"fill-antialias\"]),\"fill-opacity\":new Rs(vt.paint_fill[\"fill-opacity\"]),\"fill-color\":new Rs(vt.paint_fill[\"fill-color\"]),\"fill-outline-color\":new Rs(vt.paint_fill[\"fill-outline-color\"]),\"fill-translate\":new Os(vt.paint_fill[\"fill-translate\"]),\"fill-translate-anchor\":new Os(vt.paint_fill[\"fill-translate-anchor\"]),\"fill-pattern\":new Us(vt.paint_fill[\"fill-pattern\"])})},get layout(){return gu=gu||new qs({\"fill-sort-key\":new Rs(vt.layout_fill[\"fill-sort-key\"])})}};class bu extends Xs{constructor(t,e){super(t,vu,e);}recalculate(t,e){super.recalculate(t,e);const r=this.paint._values[\"fill-outline-color\"];\"constant\"===r.value.kind&&void 0===r.value.value&&(this.paint._values[\"fill-outline-color\"]=this.paint._values[\"fill-color\"]);}createBucket(t){return new mu(t)}queryRadius(){return Qo(this.paint.get(\"fill-translate\"))}queryIntersectsFeature({queryGeometry:t,geometry:e,transform:r,pixelsToTileUnits:n}){return No(tl(t,this.paint.get(\"fill-translate\"),this.paint.get(\"fill-translate-anchor\"),-r.bearingInRadians,n),e)}isTileClipped(){return !0}}const wu=Qs([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_normal_ed\",components:4,type:\"Int16\"}],4),_u=Qs([{name:\"a_centroid\",components:2,type:\"Int16\"}],4),{members:Su}=wu;class Au{constructor(t,e,r,n,i){this.properties={},this.extent=r,this.type=0,this.id=void 0,this._pbf=t,this._geometry=-1,this._keys=n,this._values=i,t.readFields(ku,this,e);}loadGeometry(){const t=this._pbf;t.pos=this._geometry;const e=t.readVarint()+t.pos,n=[];let i,s=1,a=0,o=0,l=0;for(;t.pos<e;){if(a<=0){const e=t.readVarint();s=7&e,a=e>>3;}if(a--,1===s||2===s)o+=t.readSVarint(),l+=t.readSVarint(),1===s&&(i&&n.push(i),i=[]),i&&i.push(new r(o,l));else {if(7!==s)throw new Error(`unknown command ${s}`);i&&i.push(i[0].clone());}}return i&&n.push(i),n}bbox(){const t=this._pbf;t.pos=this._geometry;const e=t.readVarint()+t.pos;let r=1,n=0,i=0,s=0,a=1/0,o=-1/0,l=1/0,u=-1/0;for(;t.pos<e;){if(n<=0){const e=t.readVarint();r=7&e,n=e>>3;}if(n--,1===r||2===r)i+=t.readSVarint(),s+=t.readSVarint(),i<a&&(a=i),i>o&&(o=i),s<l&&(l=s),s>u&&(u=s);else if(7!==r)throw new Error(`unknown command ${r}`)}return [a,l,o,u]}toGeoJSON(t,e,r){const n=this.extent*Math.pow(2,r),i=this.extent*t,s=this.extent*e,a=this.loadGeometry();function o(t){return [360*(t.x+i)/n-180,360/Math.PI*Math.atan(Math.exp((1-2*(t.y+s)/n)*Math.PI))-90]}function l(t){return t.map(o)}let u;if(1===this.type){const t=[];for(const e of a)t.push(e[0]);const e=l(t);u=1===t.length?{type:\"Point\",coordinates:e[0]}:{type:\"MultiPoint\",coordinates:e};}else if(2===this.type){const t=a.map(l);u=1===t.length?{type:\"LineString\",coordinates:t[0]}:{type:\"MultiLineString\",coordinates:t};}else {if(3!==this.type)throw new Error(\"unknown feature type\");{const t=function(t){const e=t.length;if(e<=1)return [t];const r=[];let n,i;for(let s=0;s<e;s++){const e=Mu(t[s]);0!==e&&(void 0===i&&(i=e<0),i===e<0?(n&&r.push(n),n=[t[s]]):n&&n.push(t[s]));}return n&&r.push(n),r}(a),e=[];for(const r of t)e.push(r.map(l));u=1===e.length?{type:\"Polygon\",coordinates:e[0]}:{type:\"MultiPolygon\",coordinates:e};}}const c={type:\"Feature\",geometry:u,properties:this.properties};return null!=this.id&&(c.id=this.id),c}}function ku(t,e,r){1===t?e.id=r.readVarint():2===t?function(t,e){const r=t.readVarint()+t.pos;for(;t.pos<r;){const r=e._keys[t.readVarint()],n=e._values[t.readVarint()];e.properties[r]=n;}}(r,e):3===t?e.type=r.readVarint():4===t&&(e._geometry=r.pos);}function Mu(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}Au.types=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"];class Iu{constructor(t,e){this.version=1,this.name=\"\",this.extent=4096,this.length=0,this._pbf=t,this._keys=[],this._values=[],this._features=[],t.readFields(zu,this,e),this.length=this._features.length;}feature(t){if(t<0||t>=this._features.length)throw new Error(\"feature index out of bounds\");this._pbf.pos=this._features[t];const e=this._pbf.readVarint()+this._pbf.pos;return new Au(this._pbf,e,this.extent,this._keys,this._values)}}function zu(t,e,r){15===t?e.version=r.readVarint():1===t?e.name=r.readString():5===t?e.extent=r.readVarint():2===t?e._features.push(r.pos):3===t?e._keys.push(r.readString()):4===t&&e._values.push(function(t){let e=null;const r=t.readVarint()+t.pos;for(;t.pos<r;){const r=t.readVarint()>>3;e=1===r?t.readString():2===r?t.readFloat():3===r?t.readDouble():4===r?t.readVarint64():5===r?t.readVarint():6===r?t.readSVarint():7===r?t.readBoolean():null;}if(null==e)throw new Error(\"unknown feature value\");return e}(r));}class Pu{constructor(t,e){this.layers=t.readFields(Cu,{},e);}}function Cu(t,e,r){if(3===t){const t=new Iu(r,r.readVarint()+r.pos);t.length&&(e[t.name]=t);}}const Eu=Math.pow(2,13);function Tu(t,e,r,n,i,s,a,o){t.emplaceBack(e,r,2*Math.floor(n*Eu)+a,i*Eu*2,s*Eu*2,Math.round(o));}class Bu{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasDependencies=!1,this.layoutVertexArray=new Ra,this.centroidVertexArray=new $a,this.indexArray=new Ka,this.programConfigurations=new Eo(t.layers,t.zoom),this.segments=new to,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r){this.features=[],this.hasDependencies=Bl(\"fill-extrusion\",this.layers,e);for(const{feature:n,id:i,index:s,sourceLayerIndex:a}of t){const t=this.layers[0]._featureFilter.needGeometry,o=$o(n,t);if(!this.layers[0]._featureFilter.filter(new Ps(this.zoom),o,r))continue;const l={id:i,sourceLayerIndex:a,index:s,geometry:t?o.geometry:Do(n),properties:n.properties,type:n.type,patterns:{}};this.hasDependencies?this.features.push(Vl(\"fill-extrusion\",this.layers,l,{zoom:this.zoom},e)):this.addFeature(l,l.geometry,s,r,{},e.subdivisionGranularity),e.featureIndex.insert(n,l.geometry,s,a,this.index,!0);}}addFeatures(t,e,r){for(const n of this.features){const{geometry:i}=n;this.addFeature(n,i,n.index,e,r,t.subdivisionGranularity);}}update(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,{imagePositions:r});}isEmpty(){return 0===this.layoutVertexArray.length&&0===this.centroidVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Su),this.centroidVertexBuffer=t.createVertexBuffer(this.centroidVertexArray,_u.members,!0),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.centroidVertexBuffer.destroy());}addFeature(t,e,r,n,i,s){for(const r of tn(e,500)){const e={x:0,y:0,sampleCount:0},i=this.layoutVertexArray.length;this.processPolygon(e,n,t,r,s);const a=this.layoutVertexArray.length-i,o=Math.floor(e.x/e.sampleCount),l=Math.floor(e.y/e.sampleCount);for(let t=0;t<a;t++)this.centroidVertexArray.emplaceBack(o,l);}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{imagePositions:i,canonical:n});}processPolygon(t,e,r,n,i){if(n.length<1)return;if(Du(n[0]))return;for(const e of n)0!==e.length&&Vu(t,e);const s={segment:this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray)},a=i.fill.getGranularityForZoomLevel(e.z),o=\"Polygon\"===Au.types[r.type];for(const t of n){if(0===t.length)continue;if(Du(t))continue;const e=pu(t,a,o);this._generateSideFaces(e,s);}if(!o)return;const l=hu(n,e,a,!1),u=this.layoutVertexArray;du(((t,e)=>{Tu(u,t,e,0,0,1,1,0);}),this.segments,this.layoutVertexArray,this.indexArray,l.verticesFlattened,l.indicesTriangles);}_generateSideFaces(t,e){let r=0;for(let n=1;n<t.length;n++){const i=t[n],s=t[n-1];if(Fu(i,s))continue;e.segment.vertexLength+4>to.MAX_VERTEX_ARRAY_LENGTH&&(e.segment=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));const a=i.sub(s)._perp()._unit(),o=s.dist(i);r+o>32768&&(r=0),Tu(this.layoutVertexArray,i.x,i.y,a.x,a.y,0,0,r),Tu(this.layoutVertexArray,i.x,i.y,a.x,a.y,0,1,r),r+=o,Tu(this.layoutVertexArray,s.x,s.y,a.x,a.y,0,0,r),Tu(this.layoutVertexArray,s.x,s.y,a.x,a.y,0,1,r);const l=e.segment.vertexLength;this.indexArray.emplaceBack(l,l+2,l+1),this.indexArray.emplaceBack(l+1,l+2,l+3),e.segment.vertexLength+=4,e.segment.primitiveLength+=2;}}}function Vu(t,e){for(let r=0;r<e.length;r++){const n=e[r];r===e.length-1&&e[0].x===n.x&&e[0].y===n.y||(t.x+=n.x,t.y+=n.y,t.sampleCount++);}}function Fu(t,e){return t.x===e.x&&(t.x<0||t.x>P)||t.y===e.y&&(t.y<0||t.y>P)}function Du(t){return t.every((t=>t.x<0))||t.every((t=>t.x>P))||t.every((t=>t.y<0))||t.every((t=>t.y>P))}let $u;ls(\"FillExtrusionBucket\",Bu,{omit:[\"layers\",\"features\"]});var Lu={get paint(){return $u=$u||new qs({\"fill-extrusion-opacity\":new Os(vt[\"paint_fill-extrusion\"][\"fill-extrusion-opacity\"]),\"fill-extrusion-color\":new Rs(vt[\"paint_fill-extrusion\"][\"fill-extrusion-color\"]),\"fill-extrusion-translate\":new Os(vt[\"paint_fill-extrusion\"][\"fill-extrusion-translate\"]),\"fill-extrusion-translate-anchor\":new Os(vt[\"paint_fill-extrusion\"][\"fill-extrusion-translate-anchor\"]),\"fill-extrusion-pattern\":new Us(vt[\"paint_fill-extrusion\"][\"fill-extrusion-pattern\"]),\"fill-extrusion-height\":new Rs(vt[\"paint_fill-extrusion\"][\"fill-extrusion-height\"]),\"fill-extrusion-base\":new Rs(vt[\"paint_fill-extrusion\"][\"fill-extrusion-base\"]),\"fill-extrusion-vertical-gradient\":new Os(vt[\"paint_fill-extrusion\"][\"fill-extrusion-vertical-gradient\"])})}};class Ou extends Xs{constructor(t,e){super(t,Lu,e);}createBucket(t){return new Bu(t)}queryRadius(){return Qo(this.paint.get(\"fill-extrusion-translate\"))}is3D(){return !0}queryIntersectsFeature({queryGeometry:t,feature:e,featureState:n,geometry:i,transform:s,pixelsToTileUnits:a,pixelPosMatrix:o}){const l=tl(t,this.paint.get(\"fill-extrusion-translate\"),this.paint.get(\"fill-extrusion-translate-anchor\"),-s.bearingInRadians,a),u=this.paint.get(\"fill-extrusion-height\").evaluate(e,n),c=this.paint.get(\"fill-extrusion-base\").evaluate(e,n),h=function(t,e){const n=[];for(const i of t){const t=[i.x,i.y,0,1];A(t,t,e),n.push(new r(t[0]/t[3],t[1]/t[3]));}return n}(l,o),p=function(t,e,n,i){const s=[],a=[],o=i[8]*e,l=i[9]*e,u=i[10]*e,c=i[11]*e,h=i[8]*n,p=i[9]*n,f=i[10]*n,d=i[11]*n;for(const e of t){const t=[],n=[];for(const s of e){const e=s.x,a=s.y,y=i[0]*e+i[4]*a+i[12],m=i[1]*e+i[5]*a+i[13],g=i[2]*e+i[6]*a+i[14],x=i[3]*e+i[7]*a+i[15],v=g+u,b=x+c,w=y+h,_=m+p,S=g+f,A=x+d,k=new r((y+o)/b,(m+l)/b);k.z=v/b,t.push(k);const M=new r(w/A,_/A);M.z=S/A,n.push(M);}s.push(t),a.push(n);}return [s,a]}(i,c,u,o);return function(t,e,r){let n=1/0;No(r,e)&&(n=Uu(r,e[0]));for(let i=0;i<e.length;i++){const s=e[i],a=t[i];for(let t=0;t<s.length-1;t++){const e=s[t],i=[e,s[t+1],a[t+1],a[t],e];Uo(r,i)&&(n=Math.min(n,Uu(r,i)));}}return n!==1/0&&n}(p[0],p[1],h)}}function Ru(t,e){return t.x*e.x+t.y*e.y}function Uu(t,e){if(1===t.length){let r=0;const n=e[r++];let i;for(;!i||n.equals(i);)if(i=e[r++],!i)return 1/0;for(;r<e.length;r++){const s=e[r],a=t[0],o=i.sub(n),l=s.sub(n),u=a.sub(n),c=Ru(o,o),h=Ru(o,l),p=Ru(l,l),f=Ru(u,o),d=Ru(u,l),y=c*p-h*h,m=(p*f-h*d)/y,g=(c*d-h*f)/y,x=n.z*(1-m-g)+i.z*m+s.z*g;if(isFinite(x))return x}return 1/0}{let t=1/0;for(const r of e)t=Math.min(t,r.z);return t}}const ju=Qs([{name:\"a_pos_normal\",components:2,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint8\"}],4),{members:Nu}=ju,qu=Qs([{name:\"a_uv_x\",components:1,type:\"Float32\"},{name:\"a_split_index\",components:1,type:\"Float32\"}]),{members:Gu}=qu,Xu=Math.cos(Math.PI/180*37.5),Zu=Math.pow(2,14)/.5;class Yu{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasDependencies=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach((t=>{this.gradients[t.id]={};})),this.layoutVertexArray=new Ua,this.layoutVertexArray2=new ja,this.indexArray=new Ka,this.programConfigurations=new Eo(t.layers,t.zoom),this.segments=new to,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r){this.hasDependencies=Bl(\"line\",this.layers,e)||this.hasLineDasharray(this.layers);const n=this.layers[0].layout.get(\"line-sort-key\"),i=!n.isConstant(),s=[];for(const{feature:e,id:a,index:o,sourceLayerIndex:l}of t){const t=this.layers[0]._featureFilter.needGeometry,u=$o(e,t);if(!this.layers[0]._featureFilter.filter(new Ps(this.zoom),u,r))continue;const c=i?n.evaluate(u,{},r):void 0,h={id:a,properties:e.properties,type:e.type,sourceLayerIndex:l,index:o,geometry:t?u.geometry:Do(e),patterns:{},dashes:{},sortKey:c};s.push(h);}i&&s.sort(((t,e)=>t.sortKey-e.sortKey));for(const n of s){const{geometry:i,index:s,sourceLayerIndex:a}=n;this.hasDependencies?(Bl(\"line\",this.layers,e)?Vl(\"line\",this.layers,n,{zoom:this.zoom},e):this.hasLineDasharray(this.layers)&&this.addLineDashDependencies(this.layers,n,this.zoom,e),this.patternFeatures.push(n)):this.addFeature(n,i,s,r,{},{},e.subdivisionGranularity),e.featureIndex.insert(t[s].feature,i,s,a,this.index);}}update(t,e,r,n){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,{imagePositions:r,dashPositions:n});}addFeatures(t,e,r,n){for(const i of this.patternFeatures)this.addFeature(i,i.geometry,i.index,e,r,n,t.subdivisionGranularity);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(0!==this.layoutVertexArray2.length&&(this.layoutVertexBuffer2=t.createVertexBuffer(this.layoutVertexArray2,Gu)),this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Nu),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());}lineFeatureClips(t){if(t.properties&&Object.prototype.hasOwnProperty.call(t.properties,\"mapbox_clip_start\")&&Object.prototype.hasOwnProperty.call(t.properties,\"mapbox_clip_end\"))return {start:+t.properties.mapbox_clip_start,end:+t.properties.mapbox_clip_end}}addFeature(t,e,r,n,i,s,a){const o=this.layers[0].layout,l=o.get(\"line-join\").evaluate(t,{}),u=o.get(\"line-cap\"),c=o.get(\"line-miter-limit\"),h=o.get(\"line-round-limit\");this.lineClips=this.lineFeatureClips(t);for(const r of e)this.addLine(r,t,l,u,c,h,n,a);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{imagePositions:i,dashPositions:s,canonical:n});}addLine(t,e,r,n,i,s,a,o){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,t=pu(t,a?o.line.getGranularityForZoomLevel(a.z):1),this.lineClips){this.lineClipsArray.push(this.lineClips);for(let e=0;e<t.length-1;e++)this.totalDistance+=t[e].dist(t[e+1]);this.updateScaledDistance(),this.maxLineLength=Math.max(this.maxLineLength,this.totalDistance);}const l=\"Polygon\"===Au.types[e.type];let u=t.length;for(;u>=2&&t[u-1].equals(t[u-2]);)u--;let c=0;for(;c<u-1&&t[c].equals(t[c+1]);)c++;if(u<(l?3:2))return;\"bevel\"===r&&(i=1.05);const h=this.overscaling<=16?122880/(512*this.overscaling):0,p=this.segments.prepareSegment(10*u,this.layoutVertexArray,this.indexArray);let f,d,y,m,g;this.e1=this.e2=-1,l&&(f=t[u-2],g=t[c].sub(f)._unit()._perp());for(let e=c;e<u;e++){if(y=e===u-1?l?t[c+1]:void 0:t[e+1],y&&t[e].equals(y))continue;g&&(m=g),f&&(d=f),f=t[e],g=y?y.sub(f)._unit()._perp():m,m=m||g;let a=m.add(g);0===a.x&&0===a.y||a._unit();const o=m.x*g.x+m.y*g.y,x=a.x*g.x+a.y*g.y,v=0!==x?1/x:1/0,b=2*Math.sqrt(2-2*x),w=x<Xu&&d&&y,_=m.x*g.y-m.y*g.x>0;if(w&&e>c){const t=f.dist(d);if(t>2*h){const e=f.sub(f.sub(d)._mult(h/t)._round());this.updateDistance(d,e),this.addCurrentVertex(e,m,0,0,p),d=e;}}const S=d&&y;let A=S?r:l?\"butt\":n;if(S&&\"round\"===A&&(v<s?A=\"miter\":v<=2&&(A=\"fakeround\")),\"miter\"===A&&v>i&&(A=\"bevel\"),\"bevel\"===A&&(v>2&&(A=\"flipbevel\"),v<i&&(A=\"miter\")),d&&this.updateDistance(d,f),\"miter\"===A)a._mult(v),this.addCurrentVertex(f,a,0,0,p);else if(\"flipbevel\"===A){if(v>100)a=g.mult(-1);else {const t=v*m.add(g).mag()/m.sub(g).mag();a._perp()._mult(t*(_?-1:1));}this.addCurrentVertex(f,a,0,0,p),this.addCurrentVertex(f,a.mult(-1),0,0,p);}else if(\"bevel\"===A||\"fakeround\"===A){const t=-Math.sqrt(v*v-1),e=_?t:0,r=_?0:t;if(d&&this.addCurrentVertex(f,m,e,r,p),\"fakeround\"===A){const t=Math.round(180*b/Math.PI/20);for(let e=1;e<t;e++){let r=e/t;if(.5!==r){const t=r-.5;r+=r*t*(r-1)*((1.0904+o*(o*(3.55645-1.43519*o)-3.2452))*t*t+(.848013+o*(.215638*o-1.06021)));}const n=g.sub(m)._mult(r)._add(m)._unit()._mult(_?-1:1);this.addHalfVertex(f,n.x,n.y,!1,_,0,p);}}y&&this.addCurrentVertex(f,g,-e,-r,p);}else if(\"butt\"===A)this.addCurrentVertex(f,a,0,0,p);else if(\"square\"===A){const t=d?1:-1;this.addCurrentVertex(f,a,t,t,p);}else \"round\"===A&&(d&&(this.addCurrentVertex(f,m,0,0,p),this.addCurrentVertex(f,m,1,1,p,!0)),y&&(this.addCurrentVertex(f,g,-1,-1,p,!0),this.addCurrentVertex(f,g,0,0,p)));if(w&&e<u-1){const t=f.dist(y);if(t>2*h){const e=f.add(y.sub(f)._mult(h/t)._round());this.updateDistance(f,e),this.addCurrentVertex(e,g,0,0,p),f=e;}}}}addCurrentVertex(t,e,r,n,i,s=!1){const a=e.y*n-e.x,o=-e.y-e.x*n;this.addHalfVertex(t,e.x+e.y*r,e.y-e.x*r,s,!1,r,i),this.addHalfVertex(t,a,o,s,!0,-n,i),this.distance>Zu/2&&0===this.totalDistance&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(t,e,r,n,i,s));}addHalfVertex({x:t,y:e},r,n,i,s,a,o){const l=.5*(this.lineClips?this.scaledDistance*(Zu-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((t<<1)+(i?1:0),(e<<1)+(s?1:0),Math.round(63*r)+128,Math.round(63*n)+128,1+(0===a?0:a<0?-1:1)|(63&l)<<2,l>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);const u=o.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,u,this.e2),o.primitiveLength++),s?this.e2=u:this.e1=u;}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance;}updateDistance(t,e){this.distance+=t.dist(e),this.updateScaledDistance();}hasLineDasharray(t){for(const e of t){const t=e.paint.get(\"line-dasharray\");if(t&&!t.isConstant())return !0}return !1}addLineDashDependencies(t,e,r,n){for(const i of t){const t=i.paint.get(\"line-dasharray\");if(!t||\"constant\"===t.value.kind)continue;const s=\"round\"===i.layout.get(\"line-cap\"),a={dasharray:t.value.evaluate({zoom:r-1},e,{}),round:s},o={dasharray:t.value.evaluate({zoom:r},e,{}),round:s},l={dasharray:t.value.evaluate({zoom:r+1},e,{}),round:s},u=`${a.dasharray.join(\",\")},${a.round}`,c=`${o.dasharray.join(\",\")},${o.round}`,h=`${l.dasharray.join(\",\")},${l.round}`;n.dashDependencies[u]=a,n.dashDependencies[c]=o,n.dashDependencies[h]=l,e.dashes[i.id]={min:u,mid:c,max:h};}}}let Hu,Ku;ls(\"LineBucket\",Yu,{omit:[\"layers\",\"patternFeatures\"]});var Ju={get paint(){return Ku=Ku||new qs({\"line-opacity\":new Rs(vt.paint_line[\"line-opacity\"]),\"line-color\":new Rs(vt.paint_line[\"line-color\"]),\"line-translate\":new Os(vt.paint_line[\"line-translate\"]),\"line-translate-anchor\":new Os(vt.paint_line[\"line-translate-anchor\"]),\"line-width\":new Rs(vt.paint_line[\"line-width\"]),\"line-gap-width\":new Rs(vt.paint_line[\"line-gap-width\"]),\"line-offset\":new Rs(vt.paint_line[\"line-offset\"]),\"line-blur\":new Rs(vt.paint_line[\"line-blur\"]),\"line-dasharray\":new Us(vt.paint_line[\"line-dasharray\"]),\"line-pattern\":new Us(vt.paint_line[\"line-pattern\"]),\"line-gradient\":new Ns(vt.paint_line[\"line-gradient\"])})},get layout(){return Hu=Hu||new qs({\"line-cap\":new Os(vt.layout_line[\"line-cap\"]),\"line-join\":new Rs(vt.layout_line[\"line-join\"]),\"line-miter-limit\":new Os(vt.layout_line[\"line-miter-limit\"]),\"line-round-limit\":new Os(vt.layout_line[\"line-round-limit\"]),\"line-sort-key\":new Rs(vt.layout_line[\"line-sort-key\"])})}};class Wu extends Rs{possiblyEvaluate(t,e){return e=new Ps(Math.floor(e.zoom),{now:e.now,fadeDuration:e.fadeDuration,zoomHistory:e.zoomHistory,transition:e.transition}),super.possiblyEvaluate(t,e)}evaluate(t,e,r,n){return e=L({},e,{zoom:Math.floor(e.zoom)}),super.evaluate(t,e,r,n)}}let Qu;class tc extends Xs{constructor(t,e){super(t,Ju,e),this.gradientVersion=0,Qu||(Qu=new Wu(Ju.paint.properties[\"line-width\"].specification),Qu.useIntegerZoom=!0);}_handleSpecialPaintPropertyUpdate(t){if(\"line-gradient\"===t){const t=this.gradientExpression();this.stepInterpolant=!!function(t){return void 0!==t._styleExpression}(t)&&t._styleExpression.expression instanceof or,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER;}}gradientExpression(){return this._transitionablePaint._values[\"line-gradient\"].value.expression}recalculate(t,e){super.recalculate(t,e),this.paint._values[\"line-floorwidth\"]=Qu.possiblyEvaluate(this._transitioningPaint._values[\"line-width\"].value,t);}createBucket(t){return new Yu(t)}queryRadius(t){const e=t,r=ec(Wo(\"line-width\",this,e),Wo(\"line-gap-width\",this,e)),n=Wo(\"line-offset\",this,e);return r/2+Math.abs(n)+Qo(this.paint.get(\"line-translate\"))}queryIntersectsFeature({queryGeometry:t,feature:e,featureState:n,geometry:i,transform:s,pixelsToTileUnits:a}){const o=tl(t,this.paint.get(\"line-translate\"),this.paint.get(\"line-translate-anchor\"),-s.bearingInRadians,a),l=a/2*ec(this.paint.get(\"line-width\").evaluate(e,n),this.paint.get(\"line-gap-width\").evaluate(e,n)),u=this.paint.get(\"line-offset\").evaluate(e,n);return u&&(i=function(t,e){const n=[];for(let i=0;i<t.length;i++){const s=t[i],a=[];for(let t=0;t<s.length;t++){const n=s[t-1],i=s[t],o=s[t+1],l=0===t?new r(0,0):i.sub(n)._unit()._perp(),u=t===s.length-1?new r(0,0):o.sub(i)._unit()._perp(),c=l._add(u)._unit(),h=c.x*u.x+c.y*u.y;0!==h&&c._mult(1/h),a.push(c._mult(e)._add(i));}n.push(a);}return n}(i,u*a)),function(t,e,r){for(let n=0;n<e.length;n++){const i=e[n];if(t.length>=3)for(let e=0;e<i.length;e++)if(Ko(t,i[e]))return !0;if(qo(t,i,r))return !0}return !1}(o,i,l)}isTileClipped(){return !0}}function ec(t,e){return e>0?e+2*t:t}const rc=Qs([{name:\"a_pos_offset\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint16\"},{name:\"a_pixeloffset\",components:4,type:\"Int16\"}],4),nc=Qs([{name:\"a_projected_pos\",components:3,type:\"Float32\"}],4);Qs([{name:\"a_fade_opacity\",components:1,type:\"Uint32\"}],4);const ic=Qs([{name:\"a_placed\",components:2,type:\"Uint8\"},{name:\"a_shift\",components:2,type:\"Float32\"},{name:\"a_box_real\",components:2,type:\"Int16\"}]);Qs([{type:\"Int16\",name:\"anchorPointX\"},{type:\"Int16\",name:\"anchorPointY\"},{type:\"Int16\",name:\"x1\"},{type:\"Int16\",name:\"y1\"},{type:\"Int16\",name:\"x2\"},{type:\"Int16\",name:\"y2\"},{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"}]);const sc=Qs([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4),ac=Qs([{name:\"a_pos\",components:2,type:\"Float32\"},{name:\"a_radius\",components:1,type:\"Float32\"},{name:\"a_flags\",components:2,type:\"Int16\"}],4);function oc(t,e,r){return t.sections.forEach((t=>{t.text=function(t,e,r){const n=e.layout.get(\"text-transform\").evaluate(r,{});return \"uppercase\"===n?t=t.toLocaleUpperCase():\"lowercase\"===n&&(t=t.toLocaleLowerCase()),zs.applyArabicShaping&&(t=zs.applyArabicShaping(t)),t}(t.text,e,r);})),t}Qs([{name:\"triangle\",components:3,type:\"Uint16\"}]),Qs([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Uint16\",name:\"glyphStartIndex\"},{type:\"Uint16\",name:\"numGlyphs\"},{type:\"Uint32\",name:\"vertexStartIndex\"},{type:\"Uint32\",name:\"lineStartIndex\"},{type:\"Uint32\",name:\"lineLength\"},{type:\"Uint16\",name:\"segment\"},{type:\"Uint16\",name:\"lowerSize\"},{type:\"Uint16\",name:\"upperSize\"},{type:\"Float32\",name:\"lineOffsetX\"},{type:\"Float32\",name:\"lineOffsetY\"},{type:\"Uint8\",name:\"writingMode\"},{type:\"Uint8\",name:\"placedOrientation\"},{type:\"Uint8\",name:\"hidden\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Int16\",name:\"associatedIconIndex\"}]),Qs([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Int16\",name:\"rightJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"centerJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"leftJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedTextSymbolIndex\"},{type:\"Int16\",name:\"placedIconSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedIconSymbolIndex\"},{type:\"Uint16\",name:\"key\"},{type:\"Uint16\",name:\"textBoxStartIndex\"},{type:\"Uint16\",name:\"textBoxEndIndex\"},{type:\"Uint16\",name:\"verticalTextBoxStartIndex\"},{type:\"Uint16\",name:\"verticalTextBoxEndIndex\"},{type:\"Uint16\",name:\"iconBoxStartIndex\"},{type:\"Uint16\",name:\"iconBoxEndIndex\"},{type:\"Uint16\",name:\"verticalIconBoxStartIndex\"},{type:\"Uint16\",name:\"verticalIconBoxEndIndex\"},{type:\"Uint16\",name:\"featureIndex\"},{type:\"Uint16\",name:\"numHorizontalGlyphVertices\"},{type:\"Uint16\",name:\"numVerticalGlyphVertices\"},{type:\"Uint16\",name:\"numIconVertices\"},{type:\"Uint16\",name:\"numVerticalIconVertices\"},{type:\"Uint16\",name:\"useRuntimeCollisionCircles\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Float32\",name:\"textBoxScale\"},{type:\"Float32\",name:\"collisionCircleDiameter\"},{type:\"Uint16\",name:\"textAnchorOffsetStartIndex\"},{type:\"Uint16\",name:\"textAnchorOffsetEndIndex\"}]),Qs([{type:\"Float32\",name:\"offsetX\"}]),Qs([{type:\"Int16\",name:\"x\"},{type:\"Int16\",name:\"y\"},{type:\"Int16\",name:\"tileUnitDistanceFromAnchor\"}]),Qs([{type:\"Uint16\",name:\"textAnchor\"},{type:\"Float32\",components:2,name:\"textOffset\"}]);const lc={\"!\":\"︕\",\"#\":\"＃\",$:\"＄\",\"%\":\"％\",\"&\":\"＆\",\"(\":\"︵\",\")\":\"︶\",\"*\":\"＊\",\"+\":\"＋\",\",\":\"︐\",\"-\":\"︲\",\".\":\"・\",\"/\":\"／\",\":\":\"︓\",\";\":\"︔\",\"<\":\"︿\",\"=\":\"＝\",\">\":\"﹀\",\"?\":\"︖\",\"@\":\"＠\",\"[\":\"﹇\",\"\\\\\":\"＼\",\"]\":\"﹈\",\"^\":\"＾\",_:\"︳\",\"`\":\"｀\",\"{\":\"︷\",\"|\":\"―\",\"}\":\"︸\",\"~\":\"～\",\"¢\":\"￠\",\"£\":\"￡\",\"¥\":\"￥\",\"¦\":\"￤\",\"¬\":\"￢\",\"¯\":\"￣\",\"–\":\"︲\",\"—\":\"︱\",\"‘\":\"﹃\",\"’\":\"﹄\",\"“\":\"﹁\",\"”\":\"﹂\",\"…\":\"︙\",\"‧\":\"・\",\"₩\":\"￦\",\"、\":\"︑\",\"。\":\"︒\",\"〈\":\"︿\",\"〉\":\"﹀\",\"《\":\"︽\",\"》\":\"︾\",\"「\":\"﹁\",\"」\":\"﹂\",\"『\":\"﹃\",\"』\":\"﹄\",\"【\":\"︻\",\"】\":\"︼\",\"〔\":\"︹\",\"〕\":\"︺\",\"〖\":\"︗\",\"〗\":\"︘\",\"！\":\"︕\",\"（\":\"︵\",\"）\":\"︶\",\"，\":\"︐\",\"－\":\"︲\",\"．\":\"・\",\"：\":\"︓\",\"；\":\"︔\",\"＜\":\"︿\",\"＞\":\"﹀\",\"？\":\"︖\",\"［\":\"﹇\",\"］\":\"﹈\",\"＿\":\"︳\",\"｛\":\"︷\",\"｜\":\"―\",\"｝\":\"︸\",\"｟\":\"︵\",\"｠\":\"︶\",\"｡\":\"︒\",\"｢\":\"﹁\",\"｣\":\"﹂\"};var uc=24;const cc=4294967296,hc=1/cc,pc=\"undefined\"==typeof TextDecoder?null:new TextDecoder(\"utf-8\");class fc{constructor(t=new Uint8Array(16)){this.buf=ArrayBuffer.isView(t)?t:new Uint8Array(t),this.dataView=new DataView(this.buf.buffer),this.pos=0,this.type=0,this.length=this.buf.length;}readFields(t,e,r=this.length){for(;this.pos<r;){const r=this.readVarint(),n=r>>3,i=this.pos;this.type=7&r,t(n,e,this),this.pos===i&&this.skip(r);}return e}readMessage(t,e){return this.readFields(t,e,this.readVarint()+this.pos)}readFixed32(){const t=this.dataView.getUint32(this.pos,!0);return this.pos+=4,t}readSFixed32(){const t=this.dataView.getInt32(this.pos,!0);return this.pos+=4,t}readFixed64(){const t=this.dataView.getUint32(this.pos,!0)+this.dataView.getUint32(this.pos+4,!0)*cc;return this.pos+=8,t}readSFixed64(){const t=this.dataView.getUint32(this.pos,!0)+this.dataView.getInt32(this.pos+4,!0)*cc;return this.pos+=8,t}readFloat(){const t=this.dataView.getFloat32(this.pos,!0);return this.pos+=4,t}readDouble(){const t=this.dataView.getFloat64(this.pos,!0);return this.pos+=8,t}readVarint(t){const e=this.buf;let r,n;return n=e[this.pos++],r=127&n,n<128?r:(n=e[this.pos++],r|=(127&n)<<7,n<128?r:(n=e[this.pos++],r|=(127&n)<<14,n<128?r:(n=e[this.pos++],r|=(127&n)<<21,n<128?r:(n=e[this.pos],r|=(15&n)<<28,function(t,e,r){const n=r.buf;let i,s;if(s=n[r.pos++],i=(112&s)>>4,s<128)return dc(t,i,e);if(s=n[r.pos++],i|=(127&s)<<3,s<128)return dc(t,i,e);if(s=n[r.pos++],i|=(127&s)<<10,s<128)return dc(t,i,e);if(s=n[r.pos++],i|=(127&s)<<17,s<128)return dc(t,i,e);if(s=n[r.pos++],i|=(127&s)<<24,s<128)return dc(t,i,e);if(s=n[r.pos++],i|=(1&s)<<31,s<128)return dc(t,i,e);throw new Error(\"Expected varint not more than 10 bytes\")}(r,t,this)))))}readVarint64(){return this.readVarint(!0)}readSVarint(){const t=this.readVarint();return t%2==1?(t+1)/-2:t/2}readBoolean(){return Boolean(this.readVarint())}readString(){const t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&pc?pc.decode(this.buf.subarray(e,t)):function(t,e,r){let n=\"\",i=e;for(;i<r;){const e=t[i];let s,a,o,l=null,u=e>239?4:e>223?3:e>191?2:1;if(i+u>r)break;1===u?e<128&&(l=e):2===u?(s=t[i+1],128==(192&s)&&(l=(31&e)<<6|63&s,l<=127&&(l=null))):3===u?(s=t[i+1],a=t[i+2],128==(192&s)&&128==(192&a)&&(l=(15&e)<<12|(63&s)<<6|63&a,(l<=2047||l>=55296&&l<=57343)&&(l=null))):4===u&&(s=t[i+1],a=t[i+2],o=t[i+3],128==(192&s)&&128==(192&a)&&128==(192&o)&&(l=(15&e)<<18|(63&s)<<12|(63&a)<<6|63&o,(l<=65535||l>=1114112)&&(l=null))),null===l?(l=65533,u=1):l>65535&&(l-=65536,n+=String.fromCharCode(l>>>10&1023|55296),l=56320|1023&l),n+=String.fromCharCode(l),i+=u;}return n}(this.buf,e,t)}readBytes(){const t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e}readPackedVarint(t=[],e){const r=this.readPackedEnd();for(;this.pos<r;)t.push(this.readVarint(e));return t}readPackedSVarint(t=[]){const e=this.readPackedEnd();for(;this.pos<e;)t.push(this.readSVarint());return t}readPackedBoolean(t=[]){const e=this.readPackedEnd();for(;this.pos<e;)t.push(this.readBoolean());return t}readPackedFloat(t=[]){const e=this.readPackedEnd();for(;this.pos<e;)t.push(this.readFloat());return t}readPackedDouble(t=[]){const e=this.readPackedEnd();for(;this.pos<e;)t.push(this.readDouble());return t}readPackedFixed32(t=[]){const e=this.readPackedEnd();for(;this.pos<e;)t.push(this.readFixed32());return t}readPackedSFixed32(t=[]){const e=this.readPackedEnd();for(;this.pos<e;)t.push(this.readSFixed32());return t}readPackedFixed64(t=[]){const e=this.readPackedEnd();for(;this.pos<e;)t.push(this.readFixed64());return t}readPackedSFixed64(t=[]){const e=this.readPackedEnd();for(;this.pos<e;)t.push(this.readSFixed64());return t}readPackedEnd(){return 2===this.type?this.readVarint()+this.pos:this.pos+1}skip(t){const e=7&t;if(0===e)for(;this.buf[this.pos++]>127;);else if(2===e)this.pos=this.readVarint()+this.pos;else if(5===e)this.pos+=4;else {if(1!==e)throw new Error(`Unimplemented type: ${e}`);this.pos+=8;}}writeTag(t,e){this.writeVarint(t<<3|e);}realloc(t){let e=this.length||16;for(;e<this.pos+t;)e*=2;if(e!==this.length){const t=new Uint8Array(e);t.set(this.buf),this.buf=t,this.dataView=new DataView(t.buffer),this.length=e;}}finish(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)}writeFixed32(t){this.realloc(4),this.dataView.setInt32(this.pos,t,!0),this.pos+=4;}writeSFixed32(t){this.realloc(4),this.dataView.setInt32(this.pos,t,!0),this.pos+=4;}writeFixed64(t){this.realloc(8),this.dataView.setInt32(this.pos,-1&t,!0),this.dataView.setInt32(this.pos+4,Math.floor(t*hc),!0),this.pos+=8;}writeSFixed64(t){this.realloc(8),this.dataView.setInt32(this.pos,-1&t,!0),this.dataView.setInt32(this.pos+4,Math.floor(t*hc),!0),this.pos+=8;}writeVarint(t){(t=+t||0)>268435455||t<0?function(t,e){let r,n;if(t>=0?(r=t%4294967296|0,n=t/4294967296|0):(r=~(-t%4294967296),n=~(-t/4294967296),4294967295^r?r=r+1|0:(r=0,n=n+1|0)),t>=0x10000000000000000||t<-0x10000000000000000)throw new Error(\"Given varint doesn't fit into 10 bytes\");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,r.buf[r.pos]=127&(t>>>=7);}(r,0,e),function(t,e){const r=(7&t)<<4;e.buf[e.pos++]|=r|((t>>>=3)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t)))));}(n,e);}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))));}writeSVarint(t){this.writeVarint(t<0?2*-t-1:2*t);}writeBoolean(t){this.writeVarint(+t);}writeString(t){t=String(t),this.realloc(4*t.length),this.pos++;const e=this.pos;this.pos=function(t,e,r){for(let n,i,s=0;s<e.length;s++){if(n=e.charCodeAt(s),n>55295&&n<57344){if(!i){n>56319||s+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null;}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128);}return r}(this.buf,t,this.pos);const r=this.pos-e;r>=128&&yc(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r;}writeFloat(t){this.realloc(4),this.dataView.setFloat32(this.pos,t,!0),this.pos+=4;}writeDouble(t){this.realloc(8),this.dataView.setFloat64(this.pos,t,!0),this.pos+=8;}writeBytes(t){const e=t.length;this.writeVarint(e),this.realloc(e);for(let r=0;r<e;r++)this.buf[this.pos++]=t[r];}writeRawMessage(t,e){this.pos++;const r=this.pos;t(e,this);const n=this.pos-r;n>=128&&yc(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n;}writeMessage(t,e,r){this.writeTag(t,2),this.writeRawMessage(e,r);}writePackedVarint(t,e){e.length&&this.writeMessage(t,mc,e);}writePackedSVarint(t,e){e.length&&this.writeMessage(t,gc,e);}writePackedBoolean(t,e){e.length&&this.writeMessage(t,bc,e);}writePackedFloat(t,e){e.length&&this.writeMessage(t,xc,e);}writePackedDouble(t,e){e.length&&this.writeMessage(t,vc,e);}writePackedFixed32(t,e){e.length&&this.writeMessage(t,wc,e);}writePackedSFixed32(t,e){e.length&&this.writeMessage(t,_c,e);}writePackedFixed64(t,e){e.length&&this.writeMessage(t,Sc,e);}writePackedSFixed64(t,e){e.length&&this.writeMessage(t,Ac,e);}writeBytesField(t,e){this.writeTag(t,2),this.writeBytes(e);}writeFixed32Field(t,e){this.writeTag(t,5),this.writeFixed32(e);}writeSFixed32Field(t,e){this.writeTag(t,5),this.writeSFixed32(e);}writeFixed64Field(t,e){this.writeTag(t,1),this.writeFixed64(e);}writeSFixed64Field(t,e){this.writeTag(t,1),this.writeSFixed64(e);}writeVarintField(t,e){this.writeTag(t,0),this.writeVarint(e);}writeSVarintField(t,e){this.writeTag(t,0),this.writeSVarint(e);}writeStringField(t,e){this.writeTag(t,2),this.writeString(e);}writeFloatField(t,e){this.writeTag(t,5),this.writeFloat(e);}writeDoubleField(t,e){this.writeTag(t,1),this.writeDouble(e);}writeBooleanField(t,e){this.writeVarintField(t,+e);}}function dc(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function yc(t,e,r){const n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(n);for(let e=r.pos-1;e>=t;e--)r.buf[e+n]=r.buf[e];}function mc(t,e){for(let r=0;r<t.length;r++)e.writeVarint(t[r]);}function gc(t,e){for(let r=0;r<t.length;r++)e.writeSVarint(t[r]);}function xc(t,e){for(let r=0;r<t.length;r++)e.writeFloat(t[r]);}function vc(t,e){for(let r=0;r<t.length;r++)e.writeDouble(t[r]);}function bc(t,e){for(let r=0;r<t.length;r++)e.writeBoolean(t[r]);}function wc(t,e){for(let r=0;r<t.length;r++)e.writeFixed32(t[r]);}function _c(t,e){for(let r=0;r<t.length;r++)e.writeSFixed32(t[r]);}function Sc(t,e){for(let r=0;r<t.length;r++)e.writeFixed64(t[r]);}function Ac(t,e){for(let r=0;r<t.length;r++)e.writeSFixed64(t[r]);}function kc(t,e,r){1===t&&r.readMessage(Mc,e);}function Mc(t,e,r){if(3===t){const{id:t,bitmap:n,width:i,height:s,left:a,top:o,advance:l}=r.readMessage(Ic,{});e.push({id:t,bitmap:new gl({width:i+6,height:s+6},n),metrics:{width:i,height:s,left:a,top:o,advance:l}});}}function Ic(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint());}function zc(t){let e=0,r=0;for(const n of t)e+=n.w*n.h,r=Math.max(r,n.w);t.sort(((t,e)=>e.h-t.h));const n=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(e/.95)),r),h:1/0}];let i=0,s=0;for(const e of t)for(let t=n.length-1;t>=0;t--){const r=n[t];if(!(e.w>r.w||e.h>r.h)){if(e.x=r.x,e.y=r.y,s=Math.max(s,e.y+e.h),i=Math.max(i,e.x+e.w),e.w===r.w&&e.h===r.h){const e=n.pop();e&&t<n.length&&(n[t]=e);}else e.h===r.h?(r.x+=e.w,r.w-=e.w):e.w===r.w?(r.y+=e.h,r.h-=e.h):(n.push({x:r.x+e.w,y:r.y,w:r.w-e.w,h:e.h}),r.y+=e.h,r.h-=e.h);break}}return {w:i,h:s,fill:e/(i*s)||0}}class Pc{constructor(t,{pixelRatio:e,version:r,stretchX:n,stretchY:i,content:s,textFitWidth:a,textFitHeight:o}){this.paddedRect=t,this.pixelRatio=e,this.stretchX=n,this.stretchY=i,this.content=s,this.version=r,this.textFitWidth=a,this.textFitHeight=o;}get tl(){return [this.paddedRect.x+1,this.paddedRect.y+1]}get br(){return [this.paddedRect.x+this.paddedRect.w-1,this.paddedRect.y+this.paddedRect.h-1]}get tlbr(){return this.tl.concat(this.br)}get displaySize(){return [(this.paddedRect.w-2)/this.pixelRatio,(this.paddedRect.h-2)/this.pixelRatio]}}class Cc{constructor(t,e){const r={},n={};this.haveRenderCallbacks=[];const i=[];this.addImages(t,r,i),this.addImages(e,n,i);const{w:s,h:a}=zc(i),o=new xl({width:s||1,height:a||1});for(const e in t){const n=t[e],i=r[e].paddedRect;xl.copy(n.data,o,{x:0,y:0},{x:i.x+1,y:i.y+1},n.data);}for(const t in e){const r=e[t],i=n[t].paddedRect,s=i.x+1,a=i.y+1,l=r.data.width,u=r.data.height;xl.copy(r.data,o,{x:0,y:0},{x:s,y:a},r.data),xl.copy(r.data,o,{x:0,y:u-1},{x:s,y:a-1},{width:l,height:1}),xl.copy(r.data,o,{x:0,y:0},{x:s,y:a+u},{width:l,height:1}),xl.copy(r.data,o,{x:l-1,y:0},{x:s-1,y:a},{width:1,height:u}),xl.copy(r.data,o,{x:0,y:0},{x:s+l,y:a},{width:1,height:u});}this.image=o,this.iconPositions=r,this.patternPositions=n;}addImages(t,e,r){for(const n in t){const i=t[n],s={x:0,y:0,w:i.data.width+2,h:i.data.height+2};r.push(s),e[n]=new Pc(s,i),i.hasRenderCallback&&this.haveRenderCallbacks.push(n);}}patchUpdatedImages(t,e){t.dispatchRenderCallbacks(this.haveRenderCallbacks);for(const r in t.updatedImages)this.patchUpdatedImage(this.iconPositions[r],t.getImage(r),e),this.patchUpdatedImage(this.patternPositions[r],t.getImage(r),e);}patchUpdatedImage(t,e,r){if(!t||!e)return;if(t.version===e.version)return;t.version=e.version;const[n,i]=t.tl;r.update(e.data,void 0,{x:n,y:i});}}var Ec;ls(\"ImagePosition\",Pc),ls(\"ImageAtlas\",Cc),t.ao=void 0,(Ec=t.ao||(t.ao={}))[Ec.none=0]=\"none\",Ec[Ec.horizontal=1]=\"horizontal\",Ec[Ec.vertical=2]=\"vertical\",Ec[Ec.horizontalOnly=3]=\"horizontalOnly\";class Tc{constructor(){this.scale=1,this.fontStack=\"\",this.imageName=null,this.verticalAlign=\"bottom\";}static forText(t,e,r){const n=new Tc;return n.scale=t||1,n.fontStack=e,n.verticalAlign=r||\"bottom\",n}static forImage(t,e){const r=new Tc;return r.imageName=t,r.verticalAlign=e||\"bottom\",r}}class Bc{constructor(){this.text=\"\",this.sectionIndex=[],this.sections=[],this.imageSectionID=null;}static fromFeature(t,e){const r=new Bc;for(let n=0;n<t.sections.length;n++){const i=t.sections[n];i.image?r.addImageSection(i):r.addTextSection(i,e);}return r}length(){return this.text.length}getSection(t){return this.sections[this.sectionIndex[t]]}getSectionIndex(t){return this.sectionIndex[t]}getCharCode(t){return this.text.charCodeAt(t)}verticalizePunctuation(){this.text=function(t){let e=\"\";for(let r=0;r<t.length;r++){const n=t.charCodeAt(r+1)||null,i=t.charCodeAt(r-1)||null;e+=n&&Ss(n)&&!lc[t[r+1]]||i&&Ss(i)&&!lc[t[r-1]]||!lc[t[r]]?t[r]:lc[t[r]];}return e}(this.text);}trim(){let t=0;for(let e=0;e<this.text.length&&Fc[this.text.charCodeAt(e)];e++)t++;let e=this.text.length;for(let r=this.text.length-1;r>=0&&r>=t&&Fc[this.text.charCodeAt(r)];r--)e--;this.text=this.text.substring(t,e),this.sectionIndex=this.sectionIndex.slice(t,e);}substring(t,e){const r=new Bc;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce(((t,e)=>Math.max(t,this.sections[e].scale)),0)}getMaxImageSize(t){let e=0,r=0;for(let n=0;n<this.length();n++){const i=this.getSection(n);if(i.imageName){const n=t[i.imageName];if(!n)continue;const s=n.displaySize;e=Math.max(e,s[0]),r=Math.max(r,s[1]);}}return {maxImageWidth:e,maxImageHeight:r}}addTextSection(t,e){this.text+=t.text,this.sections.push(Tc.forText(t.scale,t.fontStack||e,t.verticalAlign));const r=this.sections.length-1;for(let e=0;e<t.text.length;++e)this.sectionIndex.push(r);}addImageSection(t){const e=t.image?t.image.name:\"\";if(0===e.length)return void q(\"Can't add FormattedSection with an empty image.\");const r=this.getNextImageSectionCharCode();r?(this.text+=String.fromCharCode(r),this.sections.push(Tc.forImage(e,t.verticalAlign)),this.sectionIndex.push(this.sections.length-1)):q(\"Reached maximum number of images 6401\");}getNextImageSectionCharCode(){return this.imageSectionID?this.imageSectionID>=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function Vc(e,r,n,i,s,a,o,l,u,c,h,p,f,d,y){const m=Bc.fromFeature(e,s);let g;p===t.ao.vertical&&m.verticalizePunctuation();const{processBidirectionalText:x,processStyledBidirectionalText:v}=zs;if(x&&1===m.sections.length){g=[];const t=x(m.toString(),Nc(m,c,a,r,i,d));for(const e of t){const t=new Bc;t.text=e,t.sections=m.sections;for(let r=0;r<e.length;r++)t.sectionIndex.push(0);g.push(t);}}else if(v){g=[];const t=v(m.text,m.sectionIndex,Nc(m,c,a,r,i,d));for(const e of t){const t=new Bc;t.text=e[0],t.sectionIndex=e[1],t.sections=m.sections,g.push(t);}}else g=function(t,e){const r=[],n=t.text;let i=0;for(const n of e)r.push(t.substring(i,n)),i=n;return i<n.length&&r.push(t.substring(i,n.length)),r}(m,Nc(m,c,a,r,i,d));const b=[],w={positionedLines:b,text:m.toString(),top:h[1],bottom:h[1],left:h[0],right:h[0],writingMode:p,iconsInText:!1,verticalizable:!1};return function(t,e,r,n,i,s,a,o,l,u,c,h){let p=0,f=0,d=0,y=0;const m=\"right\"===o?1:\"left\"===o?0:.5,g=uc/h;let x=0;for(const a of i){a.trim();const i=a.getMaxScale(),o={positionedGlyphs:[],lineOffset:0};t.positionedLines[x]=o;const h=o.positionedGlyphs;let v=0;if(!a.length()){f+=s,++x;continue}const b=Gc(n,a,g);for(let s=0;s<a.length();s++){const o=a.getSection(s),d=a.getSectionIndex(s),y=a.getCharCode(s),m=Zc(l,c,y);let x;if(o.imageName){if(t.iconsInText=!0,o.scale=o.scale*g,x=Hc(o,m,i,b,n),!x)continue;v=Math.max(v,x.imageOffset);}else if(x=Yc(o,y,m,b,e,r),!x)continue;const{rect:w,metrics:_,baselineOffset:S}=x;h.push({glyph:y,imageName:o.imageName,x:p,y:f+S+-17,vertical:m,scale:o.scale,fontStack:o.fontStack,sectionIndex:d,metrics:_,rect:w}),m?(t.verticalizable=!0,p+=(o.imageName?_.advance:uc)*o.scale+u):p+=_.advance*o.scale+u;}0!==h.length&&(d=Math.max(p-u,d),Kc(h,0,h.length-1,m)),p=0,o.lineOffset=Math.max(v,(i-1)*uc);const w=s*i+v;f+=w,y=Math.max(w,y),++x;}const{horizontalAlign:v,verticalAlign:b}=qc(a);((function(t,e,r,n,i,s,a,o,l){const u=(e-r)*i;let c=0;c=s!==a?-o*n- -17:-n*l*a+.5*a;for(const e of t)for(const t of e.positionedGlyphs)t.x+=u,t.y+=c;}))(t.positionedLines,m,v,b,d,y,s,f,i.length),t.top+=-b*f,t.bottom=t.top+f,t.left+=-v*d,t.right=t.left+d;}(w,r,n,i,g,o,l,u,p,c,f,y),!function(t){for(const e of t)if(0!==e.positionedGlyphs.length)return !1;return !0}(b)&&w}const Fc={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},Dc={10:!0,32:!0,38:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0},$c={40:!0};function Lc(t,e,r,n,i,s){if(e.imageName){const t=n[e.imageName];return t?t.displaySize[0]*e.scale*uc/s+i:0}{const n=r[e.fontStack],s=n&&n[t];return s?s.metrics.advance*e.scale+i:0}}function Oc(t,e,r,n){const i=Math.pow(t-e,2);return n?t<e?i/2:2*i:i+Math.abs(r)*r}function Rc(t,e,r){let n=0;return 10===t&&(n-=1e4),r&&(n+=150),40!==t&&65288!==t||(n+=50),41!==e&&65289!==e||(n+=50),n}function Uc(t,e,r,n,i,s){let a=null,o=Oc(e,r,i,s);for(const t of n){const n=Oc(e-t.x,r,i,s)+t.badness;n<=o&&(a=t,o=n);}return {index:t,x:e,priorBreak:a,badness:o}}function jc(t){return t?jc(t.priorBreak).concat(t.index):[]}function Nc(t,e,r,n,i,s){if(!t)return [];const a=[],o=function(t,e,r,n,i,s){let a=0;for(let r=0;r<t.length();r++){const o=t.getSection(r);a+=Lc(t.getCharCode(r),o,n,i,e,s);}return a/Math.max(1,Math.ceil(a/r))}(t,e,r,n,i,s),l=t.text.indexOf(\"​\")>=0;let u=0;for(let r=0;r<t.length();r++){const h=t.getSection(r),p=t.getCharCode(r);if(Fc[p]||(u+=Lc(p,h,n,i,e,s)),r<t.length()-1){const e=!((c=p)<11904)&&(!!ys[\"CJK Compatibility Forms\"](c)||!!ys[\"CJK Compatibility\"](c)||!!ys[\"CJK Strokes\"](c)||!!ys[\"CJK Symbols and Punctuation\"](c)||!!ys[\"Enclosed CJK Letters and Months\"](c)||!!ys[\"Halfwidth and Fullwidth Forms\"](c)||!!ys[\"Ideographic Description Characters\"](c)||!!ys[\"Vertical Forms\"](c)||ws.test(String.fromCodePoint(c)));(Dc[p]||e||h.imageName||r!==t.length()-2&&$c[t.getCharCode(r+1)])&&a.push(Uc(r+1,u,o,a,Rc(p,t.getCharCode(r+1),e&&l),!1));}}var c;return jc(Uc(t.length(),u,o,a,0,!0))}function qc(t){let e=.5,r=.5;switch(t){case \"right\":case \"top-right\":case \"bottom-right\":e=1;break;case \"left\":case \"top-left\":case \"bottom-left\":e=0;}switch(t){case \"bottom\":case \"bottom-right\":case \"bottom-left\":r=1;break;case \"top\":case \"top-right\":case \"top-left\":r=0;}return {horizontalAlign:e,verticalAlign:r}}function Gc(t,e,r){const n=e.getMaxScale()*uc,{maxImageWidth:i,maxImageHeight:s}=e.getMaxImageSize(t),a=Math.max(n,s*r);return {verticalLineContentWidth:Math.max(n,i*r),horizontalLineContentHeight:a}}function Xc(t){switch(t){case \"top\":return 0;case \"center\":return .5;default:return 1}}function Zc(e,r,n){return !(e===t.ao.horizontal||!r&&!_s(n)||r&&(Fc[n]||(i=n,/\\p{sc=Arab}/u.test(String.fromCodePoint(i)))));var i;}function Yc(t,e,r,n,i,s){const a=s[t.fontStack],o=function(t,e,r,n){if(t&&t.rect)return t;const i=e[r.fontStack],s=i&&i[n];return s?{rect:null,metrics:s.metrics}:null}(a&&a[e],i,t,e);if(null===o)return null;let l;if(r)l=n.verticalLineContentWidth-t.scale*uc;else {const e=Xc(t.verticalAlign);l=(n.horizontalLineContentHeight-t.scale*uc)*e;}return {rect:o.rect,metrics:o.metrics,baselineOffset:l}}function Hc(t,e,r,n,i){const s=i[t.imageName];if(!s)return null;const a=s.paddedRect,o=s.displaySize,l={width:o[0],height:o[1],left:1,top:-3,advance:e?o[1]:o[0]};let u;if(e)u=n.verticalLineContentWidth-o[1]*t.scale;else {const e=Xc(t.verticalAlign);u=(n.horizontalLineContentHeight-o[1]*t.scale)*e;}return {rect:a,metrics:l,baselineOffset:u,imageOffset:(e?o[0]:o[1])*t.scale-uc*r}}function Kc(t,e,r,n){if(0===n)return;const i=t[r],s=(t[r].x+i.metrics.advance*i.scale)*n;for(let n=e;n<=r;n++)t[n].x-=s;}function Jc(t,e,r){const{horizontalAlign:n,verticalAlign:i}=qc(r),s=e[0]-t.displaySize[0]*n,a=e[1]-t.displaySize[1]*i;return {image:t,top:a,bottom:a+t.displaySize[1],left:s,right:s+t.displaySize[0]}}function Wc(t){var e,r;let n=t.left,i=t.top,s=t.right-n,a=t.bottom-i;const o=null!==(e=t.image.textFitWidth)&&void 0!==e?e:\"stretchOrShrink\",l=null!==(r=t.image.textFitHeight)&&void 0!==r?r:\"stretchOrShrink\",u=(t.image.content[2]-t.image.content[0])/(t.image.content[3]-t.image.content[1]);if(\"proportional\"===l){if(\"stretchOnly\"===o&&s/a<u||\"proportional\"===o){const t=Math.ceil(a*u);n*=t/s,s=t;}}else if(\"proportional\"===o&&\"stretchOnly\"===l&&0!==u&&s/a>u){const t=Math.ceil(s/u);i*=t/a,a=t;}return {x1:n,y1:i,x2:n+s,y2:i+a}}function Qc(t,e,r,n,i,s){const a=t.image;let o;if(a.content){const t=a.content,e=a.pixelRatio||1;o=[t[0]/e,t[1]/e,a.displaySize[0]-t[2]/e,a.displaySize[1]-t[3]/e];}const l=e.left*s,u=e.right*s;let c,h,p,f;\"width\"===r||\"both\"===r?(f=i[0]+l-n[3],h=i[0]+u+n[1]):(f=i[0]+(l+u-a.displaySize[0])/2,h=f+a.displaySize[0]);const d=e.top*s,y=e.bottom*s;return \"height\"===r||\"both\"===r?(c=i[1]+d-n[0],p=i[1]+y+n[2]):(c=i[1]+(d+y-a.displaySize[1])/2,p=c+a.displaySize[1]),{image:a,top:c,right:h,bottom:p,left:f,collisionPadding:o}}const th=128,eh=32640;function rh(t,e){const{expression:r}=e;if(\"constant\"===r.kind)return {kind:\"constant\",layoutSize:r.evaluate(new Ps(t+1))};if(\"source\"===r.kind)return {kind:\"source\"};{const{zoomStops:e,interpolationType:n}=r;let i=0;for(;i<e.length&&e[i]<=t;)i++;i=Math.max(0,i-1);let s=i;for(;s<e.length&&e[s]<t+1;)s++;s=Math.min(e.length-1,s);const a=e[i],o=e[s];return \"composite\"===r.kind?{kind:\"composite\",minZoom:a,maxZoom:o,interpolationType:n}:{kind:\"camera\",minZoom:a,maxZoom:o,minSize:r.evaluate(new Ps(a)),maxSize:r.evaluate(new Ps(o)),interpolationType:n}}}function nh(t,e,r){let n=\"never\";const i=t.get(e);return i?n=i:t.get(r)&&(n=\"always\"),n}const ih=[{name:\"a_fade_opacity\",components:1,type:\"Uint8\",offset:0}];function sh(t,e,r,n,i,s,a,o,l,u,c,h,p){const f=o?Math.min(eh,Math.round(o[0])):0,d=o?Math.min(eh,Math.round(o[1])):0;t.emplaceBack(e,r,Math.round(32*n),Math.round(32*i),s,a,(f<<1)+(l?1:0),d,16*u,16*c,256*h,256*p);}function ah(t,e,r){t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r);}function oh(t){for(const e of t.sections)if(Is(e.text))return !0;return !1}class lh{constructor(t){this.layoutVertexArray=new Ga,this.indexArray=new Ka,this.programConfigurations=t,this.segments=new to,this.dynamicLayoutVertexArray=new Xa,this.opacityVertexArray=new Za,this.hasVisibleVertices=!1,this.placedSymbolArray=new za;}isEmpty(){return 0===this.layoutVertexArray.length&&0===this.indexArray.length&&0===this.dynamicLayoutVertexArray.length&&0===this.opacityVertexArray.length}upload(t,e,r,n){this.isEmpty()||(r&&(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,rc.members),this.indexBuffer=t.createIndexBuffer(this.indexArray,e),this.dynamicLayoutVertexBuffer=t.createVertexBuffer(this.dynamicLayoutVertexArray,nc.members,!0),this.opacityVertexBuffer=t.createVertexBuffer(this.opacityVertexArray,ih,!0),this.opacityVertexBuffer.itemSize=1),(r||n)&&this.programConfigurations.upload(t));}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.dynamicLayoutVertexBuffer.destroy(),this.opacityVertexBuffer.destroy());}}ls(\"SymbolBuffers\",lh);class uh{constructor(t,e,r){this.layoutVertexArray=new t,this.layoutAttributes=e,this.indexArray=new r,this.segments=new to,this.collisionVertexArray=new Ha;}upload(t){this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,this.layoutAttributes),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.collisionVertexBuffer=t.createVertexBuffer(this.collisionVertexArray,ic.members,!0);}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.collisionVertexBuffer.destroy());}}ls(\"CollisionBuffers\",uh);class ch{constructor(e){this.collisionBoxArray=e.collisionBoxArray,this.zoom=e.zoom,this.overscaling=Y(globalThis)?Math.min(e.overscaling,128):e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=e.index,this.pixelRatio=e.pixelRatio,this.sourceLayerIndex=e.sourceLayerIndex,this.hasDependencies=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[];const r=this.layers[0]._unevaluatedLayout._values;this.textSizeData=rh(this.zoom,r[\"text-size\"]),this.iconSizeData=rh(this.zoom,r[\"icon-size\"]);const n=this.layers[0].layout,i=n.get(\"symbol-sort-key\"),s=n.get(\"symbol-z-order\");this.canOverlap=\"never\"!==nh(n,\"text-overlap\",\"text-allow-overlap\")||\"never\"!==nh(n,\"icon-overlap\",\"icon-allow-overlap\")||n.get(\"text-ignore-placement\")||n.get(\"icon-ignore-placement\"),this.sortFeaturesByKey=\"viewport-y\"!==s&&!i.isConstant(),this.sortFeaturesByY=(\"viewport-y\"===s||\"auto\"===s&&!this.sortFeaturesByKey)&&this.canOverlap,\"point\"===n.get(\"symbol-placement\")&&(this.writingModes=n.get(\"text-writing-mode\").map((e=>t.ao[e]))),this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id)),this.sourceID=e.sourceID;}createArrays(){this.text=new lh(new Eo(this.layers,this.zoom,(t=>/^text/.test(t)))),this.icon=new lh(new Eo(this.layers,this.zoom,(t=>/^icon/.test(t)))),this.glyphOffsetArray=new Ea,this.lineVertexArray=new Ta,this.symbolInstances=new Ca,this.textAnchorOffsets=new Va;}calculateGlyphDependencies(t,e,r,n,i){for(let s=0;s<t.length;s++)if(e[t.charCodeAt(s)]=!0,(r||n)&&i){const r=lc[t.charAt(s)];r&&(e[r.charCodeAt(0)]=!0);}}populate(e,r,n){const i=this.layers[0],s=i.layout,a=s.get(\"text-font\"),o=s.get(\"text-field\"),l=s.get(\"icon-image\"),u=(\"constant\"!==o.value.kind||o.value.value instanceof Ee&&!o.value.value.isEmpty()||o.value.value.toString().length>0)&&(\"constant\"!==a.value.kind||a.value.value.length>0),c=\"constant\"!==l.value.kind||!!l.value.value||Object.keys(l.parameters).length>0,h=s.get(\"symbol-sort-key\");if(this.features=[],!u&&!c)return;const p=r.iconDependencies,f=r.glyphDependencies,d=r.availableImages,y=new Ps(this.zoom);for(const{feature:r,id:o,index:l,sourceLayerIndex:m}of e){const e=i._featureFilter.needGeometry,g=$o(r,e);if(!i._featureFilter.filter(y,g,n))continue;let x,v;if(e||(g.geometry=Do(r)),u){const t=i.getValueAndResolveTokens(\"text-field\",g,n,d),e=Ee.factory(t),r=this.hasRTLText=this.hasRTLText||oh(e);(!r||\"unavailable\"===zs.getRTLTextPluginStatus()||r&&zs.isParsed())&&(x=oc(e,i,g));}if(c){const t=i.getValueAndResolveTokens(\"icon-image\",g,n,d);v=t instanceof Le?t:Le.fromString(t);}if(!x&&!v)continue;const b=this.sortFeaturesByKey?h.evaluate(g,{},n):void 0;if(this.features.push({id:o,text:x,icon:v,index:l,sourceLayerIndex:m,geometry:g.geometry,properties:r.properties,type:Au.types[r.type],sortKey:b}),v&&(p[v.name]=!0),x){const e=a.evaluate(g,{},n).join(\",\"),r=\"viewport\"!==s.get(\"text-rotation-alignment\")&&\"point\"!==s.get(\"symbol-placement\");this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(t.ao.vertical)>=0;for(const t of x.sections)if(t.image)p[t.image.name]=!0;else {const n=ms(x.toString()),i=t.fontStack||e,s=f[i]=f[i]||{};this.calculateGlyphDependencies(t.text,s,r,this.allowVerticalPlacement,n);}}}\"line\"===s.get(\"symbol-placement\")&&(this.features=function(t){const e={},r={},n=[];let i=0;function s(e){n.push(t[e]),i++;}function a(t,e,i){const s=r[t];return delete r[t],r[e]=s,n[s].geometry[0].pop(),n[s].geometry[0]=n[s].geometry[0].concat(i[0]),s}function o(t,r,i){const s=e[r];return delete e[r],e[t]=s,n[s].geometry[0].shift(),n[s].geometry[0]=i[0].concat(n[s].geometry[0]),s}function l(t,e,r){const n=r?e[0][e[0].length-1]:e[0][0];return `${t}:${n.x}:${n.y}`}for(let u=0;u<t.length;u++){const c=t[u],h=c.geometry,p=c.text?c.text.toString():null;if(!p){s(u);continue}const f=l(p,h),d=l(p,h,!0);if(f in r&&d in e&&r[f]!==e[d]){const t=o(f,d,h),i=a(f,d,n[t].geometry);delete e[f],delete r[d],r[l(p,n[i].geometry,!0)]=i,n[t].geometry=null;}else f in r?a(f,d,h):d in e?o(f,d,h):(s(u),e[f]=i-1,r[d]=i-1);}return n.filter((t=>t.geometry))}(this.features)),this.sortFeaturesByKey&&this.features.sort(((t,e)=>t.sortKey-e.sortKey));}update(t,e,r){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(t,e,this.layers,{imagePositions:r}),this.icon.programConfigurations.updatePaintArrays(t,e,this.layers,{imagePositions:r}));}isEmpty(){return 0===this.symbolInstances.length&&!this.hasRTLText}uploadPending(){return !this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(t){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(t),this.iconCollisionBox.upload(t)),this.text.upload(t,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(t,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0;}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy();}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData();}addToLineVertexArray(t,e){const r=this.lineVertexArray.length;if(void 0!==t.segment){let r=t.dist(e[t.segment+1]),n=t.dist(e[t.segment]);const i={};for(let n=t.segment+1;n<e.length;n++)i[n]={x:e[n].x,y:e[n].y,tileUnitDistanceFromAnchor:r},n<e.length-1&&(r+=e[n+1].dist(e[n]));for(let r=t.segment||0;r>=0;r--)i[r]={x:e[r].x,y:e[r].y,tileUnitDistanceFromAnchor:n},r>0&&(n+=e[r-1].dist(e[r]));for(let t=0;t<e.length;t++){const e=i[t];this.lineVertexArray.emplaceBack(e.x,e.y,e.tileUnitDistanceFromAnchor);}}return {lineStartIndex:r,lineLength:this.lineVertexArray.length-r}}addSymbols(e,r,n,i,s,a,o,l,u,c,h,p){const f=e.indexArray,d=e.layoutVertexArray,y=e.segments.prepareSegment(4*r.length,d,f,this.canOverlap?a.sortKey:void 0),m=this.glyphOffsetArray.length,g=y.vertexLength,x=this.allowVerticalPlacement&&o===t.ao.vertical?Math.PI/2:0,v=a.text&&a.text.sections;for(let t=0;t<r.length;t++){const{tl:i,tr:s,bl:o,br:u,tex:c,pixelOffsetTL:h,pixelOffsetBR:m,minFontScaleX:g,minFontScaleY:b,glyphOffset:w,isSDF:_,sectionIndex:S}=r[t],A=y.vertexLength,k=w[1];sh(d,l.x,l.y,i.x,k+i.y,c.x,c.y,n,_,h.x,h.y,g,b),sh(d,l.x,l.y,s.x,k+s.y,c.x+c.w,c.y,n,_,m.x,h.y,g,b),sh(d,l.x,l.y,o.x,k+o.y,c.x,c.y+c.h,n,_,h.x,m.y,g,b),sh(d,l.x,l.y,u.x,k+u.y,c.x+c.w,c.y+c.h,n,_,m.x,m.y,g,b),ah(e.dynamicLayoutVertexArray,l,x),f.emplaceBack(A,A+2,A+1),f.emplaceBack(A+1,A+2,A+3),y.vertexLength+=4,y.primitiveLength+=2,this.glyphOffsetArray.emplaceBack(w[0]),t!==r.length-1&&S===r[t+1].sectionIndex||e.programConfigurations.populatePaintArrays(d.length,a,a.index,{imagePositions:{},canonical:p,formattedSection:v&&v[S]});}e.placedSymbolArray.emplaceBack(l.x,l.y,m,this.glyphOffsetArray.length-m,g,u,c,l.segment,n?n[0]:0,n?n[1]:0,i[0],i[1],o,0,!1,0,h);}_addCollisionDebugVertex(t,e,r,n,i,s){return e.emplaceBack(0,0),t.emplaceBack(r.x,r.y,n,i,Math.round(s.x),Math.round(s.y))}addCollisionDebugVertices(t,e,n,i,s,a,o){const l=s.segments.prepareSegment(4,s.layoutVertexArray,s.indexArray),u=l.vertexLength,c=s.layoutVertexArray,h=s.collisionVertexArray,p=o.anchorX,f=o.anchorY;this._addCollisionDebugVertex(c,h,a,p,f,new r(t,e)),this._addCollisionDebugVertex(c,h,a,p,f,new r(n,e)),this._addCollisionDebugVertex(c,h,a,p,f,new r(n,i)),this._addCollisionDebugVertex(c,h,a,p,f,new r(t,i)),l.vertexLength+=4;const d=s.indexArray;d.emplaceBack(u,u+1),d.emplaceBack(u+1,u+2),d.emplaceBack(u+2,u+3),d.emplaceBack(u+3,u),l.primitiveLength+=4;}addDebugCollisionBoxes(t,e,r,n){for(let i=t;i<e;i++){const t=this.collisionBoxArray.get(i);this.addCollisionDebugVertices(t.x1,t.y1,t.x2,t.y2,n?this.textCollisionBox:this.iconCollisionBox,t.anchorPoint,r);}}generateCollisionDebugBuffers(){this.hasDebugData()&&this.destroyDebugData(),this.textCollisionBox=new uh(Ya,sc.members,Ja),this.iconCollisionBox=new uh(Ya,sc.members,Ja);for(let t=0;t<this.symbolInstances.length;t++){const e=this.symbolInstances.get(t);this.addDebugCollisionBoxes(e.textBoxStartIndex,e.textBoxEndIndex,e,!0),this.addDebugCollisionBoxes(e.verticalTextBoxStartIndex,e.verticalTextBoxEndIndex,e,!0),this.addDebugCollisionBoxes(e.iconBoxStartIndex,e.iconBoxEndIndex,e,!1),this.addDebugCollisionBoxes(e.verticalIconBoxStartIndex,e.verticalIconBoxEndIndex,e,!1);}}_deserializeCollisionBoxesForSymbol(t,e,r,n,i,s,a,o,l){const u={};for(let n=e;n<r;n++){const e=t.get(n);u.textBox={x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,anchorPointX:e.anchorPointX,anchorPointY:e.anchorPointY},u.textFeatureIndex=e.featureIndex;break}for(let e=n;e<i;e++){const r=t.get(e);u.verticalTextBox={x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2,anchorPointX:r.anchorPointX,anchorPointY:r.anchorPointY},u.verticalTextFeatureIndex=r.featureIndex;break}for(let e=s;e<a;e++){const r=t.get(e);u.iconBox={x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2,anchorPointX:r.anchorPointX,anchorPointY:r.anchorPointY},u.iconFeatureIndex=r.featureIndex;break}for(let e=o;e<l;e++){const r=t.get(e);u.verticalIconBox={x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2,anchorPointX:r.anchorPointX,anchorPointY:r.anchorPointY},u.verticalIconFeatureIndex=r.featureIndex;break}return u}deserializeCollisionBoxes(t){this.collisionArrays=[];for(let e=0;e<this.symbolInstances.length;e++){const r=this.symbolInstances.get(e);this.collisionArrays.push(this._deserializeCollisionBoxesForSymbol(t,r.textBoxStartIndex,r.textBoxEndIndex,r.verticalTextBoxStartIndex,r.verticalTextBoxEndIndex,r.iconBoxStartIndex,r.iconBoxEndIndex,r.verticalIconBoxStartIndex,r.verticalIconBoxEndIndex));}}hasTextData(){return this.text.segments.get().length>0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(t,e){const r=t.placedSymbolArray.get(e),n=r.vertexStartIndex+4*r.numGlyphs;for(let e=r.vertexStartIndex;e<n;e+=4)t.indexArray.emplaceBack(e,e+2,e+1),t.indexArray.emplaceBack(e+1,e+2,e+3);}getSortedSymbolIndexes(t){if(this.sortedAngle===t&&void 0!==this.symbolInstanceIndexes)return this.symbolInstanceIndexes;const e=Math.sin(t),r=Math.cos(t),n=[],i=[],s=[];for(let t=0;t<this.symbolInstances.length;++t){s.push(t);const a=this.symbolInstances.get(t);n.push(0|Math.round(e*a.anchorX+r*a.anchorY)),i.push(a.featureIndex);}return s.sort(((t,e)=>n[t]-n[e]||i[e]-i[t])),s}addToSortKeyRanges(t,e){const r=this.sortKeyRanges[this.sortKeyRanges.length-1];r&&r.sortKey===e?r.symbolInstanceEnd=t+1:this.sortKeyRanges.push({sortKey:e,symbolInstanceStart:t,symbolInstanceEnd:t+1});}sortFeatures(t){if(this.sortFeaturesByY&&this.sortedAngle!==t&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(const t of this.symbolInstanceIndexes){const e=this.symbolInstances.get(t);this.featureSortOrder.push(e.featureIndex),[e.rightJustifiedTextSymbolIndex,e.centerJustifiedTextSymbolIndex,e.leftJustifiedTextSymbolIndex].forEach(((t,e,r)=>{t>=0&&r.indexOf(t)===e&&this.addIndicesForPlacedSymbol(this.text,t);})),e.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,e.verticalPlacedTextSymbolIndex),e.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,e.placedIconSymbolIndex),e.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,e.verticalPlacedIconSymbolIndex);}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray);}}}let hh,ph;ls(\"SymbolBucket\",ch,{omit:[\"layers\",\"collisionBoxArray\",\"features\",\"compareText\"]}),ch.MAX_GLYPHS=65535,ch.addDynamicAttributes=ah;var fh={get paint(){return ph=ph||new qs({\"icon-opacity\":new Rs(vt.paint_symbol[\"icon-opacity\"]),\"icon-color\":new Rs(vt.paint_symbol[\"icon-color\"]),\"icon-halo-color\":new Rs(vt.paint_symbol[\"icon-halo-color\"]),\"icon-halo-width\":new Rs(vt.paint_symbol[\"icon-halo-width\"]),\"icon-halo-blur\":new Rs(vt.paint_symbol[\"icon-halo-blur\"]),\"icon-translate\":new Os(vt.paint_symbol[\"icon-translate\"]),\"icon-translate-anchor\":new Os(vt.paint_symbol[\"icon-translate-anchor\"]),\"text-opacity\":new Rs(vt.paint_symbol[\"text-opacity\"]),\"text-color\":new Rs(vt.paint_symbol[\"text-color\"],{runtimeType:Ot,getOverride:t=>t.textColor,hasOverride:t=>!!t.textColor}),\"text-halo-color\":new Rs(vt.paint_symbol[\"text-halo-color\"]),\"text-halo-width\":new Rs(vt.paint_symbol[\"text-halo-width\"]),\"text-halo-blur\":new Rs(vt.paint_symbol[\"text-halo-blur\"]),\"text-translate\":new Os(vt.paint_symbol[\"text-translate\"]),\"text-translate-anchor\":new Os(vt.paint_symbol[\"text-translate-anchor\"])})},get layout(){return hh=hh||new qs({\"symbol-placement\":new Os(vt.layout_symbol[\"symbol-placement\"]),\"symbol-spacing\":new Os(vt.layout_symbol[\"symbol-spacing\"]),\"symbol-avoid-edges\":new Os(vt.layout_symbol[\"symbol-avoid-edges\"]),\"symbol-sort-key\":new Rs(vt.layout_symbol[\"symbol-sort-key\"]),\"symbol-z-order\":new Os(vt.layout_symbol[\"symbol-z-order\"]),\"icon-allow-overlap\":new Os(vt.layout_symbol[\"icon-allow-overlap\"]),\"icon-overlap\":new Os(vt.layout_symbol[\"icon-overlap\"]),\"icon-ignore-placement\":new Os(vt.layout_symbol[\"icon-ignore-placement\"]),\"icon-optional\":new Os(vt.layout_symbol[\"icon-optional\"]),\"icon-rotation-alignment\":new Os(vt.layout_symbol[\"icon-rotation-alignment\"]),\"icon-size\":new Rs(vt.layout_symbol[\"icon-size\"]),\"icon-text-fit\":new Os(vt.layout_symbol[\"icon-text-fit\"]),\"icon-text-fit-padding\":new Os(vt.layout_symbol[\"icon-text-fit-padding\"]),\"icon-image\":new Rs(vt.layout_symbol[\"icon-image\"]),\"icon-rotate\":new Rs(vt.layout_symbol[\"icon-rotate\"]),\"icon-padding\":new Rs(vt.layout_symbol[\"icon-padding\"]),\"icon-keep-upright\":new Os(vt.layout_symbol[\"icon-keep-upright\"]),\"icon-offset\":new Rs(vt.layout_symbol[\"icon-offset\"]),\"icon-anchor\":new Rs(vt.layout_symbol[\"icon-anchor\"]),\"icon-pitch-alignment\":new Os(vt.layout_symbol[\"icon-pitch-alignment\"]),\"text-pitch-alignment\":new Os(vt.layout_symbol[\"text-pitch-alignment\"]),\"text-rotation-alignment\":new Os(vt.layout_symbol[\"text-rotation-alignment\"]),\"text-field\":new Rs(vt.layout_symbol[\"text-field\"]),\"text-font\":new Rs(vt.layout_symbol[\"text-font\"]),\"text-size\":new Rs(vt.layout_symbol[\"text-size\"]),\"text-max-width\":new Rs(vt.layout_symbol[\"text-max-width\"]),\"text-line-height\":new Os(vt.layout_symbol[\"text-line-height\"]),\"text-letter-spacing\":new Rs(vt.layout_symbol[\"text-letter-spacing\"]),\"text-justify\":new Rs(vt.layout_symbol[\"text-justify\"]),\"text-radial-offset\":new Rs(vt.layout_symbol[\"text-radial-offset\"]),\"text-variable-anchor\":new Os(vt.layout_symbol[\"text-variable-anchor\"]),\"text-variable-anchor-offset\":new Rs(vt.layout_symbol[\"text-variable-anchor-offset\"]),\"text-anchor\":new Rs(vt.layout_symbol[\"text-anchor\"]),\"text-max-angle\":new Os(vt.layout_symbol[\"text-max-angle\"]),\"text-writing-mode\":new Os(vt.layout_symbol[\"text-writing-mode\"]),\"text-rotate\":new Rs(vt.layout_symbol[\"text-rotate\"]),\"text-padding\":new Os(vt.layout_symbol[\"text-padding\"]),\"text-keep-upright\":new Os(vt.layout_symbol[\"text-keep-upright\"]),\"text-transform\":new Rs(vt.layout_symbol[\"text-transform\"]),\"text-offset\":new Rs(vt.layout_symbol[\"text-offset\"]),\"text-allow-overlap\":new Os(vt.layout_symbol[\"text-allow-overlap\"]),\"text-overlap\":new Os(vt.layout_symbol[\"text-overlap\"]),\"text-ignore-placement\":new Os(vt.layout_symbol[\"text-ignore-placement\"]),\"text-optional\":new Os(vt.layout_symbol[\"text-optional\"])})}};class dh{constructor(t){if(void 0===t.property.overrides)throw new Error(\"overrides must be provided to instantiate FormatSectionOverride class\");this.type=t.property.overrides?t.property.overrides.runtimeType:Ft,this.defaultValue=t;}evaluate(t){if(t.formattedSection){const e=this.defaultValue.property.overrides;if(e&&e.hasOverride(t.formattedSection))return e.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default}eachChild(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression);}outputDefined(){return !1}serialize(){return null}}ls(\"FormatSectionOverride\",dh,{omit:[\"defaultValue\"]});class yh extends Xs{constructor(t,e){super(t,fh,e);}recalculate(t,e){if(super.recalculate(t,e),\"auto\"===this.layout.get(\"icon-rotation-alignment\")&&(this.layout._values[\"icon-rotation-alignment\"]=\"point\"!==this.layout.get(\"symbol-placement\")?\"map\":\"viewport\"),\"auto\"===this.layout.get(\"text-rotation-alignment\")&&(this.layout._values[\"text-rotation-alignment\"]=\"point\"!==this.layout.get(\"symbol-placement\")?\"map\":\"viewport\"),\"auto\"===this.layout.get(\"text-pitch-alignment\")&&(this.layout._values[\"text-pitch-alignment\"]=\"map\"===this.layout.get(\"text-rotation-alignment\")?\"map\":\"viewport\"),\"auto\"===this.layout.get(\"icon-pitch-alignment\")&&(this.layout._values[\"icon-pitch-alignment\"]=this.layout.get(\"icon-rotation-alignment\")),\"point\"===this.layout.get(\"symbol-placement\")){const t=this.layout.get(\"text-writing-mode\");if(t){const e=[];for(const r of t)e.indexOf(r)<0&&e.push(r);this.layout._values[\"text-writing-mode\"]=e;}else this.layout._values[\"text-writing-mode\"]=[\"horizontal\"];}this._setPaintOverrides();}getValueAndResolveTokens(t,e,r,n){const i=this.layout.get(t).evaluate(e,{},r,n),s=this._unevaluatedLayout._values[t];return s.isDataDriven()||ri(s.value)||!i?i:function(t,e){return e.replace(/{([^{}]+)}/g,((e,r)=>t&&r in t?String(t[r]):\"\"))}(e.properties,i)}createBucket(t){return new ch(t)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error(\"Should take a different path in FeatureIndex\")}_setPaintOverrides(){for(const t of fh.paint.overridableProperties){if(!yh.hasPaintOverride(this.layout,t))continue;const e=this.paint.get(t),r=new dh(e),n=new ei(r,e.property.specification);let i=null;i=\"constant\"===e.value.kind||\"source\"===e.value.kind?new ii(\"source\",n):new si(\"composite\",n,e.value.zoomStops),this.paint._values[t]=new $s(e.property,i,e.parameters);}}_handleOverridablePaintPropertyUpdate(t,e,r){return !(!this.layout||e.isDataDriven()||r.isDataDriven())&&yh.hasPaintOverride(this.layout,t)}static hasPaintOverride(t,e){const r=t.get(\"text-field\"),n=fh.paint.properties[e];let i=!1;const s=t=>{for(const e of t)if(n.overrides&&n.overrides.hasOverride(e))return void(i=!0)};if(\"constant\"===r.value.kind&&r.value.value instanceof Ee)s(r.value.value.sections);else if(\"source\"===r.value.kind||\"composite\"===r.value.kind){const t=e=>{i||(e instanceof qe&&je(e.value)===qt?s(e.value.sections):e instanceof zr?s(e.sections):e.eachChild(t));},e=r.value;e._styleExpression&&t(e._styleExpression.expression);}return i}}let mh;var gh={get paint(){return mh=mh||new qs({\"background-color\":new Os(vt.paint_background[\"background-color\"]),\"background-pattern\":new js(vt.paint_background[\"background-pattern\"]),\"background-opacity\":new Os(vt.paint_background[\"background-opacity\"])})}};class xh extends Xs{constructor(t,e){super(t,gh,e);}}class vh extends Xs{constructor(t,e){super(t,{},e),this.onAdd=t=>{this.implementation.onAdd&&this.implementation.onAdd(t,t.painter.context.gl);},this.onRemove=t=>{this.implementation.onRemove&&this.implementation.onRemove(t,t.painter.context.gl);},this.implementation=t;}is3D(){return \"3d\"===this.implementation.renderingMode}hasOffscreenPass(){return void 0!==this.implementation.prerender}recalculate(){}updateTransitions(){}hasTransition(){return !1}serialize(){throw new Error(\"Custom layers cannot be serialized\")}}class bh{constructor(t){this._methodToThrottle=t,this._triggered=!1,\"undefined\"!=typeof MessageChannel&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._methodToThrottle();});}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout((()=>{this._triggered=!1,this._methodToThrottle();}),0));}remove(){delete this._channel,this._methodToThrottle=()=>{};}}const wh={once:!0},_h=6371008.8;class Sh{constructor(t,e){if(isNaN(t)||isNaN(e))throw new Error(`Invalid LngLat object: (${t}, ${e})`);if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error(\"Invalid LngLat latitude value: must be between -90 and 90\")}wrap(){return new Sh($(this.lng,-180,180),this.lat)}toArray(){return [this.lng,this.lat]}toString(){return `LngLat(${this.lng}, ${this.lat})`}distanceTo(t){const e=Math.PI/180,r=this.lat*e,n=t.lat*e,i=Math.sin(r)*Math.sin(n)+Math.cos(r)*Math.cos(n)*Math.cos((t.lng-this.lng)*e);return _h*Math.acos(Math.min(i,1))}static convert(t){if(t instanceof Sh)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new Sh(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&\"object\"==typeof t&&null!==t)return new Sh(Number(\"lng\"in t?t.lng:t.lon),Number(t.lat));throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: <lng>, lat: <lat>}, an object {lon: <lng>, lat: <lat>}, or an array of [<lng>, <lat>]\")}}const Ah=2*Math.PI*_h;function kh(t){return Ah*Math.cos(t*Math.PI/180)}function Mh(t){return (180+t)/360}function Ih(t){return (180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function zh(t,e){return t/kh(e)}function Ph(t){return 360/Math.PI*Math.atan(Math.exp((180-360*t)*Math.PI/180))-90}function Ch(t,e){return t*kh(Ph(e))}class Eh{constructor(t,e,r=0){this.x=+t,this.y=+e,this.z=+r;}static fromLngLat(t,e=0){const r=Sh.convert(t);return new Eh(Mh(r.lng),Ih(r.lat),zh(e,r.lat))}toLngLat(){return new Sh(360*this.x-180,Ph(this.y))}toAltitude(){return Ch(this.z,this.y)}meterInMercatorCoordinateUnits(){return 1/Ah*(t=Ph(this.y),1/Math.cos(t*Math.PI/180));var t;}}function Th(t,e,r){var n=2*Math.PI*6378137/256/Math.pow(2,r);return [t*n-2*Math.PI*6378137/2,e*n-2*Math.PI*6378137/2]}class Bh{constructor(t,e,r){if(!function(t,e,r){return !(t<0||t>25||r<0||r>=Math.pow(2,t)||e<0||e>=Math.pow(2,t))}(t,e,r))throw new Error(`x=${e}, y=${r}, z=${t} outside of bounds. 0<=x<${Math.pow(2,t)}, 0<=y<${Math.pow(2,t)} 0<=z<=25 `);this.z=t,this.x=e,this.y=r,this.key=Dh(0,t,t,e,r);}equals(t){return this.z===t.z&&this.x===t.x&&this.y===t.y}url(t,e,r){const n=(s=this.y,a=this.z,o=Th(256*(i=this.x),256*(s=Math.pow(2,a)-s-1),a),l=Th(256*(i+1),256*(s+1),a),o[0]+\",\"+o[1]+\",\"+l[0]+\",\"+l[1]);var i,s,a,o,l;const u=function(t,e,r){let n,i=\"\";for(let s=t;s>0;s--)n=1<<s-1,i+=(e&n?1:0)+(r&n?2:0);return i}(this.z,this.x,this.y);return t[(this.x+this.y)%t.length].replace(/{prefix}/g,(this.x%16).toString(16)+(this.y%16).toString(16)).replace(/{z}/g,String(this.z)).replace(/{x}/g,String(this.x)).replace(/{y}/g,String(\"tms\"===r?Math.pow(2,this.z)-this.y-1:this.y)).replace(/{ratio}/g,e>1?\"@2x\":\"\").replace(/{quadkey}/g,u).replace(/{bbox-epsg-3857}/g,n)}isChildOf(t){const e=this.z-t.z;return e>0&&t.x===this.x>>e&&t.y===this.y>>e}getTilePoint(t){const e=Math.pow(2,this.z);return new r((t.x*e-this.x)*P,(t.y*e-this.y)*P)}toString(){return `${this.z}/${this.x}/${this.y}`}}class Vh{constructor(t,e){this.wrap=t,this.canonical=e,this.key=Dh(t,e.z,e.z,e.x,e.y);}}class Fh{constructor(t,e,r,n,i){if(this.terrainRttPosMatrix32f=null,t<r)throw new Error(`overscaledZ should be >= z; overscaledZ = ${t}; z = ${r}`);this.overscaledZ=t,this.wrap=e,this.canonical=new Bh(r,+n,+i),this.key=Dh(e,t,r,n,i);}clone(){return new Fh(this.overscaledZ,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)}equals(t){return this.overscaledZ===t.overscaledZ&&this.wrap===t.wrap&&this.canonical.equals(t.canonical)}scaledTo(t){if(t>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${t}; overscaledZ = ${this.overscaledZ}`);const e=this.canonical.z-t;return t>this.canonical.z?new Fh(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Fh(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)}isOverscaled(){return this.overscaledZ>this.canonical.z}calculateScaledKey(t,e){if(t>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${t}; overscaledZ = ${this.overscaledZ}`);const r=this.canonical.z-t;return t>this.canonical.z?Dh(this.wrap*+e,t,this.canonical.z,this.canonical.x,this.canonical.y):Dh(this.wrap*+e,t,t,this.canonical.x>>r,this.canonical.y>>r)}isChildOf(t){if(t.wrap!==this.wrap)return !1;if(this.overscaledZ-t.overscaledZ<=0)return !1;if(0===t.overscaledZ)return this.overscaledZ>0;const e=this.canonical.z-t.canonical.z;return !(e<0)&&t.canonical.x===this.canonical.x>>e&&t.canonical.y===this.canonical.y>>e}children(t){if(this.overscaledZ>=t)return [new Fh(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];const e=this.canonical.z+1,r=2*this.canonical.x,n=2*this.canonical.y;return [new Fh(e,this.wrap,e,r,n),new Fh(e,this.wrap,e,r+1,n),new Fh(e,this.wrap,e,r,n+1),new Fh(e,this.wrap,e,r+1,n+1)]}isLessThan(t){return this.wrap<t.wrap||!(this.wrap>t.wrap)&&(this.overscaledZ<t.overscaledZ||!(this.overscaledZ>t.overscaledZ)&&(this.canonical.x<t.canonical.x||!(this.canonical.x>t.canonical.x)&&this.canonical.y<t.canonical.y))}wrapped(){return new Fh(this.overscaledZ,0,this.canonical.z,this.canonical.x,this.canonical.y)}unwrapTo(t){return new Fh(this.overscaledZ,t,this.canonical.z,this.canonical.x,this.canonical.y)}overscaleFactor(){return Math.pow(2,this.overscaledZ-this.canonical.z)}toUnwrapped(){return new Vh(this.wrap,this.canonical)}toString(){return `${this.overscaledZ}/${this.canonical.x}/${this.canonical.y}`}getTilePoint(t){return this.canonical.getTilePoint(new Eh(t.x-this.wrap,t.y))}}function Dh(t,e,r,n,i){(t*=2)<0&&(t=-1*t-1);const s=1<<r;return (s*s*t+s*i+n).toString(36)+r.toString(36)+e.toString(36)}function $h(t,e){return e?t.properties[e]:t.id}ls(\"CanonicalTileID\",Bh),ls(\"OverscaledTileID\",Fh,{omit:[\"terrainRttPosMatrix32f\"]});class Lh{constructor(){this.minX=1/0,this.maxX=-1/0,this.minY=1/0,this.maxY=-1/0;}extend(t){return this.minX=Math.min(this.minX,t.x),this.minY=Math.min(this.minY,t.y),this.maxX=Math.max(this.maxX,t.x),this.maxY=Math.max(this.maxY,t.y),this}expandBy(t){return this.minX-=t,this.minY-=t,this.maxX+=t,this.maxY+=t,(this.minX>this.maxX||this.minY>this.maxY)&&(this.minX=1/0,this.maxX=-1/0,this.minY=1/0,this.maxY=-1/0),this}shrinkBy(t){return this.expandBy(-t)}map(t){const e=new Lh;return e.extend(t(new r(this.minX,this.minY))),e.extend(t(new r(this.maxX,this.minY))),e.extend(t(new r(this.minX,this.maxY))),e.extend(t(new r(this.maxX,this.maxY))),e}static fromPoints(t){const e=new Lh;for(const r of t)e.extend(r);return e}contains(t){return t.x>=this.minX&&t.x<=this.maxX&&t.y>=this.minY&&t.y<=this.maxY}empty(){return this.minX>this.maxX}width(){return this.maxX-this.minX}height(){return this.maxY-this.minY}covers(t){return !this.empty()&&!t.empty()&&t.minX>=this.minX&&t.maxX<=this.maxX&&t.minY>=this.minY&&t.maxY<=this.maxY}intersects(t){return !this.empty()&&!t.empty()&&t.minX<=this.maxX&&t.maxX>=this.minX&&t.minY<=this.maxY&&t.maxY>=this.minY}}class Oh{constructor(t){this._stringToNumber={},this._numberToString=[];for(let e=0;e<t.length;e++){const r=t[e];this._stringToNumber[r]=e,this._numberToString[e]=r;}}encode(t){return this._stringToNumber[t]}decode(t){if(t>=this._numberToString.length)throw new Error(`Out of bounds. Index requested n=${t} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[t]}}class Rh{constructor(t,e,r,n,i){this.type=\"Feature\",this._vectorTileFeature=t,t._z=e,t._x=r,t._y=n,this.properties=t.properties,this.id=i;}get geometry(){return void 0===this._geometry&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry}set geometry(t){this._geometry=t;}toJSON(){const t={geometry:this.geometry};for(const e in this)\"_geometry\"!==e&&\"_vectorTileFeature\"!==e&&(t[e]=this[e]);return t}}class Uh{constructor(t,e){this.tileID=t,this.x=t.canonical.x,this.y=t.canonical.y,this.z=t.canonical.z,this.grid=new as(P,16,0),this.grid3D=new as(P,16,0),this.featureIndexArray=new Da,this.promoteId=e;}insert(t,e,r,n,i,s){const a=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(r,n,i);const o=s?this.grid3D:this.grid;for(let t=0;t<e.length;t++){const r=e[t],n=[1/0,1/0,-1/0,-1/0];for(let t=0;t<r.length;t++){const e=r[t];n[0]=Math.min(n[0],e.x),n[1]=Math.min(n[1],e.y),n[2]=Math.max(n[2],e.x),n[3]=Math.max(n[3],e.y);}n[0]<P&&n[1]<P&&n[2]>=0&&n[3]>=0&&o.insert(a,n[0],n[1],n[2],n[3]);}}loadVTLayers(){return this.vtLayers||(this.vtLayers=new Pu(new fc(this.rawTileData)).layers,this.sourceLayerCoder=new Oh(this.vtLayers?Object.keys(this.vtLayers).sort():[\"_geojsonTileLayer\"])),this.vtLayers}query(t,e,n,i){this.loadVTLayers();const s=t.params,a=P/t.tileSize/t.scale,o=fi(s.filter,s.globalState),l=t.queryGeometry,u=t.queryPadding*a,c=Lh.fromPoints(l),h=this.grid.query(c.minX-u,c.minY-u,c.maxX+u,c.maxY+u),p=Lh.fromPoints(t.cameraQueryGeometry).expandBy(u),f=this.grid3D.query(p.minX,p.minY,p.maxX,p.maxY,((e,n,i,s)=>function(t,e,n,i,s){for(const r of t)if(e<=r.x&&n<=r.y&&i>=r.x&&s>=r.y)return !0;const a=[new r(e,n),new r(e,s),new r(i,s),new r(i,n)];if(t.length>2)for(const e of a)if(Ko(t,e))return !0;for(let e=0;e<t.length-1;e++)if(Jo(t[e],t[e+1],a))return !0;return !1}(t.cameraQueryGeometry,e-u,n-u,i+u,s+u)));for(const t of f)h.push(t);h.sort(Nh);const d={};let y;for(let r=0;r<h.length;r++){const u=h[r];if(u===y)continue;y=u;const c=this.featureIndexArray.get(u);let p=null;this.loadMatchingFeature(d,c.bucketIndex,c.sourceLayerIndex,c.featureIndex,o,s.layers,s.availableImages,e,n,i,((e,r,n)=>(p||(p=Do(e)),r.queryIntersectsFeature({queryGeometry:l,feature:e,featureState:n,geometry:p,zoom:this.z,transform:t.transform,pixelsToTileUnits:a,pixelPosMatrix:t.pixelPosMatrix,unwrappedTileID:this.tileID.toUnwrapped(),getElevation:t.getElevation}))));}return d}loadMatchingFeature(t,e,r,n,i,s,a,o,l,u,c){const h=this.bucketLayerIDs[e];if(s&&!h.some((t=>s.has(t))))return;const p=this.sourceLayerCoder.decode(r),f=this.vtLayers[p].feature(n);if(i.needGeometry){const t=$o(f,!0);if(!i.filter(new Ps(this.tileID.overscaledZ),t,this.tileID.canonical))return}else if(!i.filter(new Ps(this.tileID.overscaledZ),f))return;const d=this.getId(f,p);for(let e=0;e<h.length;e++){const r=h[e];if(s&&!s.has(r))continue;const i=o[r];if(!i)continue;let p={};d&&u&&(p=u.getState(i.sourceLayer||\"_geojsonTileLayer\",d));const y=L({},l[r]);y.paint=jh(y.paint,i.paint,f,p,a),y.layout=jh(y.layout,i.layout,f,p,a);const m=!c||c(f,i,p);if(!m)continue;const g=new Rh(f,this.z,this.x,this.y,d);g.layer=y;let x=t[r];void 0===x&&(x=t[r]=[]),x.push({featureIndex:n,feature:g,intersectionZ:m});}}lookupSymbolFeatures(t,e,r,n,i,s,a,o){const l={};this.loadVTLayers();const u=fi(i.filterSpec,i.globalState);for(const i of t)this.loadMatchingFeature(l,r,n,i,u,s,a,o,e);return l}hasLayer(t){for(const e of this.bucketLayerIDs)for(const r of e)if(t===r)return !0;return !1}getId(t,e){var r;let n=t.id;return this.promoteId&&(n=t.properties[\"string\"==typeof this.promoteId?this.promoteId:this.promoteId[e]],\"boolean\"==typeof n&&(n=Number(n)),void 0===n&&(null===(r=t.properties)||void 0===r?void 0:r.cluster)&&this.promoteId&&(n=Number(t.properties.cluster_id))),n}}function jh(t,e,r,n,i){return R(t,((t,s)=>{const a=e instanceof Ls?e.get(s):null;return a&&a.evaluate?a.evaluate(r,n,i):a}))}function Nh(t,e){return e-t}function qh(t,e,n,i,s){const a=[];for(let o=0;o<t.length;o++){const l=t[o];let u;for(let t=0;t<l.length-1;t++){let o=l[t],c=l[t+1];o.x<e&&c.x<e||(o.x<e?o=new r(e,o.y+(e-o.x)/(c.x-o.x)*(c.y-o.y))._round():c.x<e&&(c=new r(e,o.y+(e-o.x)/(c.x-o.x)*(c.y-o.y))._round()),o.y<n&&c.y<n||(o.y<n?o=new r(o.x+(n-o.y)/(c.y-o.y)*(c.x-o.x),n)._round():c.y<n&&(c=new r(o.x+(n-o.y)/(c.y-o.y)*(c.x-o.x),n)._round()),o.x>=i&&c.x>=i||(o.x>=i?o=new r(i,o.y+(i-o.x)/(c.x-o.x)*(c.y-o.y))._round():c.x>=i&&(c=new r(i,o.y+(i-o.x)/(c.x-o.x)*(c.y-o.y))._round()),o.y>=s&&c.y>=s||(o.y>=s?o=new r(o.x+(s-o.y)/(c.y-o.y)*(c.x-o.x),s)._round():c.y>=s&&(c=new r(o.x+(s-o.y)/(c.y-o.y)*(c.x-o.x),s)._round()),u&&o.equals(u[u.length-1])||(u=[o],a.push(u)),u.push(c)))));}}return a}ls(\"FeatureIndex\",Uh,{omit:[\"rawTileData\",\"sourceLayerCoder\"]});class Gh extends r{constructor(t,e,r,n){super(t,e),this.angle=r,void 0!==n&&(this.segment=n);}clone(){return new Gh(this.x,this.y,this.angle,this.segment)}}function Xh(t,e,r,n,i){if(void 0===e.segment||0===r)return !0;let s=e,a=e.segment+1,o=0;for(;o>-r/2;){if(a--,a<0)return !1;o-=t[a].dist(s),s=t[a];}o+=t[a].dist(t[a+1]),a++;const l=[];let u=0;for(;o<r/2;){const e=t[a],r=t[a+1];if(!r)return !1;let s=t[a-1].angleTo(e)-e.angleTo(r);for(s=Math.abs((s+3*Math.PI)%(2*Math.PI)-Math.PI),l.push({distance:o,angleDelta:s}),u+=s;o-l[0].distance>n;)u-=l.shift().angleDelta;if(u>i)return !1;a++,o+=e.dist(r);}return !0}function Zh(t){let e=0;for(let r=0;r<t.length-1;r++)e+=t[r].dist(t[r+1]);return e}function Yh(t,e,r){return t?.6*e*r:0}function Hh(t,e){return Math.max(t?t.right-t.left:0,e?e.right-e.left:0)}function Kh(t,e,r,n,i,s){const a=Yh(r,i,s),o=Hh(r,n)*s;let l=0;const u=Zh(t)/2;for(let r=0;r<t.length-1;r++){const n=t[r],i=t[r+1],s=n.dist(i);if(l+s>u){const c=(u-l)/s,h=yr.number(n.x,i.x,c),p=yr.number(n.y,i.y,c),f=new Gh(h,p,i.angleTo(n),r);return f._round(),!a||Xh(t,f,o,a,e)?f:void 0}l+=s;}}function Jh(t,e,r,n,i,s,a,o,l){const u=Yh(n,s,a),c=Hh(n,i),h=c*a,p=0===t[0].x||t[0].x===l||0===t[0].y||t[0].y===l;return e-h<e/4&&(e=h+e/4),Wh(t,p?e/2*o%e:(c/2+2*s)*a*o%e,e,u,r,h,p,!1,l)}function Wh(t,e,r,n,i,s,a,o,l){const u=s/2,c=Zh(t);let h=0,p=e-r,f=[];for(let e=0;e<t.length-1;e++){const a=t[e],o=t[e+1],d=a.dist(o),y=o.angleTo(a);for(;p+r<h+d;){p+=r;const m=(p-h)/d,g=yr.number(a.x,o.x,m),x=yr.number(a.y,o.y,m);if(g>=0&&g<l&&x>=0&&x<l&&p-u>=0&&p+u<=c){const r=new Gh(g,x,y,e);r._round(),n&&!Xh(t,r,s,n,i)||f.push(r);}}h+=d;}return o||f.length||a||(f=Wh(t,h/2,r,n,i,s,a,!0,l)),f}function Qh(t,e,n,i){const s=[],a=t.image,o=a.pixelRatio,l=a.paddedRect.w-2,u=a.paddedRect.h-2;let c={x1:t.left,y1:t.top,x2:t.right,y2:t.bottom};const h=a.stretchX||[[0,l]],p=a.stretchY||[[0,u]],f=(t,e)=>t+e[1]-e[0],d=h.reduce(f,0),y=p.reduce(f,0),m=l-d,g=u-y;let x=0,v=d,b=0,w=y,_=0,S=m,A=0,k=g;if(a.content&&i){const e=a.content,r=e[2]-e[0],n=e[3]-e[1];(a.textFitWidth||a.textFitHeight)&&(c=Wc(t)),x=tp(h,0,e[0]),b=tp(p,0,e[1]),v=tp(h,e[0],e[2]),w=tp(p,e[1],e[3]),_=e[0]-x,A=e[1]-b,S=r-v,k=n-w;}const M=c.x1,I=c.y1,z=c.x2-M,P=c.y2-I,C=(t,i,s,l)=>{const u=rp(t.stretch-x,v,z,M),c=np(t.fixed-_,S,t.stretch,d),h=rp(i.stretch-b,w,P,I),p=np(i.fixed-A,k,i.stretch,y),f=rp(s.stretch-x,v,z,M),m=np(s.fixed-_,S,s.stretch,d),g=rp(l.stretch-b,w,P,I),C=np(l.fixed-A,k,l.stretch,y),E=new r(u,h),T=new r(f,h),B=new r(f,g),V=new r(u,g),F=new r(c/o,p/o),D=new r(m/o,C/o),$=e*Math.PI/180;if($){const t=Math.sin($),e=Math.cos($),r=[e,-t,t,e];E._matMult(r),T._matMult(r),V._matMult(r),B._matMult(r);}const L=t.stretch+t.fixed,O=i.stretch+i.fixed;return {tl:E,tr:T,bl:V,br:B,tex:{x:a.paddedRect.x+1+L,y:a.paddedRect.y+1+O,w:s.stretch+s.fixed-L,h:l.stretch+l.fixed-O},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:F,pixelOffsetBR:D,minFontScaleX:S/o/z,minFontScaleY:k/o/P,isSDF:n}};if(i&&(a.stretchX||a.stretchY)){const t=ep(h,m,d),e=ep(p,g,y);for(let r=0;r<t.length-1;r++){const n=t[r],i=t[r+1];for(let t=0;t<e.length-1;t++)s.push(C(n,e[t],i,e[t+1]));}}else s.push(C({fixed:0,stretch:-1},{fixed:0,stretch:-1},{fixed:0,stretch:l+1},{fixed:0,stretch:u+1}));return s}function tp(t,e,r){let n=0;for(const i of t)n+=Math.max(e,Math.min(r,i[1]))-Math.max(e,Math.min(r,i[0]));return n}function ep(t,e,r){const n=[{fixed:-1,stretch:0}];for(const[e,r]of t){const t=n[n.length-1];n.push({fixed:e-t.stretch,stretch:t.stretch}),n.push({fixed:e-t.stretch,stretch:t.stretch+(r-e)});}return n.push({fixed:e+1,stretch:r}),n}function rp(t,e,r,n){return t/e*r+n}function np(t,e,r,n){return t-e*r/n}ls(\"Anchor\",Gh);class ip{constructor(t,e,n,i,s,a,o,l,u,c){var h;if(this.boxStartIndex=t.length,u){let t=a.top,e=a.bottom;const r=a.collisionPadding;r&&(t-=r[1],e+=r[3]);let n=e-t;n>0&&(n=Math.max(10,n),this.circleDiameter=n);}else {const u=(null===(h=a.image)||void 0===h?void 0:h.content)&&(a.image.textFitWidth||a.image.textFitHeight)?Wc(a):{x1:a.left,y1:a.top,x2:a.right,y2:a.bottom};u.y1=u.y1*o-l[0],u.y2=u.y2*o+l[2],u.x1=u.x1*o-l[3],u.x2=u.x2*o+l[1];const p=a.collisionPadding;if(p&&(u.x1-=p[0]*o,u.y1-=p[1]*o,u.x2+=p[2]*o,u.y2+=p[3]*o),c){const t=new r(u.x1,u.y1),e=new r(u.x2,u.y1),n=new r(u.x1,u.y2),i=new r(u.x2,u.y2),s=c*Math.PI/180;t._rotate(s),e._rotate(s),n._rotate(s),i._rotate(s),u.x1=Math.min(t.x,e.x,n.x,i.x),u.x2=Math.max(t.x,e.x,n.x,i.x),u.y1=Math.min(t.y,e.y,n.y,i.y),u.y2=Math.max(t.y,e.y,n.y,i.y);}t.emplaceBack(e.x,e.y,u.x1,u.y1,u.x2,u.y2,n,i,s);}this.boxEndIndex=t.length;}}class sp{constructor(t=[],e=(t,e)=>t<e?-1:t>e?1:0){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let t=(this.length>>1)-1;t>=0;t--)this._down(t);}push(t){this.data.push(t),this._up(this.length++);}pop(){if(0===this.length)return;const t=this.data[0],e=this.data.pop();return --this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){const{data:e,compare:r}=this,n=e[t];for(;t>0;){const i=t-1>>1,s=e[i];if(r(n,s)>=0)break;e[t]=s,t=i;}e[t]=n;}_down(t){const{data:e,compare:r}=this,n=this.length>>1,i=e[t];for(;t<n;){let n=1+(t<<1);const s=n+1;if(s<this.length&&r(e[s],e[n])<0&&(n=s),r(e[n],i)>=0)break;e[t]=e[n],t=n;}e[t]=i;}}function ap(t,e=1,n=!1){const i=Lh.fromPoints(t[0]),s=Math.min(i.width(),i.height());let a=s/2;const o=new sp([],op),{minX:l,minY:u,maxX:c,maxY:h}=i;if(0===s)return new r(l,u);for(let e=l;e<c;e+=s)for(let r=u;r<h;r+=s)o.push(new lp(e+a,r+a,a,t));let p=function(t){let e=0,r=0,n=0;const i=t[0];for(let t=0,s=i.length,a=s-1;t<s;a=t++){const s=i[t],o=i[a],l=s.x*o.y-o.x*s.y;r+=(s.x+o.x)*l,n+=(s.y+o.y)*l,e+=3*l;}return new lp(r/e,n/e,0,t)}(t),f=o.length;for(;o.length;){const r=o.pop();(r.d>p.d||!p.d)&&(p=r,n&&console.log(\"found best %d after %d probes\",Math.round(1e4*r.d)/1e4,f)),r.max-p.d<=e||(a=r.h/2,o.push(new lp(r.p.x-a,r.p.y-a,a,t)),o.push(new lp(r.p.x+a,r.p.y-a,a,t)),o.push(new lp(r.p.x-a,r.p.y+a,a,t)),o.push(new lp(r.p.x+a,r.p.y+a,a,t)),f+=4);}return n&&(console.log(`num probes: ${f}`),console.log(`best distance: ${p.d}`)),p.p}function op(t,e){return e.max-t.max}function lp(t,e,n,i){this.p=new r(t,e),this.h=n,this.d=function(t,e){let r=!1,n=1/0;for(let i=0;i<e.length;i++){const s=e[i];for(let e=0,i=s.length,a=i-1;e<i;a=e++){const i=s[e],o=s[a];i.y>t.y!=o.y>t.y&&t.x<(o.x-i.x)*(t.y-i.y)/(o.y-i.y)+i.x&&(r=!r),n=Math.min(n,Yo(t,i,o));}}return (r?1:-1)*Math.sqrt(n)}(this.p,i),this.max=this.d+this.h*Math.SQRT2;}var up;t.aE=void 0,(up=t.aE||(t.aE={}))[up.center=1]=\"center\",up[up.left=2]=\"left\",up[up.right=3]=\"right\",up[up.top=4]=\"top\",up[up.bottom=5]=\"bottom\",up[up[\"top-left\"]=6]=\"top-left\",up[up[\"top-right\"]=7]=\"top-right\",up[up[\"bottom-left\"]=8]=\"bottom-left\",up[up[\"bottom-right\"]=9]=\"bottom-right\";const cp=Number.POSITIVE_INFINITY;function hp(t,e){return e[1]!==cp?function(t,e,r){let n=0,i=0;switch(e=Math.abs(e),r=Math.abs(r),t){case \"top-right\":case \"top-left\":case \"top\":i=r-7;break;case \"bottom-right\":case \"bottom-left\":case \"bottom\":i=7-r;}switch(t){case \"top-right\":case \"bottom-right\":case \"right\":n=-e;break;case \"top-left\":case \"bottom-left\":case \"left\":n=e;}return [n,i]}(t,e[0],e[1]):function(t,e){let r=0,n=0;e<0&&(e=0);const i=e/Math.SQRT2;switch(t){case \"top-right\":case \"top-left\":n=i-7;break;case \"bottom-right\":case \"bottom-left\":n=7-i;break;case \"bottom\":n=7-e;break;case \"top\":n=e-7;}switch(t){case \"top-right\":case \"bottom-right\":r=-i;break;case \"top-left\":case \"bottom-left\":r=i;break;case \"left\":r=e;break;case \"right\":r=-e;}return [r,n]}(t,e[0])}function pp(t,e,r){var n;const i=t.layout,s=null===(n=i.get(\"text-variable-anchor-offset\"))||void 0===n?void 0:n.evaluate(e,{},r);if(s){const t=s.values,e=[];for(let r=0;r<t.length;r+=2){const n=e[r]=t[r],i=t[r+1].map((t=>t*uc));n.startsWith(\"top\")?i[1]-=7:n.startsWith(\"bottom\")&&(i[1]+=7),e[r+1]=i;}return new $e(e)}const a=i.get(\"text-variable-anchor\");if(a){let n;n=void 0!==t._unevaluatedLayout.getValue(\"text-radial-offset\")?[i.get(\"text-radial-offset\").evaluate(e,{},r)*uc,cp]:i.get(\"text-offset\").evaluate(e,{},r).map((t=>t*uc));const s=[];for(const t of a)s.push(t,hp(t,n));return new $e(s)}return null}function fp(t){switch(t){case \"right\":case \"top-right\":case \"bottom-right\":return \"right\";case \"left\":case \"top-left\":case \"bottom-left\":return \"left\"}return \"center\"}function dp(e,r,n,i,s,a,o,l,u,c,h,p){let f=a.textMaxSize.evaluate(r,{});void 0===f&&(f=o);const d=e.layers[0].layout,y=d.get(\"icon-offset\").evaluate(r,{},h),m=mp(n.horizontal),g=o/24,x=e.tilePixelRatio*g,v=e.tilePixelRatio*f/24,b=e.tilePixelRatio*l,w=e.tilePixelRatio*d.get(\"symbol-spacing\"),_=d.get(\"text-padding\")*e.tilePixelRatio,S=function(t,e,r,n=1){const i=t.get(\"icon-padding\").evaluate(e,{},r),s=i&&i.values;return [s[0]*n,s[1]*n,s[2]*n,s[3]*n]}(d,r,h,e.tilePixelRatio),A=d.get(\"text-max-angle\")/180*Math.PI,k=\"viewport\"!==d.get(\"text-rotation-alignment\")&&\"point\"!==d.get(\"symbol-placement\"),M=\"map\"===d.get(\"icon-rotation-alignment\")&&\"point\"!==d.get(\"symbol-placement\"),I=d.get(\"symbol-placement\"),z=w/2,C=d.get(\"icon-text-fit\");let E;i&&\"none\"!==C&&(e.allowVerticalPlacement&&n.vertical&&(E=Qc(i,n.vertical,C,d.get(\"icon-text-fit-padding\"),y,g)),m&&(i=Qc(i,m,C,d.get(\"icon-text-fit-padding\"),y,g)));const T=h?p.line.getGranularityForZoomLevel(h.z):1,B=(l,p)=>{p.x<0||p.x>=P||p.y<0||p.y>=P||function(e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,S,A,k){const M=e.addToLineVertexArray(r,n);let I,z,P,C,E=0,T=0,B=0,V=0,F=-1,D=-1;const $={};let L=ho(\"\");if(e.allowVerticalPlacement&&i.vertical){const t=l.layout.get(\"text-rotate\").evaluate(w,{},A)+90;P=new ip(u,r,c,h,p,i.vertical,f,d,y,t),o&&(C=new ip(u,r,c,h,p,o,g,x,y,t));}if(s){const n=l.layout.get(\"icon-rotate\").evaluate(w,{}),i=\"none\"!==l.layout.get(\"icon-text-fit\"),a=Qh(s,n,S,i),f=o?Qh(o,n,S,i):void 0;z=new ip(u,r,c,h,p,s,g,x,!1,n),E=4*a.length;const d=e.iconSizeData;let y=null;\"source\"===d.kind?(y=[th*l.layout.get(\"icon-size\").evaluate(w,{})],y[0]>eh&&q(`${e.layerIds[0]}: Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".`)):\"composite\"===d.kind&&(y=[th*_.compositeIconSizes[0].evaluate(w,{},A),th*_.compositeIconSizes[1].evaluate(w,{},A)],(y[0]>eh||y[1]>eh)&&q(`${e.layerIds[0]}: Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".`)),e.addSymbols(e.icon,a,y,b,v,w,t.ao.none,r,M.lineStartIndex,M.lineLength,-1,A),F=e.icon.placedSymbolArray.length-1,f&&(T=4*f.length,e.addSymbols(e.icon,f,y,b,v,w,t.ao.vertical,r,M.lineStartIndex,M.lineLength,-1,A),D=e.icon.placedSymbolArray.length-1);}const O=Object.keys(i.horizontal);for(const n of O){const s=i.horizontal[n];if(!I){L=ho(s.text);const t=l.layout.get(\"text-rotate\").evaluate(w,{},A);I=new ip(u,r,c,h,p,s,f,d,y,t);}const o=1===s.positionedLines.length;if(B+=yp(e,r,s,a,l,y,w,m,M,i.vertical?t.ao.horizontal:t.ao.horizontalOnly,o?O:[n],$,F,_,A),o)break}i.vertical&&(V+=yp(e,r,i.vertical,a,l,y,w,m,M,t.ao.vertical,[\"vertical\"],$,D,_,A));const R=I?I.boxStartIndex:e.collisionBoxArray.length,U=I?I.boxEndIndex:e.collisionBoxArray.length,j=P?P.boxStartIndex:e.collisionBoxArray.length,N=P?P.boxEndIndex:e.collisionBoxArray.length,G=z?z.boxStartIndex:e.collisionBoxArray.length,X=z?z.boxEndIndex:e.collisionBoxArray.length,Z=C?C.boxStartIndex:e.collisionBoxArray.length,Y=C?C.boxEndIndex:e.collisionBoxArray.length;let H=-1;const K=(t,e)=>t&&t.circleDiameter?Math.max(t.circleDiameter,e):e;H=K(I,H),H=K(P,H),H=K(z,H),H=K(C,H);const J=H>-1?1:0;J&&(H*=k/uc),e.glyphOffsetArray.length>=ch.MAX_GLYPHS&&q(\"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\"),void 0!==w.sortKey&&e.addToSortKeyRanges(e.symbolInstances.length,w.sortKey);const W=pp(l,w,A),[Q,tt]=function(e,r){const n=e.length,i=null==r?void 0:r.values;if((null==i?void 0:i.length)>0)for(let r=0;r<i.length;r+=2){const n=i[r+1];e.emplaceBack(t.aE[i[r]],n[0],n[1]);}return [n,e.length]}(e.textAnchorOffsets,W);e.symbolInstances.emplaceBack(r.x,r.y,$.right>=0?$.right:-1,$.center>=0?$.center:-1,$.left>=0?$.left:-1,$.vertical||-1,F,D,L,R,U,j,N,G,X,Z,Y,c,B,V,E,T,J,0,f,H,Q,tt);}(e,p,l,n,i,s,E,e.layers[0],e.collisionBoxArray,r.index,r.sourceLayerIndex,e.index,x,[_,_,_,_],k,u,b,S,M,y,r,a,c,h,o);};if(\"line\"===I)for(const t of qh(r.geometry,0,0,P,P)){const r=pu(t,T),s=Jh(r,w,A,n.vertical||m,i,24,v,e.overscaling,P);for(const t of s)m&&gp(e,m.text,z,t)||B(r,t);}else if(\"line-center\"===I){for(const t of r.geometry)if(t.length>1){const e=pu(t,T),r=Kh(e,A,n.vertical||m,i,24,v);r&&B(e,r);}}else if(\"Polygon\"===r.type)for(const t of tn(r.geometry,0)){const e=ap(t,16);B(pu(t[0],T,!0),new Gh(e.x,e.y,0));}else if(\"LineString\"===r.type)for(const t of r.geometry){const e=pu(t,T);B(e,new Gh(e[0].x,e[0].y,0));}else if(\"Point\"===r.type)for(const t of r.geometry)for(const e of t)B([e],new Gh(e.x,e.y,0));}function yp(t,e,n,i,s,a,o,l,u,c,h,p,f,d,y){const m=function(t,e,n,i,s,a,o,l){const u=i.layout.get(\"text-rotate\").evaluate(a,{})*Math.PI/180,c=[];for(const t of e.positionedLines)for(const i of t.positionedGlyphs){if(!i.rect)continue;const a=i.rect||{};let h=4,p=!0,f=1,d=0;const y=(s||l)&&i.vertical,m=i.metrics.advance*i.scale/2;if(l&&e.verticalizable&&(d=t.lineOffset/2-(i.imageName?-(uc-i.metrics.width*i.scale)/2:(i.scale-1)*uc)),i.imageName){const t=o[i.imageName];p=t.sdf,f=t.pixelRatio,h=1/f;}const g=s?[i.x+m,i.y]:[0,0];let x=s?[0,0]:[i.x+m+n[0],i.y+n[1]-d],v=[0,0];y&&(v=x,x=[0,0]);const b=i.metrics.isDoubleResolution?2:1,w=(i.metrics.left-h)*i.scale-m+x[0],_=(-i.metrics.top-h)*i.scale+x[1],S=w+a.w/b*i.scale/f,A=_+a.h/b*i.scale/f,k=new r(w,_),M=new r(S,_),I=new r(w,A),z=new r(S,A);if(y){const t=new r(-m,m- -17),e=-Math.PI/2,n=12-m,s=new r(22-n,-(i.imageName?n:0)),a=new r(...v);k._rotateAround(e,t)._add(s)._add(a),M._rotateAround(e,t)._add(s)._add(a),I._rotateAround(e,t)._add(s)._add(a),z._rotateAround(e,t)._add(s)._add(a);}if(u){const t=Math.sin(u),e=Math.cos(u),r=[e,-t,t,e];k._matMult(r),M._matMult(r),I._matMult(r),z._matMult(r);}const P=new r(0,0),C=new r(0,0);c.push({tl:k,tr:M,bl:I,br:z,tex:a,writingMode:e.writingMode,glyphOffset:g,sectionIndex:i.sectionIndex,isSDF:p,pixelOffsetTL:P,pixelOffsetBR:C,minFontScaleX:0,minFontScaleY:0});}return c}(0,n,l,s,a,o,i,t.allowVerticalPlacement),g=t.textSizeData;let x=null;\"source\"===g.kind?(x=[th*s.layout.get(\"text-size\").evaluate(o,{})],x[0]>eh&&q(`${t.layerIds[0]}: Value for \"text-size\" is >= 255. Reduce your \"text-size\".`)):\"composite\"===g.kind&&(x=[th*d.compositeTextSizes[0].evaluate(o,{},y),th*d.compositeTextSizes[1].evaluate(o,{},y)],(x[0]>eh||x[1]>eh)&&q(`${t.layerIds[0]}: Value for \"text-size\" is >= 255. Reduce your \"text-size\".`)),t.addSymbols(t.text,m,x,l,a,o,c,e,u.lineStartIndex,u.lineLength,f,y);for(const e of h)p[e]=t.text.placedSymbolArray.length-1;return 4*m.length}function mp(t){for(const e in t)return t[e];return null}function gp(t,e,r,n){const i=t.compareText;if(e in i){const t=i[e];for(let e=t.length-1;e>=0;e--)if(n.dist(t[e])<r)return !0}else i[e]=[];return i[e].push(n),!1}const xp=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];class vp{static from(t){if(!(t instanceof ArrayBuffer))throw new Error(\"Data must be an instance of ArrayBuffer.\");const[e,r]=new Uint8Array(t,0,2);if(219!==e)throw new Error(\"Data does not appear to be in a KDBush format.\");const n=r>>4;if(1!==n)throw new Error(`Got v${n} data when expected v1.`);const i=xp[15&r];if(!i)throw new Error(\"Unrecognized array type.\");const[s]=new Uint16Array(t,2,1),[a]=new Uint32Array(t,4,1);return new vp(a,s,i,t)}constructor(t,e=64,r=Float64Array,n){if(isNaN(t)||t<0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+e,2),65535),this.ArrayType=r,this.IndexArrayType=t<65536?Uint16Array:Uint32Array;const i=xp.indexOf(this.ArrayType),s=2*t*this.ArrayType.BYTES_PER_ELEMENT,a=t*this.IndexArrayType.BYTES_PER_ELEMENT,o=(8-a%8)%8;if(i<0)throw new Error(`Unexpected typed array class: ${r}.`);n&&n instanceof ArrayBuffer?(this.data=n,this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+a+o,2*t),this._pos=2*t,this._finished=!0):(this.data=new ArrayBuffer(8+s+a+o),this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+a+o,2*t),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+i]),new Uint16Array(this.data,2,1)[0]=e,new Uint32Array(this.data,4,1)[0]=t);}add(t,e){const r=this._pos>>1;return this.ids[r]=r,this.coords[this._pos++]=t,this.coords[this._pos++]=e,r}finish(){const t=this._pos>>1;if(t!==this.numItems)throw new Error(`Added ${t} items when expected ${this.numItems}.`);return bp(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(t,e,r,n){if(!this._finished)throw new Error(\"Data not yet indexed - call index.finish().\");const{ids:i,coords:s,nodeSize:a}=this,o=[0,i.length-1,0],l=[];for(;o.length;){const u=o.pop()||0,c=o.pop()||0,h=o.pop()||0;if(c-h<=a){for(let a=h;a<=c;a++){const o=s[2*a],u=s[2*a+1];o>=t&&o<=r&&u>=e&&u<=n&&l.push(i[a]);}continue}const p=h+c>>1,f=s[2*p],d=s[2*p+1];f>=t&&f<=r&&d>=e&&d<=n&&l.push(i[p]),(0===u?t<=f:e<=d)&&(o.push(h),o.push(p-1),o.push(1-u)),(0===u?r>=f:n>=d)&&(o.push(p+1),o.push(c),o.push(1-u));}return l}within(t,e,r){if(!this._finished)throw new Error(\"Data not yet indexed - call index.finish().\");const{ids:n,coords:i,nodeSize:s}=this,a=[0,n.length-1,0],o=[],l=r*r;for(;a.length;){const u=a.pop()||0,c=a.pop()||0,h=a.pop()||0;if(c-h<=s){for(let r=h;r<=c;r++)Ap(i[2*r],i[2*r+1],t,e)<=l&&o.push(n[r]);continue}const p=h+c>>1,f=i[2*p],d=i[2*p+1];Ap(f,d,t,e)<=l&&o.push(n[p]),(0===u?t-r<=f:e-r<=d)&&(a.push(h),a.push(p-1),a.push(1-u)),(0===u?t+r>=f:e+r>=d)&&(a.push(p+1),a.push(c),a.push(1-u));}return o}}function bp(t,e,r,n,i,s){if(i-n<=r)return;const a=n+i>>1;wp(t,e,a,n,i,s),bp(t,e,r,n,a-1,1-s),bp(t,e,r,a+1,i,1-s);}function wp(t,e,r,n,i,s){for(;i>n;){if(i-n>600){const a=i-n+1,o=r-n+1,l=Math.log(a),u=.5*Math.exp(2*l/3),c=.5*Math.sqrt(l*u*(a-u)/a)*(o-a/2<0?-1:1);wp(t,e,r,Math.max(n,Math.floor(r-o*u/a+c)),Math.min(i,Math.floor(r+(a-o)*u/a+c)),s);}const a=e[2*r+s];let o=n,l=i;for(_p(t,e,n,r),e[2*i+s]>a&&_p(t,e,n,i);o<l;){for(_p(t,e,o,l),o++,l--;e[2*o+s]<a;)o++;for(;e[2*l+s]>a;)l--;}e[2*n+s]===a?_p(t,e,n,l):(l++,_p(t,e,l,i)),l<=r&&(n=l+1),r<=l&&(i=l-1);}}function _p(t,e,r,n){Sp(t,r,n),Sp(e,2*r,2*n),Sp(e,2*r+1,2*n+1);}function Sp(t,e,r){const n=t[e];t[e]=t[r],t[r]=n;}function Ap(t,e,r,n){const i=t-r,s=e-n;return i*i+s*s}var kp;t.cx=void 0,(kp=t.cx||(t.cx={})).create=\"create\",kp.load=\"load\",kp.fullLoad=\"fullLoad\";let Mp=null,Ip=[];const zp=1e3/60,Pp=\"loadTime\",Cp=\"fullLoadTime\",Ep={mark(t){performance.mark(t);},frame(t){const e=t;null!=Mp&&Ip.push(e-Mp),Mp=e;},clearMetrics(){Mp=null,Ip=[],performance.clearMeasures(Pp),performance.clearMeasures(Cp);for(const e in t.cx)performance.clearMarks(t.cx[e]);},getPerformanceMetrics(){performance.measure(Pp,t.cx.create,t.cx.load),performance.measure(Cp,t.cx.create,t.cx.fullLoad);const e=performance.getEntriesByName(Pp)[0].duration,r=performance.getEntriesByName(Cp)[0].duration,n=Ip.length,i=1/(Ip.reduce(((t,e)=>t+e),0)/n/1e3),s=Ip.filter((t=>t>zp)).reduce(((t,e)=>t+(e-zp)/zp),0);return {loadTime:e,fullLoadTime:r,fps:i,percentDroppedFrames:s/(n+s)*100,totalFrames:n}}};t.$=P,t.A=f,t.B=function([t,e,r]){return e+=90,e*=Math.PI/180,r*=Math.PI/180,{x:t*Math.cos(e)*Math.sin(r),y:t*Math.sin(e)*Math.sin(r),z:t*Math.cos(r)}},t.C=yr,t.D=Os,t.E=xt,t.F=Ps,t.G=rs,t.H=Y,t.I=Pc,t.J=class{constructor(t,e){this.target=t,this.mapId=e,this.resolveRejects={},this.tasks={},this.taskQueue=[],this.abortControllers={},this.messageHandlers={},this.invoker=new bh((()=>this.process())),this.subscription=tt(this.target,\"message\",(t=>this.receive(t)),!1),this.globalScope=X(self)?t:window;}registerMessageHandler(t,e){this.messageHandlers[t]=e;}sendAsync(t,e){return new Promise(((r,n)=>{const i=Math.round(1e18*Math.random()).toString(36).substring(0,10),s=e?tt(e.signal,\"abort\",(()=>{null==s||s.unsubscribe(),delete this.resolveRejects[i];const e={id:i,type:\"<cancel>\",origin:location.origin,targetMapId:t.targetMapId,sourceMapId:this.mapId};this.target.postMessage(e);}),wh):null;this.resolveRejects[i]={resolve:t=>{null==s||s.unsubscribe(),r(t);},reject:t=>{null==s||s.unsubscribe(),n(t);}};const a=[],o=Object.assign(Object.assign({},t),{id:i,sourceMapId:this.mapId,origin:location.origin,data:ps(t.data,a)});this.target.postMessage(o,{transfer:a});}))}receive(t){const e=t.data,r=e.id;if(!(\"file://\"!==e.origin&&\"file://\"!==location.origin&&\"resource://android\"!==e.origin&&\"resource://android\"!==location.origin&&e.origin!==location.origin||e.targetMapId&&this.mapId!==e.targetMapId)){if(\"<cancel>\"===e.type){delete this.tasks[r];const t=this.abortControllers[r];return delete this.abortControllers[r],void(t&&t.abort())}if(X(self)||e.mustQueue)return this.tasks[r]=e,this.taskQueue.push(r),void this.invoker.trigger();this.processTask(r,e);}}process(){if(0===this.taskQueue.length)return;const t=this.taskQueue.shift(),e=this.tasks[t];delete this.tasks[t],this.taskQueue.length>0&&this.invoker.trigger(),e&&this.processTask(t,e);}processTask(t,r){return e(this,void 0,void 0,(function*(){if(\"<response>\"===r.type){const e=this.resolveRejects[t];if(delete this.resolveRejects[t],!e)return;return void(r.error?e.reject(fs(r.error)):e.resolve(fs(r.data)))}if(!this.messageHandlers[r.type])return void this.completeTask(t,new Error(`Could not find a registered handler for ${r.type}, map ID: ${this.mapId}, available handlers: ${Object.keys(this.messageHandlers).join(\", \")}`));const e=fs(r.data),n=new AbortController;this.abortControllers[t]=n;try{const i=yield this.messageHandlers[r.type](r.sourceMapId,e,n);this.completeTask(t,null,i);}catch(e){this.completeTask(t,e);}}))}completeTask(t,e,r){const n=[];delete this.abortControllers[t];const i={id:t,type:\"<response>\",sourceMapId:this.mapId,origin:location.origin,error:e?ps(e):null,data:ps(r,n)};this.target.postMessage(i,{transfer:n});}remove(){this.invoker.remove(),this.subscription.unsubscribe();}},t.K=ut,t.L=function(){var t=new f(16);return f!=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},t.M=function(t,e,r){var n,i,s,a,o,l,u,c,h,p,f,d,y=r[0],m=r[1],g=r[2];return e===t?(t[12]=e[0]*y+e[4]*m+e[8]*g+e[12],t[13]=e[1]*y+e[5]*m+e[9]*g+e[13],t[14]=e[2]*y+e[6]*m+e[10]*g+e[14],t[15]=e[3]*y+e[7]*m+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*y+o*m+h*g+e[12],t[13]=i*y+l*m+p*g+e[13],t[14]=s*y+u*m+f*g+e[14],t[15]=a*y+c*m+d*g+e[15]),t},t.N=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},t.O=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=e[9],f=e[10],d=e[11],y=e[12],m=e[13],g=e[14],x=e[15],v=r[0],b=r[1],w=r[2],_=r[3];return t[0]=v*n+b*o+w*h+_*y,t[1]=v*i+b*l+w*p+_*m,t[2]=v*s+b*u+w*f+_*g,t[3]=v*a+b*c+w*d+_*x,t[4]=(v=r[4])*n+(b=r[5])*o+(w=r[6])*h+(_=r[7])*y,t[5]=v*i+b*l+w*p+_*m,t[6]=v*s+b*u+w*f+_*g,t[7]=v*a+b*c+w*d+_*x,t[8]=(v=r[8])*n+(b=r[9])*o+(w=r[10])*h+(_=r[11])*y,t[9]=v*i+b*l+w*p+_*m,t[10]=v*s+b*u+w*f+_*g,t[11]=v*a+b*c+w*d+_*x,t[12]=(v=r[12])*n+(b=r[13])*o+(w=r[14])*h+(_=r[15])*y,t[13]=v*i+b*l+w*p+_*m,t[14]=v*s+b*u+w*f+_*g,t[15]=v*a+b*c+w*d+_*x,t},t.P=r,t.Q=function(t,e){const r={};for(let n=0;n<e.length;n++){const i=e[n];i in t&&(r[i]=t[i]);}return r},t.R=xl,t.S=Sh,t.T=Il,t.U=Ih,t.V=Mh,t.W=c,t.X=h,t.Y=J,t.Z=Fh,t._=e,t.a=ot,t.a$=S,t.a0=function(t,e){var r,n,i,s,a;if(!t)return null!=e?e:{};if(!e)return t;let o=Object.assign({},t);if(e.removeAll&&(o={removeAll:!0}),e.remove){const n=new Set(e.remove);o.add&&(o.add=o.add.filter((t=>!n.has(t.id)))),o.update&&(o.update=o.update.filter((t=>!n.has(t.id))));const i=new Set((null!==(r=t.add)&&void 0!==r?r:[]).map((t=>t.id)));e.remove=e.remove.filter((t=>!i.has(t)));}if(e.remove){const t=new Set(o.remove?o.remove.concat(e.remove):e.remove);o.remove=Array.from(t.values());}if(e.add){const t=o.add?o.add.concat(e.add):e.add,r=new Map(t.map((t=>[t.id,t])));o.add=Array.from(r.values());}if(e.update){const t=new Map(null===(n=o.update)||void 0===n?void 0:n.map((t=>[t.id,t])));for(const r of e.update){const e=null!==(i=t.get(r.id))&&void 0!==i?i:{id:r.id};r.newGeometry&&(e.newGeometry=r.newGeometry),r.addOrUpdateProperties&&(e.addOrUpdateProperties=(null!==(s=e.addOrUpdateProperties)&&void 0!==s?s:[]).concat(r.addOrUpdateProperties)),r.removeProperties&&(e.removeProperties=(null!==(a=e.removeProperties)&&void 0!==a?a:[]).concat(r.removeProperties)),r.removeAllProperties&&(e.removeAllProperties=!0),t.set(r.id,e);}o.update=Array.from(t.values());}return o.remove&&o.add&&(o.remove=o.remove.filter((t=>-1===o.add.findIndex((e=>e.id===t))))),o},t.a1=Eh,t.a2=Lh,t.a3=25,t.a4=Bh,t.a5=t=>{const e=window.document.createElement(\"video\");return e.muted=!0,new Promise((r=>{e.onloadstart=()=>{r(e);};for(const r of t){const t=window.document.createElement(\"source\");ft(r)||(e.crossOrigin=\"Anonymous\"),t.src=r,e.appendChild(t);}}))},t.a6=Et,t.a7=function(){return O++},t.a8=Ma,t.a9=ch,t.aA=function(t){let e=1/0,r=1/0,n=-1/0,i=-1/0;for(const s of t)e=Math.min(e,s.x),r=Math.min(r,s.y),n=Math.max(n,s.x),i=Math.max(i,s.y);return [e,r,n,i]},t.aB=uc,t.aC=C,t.aD=function(t,e,r,n,i=!1){if(!r[0]&&!r[1])return [0,0];const s=i?\"map\"===n?-t.bearingInRadians:0:\"viewport\"===n?t.bearingInRadians:0;if(s){const t=Math.sin(s),e=Math.cos(s);r=[r[0]*e-r[1]*t,r[0]*t+r[1]*e];}return [i?r[0]:C(e,r[0],t.zoom),i?r[1]:C(e,r[1],t.zoom)]},t.aF=nh,t.aG=fp,t.aH=qc,t.aI=vp,t.aJ=Qs,t.aK=ou,t.aL=$a,t.aM=to,t.aN=Ka,t.aO=$,t.aP=rt,t.aQ=Ch,t.aR=b,t.aS=v,t.aT=function(t){var e=new f(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e},t.aU=function(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t},t.aV=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},t.aW=w,t.aX=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},t.aY=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},t.aZ=g,t.a_=function(t,e,r){const n=e[0]*r[0]+e[1]*r[1]+e[2]*r[2];return 0===n?null:(-(t[0]*r[0]+t[1]*r[1]+t[2]*r[2])-r[3])/n},t.aa=fi,t.ab=$o,t.ac=Rh,t.ad=function(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},t.ae=D,t.af=85.051129,t.ag=et,t.ah=function(t){return Math.pow(2,t)},t.ai=y,t.aj=zh,t.ak=function(t){return Math.log(t)/Math.LN2},t.al=function(t){var e=t[0],r=t[1];return e*e+r*r},t.am=function(t){if(!t.length)return new Set;const e=Math.max(...t.map((t=>t.canonical.z)));let r=1/0,n=-1/0,i=1/0,s=-1/0;const a=[];for(const o of t){const{x:t,y:l,z:u}=o.canonical,c=Math.pow(2,e-u),h=t*c,p=l*c;a.push({id:o,x:h,y:p}),h<r&&(r=h),h>n&&(n=h),p<i&&(i=p),p>s&&(s=p);}const o=new Set;for(const t of a)t.x!==r&&t.x!==n&&t.y!==i&&t.y!==s||o.add(t.id);return o},t.an=function(t,e){let r=0,n=0;if(\"constant\"===t.kind)n=t.layoutSize;else if(\"source\"!==t.kind){const{interpolationType:i,minZoom:s,maxZoom:a}=t,o=i?D(fr.interpolationFactor(i,e,s,a),0,1):0;\"camera\"===t.kind?n=yr.number(t.minSize,t.maxSize,o):r=o;}return {uSizeT:r,uSize:n}},t.ap=function(t,{uSize:e,uSizeT:r},{lowerSize:n,upperSize:i}){return \"source\"===t.kind?n/th:\"composite\"===t.kind?yr.number(n/th,i/th,r):e},t.aq=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],y=e[13],m=e[14],g=e[15],x=r*o-n*a,v=r*l-i*a,b=r*u-s*a,w=n*l-i*o,_=n*u-s*o,S=i*u-s*l,A=c*y-h*d,k=c*m-p*d,M=c*g-f*d,I=h*m-p*y,z=h*g-f*y,P=p*g-f*m,C=x*P-v*z+b*I+w*M-_*k+S*A;return C?(t[0]=(o*P-l*z+u*I)*(C=1/C),t[1]=(i*z-n*P-s*I)*C,t[2]=(y*S-m*_+g*w)*C,t[3]=(p*_-h*S-f*w)*C,t[4]=(l*M-a*P-u*k)*C,t[5]=(r*P-i*M+s*k)*C,t[6]=(m*b-d*S-g*v)*C,t[7]=(c*S-p*b+f*v)*C,t[8]=(a*z-o*M+u*A)*C,t[9]=(n*M-r*z-s*A)*C,t[10]=(d*_-y*b+g*x)*C,t[11]=(h*b-c*_-f*x)*C,t[12]=(o*k-a*I-l*A)*C,t[13]=(r*I-n*k+i*A)*C,t[14]=(y*v-d*w-m*x)*C,t[15]=(c*w-h*v+p*x)*C,t):null},t.ar=I,t.as=function(t){var e=t[0],r=t[1];return Math.sqrt(e*e+r*r)},t.at=function(t){return t[0]=0,t[1]=0,t},t.au=function(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t},t.av=ah,t.aw=A,t.ax=function(t,e,n,i){const s=e.y-t.y,a=e.x-t.x,o=i.y-n.y,l=i.x-n.x,u=o*a-l*s;if(0===u)return null;const c=(l*(t.y-n.y)-o*(t.x-n.x))/u;return new r(t.x+c*a,t.y+c*s)},t.ay=qh,t.az=Uo,t.b=H,t.b$=class extends go{constructor(t,e){super(t,e),this.current=new Array;}set(t){if(t!=this.current){this.current=t;const e=new Float32Array(t);this.gl.uniform1fv(this.location,e);}}},t.b0=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},t.b1=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]},t.b2=Vh,t.b3=Dh,t.b4=function(t,e,r,n,i){var s=1/Math.tan(e/2);if(t[0]=s/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=s,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){var a=1/(n-i);t[10]=(i+n)*a,t[14]=2*i*n*a;}else t[10]=-1,t[14]=-2*n;return t},t.b5=function(t){var e=new f(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},t.b6=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},t.b7=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},t.b8=function(){const t=new Float32Array(16);return y(t),t},t.b9=function(){const t=new Float64Array(16);return y(t),t},t.bA=function(t,e){const r=E(t,360),n=E(e,360),i=n-r,s=n>r?i-360:i+360;return Math.abs(i)<Math.abs(s)?i:s},t.bB=function(t){return t[0]=0,t[1]=0,t[2]=0,t},t.bC=function(t,e,r,n){const i=Math.sqrt(t*t+e*e),s=Math.sqrt(r*r+n*n);t/=i,e/=i,r/=s,n/=s;const a=Math.acos(t*r+e*n);return -e*r+t*n>0?a:-a},t.bD=function(t,e){const r=E(t,2*Math.PI),n=E(e,2*Math.PI);return Math.min(Math.abs(r-n),Math.abs(r-n+2*Math.PI),Math.abs(r-n-2*Math.PI))},t.bE=function(){const t={},e=vt.$version;for(const r in vt.$root){const n=vt.$root[r];if(n.required){let i=null;i=\"version\"===r?e:\"array\"===n.type?[]:{},null!=i&&(t[r]=i);}}return t},t.bF=ds,t.bG=ht,t.bH=function t(e,r){if(Array.isArray(e)){if(!Array.isArray(r)||e.length!==r.length)return !1;for(let n=0;n<e.length;n++)if(!t(e[n],r[n]))return !1;return !0}if(\"object\"==typeof e&&null!==e&&null!==r){if(\"object\"!=typeof r)return !1;if(Object.keys(e).length!==Object.keys(r).length)return !1;for(const n in e)if(!t(e[n],r[n]))return !1;return !0}return e===r},t.bI=function(t){t=t.slice();const e=Object.create(null);for(let r=0;r<t.length;r++)e[t[r].id]=t[r];for(let r=0;r<t.length;r++)\"ref\"in t[r]&&(t[r]=wt(t[r],e[t[r].ref]));return t},t.bJ=function(t,e){if(\"custom\"===t.type)return new vh(t,e);switch(t.type){case \"background\":return new xh(t,e);case \"circle\":return new cl(t,e);case \"color-relief\":return new Cl(t,e);case \"fill\":return new bu(t,e);case \"fill-extrusion\":return new Ou(t,e);case \"heatmap\":return new wl(t,e);case \"hillshade\":return new Al(t,e);case \"line\":return new tc(t,e);case \"raster\":return new Hs(t,e);case \"symbol\":return new yh(t,e)}},t.bK=t=>\"raster\"===t.type,t.bL=j,t.bM=function(t,e){if(!t)return [{command:\"setStyle\",args:[e]}];let r=[];try{if(!_t(t.version,e.version))return [{command:\"setStyle\",args:[e]}];_t(t.center,e.center)||r.push({command:\"setCenter\",args:[e.center]}),_t(t.state,e.state)||r.push({command:\"setGlobalState\",args:[e.state]}),_t(t.centerAltitude,e.centerAltitude)||r.push({command:\"setCenterAltitude\",args:[e.centerAltitude]}),_t(t.zoom,e.zoom)||r.push({command:\"setZoom\",args:[e.zoom]}),_t(t.bearing,e.bearing)||r.push({command:\"setBearing\",args:[e.bearing]}),_t(t.pitch,e.pitch)||r.push({command:\"setPitch\",args:[e.pitch]}),_t(t.roll,e.roll)||r.push({command:\"setRoll\",args:[e.roll]}),_t(t.sprite,e.sprite)||r.push({command:\"setSprite\",args:[e.sprite]}),_t(t.glyphs,e.glyphs)||r.push({command:\"setGlyphs\",args:[e.glyphs]}),_t(t.transition,e.transition)||r.push({command:\"setTransition\",args:[e.transition]}),_t(t.light,e.light)||r.push({command:\"setLight\",args:[e.light]}),_t(t.terrain,e.terrain)||r.push({command:\"setTerrain\",args:[e.terrain]}),_t(t.sky,e.sky)||r.push({command:\"setSky\",args:[e.sky]}),_t(t.projection,e.projection)||r.push({command:\"setProjection\",args:[e.projection]});const n={},i=[];!function(t,e,r,n){let i;for(i in e=e||{},t=t||{})Object.prototype.hasOwnProperty.call(t,i)&&(Object.prototype.hasOwnProperty.call(e,i)||kt(i,r,n));for(i in e)Object.prototype.hasOwnProperty.call(e,i)&&(Object.prototype.hasOwnProperty.call(t,i)?_t(t[i],e[i])||(\"geojson\"===t[i].type&&\"geojson\"===e[i].type&&It(t,e,i)?St(r,{command:\"setGeoJSONSourceData\",args:[i,e[i].data]}):Mt(i,e,r,n)):At(i,e,r));}(t.sources,e.sources,i,n);const s=[];t.layers&&t.layers.forEach((t=>{\"source\"in t&&n[t.source]?r.push({command:\"removeLayer\",args:[t.id]}):s.push(t);})),r=r.concat(i),function(t,e,r){e=e||[];const n=(t=t||[]).map(Pt),i=e.map(Pt),s=t.reduce(Ct,{}),a=e.reduce(Ct,{}),o=n.slice(),l=Object.create(null);let u,c,h,p,f;for(let t=0,e=0;t<n.length;t++)u=n[t],Object.prototype.hasOwnProperty.call(a,u)?e++:(St(r,{command:\"removeLayer\",args:[u]}),o.splice(o.indexOf(u,e),1));for(let t=0,e=0;t<i.length;t++)u=i[i.length-1-t],o[o.length-1-t]!==u&&(Object.prototype.hasOwnProperty.call(s,u)?(St(r,{command:\"removeLayer\",args:[u]}),o.splice(o.lastIndexOf(u,o.length-e),1)):e++,p=o[o.length-t],St(r,{command:\"addLayer\",args:[a[u],p]}),o.splice(o.length-t,0,u),l[u]=!0);for(let t=0;t<i.length;t++)if(u=i[t],c=s[u],h=a[u],!l[u]&&!_t(c,h))if(_t(c.source,h.source)&&_t(c[\"source-layer\"],h[\"source-layer\"])&&_t(c.type,h.type)){for(f in zt(c.layout,h.layout,r,u,null,\"setLayoutProperty\"),zt(c.paint,h.paint,r,u,null,\"setPaintProperty\"),_t(c.filter,h.filter)||St(r,{command:\"setFilter\",args:[u,h.filter]}),_t(c.minzoom,h.minzoom)&&_t(c.maxzoom,h.maxzoom)||St(r,{command:\"setLayerZoomRange\",args:[u,h.minzoom,h.maxzoom]}),c)Object.prototype.hasOwnProperty.call(c,f)&&\"layout\"!==f&&\"paint\"!==f&&\"filter\"!==f&&\"metadata\"!==f&&\"minzoom\"!==f&&\"maxzoom\"!==f&&(0===f.indexOf(\"paint.\")?zt(c[f],h[f],r,u,f.slice(6),\"setPaintProperty\"):_t(c[f],h[f])||St(r,{command:\"setLayerProperty\",args:[u,f,h[f]]}));for(f in h)Object.prototype.hasOwnProperty.call(h,f)&&!Object.prototype.hasOwnProperty.call(c,f)&&\"layout\"!==f&&\"paint\"!==f&&\"filter\"!==f&&\"metadata\"!==f&&\"minzoom\"!==f&&\"maxzoom\"!==f&&(0===f.indexOf(\"paint.\")?zt(c[f],h[f],r,u,f.slice(6),\"setPaintProperty\"):_t(c[f],h[f])||St(r,{command:\"setLayerProperty\",args:[u,f,h[f]]}));}else St(r,{command:\"removeLayer\",args:[u]}),p=o[o.lastIndexOf(u)+1],St(r,{command:\"addLayer\",args:[h,p]});}(s,e.layers,r);}catch(t){console.warn(\"Unable to compute style diff:\",t),r=[{command:\"setStyle\",args:[e]}];}return r},t.bN=function(t){const e=[],r=t.id;return void 0===r&&e.push({message:`layers.${r}: missing required property \"id\"`}),void 0===t.render&&e.push({message:`layers.${r}: missing required method \"render\"`}),t.renderingMode&&\"2d\"!==t.renderingMode&&\"3d\"!==t.renderingMode&&e.push({message:`layers.${r}: property \"renderingMode\" must be either \"2d\" or \"3d\"`}),e},t.bO=R,t.bP=U,t.bQ=class extends go{constructor(t,e){super(t,e),this.current=0;}set(t){this.current!==t&&(this.current=t,this.gl.uniform1i(this.location,t));}},t.bR=bo,t.bS=class extends go{constructor(t,e){super(t,e),this.current=wo;}set(t){if(t[12]!==this.current[12]||t[0]!==this.current[0])return this.current=t,void this.gl.uniformMatrix4fv(this.location,!1,t);for(let e=1;e<16;e++)if(t[e]!==this.current[e]){this.current=t,this.gl.uniformMatrix4fv(this.location,!1,t);break}}},t.bT=vo,t.bU=class extends go{constructor(t,e){super(t,e),this.current=[0,0,0];}set(t){t[0]===this.current[0]&&t[1]===this.current[1]&&t[2]===this.current[2]||(this.current=t,this.gl.uniform3f(this.location,t[0],t[1],t[2]));}},t.bV=class extends go{constructor(t,e){super(t,e),this.current=[0,0];}set(t){t[0]===this.current[0]&&t[1]===this.current[1]||(this.current=t,this.gl.uniform2f(this.location,t[0],t[1]));}},t.bW=d,t.bX=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},t.bY=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},t.bZ=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]=2*u,t[11]=0,t[12]=(e+r)*o,t[13]=(i+n)*l,t[14]=(a+s)*u,t[15]=1,t},t.b_=class extends go{constructor(t,e){super(t,e),this.current=new Array;}set(t){if(t!=this.current){this.current=t;const e=new Float32Array(4*t.length);for(let r=0;r<t.length;r++)e[4*r]=t[r].r,e[4*r+1]=t[r].g,e[4*r+2]=t[r].b,e[4*r+3]=t[r].a;this.gl.uniform4fv(this.location,e);}}},t.ba=function(){return new Float64Array(16)},t.bb=function(t,e,r){const n=new Float64Array(4);return M(n,t,e-90,r),n},t.bc=function(t,e,r,n){var i,s,a,o,l,u=e[0],c=e[1],h=e[2],f=e[3],d=r[0],y=r[1],m=r[2],g=r[3];return (s=u*d+c*y+h*m+f*g)<0&&(s=-s,d=-d,y=-y,m=-m,g=-g),1-s>p?(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*d,t[1]=o*c+l*y,t[2]=o*h+l*m,t[3]=o*f+l*g,t},t.bd=function(t){const e=new Float64Array(9);var r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g,x,v;h=(i=(n=t)[0])*(l=i+i),p=(s=n[1])*l,d=(a=n[2])*l,y=a*(u=s+s),g=(o=n[3])*l,x=o*u,v=o*(c=a+a),(r=e)[0]=1-(f=s*u)-(m=a*c),r[3]=p-v,r[6]=d+x,r[1]=p+v,r[4]=1-h-m,r[7]=y-g,r[2]=d-x,r[5]=y+g,r[8]=1-h-f;const b=rt(-Math.asin(D(e[2],-1,1)));let w,_;return Math.hypot(e[5],e[8])<.001?(w=0,_=-rt(Math.atan2(e[3],e[4]))):(w=rt(0===e[5]&&0===e[8]?0:Math.atan2(e[5],e[8])),_=rt(0===e[1]&&0===e[0]?0:Math.atan2(e[1],e[0]))),{roll:w,pitch:b+90,bearing:_}},t.be=function(t,e){return t.roll==e.roll&&t.pitch==e.pitch&&t.bearing==e.bearing},t.bf=Ie,t.bg=xo,t.bh=lu,t.bi=uu,t.bj=au,t.bk=T,t.bl=B,t.bm=Oe,t.bn=function(t,e,r,n,i){return T(n,i,D((t-e)/(r-e),0,1))},t.bo=E,t.bp=function(){return new Float64Array(3)},t.bq=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},t.br=M,t.bs=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=i*u-s*l,h=s*o-n*u,p=n*l-i*o;return t[0]=o+a*(c+=c)+i*(p+=p)-s*(h+=h),t[1]=l+a*h+s*c-n*p,t[2]=u+a*p+n*h-i*c,t},t.bt=function(t,e,r){const n=(i=[t[0],t[1],t[2],e[0],e[1],e[2],r[0],r[1],r[2]])[0]*((c=i[8])*(a=i[4])-(o=i[5])*(u=i[7]))+i[1]*(-c*(s=i[3])+o*(l=i[6]))+i[2]*(u*s-a*l);var i,s,a,o,l,u,c;if(0===n)return null;const h=w([],[e[0],e[1],e[2]],[r[0],r[1],r[2]]),p=w([],[r[0],r[1],r[2]],[t[0],t[1],t[2]]),f=w([],[t[0],t[1],t[2]],[e[0],e[1],e[2]]),d=b([],h,-t[3]);return v(d,d,b([],p,-e[3])),v(d,d,b([],f,-r[3])),b(d,d,1/n),d},t.bu=_h,t.bv=function(){return new Float64Array(4)},t.bw=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},t.bx=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},t.by=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},t.bz=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},t.c=at,t.c0=class extends da{},t.c1=ac,t.c2=class extends ma{},t.c3=bl,t.c4=function(t){return t<=1?1:Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))},t.c5=vl,t.c6=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},t.c7=class extends na{},t.c8=class extends Sa{},t.c9=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.cA=function(t,e){ot.REGISTERED_PROTOCOLS[t]=e;},t.cB=function(t){delete ot.REGISTERED_PROTOCOLS[t];},t.cC=function(t,e){const r={};for(let n=0;n<t.length;n++){const i=e&&e[t[n].id]||_i(t[n]);e&&(e[t[n].id]=i);let s=r[i];s||(s=r[i]=[]),s.push(t[n]);}const n=[];for(const t in r)n.push(r[t]);return n},t.cD=ls,t.cE=Oh,t.cF=Uh,t.cG=Cc,t.cH=function(e){e.bucket.createArrays(),e.bucket.tilePixelRatio=P/(512*e.bucket.overscaling),e.bucket.compareText={},e.bucket.iconsNeedLinear=!1;const r=e.bucket.layers[0],n=r.layout,i=r._unevaluatedLayout._values,s={layoutIconSize:i[\"icon-size\"].possiblyEvaluate(new Ps(e.bucket.zoom+1),e.canonical),layoutTextSize:i[\"text-size\"].possiblyEvaluate(new Ps(e.bucket.zoom+1),e.canonical),textMaxSize:i[\"text-size\"].possiblyEvaluate(new Ps(18))};if(\"composite\"===e.bucket.textSizeData.kind){const{minZoom:t,maxZoom:r}=e.bucket.textSizeData;s.compositeTextSizes=[i[\"text-size\"].possiblyEvaluate(new Ps(t),e.canonical),i[\"text-size\"].possiblyEvaluate(new Ps(r),e.canonical)];}if(\"composite\"===e.bucket.iconSizeData.kind){const{minZoom:t,maxZoom:r}=e.bucket.iconSizeData;s.compositeIconSizes=[i[\"icon-size\"].possiblyEvaluate(new Ps(t),e.canonical),i[\"icon-size\"].possiblyEvaluate(new Ps(r),e.canonical)];}const a=n.get(\"text-line-height\")*uc,o=\"viewport\"!==n.get(\"text-rotation-alignment\")&&\"point\"!==n.get(\"symbol-placement\"),l=n.get(\"text-keep-upright\"),u=n.get(\"text-size\");for(const i of e.bucket.features){const c=n.get(\"text-font\").evaluate(i,{},e.canonical).join(\",\"),h=u.evaluate(i,{},e.canonical),p=s.layoutTextSize.evaluate(i,{},e.canonical),f=s.layoutIconSize.evaluate(i,{},e.canonical),d={horizontal:{},vertical:void 0},y=i.text;let m,g=[0,0];if(y){const s=y.toString(),u=n.get(\"text-letter-spacing\").evaluate(i,{},e.canonical)*uc,f=gs(s)?u:0,m=n.get(\"text-anchor\").evaluate(i,{},e.canonical),x=pp(r,i,e.canonical);if(!x){const t=n.get(\"text-radial-offset\").evaluate(i,{},e.canonical);g=t?hp(m,[t*uc,cp]):n.get(\"text-offset\").evaluate(i,{},e.canonical).map((t=>t*uc));}let v=o?\"center\":n.get(\"text-justify\").evaluate(i,{},e.canonical);const b=\"point\"===n.get(\"symbol-placement\")?n.get(\"text-max-width\").evaluate(i,{},e.canonical)*uc:1/0,w=()=>{e.bucket.allowVerticalPlacement&&ms(s)&&(d.vertical=Vc(y,e.glyphMap,e.glyphPositions,e.imagePositions,c,b,a,m,\"left\",f,g,t.ao.vertical,!0,p,h));};if(!o&&x){const r=new Set;if(\"auto\"===v)for(let t=0;t<x.values.length;t+=2)r.add(fp(x.values[t]));else r.add(v);let n=!1;for(const i of r)if(!d.horizontal[i])if(n)d.horizontal[i]=d.horizontal[0];else {const r=Vc(y,e.glyphMap,e.glyphPositions,e.imagePositions,c,b,a,\"center\",i,f,g,t.ao.horizontal,!1,p,h);r&&(d.horizontal[i]=r,n=1===r.positionedLines.length);}w();}else {\"auto\"===v&&(v=fp(m));const r=Vc(y,e.glyphMap,e.glyphPositions,e.imagePositions,c,b,a,m,v,f,g,t.ao.horizontal,!1,p,h);r&&(d.horizontal[v]=r),w(),ms(s)&&o&&l&&(d.vertical=Vc(y,e.glyphMap,e.glyphPositions,e.imagePositions,c,b,a,m,v,f,g,t.ao.vertical,!1,p,h));}}let x=!1;if(i.icon&&i.icon.name){const t=e.imageMap[i.icon.name];t&&(m=Jc(e.imagePositions[i.icon.name],n.get(\"icon-offset\").evaluate(i,{},e.canonical),n.get(\"icon-anchor\").evaluate(i,{},e.canonical)),x=!!t.sdf,void 0===e.bucket.sdfIcons?e.bucket.sdfIcons=x:e.bucket.sdfIcons!==x&&q(\"Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer\"),(t.pixelRatio!==e.bucket.pixelRatio||0!==n.get(\"icon-rotate\").constantOr(1))&&(e.bucket.iconsNeedLinear=!0));}const v=mp(d.horizontal)||d.vertical;e.bucket.iconsInText=!!v&&v.iconsInText,(v||m)&&dp(e.bucket,i,d,m,e.imageMap,s,p,f,g,x,e.canonical,e.subdivisionGranularity);}e.showCollisionBoxes&&e.bucket.generateCollisionDebugBuffers();},t.cI=mu,t.cJ=Bu,t.cK=Yu,t.cL=Pu,t.cM=fc,t.cN=class{constructor(t){this._marks={start:[t.url,\"start\"].join(\"#\"),end:[t.url,\"end\"].join(\"#\"),measure:t.url.toString()},performance.mark(this._marks.start);}finish(){performance.mark(this._marks.end);let t=performance.getEntriesByName(this._marks.measure);return 0===t.length&&(performance.measure(this._marks.measure,this._marks.start,this._marks.end),t=performance.getEntriesByName(this._marks.measure),performance.clearMarks(this._marks.start),performance.clearMarks(this._marks.end),performance.clearMeasures(this._marks.measure)),t}},t.cO=function(t,r,n,i,s){return e(this,void 0,void 0,(function*(){if(h())try{return yield J(t,r,n,i,s)}catch(t){}return function(t,e,r,n,i){const s=t.width,a=t.height;W&&Q||(W=new OffscreenCanvas(s,a),Q=W.getContext(\"2d\",{willReadFrequently:!0})),W.width=s,W.height=a,Q.drawImage(t,0,0,s,a);const o=Q.getImageData(e,r,n,i);return Q.clearRect(0,0,s,a),o.data}(t,r,n,i,s)}))},t.cP=zl,t.cQ=n,t.cR=Iu,t.cS=Au,t.cT=ni,t.cU=function(t,e){const r=new Map;if(null==t);else if(\"Feature\"===t.type)r.set($h(t,e),t);else for(const n of t.features)r.set($h(n,e),n);return r},t.cV=function(t,e){if(null==t)return !0;if(\"Feature\"===t.type)return null!=$h(t,e);if(\"FeatureCollection\"===t.type){const r=new Set;for(const n of t.features){const t=$h(n,e);if(null==t)return !1;if(r.has(t))return !1;r.add(t);}return !0}return !1},t.cW=function(t,e,r){var n,i,s,a;if(e.removeAll&&t.clear(),e.remove)for(const r of e.remove)t.delete(r);if(e.add)for(const n of e.add){const e=$h(n,r);null!=e&&t.set(e,n);}if(e.update)for(const r of e.update){let e=t.get(r.id);if(null==e)continue;const o=!r.removeAllProperties&&((null===(n=r.removeProperties)||void 0===n?void 0:n.length)>0||(null===(i=r.addOrUpdateProperties)||void 0===i?void 0:i.length)>0);if((r.newGeometry||r.removeAllProperties||o)&&(e=Object.assign({},e),t.set(r.id,e),o&&(e.properties=Object.assign({},e.properties))),r.newGeometry&&(e.geometry=r.newGeometry),r.removeAllProperties)e.properties={};else if((null===(s=r.removeProperties)||void 0===s?void 0:s.length)>0)for(const t of r.removeProperties)Object.prototype.hasOwnProperty.call(e.properties,t)&&delete e.properties[t];if((null===(a=r.addOrUpdateProperties)||void 0===a?void 0:a.length)>0)for(const{key:t,value:n}of r.addOrUpdateProperties)e.properties[t]=n;}},t.cX=zs,t.ca=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],f=t[10],d=t[11],y=t[12],m=t[13],g=t[14],x=t[15],v=e[0],b=e[1],w=e[2],_=e[3],S=e[4],A=e[5],k=e[6],M=e[7],I=e[8],z=e[9],P=e[10],C=e[11],E=e[12],T=e[13],B=e[14],V=e[15];return Math.abs(r-v)<=p*Math.max(1,Math.abs(r),Math.abs(v))&&Math.abs(n-b)<=p*Math.max(1,Math.abs(n),Math.abs(b))&&Math.abs(i-w)<=p*Math.max(1,Math.abs(i),Math.abs(w))&&Math.abs(s-_)<=p*Math.max(1,Math.abs(s),Math.abs(_))&&Math.abs(a-S)<=p*Math.max(1,Math.abs(a),Math.abs(S))&&Math.abs(o-A)<=p*Math.max(1,Math.abs(o),Math.abs(A))&&Math.abs(l-k)<=p*Math.max(1,Math.abs(l),Math.abs(k))&&Math.abs(u-M)<=p*Math.max(1,Math.abs(u),Math.abs(M))&&Math.abs(c-I)<=p*Math.max(1,Math.abs(c),Math.abs(I))&&Math.abs(h-z)<=p*Math.max(1,Math.abs(h),Math.abs(z))&&Math.abs(f-P)<=p*Math.max(1,Math.abs(f),Math.abs(P))&&Math.abs(d-C)<=p*Math.max(1,Math.abs(d),Math.abs(C))&&Math.abs(y-E)<=p*Math.max(1,Math.abs(y),Math.abs(E))&&Math.abs(m-T)<=p*Math.max(1,Math.abs(m),Math.abs(T))&&Math.abs(g-B)<=p*Math.max(1,Math.abs(g),Math.abs(B))&&Math.abs(x-V)<=p*Math.max(1,Math.abs(x),Math.abs(V))},t.cb=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},t.cc=t=>\"symbol\"===t.type,t.cd=t=>\"circle\"===t.type,t.ce=t=>\"heatmap\"===t.type,t.cf=t=>\"line\"===t.type,t.cg=t=>\"fill\"===t.type,t.ch=t=>\"fill-extrusion\"===t.type,t.ci=t=>\"hillshade\"===t.type,t.cj=t=>\"color-relief\"===t.type,t.ck=t=>\"background\"===t.type,t.cl=t=>\"custom\"===t.type,t.cm=V,t.cn=function(t,e,r){const n=z(e.x-r.x,e.y-r.y),i=z(t.x-r.x,t.y-r.y);var s,a;return rt(Math.atan2(n[0]*i[1]-n[1]*i[0],(s=n)[0]*(a=i)[0]+s[1]*a[1]))},t.co=F,t.cp=function(t,e){return it[e]&&(t instanceof MouseEvent||t instanceof WheelEvent)},t.cq=function(t,e){return nt[e]&&\"touches\"in t},t.cr=function(t){return nt[t]||it[t]},t.cs=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},t.ct=function(t,e){const{x:r,y:n}=Eh.fromLngLat(e);return !(t<0||t>25||n<0||n>=1||r<0||r>=1)},t.cu=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},t.cv=class extends ra{},t.cw=Ep,t.cy=function(t){return t.message===st},t.cz=ct,t.d=ft,t.e=L,t.f=t=>e(void 0,void 0,void 0,(function*(){if(0===t.byteLength)return createImageBitmap(new ImageData(1,1));const e=new Blob([new Uint8Array(t)],{type:\"image/png\"});try{return createImageBitmap(e)}catch(t){throw 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.`)}})),t.g=lt,t.h=t=>new Promise(((e,r)=>{const n=new Image;n.onload=()=>{e(n),URL.revokeObjectURL(n.src),n.onload=null,window.requestAnimationFrame((()=>{n.src=K;}));},n.onerror=()=>r(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 i=new Blob([new Uint8Array(t)],{type:\"image/png\"});n.src=t.byteLength?URL.createObjectURL(i):K;})),t.i=X,t.j=(t,e)=>pt(L(t,{type:\"json\"}),e),t.k=gt,t.l=mt,t.m=pt,t.n=(t,e)=>pt(L(t,{type:\"arrayBuffer\"}),e),t.o=function(t){return new fc(t).readFields(kc,[])},t.p=zc,t.q=gl,t.r=qs,t.s=tt,t.t=Bs,t.u=ys,t.v=vt,t.w=q,t.x=es,t.y=ss,t.z=ts;}));\n\ndefine(\"worker\",[\"./shared\"],(function(e){\"use strict\";class t{constructor(e,t){this.keyCache={},e&&this.replace(e,t);}replace(e,t){this._layerConfigs={},this._layers={},this.update(e,[],t);}update(t,i,o){for(const i of t){this._layerConfigs[i.id]=i;const t=this._layers[i.id]=e.bJ(i,o);t._featureFilter=e.aa(t.filter,o),this.keyCache[i.id]&&delete this.keyCache[i.id];}for(const e of i)delete this.keyCache[e],delete this._layerConfigs[e],delete this._layers[e];this.familiesBySource={};const s=e.cC(Object.values(this._layerConfigs),this.keyCache);for(const e of s){const t=e.map((e=>this._layers[e.id])),i=t[0];if(\"none\"===i.visibility)continue;const o=i.source||\"\";let s=this.familiesBySource[o];s||(s=this.familiesBySource[o]={});const n=i.sourceLayer||\"_geojsonTileLayer\";let r=s[n];r||(r=s[n]=[]),r.push(t);}}}class i{constructor(t){const i={},o=[];for(const e in t){const s=t[e],n=i[e]={};for(const e in s){const t=s[+e];if(!t||0===t.bitmap.width||0===t.bitmap.height)continue;const i={x:0,y:0,w:t.bitmap.width+2,h:t.bitmap.height+2};o.push(i),n[e]={rect:i,metrics:t.metrics};}}const{w:s,h:n}=e.p(o),r=new e.q({width:s||1,height:n||1});for(const o in t){const s=t[o];for(const t in s){const n=s[+t];if(!n||0===n.bitmap.width||0===n.bitmap.height)continue;const a=i[o][t].rect;e.q.copy(n.bitmap,r,{x:0,y:0},{x:a.x+1,y:a.y+1},n.bitmap);}}this.image=r,this.positions=i;}}e.cD(\"GlyphAtlas\",i);class o{constructor(t){this.tileID=new e.Z(t.tileID.overscaledZ,t.tileID.wrap,t.tileID.canonical.z,t.tileID.canonical.x,t.tileID.canonical.y),this.uid=t.uid,this.zoom=t.zoom,this.pixelRatio=t.pixelRatio,this.tileSize=t.tileSize,this.source=t.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=t.showCollisionBoxes,this.collectResourceTiming=!!t.collectResourceTiming,this.returnDependencies=!!t.returnDependencies,this.promoteId=t.promoteId,this.inFlightDependencies=[];}parse(t,o,n,r,a){return e._(this,void 0,void 0,(function*(){this.status=\"parsing\",this.data=t,this.collisionBoxArray=new e.a8;const l=new e.cE(Object.keys(t.layers).sort()),c=new e.cF(this.tileID,this.promoteId);c.bucketLayerIDs=[];const h={},u={featureIndex:c,iconDependencies:{},patternDependencies:{},glyphDependencies:{},dashDependencies:{},availableImages:n,subdivisionGranularity:a},d=o.familiesBySource[this.source];for(const i in d){const o=t.layers[i];if(!o)continue;1===o.version&&e.w(`Vector tile source \"${this.source}\" layer \"${i}\" does not use vector tile spec v2 and therefore may have some rendering errors.`);const r=l.encode(i),a=[];for(let e=0;e<o.length;e++){const t=o.feature(e),s=c.getId(t,i);a.push({feature:t,id:s,index:e,sourceLayerIndex:r});}for(const t of d[i]){const i=t[0];i.source!==this.source&&e.w(`layer.source = ${i.source} does not equal this.source = ${this.source}`),i.isHidden(this.zoom,!0)||(s(t,this.zoom,n),(h[i.id]=i.createBucket({index:c.bucketLayerIDs.length,layers:t,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:r,sourceID:this.source})).populate(a,u,this.tileID.canonical),c.bucketLayerIDs.push(t.map((e=>e.id))));}}const f=e.bO(u.glyphDependencies,(e=>Object.keys(e).map(Number)));this.inFlightDependencies.forEach((e=>null==e?void 0:e.abort())),this.inFlightDependencies=[];let g=Promise.resolve({});if(Object.keys(f).length){const e=new AbortController;this.inFlightDependencies.push(e),g=r.sendAsync({type:\"GG\",data:{stacks:f,source:this.source,tileID:this.tileID,type:\"glyphs\"}},e);}const p=Object.keys(u.iconDependencies);let m=Promise.resolve({});if(p.length){const e=new AbortController;this.inFlightDependencies.push(e),m=r.sendAsync({type:\"GI\",data:{icons:p,source:this.source,tileID:this.tileID,type:\"icons\"}},e);}const y=Object.keys(u.patternDependencies);let v=Promise.resolve({});if(y.length){const e=new AbortController;this.inFlightDependencies.push(e),v=r.sendAsync({type:\"GI\",data:{icons:y,source:this.source,tileID:this.tileID,type:\"patterns\"}},e);}const w=u.dashDependencies;let x=Promise.resolve({});if(Object.keys(w).length){const e=new AbortController;this.inFlightDependencies.push(e),x=r.sendAsync({type:\"GDA\",data:{dashes:w}},e);}const[b,_,S,M]=yield Promise.all([g,m,v,x]),I=new i(b),k=new e.cG(_,S);for(const t in h){const i=h[t];i instanceof e.a9?(s(i.layers,this.zoom,n),e.cH({bucket:i,glyphMap:b,glyphPositions:I.positions,imageMap:_,imagePositions:k.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical,subdivisionGranularity:u.subdivisionGranularity})):i.hasDependencies&&(i instanceof e.cI||i instanceof e.cJ||i instanceof e.cK)&&(s(i.layers,this.zoom,n),i.addFeatures(u,this.tileID.canonical,k.patternPositions,M));}return this.status=\"done\",{buckets:Object.values(h).filter((e=>!e.isEmpty())),featureIndex:c,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:I.image,imageAtlas:k,dashPositions:M,glyphMap:this.returnDependencies?b:null,iconMap:this.returnDependencies?_:null,glyphPositions:this.returnDependencies?I.positions:null}}))}}function s(t,i,o){const s=new e.F(i);for(const e of t)e.recalculate(s,o);}class n{constructor(e,t,i){this.actor=e,this.layerIndex=t,this.availableImages=i,this.fetching={},this.loading={},this.loaded={};}loadVectorTile(t,i){return e._(this,void 0,void 0,(function*(){const o=yield e.n(t.request,i);try{return {vectorTile:new e.cL(new e.cM(o.data)),rawData:o.data,cacheControl:o.cacheControl,expires:o.expires}}catch(e){const i=new Uint8Array(o.data);let s=`Unable to parse the tile at ${t.request.url}, `;throw s+=31===i[0]&&139===i[1]?\"please make sure the data is not gzipped and that you have configured the relevant header in the server\":`got error: ${e.message}`,new Error(s)}}))}loadTile(t){return e._(this,void 0,void 0,(function*(){const i=t.uid,s=!!(t&&t.request&&t.request.collectResourceTiming)&&new e.cN(t.request),n=new o(t);this.loading[i]=n;const r=new AbortController;n.abort=r;try{const o=yield this.loadVectorTile(t,r);if(delete this.loading[i],!o)return null;const a=o.rawData,l={};o.expires&&(l.expires=o.expires),o.cacheControl&&(l.cacheControl=o.cacheControl);const c={};if(s){const e=s.finish();e&&(c.resourceTiming=JSON.parse(JSON.stringify(e)));}n.vectorTile=o.vectorTile;const h=n.parse(o.vectorTile,this.layerIndex,this.availableImages,this.actor,t.subdivisionGranularity);this.loaded[i]=n,this.fetching[i]={rawTileData:a,cacheControl:l,resourceTiming:c};try{const t=yield h;return e.e({rawTileData:a.slice(0)},t,l,c)}finally{delete this.fetching[i];}}catch(e){throw delete this.loading[i],n.status=\"done\",this.loaded[i]=n,e}}))}reloadTile(t){return e._(this,void 0,void 0,(function*(){const i=t.uid;if(!this.loaded||!this.loaded[i])throw new Error(\"Should not be trying to reload a tile that was never loaded or has been removed\");const o=this.loaded[i];if(o.showCollisionBoxes=t.showCollisionBoxes,\"parsing\"===o.status){const s=yield o.parse(o.vectorTile,this.layerIndex,this.availableImages,this.actor,t.subdivisionGranularity);let n;if(this.fetching[i]){const{rawTileData:t,cacheControl:o,resourceTiming:r}=this.fetching[i];delete this.fetching[i],n=e.e({rawTileData:t.slice(0)},s,o,r);}else n=s;return n}if(\"done\"===o.status&&o.vectorTile)return o.parse(o.vectorTile,this.layerIndex,this.availableImages,this.actor,t.subdivisionGranularity)}))}abortTile(t){return e._(this,void 0,void 0,(function*(){const e=this.loading,i=t.uid;e&&e[i]&&e[i].abort&&(e[i].abort.abort(),delete e[i]);}))}removeTile(t){return e._(this,void 0,void 0,(function*(){this.loaded&&this.loaded[t.uid]&&delete this.loaded[t.uid];}))}}class r{constructor(){this.loaded={};}loadTile(t){return e._(this,void 0,void 0,(function*(){const{uid:i,encoding:o,rawImageData:s,redFactor:n,greenFactor:r,blueFactor:a,baseShift:l}=t,c=s.width+2,h=s.height+2,u=e.b(s)?new e.R({width:c,height:h},yield e.cO(s,-1,-1,c,h)):s,d=new e.cP(i,u,o,n,r,a,l);return this.loaded=this.loaded||{},this.loaded[i]=d,d}))}removeTile(e){const t=this.loaded,i=e.uid;t&&t[i]&&delete t[i];}}var a,l,c=function(){if(l)return a;function e(e,i){if(0!==e.length){t(e[0],i);for(var o=1;o<e.length;o++)t(e[o],!i);}}function t(e,t){for(var i=0,o=0,s=0,n=e.length,r=n-1;s<n;r=s++){var a=(e[s][0]-e[r][0])*(e[r][1]+e[s][1]),l=i+a;o+=Math.abs(i)>=Math.abs(a)?i-l+a:a-l+i,i=l;}i+o>=0!=!!t&&e.reverse();}return l=1,a=function t(i,o){var s,n=i&&i.type;if(\"FeatureCollection\"===n)for(s=0;s<i.features.length;s++)t(i.features[s],o);else if(\"GeometryCollection\"===n)for(s=0;s<i.geometries.length;s++)t(i.geometries[s],o);else if(\"Feature\"===n)t(i.geometry,o);else if(\"Polygon\"===n)e(i.coordinates,o);else if(\"MultiPolygon\"===n)for(s=0;s<i.coordinates.length;s++)e(i.coordinates[s],o);return i}}(),h=e.cQ(c);class u extends e.cS{constructor(t,i){super(new e.cM,0,i,[],[]),this.feature=t,this.type=t.type,this.properties=t.tags?t.tags:{},\"id\"in t&&(\"string\"==typeof t.id?this.id=parseInt(t.id,10):\"number\"!=typeof t.id||isNaN(t.id)||(this.id=t.id));}loadGeometry(){const t=[],i=1===this.feature.type?[this.feature.geometry]:this.feature.geometry;for(const o of i){const i=[];for(const t of o)i.push(new e.P(t[0],t[1]));t.push(i);}return t}}class d extends e.cR{constructor(t,i){super(new e.cM),this.layers={_geojsonTileLayer:this},this.name=\"_geojsonTileLayer\",this.version=i?i.version:1,this.extent=i?i.extent:4096,this.length=t.length,this.features=t;}feature(e){return new u(this.features[e],this.extent)}}function f(e,t){t.writeVarintField(15,e.version||1),t.writeStringField(1,e.name||\"\"),t.writeVarintField(5,e.extent||4096);const i={keys:[],values:[],keycache:{},valuecache:{}};for(let o=0;o<e.length;o++)i.feature=e.feature(o),t.writeMessage(2,g,i);const o=i.keys;for(const e of o)t.writeStringField(3,e);const s=i.values;for(const e of s)t.writeMessage(4,w,e);}function g(e,t){if(!e.feature)return;const i=e.feature;void 0!==i.id&&t.writeVarintField(1,i.id),t.writeMessage(2,p,e),t.writeVarintField(3,i.type),t.writeMessage(4,v,i);}function p(e,t){for(const i in e.feature?.properties){let o=e.feature.properties[i],s=e.keycache[i];if(null===o)continue;void 0===s&&(e.keys.push(i),s=e.keys.length-1,e.keycache[i]=s),t.writeVarint(s),\"string\"!=typeof o&&\"boolean\"!=typeof o&&\"number\"!=typeof o&&(o=JSON.stringify(o));const n=typeof o+\":\"+o;let r=e.valuecache[n];void 0===r&&(e.values.push(o),r=e.values.length-1,e.valuecache[n]=r),t.writeVarint(r);}}function m(e,t){return (t<<3)+(7&e)}function y(e){return e<<1^e>>31}function v(e,t){const i=e.loadGeometry(),o=e.type;let s=0,n=0;for(const r of i){let i=1;1===o&&(i=r.length),t.writeVarint(m(1,i));const a=3===o?r.length-1:r.length;for(let e=0;e<a;e++){1===e&&1!==o&&t.writeVarint(m(2,a-1));const i=r[e].x-s,l=r[e].y-n;t.writeVarint(y(i)),t.writeVarint(y(l)),s+=i,n+=l;}3===e.type&&t.writeVarint(m(7,1));}}function w(e,t){const i=typeof e;\"string\"===i?t.writeStringField(1,e):\"boolean\"===i?t.writeBooleanField(7,e):\"number\"===i&&(e%1!=0?t.writeDoubleField(3,e):e<0?t.writeSVarintField(6,e):t.writeVarintField(5,e));}const x={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:e=>e},b=Math.fround||(_=new Float32Array(1),e=>(_[0]=+e,_[0]));var _;class S{constructor(e){this.options=Object.assign(Object.create(x),e),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[];}load(e){const{log:t,minZoom:i,maxZoom:o}=this.options;t&&console.time(\"total time\");const s=`prepare ${e.length} points`;t&&console.time(s),this.points=e;const n=[];for(let t=0;t<e.length;t++){const i=e[t];if(!i.geometry)continue;const[o,s]=i.geometry.coordinates,r=b(k(o)),a=b(P(s));n.push(r,a,1/0,t,-1,1),this.options.reduce&&n.push(0);}let r=this.trees[o+1]=this._createTree(n);t&&console.timeEnd(s);for(let e=o;e>=i;e--){const i=+Date.now();r=this.trees[e]=this._createTree(this._cluster(r,e)),t&&console.log(\"z%d: %d clusters in %dms\",e,r.numItems,+Date.now()-i);}return t&&console.timeEnd(\"total time\"),this}getClusters(e,t){let i=((e[0]+180)%360+360)%360-180;const o=Math.max(-90,Math.min(90,e[1]));let s=180===e[2]?180:((e[2]+180)%360+360)%360-180;const n=Math.max(-90,Math.min(90,e[3]));if(e[2]-e[0]>=360)i=-180,s=180;else if(i>s){const e=this.getClusters([i,o,180,n],t),r=this.getClusters([-180,o,s,n],t);return e.concat(r)}const r=this.trees[this._limitZoom(t)],a=r.range(k(i),P(n),k(s),P(o)),l=r.data,c=[];for(const e of a){const t=this.stride*e;c.push(l[t+5]>1?M(l,t,this.clusterProps):this.points[l[t+3]]);}return c}getChildren(e){const t=this._getOriginId(e),i=this._getOriginZoom(e),o=\"No cluster with the specified id.\",s=this.trees[i];if(!s)throw new Error(o);const n=s.data;if(t*this.stride>=n.length)throw new Error(o);const r=this.options.radius/(this.options.extent*Math.pow(2,i-1)),a=s.within(n[t*this.stride],n[t*this.stride+1],r),l=[];for(const t of a){const i=t*this.stride;n[i+4]===e&&l.push(n[i+5]>1?M(n,i,this.clusterProps):this.points[n[i+3]]);}if(0===l.length)throw new Error(o);return l}getLeaves(e,t,i){const o=[];return this._appendLeaves(o,e,t=t||10,i=i||0,0),o}getTile(e,t,i){const o=this.trees[this._limitZoom(e)],s=Math.pow(2,e),{extent:n,radius:r}=this.options,a=r/n,l=(i-a)/s,c=(i+1+a)/s,h={features:[]};return this._addTileFeatures(o.range((t-a)/s,l,(t+1+a)/s,c),o.data,t,i,s,h),0===t&&this._addTileFeatures(o.range(1-a/s,l,1,c),o.data,s,i,s,h),t===s-1&&this._addTileFeatures(o.range(0,l,a/s,c),o.data,-1,i,s,h),h.features.length?h:null}getClusterExpansionZoom(e){let t=this._getOriginZoom(e)-1;for(;t<=this.options.maxZoom;){const i=this.getChildren(e);if(t++,1!==i.length)break;e=i[0].properties.cluster_id;}return t}_appendLeaves(e,t,i,o,s){const n=this.getChildren(t);for(const t of n){const n=t.properties;if(n&&n.cluster?s+n.point_count<=o?s+=n.point_count:s=this._appendLeaves(e,n.cluster_id,i,o,s):s<o?s++:e.push(t),e.length===i)break}return s}_createTree(t){const i=new e.aI(t.length/this.stride|0,this.options.nodeSize,Float32Array);for(let e=0;e<t.length;e+=this.stride)i.add(t[e],t[e+1]);return i.finish(),i.data=t,i}_addTileFeatures(e,t,i,o,s,n){for(const r of e){const e=r*this.stride,a=t[e+5]>1;let l,c,h;if(a)l=I(t,e,this.clusterProps),c=t[e],h=t[e+1];else {const i=this.points[t[e+3]];l=i.properties;const[o,s]=i.geometry.coordinates;c=k(o),h=P(s);}const u={type:1,geometry:[[Math.round(this.options.extent*(c*s-i)),Math.round(this.options.extent*(h*s-o))]],tags:l};let d;d=a||this.options.generateId?t[e+3]:this.points[t[e+3]].id,void 0!==d&&(u.id=d),n.features.push(u);}}_limitZoom(e){return Math.max(this.options.minZoom,Math.min(Math.floor(+e),this.options.maxZoom+1))}_cluster(e,t){const{radius:i,extent:o,reduce:s,minPoints:n}=this.options,r=i/(o*Math.pow(2,t)),a=e.data,l=[],c=this.stride;for(let i=0;i<a.length;i+=c){if(a[i+2]<=t)continue;a[i+2]=t;const o=a[i],h=a[i+1],u=e.within(a[i],a[i+1],r),d=a[i+5];let f=d;for(const e of u){const i=e*c;a[i+2]>t&&(f+=a[i+5]);}if(f>d&&f>=n){let e,n=o*d,r=h*d,g=-1;const p=(i/c<<5)+(t+1)+this.points.length;for(const o of u){const l=o*c;if(a[l+2]<=t)continue;a[l+2]=t;const h=a[l+5];n+=a[l]*h,r+=a[l+1]*h,a[l+4]=p,s&&(e||(e=this._map(a,i,!0),g=this.clusterProps.length,this.clusterProps.push(e)),s(e,this._map(a,l)));}a[i+4]=p,l.push(n/f,r/f,1/0,p,-1,f),s&&l.push(g);}else {for(let e=0;e<c;e++)l.push(a[i+e]);if(f>1)for(const e of u){const i=e*c;if(!(a[i+2]<=t)){a[i+2]=t;for(let e=0;e<c;e++)l.push(a[i+e]);}}}}return l}_getOriginId(e){return e-this.points.length>>5}_getOriginZoom(e){return (e-this.points.length)%32}_map(e,t,i){if(e[t+5]>1){const o=this.clusterProps[e[t+6]];return i?Object.assign({},o):o}const o=this.points[e[t+3]].properties,s=this.options.map(o);return i&&s===o?Object.assign({},s):s}}function M(e,t,i){return {type:\"Feature\",id:e[t+3],properties:I(e,t,i),geometry:{type:\"Point\",coordinates:[(o=e[t],360*(o-.5)),D(e[t+1])]}};var o;}function I(e,t,i){const o=e[t+5],s=o>=1e4?`${Math.round(o/1e3)}k`:o>=1e3?Math.round(o/100)/10+\"k\":o,n=e[t+6],r=-1===n?{}:Object.assign({},i[n]);return Object.assign(r,{cluster:!0,cluster_id:e[t+3],point_count:o,point_count_abbreviated:s})}function k(e){return e/360+.5}function P(e){const t=Math.sin(e*Math.PI/180),i=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return i<0?0:i>1?1:i}function D(e){const t=(180-360*e)*Math.PI/180;return 360*Math.atan(Math.exp(t))/Math.PI-90}function T(e,t,i,o){let s=o;const n=t+(i-t>>1);let r,a=i-t;const l=e[t],c=e[t+1],h=e[i],u=e[i+1];for(let o=t+3;o<i;o+=3){const t=C(e[o],e[o+1],l,c,h,u);if(t>s)r=o,s=t;else if(t===s){const e=Math.abs(o-n);e<a&&(r=o,a=e);}}s>o&&(r-t>3&&T(e,t,r,o),e[r+2]=s,i-r>3&&T(e,r,i,o));}function C(e,t,i,o,s,n){let r=s-i,a=n-o;if(0!==r||0!==a){const l=((e-i)*r+(t-o)*a)/(r*r+a*a);l>1?(i=s,o=n):l>0&&(i+=r*l,o+=a*l);}return r=e-i,a=t-o,r*r+a*a}function L(e,t,i,o){const s={id:null==e?null:e,type:t,geometry:i,tags:o,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};if(\"Point\"===t||\"MultiPoint\"===t||\"LineString\"===t)O(s,i);else if(\"Polygon\"===t)O(s,i[0]);else if(\"MultiLineString\"===t)for(const e of i)O(s,e);else if(\"MultiPolygon\"===t)for(const e of i)O(s,e[0]);return s}function O(e,t){for(let i=0;i<t.length;i+=3)e.minX=Math.min(e.minX,t[i]),e.minY=Math.min(e.minY,t[i+1]),e.maxX=Math.max(e.maxX,t[i]),e.maxY=Math.max(e.maxY,t[i+1]);}function F(e,t,i,o){if(!t.geometry)return;const s=t.geometry.coordinates;if(s&&0===s.length)return;const n=t.geometry.type,r=Math.pow(i.tolerance/((1<<i.maxZoom)*i.extent),2);let a=[],l=t.id;if(i.promoteId?l=t.properties[i.promoteId]:i.generateId&&(l=o||0),\"Point\"===n)G(s,a);else if(\"MultiPoint\"===n)for(const e of s)G(e,a);else if(\"LineString\"===n)A(s,a,r,!1);else if(\"MultiLineString\"===n){if(i.lineMetrics){for(const i of s)a=[],A(i,a,r,!1),e.push(L(l,\"LineString\",a,t.properties));return}z(s,a,r,!1);}else if(\"Polygon\"===n)z(s,a,r,!0);else {if(\"MultiPolygon\"!==n){if(\"GeometryCollection\"===n){for(const s of t.geometry.geometries)F(e,{id:l,geometry:s,properties:t.properties},i,o);return}throw new Error(\"Input data is not a valid GeoJSON object.\")}for(const e of s){const t=[];z(e,t,r,!0),a.push(t);}}e.push(L(l,n,a,t.properties));}function G(e,t){t.push(E(e[0]),Z(e[1]),0);}function A(e,t,i,o){let s,n,r=0;for(let i=0;i<e.length;i++){const a=E(e[i][0]),l=Z(e[i][1]);t.push(a,l,0),i>0&&(r+=o?(s*l-a*n)/2:Math.sqrt(Math.pow(a-s,2)+Math.pow(l-n,2))),s=a,n=l;}const a=t.length-3;t[2]=1,T(t,0,a,i),t[a+2]=1,t.size=Math.abs(r),t.start=0,t.end=t.size;}function z(e,t,i,o){for(let s=0;s<e.length;s++){const n=[];A(e[s],n,i,o),t.push(n);}}function E(e){return e/360+.5}function Z(e){const t=Math.sin(e*Math.PI/180),i=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return i<0?0:i>1?1:i}function j(e,t,i,o,s,n,r,a){if(o/=t,n>=(i/=t)&&r<o)return e;if(r<i||n>=o)return null;const l=[];for(const t of e){const e=t.geometry;let n=t.type;const r=0===s?t.minX:t.minY,c=0===s?t.maxX:t.maxY;if(r>=i&&c<o){l.push(t);continue}if(c<i||r>=o)continue;let h=[];if(\"Point\"===n||\"MultiPoint\"===n)N(e,h,i,o,s);else if(\"LineString\"===n)R(e,h,i,o,s,!1,a.lineMetrics);else if(\"MultiLineString\"===n)J(e,h,i,o,s,!1);else if(\"Polygon\"===n)J(e,h,i,o,s,!0);else if(\"MultiPolygon\"===n)for(const t of e){const e=[];J(t,e,i,o,s,!0),e.length&&h.push(e);}if(h.length){if(a.lineMetrics&&\"LineString\"===n){for(const e of h)l.push(L(t.id,n,e,t.tags));continue}\"LineString\"!==n&&\"MultiLineString\"!==n||(1===h.length?(n=\"LineString\",h=h[0]):n=\"MultiLineString\"),\"Point\"!==n&&\"MultiPoint\"!==n||(n=3===h.length?\"Point\":\"MultiPoint\"),l.push(L(t.id,n,h,t.tags));}}return l.length?l:null}function N(e,t,i,o,s){for(let n=0;n<e.length;n+=3){const r=e[n+s];r>=i&&r<=o&&Y(t,e[n],e[n+1],e[n+2]);}}function R(e,t,i,o,s,n,r){let a=W(e);const l=0===s?q:H;let c,h,u=e.start;for(let d=0;d<e.length-3;d+=3){const f=e[d],g=e[d+1],p=e[d+2],m=e[d+3],y=e[d+4],v=0===s?f:g,w=0===s?m:y;let x=!1;r&&(c=Math.sqrt(Math.pow(f-m,2)+Math.pow(g-y,2))),v<i?w>i&&(h=l(a,f,g,m,y,i),r&&(a.start=u+c*h)):v>o?w<o&&(h=l(a,f,g,m,y,o),r&&(a.start=u+c*h)):Y(a,f,g,p),w<i&&v>=i&&(h=l(a,f,g,m,y,i),x=!0),w>o&&v<=o&&(h=l(a,f,g,m,y,o),x=!0),!n&&x&&(r&&(a.end=u+c*h),t.push(a),a=W(e)),r&&(u+=c);}let d=e.length-3;const f=e[d],g=e[d+1],p=0===s?f:g;p>=i&&p<=o&&Y(a,f,g,e[d+2]),d=a.length-3,n&&d>=3&&(a[d]!==a[0]||a[d+1]!==a[1])&&Y(a,a[0],a[1],a[2]),a.length&&t.push(a);}function W(e){const t=[];return t.size=e.size,t.start=e.start,t.end=e.end,t}function J(e,t,i,o,s,n){for(const r of e)R(r,t,i,o,s,n,!1);}function Y(e,t,i,o){e.push(t,i,o);}function q(e,t,i,o,s,n){const r=(n-t)/(o-t);return Y(e,n,i+(s-i)*r,1),r}function H(e,t,i,o,s,n){const r=(n-i)/(s-i);return Y(e,t+(o-t)*r,n,1),r}function X(e,t){const i=[];for(let o=0;o<e.length;o++){const s=e[o],n=s.type;let r;if(\"Point\"===n||\"MultiPoint\"===n||\"LineString\"===n)r=V(s.geometry,t);else if(\"MultiLineString\"===n||\"Polygon\"===n){r=[];for(const e of s.geometry)r.push(V(e,t));}else if(\"MultiPolygon\"===n){r=[];for(const e of s.geometry){const i=[];for(const o of e)i.push(V(o,t));r.push(i);}}i.push(L(s.id,n,r,s.tags));}return i}function V(e,t){const i=[];i.size=e.size,void 0!==e.start&&(i.start=e.start,i.end=e.end);for(let o=0;o<e.length;o+=3)i.push(e[o]+t,e[o+1],e[o+2]);return i}function B(e,t){if(e.transformed)return e;const i=1<<e.z,o=e.x,s=e.y;for(const n of e.features){const e=n.geometry,r=n.type;if(n.geometry=[],1===r)for(let r=0;r<e.length;r+=2)n.geometry.push($(e[r],e[r+1],t,i,o,s));else for(let r=0;r<e.length;r++){const a=[];for(let n=0;n<e[r].length;n+=2)a.push($(e[r][n],e[r][n+1],t,i,o,s));n.geometry.push(a);}}return e.transformed=!0,e}function $(e,t,i,o,s,n){return [Math.round(i*(e*o-s)),Math.round(i*(t*o-n))]}function U(e,t,i,o,s){const n=t===s.maxZoom?0:s.tolerance/((1<<t)*s.extent),r={features:[],numPoints:0,numSimplified:0,numFeatures:e.length,source:null,x:i,y:o,z:t,transformed:!1,minX:2,minY:1,maxX:-1,maxY:0};for(const t of e)K(r,t,n,s);return r}function K(e,t,i,o){const s=t.geometry,n=t.type,r=[];if(e.minX=Math.min(e.minX,t.minX),e.minY=Math.min(e.minY,t.minY),e.maxX=Math.max(e.maxX,t.maxX),e.maxY=Math.max(e.maxY,t.maxY),\"Point\"===n||\"MultiPoint\"===n)for(let t=0;t<s.length;t+=3)r.push(s[t],s[t+1]),e.numPoints++,e.numSimplified++;else if(\"LineString\"===n)Q(r,s,e,i,!1,!1);else if(\"MultiLineString\"===n||\"Polygon\"===n)for(let t=0;t<s.length;t++)Q(r,s[t],e,i,\"Polygon\"===n,0===t);else if(\"MultiPolygon\"===n)for(let t=0;t<s.length;t++){const o=s[t];for(let t=0;t<o.length;t++)Q(r,o[t],e,i,!0,0===t);}if(r.length){let i=t.tags||null;if(\"LineString\"===n&&o.lineMetrics){i={};for(const e in t.tags)i[e]=t.tags[e];i.mapbox_clip_start=s.start/s.size,i.mapbox_clip_end=s.end/s.size;}const a={geometry:r,type:\"Polygon\"===n||\"MultiPolygon\"===n?3:\"LineString\"===n||\"MultiLineString\"===n?2:1,tags:i};null!==t.id&&(a.id=t.id),e.features.push(a);}}function Q(e,t,i,o,s,n){const r=o*o;if(o>0&&t.size<(s?r:o))return void(i.numPoints+=t.length/3);const a=[];for(let e=0;e<t.length;e+=3)(0===o||t[e+2]>r)&&(i.numSimplified++,a.push(t[e],t[e+1])),i.numPoints++;s&&function(e,t){let i=0;for(let t=0,o=e.length,s=o-2;t<o;s=t,t+=2)i+=(e[t]-e[s])*(e[t+1]+e[s+1]);if(i>0===t)for(let t=0,i=e.length;t<i/2;t+=2){const o=e[t],s=e[t+1];e[t]=e[i-2-t],e[t+1]=e[i-1-t],e[i-2-t]=o,e[i-1-t]=s;}}(a,n),e.push(a);}const ee={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0};class te{constructor(e,t){const i=(t=this.options=function(e,t){for(const i in t)e[i]=t[i];return e}(Object.create(ee),t)).debug;if(i&&console.time(\"preprocess data\"),t.maxZoom<0||t.maxZoom>24)throw new Error(\"maxZoom should be in the 0-24 range\");if(t.promoteId&&t.generateId)throw new Error(\"promoteId and generateId cannot be used together.\");let o=function(e,t){const i=[];if(\"FeatureCollection\"===e.type)for(let o=0;o<e.features.length;o++)F(i,e.features[o],t,o);else F(i,\"Feature\"===e.type?e:{geometry:e},t);return i}(e,t);this.tiles={},this.tileCoords=[],i&&(console.timeEnd(\"preprocess data\"),console.log(\"index: maxZoom: %d, maxPoints: %d\",t.indexMaxZoom,t.indexMaxPoints),console.time(\"generate tiles\"),this.stats={},this.total=0),o=function(e,t){const i=t.buffer/t.extent;let o=e;const s=j(e,1,-1-i,i,0,-1,2,t),n=j(e,1,1-i,2+i,0,-1,2,t);return (s||n)&&(o=j(e,1,-i,1+i,0,-1,2,t)||[],s&&(o=X(s,1).concat(o)),n&&(o=o.concat(X(n,-1)))),o}(o,t),o.length&&this.splitTile(o,0,0,0),i&&(o.length&&console.log(\"features: %d, points: %d\",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd(\"generate tiles\"),console.log(\"tiles generated:\",this.total,JSON.stringify(this.stats)));}splitTile(e,t,i,o,s,n,r){const a=[e,t,i,o],l=this.options,c=l.debug;for(;a.length;){o=a.pop(),i=a.pop(),t=a.pop(),e=a.pop();const h=1<<t,u=ie(t,i,o);let d=this.tiles[u];if(!d&&(c>1&&console.time(\"creation\"),d=this.tiles[u]=U(e,t,i,o,l),this.tileCoords.push({z:t,x:i,y:o}),c)){c>1&&(console.log(\"tile z%d-%d-%d (features: %d, points: %d, simplified: %d)\",t,i,o,d.numFeatures,d.numPoints,d.numSimplified),console.timeEnd(\"creation\"));const e=`z${t}`;this.stats[e]=(this.stats[e]||0)+1,this.total++;}if(d.source=e,null==s){if(t===l.indexMaxZoom||d.numPoints<=l.indexMaxPoints)continue}else {if(t===l.maxZoom||t===s)continue;if(null!=s){const e=s-t;if(i!==n>>e||o!==r>>e)continue}}if(d.source=null,0===e.length)continue;c>1&&console.time(\"clipping\");const f=.5*l.buffer/l.extent,g=.5-f,p=.5+f,m=1+f;let y=null,v=null,w=null,x=null,b=j(e,h,i-f,i+p,0,d.minX,d.maxX,l),_=j(e,h,i+g,i+m,0,d.minX,d.maxX,l);e=null,b&&(y=j(b,h,o-f,o+p,1,d.minY,d.maxY,l),v=j(b,h,o+g,o+m,1,d.minY,d.maxY,l),b=null),_&&(w=j(_,h,o-f,o+p,1,d.minY,d.maxY,l),x=j(_,h,o+g,o+m,1,d.minY,d.maxY,l),_=null),c>1&&console.timeEnd(\"clipping\"),a.push(y||[],t+1,2*i,2*o),a.push(v||[],t+1,2*i,2*o+1),a.push(w||[],t+1,2*i+1,2*o),a.push(x||[],t+1,2*i+1,2*o+1);}}getTile(e,t,i){e=+e,t=+t,i=+i;const o=this.options,{extent:s,debug:n}=o;if(e<0||e>24)return null;const r=1<<e,a=ie(e,t=t+r&r-1,i);if(this.tiles[a])return B(this.tiles[a],s);n>1&&console.log(\"drilling down to z%d-%d-%d\",e,t,i);let l,c=e,h=t,u=i;for(;!l&&c>0;)c--,h>>=1,u>>=1,l=this.tiles[ie(c,h,u)];return l&&l.source?(n>1&&(console.log(\"found parent tile z%d-%d-%d\",c,h,u),console.time(\"drilling down\")),this.splitTile(l.source,c,h,u,e,t,i),n>1&&console.timeEnd(\"drilling down\"),this.tiles[a]?B(this.tiles[a],s):null):null}}function ie(e,t,i){return 32*((1<<e)*i+t)+e}class oe extends n{constructor(e,t,i,o=se){super(e,t,i),this._dataUpdateable=new Map,this._createGeoJSONIndex=o;}loadVectorTile(t,i){return e._(this,void 0,void 0,(function*(){const i=t.tileID.canonical;if(!this._geoJSONIndex)throw new Error(\"Unable to parse the data into a cluster or geojson\");const o=this._geoJSONIndex.getTile(i.z,i.x,i.y);if(!o)return null;const s=new d(o.features,{version:2,extent:e.$});let n=function(t){const i=new e.cM;return function(e,t){for(const i in e.layers)t.writeMessage(3,f,e.layers[i]);}(t,i),i.finish()}(s);return 0===n.byteOffset&&n.byteLength===n.buffer.byteLength||(n=new Uint8Array(n)),{vectorTile:s,rawData:n.buffer}}))}loadData(t){return e._(this,void 0,void 0,(function*(){var i;null===(i=this._pendingRequest)||void 0===i||i.abort();const o=!!(t&&t.request&&t.request.collectResourceTiming)&&new e.cN(t.request);this._pendingRequest=new AbortController;try{(!this._pendingData||t.request||t.data||t.dataDiff)&&(this._pendingData=this.loadAndProcessGeoJSON(t,this._pendingRequest));const e=yield this._pendingData;this._geoJSONIndex=this._createGeoJSONIndex(e,t),this.loaded={};const i={data:e};if(o){const e=o.finish();e&&(i.resourceTiming={},i.resourceTiming[t.source]=JSON.parse(JSON.stringify(e)));}return i}catch(t){if(delete this._pendingRequest,e.cy(t))return {abandoned:!0};throw t}}))}getData(){return e._(this,void 0,void 0,(function*(){return this._pendingData}))}reloadTile(e){const t=this.loaded;return t&&t[e.uid]?super.reloadTile(e):this.loadTile(e)}loadAndProcessGeoJSON(t,i){return e._(this,void 0,void 0,(function*(){let o=yield this.loadGeoJSON(t,i);if(delete this._pendingRequest,\"object\"!=typeof o)throw new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`);if(h(o,!0),t.filter){const i=e.cT(t.filter,{type:\"boolean\",\"property-type\":\"data-driven\",overridable:!1,transition:!1});if(\"error\"===i.result)throw new Error(i.value.map((e=>`${e.key}: ${e.message}`)).join(\", \"));const s=o.features.filter((e=>i.value.evaluate({zoom:0},e)));o={type:\"FeatureCollection\",features:s};}return o}))}loadGeoJSON(t,i){return e._(this,void 0,void 0,(function*(){const{promoteId:o}=t;if(t.request){const s=yield e.j(t.request,i);return this._dataUpdateable=e.cV(s.data,o)?e.cU(s.data,o):void 0,s.data}if(\"string\"==typeof t.data)try{const i=JSON.parse(t.data);return this._dataUpdateable=e.cV(i,o)?e.cU(i,o):void 0,i}catch(e){throw new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`)}if(!t.dataDiff)throw new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`);if(!this._dataUpdateable)throw new Error(`Cannot update existing geojson data in ${t.source}`);return e.cW(this._dataUpdateable,t.dataDiff,o),{type:\"FeatureCollection\",features:Array.from(this._dataUpdateable.values())}}))}removeSource(t){return e._(this,void 0,void 0,(function*(){this._pendingRequest&&this._pendingRequest.abort();}))}getClusterExpansionZoom(e){return this._geoJSONIndex.getClusterExpansionZoom(e.clusterId)}getClusterChildren(e){return this._geoJSONIndex.getChildren(e.clusterId)}getClusterLeaves(e){return this._geoJSONIndex.getLeaves(e.clusterId,e.limit,e.offset)}}function se(t,i){return i.cluster?new S(function({superclusterOptions:t,clusterProperties:i}){if(!i||!t)return t;const o={},s={},n={accumulated:null,zoom:0},r={properties:null},a=Object.keys(i);for(const t of a){const[n,r]=i[t],a=e.cT(r),l=e.cT(\"string\"==typeof n?[n,[\"accumulated\"],[\"get\",t]]:n);o[t]=a.value,s[t]=l.value;}return t.map=e=>{r.properties=e;const t={};for(const e of a)t[e]=o[e].evaluate(n,r);return t},t.reduce=(e,t)=>{r.properties=t;for(const t of a)n.accumulated=e[t],e[t]=s[t].evaluate(n,r);},t}(i)).load(t.features):function(e,t){return new te(e,t)}(t,i.geojsonVtOptions)}class ne{constructor(t){this.self=t,this.actor=new e.J(t),this.layerIndexes={},this.availableImages={},this.workerSources={},this.demWorkerSources={},this.externalWorkerSourceTypes={},this.globalStates=new Map,this.self.registerWorkerSource=(e,t)=>{if(this.externalWorkerSourceTypes[e])throw new Error(`Worker source with name \"${e}\" already registered.`);this.externalWorkerSourceTypes[e]=t;},this.self.addProtocol=e.cA,this.self.removeProtocol=e.cB,this.self.registerRTLTextPlugin=t=>{e.cX.setMethods(t);},this.actor.registerMessageHandler(\"LDT\",((e,t)=>this._getDEMWorkerSource(e,t.source).loadTile(t))),this.actor.registerMessageHandler(\"RDT\",((t,i)=>e._(this,void 0,void 0,(function*(){this._getDEMWorkerSource(t,i.source).removeTile(i);})))),this.actor.registerMessageHandler(\"GCEZ\",((t,i)=>e._(this,void 0,void 0,(function*(){return this._getWorkerSource(t,i.type,i.source).getClusterExpansionZoom(i)})))),this.actor.registerMessageHandler(\"GCC\",((t,i)=>e._(this,void 0,void 0,(function*(){return this._getWorkerSource(t,i.type,i.source).getClusterChildren(i)})))),this.actor.registerMessageHandler(\"GCL\",((t,i)=>e._(this,void 0,void 0,(function*(){return this._getWorkerSource(t,i.type,i.source).getClusterLeaves(i)})))),this.actor.registerMessageHandler(\"LD\",((e,t)=>this._getWorkerSource(e,t.type,t.source).loadData(t))),this.actor.registerMessageHandler(\"GD\",((e,t)=>this._getWorkerSource(e,t.type,t.source).getData())),this.actor.registerMessageHandler(\"LT\",((e,t)=>this._getWorkerSource(e,t.type,t.source).loadTile(t))),this.actor.registerMessageHandler(\"RT\",((e,t)=>this._getWorkerSource(e,t.type,t.source).reloadTile(t))),this.actor.registerMessageHandler(\"AT\",((e,t)=>this._getWorkerSource(e,t.type,t.source).abortTile(t))),this.actor.registerMessageHandler(\"RMT\",((e,t)=>this._getWorkerSource(e,t.type,t.source).removeTile(t))),this.actor.registerMessageHandler(\"RS\",((t,i)=>e._(this,void 0,void 0,(function*(){if(!this.workerSources[t]||!this.workerSources[t][i.type]||!this.workerSources[t][i.type][i.source])return;const e=this.workerSources[t][i.type][i.source];delete this.workerSources[t][i.type][i.source],void 0!==e.removeSource&&e.removeSource(i);})))),this.actor.registerMessageHandler(\"RM\",(t=>e._(this,void 0,void 0,(function*(){delete this.layerIndexes[t],delete this.availableImages[t],delete this.workerSources[t],delete this.demWorkerSources[t],this.globalStates.delete(t);})))),this.actor.registerMessageHandler(\"SR\",((t,i)=>e._(this,void 0,void 0,(function*(){this.referrer=i;})))),this.actor.registerMessageHandler(\"SRPS\",((e,t)=>this._syncRTLPluginState(e,t))),this.actor.registerMessageHandler(\"IS\",((t,i)=>e._(this,void 0,void 0,(function*(){this.self.importScripts(i);})))),this.actor.registerMessageHandler(\"SI\",((e,t)=>this._setImages(e,t))),this.actor.registerMessageHandler(\"UL\",((t,i)=>e._(this,void 0,void 0,(function*(){this._getLayerIndex(t).update(i.layers,i.removedIds,this._getGlobalState(t));})))),this.actor.registerMessageHandler(\"UGS\",((t,i)=>e._(this,void 0,void 0,(function*(){const e=this._getGlobalState(t);for(const t in i)e[t]=i[t];})))),this.actor.registerMessageHandler(\"SL\",((t,i)=>e._(this,void 0,void 0,(function*(){this._getLayerIndex(t).replace(i,this._getGlobalState(t));}))));}_getGlobalState(e){let t=this.globalStates.get(e);return t||(t={},this.globalStates.set(e,t)),t}_setImages(t,i){return e._(this,void 0,void 0,(function*(){this.availableImages[t]=i;for(const e in this.workerSources[t]){const o=this.workerSources[t][e];for(const e in o)o[e].availableImages=i;}}))}_syncRTLPluginState(t,i){return e._(this,void 0,void 0,(function*(){return yield e.cX.syncState(i,this.self.importScripts)}))}_getAvailableImages(e){let t=this.availableImages[e];return t||(t=[]),t}_getLayerIndex(e){let i=this.layerIndexes[e];return i||(i=this.layerIndexes[e]=new t),i}_getWorkerSource(e,t,i){if(this.workerSources[e]||(this.workerSources[e]={}),this.workerSources[e][t]||(this.workerSources[e][t]={}),!this.workerSources[e][t][i]){const o={sendAsync:(t,i)=>(t.targetMapId=e,this.actor.sendAsync(t,i))};switch(t){case \"vector\":this.workerSources[e][t][i]=new n(o,this._getLayerIndex(e),this._getAvailableImages(e));break;case \"geojson\":this.workerSources[e][t][i]=new oe(o,this._getLayerIndex(e),this._getAvailableImages(e));break;default:this.workerSources[e][t][i]=new this.externalWorkerSourceTypes[t](o,this._getLayerIndex(e),this._getAvailableImages(e));}}return this.workerSources[e][t][i]}_getDEMWorkerSource(e,t){return this.demWorkerSources[e]||(this.demWorkerSources[e]={}),this.demWorkerSources[e][t]||(this.demWorkerSources[e][t]=new r),this.demWorkerSources[e][t]}}return e.i(self)&&(self.worker=new ne(self)),ne}));\n\ndefine(\"index\",[\"exports\",\"./shared\"],(function(e,t){\"use strict\";var i=\"5.10.0\";function o(){var e=new t.A(4);return t.A!=Float32Array&&(e[1]=0,e[2]=0),e[0]=1,e[3]=1,e}let a,r;const s={frame(e,i,o){const a=requestAnimationFrame((e=>{r(),i(e);})),{unsubscribe:r}=t.s(e.signal,\"abort\",(()=>{r(),cancelAnimationFrame(a),o(t.c());}),!1);},frameAsync(e){return new Promise(((t,i)=>{this.frame(e,t,i);}))},getImageData(e,t=0){return this.getImageCanvasContext(e).getImageData(-t,-t,e.width+2*t,e.height+2*t)},getImageCanvasContext(e){const t=window.document.createElement(\"canvas\"),i=t.getContext(\"2d\",{willReadFrequently:!0});if(!i)throw new Error(\"failed to create canvas 2d context\");return t.width=e.width,t.height=e.height,i.drawImage(e,0,0,e.width,e.height),i},resolveURL:e=>(a||(a=document.createElement(\"a\")),a.href=e,a.href),hardwareConcurrency:\"undefined\"!=typeof navigator&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return !!matchMedia&&(null==r&&(r=matchMedia(\"(prefers-reduced-motion: reduce)\")),r.matches)}},n=new class{constructor(){this._realTime=\"undefined\"!=typeof performance&&performance&&performance.now?performance.now.bind(performance):Date.now.bind(Date),this._frozenAt=null;}getCurrentTime(){return null!==this._frozenAt?this._frozenAt:this._realTime()}setNow(e){this._frozenAt=e;}restoreNow(){this._frozenAt=null;}isFrozen(){return null!==this._frozenAt}};function l(){return n.getCurrentTime()}class c{static testProp(e){if(!c.docStyle)return e[0];for(let t=0;t<e.length;t++)if(e[t]in c.docStyle)return e[t];return e[0]}static create(e,t,i){const o=window.document.createElement(e);return void 0!==t&&(o.className=t),i&&i.appendChild(o),o}static createNS(e,t){return window.document.createElementNS(e,t)}static disableDrag(){c.docStyle&&c.selectProp&&(c.userSelect=c.docStyle[c.selectProp],c.docStyle[c.selectProp]=\"none\");}static enableDrag(){c.docStyle&&c.selectProp&&(c.docStyle[c.selectProp]=c.userSelect);}static setTransform(e,t){e.style[c.transformProp]=t;}static addEventListener(e,t,i,o={}){e.addEventListener(t,i,\"passive\"in o?o:o.capture);}static removeEventListener(e,t,i,o={}){e.removeEventListener(t,i,\"passive\"in o?o:o.capture);}static suppressClickInternal(e){e.preventDefault(),e.stopPropagation(),window.removeEventListener(\"click\",c.suppressClickInternal,!0);}static suppressClick(){window.addEventListener(\"click\",c.suppressClickInternal,!0),window.setTimeout((()=>{window.removeEventListener(\"click\",c.suppressClickInternal,!0);}),0);}static getScale(e){const t=e.getBoundingClientRect();return {x:t.width/e.offsetWidth||1,y:t.height/e.offsetHeight||1,boundingClientRect:t}}static getPoint(e,i,o){const a=i.boundingClientRect;return new t.P((o.clientX-a.left)/i.x-e.clientLeft,(o.clientY-a.top)/i.y-e.clientTop)}static mousePos(e,t){const i=c.getScale(e);return c.getPoint(e,i,t)}static touchPos(e,t){const i=[],o=c.getScale(e);for(let a=0;a<t.length;a++)i.push(c.getPoint(e,o,t[a]));return i}static mouseButton(e){return e.button}static remove(e){e.parentNode&&e.parentNode.removeChild(e);}static sanitize(e){const t=(new DOMParser).parseFromString(e,\"text/html\").body||document.createElement(\"body\"),i=t.querySelectorAll(\"script\");for(const e of i)e.remove();return c.clean(t),t.innerHTML}static isPossiblyDangerous(e,t){const i=t.replace(/\\s+/g,\"\").toLowerCase();return !(![\"src\",\"href\",\"xlink:href\"].includes(e)||!i.includes(\"javascript:\")&&!i.includes(\"data:\"))||!!e.startsWith(\"on\")||void 0}static clean(e){const t=e.children;for(const e of t)c.removeAttributes(e),c.clean(e);}static removeAttributes(e){for(const{name:t,value:i}of e.attributes)c.isPossiblyDangerous(t,i)&&e.removeAttribute(t);}}c.docStyle=\"undefined\"!=typeof window&&window.document&&window.document.documentElement.style,c.selectProp=c.testProp([\"userSelect\",\"MozUserSelect\",\"WebkitUserSelect\",\"msUserSelect\"]),c.transformProp=c.testProp([\"transform\",\"WebkitTransform\"]);const h={supported:!1,testSupport:function(e){!_&&d&&(p?m(e):u=e);}};let u,d,_=!1,p=!1;function m(e){const t=e.createTexture();e.bindTexture(e.TEXTURE_2D,t);try{if(e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,d),e.isContextLost())return;h.supported=!0;}catch(e){}e.deleteTexture(t),_=!0;}var f;\"undefined\"!=typeof document&&(d=document.createElement(\"img\"),d.onload=()=>{u&&m(u),u=null,p=!0;},d.onerror=()=>{_=!0,u=null;},d.src=\"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=\"),function(e){let i,o,a,r;e.resetRequestQueue=()=>{i=[],o=0,a=0,r={};},e.addThrottleControl=e=>{const t=a++;return r[t]=e,t},e.removeThrottleControl=e=>{delete r[e],n();},e.getImage=(e,o,a=!0)=>new Promise(((r,s)=>{h.supported&&(e.headers||(e.headers={}),e.headers.accept=\"image/webp,*/*\"),t.e(e,{type:\"image\"}),i.push({abortController:o,requestParameters:e,supportImageRefresh:a,state:\"queued\",onError:e=>{s(e);},onSuccess:e=>{r(e);}}),n();}));const s=e=>t._(this,void 0,void 0,(function*(){e.state=\"running\";const{requestParameters:i,supportImageRefresh:a,onError:r,onSuccess:s,abortController:c}=e,h=!1===a&&!t.i(self)&&!t.g(i.url)&&(!i.headers||Object.keys(i.headers).reduce(((e,t)=>e&&\"accept\"===t),!0));o++;const u=h?l(i,c):t.m(i,c);try{const i=yield u;delete e.abortController,e.state=\"completed\",i.data instanceof HTMLImageElement||t.b(i.data)?s(i):i.data&&s({data:yield(d=i.data,\"function\"==typeof createImageBitmap?t.f(d):t.h(d)),cacheControl:i.cacheControl,expires:i.expires});}catch(t){delete e.abortController,r(t);}finally{o--,n();}var d;})),n=()=>{const e=(()=>{for(const e of Object.keys(r))if(r[e]())return !0;return !1})()?t.a.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:t.a.MAX_PARALLEL_IMAGE_REQUESTS;for(let t=o;t<e&&i.length>0;t++){const e=i.shift();e.abortController.signal.aborted?t--:s(e);}},l=(e,i)=>new Promise(((o,a)=>{const r=new Image,s=e.url,n=e.credentials;n&&\"include\"===n?r.crossOrigin=\"use-credentials\":(n&&\"same-origin\"===n||!t.d(s))&&(r.crossOrigin=\"anonymous\"),i.signal.addEventListener(\"abort\",(()=>{r.src=\"\",a(t.c());})),r.fetchPriority=\"high\",r.onload=()=>{r.onerror=r.onload=null,o({data:r});},r.onerror=()=>{r.onerror=r.onload=null,i.signal.aborted||a(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.\"));},r.src=s;}));}(f||(f={})),f.resetRequestQueue();class g{constructor(e){this._transformRequestFn=null!=e?e:null;}transformRequest(e,t){return this._transformRequestFn&&this._transformRequestFn(e,t)||{url:e}}setTransformRequest(e){this._transformRequestFn=e;}}function v(e){const t=[];if(\"string\"==typeof e)t.push({id:\"default\",url:e});else if(e&&e.length>0){const i=[];for(const{id:o,url:a}of e){const e=`${o}${a}`;-1===i.indexOf(e)&&(i.push(e),t.push({id:o,url:a}));}}return t}function x(e,t,i){try{const o=new URL(e);return o.pathname+=`${t}${i}`,o.toString()}catch(t){throw new Error(`Invalid sprite URL \"${e}\", must be absolute. Modify style specification directly or use TransformStyleFunction to correct the issue dynamically`)}}function b(e){const{userImage:t}=e;return !!(t&&t.render&&t.render())&&(e.data.replace(new Uint8Array(t.data.buffer)),!0)}class y extends t.E{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new t.R({width:1,height:1}),this.dirty=!0;}isLoaded(){return this.loaded}setLoaded(e){if(this.loaded!==e&&(this.loaded=e,e)){for(const{ids:e,promiseResolve:t}of this.requestors)t(this._getImagesForIds(e));this.requestors=[];}}getImage(e){const i=this.images[e];if(i&&!i.data&&i.spriteData){const e=i.spriteData;i.data=new t.R({width:e.width,height:e.height},e.context.getImageData(e.x,e.y,e.width,e.height).data),i.spriteData=null;}return i}addImage(e,t){if(this.images[e])throw new Error(`Image id ${e} already exist, use updateImage instead`);this._validate(e,t)&&(this.images[e]=t);}_validate(e,i){let o=!0;const a=i.data||i.spriteData;return this._validateStretch(i.stretchX,a&&a.width)||(this.fire(new t.k(new Error(`Image \"${e}\" has invalid \"stretchX\" value`))),o=!1),this._validateStretch(i.stretchY,a&&a.height)||(this.fire(new t.k(new Error(`Image \"${e}\" has invalid \"stretchY\" value`))),o=!1),this._validateContent(i.content,i)||(this.fire(new t.k(new Error(`Image \"${e}\" has invalid \"content\" value`))),o=!1),o}_validateStretch(e,t){if(!e)return !0;let i=0;for(const o of e){if(o[0]<i||o[1]<o[0]||t<o[1])return !1;i=o[1];}return !0}_validateContent(e,t){if(!e)return !0;if(4!==e.length)return !1;const i=t.spriteData,o=i&&i.width||t.data.width,a=i&&i.height||t.data.height;return !(e[0]<0||o<e[0]||e[1]<0||a<e[1]||e[2]<0||o<e[2]||e[3]<0||a<e[3]||e[2]<e[0]||e[3]<e[1])}updateImage(e,t,i=!0){const o=this.getImage(e);if(i&&(o.data.width!==t.data.width||o.data.height!==t.data.height))throw new Error(`size mismatch between old image (${o.data.width}x${o.data.height}) and new image (${t.data.width}x${t.data.height}).`);t.version=o.version+1,this.images[e]=t,this.updatedImages[e]=!0;}removeImage(e){const t=this.images[e];delete this.images[e],delete this.patterns[e],t.userImage&&t.userImage.onRemove&&t.userImage.onRemove();}listImages(){return Object.keys(this.images)}getImages(e){return new Promise(((t,i)=>{let o=!0;if(!this.isLoaded())for(const t of e)this.images[t]||(o=!1);this.isLoaded()||o?t(this._getImagesForIds(e)):this.requestors.push({ids:e,promiseResolve:t});}))}_getImagesForIds(e){const i={};for(const o of e){let e=this.getImage(o);e||(this.fire(new t.l(\"styleimagemissing\",{id:o})),e=this.getImage(o)),e?i[o]={data:e.data.clone(),pixelRatio:e.pixelRatio,sdf:e.sdf,version:e.version,stretchX:e.stretchX,stretchY:e.stretchY,content:e.content,textFitWidth:e.textFitWidth,textFitHeight:e.textFitHeight,hasRenderCallback:Boolean(e.userImage&&e.userImage.render)}:t.w(`Image \"${o}\" could not be loaded. Please make sure you have added the image with map.addImage() or a \"sprite\" property in your style. You can provide missing images by listening for the \"styleimagemissing\" map event.`);}return i}getPixelSize(){const{width:e,height:t}=this.atlasImage;return {width:e,height:t}}getPattern(e){const i=this.patterns[e],o=this.getImage(e);if(!o)return null;if(i&&i.position.version===o.version)return i.position;if(i)i.position.version=o.version;else {const i={w:o.data.width+2,h:o.data.height+2,x:0,y:0},a=new t.I(i,o);this.patterns[e]={bin:i,position:a};}return this._updatePatternAtlas(),this.patterns[e].position}bind(e){const i=e.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new t.T(e,this.atlasImage,i.RGBA),this.atlasTexture.bind(i.LINEAR,i.CLAMP_TO_EDGE);}_updatePatternAtlas(){const e=[];for(const t in this.patterns)e.push(this.patterns[t].bin);const{w:i,h:o}=t.p(e),a=this.atlasImage;a.resize({width:i||1,height:o||1});for(const e in this.patterns){const{bin:i}=this.patterns[e],o=i.x+1,r=i.y+1,s=this.getImage(e).data,n=s.width,l=s.height;t.R.copy(s,a,{x:0,y:0},{x:o,y:r},{width:n,height:l}),t.R.copy(s,a,{x:0,y:l-1},{x:o,y:r-1},{width:n,height:1}),t.R.copy(s,a,{x:0,y:0},{x:o,y:r+l},{width:n,height:1}),t.R.copy(s,a,{x:n-1,y:0},{x:o-1,y:r},{width:1,height:l}),t.R.copy(s,a,{x:0,y:0},{x:o+n,y:r},{width:1,height:l});}this.dirty=!0;}beginFrame(){this.callbackDispatchedThisFrame={};}dispatchRenderCallbacks(e){for(const i of e){if(this.callbackDispatchedThisFrame[i])continue;this.callbackDispatchedThisFrame[i]=!0;const e=this.getImage(i);e||t.w(`Image with ID: \"${i}\" was not found`),b(e)&&this.updateImage(i,e);}}}const w=1e20;function T(e,t,i,o,a,r,s,n,l){for(let c=t;c<t+o;c++)P(e,i*r+c,r,a,s,n,l);for(let c=i;c<i+a;c++)P(e,c*r+t,1,o,s,n,l);}function P(e,t,i,o,a,r,s){r[0]=0,s[0]=-w,s[1]=w,a[0]=e[t];for(let n=1,l=0,c=0;n<o;n++){a[n]=e[t+n*i];const o=n*n;do{const e=r[l];c=(a[n]-a[e]+o-e*e)/(n-e)/2;}while(c<=s[l]&&--l>-1);l++,r[l]=n,s[l]=c,s[l+1]=w;}for(let n=0,l=0;n<o;n++){for(;s[l+1]<n;)l++;const o=r[l],c=n-o;e[t+n*i]=a[o]+c*c;}}class C{constructor(e,t,i){this.requestManager=e,this.localIdeographFontFamily=t,this.entries={},this.lang=i;}setURL(e){this.url=e;}getGlyphs(e){return t._(this,void 0,void 0,(function*(){const t=[];for(const i in e)for(const o of e[i])t.push(this._getAndCacheGlyphsPromise(i,o));const i=yield Promise.all(t),o={};for(const{stack:e,id:t,glyph:a}of i)o[e]||(o[e]={}),o[e][t]=a&&{id:a.id,bitmap:a.bitmap.clone(),metrics:a.metrics};return o}))}_getAndCacheGlyphsPromise(e,i){return t._(this,void 0,void 0,(function*(){let t=this.entries[e];t||(t=this.entries[e]={glyphs:{},requests:{},ranges:{}});let o=t.glyphs[i];if(void 0!==o)return {stack:e,id:i,glyph:o};if(o=this._tinySDF(t,e,i),o)return t.glyphs[i]=o,{stack:e,id:i,glyph:o};const a=Math.floor(i/256);if(256*a>65535)throw new Error(\"glyphs > 65535 not supported\");if(t.ranges[a])return {stack:e,id:i,glyph:o};if(!this.url)throw new Error(\"glyphsUrl is not set\");if(!t.requests[a]){const i=C.loadGlyphRange(e,a,this.url,this.requestManager);t.requests[a]=i;}const r=yield t.requests[a];for(const e in r)this._doesCharSupportLocalGlyph(+e)||(t.glyphs[+e]=r[+e]);return t.ranges[a]=!0,{stack:e,id:i,glyph:r[i]||null}}))}_doesCharSupportLocalGlyph(e){return !!this.localIdeographFontFamily&&(/\\p{Ideo}|\\p{sc=Hang}|\\p{sc=Hira}|\\p{sc=Kana}/u.test(String.fromCodePoint(e))||t.u[\"CJK Unified Ideographs\"](e)||t.u[\"Hangul Syllables\"](e)||t.u.Hiragana(e)||t.u.Katakana(e)||t.u[\"CJK Symbols and Punctuation\"](e)||t.u[\"Halfwidth and Fullwidth Forms\"](e))}_tinySDF(e,i,o){const a=this.localIdeographFontFamily;if(!a)return;if(!this._doesCharSupportLocalGlyph(o))return;let r=e.tinySDF;if(!r){let t=\"400\";/bold/i.test(i)?t=\"900\":/medium/i.test(i)?t=\"500\":/light/i.test(i)&&(t=\"200\"),r=e.tinySDF=new C.TinySDF({fontSize:48,buffer:6,radius:16,cutoff:.25,lang:this.lang,fontFamily:a,fontWeight:t});}const s=r.draw(String.fromCharCode(o));return {id:o,bitmap:new t.q({width:s.width||60,height:s.height||60},s.data),metrics:{width:s.glyphWidth/2||24,height:s.glyphHeight/2||24,left:s.glyphLeft/2+.5||0,top:s.glyphTop/2-27.5||-8,advance:s.glyphAdvance/2||24,isDoubleResolution:!0}}}}C.loadGlyphRange=function(e,i,o,a){return t._(this,void 0,void 0,(function*(){const r=256*i,s=r+255,n=a.transformRequest(o.replace(\"{fontstack}\",e).replace(\"{range}\",`${r}-${s}`),\"Glyphs\"),l=yield t.n(n,new AbortController);if(!l||!l.data)throw new Error(`Could not load glyph range. range: ${i}, ${r}-${s}`);const c={};for(const e of t.o(l.data))c[e.id]=e;return c}))},C.TinySDF=class{constructor({fontSize:e=24,buffer:t=3,radius:i=8,cutoff:o=.25,fontFamily:a=\"sans-serif\",fontWeight:r=\"normal\",fontStyle:s=\"normal\",lang:n=null}={}){this.buffer=t,this.cutoff=o,this.radius=i,this.lang=n;const l=this.size=e+4*t,c=this._createCanvas(l),h=this.ctx=c.getContext(\"2d\",{willReadFrequently:!0});h.font=`${s} ${r} ${e}px ${a}`,h.textBaseline=\"alphabetic\",h.textAlign=\"left\",h.fillStyle=\"black\",this.gridOuter=new Float64Array(l*l),this.gridInner=new Float64Array(l*l),this.f=new Float64Array(l),this.z=new Float64Array(l+1),this.v=new Uint16Array(l);}_createCanvas(e){const t=document.createElement(\"canvas\");return t.width=t.height=e,t}draw(e){const{width:t,actualBoundingBoxAscent:i,actualBoundingBoxDescent:o,actualBoundingBoxLeft:a,actualBoundingBoxRight:r}=this.ctx.measureText(e),s=Math.ceil(i),n=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(r-a))),l=Math.min(this.size-this.buffer,s+Math.ceil(o)),c=n+2*this.buffer,h=l+2*this.buffer,u=Math.max(c*h,0),d=new Uint8ClampedArray(u),_={data:d,width:c,height:h,glyphWidth:n,glyphHeight:l,glyphTop:s,glyphLeft:0,glyphAdvance:t};if(0===n||0===l)return _;const{ctx:p,buffer:m,gridInner:f,gridOuter:g}=this;this.lang&&(p.lang=this.lang),p.clearRect(m,m,n,l),p.fillText(e,m,m+s);const v=p.getImageData(m,m,n,l);g.fill(w,0,u),f.fill(0,0,u);for(let e=0;e<l;e++)for(let t=0;t<n;t++){const i=v.data[4*(e*n+t)+3]/255;if(0===i)continue;const o=(e+m)*c+t+m;if(1===i)g[o]=0,f[o]=w;else {const e=.5-i;g[o]=e>0?e*e:0,f[o]=e<0?e*e:0;}}T(g,0,0,c,h,c,this.f,this.v,this.z),T(f,m,m,n,l,c,this.f,this.v,this.z);for(let e=0;e<u;e++){const t=Math.sqrt(g[e])-Math.sqrt(f[e]);d[e]=Math.round(255-255*(t/this.radius+this.cutoff));}return _}};class I{constructor(){this.specification=t.v.light.position;}possiblyEvaluate(e,i){return t.B(e.expression.evaluate(i))}interpolate(e,i,o){return {x:t.C.number(e.x,i.x,o),y:t.C.number(e.y,i.y,o),z:t.C.number(e.z,i.z,o)}}}let M;class S extends t.E{constructor(e){super(),M=M||new t.r({anchor:new t.D(t.v.light.anchor),position:new I,color:new t.D(t.v.light.color),intensity:new t.D(t.v.light.intensity)}),this._transitionable=new t.t(M,void 0),this.setLight(e),this._transitioning=this._transitionable.untransitioned();}getLight(){return this._transitionable.serialize()}setLight(e,i={}){if(!this._validate(t.x,e,i))for(const t in e){const i=e[t];t.endsWith(\"-transition\")?this._transitionable.setTransition(t.slice(0,-11),i):this._transitionable.setValue(t,i);}}updateTransitions(e){this._transitioning=this._transitionable.transitioned(e,this._transitioning);}hasTransition(){return this._transitioning.hasTransition()}recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e);}_validate(e,i,o){return (!o||!1!==o.validate)&&t.y(this,e.call(t.z,{value:i,style:{glyphs:!0,sprite:!0},styleSpec:t.v}))}}const E=new t.r({\"sky-color\":new t.D(t.v.sky[\"sky-color\"]),\"horizon-color\":new t.D(t.v.sky[\"horizon-color\"]),\"fog-color\":new t.D(t.v.sky[\"fog-color\"]),\"fog-ground-blend\":new t.D(t.v.sky[\"fog-ground-blend\"]),\"horizon-fog-blend\":new t.D(t.v.sky[\"horizon-fog-blend\"]),\"sky-horizon-blend\":new t.D(t.v.sky[\"sky-horizon-blend\"]),\"atmosphere-blend\":new t.D(t.v.sky[\"atmosphere-blend\"])});class R extends t.E{constructor(e){super(),this._transitionable=new t.t(E,void 0),this.setSky(e),this._transitioning=this._transitionable.untransitioned(),this.recalculate(new t.F(0));}setSky(e,i={}){if(!this._validate(t.G,e,i)){e||(e={\"sky-color\":\"transparent\",\"horizon-color\":\"transparent\",\"fog-color\":\"transparent\",\"fog-ground-blend\":1,\"atmosphere-blend\":0});for(const t in e){const i=e[t];t.endsWith(\"-transition\")?this._transitionable.setTransition(t.slice(0,-11),i):this._transitionable.setValue(t,i);}}}getSky(){return this._transitionable.serialize()}updateTransitions(e){this._transitioning=this._transitionable.transitioned(e,this._transitioning);}hasTransition(){return this._transitioning.hasTransition()}recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e);}_validate(e,i,o={}){return !1!==(null==o?void 0:o.validate)&&t.y(this,e.call(t.z,t.e({value:i,style:{glyphs:!0,sprite:!0},styleSpec:t.v})))}calculateFogBlendOpacity(e){return e<60?0:e<70?(e-60)/10:1}}class D{constructor(e,t){this.width=e,this.height=t,this.nextRow=0,this.data=new Uint8Array(this.width*this.height),this.dashEntry={};}getDash(e,t){const i=e.join(\",\")+String(t);return this.dashEntry[i]||(this.dashEntry[i]=this.addDash(e,t)),this.dashEntry[i]}getDashRanges(e,t,i){const o=[];let a=e.length%2==1?-e[e.length-1]*i:0,r=e[0]*i,s=!0;o.push({left:a,right:r,isDash:s,zeroLength:0===e[0]});let n=e[0];for(let t=1;t<e.length;t++){s=!s;const l=e[t];a=n*i,n+=l,r=n*i,o.push({left:a,right:r,isDash:s,zeroLength:0===l});}return o}addRoundDash(e,t,i){const o=t/2;for(let t=-i;t<=i;t++){const a=this.width*(this.nextRow+i+t);let r=0,s=e[r];for(let n=0;n<this.width;n++){n/s.right>1&&(s=e[++r]);const l=Math.abs(n-s.left),c=Math.abs(n-s.right),h=Math.min(l,c);let u;const d=t/i*(o+1);if(s.isDash){const e=o-Math.abs(d);u=Math.sqrt(h*h+e*e);}else u=o-Math.sqrt(h*h+d*d);this.data[a+n]=Math.max(0,Math.min(255,u+128));}}}addRegularDash(e){for(let t=e.length-1;t>=0;--t){const i=e[t],o=e[t+1];i.zeroLength?e.splice(t,1):o&&o.isDash===i.isDash&&(o.left=i.left,e.splice(t,1));}const t=e[0],i=e[e.length-1];t.isDash===i.isDash&&(t.left=i.left-this.width,i.right=t.right+this.width);const o=this.width*this.nextRow;let a=0,r=e[a];for(let t=0;t<this.width;t++){t/r.right>1&&(r=e[++a]);const i=Math.abs(t-r.left),s=Math.abs(t-r.right),n=Math.min(i,s);this.data[o+t]=Math.max(0,Math.min(255,(r.isDash?n:-n)+128));}}addDash(e,i){const o=i?7:0,a=2*o+1;if(this.nextRow+a>this.height)return t.w(\"LineAtlas out of space\"),null;let r=0;for(let t=0;t<e.length;t++)r+=e[t];if(0!==r){const t=this.width/r,a=this.getDashRanges(e,this.width,t);i?this.addRoundDash(a,t,o):this.addRegularDash(a);}const s={y:this.nextRow+o,height:2*o,width:r};return this.nextRow+=a,this.dirty=!0,s}bind(e){const t=e.gl;this.texture?(t.bindTexture(t.TEXTURE_2D,this.texture),this.dirty&&(this.dirty=!1,t.texSubImage2D(t.TEXTURE_2D,0,0,0,this.width,this.height,t.ALPHA,t.UNSIGNED_BYTE,this.data))):(this.texture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.texture),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.REPEAT),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.REPEAT),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texImage2D(t.TEXTURE_2D,0,t.ALPHA,this.width,this.height,0,t.ALPHA,t.UNSIGNED_BYTE,this.data));}}const z=\"maplibre_preloaded_worker_pool\";class A{constructor(){this.active={};}acquire(e){if(!this.workers)for(this.workers=[];this.workers.length<A.workerCount;)this.workers.push(new Worker(t.a.WORKER_URL));return this.active[e]=!0,this.workers.slice()}release(e){delete this.active[e],0===this.numActive()&&(this.workers.forEach((e=>{e.terminate();})),this.workers=null);}isPreloaded(){return !!this.active[z]}numActive(){return Object.keys(this.active).length}}const L=Math.floor(s.hardwareConcurrency/2);let k,F;function B(){return k||(k=new A),k}A.workerCount=t.H(globalThis)?Math.max(Math.min(L,3),1):1;class O{constructor(e,i){this.workerPool=e,this.actors=[],this.currentActor=0,this.id=i;const o=this.workerPool.acquire(i);for(let e=0;e<o.length;e++){const a=new t.J(o[e],i);a.name=`Worker ${e}`,this.actors.push(a);}if(!this.actors.length)throw new Error(\"No actors found\")}broadcast(e,t){const i=[];for(const o of this.actors)i.push(o.sendAsync({type:e,data:t}));return Promise.all(i)}getActor(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]}remove(e=!0){this.actors.forEach((e=>{e.remove();})),this.actors=[],e&&this.workerPool.release(this.id);}registerMessageHandler(e,t){for(const i of this.actors)i.registerMessageHandler(e,t);}}function j(){return F||(F=new O(B(),t.K),F.registerMessageHandler(\"GR\",((e,i,o)=>t.m(i,o)))),F}function N(e,i){const o=t.L();return t.M(o,o,[1,1,0]),t.N(o,o,[.5*e.width,.5*e.height,1]),e.calculatePosMatrix?t.O(o,o,e.calculatePosMatrix(i.toUnwrapped())):o}function Z(e,t,i,o,a,r,s){var n;const l=function(e,t,i){if(e)for(const o of e){const e=t[o];if(e&&e.source===i&&\"fill-extrusion\"===e.type)return !0}else for(const e in t){const o=t[e];if(o.source===i&&\"fill-extrusion\"===o.type)return !0}return !1}(null!==(n=null==a?void 0:a.layers)&&void 0!==n?n:null,t,e.id),c=r.maxPitchScaleFactor(),h=e.tilesIn(o,c,l);h.sort(U);const u=[];for(const o of h)u.push({wrappedTileID:o.tileID.wrapped().key,queryResults:o.tile.queryRenderedFeatures(t,i,e._state,o.queryGeometry,o.cameraQueryGeometry,o.scale,a,r,c,N(e.transform,o.tileID),s?(e,t)=>s(o.tileID,e,t):void 0)});return function(e,t){for(const i in e)for(const o of e[i])G(o,t);return e}(function(e){const t={},i={};for(const o of e){const e=o.queryResults,a=o.wrappedTileID,r=i[a]=i[a]||{};for(const i in e){const o=e[i],a=r[i]=r[i]||{},s=t[i]=t[i]||[];for(const e of o)a[e.featureIndex]||(a[e.featureIndex]=!0,s.push(e));}}return t}(u),e)}function U(e,t){const i=e.tileID,o=t.tileID;return i.overscaledZ-o.overscaledZ||i.canonical.y-o.canonical.y||i.wrap-o.wrap||i.canonical.x-o.canonical.x}function G(e,t){const i=e.feature,o=t.getFeatureState(i.layer[\"source-layer\"],i.id);i.source=i.layer.source,i.layer[\"source-layer\"]&&(i.sourceLayer=i.layer[\"source-layer\"]),i.state=o;}function V(e,i,o){return t._(this,void 0,void 0,(function*(){let a=e;if(e.url?a=(yield t.j(i.transformRequest(e.url,\"Source\"),o)).data:yield s.frameAsync(o),!a)return null;const r=t.Q(t.e(a,e),[\"tiles\",\"minzoom\",\"maxzoom\",\"attribution\",\"bounds\",\"scheme\",\"tileSize\",\"encoding\"]);return \"vector_layers\"in a&&a.vector_layers&&(r.vectorLayerIds=a.vector_layers.map((e=>e.id))),r}))}class ${constructor(e,t){e&&(t?this.setSouthWest(e).setNorthEast(t):Array.isArray(e)&&(4===e.length?this.setSouthWest([e[0],e[1]]).setNorthEast([e[2],e[3]]):this.setSouthWest(e[0]).setNorthEast(e[1])));}setNorthEast(e){return this._ne=e instanceof t.S?new t.S(e.lng,e.lat):t.S.convert(e),this}setSouthWest(e){return this._sw=e instanceof t.S?new t.S(e.lng,e.lat):t.S.convert(e),this}extend(e){const i=this._sw,o=this._ne;let a,r;if(e instanceof t.S)a=e,r=e;else {if(!(e instanceof $))return Array.isArray(e)?4===e.length||e.every(Array.isArray)?this.extend($.convert(e)):this.extend(t.S.convert(e)):e&&(\"lng\"in e||\"lon\"in e)&&\"lat\"in e?this.extend(t.S.convert(e)):this;if(a=e._sw,r=e._ne,!a||!r)return this}return i||o?(i.lng=Math.min(a.lng,i.lng),i.lat=Math.min(a.lat,i.lat),o.lng=Math.max(r.lng,o.lng),o.lat=Math.max(r.lat,o.lat)):(this._sw=new t.S(a.lng,a.lat),this._ne=new t.S(r.lng,r.lat)),this}getCenter(){return new t.S((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new t.S(this.getWest(),this.getNorth())}getSouthEast(){return new t.S(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return [this._sw.toArray(),this._ne.toArray()]}toString(){return `LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return !(this._sw&&this._ne)}contains(e){const{lng:i,lat:o}=t.S.convert(e);let a=this._sw.lng<=i&&i<=this._ne.lng;return this._sw.lng>this._ne.lng&&(a=this._sw.lng>=i&&i>=this._ne.lng),this._sw.lat<=o&&o<=this._ne.lat&&a}static convert(e){return e instanceof $?e:e?new $(e):e}static fromLngLat(e,i=0){const o=360*i/40075017,a=o/Math.cos(Math.PI/180*e.lat);return new $(new t.S(e.lng-a,e.lat-o),new t.S(e.lng+a,e.lat+o))}adjustAntiMeridian(){const e=new t.S(this._sw.lng,this._sw.lat),i=new t.S(this._ne.lng,this._ne.lat);return new $(e,e.lng>i.lng?new t.S(i.lng+360,i.lat):i)}}class W{constructor(e,t,i){this.bounds=$.convert(this.validateBounds(e)),this.minzoom=t||0,this.maxzoom=i||24;}validateBounds(e){return Array.isArray(e)&&4===e.length?[Math.max(-180,e[0]),Math.max(-90,e[1]),Math.min(180,e[2]),Math.min(90,e[3])]:[-180,-90,180,90]}contains(e){const i=Math.pow(2,e.z),o=Math.floor(t.V(this.bounds.getWest())*i),a=Math.floor(t.U(this.bounds.getNorth())*i),r=Math.ceil(t.V(this.bounds.getEast())*i),s=Math.ceil(t.U(this.bounds.getSouth())*i);return e.x>=o&&e.x<r&&e.y>=a&&e.y<s}}class q extends t.E{constructor(e,i,o,a){if(super(),this.id=e,this.dispatcher=o,this.type=\"vector\",this.minzoom=0,this.maxzoom=22,this.scheme=\"xyz\",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,this._loaded=!1,t.e(this,t.Q(i,[\"url\",\"scheme\",\"tileSize\",\"promoteId\"])),this._options=t.e({type:\"vector\"},i),this._collectResourceTiming=i.collectResourceTiming,512!==this.tileSize)throw new Error(\"vector tile sources must have a tileSize of 512\");this.setEventedParent(a);}load(){return t._(this,void 0,void 0,(function*(){this._loaded=!1,this.fire(new t.l(\"dataloading\",{dataType:\"source\"})),this._tileJSONRequest=new AbortController;try{const e=yield V(this._options,this.map._requestManager,this._tileJSONRequest);this._tileJSONRequest=null,this._loaded=!0,this.map.style.sourceCaches[this.id].clearTiles(),e&&(t.e(this,e),e.bounds&&(this.tileBounds=new W(e.bounds,this.minzoom,this.maxzoom)),this.fire(new t.l(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),this.fire(new t.l(\"data\",{dataType:\"source\",sourceDataType:\"content\"})));}catch(e){this._tileJSONRequest=null,this._loaded=!0,this.fire(new t.k(e));}}))}loaded(){return this._loaded}hasTile(e){return !this.tileBounds||this.tileBounds.contains(e.canonical)}onAdd(e){this.map=e,this.load();}setSourceProperty(e){this._tileJSONRequest&&this._tileJSONRequest.abort(),e(),this.load();}setTiles(e){return this.setSourceProperty((()=>{this._options.tiles=e;})),this}setUrl(e){return this.setSourceProperty((()=>{this.url=e,this._options.url=e;})),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null);}serialize(){return t.e({},this._options)}loadTile(e){return t._(this,void 0,void 0,(function*(){const t=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),i={request:this.map._requestManager.transformRequest(t,\"Tile\"),uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,tileSize:this.tileSize*e.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId,subdivisionGranularity:this.map.style.projection.subdivisionGranularity};i.request.collectResourceTiming=this._collectResourceTiming;let o=\"RT\";if(e.actor&&\"expired\"!==e.state){if(\"loading\"===e.state)return new Promise(((t,i)=>{e.reloadPromise={resolve:t,reject:i};}))}else e.actor=this.dispatcher.getActor(),o=\"LT\";e.abortController=new AbortController;try{const t=yield e.actor.sendAsync({type:o,data:i},e.abortController);if(delete e.abortController,e.aborted)return;this._afterTileLoadWorkerResponse(e,t);}catch(t){if(delete e.abortController,e.aborted)return;if(t&&404!==t.status)throw t;this._afterTileLoadWorkerResponse(e,null);}}))}_afterTileLoadWorkerResponse(e,t){if(t&&t.resourceTiming&&(e.resourceTiming=t.resourceTiming),t&&this.map._refreshExpiredTiles&&e.setExpiryData(t),e.loadVectorData(t,this.map.painter),e.reloadPromise){const t=e.reloadPromise;e.reloadPromise=null,this.loadTile(e).then(t.resolve).catch(t.reject);}}abortTile(e){return t._(this,void 0,void 0,(function*(){e.abortController&&(e.abortController.abort(),delete e.abortController),e.actor&&(yield e.actor.sendAsync({type:\"AT\",data:{uid:e.uid,type:this.type,source:this.id}}));}))}unloadTile(e){return t._(this,void 0,void 0,(function*(){e.unloadVectorData(),e.actor&&(yield e.actor.sendAsync({type:\"RMT\",data:{uid:e.uid,type:this.type,source:this.id}}));}))}hasTransition(){return !1}}class H extends t.E{constructor(e,i,o,a){super(),this.id=e,this.dispatcher=o,this.setEventedParent(a),this.type=\"raster\",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme=\"xyz\",this.tileSize=512,this._loaded=!1,this._options=t.e({type:\"raster\"},i),t.e(this,t.Q(i,[\"url\",\"scheme\",\"tileSize\"]));}load(){return t._(this,arguments,void 0,(function*(e=!1){this._loaded=!1,this.fire(new t.l(\"dataloading\",{dataType:\"source\"})),this._tileJSONRequest=new AbortController;try{const i=yield V(this._options,this.map._requestManager,this._tileJSONRequest);this._tileJSONRequest=null,this._loaded=!0,i&&(t.e(this,i),i.bounds&&(this.tileBounds=new W(i.bounds,this.minzoom,this.maxzoom)),this.fire(new t.l(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),this.fire(new t.l(\"data\",{dataType:\"source\",sourceDataType:\"content\",sourceDataChanged:e})));}catch(e){this._tileJSONRequest=null,this._loaded=!0,this.fire(new t.k(e));}}))}loaded(){return this._loaded}onAdd(e){this.map=e,this.load();}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null);}setSourceProperty(e){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null),e(),this.load(!0);}setTiles(e){return this.setSourceProperty((()=>{this._options.tiles=e;})),this}setUrl(e){return this.setSourceProperty((()=>{this.url=e,this._options.url=e;})),this}serialize(){return t.e({},this._options)}hasTile(e){return !this.tileBounds||this.tileBounds.contains(e.canonical)}loadTile(e){return t._(this,void 0,void 0,(function*(){const i=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);e.abortController=new AbortController;try{const o=yield f.getImage(this.map._requestManager.transformRequest(i,\"Tile\"),e.abortController,this.map._refreshExpiredTiles);if(delete e.abortController,e.aborted)return void(e.state=\"unloaded\");if(o&&o.data){this.map._refreshExpiredTiles&&(o.cacheControl||o.expires)&&e.setExpiryData({cacheControl:o.cacheControl,expires:o.expires});const i=this.map.painter.context,a=i.gl,r=o.data;e.texture=this.map.painter.getTileTexture(r.width),e.texture?e.texture.update(r,{useMipmap:!0}):(e.texture=new t.T(i,r,a.RGBA,{useMipmap:!0}),e.texture.bind(a.LINEAR,a.CLAMP_TO_EDGE,a.LINEAR_MIPMAP_NEAREST)),e.state=\"loaded\";}}catch(t){if(delete e.abortController,e.aborted)e.state=\"unloaded\";else if(t)throw e.state=\"errored\",t}}))}abortTile(e){return t._(this,void 0,void 0,(function*(){e.abortController&&(e.abortController.abort(),delete e.abortController);}))}unloadTile(e){return t._(this,void 0,void 0,(function*(){e.texture&&this.map.painter.saveTileTexture(e.texture);}))}hasTransition(){return !1}}class X extends H{constructor(e,i,o,a){super(e,i,o,a),this.type=\"raster-dem\",this.maxzoom=22,this._options=t.e({type:\"raster-dem\"},i),this.encoding=i.encoding||\"mapbox\",this.redFactor=i.redFactor,this.greenFactor=i.greenFactor,this.blueFactor=i.blueFactor,this.baseShift=i.baseShift;}loadTile(e){return t._(this,void 0,void 0,(function*(){const i=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),o=this.map._requestManager.transformRequest(i,\"Tile\");e.neighboringTiles=this._getNeighboringTiles(e.tileID),e.abortController=new AbortController;try{const i=yield f.getImage(o,e.abortController,this.map._refreshExpiredTiles);if(delete e.abortController,e.aborted)return void(e.state=\"unloaded\");if(i&&i.data){const o=i.data;this.map._refreshExpiredTiles&&(i.cacheControl||i.expires)&&e.setExpiryData({cacheControl:i.cacheControl,expires:i.expires});const a=t.b(o)&&t.W()?o:yield this.readImageNow(o),r={type:this.type,uid:e.uid,source:this.id,rawImageData:a,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};if(!e.actor||\"expired\"===e.state){e.actor=this.dispatcher.getActor();const t=yield e.actor.sendAsync({type:\"LDT\",data:r});e.dem=t,e.needsHillshadePrepare=!0,e.needsTerrainPrepare=!0,e.state=\"loaded\";}}}catch(t){if(delete e.abortController,e.aborted)e.state=\"unloaded\";else if(t)throw e.state=\"errored\",t}}))}readImageNow(e){return t._(this,void 0,void 0,(function*(){if(\"undefined\"!=typeof VideoFrame&&t.X()){const i=e.width+2,o=e.height+2;try{return new t.R({width:i,height:o},yield t.Y(e,-1,-1,i,o))}catch(e){}}return s.getImageData(e,1)}))}_getNeighboringTiles(e){const i=e.canonical,o=Math.pow(2,i.z),a=(i.x-1+o)%o,r=0===i.x?e.wrap-1:e.wrap,s=(i.x+1+o)%o,n=i.x+1===o?e.wrap+1:e.wrap,l={};return l[new t.Z(e.overscaledZ,r,i.z,a,i.y).key]={backfilled:!1},l[new t.Z(e.overscaledZ,n,i.z,s,i.y).key]={backfilled:!1},i.y>0&&(l[new t.Z(e.overscaledZ,r,i.z,a,i.y-1).key]={backfilled:!1},l[new t.Z(e.overscaledZ,e.wrap,i.z,i.x,i.y-1).key]={backfilled:!1},l[new t.Z(e.overscaledZ,n,i.z,s,i.y-1).key]={backfilled:!1}),i.y+1<o&&(l[new t.Z(e.overscaledZ,r,i.z,a,i.y+1).key]={backfilled:!1},l[new t.Z(e.overscaledZ,e.wrap,i.z,i.x,i.y+1).key]={backfilled:!1},l[new t.Z(e.overscaledZ,n,i.z,s,i.y+1).key]={backfilled:!1}),l}unloadTile(e){return t._(this,void 0,void 0,(function*(){e.demTexture&&this.map.painter.saveTileTexture(e.demTexture),e.fbo&&(e.fbo.destroy(),delete e.fbo),e.dem&&delete e.dem,delete e.neighboringTiles,e.state=\"unloaded\",e.actor&&(yield e.actor.sendAsync({type:\"RDT\",data:{type:this.type,uid:e.uid,source:this.id}}));}))}}class K extends t.E{constructor(e,i,o,a){super(),this.id=e,this.type=\"geojson\",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this._removed=!1,this._isUpdatingWorker=!1,this._pendingWorkerUpdate={data:i.data},this.actor=o.getActor(),this.setEventedParent(a),this._data=i.data,this._options=t.e({},i),this._collectResourceTiming=i.collectResourceTiming,void 0!==i.maxzoom&&(this.maxzoom=i.maxzoom),i.type&&(this.type=i.type),i.attribution&&(this.attribution=i.attribution),this.promoteId=i.promoteId,void 0!==i.clusterMaxZoom&&this.maxzoom<=i.clusterMaxZoom&&t.w(`The maxzoom value \"${this.maxzoom}\" is expected to be greater than the clusterMaxZoom value \"${i.clusterMaxZoom}\".`),this.workerOptions=t.e({source:this.id,cluster:i.cluster||!1,geojsonVtOptions:{buffer:this._pixelsToTileUnits(void 0!==i.buffer?i.buffer:128),tolerance:this._pixelsToTileUnits(void 0!==i.tolerance?i.tolerance:.375),extent:t.$,maxZoom:this.maxzoom,lineMetrics:i.lineMetrics||!1,generateId:i.generateId||!1},superclusterOptions:{maxZoom:this._getClusterMaxZoom(i.clusterMaxZoom),minPoints:Math.max(2,i.clusterMinPoints||2),extent:t.$,radius:this._pixelsToTileUnits(i.clusterRadius||50),log:!1,generateId:i.generateId||!1},clusterProperties:i.clusterProperties,filter:i.filter},i.workerOptions),\"string\"==typeof this.promoteId&&(this.workerOptions.promoteId=this.promoteId);}_hasPendingWorkerUpdate(){return void 0!==this._pendingWorkerUpdate.data||void 0!==this._pendingWorkerUpdate.diff||this._pendingWorkerUpdate.optionsChanged}_pixelsToTileUnits(e){return e*(t.$/this.tileSize)}_getClusterMaxZoom(e){const i=e?Math.round(e):this.maxzoom-1;return Number.isInteger(e)||void 0===e||t.w(`Integer expected for option 'clusterMaxZoom': provided value \"${e}\" rounded to \"${i}\"`),i}load(){return t._(this,void 0,void 0,(function*(){yield this._updateWorkerData();}))}onAdd(e){this.map=e,this.load();}setData(e){return this._data=e,this._pendingWorkerUpdate={data:e},this._updateWorkerData(),this}updateData(e){return this._pendingWorkerUpdate.diff=t.a0(this._pendingWorkerUpdate.diff,e),this._updateWorkerData(),this}getData(){return t._(this,void 0,void 0,(function*(){const e=t.e({type:this.type},this.workerOptions);return this.actor.sendAsync({type:\"GD\",data:e})}))}getCoordinatesFromGeometry(e){return \"GeometryCollection\"===e.type?e.geometries.map((e=>e.coordinates)).flat(1/0):e.coordinates.flat(1/0)}getBounds(){return t._(this,void 0,void 0,(function*(){const e=new $,t=yield this.getData();let i;switch(t.type){case \"FeatureCollection\":i=t.features.map((e=>this.getCoordinatesFromGeometry(e.geometry))).flat(1/0);break;case \"Feature\":i=this.getCoordinatesFromGeometry(t.geometry);break;default:i=this.getCoordinatesFromGeometry(t);}if(0==i.length)return e;for(let t=0;t<i.length-1;t+=2)e.extend([i[t],i[t+1]]);return e}))}setClusterOptions(e){return this.workerOptions.cluster=e.cluster,void 0!==e.clusterRadius&&(this.workerOptions.superclusterOptions.radius=this._pixelsToTileUnits(e.clusterRadius)),void 0!==e.clusterMaxZoom&&(this.workerOptions.superclusterOptions.maxZoom=this._getClusterMaxZoom(e.clusterMaxZoom)),this._pendingWorkerUpdate.optionsChanged=!0,this._updateWorkerData(),this}getClusterExpansionZoom(e){return this.actor.sendAsync({type:\"GCEZ\",data:{type:this.type,clusterId:e,source:this.id}})}getClusterChildren(e){return this.actor.sendAsync({type:\"GCC\",data:{type:this.type,clusterId:e,source:this.id}})}getClusterLeaves(e,t,i){return this.actor.sendAsync({type:\"GCL\",data:{type:this.type,source:this.id,clusterId:e,limit:t,offset:i}})}_updateWorkerData(){return t._(this,void 0,void 0,(function*(){if(this._isUpdatingWorker)return;if(!this._hasPendingWorkerUpdate())return void t.w(`No pending worker updates for GeoJSONSource ${this.id}.`);const{data:e,diff:i}=this._pendingWorkerUpdate,o=t.e({type:this.type},this.workerOptions);e?(\"string\"==typeof e?(o.request=this.map._requestManager.transformRequest(s.resolveURL(e),\"Source\"),o.request.collectResourceTiming=this._collectResourceTiming):o.data=JSON.stringify(e),this._pendingWorkerUpdate.data=void 0):i&&(o.dataDiff=i,this._pendingWorkerUpdate.diff=void 0),this._pendingWorkerUpdate.optionsChanged=void 0,this._isUpdatingWorker=!0,this.fire(new t.l(\"dataloading\",{dataType:\"source\"}));try{const e=yield this.actor.sendAsync({type:\"LD\",data:o});if(this._isUpdatingWorker=!1,this._removed||e.abandoned)return void this.fire(new t.l(\"dataabort\",{dataType:\"source\"}));this._data=e.data;let i=null;e.resourceTiming&&e.resourceTiming[this.id]&&(i=e.resourceTiming[this.id].slice(0));const a={dataType:\"source\"};this._collectResourceTiming&&i&&i.length>0&&t.e(a,{resourceTiming:i}),this.fire(new t.l(\"data\",Object.assign(Object.assign({},a),{sourceDataType:\"metadata\"}))),this.fire(new t.l(\"data\",Object.assign(Object.assign({},a),{sourceDataType:\"content\"})));}catch(e){if(this._isUpdatingWorker=!1,this._removed)return void this.fire(new t.l(\"dataabort\",{dataType:\"source\"}));this.fire(new t.k(e));}finally{this._hasPendingWorkerUpdate()&&this._updateWorkerData();}}))}loaded(){return !this._isUpdatingWorker&&!this._hasPendingWorkerUpdate()}loadTile(e){return t._(this,void 0,void 0,(function*(){const t=e.actor?\"RT\":\"LT\";e.actor=this.actor;const i={type:this.type,uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId,subdivisionGranularity:this.map.style.projection.subdivisionGranularity};e.abortController=new AbortController;const o=yield this.actor.sendAsync({type:t,data:i},e.abortController);delete e.abortController,e.unloadVectorData(),e.aborted||e.loadVectorData(o,this.map.painter,\"RT\"===t);}))}abortTile(e){return t._(this,void 0,void 0,(function*(){e.abortController&&(e.abortController.abort(),delete e.abortController),e.aborted=!0;}))}unloadTile(e){return t._(this,void 0,void 0,(function*(){e.unloadVectorData(),yield this.actor.sendAsync({type:\"RMT\",data:{uid:e.uid,type:this.type,source:this.id}});}))}onRemove(){this._removed=!0,this.actor.sendAsync({type:\"RS\",data:{type:this.type,source:this.id}});}serialize(){return t.e({},this._options,{type:this.type,data:this._data})}hasTransition(){return !1}}class Q extends t.E{constructor(e,t,i,o){super(),this.flippedWindingOrder=!1,this.id=e,this.dispatcher=i,this.coordinates=t.coordinates,this.type=\"image\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(o),this.options=t;}load(e){return t._(this,void 0,void 0,(function*(){this._loaded=!1,this.fire(new t.l(\"dataloading\",{dataType:\"source\"})),this.url=this.options.url,this._request=new AbortController;try{const t=yield f.getImage(this.map._requestManager.transformRequest(this.url,\"Image\"),this._request);this._request=null,this._loaded=!0,t&&t.data&&(this.image=t.data,e&&(this.coordinates=e),this._finishLoading());}catch(e){this._request=null,this._loaded=!0,this.fire(new t.k(e));}}))}loaded(){return this._loaded}updateImage(e){return e.url?(this._request&&(this._request.abort(),this._request=null),this.options.url=e.url,this.load(e.coordinates).finally((()=>{this.texture=null;})),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.l(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})));}onAdd(e){this.map=e,this.load();}onRemove(){this._request&&(this._request.abort(),this._request=null);}setCoordinates(e){this.coordinates=e;const i=e.map(t.a1.fromLngLat);var o;return this.tileID=function(e){const i=t.a2.fromPoints(e),o=i.width(),a=i.height(),r=Math.max(o,a),s=Math.max(0,Math.floor(-Math.log(r)/Math.LN2)),n=Math.pow(2,s);return new t.a4(s,Math.floor((i.minX+i.maxX)/2*n),Math.floor((i.minY+i.maxY)/2*n))}(i),this.terrainTileRanges=this._getOverlappingTileRanges(i),this.minzoom=this.maxzoom=this.tileID.z,this.tileCoords=i.map((e=>this.tileID.getTilePoint(e)._round())),this.flippedWindingOrder=((o=this.tileCoords)[1].x-o[0].x)*(o[2].y-o[0].y)-(o[1].y-o[0].y)*(o[2].x-o[0].x)<0,this.fire(new t.l(\"data\",{dataType:\"source\",sourceDataType:\"content\"})),this}prepare(){if(0===Object.keys(this.tiles).length||!this.image)return;const e=this.map.painter.context,i=e.gl;this.texture||(this.texture=new t.T(e,this.image,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE));let o=!1;for(const e in this.tiles){const t=this.tiles[e];\"loaded\"!==t.state&&(t.state=\"loaded\",t.texture=this.texture,o=!0);}o&&this.fire(new t.l(\"data\",{dataType:\"source\",sourceDataType:\"idle\",sourceId:this.id}));}loadTile(e){return t._(this,void 0,void 0,(function*(){this.tileID&&this.tileID.equals(e.tileID.canonical)?(this.tiles[String(e.tileID.wrap)]=e,e.buckets={}):e.state=\"errored\";}))}serialize(){return {type:\"image\",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return !1}_getOverlappingTileRanges(e){const{minX:i,minY:o,maxX:a,maxY:r}=t.a2.fromPoints(e),s={};for(let e=0;e<=t.a3;e++){const t=Math.pow(2,e),n=Math.floor(i*t),l=Math.floor(o*t),c=Math.floor(a*t),h=Math.floor(r*t);s[e]={minTileX:n,minTileY:l,maxTileX:c,maxTileY:h};}return s}}class Y extends Q{constructor(e,t,i,o){super(e,t,i,o),this.roundZoom=!0,this.type=\"video\",this.options=t;}load(){return t._(this,void 0,void 0,(function*(){this._loaded=!1;const e=this.options;this.urls=[];for(const t of e.urls)this.urls.push(this.map._requestManager.transformRequest(t,\"Source\").url);try{const e=yield t.a5(this.urls);if(this._loaded=!0,!e)return;this.video=e,this.video.loop=!0,this.video.addEventListener(\"playing\",(()=>{this.map.triggerRepaint();})),this.map&&this.video.play(),this._finishLoading();}catch(e){this.fire(new t.k(e));}}))}pause(){this.video&&this.video.pause();}play(){this.video&&this.video.play();}seek(e){if(this.video){const i=this.video.seekable;e<i.start(0)||e>i.end(0)?this.fire(new t.k(new t.a6(`sources.${this.id}`,null,`Playback for this video can be set only between the ${i.start(0)} and ${i.end(0)}-second mark.`))):this.video.currentTime=e;}}getVideo(){return this.video}onAdd(e){this.map||(this.map=e,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)));}prepare(){if(0===Object.keys(this.tiles).length||this.video.readyState<2)return;const e=this.map.painter.context,i=e.gl;this.texture?this.video.paused||(this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE),i.texSubImage2D(i.TEXTURE_2D,0,0,0,i.RGBA,i.UNSIGNED_BYTE,this.video)):(this.texture=new t.T(e,this.video,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE));let o=!1;for(const e in this.tiles){const t=this.tiles[e];\"loaded\"!==t.state&&(t.state=\"loaded\",t.texture=this.texture,o=!0);}o&&this.fire(new t.l(\"data\",{dataType:\"source\",sourceDataType:\"idle\",sourceId:this.id}));}serialize(){return {type:\"video\",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}}class J extends Q{constructor(e,i,o,a){super(e,i,o,a),i.coordinates?Array.isArray(i.coordinates)&&4===i.coordinates.length&&!i.coordinates.some((e=>!Array.isArray(e)||2!==e.length||e.some((e=>\"number\"!=typeof e))))||this.fire(new t.k(new t.a6(`sources.${e}`,null,'\"coordinates\" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new t.k(new t.a6(`sources.${e}`,null,'missing required property \"coordinates\"'))),i.animate&&\"boolean\"!=typeof i.animate&&this.fire(new t.k(new t.a6(`sources.${e}`,null,'optional \"animate\" property must be a boolean value'))),i.canvas?\"string\"==typeof i.canvas||i.canvas instanceof HTMLCanvasElement||this.fire(new t.k(new t.a6(`sources.${e}`,null,'\"canvas\" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new t.k(new t.a6(`sources.${e}`,null,'missing required property \"canvas\"'))),this.options=i,this.animate=void 0===i.animate||i.animate;}load(){return t._(this,void 0,void 0,(function*(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof HTMLCanvasElement?this.options.canvas:document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new t.k(new Error(\"Canvas dimensions cannot be less than or equal to zero.\"))):(this.play=function(){this._playing=!0,this.map.triggerRepaint();},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1);},this._finishLoading());}))}getCanvas(){return this.canvas}onAdd(e){this.map=e,this.load(),this.canvas&&this.animate&&this.play();}onRemove(){this.pause();}prepare(){let e=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,e=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,e=!0),this._hasInvalidDimensions())return;if(0===Object.keys(this.tiles).length)return;const i=this.map.painter.context,o=i.gl;this.texture?(e||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new t.T(i,this.canvas,o.RGBA,{premultiply:!0});let a=!1;for(const e in this.tiles){const t=this.tiles[e];\"loaded\"!==t.state&&(t.state=\"loaded\",t.texture=this.texture,a=!0);}a&&this.fire(new t.l(\"data\",{dataType:\"source\",sourceDataType:\"idle\",sourceId:this.id}));}serialize(){return {type:\"canvas\",coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(const e of [this.canvas.width,this.canvas.height])if(isNaN(e)||e<=0)return !0;return !1}}const ee={},te=e=>{switch(e){case \"geojson\":return K;case \"image\":return Q;case \"raster\":return H;case \"raster-dem\":return X;case \"vector\":return q;case \"video\":return Y;case \"canvas\":return J}return ee[e]},ie=\"RTLPluginLoaded\";class oe extends t.E{constructor(){super(...arguments),this.status=\"unavailable\",this.url=null,this.dispatcher=j();}_syncState(e){return this.status=e,this.dispatcher.broadcast(\"SRPS\",{pluginStatus:e,pluginURL:this.url}).catch((e=>{throw this.status=\"error\",e}))}getRTLTextPluginStatus(){return this.status}clearRTLTextPlugin(){this.status=\"unavailable\",this.url=null;}setRTLTextPlugin(e){return t._(this,arguments,void 0,(function*(e,t=!1){if(this.url)throw new Error(\"setRTLTextPlugin cannot be called multiple times.\");if(this.url=s.resolveURL(e),!this.url)throw new Error(`requested url ${e} is invalid`);if(\"unavailable\"===this.status){if(!t)return this._requestImport();this.status=\"deferred\",this._syncState(this.status);}else if(\"requested\"===this.status)return this._requestImport()}))}_requestImport(){return t._(this,void 0,void 0,(function*(){yield this._syncState(\"loading\"),this.status=\"loaded\",this.fire(new t.l(ie));}))}lazyLoad(){\"unavailable\"===this.status?this.status=\"requested\":\"deferred\"===this.status&&this._requestImport();}}let ae=null;function re(){return ae||(ae=new oe),ae}var se,ne;!function(e){e[e.Base=0]=\"Base\",e[e.Parent=1]=\"Parent\";}(se||(se={})),function(e){e[e.Departing=0]=\"Departing\",e[e.Incoming=1]=\"Incoming\";}(ne||(ne={}));class le{constructor(e,i){this.timeAdded=0,this.fadeEndTime=0,this.fadeOpacity=1,this.tileID=e,this.uid=t.a7(),this.uses=0,this.tileSize=i,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.rtt=[],this.rttCoords={},this.expiredRequestCount=0,this.state=\"loading\";}isRenderable(e){return this.hasData()&&(!this.fadeEndTime||this.fadeOpacity>0)&&(e||!this.holdingForSymbolFade())}setCrossFadeLogic({fadingRole:e,fadingDirection:t,fadingParentID:i,fadeEndTime:o}){this.resetFadeLogic(),this.fadingRole=e,this.fadingDirection=t,this.fadingParentID=i,this.fadeEndTime=o;}setSelfFadeLogic(e){this.resetFadeLogic(),this.selfFading=!0,this.fadeEndTime=e;}resetFadeLogic(){this.fadingRole=null,this.fadingDirection=null,this.fadingParentID=null,this.selfFading=!1,this.timeAdded=l(),this.fadeEndTime=0,this.fadeOpacity=1;}wasRequested(){return \"errored\"===this.state||\"loaded\"===this.state||\"reloading\"===this.state}clearTextures(e){this.demTexture&&e.saveTileTexture(this.demTexture),this.demTexture=null;}loadVectorData(e,i,o){if(this.hasData()&&this.unloadVectorData(),this.state=\"loaded\",e){e.featureIndex&&(this.latestFeatureIndex=e.featureIndex,e.rawTileData?(this.latestRawTileData=e.rawTileData,this.latestFeatureIndex.rawTileData=e.rawTileData):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData)),this.collisionBoxArray=e.collisionBoxArray,this.buckets=function(e,t){const i={};if(!t)return i;for(const o of e){const e=o.layerIds.map((e=>t.getLayer(e))).filter(Boolean);if(0!==e.length){o.layers=e,o.stateDependentLayerIds&&(o.stateDependentLayers=o.stateDependentLayerIds.map((t=>e.filter((e=>e.id===t))[0])));for(const t of e)i[t.id]=o;}}return i}(e.buckets,null==i?void 0:i.style),this.hasSymbolBuckets=!1;for(const e in this.buckets){const i=this.buckets[e];if(i instanceof t.a9){if(this.hasSymbolBuckets=!0,!o)break;i.justReloaded=!0;}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(const e in this.buckets){const i=this.buckets[e];if(i instanceof t.a9&&i.hasRTLText){this.hasRTLText=!0,re().lazyLoad();break}}this.queryPadding=0;for(const e in this.buckets){const t=this.buckets[e];this.queryPadding=Math.max(this.queryPadding,i.style.getLayer(e).queryRadius(t));}e.imageAtlas&&(this.imageAtlas=e.imageAtlas),e.glyphAtlasImage&&(this.glyphAtlasImage=e.glyphAtlasImage),this.dashPositions=e.dashPositions;}else this.collisionBoxArray=new t.a8;}unloadVectorData(){for(const e in this.buckets)this.buckets[e].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.dashPositions&&(this.dashPositions=null),this.latestFeatureIndex=null,this.state=\"unloaded\";}getBucket(e){return this.buckets[e.id]}upload(e){for(const t in this.buckets){const i=this.buckets[t];i.uploadPending()&&i.upload(e);}const i=e.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new t.T(e,this.imageAtlas.image,i.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new t.T(e,this.glyphAtlasImage,i.ALPHA),this.glyphAtlasImage=null);}prepare(e){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(e,this.imageAtlasTexture);}queryRenderedFeatures(e,t,i,o,a,r,s,n,l,c,h){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:o,cameraQueryGeometry:a,scale:r,tileSize:this.tileSize,pixelPosMatrix:c,transform:n,params:s,queryPadding:this.queryPadding*l,getElevation:h},e,t,i):{}}querySourceFeatures(e,i){const o=this.latestFeatureIndex;if(!o||!o.rawTileData)return;const a=o.loadVTLayers(),r=i&&i.sourceLayer?i.sourceLayer:\"\",s=a._geojsonTileLayer||a[r];if(!s)return;const n=t.aa(null==i?void 0:i.filter,null==i?void 0:i.globalState),{z:l,x:c,y:h}=this.tileID.canonical,u={z:l,x:c,y:h};for(let i=0;i<s.length;i++){const a=s.feature(i);if(n.needGeometry){const e=t.ab(a,!0);if(!n.filter(new t.F(this.tileID.overscaledZ),e,this.tileID.canonical))continue}else if(!n.filter(new t.F(this.tileID.overscaledZ),a))continue;const d=o.getId(a,r),_=new t.ac(a,l,c,h,d);_.tile=u,e.push(_);}}hasData(){return \"loaded\"===this.state||\"reloading\"===this.state||\"expired\"===this.state}patternsLoaded(){return this.imageAtlas&&!!Object.keys(this.imageAtlas.patternPositions).length}setExpiryData(e){const i=this.expirationTime;if(e.cacheControl){const i=t.ad(e.cacheControl);i[\"max-age\"]&&(this.expirationTime=Date.now()+1e3*i[\"max-age\"]);}else e.expires&&(this.expirationTime=new Date(e.expires).getTime());if(this.expirationTime){const e=Date.now();let t=!1;if(this.expirationTime>e)t=!1;else if(i)if(this.expirationTime<i)t=!0;else {const o=this.expirationTime-i;o?this.expirationTime=e+Math.max(o,3e4):t=!0;}else t=!0;t?(this.expiredRequestCount++,this.state=\"expired\"):this.expiredRequestCount=0;}}getExpiryTimeout(){if(this.expirationTime)return this.expiredRequestCount?1e3*(1<<Math.min(this.expiredRequestCount-1,31)):Math.min(this.expirationTime-(new Date).getTime(),Math.pow(2,31)-1)}setFeatureState(e,t){if(!this.latestFeatureIndex||!this.latestFeatureIndex.rawTileData||0===Object.keys(e).length)return;const i=this.latestFeatureIndex.loadVTLayers();for(const o in this.buckets){if(!t.style.hasLayer(o))continue;const a=this.buckets[o],r=a.layers[0].sourceLayer||\"_geojsonTileLayer\",s=i[r],n=e[r];if(!s||!n||0===Object.keys(n).length)continue;a.update(n,s,this.imageAtlas&&this.imageAtlas.patternPositions||{},this.dashPositions||{});const l=t&&t.style&&t.style.getLayer(o);l&&(this.queryPadding=Math.max(this.queryPadding,l.queryRadius(a)));}}holdingForSymbolFade(){return void 0!==this.symbolFadeHoldUntil}symbolFadeFinished(){return !this.symbolFadeHoldUntil||this.symbolFadeHoldUntil<l()}clearSymbolFadeHold(){this.symbolFadeHoldUntil=void 0;}setSymbolHoldDuration(e){this.symbolFadeHoldUntil=l()+e;}setDependencies(e,t){const i={};for(const e of t)i[e]=!0;this.dependencies[e]=i;}hasDependency(e,t){for(const i of e){const e=this.dependencies[i];if(e)for(const i of t)if(e[i])return !0}return !1}}class ce{constructor(e,t){this.max=e,this.onRemove=t,this.reset();}reset(){for(const e in this.data)for(const t of this.data[e])t.timeout&&clearTimeout(t.timeout),this.onRemove(t.value);return this.data={},this.order=[],this}add(e,t,i){const o=e.wrapped().key;void 0===this.data[o]&&(this.data[o]=[]);const a={value:t,timeout:void 0};if(void 0!==i&&(a.timeout=setTimeout((()=>{this.remove(e,a);}),i)),this.data[o].push(a),this.order.push(o),this.order.length>this.max){const e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e);}return this}has(e){return e.wrapped().key in this.data}getAndRemove(e){return this.has(e)?this._getAndRemoveByKey(e.wrapped().key):null}_getAndRemoveByKey(e){const t=this.data[e].shift();return t.timeout&&clearTimeout(t.timeout),0===this.data[e].length&&delete this.data[e],this.order.splice(this.order.indexOf(e),1),t.value}getByKey(e){const t=this.data[e];return t?t[0].value:null}get(e){return this.has(e)?this.data[e.wrapped().key][0].value:null}remove(e,t){if(!this.has(e))return this;const i=e.wrapped().key,o=void 0===t?0:this.data[i].indexOf(t),a=this.data[i][o];return this.data[i].splice(o,1),a.timeout&&clearTimeout(a.timeout),0===this.data[i].length&&delete this.data[i],this.onRemove(a.value),this.order.splice(this.order.indexOf(i),1),this}setMaxSize(e){for(this.max=e;this.order.length>this.max;){const e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e);}return this}filter(e){const t=[];for(const i in this.data)for(const o of this.data[i])e(o.value)||t.push(o);for(const e of t)this.remove(e.value.tileID,e);}}class he{constructor(){this.state={},this.stateChanges={},this.deletedStates={};}updateState(e,i,o){const a=String(i);if(this.stateChanges[e]=this.stateChanges[e]||{},this.stateChanges[e][a]=this.stateChanges[e][a]||{},t.e(this.stateChanges[e][a],o),null===this.deletedStates[e]){this.deletedStates[e]={};for(const t in this.state[e])t!==a&&(this.deletedStates[e][t]=null);}else if(this.deletedStates[e]&&null===this.deletedStates[e][a]){this.deletedStates[e][a]={};for(const t in this.state[e][a])o[t]||(this.deletedStates[e][a][t]=null);}else for(const t in o)this.deletedStates[e]&&this.deletedStates[e][a]&&null===this.deletedStates[e][a][t]&&delete this.deletedStates[e][a][t];}removeFeatureState(e,t,i){if(null===this.deletedStates[e])return;const o=String(t);if(this.deletedStates[e]=this.deletedStates[e]||{},i&&void 0!==t)null!==this.deletedStates[e][o]&&(this.deletedStates[e][o]=this.deletedStates[e][o]||{},this.deletedStates[e][o][i]=null);else if(void 0!==t)if(this.stateChanges[e]&&this.stateChanges[e][o])for(i in this.deletedStates[e][o]={},this.stateChanges[e][o])this.deletedStates[e][o][i]=null;else this.deletedStates[e][o]=null;else this.deletedStates[e]=null;}getState(e,i){const o=String(i),a=t.e({},(this.state[e]||{})[o],(this.stateChanges[e]||{})[o]);if(null===this.deletedStates[e])return {};if(this.deletedStates[e]){const t=this.deletedStates[e][i];if(null===t)return {};for(const e in t)delete a[e];}return a}initializeTileState(e,t){e.setFeatureState(this.state,t);}coalesceChanges(e,i){const o={};for(const e in this.stateChanges){this.state[e]=this.state[e]||{};const i={};for(const o in this.stateChanges[e])this.state[e][o]||(this.state[e][o]={}),t.e(this.state[e][o],this.stateChanges[e][o]),i[o]=this.state[e][o];o[e]=i;}for(const e in this.deletedStates){this.state[e]=this.state[e]||{};const i={};if(null===this.deletedStates[e])for(const t in this.state[e])i[t]={},this.state[e][t]={};else for(const t in this.deletedStates[e]){if(null===this.deletedStates[e][t])this.state[e][t]={};else for(const i of Object.keys(this.deletedStates[e][t]))delete this.state[e][t][i];i[t]=this.state[e][t];}o[e]=o[e]||{},t.e(o[e],i);}if(this.stateChanges={},this.deletedStates={},0!==Object.keys(o).length)for(const t in e)e[t].setFeatureState(o,i);}}const ue=89.25;function de(e,i){const o=t.ae(i.lat,-t.af,t.af);return new t.P(t.V(i.lng)*e,t.U(o)*e)}function _e(e,i){return new t.a1(i.x/e,i.y/e).toLngLat()}function pe(e){return e.cameraToCenterDistance*Math.min(.85*Math.tan(t.ag(90-e.pitch)),Math.tan(t.ag(ue-e.pitch)))}function me(e,i){const o=e.canonical,a=i/t.ah(o.z),r=o.x+Math.pow(2,o.z)*e.wrap,s=t.ai(new Float64Array(16));return t.M(s,s,[r*a,o.y*a,0]),t.N(s,s,[a/t.$,a/t.$,1]),s}function fe(e,i,o,a,r){const s=t.a1.fromLngLat(e,i),n=r*t.aj(1,e.lat),l=n*Math.cos(t.ag(o)),c=Math.sqrt(n*n-l*l),h=c*Math.sin(t.ag(-a)),u=c*Math.cos(t.ag(-a));return new t.a1(s.x+h,s.y+u,s.z+l)}function ge(e,t,i){const o=t.intersectsFrustum(e);if(!i||0===o)return o;const a=t.intersectsPlane(i);return 0===a?0:2===o&&2===a?2:1}function ve(e,t,i){let o=0;const a=(i-t)/10;for(let r=0;r<10;r++)o+=a*Math.pow(Math.cos(t+(r+.5)/10*(i-t)),e);return o}function xe(e,i){return function(o,a,r,s,n){const l=2*((e-1)/t.ak(Math.cos(t.ag(ue-n))/Math.cos(t.ag(ue)))-1),c=Math.acos(r/s),h=2*ve(l-1,0,t.ag(n/2)),u=Math.min(t.ag(ue),c+t.ag(n/2)),d=ve(l-1,Math.min(u,c-t.ag(n/2)),u),_=Math.atan(a/r),p=Math.hypot(a,r);let m=o;return m+=t.ak(s/p/Math.max(.5,Math.cos(t.ag(n/2)))),m+=l*t.ak(Math.cos(_))/2,m-=t.ak(Math.max(1,d/h/i))/2,m}}const be=xe(9.314,3);function ye(e,i){const o=(i.roundZoom?Math.round:Math.floor)(e.zoom+t.ak(e.tileSize/i.tileSize));return Math.max(0,o)}function we(e,i){const o=e.getCameraFrustum(),a=e.getClippingPlane(),r=e.screenPointToMercatorCoordinate(e.getCameraPoint()),s=t.a1.fromLngLat(e.center,e.elevation);r.z=s.z+Math.cos(e.pitchInRadians)*e.cameraToCenterDistance/e.worldSize;const n=e.getCoveringTilesDetailsProvider(),l=n.allowVariableZoom(e,i),c=ye(e,i),h=i.minzoom||0,u=void 0!==i.maxzoom?i.maxzoom:e.maxZoom,d=Math.min(Math.max(0,c),u),_=Math.pow(2,d),p=[_*r.x,_*r.y,0],m=[_*s.x,_*s.y,0],f=Math.hypot(s.x-r.x,s.y-r.y),g=Math.abs(s.z-r.z),v=Math.hypot(f,g),x=e=>({zoom:0,x:0,y:0,wrap:e,fullyVisible:!1}),b=[],y=[];if(e.renderWorldCopies&&n.allowWorldCopies())for(let e=1;e<=3;e++)b.push(x(-e)),b.push(x(e));for(b.push(x(0));b.length>0;){const _=b.pop(),f=_.x,x=_.y;let w=_.fullyVisible;const T={x:f,y:x,z:_.zoom},P=n.getTileBoundingVolume(T,_.wrap,e.elevation,i);if(!w){const e=ge(o,P,a);if(0===e)continue;w=2===e;}const C=n.distanceToTile2d(r.x,r.y,T,P);let I=c;l&&(I=(i.calculateTileZoom||be)(e.zoom+t.ak(e.tileSize/i.tileSize),C,g,v,e.fov)),I=(i.roundZoom?Math.round:Math.floor)(I),I=Math.max(0,I);const M=Math.min(I,u);if(_.wrap=n.getWrap(s,T,_.wrap),_.zoom>=M){if(_.zoom<h)continue;const e=d-_.zoom,o=p[0]-.5-(f<<e),a=p[1]-.5-(x<<e),r=i.reparseOverscaled?Math.max(_.zoom,I):_.zoom;y.push({tileID:new t.Z(_.zoom===u?r:_.zoom,_.wrap,_.zoom,f,x),distanceSq:t.al([m[0]-.5-f,m[1]-.5-x]),tileDistanceToCamera:Math.sqrt(o*o+a*a)});}else for(let e=0;e<4;e++)b.push({zoom:_.zoom+1,x:(f<<1)+e%2,y:(x<<1)+(e>>1),wrap:_.wrap,fullyVisible:w});}return y.sort(((e,t)=>e.distanceSq-t.distanceSq)).map((e=>e.tileID))}const Te=t.a2.fromPoints([new t.P(0,0),new t.P(t.$,t.$)]);class Pe extends t.E{constructor(e,t,i){super(),this.id=e,this.dispatcher=i,this.on(\"data\",(e=>this._dataHandler(e))),this.on(\"dataloading\",(()=>{this._sourceErrored=!1;})),this.on(\"error\",(()=>{this._sourceErrored=this._source.loaded();})),this._source=((e,t,i,o)=>{const a=new(te(t.type))(e,t,i,o);if(a.id!==e)throw new Error(`Expected Source id to be ${e} instead of ${a.id}`);return a})(e,t,i,this),this._tiles={},this._cache=new ce(0,(e=>this._unloadTile(e))),this._timers={},this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._rasterFadeDuration=0,this._maxFadingAncestorLevels=5,this._state=new he,this._didEmitContent=!1,this._updated=!1;}onAdd(e){this.map=e,this._maxTileCacheSize=e?e._maxTileCacheSize:null,this._maxTileCacheZoomLevels=e?e._maxTileCacheZoomLevels:null,this._source&&this._source.onAdd&&this._source.onAdd(e);}onRemove(e){this.clearTiles(),this._source&&this._source.onRemove&&this._source.onRemove(e);}loaded(){if(this._sourceErrored)return !0;if(!this._sourceLoaded)return !1;if(!this._source.loaded())return !1;if(!(void 0===this.used&&void 0===this.usedForTerrain||this.used||this.usedForTerrain))return !0;if(!this._updated)return !1;for(const e in this._tiles){const t=this._tiles[e];if(\"loaded\"!==t.state&&\"errored\"!==t.state)return !1}return !0}getSource(){return this._source}pause(){this._paused=!0;}resume(){if(!this._paused)return;const e=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,e&&this.reload(),this.transform&&this.update(this.transform,this.terrain);}_loadTile(e,i,o){return t._(this,void 0,void 0,(function*(){try{yield this._source.loadTile(e),this._tileLoaded(e,i,o);}catch(i){e.state=\"errored\",404!==i.status?this._source.fire(new t.k(i,{tile:e})):this.update(this.transform,this.terrain);}}))}_unloadTile(e){this._source.unloadTile&&this._source.unloadTile(e);}_abortTile(e){this._source.abortTile&&this._source.abortTile(e),this._source.fire(new t.l(\"dataabort\",{tile:e,coord:e.tileID,dataType:\"source\"}));}serialize(){return this._source.serialize()}prepare(e){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(const t in this._tiles){const i=this._tiles[t];i.upload(e),i.prepare(this.map.style.imageManager);}}getIds(){return Object.values(this._tiles).map((e=>e.tileID)).sort(Ce).map((e=>e.key))}getRenderableIds(e){const i=[];for(const t in this._tiles)this._isIdRenderable(t,e)&&i.push(this._tiles[t]);return e?i.sort(((e,i)=>{const o=e.tileID,a=i.tileID,r=new t.P(o.canonical.x,o.canonical.y)._rotate(-this.transform.bearingInRadians),s=new t.P(a.canonical.x,a.canonical.y)._rotate(-this.transform.bearingInRadians);return o.overscaledZ-a.overscaledZ||s.y-r.y||s.x-r.x})).map((e=>e.tileID.key)):i.map((e=>e.tileID)).sort(Ce).map((e=>e.key))}hasRenderableParent(e){const t=e.overscaledZ-1;if(t>=this._source.minzoom){const i=this._getLoadedTile(e.scaledTo(t));if(i)return this._isIdRenderable(i.tileID.key)}return !1}_isIdRenderable(e,t=!1){var i;return null===(i=this._tiles[e])||void 0===i?void 0:i.isRenderable(t)}reload(e){if(this._paused)this._shouldReloadOnResume=!0;else {this._cache.reset();for(const t in this._tiles)e?this._reloadTile(t,\"expired\"):\"errored\"!==this._tiles[t].state&&this._reloadTile(t,\"reloading\");}}_reloadTile(e,i){return t._(this,void 0,void 0,(function*(){const t=this._tiles[e];t&&(\"loading\"!==t.state&&(t.state=i),yield this._loadTile(t,e,i));}))}_tileLoaded(e,i,o){e.timeAdded=l(),\"expired\"===o&&(e.refreshedUponExpiration=!0),this._setTileReloadTimer(i,e),\"raster-dem\"===this.getSource().type&&e.dem&&this._backfillDEM(e),this._state.initializeTileState(e,this.map?this.map.painter:null),e.aborted||this._source.fire(new t.l(\"data\",{dataType:\"source\",tile:e,coord:e.tileID}));}_backfillDEM(e){const t=this.getRenderableIds();for(let o=0;o<t.length;o++){const a=t[o];if(e.neighboringTiles&&e.neighboringTiles[a]){const t=this.getTileByID(a);i(e,t),i(t,e);}}function i(e,t){e.needsHillshadePrepare=!0,e.needsTerrainPrepare=!0;let i=t.tileID.canonical.x-e.tileID.canonical.x;const o=t.tileID.canonical.y-e.tileID.canonical.y,a=Math.pow(2,e.tileID.canonical.z),r=t.tileID.key;0===i&&0===o||Math.abs(o)>1||(Math.abs(i)>1&&(1===Math.abs(i+a)?i+=a:1===Math.abs(i-a)&&(i-=a)),t.dem&&e.dem&&(e.dem.backfillBorder(t.dem,i,o),e.neighboringTiles&&e.neighboringTiles[r]&&(e.neighboringTiles[r].backfilled=!0)));}}getTile(e){return this.getTileByID(e.key)}getTileByID(e){return this._tiles[e]}_retainLoadedChildren(e,t){const i=Object.values(e),o=this._getLoadedDescendents(i),a={};for(const e of i){const i=o[e.key];if(!(null==i?void 0:i.length)){a[e.key]=e;continue}const r=e.overscaledZ+Pe.maxUnderzooming,s=i.filter((e=>e.tileID.overscaledZ<=r));if(!s.length){a[e.key]=e;continue}const n=Math.min(...s.map((e=>e.tileID.overscaledZ))),l=s.filter((e=>e.tileID.overscaledZ===n)).map((e=>e.tileID));for(const e of l)t[e.key]=e;this._areDescendentsComplete(l,n,e.overscaledZ)||(a[e.key]=e);}return a}_getLoadedDescendents(e){var t;const i={};for(const o in this._tiles){const a=this._tiles[o];if(a.hasData())for(const o of e)a.tileID.isChildOf(o)&&(i[t=o.key]||(i[t]=[])).push(a);}return i}_areDescendentsComplete(e,t,i){return 1===e.length&&e[0].isOverscaled()?e[0].overscaledZ===t:Math.pow(4,t-i)===e.length}_getLoadedTile(e){const t=this._tiles[e.key];return (null==t?void 0:t.hasData())?t:null}updateCacheSize(e){const i=Math.ceil(e.width/this._source.tileSize)+1,o=Math.ceil(e.height/this._source.tileSize)+1,a=Math.floor(i*o*(null===this._maxTileCacheZoomLevels?t.a.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),r=\"number\"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,a):a;this._cache.setMaxSize(r);}handleWrapJump(e){const t=Math.round((e-(void 0===this._prevLng?e:this._prevLng))/360);if(this._prevLng=e,t){const e={};for(const i in this._tiles){const o=this._tiles[i];o.tileID=o.tileID.unwrapTo(o.tileID.wrap+t),e[o.tileID.key]=o;}this._tiles=e,this._resetTileReloadTimers();}}update(e,i){if(!this._sourceLoaded||this._paused)return;let o;this.transform=e,this.terrain=i,this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this.used||this.usedForTerrain?this._source.tileID?o=e.getVisibleUnwrappedCoordinates(this._source.tileID).map((e=>new t.Z(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y))):(o=we(e,{tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:i,calculateTileZoom:this._source.calculateTileZoom}),this._source.hasTile&&(o=o.filter((e=>this._source.hasTile(e))))):o=[],this.usedForTerrain&&(o=this._addTerrainIdealTiles(o));const a=0===o.length&&!this._updated&&this._didEmitContent;this._updated=!0,a&&this.fire(new t.l(\"data\",{sourceDataType:\"idle\",dataType:\"source\",sourceId:this.id}));const r=ye(e,this._source),s=this._updateRetainedTiles(o,r),n=Ie(this._source.type);n&&this._rasterFadeDuration>0&&!i&&this._updateFadingTiles(o,s),n?this._cleanUpRasterTiles(s):this._cleanUpVectorTiles(s);}_cleanUpRasterTiles(e){for(const t in this._tiles)e[t]||this._removeTile(t);}_cleanUpVectorTiles(e){for(const t in this._tiles){const i=this._tiles[t];e[t]?i.clearSymbolFadeHold():i.hasSymbolBuckets?i.holdingForSymbolFade()?i.symbolFadeFinished()&&this._removeTile(t):i.setSymbolHoldDuration(this.map._fadeDuration):this._removeTile(t);}}_addTerrainIdealTiles(e){const t=[];for(const i of e)if(i.canonical.z>this._source.minzoom){const e=i.scaledTo(i.canonical.z-1);t.push(e);const o=i.scaledTo(Math.max(this._source.minzoom,Math.min(i.canonical.z,5)));t.push(o);}return e.concat(t)}releaseSymbolFadeTiles(){for(const e in this._tiles)this._tiles[e].holdingForSymbolFade()&&this._removeTile(e);}_updateRetainedTiles(e,t){var i;const o={},a={},r=Math.max(t-Pe.maxOverzooming,this._source.minzoom);let s={};for(const t of e){const e=this._addTile(t);o[t.key]=t,e.hasData()||(s[t.key]=t);}s=this._retainLoadedChildren(s,o);for(const e in s){const t=s[e];let n=this._tiles[e],l=null==n?void 0:n.wasRequested();for(let e=t.overscaledZ-1;e>=r;--e){const r=t.scaledTo(e);if(a[r.key])break;if(a[r.key]=!0,n=this.getTile(r),!n&&l&&(n=this._addTile(r)),n){const e=n.hasData();if((e||!(null===(i=this.map)||void 0===i?void 0:i.cancelPendingTileRequestsWhileZooming)||l)&&(o[r.key]=r),l=n.wasRequested(),e)break}}}return o}_updateFadingTiles(e,i){const o=l(),a=t.am(e);for(const t of e){const e=this._tiles[t.key];e.fadingDirection!==ne.Departing&&0!==e.fadeOpacity||e.resetFadeLogic(),this._updateFadingAncestor(e,i,o)||this._updateFadingDescendents(e,i,o)||this._updateFadingEdge(e,a,o)||e.resetFadeLogic();}}_updateFadingAncestor(e,t,i){if(!e.hasData())return !1;const{tileID:o,fadingRole:a,fadingDirection:r,fadingParentID:s}=e;if(a===se.Base&&r===ne.Incoming&&s)return t[s.key]=s,!0;const n=Math.max(o.overscaledZ-this._maxFadingAncestorLevels,this._source.minzoom);for(let a=o.overscaledZ-1;a>=n;a--){const r=o.scaledTo(a),s=this._getLoadedTile(r);if(s)return e.setCrossFadeLogic({fadingRole:se.Base,fadingDirection:ne.Incoming,fadingParentID:s.tileID,fadeEndTime:i+this._rasterFadeDuration}),s.setCrossFadeLogic({fadingRole:se.Parent,fadingDirection:ne.Departing,fadeEndTime:i+this._rasterFadeDuration}),t[r.key]=r,!0}return !1}_updateFadingDescendents(e,t,i){if(!e.hasData())return !1;const o=e.tileID.children(this._source.maxzoom);let a=this._updateFadingChildren(e,o,t,i);if(a)return !0;for(const r of o){const o=r.children(this._source.maxzoom);this._updateFadingChildren(e,o,t,i)&&(a=!0);}return a}_updateFadingChildren(e,t,i,o){if(t[0].overscaledZ>=this._source.maxzoom)return !1;let a=!1;for(const r of t){const t=this._getLoadedTile(r);if(!t)continue;const{fadingRole:s,fadingDirection:n,fadingParentID:l}=t;s===se.Base&&n===ne.Departing&&l||(t.setCrossFadeLogic({fadingRole:se.Base,fadingDirection:ne.Departing,fadingParentID:e.tileID,fadeEndTime:o+this._rasterFadeDuration}),e.setCrossFadeLogic({fadingRole:se.Parent,fadingDirection:ne.Incoming,fadeEndTime:o+this._rasterFadeDuration})),i[r.key]=r,a=!0;}return a}_updateFadingEdge(e,t,i){const o=e.tileID;return !!e.selfFading||!e.hasData()&&!!t.has(o)&&(e.setSelfFadeLogic(i+this._rasterFadeDuration),!0)}_addTile(e){let i=this._tiles[e.key];if(i)return i;i=this._cache.getAndRemove(e),i&&(i.resetFadeLogic(),this._setTileReloadTimer(e.key,i),i.tileID=e,this._state.initializeTileState(i,this.map?this.map.painter:null));const o=i;return i||(i=new le(e,this._source.tileSize*e.overscaleFactor()),this._loadTile(i,e.key,i.state)),i.uses++,this._tiles[e.key]=i,o||this._source.fire(new t.l(\"dataloading\",{tile:i,coord:i.tileID,dataType:\"source\"})),i}_setTileReloadTimer(e,t){this._clearTileReloadTimer(e);const i=t.getExpiryTimeout();i&&(this._timers[e]=setTimeout((()=>{this._reloadTile(e,\"expired\"),delete this._timers[e];}),i));}_clearTileReloadTimer(e){const t=this._timers[e];t&&(clearTimeout(t),delete this._timers[e]);}_resetTileReloadTimers(){for(const e in this._timers)clearTimeout(this._timers[e]),delete this._timers[e];for(const e in this._tiles)this._setTileReloadTimer(e,this._tiles[e]);}refreshTiles(e){for(const t in this._tiles)(this._isIdRenderable(t)||\"errored\"==this._tiles[t].state)&&e.some((e=>e.equals(this._tiles[t].tileID.canonical)))&&this._reloadTile(t,\"expired\");}_removeTile(e){const t=this._tiles[e];t&&(t.uses--,delete this._tiles[e],this._clearTileReloadTimer(e),t.uses>0||(t.hasData()&&\"reloading\"!==t.state?this._cache.add(t.tileID,t,t.getExpiryTimeout()):(t.aborted=!0,this._abortTile(t),this._unloadTile(t))));}_dataHandler(e){\"source\"===e.dataType&&(\"metadata\"!==e.sourceDataType?\"content\"===e.sourceDataType&&this._sourceLoaded&&!this._paused&&(this.reload(e.sourceDataChanged),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0):this._sourceLoaded=!0);}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(const e in this._tiles)this._removeTile(e);this._cache.reset();}tilesIn(e,i,o){const a=[],r=this.transform;if(!r)return a;const s=r.getCoveringTilesDetailsProvider().allowWorldCopies(),n=o?r.getCameraQueryGeometry(e):e,l=e=>r.screenPointToMercatorCoordinate(e,this.terrain),c=this.transformBbox(e,l,!s),h=this.transformBbox(n,l,!s),u=this.getIds(),d=t.a2.fromPoints(h);for(let e=0;e<u.length;e++){const o=this._tiles[u[e]];if(o.holdingForSymbolFade())continue;const n=s?[o.tileID]:[o.tileID.unwrapTo(-1),o.tileID.unwrapTo(0)],l=Math.pow(2,r.zoom-o.tileID.overscaledZ),_=i*o.queryPadding*t.$/o.tileSize/l;for(const e of n){const i=d.map((i=>e.getTilePoint(new t.a1(i.x,i.y))));if(i.expandBy(_),i.intersects(Te)){const t=c.map((t=>e.getTilePoint(t))),i=h.map((t=>e.getTilePoint(t)));a.push({tile:o,tileID:s?e:e.unwrapTo(0),queryGeometry:t,cameraQueryGeometry:i,scale:l});}}}return a}transformBbox(e,i,o){let a=e.map(i);if(o){const o=t.a2.fromPoints(e);o.shrinkBy(.001*Math.min(o.width(),o.height()));const r=o.map(i);t.a2.fromPoints(a).covers(r)||(a=a.map((e=>e.x>.5?new t.a1(e.x-1,e.y,e.z):e)));}return a}getVisibleCoordinates(e){const t=this.getRenderableIds(e).map((e=>this._tiles[e].tileID));return this.transform&&this.transform.populateCache(t),t}hasTransition(){if(this._source.hasTransition())return !0;if(Ie(this._source.type)&&this._rasterFadeDuration>0){const e=l();for(const t in this._tiles)if(this._tiles[t].fadeEndTime>=e)return !0}return !1}setRasterFadeDuration(e){this._rasterFadeDuration=e;}setFeatureState(e,t,i){this._state.updateState(e=e||\"_geojsonTileLayer\",t,i);}removeFeatureState(e,t,i){this._state.removeFeatureState(e=e||\"_geojsonTileLayer\",t,i);}getFeatureState(e,t){return this._state.getState(e=e||\"_geojsonTileLayer\",t)}setDependencies(e,t,i){const o=this._tiles[e];o&&o.setDependencies(t,i);}reloadTilesForDependencies(e,t){for(const i in this._tiles)this._tiles[i].hasDependency(e,t)&&this._reloadTile(i,\"reloading\");this._cache.filter((i=>!i.hasDependency(e,t)));}}function Ce(e,t){const i=Math.abs(2*e.wrap)-+(e.wrap<0),o=Math.abs(2*t.wrap)-+(t.wrap<0);return e.overscaledZ-t.overscaledZ||o-i||t.canonical.y-e.canonical.y||t.canonical.x-e.canonical.x}function Ie(e){return \"raster\"===e||\"image\"===e||\"video\"===e}Pe.maxOverzooming=10,Pe.maxUnderzooming=3;class Me{constructor(e,t){this.reset(e,t);}reset(e,t){this.points=e||[],this._distances=[0];for(let e=1;e<this.points.length;e++)this._distances[e]=this._distances[e-1]+this.points[e].dist(this.points[e-1]);this.length=this._distances[this._distances.length-1],this.padding=Math.min(t||0,.5*this.length),this.paddedLength=this.length-2*this.padding;}lerp(e){if(1===this.points.length)return this.points[0];e=t.ae(e,0,1);let i=1,o=this._distances[i];const a=e*this.paddedLength+this.padding;for(;o<a&&i<this._distances.length;)o=this._distances[++i];const r=i-1,s=this._distances[r],n=o-s,l=n>0?(a-s)/n:0;return this.points[r].mult(1-l).add(this.points[i].mult(l))}}function Se(e,t){let i=!0;return \"always\"===e||\"never\"!==e&&\"never\"!==t||(i=!1),i}class Ee{constructor(e,t,i){const o=this.boxCells=[],a=this.circleCells=[];this.xCellCount=Math.ceil(e/i),this.yCellCount=Math.ceil(t/i);for(let e=0;e<this.xCellCount*this.yCellCount;e++)o.push([]),a.push([]);this.circleKeys=[],this.boxKeys=[],this.bboxes=[],this.circles=[],this.width=e,this.height=t,this.xScale=this.xCellCount/e,this.yScale=this.yCellCount/t,this.boxUid=0,this.circleUid=0;}keysLength(){return this.boxKeys.length+this.circleKeys.length}insert(e,t,i,o,a){this._forEachCell(t,i,o,a,this._insertBoxCell,this.boxUid++),this.boxKeys.push(e),this.bboxes.push(t),this.bboxes.push(i),this.bboxes.push(o),this.bboxes.push(a);}insertCircle(e,t,i,o){this._forEachCell(t-o,i-o,t+o,i+o,this._insertCircleCell,this.circleUid++),this.circleKeys.push(e),this.circles.push(t),this.circles.push(i),this.circles.push(o);}_insertBoxCell(e,t,i,o,a,r){this.boxCells[a].push(r);}_insertCircleCell(e,t,i,o,a,r){this.circleCells[a].push(r);}_query(e,t,i,o,a,r,s){if(i<0||e>this.width||o<0||t>this.height)return [];const n=[];if(e<=0&&t<=0&&this.width<=i&&this.height<=o){if(a)return [{key:null,x1:e,y1:t,x2:i,y2:o}];for(let e=0;e<this.boxKeys.length;e++)n.push({key:this.boxKeys[e],x1:this.bboxes[4*e],y1:this.bboxes[4*e+1],x2:this.bboxes[4*e+2],y2:this.bboxes[4*e+3]});for(let e=0;e<this.circleKeys.length;e++){const t=this.circles[3*e],i=this.circles[3*e+1],o=this.circles[3*e+2];n.push({key:this.circleKeys[e],x1:t-o,y1:i-o,x2:t+o,y2:i+o});}}else this._forEachCell(e,t,i,o,this._queryCell,n,{hitTest:a,overlapMode:r,seenUids:{box:{},circle:{}}},s);return n}query(e,t,i,o){return this._query(e,t,i,o,!1,null)}hitTest(e,t,i,o,a,r){return this._query(e,t,i,o,!0,a,r).length>0}hitTestCircle(e,t,i,o,a){const r=e-i,s=e+i,n=t-i,l=t+i;if(s<0||r>this.width||l<0||n>this.height)return !1;const c=[];return this._forEachCell(r,n,s,l,this._queryCellCircle,c,{hitTest:!0,overlapMode:o,circle:{x:e,y:t,radius:i},seenUids:{box:{},circle:{}}},a),c.length>0}_queryCell(e,t,i,o,a,r,s,n){const{seenUids:l,hitTest:c,overlapMode:h}=s,u=this.boxCells[a];if(null!==u){const a=this.bboxes;for(const s of u)if(!l.box[s]){l.box[s]=!0;const u=4*s,d=this.boxKeys[s];if(e<=a[u+2]&&t<=a[u+3]&&i>=a[u+0]&&o>=a[u+1]&&(!n||n(d))&&(!c||!Se(h,d.overlapMode))&&(r.push({key:d,x1:a[u],y1:a[u+1],x2:a[u+2],y2:a[u+3]}),c))return !0}}const d=this.circleCells[a];if(null!==d){const a=this.circles;for(const s of d)if(!l.circle[s]){l.circle[s]=!0;const u=3*s,d=this.circleKeys[s];if(this._circleAndRectCollide(a[u],a[u+1],a[u+2],e,t,i,o)&&(!n||n(d))&&(!c||!Se(h,d.overlapMode))){const e=a[u],t=a[u+1],i=a[u+2];if(r.push({key:d,x1:e-i,y1:t-i,x2:e+i,y2:t+i}),c)return !0}}}return !1}_queryCellCircle(e,t,i,o,a,r,s,n){const{circle:l,seenUids:c,overlapMode:h}=s,u=this.boxCells[a];if(null!==u){const e=this.bboxes;for(const t of u)if(!c.box[t]){c.box[t]=!0;const i=4*t,o=this.boxKeys[t];if(this._circleAndRectCollide(l.x,l.y,l.radius,e[i+0],e[i+1],e[i+2],e[i+3])&&(!n||n(o))&&!Se(h,o.overlapMode))return r.push(!0),!0}}const d=this.circleCells[a];if(null!==d){const e=this.circles;for(const t of d)if(!c.circle[t]){c.circle[t]=!0;const i=3*t,o=this.circleKeys[t];if(this._circlesCollide(e[i],e[i+1],e[i+2],l.x,l.y,l.radius)&&(!n||n(o))&&!Se(h,o.overlapMode))return r.push(!0),!0}}}_forEachCell(e,t,i,o,a,r,s,n){const l=this._convertToXCellCoord(e),c=this._convertToYCellCoord(t),h=this._convertToXCellCoord(i),u=this._convertToYCellCoord(o);for(let d=l;d<=h;d++)for(let l=c;l<=u;l++)if(a.call(this,e,t,i,o,this.xCellCount*l+d,r,s,n))return}_convertToXCellCoord(e){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(e*this.xScale)))}_convertToYCellCoord(e){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(e*this.yScale)))}_circlesCollide(e,t,i,o,a,r){const s=o-e,n=a-t,l=i+r;return l*l>s*s+n*n}_circleAndRectCollide(e,t,i,o,a,r,s){const n=(r-o)/2,l=Math.abs(e-(o+n));if(l>n+i)return !1;const c=(s-a)/2,h=Math.abs(t-(a+c));if(h>c+i)return !1;if(l<=n||h<=c)return !0;const u=l-n,d=h-c;return u*u+d*d<=i*i}}function Re(e,i,a){const r=t.L();if(!e){const{vecSouth:e,vecEast:t}=ze(i),a=o();a[0]=t[0],a[1]=t[1],a[2]=e[0],a[3]=e[1],s=a,(d=(l=(n=a)[0])*(u=n[3])-(h=n[2])*(c=n[1]))&&(s[0]=u*(d=1/d),s[1]=-c*d,s[2]=-h*d,s[3]=l*d),r[0]=a[0],r[1]=a[1],r[4]=a[2],r[5]=a[3];}var s,n,l,c,h,u,d;return t.N(r,r,[1/a,1/a,1]),r}function De(e,i,o,a){if(e){const e=t.L();if(!i){const{vecSouth:t,vecEast:i}=ze(o);e[0]=i[0],e[1]=i[1],e[4]=t[0],e[5]=t[1];}return t.N(e,e,[a,a,1]),e}return o.pixelsToClipSpaceMatrix}function ze(e){const i=Math.cos(e.rollInRadians),o=Math.sin(e.rollInRadians),a=Math.cos(e.pitchInRadians),r=Math.cos(e.bearingInRadians),s=Math.sin(e.bearingInRadians),n=t.ar();n[0]=-r*a*o-s*i,n[1]=-s*a*o+r*i;const l=t.as(n);l<1e-9?t.at(n):t.au(n,n,1/l);const c=t.ar();c[0]=r*a*i-s*o,c[1]=s*a*i+r*o;const h=t.as(c);return h<1e-9?t.at(c):t.au(c,c,1/h),{vecEast:c,vecSouth:n}}function Ae(e,i,o,a){let r;a?(r=[e,i,a(e,i),1],t.aw(r,r,o)):(r=[e,i,0,1],Ke(r,r,o));const s=r[3];return {point:new t.P(r[0]/s,r[1]/s),signedDistanceFromCamera:s,isOccluded:!1}}function Le(e,t){return .5+e/t*.5}function ke(e,t){return e.x>=-t[0]&&e.x<=t[0]&&e.y>=-t[1]&&e.y<=t[1]}function Fe(e,i,o,a,r,s,n,l,c,h,u,d,_){const p=o?e.textSizeData:e.iconSizeData,m=t.an(p,i.transform.zoom),f=[256/i.width*2+1,256/i.height*2+1],g=o?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;g.clear();const v=e.lineVertexArray,x=o?e.text.placedSymbolArray:e.icon.placedSymbolArray,b=i.transform.width/i.transform.height;let y=!1;for(let o=0;o<x.length;o++){const w=x.get(o);if(w.hidden||w.writingMode===t.ao.vertical&&!y){Xe(w.numGlyphs,g);continue}y=!1;const T=new t.P(w.anchorX,w.anchorY),P={getElevation:_,pitchedLabelPlaneMatrix:a,lineVertexArray:v,pitchWithMap:s,projectionCache:{projections:{},offsets:{},cachedAnchorPoint:void 0,anyProjectionOccluded:!1},transform:i.transform,tileAnchorPoint:T,unwrappedTileID:c,width:h,height:u,translation:d},C=Ve(w.anchorX,w.anchorY,P);if(!ke(C.point,f)){Xe(w.numGlyphs,g);continue}const I=Le(i.transform.cameraToCenterDistance,C.signedDistanceFromCamera),M=t.ap(p,m,w),S=s?M*i.transform.getPitchedTextCorrection(w.anchorX,w.anchorY,c)/I:M*I,E=je({projectionContext:P,pitchedLabelPlaneMatrixInverse:r,symbol:w,fontSize:S,flip:!1,keepUpright:n,glyphOffsetArray:e.glyphOffsetArray,dynamicLayoutVertexArray:g,aspectRatio:b,rotateToLine:l});y=E.useVertical,(E.notEnoughRoom||y||E.needsFlipping&&je({projectionContext:P,pitchedLabelPlaneMatrixInverse:r,symbol:w,fontSize:S,flip:!0,keepUpright:n,glyphOffsetArray:e.glyphOffsetArray,dynamicLayoutVertexArray:g,aspectRatio:b,rotateToLine:l}).notEnoughRoom)&&Xe(w.numGlyphs,g);}o?e.text.dynamicLayoutVertexBuffer.updateData(g):e.icon.dynamicLayoutVertexBuffer.updateData(g);}function Be(e,t,i,o,a,r,s,n){const l=r.glyphStartIndex+r.numGlyphs,c=r.lineStartIndex,h=r.lineStartIndex+r.lineLength,u=t.getoffsetX(r.glyphStartIndex),d=t.getoffsetX(l-1),_=qe(e*u,i,o,a,r.segment,c,h,n,s);if(!_)return null;const p=qe(e*d,i,o,a,r.segment,c,h,n,s);return p?n.projectionCache.anyProjectionOccluded?null:{first:_,last:p}:null}function Oe(e,i,o,a){return e===t.ao.horizontal&&Math.abs(o.y-i.y)>Math.abs(o.x-i.x)*a?{useVertical:!0}:(e===t.ao.vertical?i.y<o.y:i.x>o.x)?{needsFlipping:!0}:null}function je(e){const{projectionContext:i,pitchedLabelPlaneMatrixInverse:o,symbol:a,fontSize:r,flip:s,keepUpright:n,glyphOffsetArray:l,dynamicLayoutVertexArray:c,aspectRatio:h,rotateToLine:u}=e,d=r/24,_=a.lineOffsetX*d,p=a.lineOffsetY*d;let m;if(a.numGlyphs>1){const e=a.glyphStartIndex+a.numGlyphs,t=a.lineStartIndex,r=a.lineStartIndex+a.lineLength,c=Be(d,l,_,p,s,a,u,i);if(!c)return {notEnoughRoom:!0};const f=Ge(c.first.point.x,c.first.point.y,i,o),g=Ge(c.last.point.x,c.last.point.y,i,o);if(n&&!s){const e=Oe(a.writingMode,f,g,h);if(e)return e}m=[c.first];for(let o=a.glyphStartIndex+1;o<e-1;o++){const e=qe(d*l.getoffsetX(o),_,p,s,a.segment,t,r,i,u);if(!e)return {notEnoughRoom:!0};m.push(e);}m.push(c.last);}else {if(n&&!s){const e=Ue(i.tileAnchorPoint.x,i.tileAnchorPoint.y,i).point,r=a.lineStartIndex+a.segment+1,s=new t.P(i.lineVertexArray.getx(r),i.lineVertexArray.gety(r)),n=Ue(s.x,s.y,i),l=n.signedDistanceFromCamera>0?n.point:Ne(i.tileAnchorPoint,s,e,1,i),c=Ge(e.x,e.y,i,o),u=Ge(l.x,l.y,i,o),d=Oe(a.writingMode,c,u,h);if(d)return d}const e=qe(d*l.getoffsetX(a.glyphStartIndex),_,p,s,a.segment,a.lineStartIndex,a.lineStartIndex+a.lineLength,i,u);if(!e||i.projectionCache.anyProjectionOccluded)return {notEnoughRoom:!0};m=[e];}for(const e of m)t.av(c,e.point,e.angle);return {}}function Ne(e,t,i,o,a){const r=e.add(e.sub(t)._unit()),s=Ue(r.x,r.y,a).point,n=i.sub(s);return i.add(n._mult(o/n.mag()))}function Ze(e,i,o){const a=i.projectionCache;if(a.projections[e])return a.projections[e];const r=new t.P(i.lineVertexArray.getx(e),i.lineVertexArray.gety(e)),s=Ue(r.x,r.y,i);if(s.signedDistanceFromCamera>0)return a.projections[e]=s.point,a.anyProjectionOccluded=a.anyProjectionOccluded||s.isOccluded,s.point;const n=e-o.direction;return Ne(0===o.distanceFromAnchor?i.tileAnchorPoint:new t.P(i.lineVertexArray.getx(n),i.lineVertexArray.gety(n)),r,o.previousVertex,o.absOffsetX-o.distanceFromAnchor+1,i)}function Ue(e,t,i){const o=e+i.translation[0],a=t+i.translation[1];let r;return i.pitchWithMap?(r=Ae(o,a,i.pitchedLabelPlaneMatrix,i.getElevation),r.isOccluded=!1):(r=i.transform.projectTileCoordinates(o,a,i.unwrappedTileID,i.getElevation),r.point.x=(.5*r.point.x+.5)*i.width,r.point.y=(.5*-r.point.y+.5)*i.height),r}function Ge(e,i,o,a){if(o.pitchWithMap){const r=[e,i,0,1];return t.aw(r,r,a),o.transform.projectTileCoordinates(r[0]/r[3],r[1]/r[3],o.unwrappedTileID,o.getElevation).point}return {x:e/o.width*2-1,y:1-i/o.height*2}}function Ve(e,t,i){return i.transform.projectTileCoordinates(e,t,i.unwrappedTileID,i.getElevation)}function $e(e,t,i){return e._unit()._perp()._mult(t*i)}function We(e,i,o,a,r,s,n,l,c){if(l.projectionCache.offsets[e])return l.projectionCache.offsets[e];const h=o.add(i);if(e+c.direction<a||e+c.direction>=r)return l.projectionCache.offsets[e]=h,h;const u=Ze(e+c.direction,l,c),d=$e(u.sub(o),n,c.direction),_=o.add(d),p=u.add(d);return l.projectionCache.offsets[e]=t.ax(s,h,_,p)||h,l.projectionCache.offsets[e]}function qe(e,t,i,o,a,r,s,n,l){const c=o?e-t:e+t;let h=c>0?1:-1,u=0;o&&(h*=-1,u=Math.PI),h<0&&(u+=Math.PI);let d,_=h>0?r+a:r+a+1;n.projectionCache.cachedAnchorPoint?d=n.projectionCache.cachedAnchorPoint:(d=Ue(n.tileAnchorPoint.x,n.tileAnchorPoint.y,n).point,n.projectionCache.cachedAnchorPoint=d);let p,m,f=d,g=d,v=0,x=0;const b=Math.abs(c),y=[];let w;for(;v+x<=b;){if(_+=h,_<r||_>=s)return null;v+=x,g=f,m=p;const e={absOffsetX:b,direction:h,distanceFromAnchor:v,previousVertex:g};if(f=Ze(_,n,e),0===i)y.push(g),w=f.sub(g);else {let t;const o=f.sub(g);t=0===o.mag()?$e(Ze(_+h,n,e).sub(f),i,h):$e(o,i,h),m||(m=g.add(t)),p=We(_,t,f,r,s,m,i,n,e),y.push(m),w=p.sub(m);}x=w.mag();}const T=w._mult((b-v)/x)._add(m||g),P=u+Math.atan2(f.y-g.y,f.x-g.x);return y.push(T),{point:T,angle:l?P:0,path:y}}const He=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function Xe(e,t){for(let i=0;i<e;i++){const e=t.length;t.resize(e+4),t.float32.set(He,3*e);}}function Ke(e,t,i){const o=t[0],a=t[1];return e[0]=i[0]*o+i[4]*a+i[12],e[1]=i[1]*o+i[5]*a+i[13],e[3]=i[3]*o+i[7]*a+i[15],e}const Qe=100;class Ye{constructor(e,t=new Ee(e.width+200,e.height+200,25),i=new Ee(e.width+200,e.height+200,25)){this.transform=e,this.grid=t,this.ignoredGrid=i,this.pitchFactor=Math.cos(e.pitch*Math.PI/180)*e.cameraToCenterDistance,this.screenRightBoundary=e.width+Qe,this.screenBottomBoundary=e.height+Qe,this.gridRightBoundary=e.width+200,this.gridBottomBoundary=e.height+200,this.perspectiveRatioCutoff=.6;}placeCollisionBox(e,t,i,o,a,r,s,n,l,c,h,u){const d=this.projectAndGetPerspectiveRatio(e.anchorPointX+n[0],e.anchorPointY+n[1],a,c,u),_=i*d.perspectiveRatio;let p;if(r||s)p=this._projectCollisionBox(e,_,o,a,r,s,n,d,c,h,u);else {const t=d.x+(h?h.x*_:0),i=d.y+(h?h.y*_:0);p={allPointsOccluded:!1,box:[t+e.x1*_,i+e.y1*_,t+e.x2*_,i+e.y2*_]};}const[m,f,g,v]=p.box,x=r?p.allPointsOccluded:d.isOccluded;let b=x;return b||(b=d.perspectiveRatio<this.perspectiveRatioCutoff),b||(b=!this.isInsideGrid(m,f,g,v)),b||\"always\"!==t&&this.grid.hitTest(m,f,g,v,t,l)?{box:[m,f,g,v],placeable:!1,offscreen:!1,occluded:x}:{box:[m,f,g,v],placeable:!0,offscreen:this.isOffscreen(m,f,g,v),occluded:x}}placeCollisionCircles(e,i,o,a,r,s,n,l,c,h,u,d,_,p){const m=[],f=new t.P(i.anchorX,i.anchorY),g=this.getPerspectiveRatio(f.x,f.y,s,p),v=(c?r*this.transform.getPitchedTextCorrection(i.anchorX,i.anchorY,s)/g:r*g)/t.aB,x={getElevation:p,pitchedLabelPlaneMatrix:n,lineVertexArray:o,pitchWithMap:c,projectionCache:{projections:{},offsets:{},cachedAnchorPoint:void 0,anyProjectionOccluded:!1},transform:this.transform,tileAnchorPoint:f,unwrappedTileID:s,width:this.transform.width,height:this.transform.height,translation:_},b=Be(v,a,i.lineOffsetX*v,i.lineOffsetY*v,!1,i,!1,x);let y=!1,w=!1,T=!0;if(b){const i=.5*u*g+d,o=new t.P(-100,-100),a=new t.P(this.screenRightBoundary,this.screenBottomBoundary),r=new Me,s=b.first,n=b.last;let _=[];for(let e=s.path.length-1;e>=1;e--)_.push(s.path[e]);for(let e=1;e<n.path.length;e++)_.push(n.path[e]);const p=2.5*i;if(c){const e=this.projectPathToScreenSpace(_,x);_=e.some((e=>e.signedDistanceFromCamera<=0))?[]:e.map((e=>e.point));}let f=[];if(_.length>0){const e=_[0].clone(),i=_[0].clone();for(let t=1;t<_.length;t++)e.x=Math.min(e.x,_[t].x),e.y=Math.min(e.y,_[t].y),i.x=Math.max(i.x,_[t].x),i.y=Math.max(i.y,_[t].y);f=e.x>=o.x&&i.x<=a.x&&e.y>=o.y&&i.y<=a.y?[_]:i.x<o.x||e.x>a.x||i.y<o.y||e.y>a.y?[]:t.ay([_],o.x,o.y,a.x,a.y);}for(const t of f){r.reset(t,.25*i);let o=0;o=r.length<=.5*i?1:Math.ceil(r.paddedLength/p)+1;for(let t=0;t<o;t++){const a=t/Math.max(o-1,1),s=r.lerp(a),n=s.x+Qe,c=s.y+Qe;m.push(n,c,i,0);const u=n-i,d=c-i,_=n+i,p=c+i;if(T=T&&this.isOffscreen(u,d,_,p),w=w||this.isInsideGrid(u,d,_,p),\"always\"!==e&&this.grid.hitTestCircle(n,c,i,e,h)&&(y=!0,!l))return {circles:[],offscreen:!1,collisionDetected:y}}}}return {circles:!l&&y||!w||g<this.perspectiveRatioCutoff?[]:m,offscreen:T,collisionDetected:y}}projectPathToScreenSpace(e,i){const o=function(e,i){const o=t.L();return t.aq(o,i.pitchedLabelPlaneMatrix),e.map((e=>{const t=Ae(e.x,e.y,o,i.getElevation),a=i.transform.projectTileCoordinates(t.point.x,t.point.y,i.unwrappedTileID,i.getElevation);return a.point.x=(.5*a.point.x+.5)*i.width,a.point.y=(.5*-a.point.y+.5)*i.height,a}))}(e,i);return function(e){let t=0,i=0,o=0,a=0;for(let r=0;r<e.length;r++)e[r].isOccluded?(o=r+1,a=0):(a++,a>i&&(i=a,t=o));return e.slice(t,t+i)}(o)}queryRenderedSymbols(e){if(0===e.length||0===this.grid.keysLength()&&0===this.ignoredGrid.keysLength())return {};const i=[],o=new t.a2;for(const a of e){const e=new t.P(a.x+Qe,a.y+Qe);o.extend(e),i.push(e);}const{minX:a,minY:r,maxX:s,maxY:n}=o,l=this.grid.query(a,r,s,n).concat(this.ignoredGrid.query(a,r,s,n)),c={},h={};for(const e of l){const o=e.key;if(void 0===c[o.bucketInstanceId]&&(c[o.bucketInstanceId]={}),c[o.bucketInstanceId][o.featureIndex])continue;const a=[new t.P(e.x1,e.y1),new t.P(e.x2,e.y1),new t.P(e.x2,e.y2),new t.P(e.x1,e.y2)];t.az(i,a)&&(c[o.bucketInstanceId][o.featureIndex]=!0,void 0===h[o.bucketInstanceId]&&(h[o.bucketInstanceId]=[]),h[o.bucketInstanceId].push(o.featureIndex));}return h}insertCollisionBox(e,t,i,o,a,r){(i?this.ignoredGrid:this.grid).insert({bucketInstanceId:o,featureIndex:a,collisionGroupID:r,overlapMode:t},e[0],e[1],e[2],e[3]);}insertCollisionCircles(e,t,i,o,a,r){const s=i?this.ignoredGrid:this.grid,n={bucketInstanceId:o,featureIndex:a,collisionGroupID:r,overlapMode:t};for(let t=0;t<e.length;t+=4)s.insertCircle(n,e[t],e[t+1],e[t+2]);}projectAndGetPerspectiveRatio(e,i,o,a,r){if(r){let o;a?(o=[e,i,a(e,i),1],t.aw(o,o,r)):(o=[e,i,0,1],Ke(o,o,r));const s=o[3];return {x:(o[0]/s+1)/2*this.transform.width+Qe,y:(-o[1]/s+1)/2*this.transform.height+Qe,perspectiveRatio:.5+this.transform.cameraToCenterDistance/s*.5,isOccluded:!1,signedDistanceFromCamera:s}}{const t=this.transform.projectTileCoordinates(e,i,o,a);return {x:(t.point.x+1)/2*this.transform.width+Qe,y:(1-t.point.y)/2*this.transform.height+Qe,perspectiveRatio:.5+this.transform.cameraToCenterDistance/t.signedDistanceFromCamera*.5,isOccluded:t.isOccluded,signedDistanceFromCamera:t.signedDistanceFromCamera}}}getPerspectiveRatio(e,t,i,o){const a=this.transform.projectTileCoordinates(e,t,i,o);return .5+this.transform.cameraToCenterDistance/a.signedDistanceFromCamera*.5}isOffscreen(e,t,i,o){return i<Qe||e>=this.screenRightBoundary||o<Qe||t>this.screenBottomBoundary}isInsideGrid(e,t,i,o){return i>=0&&e<this.gridRightBoundary&&o>=0&&t<this.gridBottomBoundary}getViewportMatrix(){const e=t.ai([]);return t.M(e,e,[-100,-100,0]),e}_projectCollisionBox(e,i,o,a,r,s,n,l,c,h,u){let d=1,_=0,p=0,m=1;const f=e.anchorPointX+n[0],g=e.anchorPointY+n[1];if(s&&!r){const e=this.projectAndGetPerspectiveRatio(f+1,g,a,c,u),t=e.x-l.x,i=Math.atan((e.y-l.y)/t)+(t<0?Math.PI:0),o=Math.sin(i),r=Math.cos(i);d=r,_=o,p=-o,m=r;}else if(!s&&r){const e=ze(this.transform);d=e.vecEast[0],_=e.vecEast[1],p=e.vecSouth[0],m=e.vecSouth[1];}let v=l.x,x=l.y,b=i;r&&(v=f,x=g,b=Math.pow(2,-(this.transform.zoom-o.overscaledZ)),b*=this.transform.getPitchedTextCorrection(f,g,a),h||(b*=t.ae(.5+l.signedDistanceFromCamera/this.transform.cameraToCenterDistance*.5,0,4))),h&&(v+=d*h.x*b+p*h.y*b,x+=_*h.x*b+m*h.y*b);const y=e.x1*b,w=e.x2*b,T=(y+w)/2,P=e.y1*b,C=e.y2*b,I=(P+C)/2,M=[{offsetX:y,offsetY:P},{offsetX:T,offsetY:P},{offsetX:w,offsetY:P},{offsetX:w,offsetY:I},{offsetX:w,offsetY:C},{offsetX:T,offsetY:C},{offsetX:y,offsetY:C},{offsetX:y,offsetY:I}];let S=[];for(const{offsetX:e,offsetY:i}of M)S.push(new t.P(v+d*e+p*i,x+_*e+m*i));let E=!1;if(r){const e=S.map((e=>this.projectAndGetPerspectiveRatio(e.x,e.y,a,c,u)));E=e.some((e=>!e.isOccluded)),S=e.map((e=>new t.P(e.x,e.y)));}else E=!0;return {box:t.aA(S),allPointsOccluded:!E}}}class Je{constructor(e,t,i,o){this.opacity=e?Math.max(0,Math.min(1,e.opacity+(e.placed?t:-t))):o&&i?1:0,this.placed=i;}isHidden(){return 0===this.opacity&&!this.placed}}class et{constructor(e,t,i,o,a){this.text=new Je(e?e.text:null,t,i,a),this.icon=new Je(e?e.icon:null,t,o,a);}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class tt{constructor(e,t,i){this.text=e,this.icon=t,this.skipFade=i;}}class it{constructor(e,t,i,o,a){this.bucketInstanceId=e,this.featureIndex=t,this.sourceLayerIndex=i,this.bucketIndex=o,this.tileID=a;}}class ot{constructor(e){this.crossSourceCollisions=e,this.maxGroupID=0,this.collisionGroups={};}get(e){if(this.crossSourceCollisions)return {ID:0,predicate:null};if(!this.collisionGroups[e]){const t=++this.maxGroupID;this.collisionGroups[e]={ID:t,predicate:e=>e.collisionGroupID===t};}return this.collisionGroups[e]}}function at(e,i,o,a,r){const{horizontalAlign:s,verticalAlign:n}=t.aH(e);return new t.P(-(s-.5)*i+a[0]*r,-(n-.5)*o+a[1]*r)}class rt{constructor(e,t,i,o,a){this.transform=e.clone(),this.terrain=t,this.collisionIndex=new Ye(this.transform),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=i,this.retainedQueryData={},this.collisionGroups=new ot(o),this.collisionCircleArrays={},this.collisionBoxArrays=new Map,this.prevPlacement=a,a&&(a.prevPlacement=void 0),this.placedOrientations={};}_getTerrainElevationFunc(e){const t=this.terrain;return t?(i,o)=>t.getElevation(e,i,o):null}getBucketParts(e,i,o,a){const r=o.getBucket(i),s=o.latestFeatureIndex;if(!r||!s||i.id!==r.layerIds[0])return;const n=o.collisionBoxArray,l=r.layers[0].layout,c=r.layers[0].paint,h=Math.pow(2,this.transform.zoom-o.tileID.overscaledZ),u=o.tileSize/t.$,d=o.tileID.toUnwrapped(),_=\"map\"===l.get(\"text-rotation-alignment\"),p=t.aC(o,1,this.transform.zoom),m=t.aD(this.collisionIndex.transform,o,c.get(\"text-translate\"),c.get(\"text-translate-anchor\")),f=t.aD(this.collisionIndex.transform,o,c.get(\"icon-translate\"),c.get(\"icon-translate-anchor\")),g=Re(_,this.transform,p);this.retainedQueryData[r.bucketInstanceId]=new it(r.bucketInstanceId,s,r.sourceLayerIndex,r.index,o.tileID);const v={bucket:r,layout:l,translationText:m,translationIcon:f,unwrappedTileID:d,pitchedLabelPlaneMatrix:g,scale:h,textPixelRatio:u,holdingForFade:o.holdingForSymbolFade(),collisionBoxArray:n,partiallyEvaluatedTextSize:t.an(r.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(r.sourceID)};if(a)for(const t of r.sortKeyRanges){const{sortKey:i,symbolInstanceStart:o,symbolInstanceEnd:a}=t;e.push({sortKey:i,symbolInstanceStart:o,symbolInstanceEnd:a,parameters:v});}else e.push({symbolInstanceStart:0,symbolInstanceEnd:r.symbolInstances.length,parameters:v});}attemptAnchorPlacement(e,i,o,a,r,s,n,l,c,h,u,d,_,p,m,f,g,v,x,b){const y=t.aE[e.textAnchor],w=[e.textOffset0,e.textOffset1],T=at(y,o,a,w,r),P=this.collisionIndex.placeCollisionBox(i,d,l,c,h,n,s,f,u.predicate,x,T,b);if((!v||this.collisionIndex.placeCollisionBox(v,d,l,c,h,n,s,g,u.predicate,x,T,b).placeable)&&P.placeable){let e;if(this.prevPlacement&&this.prevPlacement.variableOffsets[_.crossTileID]&&this.prevPlacement.placements[_.crossTileID]&&this.prevPlacement.placements[_.crossTileID].text&&(e=this.prevPlacement.variableOffsets[_.crossTileID].anchor),0===_.crossTileID)throw new Error(\"symbolInstance.crossTileID can't be 0\");return this.variableOffsets[_.crossTileID]={textOffset:w,width:o,height:a,anchor:y,textBoxScale:r,prevAnchor:e},this.markUsedJustification(p,y,_,m),p.allowVerticalPlacement&&(this.markUsedOrientation(p,m,_),this.placedOrientations[_.crossTileID]=m),{shift:T,placedGlyphBoxes:P}}}placeLayerBucketPart(e,i,o){const{bucket:a,layout:r,translationText:s,translationIcon:n,unwrappedTileID:l,pitchedLabelPlaneMatrix:c,textPixelRatio:h,holdingForFade:u,collisionBoxArray:d,partiallyEvaluatedTextSize:_,collisionGroup:p}=e.parameters,m=r.get(\"text-optional\"),f=r.get(\"icon-optional\"),g=t.aF(r,\"text-overlap\",\"text-allow-overlap\"),v=\"always\"===g,x=t.aF(r,\"icon-overlap\",\"icon-allow-overlap\"),b=\"always\"===x,y=\"map\"===r.get(\"text-rotation-alignment\"),w=\"map\"===r.get(\"text-pitch-alignment\"),T=\"none\"!==r.get(\"icon-text-fit\"),P=\"viewport-y\"===r.get(\"symbol-z-order\"),C=v&&(b||!a.hasIconData()||f),I=b&&(v||!a.hasTextData()||m);!a.collisionArrays&&d&&a.deserializeCollisionBoxes(d);const M=this.retainedQueryData[a.bucketInstanceId].tileID,S=this._getTerrainElevationFunc(M),E=this.transform.getFastPathSimpleProjectionMatrix(M),R=(e,d,b)=>{var P,R;if(i[e.crossTileID])return;if(u)return void(this.placements[e.crossTileID]=new tt(!1,!1,!1));let D=!1,z=!1,A=!0,L=null,k={box:null,placeable:!1,offscreen:null,occluded:!1},F={placeable:!1},B=null,O=null,j=null,N=0,Z=0,U=0;d.textFeatureIndex?N=d.textFeatureIndex:e.useRuntimeCollisionCircles&&(N=e.featureIndex),d.verticalTextFeatureIndex&&(Z=d.verticalTextFeatureIndex);const G=d.textBox;if(G){const i=i=>{let o=t.ao.horizontal;if(a.allowVerticalPlacement&&!i&&this.prevPlacement){const t=this.prevPlacement.placedOrientations[e.crossTileID];t&&(this.placedOrientations[e.crossTileID]=t,o=t,this.markUsedOrientation(a,o,e));}return o},r=(i,o)=>{if(a.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&d.verticalTextBox){for(const e of a.writingModes)if(e===t.ao.vertical?(k=o(),F=k):k=i(),k&&k.placeable)break}else k=i();},c=e.textAnchorOffsetStartIndex,u=e.textAnchorOffsetEndIndex;if(u===c){const o=(t,i)=>{const o=this.collisionIndex.placeCollisionBox(t,g,h,M,l,w,y,s,p.predicate,S,void 0,E);return o&&o.placeable&&(this.markUsedOrientation(a,i,e),this.placedOrientations[e.crossTileID]=i),o};r((()=>o(G,t.ao.horizontal)),(()=>{const i=d.verticalTextBox;return a.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&i?o(i,t.ao.vertical):{box:null,offscreen:null}})),i(k&&k.placeable);}else {let _=t.aE[null===(R=null===(P=this.prevPlacement)||void 0===P?void 0:P.variableOffsets[e.crossTileID])||void 0===R?void 0:R.anchor];const m=(t,i,r)=>{const d=t.x2-t.x1,m=t.y2-t.y1,f=e.textBoxScale,v=T&&\"never\"===x?i:null;let b=null,P=\"never\"===g?1:2,C=\"never\";_&&P++;for(let i=0;i<P;i++){for(let i=c;i<u;i++){const o=a.textAnchorOffsets.get(i);if(_&&o.textAnchor!==_)continue;const c=this.attemptAnchorPlacement(o,t,d,m,f,y,w,h,M,l,p,C,e,a,r,s,n,v,S);if(c&&(b=c.placedGlyphBoxes,b&&b.placeable))return D=!0,L=c.shift,b}_?_=null:C=g;}return o&&!b&&(b={box:this.collisionIndex.placeCollisionBox(G,\"always\",h,M,l,w,y,s,p.predicate,S,void 0,E).box,offscreen:!1,placeable:!1,occluded:!1}),b};r((()=>m(G,d.iconBox,t.ao.horizontal)),(()=>{const i=d.verticalTextBox;return a.allowVerticalPlacement&&(!k||!k.placeable)&&e.numVerticalGlyphVertices>0&&i?m(i,d.verticalIconBox,t.ao.vertical):{box:null,occluded:!0,offscreen:null}})),k&&(D=k.placeable,A=k.offscreen);const f=i(k&&k.placeable);if(!D&&this.prevPlacement){const t=this.prevPlacement.variableOffsets[e.crossTileID];t&&(this.variableOffsets[e.crossTileID]=t,this.markUsedJustification(a,t.anchor,e,f));}}}if(B=k,D=B&&B.placeable,A=B&&B.offscreen,e.useRuntimeCollisionCircles&&e.centerJustifiedTextSymbolIndex>=0){const i=a.text.placedSymbolArray.get(e.centerJustifiedTextSymbolIndex),n=t.ap(a.textSizeData,_,i),h=r.get(\"text-padding\");O=this.collisionIndex.placeCollisionCircles(g,i,a.lineVertexArray,a.glyphOffsetArray,n,l,c,o,w,p.predicate,e.collisionCircleDiameter,h,s,S),O.circles.length&&O.collisionDetected&&!o&&t.w(\"Collisions detected, but collision boxes are not shown\"),D=v||O.circles.length>0&&!O.collisionDetected,A=A&&O.offscreen;}if(d.iconFeatureIndex&&(U=d.iconFeatureIndex),d.iconBox){const e=e=>this.collisionIndex.placeCollisionBox(e,x,h,M,l,w,y,n,p.predicate,S,T&&L?L:void 0,E);F&&F.placeable&&d.verticalIconBox?(j=e(d.verticalIconBox),z=j.placeable):(j=e(d.iconBox),z=j.placeable),A=A&&j.offscreen;}const V=m||0===e.numHorizontalGlyphVertices&&0===e.numVerticalGlyphVertices,$=f||0===e.numIconVertices;V||$?$?V||(z=z&&D):D=z&&D:z=D=z&&D;const W=z&&j.placeable;if(D&&B.placeable&&this.collisionIndex.insertCollisionBox(B.box,g,r.get(\"text-ignore-placement\"),a.bucketInstanceId,F&&F.placeable&&Z?Z:N,p.ID),W&&this.collisionIndex.insertCollisionBox(j.box,x,r.get(\"icon-ignore-placement\"),a.bucketInstanceId,U,p.ID),O&&D&&this.collisionIndex.insertCollisionCircles(O.circles,g,r.get(\"text-ignore-placement\"),a.bucketInstanceId,N,p.ID),o&&this.storeCollisionData(a.bucketInstanceId,b,d,B,j,O),0===e.crossTileID)throw new Error(\"symbolInstance.crossTileID can't be 0\");if(0===a.bucketInstanceId)throw new Error(\"bucket.bucketInstanceId can't be 0\");this.placements[e.crossTileID]=new tt((D||C)&&!(null==B?void 0:B.occluded),(z||I)&&!(null==j?void 0:j.occluded),A||a.justReloaded),i[e.crossTileID]=!0;};if(P){if(0!==e.symbolInstanceStart)throw new Error(\"bucket.bucketInstanceId should be 0\");const t=a.getSortedSymbolIndexes(-this.transform.bearingInRadians);for(let e=t.length-1;e>=0;--e){const i=t[e];R(a.symbolInstances.get(i),a.collisionArrays[i],i);}}else for(let t=e.symbolInstanceStart;t<e.symbolInstanceEnd;t++)R(a.symbolInstances.get(t),a.collisionArrays[t],t);a.justReloaded=!1;}storeCollisionData(e,t,i,o,a,r){if(i.textBox||i.iconBox){let r,s;this.collisionBoxArrays.has(e)?r=this.collisionBoxArrays.get(e):(r=new Map,this.collisionBoxArrays.set(e,r)),r.has(t)?s=r.get(t):(s={text:null,icon:null},r.set(t,s)),i.textBox&&(s.text=o.box),i.iconBox&&(s.icon=a.box);}if(r){let t=this.collisionCircleArrays[e];void 0===t&&(t=this.collisionCircleArrays[e]=[]);for(let e=0;e<r.circles.length;e+=4)t.push(r.circles[e+0]-Qe),t.push(r.circles[e+1]-Qe),t.push(r.circles[e+2]),t.push(r.collisionDetected?1:0);}}markUsedJustification(e,i,o,a){let r;r=a===t.ao.vertical?o.verticalPlacedTextSymbolIndex:{left:o.leftJustifiedTextSymbolIndex,center:o.centerJustifiedTextSymbolIndex,right:o.rightJustifiedTextSymbolIndex}[t.aG(i)];const s=[o.leftJustifiedTextSymbolIndex,o.centerJustifiedTextSymbolIndex,o.rightJustifiedTextSymbolIndex,o.verticalPlacedTextSymbolIndex];for(const t of s)t>=0&&(e.text.placedSymbolArray.get(t).crossTileID=r>=0&&t!==r?0:o.crossTileID);}markUsedOrientation(e,i,o){const a=i===t.ao.horizontal||i===t.ao.horizontalOnly?i:0,r=i===t.ao.vertical?i:0,s=[o.leftJustifiedTextSymbolIndex,o.centerJustifiedTextSymbolIndex,o.rightJustifiedTextSymbolIndex];for(const t of s)e.text.placedSymbolArray.get(t).placedOrientation=a;o.verticalPlacedTextSymbolIndex&&(e.text.placedSymbolArray.get(o.verticalPlacedTextSymbolIndex).placedOrientation=r);}commit(e){this.commitTime=e,this.zoomAtLastRecencyCheck=this.transform.zoom;const t=this.prevPlacement;let i=!1;this.prevZoomAdjustment=t?t.zoomAdjustment(this.transform.zoom):0;const o=t?t.symbolFadeChange(e):1,a=t?t.opacities:{},r=t?t.variableOffsets:{},s=t?t.placedOrientations:{};for(const e in this.placements){const t=this.placements[e],r=a[e];r?(this.opacities[e]=new et(r,o,t.text,t.icon),i=i||t.text!==r.text.placed||t.icon!==r.icon.placed):(this.opacities[e]=new et(null,o,t.text,t.icon,t.skipFade),i=i||t.text||t.icon);}for(const e in a){const t=a[e];if(!this.opacities[e]){const a=new et(t,o,!1,!1);a.isHidden()||(this.opacities[e]=a,i=i||t.text.placed||t.icon.placed);}}for(const e in r)this.variableOffsets[e]||!this.opacities[e]||this.opacities[e].isHidden()||(this.variableOffsets[e]=r[e]);for(const e in s)this.placedOrientations[e]||!this.opacities[e]||this.opacities[e].isHidden()||(this.placedOrientations[e]=s[e]);if(t&&void 0===t.lastPlacementChangeTime)throw new Error(\"Last placement time for previous placement is not defined\");i?this.lastPlacementChangeTime=e:\"number\"!=typeof this.lastPlacementChangeTime&&(this.lastPlacementChangeTime=t?t.lastPlacementChangeTime:e);}updateLayerOpacities(e,t){const i={};for(const o of t){const t=o.getBucket(e);t&&o.latestFeatureIndex&&e.id===t.layerIds[0]&&this.updateBucketOpacities(t,o.tileID,i,o.collisionBoxArray);}}updateBucketOpacities(e,i,o,a){e.hasTextData()&&(e.text.opacityVertexArray.clear(),e.text.hasVisibleVertices=!1),e.hasIconData()&&(e.icon.opacityVertexArray.clear(),e.icon.hasVisibleVertices=!1),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexArray.clear(),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexArray.clear();const r=e.layers[0],s=r.layout,n=new et(null,0,!1,!1,!0),l=s.get(\"text-allow-overlap\"),c=s.get(\"icon-allow-overlap\"),h=r._unevaluatedLayout.hasValue(\"text-variable-anchor\")||r._unevaluatedLayout.hasValue(\"text-variable-anchor-offset\"),u=\"map\"===s.get(\"text-rotation-alignment\"),d=\"map\"===s.get(\"text-pitch-alignment\"),_=\"none\"!==s.get(\"icon-text-fit\"),p=new et(null,0,l&&(c||!e.hasIconData()||s.get(\"icon-optional\")),c&&(l||!e.hasTextData()||s.get(\"text-optional\")),!0);!e.collisionArrays&&a&&(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData())&&e.deserializeCollisionBoxes(a);const m=(e,t,i)=>{for(let o=0;o<t/4;o++)e.opacityVertexArray.emplaceBack(i);e.hasVisibleVertices=e.hasVisibleVertices||i!==mt;},f=this.collisionBoxArrays.get(e.bucketInstanceId);for(let i=0;i<e.symbolInstances.length;i++){const a=e.symbolInstances.get(i),{numHorizontalGlyphVertices:r,numVerticalGlyphVertices:s,crossTileID:l}=a;let c=this.opacities[l];o[l]?c=n:c||(c=p,this.opacities[l]=c),o[l]=!0;const g=a.numIconVertices>0,v=this.placedOrientations[a.crossTileID],x=v===t.ao.vertical,b=v===t.ao.horizontal||v===t.ao.horizontalOnly;if(r>0||s>0){const t=pt(c.text);m(e.text,r,x?mt:t),m(e.text,s,b?mt:t);const i=c.text.isHidden();[a.rightJustifiedTextSymbolIndex,a.centerJustifiedTextSymbolIndex,a.leftJustifiedTextSymbolIndex].forEach((t=>{t>=0&&(e.text.placedSymbolArray.get(t).hidden=i||x?1:0);})),a.verticalPlacedTextSymbolIndex>=0&&(e.text.placedSymbolArray.get(a.verticalPlacedTextSymbolIndex).hidden=i||b?1:0);const o=this.variableOffsets[a.crossTileID];o&&this.markUsedJustification(e,o.anchor,a,v);const n=this.placedOrientations[a.crossTileID];n&&(this.markUsedJustification(e,\"left\",a,n),this.markUsedOrientation(e,n,a));}if(g){const t=pt(c.icon),i=!(_&&a.verticalPlacedIconSymbolIndex&&x);a.placedIconSymbolIndex>=0&&(m(e.icon,a.numIconVertices,i?t:mt),e.icon.placedSymbolArray.get(a.placedIconSymbolIndex).hidden=c.icon.isHidden()),a.verticalPlacedIconSymbolIndex>=0&&(m(e.icon,a.numVerticalIconVertices,i?mt:t),e.icon.placedSymbolArray.get(a.verticalPlacedIconSymbolIndex).hidden=c.icon.isHidden());}const y=f&&f.has(i)?f.get(i):{text:null,icon:null};if(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData()){const o=e.collisionArrays[i];if(o){let i=new t.P(0,0);if(o.textBox||o.verticalTextBox){let t=!0;if(h){const e=this.variableOffsets[l];e?(i=at(e.anchor,e.width,e.height,e.textOffset,e.textBoxScale),u&&i._rotate(d?-this.transform.bearingInRadians:this.transform.bearingInRadians)):t=!1;}if(o.textBox||o.verticalTextBox){let a;o.textBox&&(a=x),o.verticalTextBox&&(a=b),st(e.textCollisionBox.collisionVertexArray,c.text.placed,!t||a,y.text,i.x,i.y);}}if(o.iconBox||o.verticalIconBox){const t=Boolean(!b&&o.verticalIconBox);let a;o.iconBox&&(a=t),o.verticalIconBox&&(a=!t),st(e.iconCollisionBox.collisionVertexArray,c.icon.placed,a,y.icon,_?i.x:0,_?i.y:0);}}}}if(e.sortFeatures(-this.transform.bearingInRadians),this.retainedQueryData[e.bucketInstanceId]&&(this.retainedQueryData[e.bucketInstanceId].featureSortOrder=e.featureSortOrder),e.hasTextData()&&e.text.opacityVertexBuffer&&e.text.opacityVertexBuffer.updateData(e.text.opacityVertexArray),e.hasIconData()&&e.icon.opacityVertexBuffer&&e.icon.opacityVertexBuffer.updateData(e.icon.opacityVertexArray),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexBuffer&&e.iconCollisionBox.collisionVertexBuffer.updateData(e.iconCollisionBox.collisionVertexArray),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexBuffer&&e.textCollisionBox.collisionVertexBuffer.updateData(e.textCollisionBox.collisionVertexArray),e.text.opacityVertexArray.length!==e.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${e.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${e.text.layoutVertexArray.length}) / 4`);if(e.icon.opacityVertexArray.length!==e.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${e.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${e.icon.layoutVertexArray.length}) / 4`);e.bucketInstanceId in this.collisionCircleArrays&&(e.collisionCircleArray=this.collisionCircleArrays[e.bucketInstanceId],delete this.collisionCircleArrays[e.bucketInstanceId]);}symbolFadeChange(e){return 0===this.fadeDuration?1:(e-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(e){return Math.max(0,(this.transform.zoom-e)/1.5)}hasTransitions(e){return this.stale||e-this.lastPlacementChangeTime<this.fadeDuration}stillRecent(e,t){const i=this.zoomAtLastRecencyCheck===t?1-this.zoomAdjustment(t):1;return this.zoomAtLastRecencyCheck=t,this.commitTime+this.fadeDuration*i>e}setStale(){this.stale=!0;}}function st(e,t,i,o,a,r){o&&0!==o.length||(o=[0,0,0,0]);const s=o[0]-Qe,n=o[1]-Qe,l=o[2]-Qe,c=o[3]-Qe;e.emplaceBack(t?1:0,i?1:0,a||0,r||0,s,n),e.emplaceBack(t?1:0,i?1:0,a||0,r||0,l,n),e.emplaceBack(t?1:0,i?1:0,a||0,r||0,l,c),e.emplaceBack(t?1:0,i?1:0,a||0,r||0,s,c);}const nt=Math.pow(2,25),lt=Math.pow(2,24),ct=Math.pow(2,17),ht=Math.pow(2,16),ut=Math.pow(2,9),dt=Math.pow(2,8),_t=Math.pow(2,1);function pt(e){if(0===e.opacity&&!e.placed)return 0;if(1===e.opacity&&e.placed)return 4294967295;const t=e.placed?1:0,i=Math.floor(127*e.opacity);return i*nt+t*lt+i*ct+t*ht+i*ut+t*dt+i*_t+t}const mt=0;class ft{constructor(e){this._sortAcrossTiles=\"viewport-y\"!==e.layout.get(\"symbol-z-order\")&&!e.layout.get(\"symbol-sort-key\").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[];}continuePlacement(e,t,i,o,a){const r=this._bucketParts;for(;this._currentTileIndex<e.length;)if(t.getBucketParts(r,o,e[this._currentTileIndex],this._sortAcrossTiles),this._currentTileIndex++,a())return !0;for(this._sortAcrossTiles&&(this._sortAcrossTiles=!1,r.sort(((e,t)=>e.sortKey-t.sortKey)));this._currentPartIndex<r.length;)if(t.placeLayerBucketPart(r[this._currentPartIndex],this._seenCrossTileIDs,i),this._currentPartIndex++,a())return !0;return !1}}class gt{constructor(e,t,i,o,a,r,s,n){this.placement=new rt(e,t,r,s,n),this._currentPlacementIndex=i.length-1,this._forceFullPlacement=o,this._showCollisionBoxes=a,this._done=!1;}isDone(){return this._done}continuePlacement(e,t,i){const o=l(),a=()=>!this._forceFullPlacement&&l()-o>2;for(;this._currentPlacementIndex>=0;){const o=t[e[this._currentPlacementIndex]],r=this.placement.collisionIndex.transform.zoom;if(\"symbol\"===o.type&&(!o.minzoom||o.minzoom<=r)&&(!o.maxzoom||o.maxzoom>r)){if(this._inProgressLayer||(this._inProgressLayer=new ft(o)),this._inProgressLayer.continuePlacement(i[o.source],this.placement,this._showCollisionBoxes,o,a))return;delete this._inProgressLayer;}this._currentPlacementIndex--;}this._done=!0;}commit(e){return this.placement.commit(e),this.placement}}const vt=512/t.$/2;class xt{constructor(e,i,o){this.tileID=e,this.bucketInstanceId=o,this._symbolsByKey={};const a=new Map;for(let e=0;e<i.length;e++){const t=i.get(e),o=t.key,r=a.get(o);r?r.push(t):a.set(o,[t]);}for(const[e,i]of a){const o={positions:i.map((e=>({x:Math.floor(e.anchorX*vt),y:Math.floor(e.anchorY*vt)}))),crossTileIDs:i.map((e=>e.crossTileID))};if(o.positions.length>128){const e=new t.aI(o.positions.length,16,Uint16Array);for(const{x:t,y:i}of o.positions)e.add(t,i);e.finish(),delete o.positions,o.index=e;}this._symbolsByKey[e]=o;}}getScaledCoordinates(e,i){const{x:o,y:a,z:r}=this.tileID.canonical,{x:s,y:n,z:l}=i.canonical,c=vt/Math.pow(2,l-r),h=(n*t.$+e.anchorY)*c,u=a*t.$*vt;return {x:Math.floor((s*t.$+e.anchorX)*c-o*t.$*vt),y:Math.floor(h-u)}}findMatches(e,t,i){const o=this.tileID.canonical.z<t.canonical.z?1:Math.pow(2,this.tileID.canonical.z-t.canonical.z);for(let a=0;a<e.length;a++){const r=e.get(a);if(r.crossTileID)continue;const s=this._symbolsByKey[r.key];if(!s)continue;const n=this.getScaledCoordinates(r,t);if(s.index){const e=s.index.range(n.x-o,n.y-o,n.x+o,n.y+o).sort();for(const t of e){const e=s.crossTileIDs[t];if(!i[e]){i[e]=!0,r.crossTileID=e;break}}}else if(s.positions)for(let e=0;e<s.positions.length;e++){const t=s.positions[e],a=s.crossTileIDs[e];if(Math.abs(t.x-n.x)<=o&&Math.abs(t.y-n.y)<=o&&!i[a]){i[a]=!0,r.crossTileID=a;break}}}}getCrossTileIDsLists(){return Object.values(this._symbolsByKey).map((({crossTileIDs:e})=>e))}}class bt{constructor(){this.maxCrossTileID=0;}generate(){return ++this.maxCrossTileID}}class yt{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0;}handleWrapJump(e){const t=Math.round((e-this.lng)/360);if(0!==t)for(const e in this.indexes){const i=this.indexes[e],o={};for(const e in i){const a=i[e];a.tileID=a.tileID.unwrapTo(a.tileID.wrap+t),o[a.tileID.key]=a;}this.indexes[e]=o;}this.lng=e;}addBucket(e,t,i){if(this.indexes[e.overscaledZ]&&this.indexes[e.overscaledZ][e.key]){if(this.indexes[e.overscaledZ][e.key].bucketInstanceId===t.bucketInstanceId)return !1;this.removeBucketCrossTileIDs(e.overscaledZ,this.indexes[e.overscaledZ][e.key]);}for(let e=0;e<t.symbolInstances.length;e++)t.symbolInstances.get(e).crossTileID=0;this.usedCrossTileIDs[e.overscaledZ]||(this.usedCrossTileIDs[e.overscaledZ]={});const o=this.usedCrossTileIDs[e.overscaledZ];for(const i in this.indexes){const a=this.indexes[i];if(Number(i)>e.overscaledZ)for(const i in a){const r=a[i];r.tileID.isChildOf(e)&&r.findMatches(t.symbolInstances,e,o);}else {const r=a[e.scaledTo(Number(i)).key];r&&r.findMatches(t.symbolInstances,e,o);}}for(let e=0;e<t.symbolInstances.length;e++){const a=t.symbolInstances.get(e);a.crossTileID||(a.crossTileID=i.generate(),o[a.crossTileID]=!0);}return void 0===this.indexes[e.overscaledZ]&&(this.indexes[e.overscaledZ]={}),this.indexes[e.overscaledZ][e.key]=new xt(e,t.symbolInstances,t.bucketInstanceId),!0}removeBucketCrossTileIDs(e,t){for(const i of t.getCrossTileIDsLists())for(const t of i)delete this.usedCrossTileIDs[e][t];}removeStaleBuckets(e){let t=!1;for(const i in this.indexes){const o=this.indexes[i];for(const a in o)e[o[a].bucketInstanceId]||(this.removeBucketCrossTileIDs(i,o[a]),delete o[a],t=!0);}return t}}class wt{constructor(){this.layerIndexes={},this.crossTileIDs=new bt,this.maxBucketInstanceId=0,this.bucketsInCurrentPlacement={};}addLayer(e,t,i){let o=this.layerIndexes[e.id];void 0===o&&(o=this.layerIndexes[e.id]=new yt);let a=!1;const r={};o.handleWrapJump(i);for(const i of t){const t=i.getBucket(e);t&&e.id===t.layerIds[0]&&(t.bucketInstanceId||(t.bucketInstanceId=++this.maxBucketInstanceId),o.addBucket(i.tileID,t,this.crossTileIDs)&&(a=!0),r[t.bucketInstanceId]=!0);}return o.removeStaleBuckets(r)&&(a=!0),a}pruneUnusedLayers(e){const t={};e.forEach((e=>{t[e]=!0;}));for(const e in this.layerIndexes)t[e]||delete this.layerIndexes[e];}}var Tt=\"void main() {fragColor=vec4(1.0);}\";const Pt={prelude:Ct(\"#ifdef GL_ES\\nprecision mediump float;\\n#else\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n#if !defined(highp)\\n#define highp\\n#endif\\n#endif\\nout highp vec4 fragColor;\",\"#ifdef GL_ES\\nprecision highp float;\\n#else\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n#if !defined(highp)\\n#define highp\\n#endif\\n#endif\\nvec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0\\n);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}mat3 rotationMatrixFromAxisAngle(vec3 u,float angle) {float c=cos(angle);float s=sin(angle);float c2=1.0-c;return mat3(u.x*u.x*c2+      c,u.x*u.y*c2-u.z*s,u.x*u.z*c2+u.y*s,u.y*u.x*c2+u.z*s,u.y*u.y*c2+    c,u.y*u.z*c2-u.x*s,u.z*u.x*c2-u.y*s,u.z*u.y*c2+u.x*s,u.z*u.z*c2+    c\\n);}\\n#ifdef TERRAIN3D\\nuniform sampler2D u_terrain;uniform float u_terrain_dim;uniform mat4 u_terrain_matrix;uniform vec4 u_terrain_unpack;uniform float u_terrain_exaggeration;uniform highp sampler2D u_depth;\\n#endif\\nconst highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitShifts=vec4(1.)/bitSh;highp float unpack(highp vec4 color) {return dot(color,bitShifts);}highp float depthOpacity(vec3 frag) {\\n#ifdef TERRAIN3D\\nhighp float d=unpack(texture(u_depth,frag.xy*0.5+0.5))+0.0001-frag.z;return 1.0-max(0.0,min(1.0,-d*500.0));\\n#else\\nreturn 1.0;\\n#endif\\n}float calculate_visibility(vec4 pos) {\\n#ifdef TERRAIN3D\\nvec3 frag=pos.xyz/pos.w;highp float d=depthOpacity(frag);if (d > 0.95) return 1.0;return (d+depthOpacity(frag+vec3(0.0,0.01,0.0)))/2.0;\\n#else\\nreturn 1.0;\\n#endif\\n}float ele(vec2 pos) {\\n#ifdef TERRAIN3D\\nvec4 rgb=(texture(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a;\\n#else\\nreturn 0.0;\\n#endif\\n}float get_elevation(vec2 pos) {\\n#ifdef TERRAIN3D\\n#ifdef GLOBE\\nif ((pos.y <-32767.5) || (pos.y > 32766.5)) {return 0.0;}\\n#endif\\nvec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.0;vec2 f=fract(coord);vec2 c=(floor(coord)+0.5)/(u_terrain_dim+2.0);float d=1.0/(u_terrain_dim+2.0);float tl=ele(c);float tr=ele(c+vec2(d,0.0));float bl=ele(c+vec2(0.0,d));float br=ele(c+vec2(d,d));float elevation=mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);return elevation*u_terrain_exaggeration;\\n#else\\nreturn 0.0;\\n#endif\\n}const float PI=3.141592653589793;uniform mat4 u_projection_matrix;\"),projectionMercator:Ct(\"\",\"float projectLineThickness(float tileY) {return 1.0;}float projectCircleRadius(float tileY) {return 1.0;}vec4 projectTile(vec2 p) {vec4 result=u_projection_matrix*vec4(p,0.0,1.0);return result;}vec4 projectTile(vec2 p,vec2 rawPos) {vec4 result=u_projection_matrix*vec4(p,0.0,1.0);if (rawPos.y <-32767.5 || rawPos.y > 32766.5) {result.z=-10000000.0;}return result;}vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_projection_matrix*vec4(posInTile,elevation,1.0);}vec4 projectTileFor3D(vec2 posInTile,float elevation) {return projectTileWithElevation(posInTile,elevation);}\"),projectionGlobe:Ct(\"\",\"#define GLOBE_RADIUS 6371008.8\\nuniform highp vec4 u_projection_tile_mercator_coords;uniform highp vec4 u_projection_clipping_plane;uniform highp float u_projection_transition;uniform mat4 u_projection_fallback_matrix;vec3 globeRotateVector(vec3 vec,vec2 angles) {vec3 axisRight=vec3(vec.z,0.0,-vec.x);vec3 axisUp=cross(axisRight,vec);axisRight=normalize(axisRight);axisUp=normalize(axisUp);vec2 t=tan(angles);return normalize(vec+axisRight*t.x+axisUp*t.y);}mat3 globeGetRotationMatrix(vec3 spherePos) {vec3 axisRight=vec3(spherePos.z,0.0,-spherePos.x);vec3 axisDown=cross(axisRight,spherePos);axisRight=normalize(axisRight);axisDown=normalize(axisDown);return mat3(axisRight,axisDown,spherePos\\n);}float circumferenceRatioAtTileY(float tileY) {float mercator_pos_y=u_projection_tile_mercator_coords.y+u_projection_tile_mercator_coords.w*tileY;float spherical_y=2.0*atan(exp(PI-(mercator_pos_y*PI*2.0)))-PI*0.5;return cos(spherical_y);}float projectLineThickness(float tileY) {float thickness=1.0/circumferenceRatioAtTileY(tileY); \\nif (u_projection_transition < 0.999) {return mix(1.0,thickness,u_projection_transition);} else {return thickness;}}vec3 projectToSphere(vec2 translatedPos,vec2 rawPos) {vec2 mercator_pos=u_projection_tile_mercator_coords.xy+u_projection_tile_mercator_coords.zw*translatedPos;vec2 spherical;spherical.x=mercator_pos.x*PI*2.0+PI;spherical.y=2.0*atan(exp(PI-(mercator_pos.y*PI*2.0)))-PI*0.5;float len=cos(spherical.y);vec3 pos=vec3(sin(spherical.x)*len,sin(spherical.y),cos(spherical.x)*len\\n);if (rawPos.y <-32767.5) {pos=vec3(0.0,1.0,0.0);}if (rawPos.y > 32766.5) {pos=vec3(0.0,-1.0,0.0);}return pos;}vec3 projectToSphere(vec2 posInTile) {return projectToSphere(posInTile,vec2(0.0,0.0));}float globeComputeClippingZ(vec3 spherePos) {return (1.0-(dot(spherePos,u_projection_clipping_plane.xyz)+u_projection_clipping_plane.w));}vec4 interpolateProjection(vec2 posInTile,vec3 spherePos,float elevation) {vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);vec4 globePosition=u_projection_matrix*vec4(elevatedPos,1.0);globePosition.z=globeComputeClippingZ(elevatedPos)*globePosition.w;if (u_projection_transition > 0.999) {return globePosition;}vec4 flatPosition=u_projection_fallback_matrix*vec4(posInTile,elevation,1.0);const float z_globeness_threshold=0.2;vec4 result=globePosition;result.z=mix(0.0,globePosition.z,clamp((u_projection_transition-z_globeness_threshold)/(1.0-z_globeness_threshold),0.0,1.0));result.xyw=mix(flatPosition.xyw,globePosition.xyw,u_projection_transition);if ((posInTile.y <-32767.5) || (posInTile.y > 32766.5)) {result=globePosition;const float poles_hidden_anim_percentage=0.02;result.z=mix(globePosition.z,100.0,pow(max((1.0-u_projection_transition)/poles_hidden_anim_percentage,0.0),8.0));}return result;}vec4 interpolateProjectionFor3D(vec2 posInTile,vec3 spherePos,float elevation) {vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);vec4 globePosition=u_projection_matrix*vec4(elevatedPos,1.0);if (u_projection_transition > 0.999) {return globePosition;}vec4 fallbackPosition=u_projection_fallback_matrix*vec4(posInTile,elevation,1.0);return mix(fallbackPosition,globePosition,u_projection_transition);}vec4 projectTile(vec2 posInTile) {return interpolateProjection(posInTile,projectToSphere(posInTile),0.0);}vec4 projectTile(vec2 posInTile,vec2 rawPos) {return interpolateProjection(posInTile,projectToSphere(posInTile,rawPos),0.0);}vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return interpolateProjection(posInTile,projectToSphere(posInTile),elevation);}vec4 projectTileFor3D(vec2 posInTile,float elevation) {vec3 spherePos=projectToSphere(posInTile,posInTile);return interpolateProjectionFor3D(posInTile,spherePos,elevation);}\"),background:Ct(\"uniform vec4 u_color;uniform float u_opacity;void main() {fragColor=u_color*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(1.0);\\n#endif\\n}\",\"in vec2 a_pos;void main() {gl_Position=projectTile(a_pos);}\"),backgroundPattern:Ct(\"uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;in vec2 v_pos_a;in vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);fragColor=mix(color1,color2,u_mix)*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(1.0);\\n#endif\\n}\",\"uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b;void main() {gl_Position=projectTile(a_pos);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}\"),circle:Ct(\"in vec3 v_data;in float v_visibility;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize mediump float radius\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize highp vec4 stroke_color\\n#pragma mapbox: initialize mediump float stroke_width\\n#pragma mapbox: initialize lowp float stroke_opacity\\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);float antialiased_blur=v_data.z;float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));fragColor=v_visibility*opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);const float epsilon=0.5/255.0;if (fragColor.r < epsilon && fragColor.g < epsilon && fragColor.b < epsilon && fragColor.a < epsilon) {discard;}\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(1.0);\\n#endif\\n}\",\"uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform highp float u_globe_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;uniform vec2 u_translate;in vec2 a_pos;out vec3 v_data;out float v_visibility;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\nvoid main(void) {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize mediump float radius\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize highp vec4 stroke_color\\n#pragma mapbox: initialize mediump float stroke_width\\n#pragma mapbox: initialize lowp float stroke_opacity\\nvec2 pos_raw=a_pos+32768.0;vec2 extrude=vec2(mod(pos_raw,8.0)/7.0*2.0-1.0);vec2 circle_center=floor(pos_raw/8.0)+u_translate;float ele=get_elevation(circle_center);v_visibility=calculate_visibility(projectTileWithElevation(circle_center,ele));if (u_pitch_with_map) {\\n#ifdef GLOBE\\nvec3 center_vector=projectToSphere(circle_center);\\n#endif\\nfloat angle_scale=u_globe_extrude_scale;vec2 corner_position=circle_center;if (u_scale_with_map) {angle_scale*=(radius+stroke_width);corner_position+=extrude*u_extrude_scale*(radius+stroke_width);} else {\\n#ifdef GLOBE\\nvec4 projected_center=interpolateProjection(circle_center,center_vector,ele);\\n#else\\nvec4 projected_center=projectTileWithElevation(circle_center,ele);\\n#endif\\ncorner_position+=extrude*u_extrude_scale*(radius+stroke_width)*(projected_center.w/u_camera_to_center_distance);angle_scale*=(radius+stroke_width)*(projected_center.w/u_camera_to_center_distance);}\\n#ifdef GLOBE\\nvec2 angles=extrude*angle_scale;vec3 corner_vector=globeRotateVector(center_vector,angles);gl_Position=interpolateProjection(corner_position,corner_vector,ele);\\n#else\\ngl_Position=projectTileWithElevation(corner_position,ele);\\n#endif\\n} else {gl_Position=projectTileWithElevation(circle_center,ele);if (gl_Position.z/gl_Position.w > 1.0) {gl_Position.xy=vec2(10000.0);}if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}float antialiasblur=-max(1.0/u_device_pixel_ratio/(radius+stroke_width),blur);v_data=vec3(extrude.x,extrude.y,antialiasblur);}\"),clippingMask:Ct(Tt,\"in vec2 a_pos;void main() {gl_Position=projectTile(a_pos);}\"),heatmap:Ct(\"uniform highp float u_intensity;in vec2 v_extrude;\\n#pragma mapbox: define highp float weight\\n#define GAUSS_COEF 0.3989422804014327\\nvoid main() {\\n#pragma mapbox: initialize highp float weight\\nfloat d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);fragColor=vec4(val,1.0,1.0,1.0);\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(1.0);\\n#endif\\n}\",\"uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;uniform highp float u_globe_extrude_scale;in vec2 a_pos;out vec2 v_extrude;\\n#pragma mapbox: define highp float weight\\n#pragma mapbox: define mediump float radius\\nconst highp float ZERO=1.0/255.0/16.0;\\n#define GAUSS_COEF 0.3989422804014327\\nvoid main(void) {\\n#pragma mapbox: initialize highp float weight\\n#pragma mapbox: initialize mediump float radius\\nvec2 pos_raw=a_pos+32768.0;vec2 unscaled_extrude=vec2(mod(pos_raw,8.0)/7.0*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec2 circle_center=floor(pos_raw/8.0);\\n#ifdef GLOBE\\nvec2 angles=v_extrude*radius*u_globe_extrude_scale;vec3 center_vector=projectToSphere(circle_center);vec3 corner_vector=globeRotateVector(center_vector,angles);gl_Position=interpolateProjection(circle_center+extrude,corner_vector,0.0);\\n#else\\ngl_Position=projectTileFor3D(circle_center+extrude,get_elevation(circle_center));\\n#endif\\n}\"),heatmapTexture:Ct(\"uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;in vec2 v_pos;void main() {float t=texture(u_image,v_pos).r;vec4 color=texture(u_color_ramp,vec2(t,0.5));fragColor=color*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(0.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_world;in vec2 a_pos;out vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}\"),collisionBox:Ct(\"in float v_placed;in float v_notUsed;void main() {float alpha=0.5;fragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {fragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {fragColor*=.1;}}\",\"in vec2 a_anchor_pos;in vec2 a_placed;in vec2 a_box_real;uniform vec2 u_pixel_extrude_scale;out float v_placed;out float v_notUsed;void main() {gl_Position=projectTileWithElevation(a_anchor_pos,get_elevation(a_anchor_pos));gl_Position.xy=((a_box_real+0.5)*u_pixel_extrude_scale*2.0-1.0)*vec2(1.0,-1.0)*gl_Position.w;if (gl_Position.z/gl_Position.w < 1.1) {gl_Position.z=0.5;}v_placed=a_placed.x;v_notUsed=a_placed.y;}\"),collisionCircle:Ct(\"in float v_radius;in vec2 v_extrude;in float v_collision;void main() {float alpha=0.5;float stroke_radius=0.9;float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);fragColor=color*alpha*opacity_t;}\",\"in vec2 a_pos;in float a_radius;in vec2 a_flags;uniform vec2 u_viewport_size;out float v_radius;out vec2 v_extrude;out float v_collision;void main() {float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_collision=collision;gl_Position=vec4((a_pos/u_viewport_size*2.0-1.0)*vec2(1.0,-1.0),0.0,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}\"),colorRelief:Ct(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform sampler2D u_image;uniform vec4 u_unpack;uniform sampler2D u_elevation_stops;uniform sampler2D u_color_stops;uniform int u_color_ramp_size;uniform float u_opacity;in vec2 v_pos;float getElevation(vec2 coord) {vec4 data=texture(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack);}float getElevationStop(int stop) {float x=(float(stop)+0.5)/float(u_color_ramp_size);vec4 data=texture(u_elevation_stops,vec2(x,0))*255.0;data.a=-1.0;return dot(data,u_unpack);}void main() {float el=getElevation(v_pos);int r=(u_color_ramp_size-1);int l=0;float el_l=getElevationStop(l);float el_r=getElevationStop(r);while(r-l > 1){int m=(r+l)/2;float el_m=getElevationStop(m);if(el < el_m){r=m;el_r=el_m;}else\\n{l=m;el_l=el_m;}}float x=(float(l)+(el-el_l)/(el_r-el_l)+0.5)/float(u_color_ramp_size);fragColor=u_opacity*texture(u_color_stops,vec2(x,0));\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(1.0);\\n#endif\\n}\",\"uniform vec2 u_dimension;in vec2 a_pos;out vec2 v_pos;void main() {gl_Position=projectTile(a_pos,a_pos);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_pos/8192.0)*scale+epsilon;if (a_pos.y <-32767.5) {v_pos.y=0.0;}if (a_pos.y > 32766.5) {v_pos.y=1.0;}}\"),debug:Ct(\"uniform highp vec4 u_color;uniform sampler2D u_overlay;in vec2 v_uv;void main() {vec4 overlay_color=texture(u_overlay,v_uv);fragColor=mix(u_color,overlay_color,overlay_color.a);}\",\"in vec2 a_pos;out vec2 v_uv;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=projectTileWithElevation(a_pos*u_overlay_scale,get_elevation(a_pos));}\"),depth:Ct(Tt,\"in vec2 a_pos;void main() {\\n#ifdef GLOBE\\ngl_Position=projectTileFor3D(a_pos,0.0);\\n#else\\ngl_Position=u_projection_matrix*vec4(a_pos,0.0,1.0);\\n#endif\\n}\"),fill:Ct(\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\nfragColor=color*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(1.0);\\n#endif\\n}\",\"uniform vec2 u_fill_translate;in vec2 a_pos;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=projectTile(a_pos+u_fill_translate,a_pos);}\"),fillOutline:Ct(\"in vec2 v_pos;\\n#ifdef GLOBE\\nin float v_depth;\\n#endif\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);fragColor=outline_color*(alpha*opacity);\\n#ifdef GLOBE\\nif (v_depth > 1.0) {discard;}\\n#endif\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(1.0);\\n#endif\\n}\",\"uniform vec2 u_world;uniform vec2 u_fill_translate;in vec2 a_pos;out vec2 v_pos;\\n#ifdef GLOBE\\nout float v_depth;\\n#endif\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=projectTile(a_pos+u_fill_translate,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;\\n#ifdef GLOBE\\nv_depth=gl_Position.z/gl_Position.w;\\n#endif\\n}\"),fillOutlinePattern:Ct(\"uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;in vec2 v_pos_a;in vec2 v_pos_b;in vec2 v_pos;\\n#ifdef GLOBE\\nin float v_depth;\\n#endif\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);fragColor=mix(color1,color2,u_fade)*alpha*opacity;\\n#ifdef GLOBE\\nif (v_depth > 1.0) {discard;}\\n#endif\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(1.0);\\n#endif\\n}\",\"uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;uniform vec2 u_fill_translate;in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b;out vec2 v_pos;\\n#ifdef GLOBE\\nout float v_depth;\\n#endif\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=projectTile(a_pos+u_fill_translate,a_pos);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;\\n#ifdef GLOBE\\nv_depth=gl_Position.z/gl_Position.w;\\n#endif\\n}\"),fillPattern:Ct(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;in vec2 v_pos_a;in vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);fragColor=mix(color1,color2,u_fade)*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(1.0);\\n#endif\\n}\",\"uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;uniform vec2 u_fill_translate;in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=projectTile(a_pos+u_fill_translate,a_pos);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}\"),fillExtrusion:Ct(\"in vec4 v_color;void main() {fragColor=v_color;\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(1.0);\\n#endif\\n}\",\"uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp vec3 u_lightpos_globe;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec2 u_fill_translate;in vec2 a_pos;in vec4 a_normal_ed;\\n#ifdef TERRAIN3D\\nin vec2 a_centroid;\\n#endif\\nout vec4 v_color;\\n#pragma mapbox: define highp float base\\n#pragma mapbox: define highp float height\\n#pragma mapbox: define highp vec4 color\\nvoid main() {\\n#pragma mapbox: initialize highp float base\\n#pragma mapbox: initialize highp float height\\n#pragma mapbox: initialize highp vec4 color\\nvec3 normal=a_normal_ed.xyz;\\n#ifdef TERRAIN3D\\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\\n#else\\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\\n#endif\\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float elevation=t > 0.0 ? height : base;vec2 posInTile=a_pos+u_fill_translate;\\n#ifdef GLOBE\\nvec3 spherePos=projectToSphere(posInTile,a_pos);gl_Position=interpolateProjectionFor3D(posInTile,spherePos,elevation);\\n#else\\ngl_Position=u_projection_matrix*vec4(posInTile,elevation,1.0);\\n#endif\\nfloat colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;vec3 normalForLighting=normal/16384.0;float directional=clamp(dot(normalForLighting,u_lightpos),0.0,1.0);\\n#ifdef GLOBE\\nmat3 rotMatrix=globeGetRotationMatrix(spherePos);normalForLighting=rotMatrix*normalForLighting;directional=mix(directional,clamp(dot(normalForLighting,u_lightpos_globe),0.0,1.0),u_projection_transition);\\n#endif\\ndirectional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}\"),fillExtrusionPattern:Ct(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;in vec2 v_pos_a;in vec2 v_pos_b;in vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);fragColor=mixedColor*v_lighting;\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(1.0);\\n#endif\\n}\",\"uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec2 u_fill_translate;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp vec3 u_lightpos_globe;uniform lowp float u_lightintensity;in vec2 a_pos;in vec4 a_normal_ed;\\n#ifdef TERRAIN3D\\nin vec2 a_centroid;\\n#endif\\n#ifdef GLOBE\\nout vec3 v_sphere_pos;\\n#endif\\nout vec2 v_pos_a;out vec2 v_pos_b;out vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;\\n#ifdef TERRAIN3D\\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\\n#else\\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\\n#endif\\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float elevation=t > 0.0 ? height : base;vec2 posInTile=a_pos+u_fill_translate;\\n#ifdef GLOBE\\nvec3 spherePos=projectToSphere(posInTile,a_pos);vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);v_sphere_pos=elevatedPos;gl_Position=interpolateProjectionFor3D(posInTile,spherePos,elevation);\\n#else\\ngl_Position=u_projection_matrix*vec4(posInTile,elevation,1.0);\\n#endif\\nvec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\\n? a_pos\\n: vec2(edgedistance,elevation*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}\"),hillshadePrepare:Ct(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform sampler2D u_image;in vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack);}void main() {vec2 epsilon=1.0/u_dimension;float tileSize=u_dimension.x-2.0;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))*tileSize/pow(2.0,exaggeration+(28.2562-u_zoom));fragColor=clamp(vec4(deriv.x/8.0+0.5,deriv.y/8.0+0.5,1.0,1.0),0.0,1.0);\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_dimension;in vec2 a_pos;in vec2 a_texture_pos;out vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}\"),hillshade:Ct(\"uniform sampler2D u_image;in vec2 v_pos;uniform vec2 u_latrange;uniform float u_exaggeration;uniform vec4 u_accent;uniform int u_method;uniform float u_altitudes[NUM_ILLUMINATION_SOURCES];uniform float u_azimuths[NUM_ILLUMINATION_SOURCES];uniform vec4 u_shadows[NUM_ILLUMINATION_SOURCES];uniform vec4 u_highlights[NUM_ILLUMINATION_SOURCES];\\n#define PI 3.141592653589793\\n#define STANDARD 0\\n#define COMBINED 1\\n#define IGOR 2\\n#define MULTIDIRECTIONAL 3\\n#define BASIC 4\\nfloat get_aspect(vec2 deriv){return deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);}void igor_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float aspect=get_aspect(deriv);float azimuth=u_azimuths[0]+PI;float slope_stength=atan(length(deriv))*2.0/PI;float aspect_strength=1.0-abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);float shadow_strength=slope_stength*aspect_strength;float highlight_strength=slope_stength*(1.0-aspect_strength);fragColor=u_shadows[0]*shadow_strength+u_highlights[0]*highlight_strength;}void standard_hillshade(vec2 deriv){float azimuth=u_azimuths[0]+PI;float slope=atan(0.625*length(deriv));float aspect=get_aspect(deriv);float intensity=u_exaggeration;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadows[0],u_highlights[0],shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);fragColor=accent_color*(1.0-shade_color.a)+shade_color;}void basic_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float azimuth=u_azimuths[0]+PI;float cos_az=cos(azimuth);float sin_az=sin(azimuth);float cos_alt=cos(u_altitudes[0]);float sin_alt=sin(u_altitudes[0]);float cang=(sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv));float shade=clamp(cang,0.0,1.0);if(shade > 0.5){fragColor=u_highlights[0]*(2.0*shade-1.0);}else\\n{fragColor=u_shadows[0]*(1.0-2.0*shade);}}void multidirectional_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;fragColor=vec4(0,0,0,0);for(int i=0; i < NUM_ILLUMINATION_SOURCES; i++){float cos_alt=cos(u_altitudes[i]);float sin_alt=sin(u_altitudes[i]);float cos_az=-cos(u_azimuths[i]);float sin_az=-sin(u_azimuths[i]);float cang=(sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv));float shade=clamp(cang,0.0,1.0);if(shade > 0.5){fragColor+=u_highlights[i]*(2.0*shade-1.0)/float(NUM_ILLUMINATION_SOURCES);}else\\n{fragColor+=u_shadows[i]*(1.0-2.0*shade)/float(NUM_ILLUMINATION_SOURCES);}}}void combined_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float azimuth=u_azimuths[0]+PI;float cos_az=cos(azimuth);float sin_az=sin(azimuth);float cos_alt=cos(u_altitudes[0]);float sin_alt=sin(u_altitudes[0]);float cang=acos((sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv)));cang=clamp(cang,0.0,PI/2.0);float shade=cang*atan(length(deriv))*4.0/PI/PI;float highlight=(PI/2.0-cang)*atan(length(deriv))*4.0/PI/PI;fragColor=u_shadows[0]*shade+u_highlights[0]*highlight;}void main() {vec4 pixel=texture(u_image,v_pos);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));vec2 deriv=((pixel.rg*8.0)-4.0)/scaleFactor;if (u_method==BASIC) {basic_hillshade(deriv);} else if (u_method==COMBINED) {combined_hillshade(deriv);} else if (u_method==IGOR) {igor_hillshade(deriv);} else if (u_method==MULTIDIRECTIONAL) {multidirectional_hillshade(deriv);} else if (u_method==STANDARD) {standard_hillshade(deriv);} else {standard_hillshade(deriv);}\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;in vec2 a_pos;out vec2 v_pos;void main() {gl_Position=projectTile(a_pos,a_pos);v_pos=a_pos/8192.0;if (a_pos.y <-32767.5) {v_pos.y=0.0;}if (a_pos.y > 32766.5) {v_pos.y=1.0;}}\"),line:Ct(\"uniform lowp float u_device_pixel_ratio;in vec2 v_width2;in vec2 v_normal;in float v_gamma_scale;\\n#ifdef GLOBE\\nin float v_depth;\\n#endif\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);fragColor=color*(alpha*opacity);\\n#ifdef GLOBE\\nif (v_depth > 1.0) {discard;}\\n#endif\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\nin vec2 a_pos_normal;in vec4 a_data;uniform vec2 u_translation;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp float v_linesofar;\\n#ifdef GLOBE\\nout float v_depth;\\n#endif\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\\n#ifdef GLOBE\\nv_depth=gl_Position.z/gl_Position.w;\\n#endif\\n#ifdef TERRAIN3D\\nv_gamma_scale=1.0;\\n#else\\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\\n#endif\\nv_width2=vec2(outset,inset);}\"),lineGradient:Ct(\"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;in vec2 v_width2;in vec2 v_normal;in float v_gamma_scale;in highp vec2 v_uv;\\n#ifdef GLOBE\\nin float v_depth;\\n#endif\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture(u_image,v_uv);fragColor=color*(alpha*opacity);\\n#ifdef GLOBE\\nif (v_depth > 1.0) {discard;}\\n#endif\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\nin vec2 a_pos_normal;in vec4 a_data;in float a_uv_x;in float a_split_index;uniform vec2 u_translation;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp vec2 v_uv;\\n#ifdef GLOBE\\nout float v_depth;\\n#endif\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\\n#ifdef GLOBE\\nv_depth=gl_Position.z/gl_Position.w;\\n#endif\\n#ifdef TERRAIN3D\\nv_gamma_scale=1.0;\\n#else\\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\\n#endif\\nv_width2=vec2(outset,inset);}\"),linePattern:Ct(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;in vec2 v_normal;in vec2 v_width2;in float v_linesofar;in float v_gamma_scale;in float v_width;\\n#ifdef GLOBE\\nin float v_depth;\\n#endif\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture(u_image,pos_a),texture(u_image,pos_b),u_fade);fragColor=color*alpha*opacity;\\n#ifdef GLOBE\\nif (v_depth > 1.0) {discard;}\\n#endif\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nin vec2 a_pos_normal;in vec4 a_data;uniform vec2 u_translation;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;out vec2 v_normal;out vec2 v_width2;out float v_linesofar;out float v_gamma_scale;out float v_width;\\n#ifdef GLOBE\\nout float v_depth;\\n#endif\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\\n#ifdef GLOBE\\nv_depth=gl_Position.z/gl_Position.w;\\n#endif\\n#ifdef TERRAIN3D\\nv_gamma_scale=1.0;\\n#else\\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\\n#endif\\nv_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}\"),lineSDF:Ct(\"uniform lowp float u_device_pixel_ratio;uniform lowp float u_lineatlas_width;uniform sampler2D u_image;uniform float u_mix;in vec2 v_normal;in vec2 v_width2;in vec2 v_tex_a;in vec2 v_tex_b;in float v_gamma_scale;\\n#ifdef GLOBE\\nin float v_depth;\\n#endif\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define mediump vec4 dasharray_from\\n#pragma mapbox: define mediump vec4 dasharray_to\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize mediump vec4 dasharray_from\\n#pragma mapbox: initialize mediump vec4 dasharray_to\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture(u_image,v_tex_a).a;float sdfdist_b=texture(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);float sdfgamma=(u_lineatlas_width/256.0/u_device_pixel_ratio)/min(dasharray_from.w,dasharray_to.w);alpha*=smoothstep(0.5-sdfgamma/floorwidth,0.5+sdfgamma/floorwidth,sdfdist);fragColor=color*(alpha*opacity);\\n#ifdef GLOBE\\nif (v_depth > 1.0) {discard;}\\n#endif\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nin vec2 a_pos_normal;in vec4 a_data;uniform vec2 u_translation;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_tileratio;uniform float u_crossfade_from;uniform float u_crossfade_to;uniform float u_lineatlas_height;out vec2 v_normal;out vec2 v_width2;out vec2 v_tex_a;out vec2 v_tex_b;out float v_gamma_scale;\\n#ifdef GLOBE\\nout float v_depth;\\n#endif\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define mediump vec4 dasharray_from\\n#pragma mapbox: define mediump vec4 dasharray_to\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize mediump vec4 dasharray_from\\n#pragma mapbox: initialize mediump vec4 dasharray_to\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\\n#ifdef GLOBE\\nv_depth=gl_Position.z/gl_Position.w;\\n#endif\\n#ifdef TERRAIN3D\\nv_gamma_scale=1.0;\\n#else\\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\\n#endif\\nfloat u_patternscale_a_x=u_tileratio/dasharray_from.w/u_crossfade_from;float u_patternscale_a_y=-dasharray_from.z/2.0/u_lineatlas_height;float u_patternscale_b_x=u_tileratio/dasharray_to.w/u_crossfade_to;float u_patternscale_b_y=-dasharray_to.z/2.0/u_lineatlas_height;v_tex_a=vec2(a_linesofar*u_patternscale_a_x/floorwidth,normal.y*u_patternscale_a_y+(float(dasharray_from.y)+0.5)/u_lineatlas_height);v_tex_b=vec2(a_linesofar*u_patternscale_b_x/floorwidth,normal.y*u_patternscale_b_y+(float(dasharray_to.y)+0.5)/u_lineatlas_height);v_width2=vec2(outset,inset);}\"),lineGradientSDF:Ct(\"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform sampler2D u_image_dash;uniform float u_mix;uniform lowp float u_lineatlas_width;in vec2 v_normal;in vec2 v_width2;in vec2 v_tex_a;in vec2 v_tex_b;in float v_gamma_scale;in highp vec2 v_uv;\\n#ifdef GLOBE\\nin float v_depth;\\n#endif\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define mediump vec4 dasharray_from\\n#pragma mapbox: define mediump vec4 dasharray_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize mediump vec4 dasharray_from\\n#pragma mapbox: initialize mediump vec4 dasharray_to\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture(u_image,v_uv);float sdfdist_a=texture(u_image_dash,v_tex_a).a;float sdfdist_b=texture(u_image_dash,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);float sdfgamma=(u_lineatlas_width/256.0)/min(dasharray_from.w,dasharray_to.w);float dash_alpha=smoothstep(0.5-sdfgamma/floorwidth,0.5+sdfgamma/floorwidth,sdfdist);fragColor=color*(alpha*dash_alpha*opacity);\\n#ifdef GLOBE\\nif (v_depth > 1.0) {discard;}\\n#endif\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nin vec2 a_pos_normal;in vec4 a_data;in float a_uv_x;in float a_split_index;uniform vec2 u_translation;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;uniform float u_tileratio;uniform float u_crossfade_from;uniform float u_crossfade_to;uniform float u_lineatlas_height;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp vec2 v_uv;out vec2 v_tex_a;out vec2 v_tex_b;\\n#ifdef GLOBE\\nout float v_depth;\\n#endif\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define mediump vec4 dasharray_from\\n#pragma mapbox: define mediump vec4 dasharray_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize mediump vec4 dasharray_from\\n#pragma mapbox: initialize mediump vec4 dasharray_to\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;float texel_height=1.0/u_image_height;float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\\n#ifdef GLOBE\\nv_depth=gl_Position.z/gl_Position.w;\\n#endif\\n#ifdef TERRAIN3D\\nv_gamma_scale=1.0;\\n#else\\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\\n#endif\\nfloat u_patternscale_a_x=u_tileratio/dasharray_from.w/u_crossfade_from;float u_patternscale_a_y=-dasharray_from.z/2.0/u_lineatlas_height;float u_patternscale_b_x=u_tileratio/dasharray_to.w/u_crossfade_to;float u_patternscale_b_y=-dasharray_to.z/2.0/u_lineatlas_height;v_tex_a=vec2(a_linesofar*u_patternscale_a_x/floorwidth,normal.y*u_patternscale_a_y+(float(dasharray_from.y)+0.5)/u_lineatlas_height);v_tex_b=vec2(a_linesofar*u_patternscale_b_x/floorwidth,normal.y*u_patternscale_b_y+(float(dasharray_to.y)+0.5)/u_lineatlas_height);v_width2=vec2(outset,inset);}\"),raster:Ct(\"uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;in vec2 v_pos0;in vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture(u_image0,v_pos0);vec4 color1=texture(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);fragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(1.0);\\n#endif\\n}\",\"uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;uniform vec4 u_coords_top;uniform vec4 u_coords_bottom;in vec2 a_pos;out vec2 v_pos0;out vec2 v_pos1;void main() {vec2 fractionalPos=a_pos/8192.0;vec2 position=mix(mix(u_coords_top.xy,u_coords_top.zw,fractionalPos.x),mix(u_coords_bottom.xy,u_coords_bottom.zw,fractionalPos.x),fractionalPos.y);gl_Position=projectTile(position,position);v_pos0=((fractionalPos-0.5)/u_buffer_scale)+0.5;\\n#ifdef GLOBE\\nif (a_pos.y <-32767.5) {v_pos0.y=0.0;}if (a_pos.y > 32766.5) {v_pos0.y=1.0;}\\n#endif\\nv_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}\"),symbolIcon:Ct(\"uniform sampler2D u_texture;in vec2 v_tex;in float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nlowp float alpha=opacity*v_fade_opacity;fragColor=texture(u_texture,v_tex)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(1.0);\\n#endif\\n}\",\"in vec4 a_pos_offset;in vec4 a_data;in vec4 a_pixeloffset;in vec3 a_projected_pos;in float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;out vec2 v_tex;out float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;\\n#ifdef GLOBE\\nif(u_pitch_with_map) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);}\\n#endif\\nvec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}gl_Position=finalPos;v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float visibility=calculate_visibility(projectedPoint);v_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));}\"),symbolSDF:Ct(\"#define SDF_PX 8.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;in vec2 v_data0;in vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float inner_edge=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);inner_edge=inner_edge+gamma*gamma_scale;}lowp float dist=texture(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(inner_edge-gamma_scaled,inner_edge+gamma_scaled,dist);if (u_is_halo) {lowp float halo_edge=(6.0-halo_width/fontScale)/SDF_PX;alpha=min(smoothstep(halo_edge-gamma_scaled,halo_edge+gamma_scaled,dist),1.0-alpha);}fragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(1.0);\\n#endif\\n}\",\"in vec4 a_pos_offset;in vec4 a_data;in vec4 a_pixeloffset;in vec3 a_projected_pos;in float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_translation;uniform float u_pitched_scale;out vec2 v_data0;out vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;\\n#ifdef GLOBE\\nif(u_pitch_with_map) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);}\\n#endif\\nvec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}\"),symbolTextAndIcon:Ct(\"#define SDF_PX 8.0\\n#define SDF 1.0\\n#define ICON 0.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;in vec4 v_data0;in vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;fragColor=texture(u_texture_icon,tex_icon)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(1.0);\\n#endif\\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);fragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\nfragColor=vec4(1.0);\\n#endif\\n}\",\"in vec4 a_pos_offset;in vec4 a_data;in vec3 a_projected_pos;in float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;out vec4 v_data0;out vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;\\n#ifdef GLOBE\\nif(u_pitch_with_map && !u_is_along_line) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);}\\n#endif\\nvec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}\"),terrain:Ct(\"uniform sampler2D u_texture;uniform vec4 u_fog_color;uniform vec4 u_horizon_color;uniform float u_fog_ground_blend;uniform float u_fog_ground_blend_opacity;uniform float u_horizon_fog_blend;uniform bool u_is_globe_mode;in vec2 v_texture_pos;in float v_fog_depth;const float gamma=2.2;vec4 gammaToLinear(vec4 color) {return pow(color,vec4(gamma));}vec4 linearToGamma(vec4 color) {return pow(color,vec4(1.0/gamma));}void main() {vec4 surface_color=texture(u_texture,vec2(v_texture_pos.x,1.0-v_texture_pos.y));if (!u_is_globe_mode && v_fog_depth > u_fog_ground_blend) {vec4 surface_color_linear=gammaToLinear(surface_color);float blend_color=smoothstep(0.0,1.0,max((v_fog_depth-u_horizon_fog_blend)/(1.0-u_horizon_fog_blend),0.0));vec4 fog_horizon_color_linear=mix(gammaToLinear(u_fog_color),gammaToLinear(u_horizon_color),blend_color);float factor_fog=max(v_fog_depth-u_fog_ground_blend,0.0)/(1.0-u_fog_ground_blend);fragColor=linearToGamma(mix(surface_color_linear,fog_horizon_color_linear,pow(factor_fog,2.0)*u_fog_ground_blend_opacity));} else {fragColor=surface_color;}}\",\"in vec3 a_pos3d;uniform mat4 u_fog_matrix;uniform float u_ele_delta;out vec2 v_texture_pos;out float v_fog_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=projectTileFor3D(a_pos3d.xy,get_elevation(a_pos3d.xy)-ele_delta);vec4 pos=u_fog_matrix*vec4(a_pos3d.xy,ele,1.0);v_fog_depth=pos.z/pos.w*0.5+0.5;}\"),terrainDepth:Ct(\"in float v_depth;const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitMsk=vec4(0.,vec3(1./256.0));highp vec4 pack(highp float value) {highp vec4 comp=fract(value*bitSh);comp-=comp.xxyz*bitMsk;return comp;}void main() {fragColor=pack(v_depth);}\",\"in vec3 a_pos3d;uniform float u_ele_delta;out float v_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;gl_Position=projectTileFor3D(a_pos3d.xy,ele-ele_delta);v_depth=gl_Position.z/gl_Position.w;}\"),terrainCoords:Ct(\"precision mediump float;uniform sampler2D u_texture;uniform float u_terrain_coords_id;in vec2 v_texture_pos;void main() {vec4 rgba=texture(u_texture,v_texture_pos);fragColor=vec4(rgba.r,rgba.g,rgba.b,u_terrain_coords_id);}\",\"in vec3 a_pos3d;uniform float u_ele_delta;out vec2 v_texture_pos;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=projectTileFor3D(a_pos3d.xy,ele-ele_delta);}\"),projectionErrorMeasurement:Ct(\"in vec4 v_output_error_encoded;void main() {fragColor=v_output_error_encoded;}\",\"in vec2 a_pos;uniform highp float u_input;uniform highp float u_output_expected;out vec4 v_output_error_encoded;void main() {float real_output=2.0*atan(exp(PI-(u_input*PI*2.0)))-PI*0.5;float error=real_output-u_output_expected;float abs_error=abs(error)*128.0;v_output_error_encoded.x=min(floor(abs_error*256.0),255.0)/255.0;abs_error-=v_output_error_encoded.x;v_output_error_encoded.y=min(floor(abs_error*65536.0),255.0)/255.0;abs_error-=v_output_error_encoded.x/255.0;v_output_error_encoded.z=min(floor(abs_error*16777216.0),255.0)/255.0;v_output_error_encoded.w=error >=0.0 ? 1.0 : 0.0;gl_Position=vec4(a_pos,0.0,1.0);}\"),atmosphere:Ct(\"in vec3 view_direction;uniform vec3 u_sun_pos;uniform vec3 u_globe_position;uniform float u_globe_radius;uniform float u_atmosphere_blend;/**Shader use from https:*Made some change to adapt to MapLibre Globe geometry*/const float PI=3.141592653589793;const int iSteps=5;const int jSteps=3;/*radius of the planet*/const float EARTH_RADIUS=6371e3;/*radius of the atmosphere*/const float ATMOS_RADIUS=6471e3;vec2 rsi(vec3 r0,vec3 rd,float sr) {float a=dot(rd,rd);float b=2.0*dot(rd,r0);float c=dot(r0,r0)-(sr*sr);float d=(b*b)-4.0*a*c;if (d < 0.0) return vec2(1e5,-1e5);return vec2((-b-sqrt(d))/(2.0*a),(-b+sqrt(d))/(2.0*a));}vec4 atmosphere(vec3 r,vec3 r0,vec3 pSun,float iSun,float rPlanet,float rAtmos,vec3 kRlh,float kMie,float shRlh,float shMie,float g) {pSun=normalize(pSun);r=normalize(r);vec2 p=rsi(r0,r,rAtmos);if (p.x > p.y) {return vec4(0.0,0.0,0.0,1.0);}if (p.x < 0.0) {p.x=0.0;}vec3 pos=r0+r*p.x;vec2 p2=rsi(r0,r,rPlanet);if (p2.x <=p2.y && p2.x > 0.0) {p.y=min(p.y,p2.x);}float iStepSize=(p.y-p.x)/float(iSteps);float iTime=p.x+iStepSize*0.5;vec3 totalRlh=vec3(0,0,0);vec3 totalMie=vec3(0,0,0);float iOdRlh=0.0;float iOdMie=0.0;float mu=dot(r,pSun);float mumu=mu*mu;float gg=g*g;float pRlh=3.0/(16.0*PI)*(1.0+mumu);float pMie=3.0/(8.0*PI)*((1.0-gg)*(mumu+1.0))/(pow(1.0+gg-2.0*mu*g,1.5)*(2.0+gg));for (int i=0; i < iSteps; i++) {vec3 iPos=r0+r*iTime;float iHeight=length(iPos)-rPlanet;float odStepRlh=exp(-iHeight/shRlh)*iStepSize;float odStepMie=exp(-iHeight/shMie)*iStepSize;iOdRlh+=odStepRlh;iOdMie+=odStepMie;float jStepSize=rsi(iPos,pSun,rAtmos).y/float(jSteps);float jTime=jStepSize*0.5;float jOdRlh=0.0;float jOdMie=0.0;for (int j=0; j < jSteps; j++) {vec3 jPos=iPos+pSun*jTime;float jHeight=length(jPos)-rPlanet;jOdRlh+=exp(-jHeight/shRlh)*jStepSize;jOdMie+=exp(-jHeight/shMie)*jStepSize;jTime+=jStepSize;}vec3 attn=exp(-(kMie*(iOdMie+jOdMie)+kRlh*(iOdRlh+jOdRlh)));totalRlh+=odStepRlh*attn;totalMie+=odStepMie*attn;iTime+=iStepSize;}float opacity=exp(-(length(kRlh)*length(totalRlh)+kMie*length(totalMie)));vec3 color=iSun*(pRlh*kRlh*totalRlh+pMie*kMie*totalMie);return vec4(color,opacity);}void main() {vec3 scale_camera_pos=-u_globe_position*EARTH_RADIUS/u_globe_radius;vec4 color=atmosphere(normalize(view_direction),scale_camera_pos,u_sun_pos,22.0,EARTH_RADIUS,ATMOS_RADIUS,vec3(5.5e-6,13.0e-6,22.4e-6),21e-6,8e3,1.2e3,0.758\\n);color.rgb=1.0-exp(-1.0*color.rgb);color=pow(color,vec4(1.0/2.2));fragColor=vec4(color.rgb,1.0-color.a)*u_atmosphere_blend;}\",\"in vec2 a_pos;uniform mat4 u_inv_proj_matrix;out vec3 view_direction;void main() {view_direction=(u_inv_proj_matrix*vec4(a_pos,0.0,1.0)).xyz;gl_Position=vec4(a_pos,0.0,1.0);}\"),sky:Ct(\"uniform vec4 u_sky_color;uniform vec4 u_horizon_color;uniform vec2 u_horizon;uniform vec2 u_horizon_normal;uniform float u_sky_horizon_blend;uniform float u_sky_blend;void main() {float x=gl_FragCoord.x;float y=gl_FragCoord.y;float blend=(y-u_horizon.y)*u_horizon_normal.y+(x-u_horizon.x)*u_horizon_normal.x;if (blend > 0.0) {if (blend < u_sky_horizon_blend) {fragColor=mix(u_sky_color,u_horizon_color,pow(1.0-blend/u_sky_horizon_blend,2.0));} else {fragColor=u_sky_color;}}fragColor=mix(fragColor,vec4(vec3(0.0),0.0),u_sky_blend);}\",\"in vec2 a_pos;void main() {gl_Position=vec4(a_pos,1.0,1.0);}\")};function Ct(e,t){const i=/#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g,o=t.match(/in ([\\w]+) ([\\w]+)/g),a=e.match(/uniform ([\\w]+) ([\\w]+)([\\s]*)([\\w]*)/g),r=t.match(/uniform ([\\w]+) ([\\w]+)([\\s]*)([\\w]*)/g),s=r?r.concat(a):a,n={};return {fragmentSource:e=e.replace(i,((e,t,i,o,a)=>(n[a]=!0,\"define\"===t?`\\n#ifndef HAS_UNIFORM_u_${a}\\nin ${i} ${o} ${a};\\n#else\\nuniform ${i} ${o} u_${a};\\n#endif\\n`:`\\n#ifdef HAS_UNIFORM_u_${a}\\n    ${i} ${o} ${a} = u_${a};\\n#endif\\n`))),vertexSource:t=t.replace(i,((e,t,i,o,a)=>{const r=\"float\"===o?\"vec2\":\"vec4\",s=a.match(/color/)?\"color\":r;return n[a]?\"define\"===t?`\\n#ifndef HAS_UNIFORM_u_${a}\\nuniform lowp float u_${a}_t;\\nin ${i} ${r} a_${a};\\nout ${i} ${o} ${a};\\n#else\\nuniform ${i} ${o} u_${a};\\n#endif\\n`:\"vec4\"===s?`\\n#ifndef HAS_UNIFORM_u_${a}\\n    ${a} = a_${a};\\n#else\\n    ${i} ${o} ${a} = u_${a};\\n#endif\\n`:`\\n#ifndef HAS_UNIFORM_u_${a}\\n    ${a} = unpack_mix_${s}(a_${a}, u_${a}_t);\\n#else\\n    ${i} ${o} ${a} = u_${a};\\n#endif\\n`:\"define\"===t?`\\n#ifndef HAS_UNIFORM_u_${a}\\nuniform lowp float u_${a}_t;\\nin ${i} ${r} a_${a};\\n#else\\nuniform ${i} ${o} u_${a};\\n#endif\\n`:\"vec4\"===s?`\\n#ifndef HAS_UNIFORM_u_${a}\\n    ${i} ${o} ${a} = a_${a};\\n#else\\n    ${i} ${o} ${a} = u_${a};\\n#endif\\n`:`\\n#ifndef HAS_UNIFORM_u_${a}\\n    ${i} ${o} ${a} = unpack_mix_${s}(a_${a}, u_${a}_t);\\n#else\\n    ${i} ${o} ${a} = u_${a};\\n#endif\\n`})),staticAttributes:o,staticUniforms:s}}class It{constructor(e,t,i){this.vertexBuffer=e,this.indexBuffer=t,this.segments=i;}destroy(){this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.vertexBuffer=null,this.indexBuffer=null,this.segments=null;}}var Mt=t.aJ([{name:\"a_pos\",type:\"Int16\",components:2}]);const St=\"#define PROJECTION_MERCATOR\",Et=\"mercator\";class Rt{constructor(){this._cachedMesh=null;}get name(){return \"mercator\"}get useSubdivision(){return !1}get shaderVariantName(){return Et}get shaderDefine(){return St}get shaderPreludeCode(){return Pt.projectionMercator}get vertexShaderPreludeCode(){return Pt.projectionMercator.vertexSource}get subdivisionGranularity(){return t.aK.noSubdivision}get useGlobeControls(){return !1}get transitionState(){return 0}get latitudeErrorCorrectionRadians(){return 0}destroy(){}updateGPUdependent(e){}getMeshFromTileID(e,i,o,a,r){if(this._cachedMesh)return this._cachedMesh;const s=new t.aL;s.emplaceBack(0,0),s.emplaceBack(t.$,0),s.emplaceBack(0,t.$),s.emplaceBack(t.$,t.$);const n=e.createVertexBuffer(s,Mt.members),l=t.aM.simpleSegment(0,0,4,2),c=new t.aN;c.emplaceBack(1,0,2),c.emplaceBack(1,2,3);const h=e.createIndexBuffer(c);return this._cachedMesh=new It(n,h,l),this._cachedMesh}recalculate(){}hasTransition(){return !1}setErrorQueryLatitudeDegrees(e){}}class Dt{constructor(e=0,t=0,i=0,o=0){if(isNaN(e)||e<0||isNaN(t)||t<0||isNaN(i)||i<0||isNaN(o)||o<0)throw new Error(\"Invalid value for edge-insets, top, bottom, left and right must all be numbers\");this.top=e,this.bottom=t,this.left=i,this.right=o;}interpolate(e,i,o){return null!=i.top&&null!=e.top&&(this.top=t.C.number(e.top,i.top,o)),null!=i.bottom&&null!=e.bottom&&(this.bottom=t.C.number(e.bottom,i.bottom,o)),null!=i.left&&null!=e.left&&(this.left=t.C.number(e.left,i.left,o)),null!=i.right&&null!=e.right&&(this.right=t.C.number(e.right,i.right,o)),this}getCenter(e,i){const o=t.ae((this.left+e-this.right)/2,0,e),a=t.ae((this.top+i-this.bottom)/2,0,i);return new t.P(o,a)}equals(e){return this.top===e.top&&this.bottom===e.bottom&&this.left===e.left&&this.right===e.right}clone(){return new Dt(this.top,this.bottom,this.left,this.right)}toJSON(){return {top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}function zt(e,t){if(!e.renderWorldCopies||e.lngRange)return;const i=t.lng-e.center.lng;t.lng+=i>180?-360:i<-180?360:0;}function At(e){return Math.max(0,Math.floor(e))}class Lt{constructor(e,i){var o;this._callbacks=e,this._tileSize=512,this._renderWorldCopies=void 0===(null==i?void 0:i.renderWorldCopies)||!!(null==i?void 0:i.renderWorldCopies),this._minZoom=(null==i?void 0:i.minZoom)||0,this._maxZoom=(null==i?void 0:i.maxZoom)||22,this._minPitch=null==(null==i?void 0:i.minPitch)?0:null==i?void 0:i.minPitch,this._maxPitch=null==(null==i?void 0:i.maxPitch)?60:null==i?void 0:i.maxPitch,this._constrain=null!==(o=null==i?void 0:i.constrain)&&void 0!==o?o:this._callbacks.constrain,this.setMaxBounds(),this._width=0,this._height=0,this._center=new t.S(0,0),this._elevation=0,this._zoom=0,this._tileZoom=At(this._zoom),this._scale=t.ah(this._zoom),this._bearingInRadians=0,this._fovInRadians=.6435011087932844,this._pitchInRadians=0,this._rollInRadians=0,this._unmodified=!0,this._edgeInsets=new Dt,this._minElevationForCurrentTile=0,this._autoCalculateNearFarZ=!0;}apply(e,i,o){this._latRange=e.latRange,this._lngRange=e.lngRange,this._width=e.width,this._height=e.height,this._center=e.center,this._elevation=e.elevation,this._minElevationForCurrentTile=e.minElevationForCurrentTile,this._zoom=e.zoom,this._tileZoom=At(this._zoom),this._scale=t.ah(this._zoom),this._bearingInRadians=e.bearingInRadians,this._fovInRadians=e.fovInRadians,this._pitchInRadians=e.pitchInRadians,this._rollInRadians=e.rollInRadians,this._unmodified=e.unmodified,this._edgeInsets=new Dt(e.padding.top,e.padding.bottom,e.padding.left,e.padding.right),this._minZoom=e.minZoom,this._maxZoom=e.maxZoom,this._minPitch=e.minPitch,this._maxPitch=e.maxPitch,this._renderWorldCopies=e.renderWorldCopies,this._cameraToCenterDistance=e.cameraToCenterDistance,this._nearZ=e.nearZ,this._farZ=e.farZ,this._autoCalculateNearFarZ=!o&&e.autoCalculateNearFarZ,i&&this.constrainInternal(),this._calcMatrices();}get pixelsToClipSpaceMatrix(){return this._pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._clipSpaceToPixelsMatrix}get minElevationForCurrentTile(){return this._minElevationForCurrentTile}setMinElevationForCurrentTile(e){this._minElevationForCurrentTile=e;}get tileSize(){return this._tileSize}get tileZoom(){return this._tileZoom}get scale(){return this._scale}get width(){return this._width}get height(){return this._height}get bearingInRadians(){return this._bearingInRadians}get lngRange(){return this._lngRange}get latRange(){return this._latRange}get pixelsToGLUnits(){return this._pixelsToGLUnits}get minZoom(){return this._minZoom}setMinZoom(e){this._minZoom!==e&&(this._minZoom=e,this.setZoom(this.constrain(this._center,this.zoom).zoom));}get maxZoom(){return this._maxZoom}setMaxZoom(e){this._maxZoom!==e&&(this._maxZoom=e,this.setZoom(this.constrain(this._center,this.zoom).zoom));}get minPitch(){return this._minPitch}setMinPitch(e){this._minPitch!==e&&(this._minPitch=e,this.setPitch(Math.max(this.pitch,e)));}get maxPitch(){return this._maxPitch}setMaxPitch(e){this._maxPitch!==e&&(this._maxPitch=e,this.setPitch(Math.min(this.pitch,e)));}get renderWorldCopies(){return this._renderWorldCopies}setRenderWorldCopies(e){void 0===e?e=!0:null===e&&(e=!1),this._renderWorldCopies=e;}get constrain(){return this._constrain}setConstrain(e){e||(e=this._callbacks.constrain),this._constrain=e,this.constrainInternal(),this._calcMatrices();}get worldSize(){return this._tileSize*this._scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new t.P(this._width,this._height)}get bearing(){return this._bearingInRadians/Math.PI*180}setBearing(e){const i=t.aO(e,-180,180)*Math.PI/180;var a,r,s,n,l,c,h,u,d;this._bearingInRadians!==i&&(this._unmodified=!1,this._bearingInRadians=i,this._calcMatrices(),this._rotationMatrix=o(),a=this._rotationMatrix,s=-this._bearingInRadians,n=(r=this._rotationMatrix)[0],l=r[1],c=r[2],h=r[3],u=Math.sin(s),d=Math.cos(s),a[0]=n*d+c*u,a[1]=l*d+h*u,a[2]=n*-u+c*d,a[3]=l*-u+h*d);}get rotationMatrix(){return this._rotationMatrix}get pitchInRadians(){return this._pitchInRadians}get pitch(){return this._pitchInRadians/Math.PI*180}setPitch(e){const i=t.ae(e,this.minPitch,this.maxPitch)/180*Math.PI;this._pitchInRadians!==i&&(this._unmodified=!1,this._pitchInRadians=i,this._calcMatrices());}get rollInRadians(){return this._rollInRadians}get roll(){return this._rollInRadians/Math.PI*180}setRoll(e){const t=e/180*Math.PI;this._rollInRadians!==t&&(this._unmodified=!1,this._rollInRadians=t,this._calcMatrices());}get fovInRadians(){return this._fovInRadians}get fov(){return t.aP(this._fovInRadians)}setFov(e){e=t.ae(e,.1,150),this.fov!==e&&(this._unmodified=!1,this._fovInRadians=t.ag(e),this._calcMatrices());}get zoom(){return this._zoom}setZoom(e){const i=this.constrain(this._center,e).zoom;this._zoom!==i&&(this._unmodified=!1,this._zoom=i,this._tileZoom=Math.max(0,Math.floor(i)),this._scale=t.ah(i),this.constrainInternal(),this._calcMatrices());}get center(){return this._center}setCenter(e){e.lat===this._center.lat&&e.lng===this._center.lng||(this._unmodified=!1,this._center=e,this.constrainInternal(),this._calcMatrices());}get elevation(){return this._elevation}setElevation(e){e!==this._elevation&&(this._elevation=e,this.constrainInternal(),this._calcMatrices());}get padding(){return this._edgeInsets.toJSON()}setPadding(e){this._edgeInsets.equals(e)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,e,1),this._calcMatrices());}get centerPoint(){return this._edgeInsets.getCenter(this._width,this._height)}get pixelsPerMeter(){return this._pixelPerMeter}get unmodified(){return this._unmodified}get cameraToCenterDistance(){return this._cameraToCenterDistance}get nearZ(){return this._nearZ}get farZ(){return this._farZ}get autoCalculateNearFarZ(){return this._autoCalculateNearFarZ}overrideNearFarZ(e,t){this._autoCalculateNearFarZ=!1,this._nearZ=e,this._farZ=t,this._calcMatrices();}clearNearFarZOverride(){this._autoCalculateNearFarZ=!0,this._calcMatrices();}isPaddingEqual(e){return this._edgeInsets.equals(e)}interpolatePadding(e,t,i){this._unmodified=!1,this._edgeInsets.interpolate(e,t,i),this.constrainInternal(),this._calcMatrices();}resize(e,t,i=!0){this._width=e,this._height=t,i&&this.constrainInternal(),this._calcMatrices();}getMaxBounds(){return this._latRange&&2===this._latRange.length&&this._lngRange&&2===this._lngRange.length?new $([this._lngRange[0],this._latRange[0]],[this._lngRange[1],this._latRange[1]]):null}setMaxBounds(e){e?(this._lngRange=[e.getWest(),e.getEast()],this._latRange=[e.getSouth(),e.getNorth()],this.constrainInternal()):(this._lngRange=null,this._latRange=[-t.af,t.af]);}getCameraQueryGeometry(e,i){if(1===i.length)return [i[0],e];{const{minX:o,minY:a,maxX:r,maxY:s}=t.a2.fromPoints(i).extend(e);return [new t.P(o,a),new t.P(r,a),new t.P(r,s),new t.P(o,s),new t.P(o,a)]}}constrainInternal(){if(!this.center||!this._width||!this._height||this._constraining)return;this._constraining=!0;const e=this._unmodified,{center:t,zoom:i}=this.constrain(this.center,this.zoom);this.setCenter(t),this.setZoom(i),this._unmodified=e,this._constraining=!1;}_calcMatrices(){if(this._width&&this._height){this._pixelsToGLUnits=[2/this._width,-2/this._height];let e=t.ai(new Float64Array(16));t.N(e,e,[this._width/2,-this._height/2,1]),t.M(e,e,[1,-1,0]),this._clipSpaceToPixelsMatrix=e,e=t.ai(new Float64Array(16)),t.N(e,e,[1,-1,1]),t.M(e,e,[-1,-1,0]),t.N(e,e,[2/this._width,2/this._height,1]),this._pixelsToClipSpaceMatrix=e,this._cameraToCenterDistance=.5/Math.tan(this.fovInRadians/2)*this._height;}this._callbacks.calcMatrices();}calculateCenterFromCameraLngLatAlt(e,i,o,a){const r=void 0!==o?o:this.bearing,s=a=void 0!==a?a:this.pitch,n=t.a1.fromLngLat(e,i),l=-Math.cos(t.ag(s)),c=Math.sin(t.ag(s)),h=c*Math.sin(t.ag(r)),u=-c*Math.cos(t.ag(r));let d=this.elevation;const _=i-d;let p;l*_>=0||Math.abs(l)<.1?(p=1e4,d=i+p*l):p=-_/l;let m,f,g=t.aQ(1,n.y),v=0;do{if(v+=1,v>10)break;f=p/g,m=new t.a1(n.x+h*f,n.y+u*f),g=1/m.meterInMercatorCoordinateUnits();}while(Math.abs(p-f*g)>1e-12);return {center:m.toLngLat(),elevation:d,zoom:t.ak(this.height/2/Math.tan(this.fovInRadians/2)/f/this.tileSize)}}recalculateZoomAndCenter(e){if(this.elevation-e==0)return;const i=t.aj(1,this.center.lat)*this.worldSize,o=this.cameraToCenterDistance/i,a=t.a1.fromLngLat(this.center,this.elevation),r=fe(this.center,this.elevation,this.pitch,this.bearing,o);this._elevation=e;const s=this.calculateCenterFromCameraLngLatAlt(r.toLngLat(),t.aQ(r.z,a.y),this.bearing,this.pitch);this._elevation=s.elevation,this._center=s.center,this.setZoom(s.zoom);}getCameraPoint(){const e=Math.tan(this.pitchInRadians)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.P(e*Math.sin(this.rollInRadians),e*Math.cos(this.rollInRadians)))}getCameraAltitude(){return Math.cos(this.pitchInRadians)*this._cameraToCenterDistance/this._pixelPerMeter+this.elevation}getCameraLngLat(){const e=t.aj(1,this.center.lat)*this.worldSize;return fe(this.center,this.elevation,this.pitch,this.bearing,this.cameraToCenterDistance/e).toLngLat()}getMercatorTileCoordinates(e){if(!e)return [0,0,1,1];const i=e.canonical.z>=0?1<<e.canonical.z:Math.pow(2,e.canonical.z);return [e.canonical.x/i,e.canonical.y/i,1/i/t.$,1/i/t.$]}}class kt{constructor(e,i){this.min=e,this.max=i,this.center=t.aR([],t.aS([],this.min,this.max),.5);}quadrant(e){const i=[e%2==0,e<2],o=t.aT(this.min),a=t.aT(this.max);for(let e=0;e<i.length;e++)o[e]=i[e]?this.min[e]:this.center[e],a[e]=i[e]?this.center[e]:this.max[e];return a[2]=this.max[2],new kt(o,a)}distanceX(e){return Math.max(Math.min(this.max[0],e[0]),this.min[0])-e[0]}distanceY(e){return Math.max(Math.min(this.max[1],e[1]),this.min[1])-e[1]}intersectsFrustum(e){let t=!0;for(let i=0;i<e.planes.length;i++){const o=this.intersectsPlane(e.planes[i]);if(0===o)return 0;1===o&&(t=!1);}return t?2:e.aabb.min[0]>this.max[0]||e.aabb.min[1]>this.max[1]||e.aabb.min[2]>this.max[2]||e.aabb.max[0]<this.min[0]||e.aabb.max[1]<this.min[1]||e.aabb.max[2]<this.min[2]?0:1}intersectsPlane(e){let t=e[3],i=e[3];for(let o=0;o<3;o++)e[o]>0?(t+=e[o]*this.min[o],i+=e[o]*this.max[o]):(i+=e[o]*this.min[o],t+=e[o]*this.max[o]);return t>=0?2:i<0?0:1}}class Ft{distanceToTile2d(e,t,i,o){const a=o.distanceX([e,t]),r=o.distanceY([e,t]);return Math.hypot(a,r)}getWrap(e,t,i){return i}getTileBoundingVolume(e,i,o,a){var r,s;let n=0,l=0;if(null==a?void 0:a.terrain){const c=new t.Z(e.z,i,e.z,e.x,e.y),h=a.terrain.getMinMaxElevation(c);n=null!==(r=h.minElevation)&&void 0!==r?r:Math.min(0,o),l=null!==(s=h.maxElevation)&&void 0!==s?s:Math.max(0,o);}const c=1<<e.z;return new kt([i+e.x/c,e.y/c,n],[i+(e.x+1)/c,(e.y+1)/c,l])}allowVariableZoom(e,i){const o=e.fov*(Math.abs(Math.cos(e.rollInRadians))*e.height+Math.abs(Math.sin(e.rollInRadians))*e.width)/e.height,a=t.ae(78.5-o/2,0,60);return !!i.terrain||e.pitch>a}allowWorldCopies(){return !0}prepareNextFrame(){}}class Bt{constructor(e,t,i){this.points=e,this.planes=t,this.aabb=i;}static fromInvProjectionMatrix(e,i=1,o=0,a,r){const s=r?[[6,5,4],[0,1,2],[0,3,7],[2,1,5],[3,2,6],[0,4,5]]:[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]],n=Math.pow(2,o),l=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map((o=>function(e,i,o,a){const r=t.aw([],e,i),s=1/r[3]/o*a;return t.aY(r,r,[s,s,1/r[3],s])}(o,e,i,n)));a&&function(e,i,o,a){const r=a?4:0,s=a?0:4;let n=0;const l=[],c=[];for(let i=0;i<4;i++){const o=t.aU([],e[i+s],e[i+r]),a=t.aZ(o);t.aR(o,o,1/a),l.push(a),c.push(o);}for(let i=0;i<4;i++){const a=t.a_(e[i+r],c[i],o);n=null!==a&&a>=0?Math.max(n,a):Math.max(n,l[i]);}const h=function(e,i){const o=t.aU([],e[i[0]],e[i[1]]),a=t.aU([],e[i[2]],e[i[1]]),r=[0,0,0,0];return t.aV(r,t.aW([],o,a)),r[3]=-t.aX(r,e[i[0]]),r}(e,i),u=function(e,i){const o=t.a$(e),a=t.b0([],e,1/o),r=t.aU([],i,t.aR([],a,t.aX(i,a))),s=t.a$(r);if(s>0){const e=Math.sqrt(1-a[3]*a[3]),o=t.aR([],a,-a[3]),n=t.aS([],o,t.aR([],r,e/s));return t.b1(i,n)}return null}(o,h);if(null!==u){const e=u/t.aX(c[0],h);n=Math.min(n,e);}for(let t=0;t<4;t++){const i=Math.min(n,l[t]);e[t+s]=[e[t+r][0]+c[t][0]*i,e[t+r][1]+c[t][1]*i,e[t+r][2]+c[t][2]*i,1];}}(l,s[0],a,r);const c=s.map((e=>{const i=t.aU([],l[e[0]],l[e[1]]),o=t.aU([],l[e[2]],l[e[1]]),a=t.aV([],t.aW([],i,o)),r=-t.aX(a,l[e[1]]);return a.concat(r)})),h=[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY],u=[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY];for(const e of l)for(let t=0;t<3;t++)h[t]=Math.min(h[t],e[t]),u[t]=Math.max(u[t],e[t]);return new Bt(l,c,new kt(h,u))}}class Ot{get pixelsToClipSpaceMatrix(){return this._helper.pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._helper.clipSpaceToPixelsMatrix}get pixelsToGLUnits(){return this._helper.pixelsToGLUnits}get centerOffset(){return this._helper.centerOffset}get size(){return this._helper.size}get rotationMatrix(){return this._helper.rotationMatrix}get centerPoint(){return this._helper.centerPoint}get pixelsPerMeter(){return this._helper.pixelsPerMeter}setMinZoom(e){this._helper.setMinZoom(e);}setMaxZoom(e){this._helper.setMaxZoom(e);}setMinPitch(e){this._helper.setMinPitch(e);}setMaxPitch(e){this._helper.setMaxPitch(e);}setRenderWorldCopies(e){this._helper.setRenderWorldCopies(e);}setBearing(e){this._helper.setBearing(e);}setPitch(e){this._helper.setPitch(e);}setRoll(e){this._helper.setRoll(e);}setFov(e){this._helper.setFov(e);}setZoom(e){this._helper.setZoom(e);}setCenter(e){this._helper.setCenter(e);}setElevation(e){this._helper.setElevation(e);}setMinElevationForCurrentTile(e){this._helper.setMinElevationForCurrentTile(e);}setPadding(e){this._helper.setPadding(e);}interpolatePadding(e,t,i){return this._helper.interpolatePadding(e,t,i)}isPaddingEqual(e){return this._helper.isPaddingEqual(e)}resize(e,t,i=!0){this._helper.resize(e,t,i);}getMaxBounds(){return this._helper.getMaxBounds()}setMaxBounds(e){this._helper.setMaxBounds(e);}setConstrain(e){this._helper.setConstrain(e);}overrideNearFarZ(e,t){this._helper.overrideNearFarZ(e,t);}clearNearFarZOverride(){this._helper.clearNearFarZOverride();}getCameraQueryGeometry(e){return this._helper.getCameraQueryGeometry(this.getCameraPoint(),e)}get tileSize(){return this._helper.tileSize}get tileZoom(){return this._helper.tileZoom}get scale(){return this._helper.scale}get worldSize(){return this._helper.worldSize}get width(){return this._helper.width}get height(){return this._helper.height}get lngRange(){return this._helper.lngRange}get latRange(){return this._helper.latRange}get minZoom(){return this._helper.minZoom}get maxZoom(){return this._helper.maxZoom}get zoom(){return this._helper.zoom}get center(){return this._helper.center}get minPitch(){return this._helper.minPitch}get maxPitch(){return this._helper.maxPitch}get pitch(){return this._helper.pitch}get pitchInRadians(){return this._helper.pitchInRadians}get roll(){return this._helper.roll}get rollInRadians(){return this._helper.rollInRadians}get bearing(){return this._helper.bearing}get bearingInRadians(){return this._helper.bearingInRadians}get fov(){return this._helper.fov}get fovInRadians(){return this._helper.fovInRadians}get elevation(){return this._helper.elevation}get minElevationForCurrentTile(){return this._helper.minElevationForCurrentTile}get padding(){return this._helper.padding}get unmodified(){return this._helper.unmodified}get renderWorldCopies(){return this._helper.renderWorldCopies}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}get constrain(){return this._helper.constrain}get nearZ(){return this._helper.nearZ}get farZ(){return this._helper.farZ}get autoCalculateNearFarZ(){return this._helper.autoCalculateNearFarZ}setTransitionState(e,t){}constructor(e){this._posMatrixCache=new Map,this._alignedPosMatrixCache=new Map,this._fogMatrixCacheF32=new Map,this.defaultConstrain=(e,i)=>{i=t.ae(+i,this.minZoom,this.maxZoom);const o={center:new t.S(e.lng,e.lat),zoom:i};let a=this._helper._lngRange;if(!this._helper._renderWorldCopies&&null===a){const e=180-1e-10;a=[-e,e];}const r=this.tileSize*t.ah(o.zoom);let s=0,n=r,l=0,c=r,h=0,u=0;const{x:d,y:_}=this.size;if(this._helper._latRange){const e=this._helper._latRange;s=t.U(e[1])*r,n=t.U(e[0])*r,n-s<_&&(h=_/(n-s));}a&&(l=t.aO(t.V(a[0])*r,0,r),c=t.aO(t.V(a[1])*r,0,r),c<l&&(c+=r),c-l<d&&(u=d/(c-l)));const{x:p,y:m}=de(r,e);let f,g;const v=Math.max(u||0,h||0);if(v){const e=new t.P(u?(c+l)/2:p,h?(n+s)/2:m);return o.center=_e(r,e).wrap(),o.zoom+=t.ak(v),o}if(this._helper._latRange){const e=_/2;m-e<s&&(g=s+e),m+e>n&&(g=n-e);}if(a){const e=(l+c)/2;let i=p;this._helper._renderWorldCopies&&(i=t.aO(p,e-r/2,e+r/2));const o=d/2;i-o<l&&(f=l+o),i+o>c&&(f=c-o);}if(void 0!==f||void 0!==g){const e=new t.P(null!=f?f:p,null!=g?g:m);o.center=_e(r,e).wrap();}return o},this._helper=new Lt({calcMatrices:()=>{this._calcMatrices();},constrain:(e,t)=>this.defaultConstrain(e,t)},e),this._coveringTilesDetailsProvider=new Ft;}clone(){const e=new Ot;return e.apply(this),e}apply(e,t,i){this._helper.apply(e,t,i);}get cameraPosition(){return this._cameraPosition}get projectionMatrix(){return this._projectionMatrix}get modelViewProjectionMatrix(){return this._viewProjMatrix}get inverseProjectionMatrix(){return this._invProjMatrix}get mercatorMatrix(){return this._mercatorMatrix}getVisibleUnwrappedCoordinates(e){const i=[new t.b2(0,e)];if(this._helper._renderWorldCopies){const o=this.screenPointToMercatorCoordinate(new t.P(0,0)),a=this.screenPointToMercatorCoordinate(new t.P(this._helper._width,0)),r=this.screenPointToMercatorCoordinate(new t.P(this._helper._width,this._helper._height)),s=this.screenPointToMercatorCoordinate(new t.P(0,this._helper._height)),n=Math.floor(Math.min(o.x,a.x,r.x,s.x)),l=Math.floor(Math.max(o.x,a.x,r.x,s.x)),c=1;for(let o=n-c;o<=l+c;o++)0!==o&&i.push(new t.b2(o,e));}return i}getCameraFrustum(){return Bt.fromInvProjectionMatrix(this._invViewProjMatrix,this.worldSize)}getClippingPlane(){return null}getCoveringTilesDetailsProvider(){return this._coveringTilesDetailsProvider}recalculateZoomAndCenter(e){const t=this.screenPointToLocation(this.centerPoint,e),i=e?e.getElevationForLngLatZoom(t,this._helper._tileZoom):0;this._helper.recalculateZoomAndCenter(i);}setLocationAtPoint(e,i){const o=t.aj(this.elevation,this.center.lat),a=this.screenPointToMercatorCoordinateAtZ(i,o),r=this.screenPointToMercatorCoordinateAtZ(this.centerPoint,o),s=t.a1.fromLngLat(e),n=new t.a1(s.x-(a.x-r.x),s.y-(a.y-r.y));this.setCenter(null==n?void 0:n.toLngLat()),this._helper._renderWorldCopies&&this.setCenter(this.center.wrap());}locationToScreenPoint(e,i){return i?this.coordinatePoint(t.a1.fromLngLat(e),i.getElevationForLngLatZoom(e,this._helper._tileZoom),this._pixelMatrix3D):this.coordinatePoint(t.a1.fromLngLat(e))}screenPointToLocation(e,t){var i;return null===(i=this.screenPointToMercatorCoordinate(e,t))||void 0===i?void 0:i.toLngLat()}screenPointToMercatorCoordinate(e,t){if(t){const i=t.pointCoordinate(e);if(null!=i)return i}return this.screenPointToMercatorCoordinateAtZ(e)}screenPointToMercatorCoordinateAtZ(e,i){const o=i||0,a=[e.x,e.y,0,1],r=[e.x,e.y,1,1];t.aw(a,a,this._pixelMatrixInverse),t.aw(r,r,this._pixelMatrixInverse);const s=a[3],n=r[3],l=a[1]/s,c=r[1]/n,h=a[2]/s,u=r[2]/n,d=h===u?0:(o-h)/(u-h);return new t.a1(t.C.number(a[0]/s,r[0]/n,d)/this.worldSize,t.C.number(l,c,d)/this.worldSize,o)}coordinatePoint(e,i=0,o=this._pixelMatrix){const a=[e.x*this.worldSize,e.y*this.worldSize,i,1];return t.aw(a,a,o),new t.P(a[0]/a[3],a[1]/a[3])}getBounds(){const e=Math.max(0,this._helper._height/2-pe(this));return (new $).extend(this.screenPointToLocation(new t.P(0,e))).extend(this.screenPointToLocation(new t.P(this._helper._width,e))).extend(this.screenPointToLocation(new t.P(this._helper._width,this._helper._height))).extend(this.screenPointToLocation(new t.P(0,this._helper._height)))}isPointOnMapSurface(e,t){return t?null!=t.pointCoordinate(e):e.y>this.height/2-pe(this)}calculatePosMatrix(e,i=!1,o){var a;const r=null!==(a=e.key)&&void 0!==a?a:t.b3(e.wrap,e.canonical.z,e.canonical.z,e.canonical.x,e.canonical.y),s=i?this._alignedPosMatrixCache:this._posMatrixCache;if(s.has(r)){const e=s.get(r);return o?e.f32:e.f64}const n=me(e,this.worldSize);t.O(n,i?this._alignedProjMatrix:this._viewProjMatrix,n);const l={f64:n,f32:new Float32Array(n)};return s.set(r,l),o?l.f32:l.f64}calculateFogMatrix(e){const i=e.key,o=this._fogMatrixCacheF32;if(o.has(i))return o.get(i);const a=me(e,this.worldSize);return t.O(a,this._fogMatrix,a),o.set(i,new Float32Array(a)),o.get(i)}calculateCenterFromCameraLngLatAlt(e,t,i,o){return this._helper.calculateCenterFromCameraLngLatAlt(e,t,i,o)}_calculateNearFarZIfNeeded(e,i,o){if(!this._helper.autoCalculateNearFarZ)return;const a=Math.min(this.elevation,this.minElevationForCurrentTile,this.getCameraAltitude()-100),r=e-a*this._helper._pixelPerMeter/Math.cos(i),s=a<0?r:e,n=Math.PI/2+this.pitchInRadians,l=t.ag(this.fov)*(Math.abs(Math.cos(t.ag(this.roll)))*this.height+Math.abs(Math.sin(t.ag(this.roll)))*this.width)/this.height*(.5+o.y/this.height),c=Math.sin(l)*s/Math.sin(t.ae(Math.PI-n-l,.01,Math.PI-.01)),h=pe(this),u=Math.atan(h/this._helper.cameraToCenterDistance),d=t.ag(.75),_=u>d?2*u*(.5+o.y/(2*h)):d,p=Math.sin(_)*s/Math.sin(t.ae(Math.PI-n-_,.01,Math.PI-.01)),m=Math.min(c,p);this._helper._farZ=1.01*(Math.cos(Math.PI/2-i)*m+s),this._helper._nearZ=this._helper._height/50;}_calcMatrices(){if(!this._helper._height)return;const e=this.centerOffset,i=de(this.worldSize,this.center),o=i.x,a=i.y;this._helper._pixelPerMeter=t.aj(1,this.center.lat)*this.worldSize;const r=t.ag(Math.min(this.pitch,ue)),s=Math.max(this._helper.cameraToCenterDistance/2,this._helper.cameraToCenterDistance+this._helper._elevation*this._helper._pixelPerMeter/Math.cos(r));let n;this._calculateNearFarZIfNeeded(s,r,e),n=new Float64Array(16),t.b4(n,this.fovInRadians,this._helper._width/this._helper._height,this._helper._nearZ,this._helper._farZ),this._invProjMatrix=new Float64Array(16),t.aq(this._invProjMatrix,n),n[8]=2*-e.x/this._helper._width,n[9]=2*e.y/this._helper._height,this._projectionMatrix=t.b5(n),t.N(n,n,[1,-1,1]),t.M(n,n,[0,0,-this._helper.cameraToCenterDistance]),t.b6(n,n,-this.rollInRadians),t.b7(n,n,this.pitchInRadians),t.b6(n,n,-this.bearingInRadians),t.M(n,n,[-o,-a,0]),this._mercatorMatrix=t.N([],n,[this.worldSize,this.worldSize,this.worldSize]),t.N(n,n,[1,1,this._helper._pixelPerMeter]),this._pixelMatrix=t.O(new Float64Array(16),this.clipSpaceToPixelsMatrix,n),t.M(n,n,[0,0,-this.elevation]),this._viewProjMatrix=n,this._invViewProjMatrix=t.aq([],n);const l=[0,0,-1,1];t.aw(l,l,this._invViewProjMatrix),this._cameraPosition=[l[0]/l[3],l[1]/l[3],l[2]/l[3]],this._fogMatrix=new Float64Array(16),t.b4(this._fogMatrix,this.fovInRadians,this.width/this.height,s,this._helper._farZ),this._fogMatrix[8]=2*-e.x/this.width,this._fogMatrix[9]=2*e.y/this.height,t.N(this._fogMatrix,this._fogMatrix,[1,-1,1]),t.M(this._fogMatrix,this._fogMatrix,[0,0,-this.cameraToCenterDistance]),t.b6(this._fogMatrix,this._fogMatrix,-this.rollInRadians),t.b7(this._fogMatrix,this._fogMatrix,this.pitchInRadians),t.b6(this._fogMatrix,this._fogMatrix,-this.bearingInRadians),t.M(this._fogMatrix,this._fogMatrix,[-o,-a,0]),t.N(this._fogMatrix,this._fogMatrix,[1,1,this._helper._pixelPerMeter]),t.M(this._fogMatrix,this._fogMatrix,[0,0,-this.elevation]),this._pixelMatrix3D=t.O(new Float64Array(16),this.clipSpaceToPixelsMatrix,n);const c=this._helper._width%2/2,h=this._helper._height%2/2,u=Math.cos(this.bearingInRadians),d=Math.sin(-this.bearingInRadians),_=o-Math.round(o)+u*c+d*h,p=a-Math.round(a)+u*h+d*c,m=new Float64Array(n);if(t.M(m,m,[_>.5?_-1:_,p>.5?p-1:p,0]),this._alignedProjMatrix=m,n=t.aq(new Float64Array(16),this._pixelMatrix),!n)throw new Error(\"failed to invert matrix\");this._pixelMatrixInverse=n,this._clearMatrixCaches();}_clearMatrixCaches(){this._posMatrixCache.clear(),this._alignedPosMatrixCache.clear(),this._fogMatrixCacheF32.clear();}maxPitchScaleFactor(){if(!this._pixelMatrixInverse)return 1;const e=this.screenPointToMercatorCoordinate(new t.P(0,0)),i=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.aw(i,i,this._pixelMatrix)[3]/this._helper.cameraToCenterDistance}getCameraPoint(){return this._helper.getCameraPoint()}getCameraAltitude(){return this._helper.getCameraAltitude()}getCameraLngLat(){const e=t.aj(1,this.center.lat)*this.worldSize;return fe(this.center,this.elevation,this.pitch,this.bearing,this._helper.cameraToCenterDistance/e).toLngLat()}lngLatToCameraDepth(e,i){const o=t.a1.fromLngLat(e),a=[o.x*this.worldSize,o.y*this.worldSize,i,1];return t.aw(a,a,this._viewProjMatrix),a[2]/a[3]}getProjectionData(e){const{overscaledTileID:i,aligned:o,applyTerrainMatrix:a}=e,r=this._helper.getMercatorTileCoordinates(i),s=i?this.calculatePosMatrix(i,o,!0):null;let n;return n=i&&i.terrainRttPosMatrix32f&&a?i.terrainRttPosMatrix32f:s||t.b8(),{mainMatrix:n,tileMercatorCoords:r,clippingPlane:[0,0,0,0],projectionTransition:0,fallbackMatrix:n}}isLocationOccluded(e){return !1}getPixelScale(){return 1}getCircleRadiusCorrection(){return 1}getPitchedTextCorrection(e,t,i){return 1}transformLightDirection(e){return t.aT(e)}getRayDirectionFromPixel(e){throw new Error(\"Not implemented.\")}projectTileCoordinates(e,i,o,a){const r=this.calculatePosMatrix(o);let s;a?(s=[e,i,a(e,i),1],t.aw(s,s,r)):(s=[e,i,0,1],Ke(s,s,r));const n=s[3];return {point:new t.P(s[0]/n,s[1]/n),signedDistanceFromCamera:n,isOccluded:!1}}populateCache(e){for(const t of e)this.calculatePosMatrix(t);}getMatrixForModel(e,i){const o=t.a1.fromLngLat(e,i),a=o.meterInMercatorCoordinateUnits(),r=t.b9();return t.M(r,r,[o.x,o.y,o.z]),t.b6(r,r,Math.PI),t.b7(r,r,Math.PI/2),t.N(r,r,[-a,a,a]),r}getProjectionDataForCustomLayer(e=!0){const i=new t.Z(0,0,0,0,0),o=this.getProjectionData({overscaledTileID:i,applyGlobeMatrix:e}),a=me(i,this.worldSize);t.O(a,this._viewProjMatrix,a),o.tileMercatorCoords=[0,0,1,1];const r=[t.$,t.$,this.worldSize/this._helper.pixelsPerMeter],s=t.ba();return t.N(s,a,r),o.fallbackMatrix=s,o.mainMatrix=s,o}getFastPathSimpleProjectionMatrix(e){return this.calculatePosMatrix(e)}}function jt(){t.w(\"Map cannot fit within canvas with the given bounds, padding, and/or offset.\");}function Nt(e){if(e.useSlerp)if(e.k<1){const i=t.bb(e.startEulerAngles.roll,e.startEulerAngles.pitch,e.startEulerAngles.bearing),o=t.bb(e.endEulerAngles.roll,e.endEulerAngles.pitch,e.endEulerAngles.bearing),a=new Float64Array(4);t.bc(a,i,o,e.k);const r=t.bd(a);e.tr.setRoll(r.roll),e.tr.setPitch(r.pitch),e.tr.setBearing(r.bearing);}else e.tr.setRoll(e.endEulerAngles.roll),e.tr.setPitch(e.endEulerAngles.pitch),e.tr.setBearing(e.endEulerAngles.bearing);else e.tr.setRoll(t.C.number(e.startEulerAngles.roll,e.endEulerAngles.roll,e.k)),e.tr.setPitch(t.C.number(e.startEulerAngles.pitch,e.endEulerAngles.pitch,e.k)),e.tr.setBearing(t.C.number(e.startEulerAngles.bearing,e.endEulerAngles.bearing,e.k));}function Zt(e,i,o,a,r){const s=r.padding,n=de(r.worldSize,o.getNorthWest()),l=de(r.worldSize,o.getNorthEast()),c=de(r.worldSize,o.getSouthEast()),h=de(r.worldSize,o.getSouthWest()),u=t.ag(-a),d=n.rotate(u),_=l.rotate(u),p=c.rotate(u),m=h.rotate(u),f=new t.P(Math.max(d.x,_.x,m.x,p.x),Math.max(d.y,_.y,m.y,p.y)),g=new t.P(Math.min(d.x,_.x,m.x,p.x),Math.min(d.y,_.y,m.y,p.y)),v=f.sub(g),x=(r.width-(s.left+s.right+i.left+i.right))/v.x,b=(r.height-(s.top+s.bottom+i.top+i.bottom))/v.y;if(b<0||x<0)return void jt();const y=Math.min(t.ak(r.scale*Math.min(x,b)),e.maxZoom),w=t.P.convert(e.offset),T=new t.P((i.left-i.right)/2,(i.top-i.bottom)/2).rotate(t.ag(a)),P=w.add(T).mult(r.scale/t.ah(y));return {center:_e(r.worldSize,n.add(c).div(2).sub(P)),zoom:y,bearing:a}}class Ut{get useGlobeControls(){return !1}handlePanInertia(e,t){const i=e.mag(),o=Math.abs(pe(t));return {easingOffset:e.mult(Math.min(.75*o/i,1)),easingCenter:t.center}}handleMapControlsRollPitchBearingZoom(e,t){e.bearingDelta&&t.setBearing(t.bearing+e.bearingDelta),e.pitchDelta&&t.setPitch(t.pitch+e.pitchDelta),e.rollDelta&&t.setRoll(t.roll+e.rollDelta),e.zoomDelta&&t.setZoom(t.zoom+e.zoomDelta);}handleMapControlsPan(e,t,i){e.around.distSqr(t.centerPoint)<.01||t.setLocationAtPoint(i,e.around);}cameraForBoxAndBearing(e,t,i,o,a){return Zt(e,t,i,o,a)}handleJumpToCenterZoom(e,i){e.zoom!==(void 0!==i.zoom?+i.zoom:e.zoom)&&e.setZoom(+i.zoom),void 0!==i.center&&e.setCenter(t.S.convert(i.center));}handleEaseTo(e,i){const o=e.zoom,a=e.padding,r={roll:e.roll,pitch:e.pitch,bearing:e.bearing},s={roll:void 0===i.roll?e.roll:i.roll,pitch:void 0===i.pitch?e.pitch:i.pitch,bearing:void 0===i.bearing?e.bearing:i.bearing},n=void 0!==i.zoom,l=!e.isPaddingEqual(i.padding);let c=!1;const h=n?+i.zoom:e.zoom;let u=e.centerPoint.add(i.offsetAsPoint);const d=e.screenPointToLocation(u),{center:_,zoom:p}=e.constrain(t.S.convert(i.center||d),null!=h?h:o);zt(e,_);const m=de(e.worldSize,d),f=de(e.worldSize,_).sub(m),g=t.ah(p-o);return c=p!==o,{easeFunc:n=>{if(c&&e.setZoom(t.C.number(o,p,n)),t.be(r,s)||Nt({startEulerAngles:r,endEulerAngles:s,tr:e,k:n,useSlerp:r.roll!=s.roll}),l&&(e.interpolatePadding(a,i.padding,n),u=e.centerPoint.add(i.offsetAsPoint)),i.around)e.setLocationAtPoint(i.around,i.aroundPoint);else {const i=t.ah(e.zoom-o),a=p>o?Math.min(2,g):Math.max(.5,g),r=Math.pow(a,1-n),s=_e(e.worldSize,m.add(f.mult(n*r)).mult(i));e.setLocationAtPoint(e.renderWorldCopies?s.wrap():s,u);}},isZooming:c,elevationCenter:_}}handleFlyTo(e,i){const o=void 0!==i.zoom,a=e.zoom,r=e.constrain(t.S.convert(i.center||i.locationAtOffset),o?+i.zoom:a),s=r.center,n=r.zoom;zt(e,s);const l=de(e.worldSize,i.locationAtOffset),c=de(e.worldSize,s).sub(l),h=c.mag(),u=t.ah(n-a);let d;if(void 0!==i.minZoom){const o=Math.min(+i.minZoom,a,n),r=e.constrain(s,o).zoom;d=t.ah(r-a);}return {easeFunc:(i,o,r,h)=>{e.setZoom(1===i?n:a+t.ak(o));const u=1===i?s:_e(e.worldSize,l.add(c.mult(r)).mult(o));e.setLocationAtPoint(e.renderWorldCopies?u.wrap():u,h);},scaleOfZoom:u,targetCenter:s,scaleOfMinZoom:d,pixelPathLength:h}}}class Gt{constructor(e,t,i){this.blendFunction=e,this.blendColor=t,this.mask=i;}}Gt.Replace=[1,0],Gt.disabled=new Gt(Gt.Replace,t.bf.transparent,[!1,!1,!1,!1]),Gt.unblended=new Gt(Gt.Replace,t.bf.transparent,[!0,!0,!0,!0]),Gt.alphaBlended=new Gt([1,771],t.bf.transparent,[!0,!0,!0,!0]);const Vt=2305;class $t{constructor(e,t,i){this.enable=e,this.mode=t,this.frontFace=i;}}$t.disabled=new $t(!1,1029,Vt),$t.backCCW=new $t(!0,1029,Vt),$t.frontCCW=new $t(!0,1028,Vt);class Wt{constructor(e,t,i){this.func=e,this.mask=t,this.range=i;}}Wt.ReadOnly=!1,Wt.ReadWrite=!0,Wt.disabled=new Wt(519,Wt.ReadOnly,[0,1]);const qt=7680;class Ht{constructor(e,t,i,o,a,r){this.test=e,this.ref=t,this.mask=i,this.fail=o,this.depthFail=a,this.pass=r;}}Ht.disabled=new Ht({func:519,mask:0},0,0,qt,qt,qt);const Xt=new WeakMap;function Kt(e){var t;if(Xt.has(e))return Xt.get(e);{const i=null===(t=e.getParameter(e.VERSION))||void 0===t?void 0:t.startsWith(\"WebGL 2.0\");return Xt.set(e,i),i}}class Qt{get awaitingQuery(){return !!this._readbackQueue}constructor(e){this._readbackWaitFrames=4,this._measureWaitFrames=6,this._texWidth=1,this._texHeight=1,this._measuredError=0,this._updateCount=0,this._lastReadbackFrame=-1e3,this._readbackQueue=null,this._cachedRenderContext=e;const i=e.context,o=i.gl;this._texFormat=o.RGBA,this._texType=o.UNSIGNED_BYTE;const a=new t.aL;a.emplaceBack(-1,-1),a.emplaceBack(2,-1),a.emplaceBack(-1,2);const r=new t.aN;r.emplaceBack(0,1,2),this._fullscreenTriangle=new It(i.createVertexBuffer(a,Mt.members),i.createIndexBuffer(r),t.aM.simpleSegment(0,0,a.length,r.length)),this._resultBuffer=new Uint8Array(4),i.activeTexture.set(o.TEXTURE1);const s=o.createTexture();o.bindTexture(o.TEXTURE_2D,s),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.NEAREST),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.NEAREST),o.texImage2D(o.TEXTURE_2D,0,this._texFormat,this._texWidth,this._texHeight,0,this._texFormat,this._texType,null),this._fbo=i.createFramebuffer(this._texWidth,this._texHeight,!1,!1),this._fbo.colorAttachment.set(s),Kt(o)&&(this._pbo=o.createBuffer(),o.bindBuffer(o.PIXEL_PACK_BUFFER,this._pbo),o.bufferData(o.PIXEL_PACK_BUFFER,4,o.STREAM_READ),o.bindBuffer(o.PIXEL_PACK_BUFFER,null));}destroy(){const e=this._cachedRenderContext.context.gl;this._fullscreenTriangle.destroy(),this._fbo.destroy(),e.deleteBuffer(this._pbo),this._fullscreenTriangle=null,this._fbo=null,this._pbo=null,this._resultBuffer=null;}updateErrorLoop(e,t){const i=this._updateCount;return this._readbackQueue?i>=this._readbackQueue.frameNumberIssued+this._readbackWaitFrames&&this._tryReadback():i>=this._lastReadbackFrame+this._measureWaitFrames&&this._renderErrorTexture(e,t),this._updateCount++,this._measuredError}_bindFramebuffer(){const e=this._cachedRenderContext.context,t=e.gl;e.activeTexture.set(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,this._fbo.colorAttachment.get()),e.bindFramebuffer.set(this._fbo.framebuffer);}_renderErrorTexture(e,i){const o=this._cachedRenderContext.context,a=o.gl;if(this._bindFramebuffer(),o.viewport.set([0,0,this._texWidth,this._texHeight]),o.clear({color:t.bf.transparent}),this._cachedRenderContext.useProgram(\"projectionErrorMeasurement\").draw(o,a.TRIANGLES,Wt.disabled,Ht.disabled,Gt.unblended,$t.disabled,((e,t)=>({u_input:e,u_output_expected:t}))(e,i),null,null,\"$clipping\",this._fullscreenTriangle.vertexBuffer,this._fullscreenTriangle.indexBuffer,this._fullscreenTriangle.segments),this._pbo&&Kt(a)){a.bindBuffer(a.PIXEL_PACK_BUFFER,this._pbo),a.readBuffer(a.COLOR_ATTACHMENT0),a.readPixels(0,0,this._texWidth,this._texHeight,this._texFormat,this._texType,0),a.bindBuffer(a.PIXEL_PACK_BUFFER,null);const e=a.fenceSync(a.SYNC_GPU_COMMANDS_COMPLETE,0);a.flush(),this._readbackQueue={frameNumberIssued:this._updateCount,sync:e};}else this._readbackQueue={frameNumberIssued:this._updateCount,sync:null};}_tryReadback(){const e=this._cachedRenderContext.context.gl;if(this._pbo&&this._readbackQueue&&Kt(e)){const i=e.clientWaitSync(this._readbackQueue.sync,0,0);if(i===e.WAIT_FAILED)return t.w(\"WebGL2 clientWaitSync failed.\"),this._readbackQueue=null,void(this._lastReadbackFrame=this._updateCount);if(i===e.TIMEOUT_EXPIRED)return;e.bindBuffer(e.PIXEL_PACK_BUFFER,this._pbo),e.getBufferSubData(e.PIXEL_PACK_BUFFER,0,this._resultBuffer,0,4),e.bindBuffer(e.PIXEL_PACK_BUFFER,null);}else this._bindFramebuffer(),e.readPixels(0,0,this._texWidth,this._texHeight,this._texFormat,this._texType,this._resultBuffer);this._readbackQueue=null,this._measuredError=Qt._parseRGBA8float(this._resultBuffer),this._lastReadbackFrame=this._updateCount;}static _parseRGBA8float(e){let t=0;return t+=e[0]/256,t+=e[1]/65536,t+=e[2]/16777216,e[3]<127&&(t=-t),t/128}}const Yt=t.$/128;function Jt(e,i){const o=void 0!==e.granularity?Math.max(e.granularity,1):1,a=o+(e.generateBorders?2:0),r=o+(e.extendToNorthPole||e.generateBorders?1:0)+(e.extendToSouthPole||e.generateBorders?1:0),s=a+1,n=r+1,l=e.generateBorders?-1:0,c=e.generateBorders||e.extendToNorthPole?-1:0,h=o+(e.generateBorders?1:0),u=o+(e.generateBorders||e.extendToSouthPole?1:0),d=s*n,_=a*r*6,p=s*n>65536;if(p&&\"16bit\"===i)throw new Error(\"Granularity is too large and meshes would not fit inside 16 bit vertex indices.\");const m=p||\"32bit\"===i,f=new Int16Array(2*d);let g=0;for(let i=c;i<=u;i++)for(let a=l;a<=h;a++){let r=a/o*t.$;-1===a&&(r=-Yt),a===o+1&&(r=t.$+Yt);let s=i/o*t.$;-1===i&&(s=e.extendToNorthPole?t.bh:-Yt),i===o+1&&(s=e.extendToSouthPole?t.bi:t.$+Yt),f[g++]=r,f[g++]=s;}const v=m?new Uint32Array(_):new Uint16Array(_);let x=0;for(let e=0;e<r;e++)for(let t=0;t<a;t++){const i=t+1+e*s,o=t+(e+1)*s,a=t+1+(e+1)*s;v[x++]=t+e*s,v[x++]=o,v[x++]=i,v[x++]=i,v[x++]=o,v[x++]=a;}return {vertices:f.buffer.slice(0),indices:v.buffer.slice(0),uses32bitIndices:m}}const ei=new t.aK({fill:new t.bj(128,2),line:new t.bj(512,0),tile:new t.bj(128,32),stencil:new t.bj(128,1),circle:3});class ti{constructor(){this._tileMeshCache={},this._errorCorrectionUsable=0,this._errorMeasurementLastValue=0,this._errorCorrectionPreviousValue=0,this._errorMeasurementLastChangeTime=-1e3;}get name(){return \"vertical-perspective\"}get transitionState(){return 1}get useSubdivision(){return !0}get shaderVariantName(){return \"globe\"}get shaderDefine(){return \"#define GLOBE\"}get shaderPreludeCode(){return Pt.projectionGlobe}get vertexShaderPreludeCode(){return Pt.projectionMercator.vertexSource}get subdivisionGranularity(){return ei}get useGlobeControls(){return !0}get latitudeErrorCorrectionRadians(){return this._errorCorrectionUsable}destroy(){this._errorMeasurement&&this._errorMeasurement.destroy();}updateGPUdependent(e){this._errorMeasurement||(this._errorMeasurement=new Qt(e));const i=t.U(this._errorQueryLatitudeDegrees),o=2*Math.atan(Math.exp(Math.PI-i*Math.PI*2))-.5*Math.PI,a=this._errorMeasurement.updateErrorLoop(i,o),r=l();a!==this._errorMeasurementLastValue&&(this._errorCorrectionPreviousValue=this._errorCorrectionUsable,this._errorMeasurementLastValue=a,this._errorMeasurementLastChangeTime=r);const s=Math.min(Math.max((r-this._errorMeasurementLastChangeTime)/1e3/.5,0),1);this._errorCorrectionUsable=t.bk(this._errorCorrectionPreviousValue,-this._errorMeasurementLastValue,t.bl(s));}_getMeshKey(e){return `${e.granularity.toString(36)}_${e.generateBorders?\"b\":\"\"}${e.extendToNorthPole?\"n\":\"\"}${e.extendToSouthPole?\"s\":\"\"}`}getMeshFromTileID(e,t,i,o,a){const r=(\"stencil\"===a?ei.stencil:ei.tile).getGranularityForZoomLevel(t.z);return this._getMesh(e,{granularity:r,generateBorders:i,extendToNorthPole:0===t.y&&o,extendToSouthPole:t.y===(1<<t.z)-1&&o})}_getMesh(e,i){const o=this._getMeshKey(i);if(o in this._tileMeshCache)return this._tileMeshCache[o];const a=function(e,i){const o=Jt(i,\"16bit\"),a=t.aL.deserialize({arrayBuffer:o.vertices,length:o.vertices.byteLength/2/2}),r=t.aN.deserialize({arrayBuffer:o.indices,length:o.indices.byteLength/2/3});return new It(e.createVertexBuffer(a,Mt.members),e.createIndexBuffer(r),t.aM.simpleSegment(0,0,a.length,r.length))}(e,i);return this._tileMeshCache[o]=a,a}recalculate(e){}hasTransition(){const e=l();let t=!1;return t=t||(e-this._errorMeasurementLastChangeTime)/1e3<.7,t=t||this._errorMeasurement&&this._errorMeasurement.awaitingQuery,t}setErrorQueryLatitudeDegrees(e){this._errorQueryLatitudeDegrees=e;}}const ii=new t.r({type:new t.D(t.v.projection.type)});class oi extends t.E{constructor(e){super(),this._transitionable=new t.t(ii,void 0),this.setProjection(e),this._transitioning=this._transitionable.untransitioned(),this.recalculate(new t.F(0)),this._mercatorProjection=new Rt,this._verticalPerspectiveProjection=new ti;}get transitionState(){const e=this.properties.get(\"type\");if(\"string\"==typeof e&&\"mercator\"===e)return 0;if(\"string\"==typeof e&&\"vertical-perspective\"===e)return 1;if(e instanceof t.bm){if(\"vertical-perspective\"===e.from&&\"mercator\"===e.to)return 1-e.transition;if(\"mercator\"===e.from&&\"vertical-perspective\"===e.to)return e.transition}return 1}get useGlobeRendering(){return this.transitionState>0}get latitudeErrorCorrectionRadians(){return this._verticalPerspectiveProjection.latitudeErrorCorrectionRadians}get currentProjection(){return this.useGlobeRendering?this._verticalPerspectiveProjection:this._mercatorProjection}get name(){return \"globe\"}get useSubdivision(){return this.currentProjection.useSubdivision}get shaderVariantName(){return this.currentProjection.shaderVariantName}get shaderDefine(){return this.currentProjection.shaderDefine}get shaderPreludeCode(){return this.currentProjection.shaderPreludeCode}get vertexShaderPreludeCode(){return this.currentProjection.vertexShaderPreludeCode}get subdivisionGranularity(){return this.currentProjection.subdivisionGranularity}get useGlobeControls(){return this.transitionState>0}destroy(){this._mercatorProjection.destroy(),this._verticalPerspectiveProjection.destroy();}updateGPUdependent(e){this._mercatorProjection.updateGPUdependent(e),this._verticalPerspectiveProjection.updateGPUdependent(e);}getMeshFromTileID(e,t,i,o,a){return this.currentProjection.getMeshFromTileID(e,t,i,o,a)}setProjection(e){this._transitionable.setValue(\"type\",(null==e?void 0:e.type)||\"mercator\");}updateTransitions(e){this._transitioning=this._transitionable.transitioned(e,this._transitioning);}hasTransition(){return this._transitioning.hasTransition()||this.currentProjection.hasTransition()}recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e);}setErrorQueryLatitudeDegrees(e){this._verticalPerspectiveProjection.setErrorQueryLatitudeDegrees(e),this._mercatorProjection.setErrorQueryLatitudeDegrees(e);}}function ai(e){const t=ni(e.worldSize,e.center.lat);return 2*Math.PI*t}function ri(e,i,o,a,r){const s=1/(1<<r),n=i/t.$*s+a*s,l=t.bo((e/t.$*s+o*s)*Math.PI*2+Math.PI,2*Math.PI),c=2*Math.atan(Math.exp(Math.PI-n*Math.PI*2))-.5*Math.PI,h=Math.cos(c),u=new Float64Array(3);return u[0]=Math.sin(l)*h,u[1]=Math.sin(c),u[2]=Math.cos(l)*h,u}function si(e){return function(e,t){const i=Math.cos(t),o=new Float64Array(3);return o[0]=Math.sin(e)*i,o[1]=Math.sin(t),o[2]=Math.cos(e)*i,o}(e.lng*Math.PI/180,e.lat*Math.PI/180)}function ni(e,t){return e/(2*Math.PI)/Math.cos(t*Math.PI/180)}function li(e){const i=Math.asin(e[1])/Math.PI*180,o=Math.sqrt(e[0]*e[0]+e[2]*e[2]);if(o>1e-6){const a=e[0]/o,r=Math.acos(e[2]/o),s=(a>0?r:-r)/Math.PI*180;return new t.S(t.aO(s,-180,180),i)}return new t.S(0,i)}function ci(e){return Math.cos(e*Math.PI/180)}function hi(e,i){const o=ci(e),a=ci(i);return t.ak(a/o)}function ui(e,i){const o=e.rotate(i.bearingInRadians),a=i.zoom+hi(i.center.lat,0),r=t.bk(1/ci(i.center.lat),1/ci(Math.min(Math.abs(i.center.lat),60)),t.bn(a,7,3,0,1)),s=360/ai({worldSize:i.worldSize,center:{lat:i.center.lat}});return new t.S(i.center.lng-o.x*s*r,t.ae(i.center.lat+o.y*s,-t.af,t.af))}function di(e){const t=.5*e,i=Math.sin(t),o=Math.cos(t);return Math.log(i+o)-Math.log(o-i)}function _i(e,i,o,a){const r=e.lat+o*a;if(Math.abs(o)>1){const s=(Math.sign(e.lat+o)!==Math.sign(e.lat)?-Math.abs(e.lat):Math.abs(e.lat))*Math.PI/180,n=Math.abs(e.lat+o)*Math.PI/180,l=di(s+a*(n-s)),c=di(s),h=di(n);return new t.S(e.lng+i*((l-c)/(h-c)),r)}return new t.S(e.lng+i*a,r)}class pi{constructor(e){this._cachePrevious=new Map,this._cache=new Map,this._hadAnyChanges=!1,this._boundingVolumeFactory=e;}swapBuffers(){if(!this._hadAnyChanges)return;const e=this._cachePrevious;this._cachePrevious=this._cache,this._cache=e,this._cache.clear(),this._hadAnyChanges=!1;}getTileBoundingVolume(e,t,i,o){const a=`${e.z}_${e.x}_${e.y}_${(null==o?void 0:o.terrain)?\"t\":\"\"}`,r=this._cache.get(a);if(r)return r;const s=this._cachePrevious.get(a);if(s)return this._cache.set(a,s),s;const n=this._boundingVolumeFactory(e,t,i,o);return this._cache.set(a,n),this._hadAnyChanges=!0,n}}class mi{constructor(e,t,i,o){this.min=i,this.max=o,this.points=e,this.planes=t;}static fromAabb(e,t){const i=[];for(let o=0;o<8;o++)i.push([1&~o?e[0]:t[0],1==(o>>1&1)?t[1]:e[1],1==(o>>2&1)?t[2]:e[2]]);return new mi(i,[[-1,0,0,t[0]],[1,0,0,-e[0]],[0,-1,0,t[1]],[0,1,0,-e[1]],[0,0,-1,t[2]],[0,0,1,-e[2]]],e,t)}static fromCenterSizeAngles(e,i,o){const a=t.br([],o[0],o[1],o[2]),r=t.bs([],[i[0],0,0],a),s=t.bs([],[0,i[1],0],a),n=t.bs([],[0,0,i[2]],a),l=[...e],c=[...e];for(let t=0;t<8;t++)for(let i=0;i<3;i++){const o=e[i]+r[i]*(1&~t?-1:1)+s[i]*(1==(t>>1&1)?1:-1)+n[i]*(1==(t>>2&1)?1:-1);l[i]=Math.min(l[i],o),c[i]=Math.max(c[i],o);}const h=[];for(let i=0;i<8;i++){const o=[...e];t.aS(o,o,t.aR([],r,1&~i?-1:1)),t.aS(o,o,t.aR([],s,1==(i>>1&1)?1:-1)),t.aS(o,o,t.aR([],n,1==(i>>2&1)?1:-1)),h.push(o);}return new mi(h,[[...r,-t.aX(r,h[0])],[...s,-t.aX(s,h[0])],[...n,-t.aX(n,h[0])],[-r[0],-r[1],-r[2],-t.aX(r,h[7])],[-s[0],-s[1],-s[2],-t.aX(s,h[7])],[-n[0],-n[1],-n[2],-t.aX(n,h[7])]],l,c)}intersectsFrustum(e){let t=!0;const i=this.points.length,o=this.planes.length,a=e.planes.length,r=e.points.length;for(let o=0;o<a;o++){const a=e.planes[o];let r=0;for(let e=0;e<i;e++){const t=this.points[e];a[0]*t[0]+a[1]*t[1]+a[2]*t[2]+a[3]>=0&&r++;}if(0===r)return 0;r<i&&(t=!1);}if(t)return 2;for(let t=0;t<o;t++){const i=this.planes[t];let o=0;for(let t=0;t<r;t++){const a=e.points[t];i[0]*a[0]+i[1]*a[1]+i[2]*a[2]+i[3]>=0&&o++;}if(0===o)return 0}return 1}intersectsPlane(e){const t=this.points.length;let i=0;for(let o=0;o<t;o++){const t=this.points[o];e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]>=0&&i++;}return i===t?2:0===i?0:1}}function fi(e,t,i){const o=e-t;return o<0?-o:Math.max(0,o-i)}function gi(e,t,i,o,a){const r=e-i;let s;return s=r<0?Math.min(-r,1+r-a):r>1?Math.min(Math.max(r-a,0),1-r):0,Math.max(s,fi(t,o,a))}class vi{constructor(){this._boundingVolumeCache=new pi(this._computeTileBoundingVolume);}prepareNextFrame(){this._boundingVolumeCache.swapBuffers();}distanceToTile2d(e,t,i,o){const a=1<<i.z,r=1/a,s=i.x/a,n=i.y/a;let l=2;return l=Math.min(l,gi(e,t,s,n,r)),l=Math.min(l,gi(e,t,s+.5,-n-r,r)),l=Math.min(l,gi(e,t,s+.5,2-n-r,r)),l}getWrap(e,t,i){const o=1<<t.z,a=1/o,r=t.x/o,s=fi(e.x,r,a),n=fi(e.x,r-1,a),l=fi(e.x,r+1,a),c=Math.min(s,n,l);return c===l?1:c===n?-1:0}allowVariableZoom(e,t){return ye(e,t)>4}allowWorldCopies(){return !1}getTileBoundingVolume(e,t,i,o){return this._boundingVolumeCache.getTileBoundingVolume(e,t,i,o)}_computeTileBoundingVolume(e,i,o,a){var r,s;let n=0,l=0;if(null==a?void 0:a.terrain){const c=new t.Z(e.z,i,e.z,e.x,e.y),h=a.terrain.getMinMaxElevation(c);n=null!==(r=h.minElevation)&&void 0!==r?r:Math.min(0,o),l=null!==(s=h.maxElevation)&&void 0!==s?s:Math.max(0,o);}if(n/=t.bu,l/=t.bu,n+=1,l+=1,e.z<=0)return mi.fromAabb([-l,-l,-l],[l,l,l]);if(1===e.z)return mi.fromAabb([0===e.x?-l:0,0===e.y?0:-l,-l],[0===e.x?0:l,0===e.y?l:0,l]);{const i=[ri(0,0,e.x,e.y,e.z),ri(t.$,0,e.x,e.y,e.z),ri(t.$,t.$,e.x,e.y,e.z),ri(0,t.$,e.x,e.y,e.z)],o=[];for(const e of i)o.push(t.aR([],e,l));if(l!==n)for(const e of i)o.push(t.aR([],e,n));0===e.y&&o.push([0,1,0]),e.y===(1<<e.z)-1&&o.push([0,-1,0]);const a=[1,1,1],r=[-1,-1,-1];for(const e of o)for(let t=0;t<3;t++)a[t]=Math.min(a[t],e[t]),r[t]=Math.max(r[t],e[t]);const s=ri(t.$/2,t.$/2,e.x,e.y,e.z),c=t.aW([],[0,1,0],s);t.aV(c,c);const h=t.aW([],s,c);t.aV(h,h);const u=t.aW([],i[2],i[1]);t.aV(u,u);const d=t.aW([],i[0],i[3]);t.aV(d,d),o.push(t.aR([],s,l)),e.y>=(1<<e.z)/2&&o.push(t.aR([],ri(t.$/2,0,e.x,e.y,e.z),l)),e.y<(1<<e.z)/2&&o.push(t.aR([],ri(t.$/2,t.$,e.x,e.y,e.z),l));const _=xi(s,o),p=xi(h,o),m=[-s[0],-s[1],-s[2],_.max],f=[s[0],s[1],s[2],-_.min],g=[-h[0],-h[1],-h[2],p.max],v=[h[0],h[1],h[2],-p.min],x=[...u,0],b=[...d,0],y=[];return 0===e.y?y.push(t.bt(b,x,m),t.bt(b,x,f)):y.push(t.bt(g,x,m),t.bt(g,x,f),t.bt(g,b,m),t.bt(g,b,f)),e.y===(1<<e.z)-1?y.push(t.bt(b,x,m),t.bt(b,x,f)):y.push(t.bt(v,x,m),t.bt(v,x,f),t.bt(v,b,m),t.bt(v,b,f)),new mi(y,[m,f,g,v,x,b],a,r)}}}function xi(e,i){let o=1/0,a=-1/0;for(const r of i){const i=t.aX(e,r);o=Math.min(o,i),a=Math.max(a,i);}return {min:o,max:a}}class bi{get pixelsToClipSpaceMatrix(){return this._helper.pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._helper.clipSpaceToPixelsMatrix}get pixelsToGLUnits(){return this._helper.pixelsToGLUnits}get centerOffset(){return this._helper.centerOffset}get size(){return this._helper.size}get rotationMatrix(){return this._helper.rotationMatrix}get centerPoint(){return this._helper.centerPoint}get pixelsPerMeter(){return this._helper.pixelsPerMeter}setMinZoom(e){this._helper.setMinZoom(e);}setMaxZoom(e){this._helper.setMaxZoom(e);}setMinPitch(e){this._helper.setMinPitch(e);}setMaxPitch(e){this._helper.setMaxPitch(e);}setRenderWorldCopies(e){this._helper.setRenderWorldCopies(e);}setBearing(e){this._helper.setBearing(e);}setPitch(e){this._helper.setPitch(e);}setRoll(e){this._helper.setRoll(e);}setFov(e){this._helper.setFov(e);}setZoom(e){this._helper.setZoom(e);}setCenter(e){this._helper.setCenter(e);}setElevation(e){this._helper.setElevation(e);}setMinElevationForCurrentTile(e){this._helper.setMinElevationForCurrentTile(e);}setPadding(e){this._helper.setPadding(e);}interpolatePadding(e,t,i){return this._helper.interpolatePadding(e,t,i)}isPaddingEqual(e){return this._helper.isPaddingEqual(e)}resize(e,t){this._helper.resize(e,t);}getMaxBounds(){return this._helper.getMaxBounds()}setMaxBounds(e){this._helper.setMaxBounds(e);}setConstrain(e){this._helper.setConstrain(e);}overrideNearFarZ(e,t){this._helper.overrideNearFarZ(e,t);}clearNearFarZOverride(){this._helper.clearNearFarZOverride();}getCameraQueryGeometry(e){return this._helper.getCameraQueryGeometry(this.getCameraPoint(),e)}get tileSize(){return this._helper.tileSize}get tileZoom(){return this._helper.tileZoom}get scale(){return this._helper.scale}get worldSize(){return this._helper.worldSize}get width(){return this._helper.width}get height(){return this._helper.height}get lngRange(){return this._helper.lngRange}get latRange(){return this._helper.latRange}get minZoom(){return this._helper.minZoom}get maxZoom(){return this._helper.maxZoom}get zoom(){return this._helper.zoom}get center(){return this._helper.center}get minPitch(){return this._helper.minPitch}get maxPitch(){return this._helper.maxPitch}get pitch(){return this._helper.pitch}get pitchInRadians(){return this._helper.pitchInRadians}get roll(){return this._helper.roll}get rollInRadians(){return this._helper.rollInRadians}get bearing(){return this._helper.bearing}get bearingInRadians(){return this._helper.bearingInRadians}get fov(){return this._helper.fov}get fovInRadians(){return this._helper.fovInRadians}get elevation(){return this._helper.elevation}get minElevationForCurrentTile(){return this._helper.minElevationForCurrentTile}get padding(){return this._helper.padding}get unmodified(){return this._helper.unmodified}get renderWorldCopies(){return this._helper.renderWorldCopies}get constrain(){return this._helper.constrain}get nearZ(){return this._helper.nearZ}get farZ(){return this._helper.farZ}get autoCalculateNearFarZ(){return this._helper.autoCalculateNearFarZ}setTransitionState(e){}constructor(e){this._cachedClippingPlane=t.bv(),this._projectionMatrix=t.b9(),this._globeViewProjMatrix32f=t.b8(),this._globeViewProjMatrixNoCorrection=t.b9(),this._globeViewProjMatrixNoCorrectionInverted=t.b9(),this._globeProjMatrixInverted=t.b9(),this._cameraPosition=t.bp(),this._globeLatitudeErrorCorrectionRadians=0,this.defaultConstrain=(e,i)=>{const o=t.ae(e.lat,-t.af,t.af),a=t.ae(+i,this.minZoom+hi(0,o),this.maxZoom);return {center:new t.S(e.lng,o),zoom:a}},this._helper=new Lt({calcMatrices:()=>{this._calcMatrices();},constrain:(e,t)=>this.defaultConstrain(e,t)},e),this._coveringTilesDetailsProvider=new vi;}clone(){const e=new bi;return e.apply(this),e}apply(e,t){this._globeLatitudeErrorCorrectionRadians=t||0,this._helper.apply(e);}get projectionMatrix(){return this._projectionMatrix}get modelViewProjectionMatrix(){return this._globeViewProjMatrixNoCorrection}get inverseProjectionMatrix(){return this._globeProjMatrixInverted}get cameraPosition(){const e=t.bp();return e[0]=this._cameraPosition[0],e[1]=this._cameraPosition[1],e[2]=this._cameraPosition[2],e}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}getProjectionData(e){const{overscaledTileID:t,applyGlobeMatrix:i}=e,o=this._helper.getMercatorTileCoordinates(t);return {mainMatrix:this._globeViewProjMatrix32f,tileMercatorCoords:o,clippingPlane:this._cachedClippingPlane,projectionTransition:i?1:0,fallbackMatrix:this._globeViewProjMatrix32f}}_computeClippingPlane(e){const i=this.pitchInRadians,o=this.cameraToCenterDistance/e,a=Math.sin(i)*o,r=Math.cos(i)*o+1,s=1/Math.sqrt(a*a+r*r)*1;let n=-a,l=r;const c=Math.sqrt(n*n+l*l);n/=c,l/=c;const h=[0,n,l];t.bw(h,h,[0,0,0],-this.bearingInRadians),t.bx(h,h,[0,0,0],-1*this.center.lat*Math.PI/180),t.by(h,h,[0,0,0],this.center.lng*Math.PI/180);const u=1/t.aZ(h);return t.aR(h,h,u),[...h,-s*u]}isLocationOccluded(e){return !this.isSurfacePointVisible(si(e))}transformLightDirection(e){const i=this._helper._center.lng*Math.PI/180,o=this._helper._center.lat*Math.PI/180,a=Math.cos(o),r=[Math.sin(i)*a,Math.sin(o),Math.cos(i)*a],s=[r[2],0,-r[0]],n=[0,0,0];t.aW(n,s,r),t.aV(s,s),t.aV(n,n);const l=[0,0,0];return t.aV(l,[s[0]*e[0]+n[0]*e[1]+r[0]*e[2],s[1]*e[0]+n[1]*e[1]+r[1]*e[2],s[2]*e[0]+n[2]*e[1]+r[2]*e[2]]),l}getPixelScale(){return 1/Math.cos(this._helper._center.lat*Math.PI/180)}getCircleRadiusCorrection(){return Math.cos(this._helper._center.lat*Math.PI/180)}getPitchedTextCorrection(e,i,o){const a=function(e,i,o){const a=1/(1<<o.z);return new t.a1(e/t.$*a+o.x*a,i/t.$*a+o.y*a)}(e,i,o.canonical),r=(s=a.y,[t.bo(a.x*Math.PI*2+Math.PI,2*Math.PI),2*Math.atan(Math.exp(Math.PI-s*Math.PI*2))-.5*Math.PI]);var s;return this.getCircleRadiusCorrection()/Math.cos(r[1])}projectTileCoordinates(e,i,o,a){const r=o.canonical,s=ri(e,i,r.x,r.y,r.z),n=1+(a?a(e,i):0)/t.bu,l=[s[0]*n,s[1]*n,s[2]*n,1];t.aw(l,l,this._globeViewProjMatrixNoCorrection);const c=this._cachedClippingPlane,h=c[0]*s[0]+c[1]*s[1]+c[2]*s[2]+c[3]<0;return {point:new t.P(l[0]/l[3],l[1]/l[3]),signedDistanceFromCamera:l[3],isOccluded:h}}_calcMatrices(){if(!this._helper._width||!this._helper._height)return;const e=ni(this.worldSize,this.center.lat),i=t.ba(),o=t.ba();this._helper.autoCalculateNearFarZ&&(this._helper._nearZ=.5,this._helper._farZ=this.cameraToCenterDistance+2*e),t.b4(i,this.fovInRadians,this.width/this.height,this._helper._nearZ,this._helper._farZ);const a=this.centerOffset;i[8]=2*-a.x/this._helper._width,i[9]=2*a.y/this._helper._height,this._projectionMatrix=t.b5(i),this._globeProjMatrixInverted=t.ba(),t.aq(this._globeProjMatrixInverted,i),t.M(i,i,[0,0,-this.cameraToCenterDistance]),t.b6(i,i,this.rollInRadians),t.b7(i,i,-this.pitchInRadians),t.b6(i,i,this.bearingInRadians),t.M(i,i,[0,0,-e]);const r=t.bp();r[0]=e,r[1]=e,r[2]=e,t.b7(o,i,this.center.lat*Math.PI/180),t.bz(o,o,-this.center.lng*Math.PI/180),t.N(o,o,r),this._globeViewProjMatrixNoCorrection=o,t.b7(i,i,this.center.lat*Math.PI/180-this._globeLatitudeErrorCorrectionRadians),t.bz(i,i,-this.center.lng*Math.PI/180),t.N(i,i,r),this._globeViewProjMatrix32f=new Float32Array(i),this._globeViewProjMatrixNoCorrectionInverted=t.ba(),t.aq(this._globeViewProjMatrixNoCorrectionInverted,o);const s=t.bp();this._cameraPosition=t.bp(),this._cameraPosition[2]=this.cameraToCenterDistance/e,t.bw(this._cameraPosition,this._cameraPosition,s,-this.rollInRadians),t.bx(this._cameraPosition,this._cameraPosition,s,this.pitchInRadians),t.bw(this._cameraPosition,this._cameraPosition,s,-this.bearingInRadians),t.aS(this._cameraPosition,this._cameraPosition,[0,0,1]),t.bx(this._cameraPosition,this._cameraPosition,s,-this.center.lat*Math.PI/180),t.by(this._cameraPosition,this._cameraPosition,s,this.center.lng*Math.PI/180),this._cachedClippingPlane=this._computeClippingPlane(e);const n=t.b5(this._globeViewProjMatrixNoCorrectionInverted);t.N(n,n,[1,1,-1]),this._cachedFrustum=Bt.fromInvProjectionMatrix(n,1,0,this._cachedClippingPlane,!0);}calculateFogMatrix(e){t.w(\"calculateFogMatrix is not supported on globe projection.\");const i=t.ba();return t.ai(i),i}getVisibleUnwrappedCoordinates(e){return [new t.b2(0,e)]}getCameraFrustum(){return this._cachedFrustum}getClippingPlane(){return this._cachedClippingPlane}getCoveringTilesDetailsProvider(){return this._coveringTilesDetailsProvider}recalculateZoomAndCenter(e){e&&t.w(\"terrain is not fully supported on vertical perspective projection.\"),this._helper.recalculateZoomAndCenter(0);}maxPitchScaleFactor(){return 1}getCameraPoint(){return this._helper.getCameraPoint()}getCameraAltitude(){return this._helper.getCameraAltitude()}getCameraLngLat(){return this._helper.getCameraLngLat()}lngLatToCameraDepth(e,i){if(!this._globeViewProjMatrixNoCorrection)return 1;const o=si(e);t.aR(o,o,1+i/t.bu);const a=t.bv();return t.aw(a,[o[0],o[1],o[2],1],this._globeViewProjMatrixNoCorrection),a[2]/a[3]}populateCache(e){}getBounds(){const e=.5*this.width,i=.5*this.height,o=[new t.P(0,0),new t.P(e,0),new t.P(this.width,0),new t.P(this.width,i),new t.P(this.width,this.height),new t.P(e,this.height),new t.P(0,this.height),new t.P(0,i)],a=[];for(const e of o)a.push(this.unprojectScreenPoint(e));let r=0,s=0,n=0,l=0;const c=this.center;for(const e of a){const i=t.bA(c.lng,e.lng),o=t.bA(c.lat,e.lat);i<s&&(s=i),i>r&&(r=i),o<l&&(l=o),o>n&&(n=o);}const h=[c.lng+s,c.lat+l,c.lng+r,c.lat+n];return this.isSurfacePointOnScreen([0,1,0])&&(h[3]=90,h[0]=-180,h[2]=180),this.isSurfacePointOnScreen([0,-1,0])&&(h[1]=-90,h[0]=-180,h[2]=180),new $(h)}calculateCenterFromCameraLngLatAlt(e,t,i,o){return this._helper.calculateCenterFromCameraLngLatAlt(e,t,i,o)}setLocationAtPoint(e,i){const o=si(this.unprojectScreenPoint(i)),a=si(e),r=t.bp();t.bB(r);const s=t.bp();t.by(s,o,r,-this.center.lng*Math.PI/180),t.bx(s,s,r,this.center.lat*Math.PI/180);const n=a[0]*a[0]+a[2]*a[2],l=s[0]*s[0];if(n<l)return;const c=Math.sqrt(n-l),h=-c,u=t.bC(a[0],a[2],s[0],c),d=t.bC(a[0],a[2],s[0],h),_=t.bp();t.by(_,a,r,-u);const p=t.bC(_[1],_[2],s[1],s[2]),m=t.bp();t.by(m,a,r,-d);const f=t.bC(m[1],m[2],s[1],s[2]),g=.5*Math.PI,v=p>=-g&&p<=g,x=f>=-g&&f<=g;let b,y;if(v&&x){const e=this.center.lng*Math.PI/180,i=this.center.lat*Math.PI/180;t.bD(u,e)+t.bD(p,i)<t.bD(d,e)+t.bD(f,i)?(b=u,y=p):(b=d,y=f);}else if(v)b=u,y=p;else {if(!x)return;b=d,y=f;}const w=b/Math.PI*180,T=y/Math.PI*180,P=this.center.lat;this.setCenter(new t.S(w,t.ae(T,-90,90))),this.setZoom(this.zoom+hi(P,this.center.lat));}locationToScreenPoint(e,i){const o=si(e);if(i){const a=i.getElevationForLngLatZoom(e,this._helper._tileZoom);t.aR(o,o,1+a/t.bu);}return this._projectSurfacePointToScreen(o)}_projectSurfacePointToScreen(e){const i=t.bv();return t.aw(i,[...e,1],this._globeViewProjMatrixNoCorrection),i[0]/=i[3],i[1]/=i[3],new t.P((.5*i[0]+.5)*this.width,(.5*-i[1]+.5)*this.height)}screenPointToMercatorCoordinate(e,i){if(i){const t=i.pointCoordinate(e);if(t)return t}return t.a1.fromLngLat(this.unprojectScreenPoint(e))}screenPointToLocation(e,t){var i;return null===(i=this.screenPointToMercatorCoordinate(e,t))||void 0===i?void 0:i.toLngLat()}isPointOnMapSurface(e,t){const i=this._cameraPosition,o=this.getRayDirectionFromPixel(e);return !!this.rayPlanetIntersection(i,o)}getRayDirectionFromPixel(e){const i=t.bv();i[0]=e.x/this.width*2-1,i[1]=-1*(e.y/this.height*2-1),i[2]=1,i[3]=1,t.aw(i,i,this._globeViewProjMatrixNoCorrectionInverted),i[0]/=i[3],i[1]/=i[3],i[2]/=i[3];const o=t.bp();o[0]=i[0]-this._cameraPosition[0],o[1]=i[1]-this._cameraPosition[1],o[2]=i[2]-this._cameraPosition[2];const a=t.bp();return t.aV(a,o),a}isSurfacePointVisible(e){const t=this._cachedClippingPlane;return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]>=0}isSurfacePointOnScreen(e){if(!this.isSurfacePointVisible(e))return !1;const i=t.bv();return t.aw(i,[...e,1],this._globeViewProjMatrixNoCorrection),i[0]/=i[3],i[1]/=i[3],i[2]/=i[3],i[0]>-1&&i[0]<1&&i[1]>-1&&i[1]<1&&i[2]>-1&&i[2]<1}rayPlanetIntersection(e,i){const o=t.aX(e,i),a=t.bp(),r=t.bp();t.aR(r,i,o),t.aU(a,e,r);const s=1-t.aX(a,a);if(s<0)return null;const n=t.aX(e,e)-1,l=-o+(o<0?1:-1)*Math.sqrt(s),c=n/l,h=l;return {tMin:Math.min(c,h),tMax:Math.max(c,h)}}unprojectScreenPoint(e){const i=this._cameraPosition,o=this.getRayDirectionFromPixel(e),a=this.rayPlanetIntersection(i,o);if(a){const e=t.bp();t.aS(e,i,[o[0]*a.tMin,o[1]*a.tMin,o[2]*a.tMin]);const r=t.bp();return t.aV(r,e),li(r)}const r=this._cachedClippingPlane,s=r[0]*o[0]+r[1]*o[1]+r[2]*o[2],n=-t.b1(r,i)/s,l=t.bp();if(n>0)t.aS(l,i,[o[0]*n,o[1]*n,o[2]*n]);else {const e=t.bp();t.aS(e,i,[2*o[0],2*o[1],2*o[2]]);const a=t.b1(this._cachedClippingPlane,e);t.aU(l,e,[this._cachedClippingPlane[0]*a,this._cachedClippingPlane[1]*a,this._cachedClippingPlane[2]*a]);}const c=function(e){const i=t.bp();return i[0]=e[0]*-e[3],i[1]=e[1]*-e[3],i[2]=e[2]*-e[3],{center:i,radius:Math.sqrt(1-e[3]*e[3])}}(r);return li(function(e,i,o){const a=t.bp();t.aU(a,o,e);const r=t.bp();return t.bq(r,e,a,i/t.a$(a)),r}(c.center,c.radius,l))}getMatrixForModel(e,i){const o=t.S.convert(e),a=1/t.bu,r=t.b9();return t.bz(r,r,o.lng/180*Math.PI),t.b7(r,r,-o.lat/180*Math.PI),t.M(r,r,[0,0,1+i/t.bu]),t.b7(r,r,.5*Math.PI),t.N(r,r,[a,a,a]),r}getProjectionDataForCustomLayer(e=!0){const i=this.getProjectionData({overscaledTileID:new t.Z(0,0,0,0,0),applyGlobeMatrix:e});return i.tileMercatorCoords=[0,0,1,1],i}getFastPathSimpleProjectionMatrix(e){}}class yi{get pixelsToClipSpaceMatrix(){return this._helper.pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._helper.clipSpaceToPixelsMatrix}get pixelsToGLUnits(){return this._helper.pixelsToGLUnits}get centerOffset(){return this._helper.centerOffset}get size(){return this._helper.size}get rotationMatrix(){return this._helper.rotationMatrix}get centerPoint(){return this._helper.centerPoint}get pixelsPerMeter(){return this._helper.pixelsPerMeter}setMinZoom(e){this._helper.setMinZoom(e);}setMaxZoom(e){this._helper.setMaxZoom(e);}setMinPitch(e){this._helper.setMinPitch(e);}setMaxPitch(e){this._helper.setMaxPitch(e);}setRenderWorldCopies(e){this._helper.setRenderWorldCopies(e);}setBearing(e){this._helper.setBearing(e);}setPitch(e){this._helper.setPitch(e);}setRoll(e){this._helper.setRoll(e);}setFov(e){this._helper.setFov(e);}setZoom(e){this._helper.setZoom(e);}setCenter(e){this._helper.setCenter(e);}setElevation(e){this._helper.setElevation(e);}setMinElevationForCurrentTile(e){this._helper.setMinElevationForCurrentTile(e);}setPadding(e){this._helper.setPadding(e);}interpolatePadding(e,t,i){return this._helper.interpolatePadding(e,t,i)}isPaddingEqual(e){return this._helper.isPaddingEqual(e)}resize(e,t,i=!0){this._helper.resize(e,t,i);}getMaxBounds(){return this._helper.getMaxBounds()}setMaxBounds(e){this._helper.setMaxBounds(e);}setConstrain(e){this._helper.setConstrain(e);}overrideNearFarZ(e,t){this._helper.overrideNearFarZ(e,t);}clearNearFarZOverride(){this._helper.clearNearFarZOverride();}getCameraQueryGeometry(e){return this._helper.getCameraQueryGeometry(this.getCameraPoint(),e)}get tileSize(){return this._helper.tileSize}get tileZoom(){return this._helper.tileZoom}get scale(){return this._helper.scale}get worldSize(){return this._helper.worldSize}get width(){return this._helper.width}get height(){return this._helper.height}get lngRange(){return this._helper.lngRange}get latRange(){return this._helper.latRange}get minZoom(){return this._helper.minZoom}get maxZoom(){return this._helper.maxZoom}get zoom(){return this._helper.zoom}get center(){return this._helper.center}get minPitch(){return this._helper.minPitch}get maxPitch(){return this._helper.maxPitch}get pitch(){return this._helper.pitch}get pitchInRadians(){return this._helper.pitchInRadians}get roll(){return this._helper.roll}get rollInRadians(){return this._helper.rollInRadians}get bearing(){return this._helper.bearing}get bearingInRadians(){return this._helper.bearingInRadians}get fov(){return this._helper.fov}get fovInRadians(){return this._helper.fovInRadians}get elevation(){return this._helper.elevation}get minElevationForCurrentTile(){return this._helper.minElevationForCurrentTile}get padding(){return this._helper.padding}get unmodified(){return this._helper.unmodified}get renderWorldCopies(){return this._helper.renderWorldCopies}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}get constrain(){return this._helper.constrain}get nearZ(){return this._helper.nearZ}get farZ(){return this._helper.farZ}get autoCalculateNearFarZ(){return this._helper.autoCalculateNearFarZ}get isGlobeRendering(){return this._globeness>0}setTransitionState(e,t){this._globeness=e,this._globeLatitudeErrorCorrectionRadians=t,this._calcMatrices(),this._verticalPerspectiveTransform.getCoveringTilesDetailsProvider().prepareNextFrame(),this._mercatorTransform.getCoveringTilesDetailsProvider().prepareNextFrame();}get currentTransform(){return this.isGlobeRendering?this._verticalPerspectiveTransform:this._mercatorTransform}constructor(e){this._globeLatitudeErrorCorrectionRadians=0,this._globeness=1,this.defaultConstrain=(e,t)=>this.currentTransform.defaultConstrain(e,t),this._helper=new Lt({calcMatrices:()=>{this._calcMatrices();},constrain:(e,t)=>this.defaultConstrain(e,t)},e),this._globeness=1,this._mercatorTransform=new Ot,this._verticalPerspectiveTransform=new bi;}clone(){const e=new yi;return e._globeness=this._globeness,e._globeLatitudeErrorCorrectionRadians=this._globeLatitudeErrorCorrectionRadians,e.apply(this),e}apply(e){this._helper.apply(e),this._mercatorTransform.apply(this),this._verticalPerspectiveTransform.apply(this,this._globeLatitudeErrorCorrectionRadians);}get projectionMatrix(){return this.currentTransform.projectionMatrix}get modelViewProjectionMatrix(){return this.currentTransform.modelViewProjectionMatrix}get inverseProjectionMatrix(){return this.currentTransform.inverseProjectionMatrix}get cameraPosition(){return this.currentTransform.cameraPosition}getProjectionData(e){const t=this._mercatorTransform.getProjectionData(e),i=this._verticalPerspectiveTransform.getProjectionData(e);return {mainMatrix:this.isGlobeRendering?i.mainMatrix:t.mainMatrix,clippingPlane:i.clippingPlane,tileMercatorCoords:i.tileMercatorCoords,projectionTransition:e.applyGlobeMatrix?this._globeness:0,fallbackMatrix:t.fallbackMatrix}}isLocationOccluded(e){return this.currentTransform.isLocationOccluded(e)}transformLightDirection(e){return this.currentTransform.transformLightDirection(e)}getPixelScale(){return t.bk(this._mercatorTransform.getPixelScale(),this._verticalPerspectiveTransform.getPixelScale(),this._globeness)}getCircleRadiusCorrection(){return t.bk(this._mercatorTransform.getCircleRadiusCorrection(),this._verticalPerspectiveTransform.getCircleRadiusCorrection(),this._globeness)}getPitchedTextCorrection(e,i,o){const a=this._mercatorTransform.getPitchedTextCorrection(e,i,o),r=this._verticalPerspectiveTransform.getPitchedTextCorrection(e,i,o);return t.bk(a,r,this._globeness)}projectTileCoordinates(e,t,i,o){return this.currentTransform.projectTileCoordinates(e,t,i,o)}_calcMatrices(){this._helper._width&&this._helper._height&&(this._verticalPerspectiveTransform.apply(this,this._globeLatitudeErrorCorrectionRadians),this._helper._nearZ=this._verticalPerspectiveTransform.nearZ,this._helper._farZ=this._verticalPerspectiveTransform.farZ,this._mercatorTransform.apply(this,!0,this.isGlobeRendering),this._helper._nearZ=this._mercatorTransform.nearZ,this._helper._farZ=this._mercatorTransform.farZ);}calculateFogMatrix(e){return this.currentTransform.calculateFogMatrix(e)}getVisibleUnwrappedCoordinates(e){return this.currentTransform.getVisibleUnwrappedCoordinates(e)}getCameraFrustum(){return this.currentTransform.getCameraFrustum()}getClippingPlane(){return this.currentTransform.getClippingPlane()}getCoveringTilesDetailsProvider(){return this.currentTransform.getCoveringTilesDetailsProvider()}recalculateZoomAndCenter(e){this._mercatorTransform.recalculateZoomAndCenter(e),this._verticalPerspectiveTransform.recalculateZoomAndCenter(e);}maxPitchScaleFactor(){return this._mercatorTransform.maxPitchScaleFactor()}getCameraPoint(){return this._helper.getCameraPoint()}getCameraAltitude(){return this._helper.getCameraAltitude()}getCameraLngLat(){return this._helper.getCameraLngLat()}lngLatToCameraDepth(e,t){return this.currentTransform.lngLatToCameraDepth(e,t)}populateCache(e){this._mercatorTransform.populateCache(e),this._verticalPerspectiveTransform.populateCache(e);}getBounds(){return this.currentTransform.getBounds()}calculateCenterFromCameraLngLatAlt(e,t,i,o){return this._helper.calculateCenterFromCameraLngLatAlt(e,t,i,o)}setLocationAtPoint(e,t){if(!this.isGlobeRendering)return this._mercatorTransform.setLocationAtPoint(e,t),void this.apply(this._mercatorTransform);this._verticalPerspectiveTransform.setLocationAtPoint(e,t),this.apply(this._verticalPerspectiveTransform);}locationToScreenPoint(e,t){return this.currentTransform.locationToScreenPoint(e,t)}screenPointToMercatorCoordinate(e,t){return this.currentTransform.screenPointToMercatorCoordinate(e,t)}screenPointToLocation(e,t){return this.currentTransform.screenPointToLocation(e,t)}isPointOnMapSurface(e,t){return this.currentTransform.isPointOnMapSurface(e,t)}getRayDirectionFromPixel(e){return this._verticalPerspectiveTransform.getRayDirectionFromPixel(e)}getMatrixForModel(e,t){return this.currentTransform.getMatrixForModel(e,t)}getProjectionDataForCustomLayer(e=!0){const t=this._mercatorTransform.getProjectionDataForCustomLayer(e);if(!this.isGlobeRendering)return t;const i=this._verticalPerspectiveTransform.getProjectionDataForCustomLayer(e);return i.fallbackMatrix=t.mainMatrix,i}getFastPathSimpleProjectionMatrix(e){return this.currentTransform.getFastPathSimpleProjectionMatrix(e)}}class wi{get useGlobeControls(){return !0}handlePanInertia(e,i){const o=ui(e,i);return Math.abs(o.lng-i.center.lng)>180&&(o.lng=i.center.lng+179.5*Math.sign(o.lng-i.center.lng)),{easingCenter:o,easingOffset:new t.P(0,0)}}handleMapControlsRollPitchBearingZoom(e,i){const o=e.around,a=i.screenPointToLocation(o);e.bearingDelta&&i.setBearing(i.bearing+e.bearingDelta),e.pitchDelta&&i.setPitch(i.pitch+e.pitchDelta),e.rollDelta&&i.setRoll(i.roll+e.rollDelta);const r=i.zoom;e.zoomDelta&&i.setZoom(i.zoom+e.zoomDelta);const s=i.zoom-r;if(0===s)return;const n=t.bA(i.center.lng,a.lng),l=n/(Math.abs(n/180)+1),c=t.bA(i.center.lat,a.lat),h=i.getRayDirectionFromPixel(o),u=i.cameraPosition,d=-1*t.aX(u,h),_=t.bp();t.aS(_,u,[h[0]*d,h[1]*d,h[2]*d]);const p=t.aZ(_)-1,m=Math.exp(.5*-Math.max(p-.3,0)),f=ni(i.worldSize,i.center.lat)/Math.min(i.width,i.height),g=t.bn(f,.9,.5,1,.25),v=(1-t.ah(-s))*Math.min(m,g),x=i.center.lat,b=i.zoom,y=new t.S(i.center.lng+l*v,t.ae(i.center.lat+c*v,-t.af,t.af));i.setLocationAtPoint(a,o);const w=i.center,T=t.bn(Math.abs(n),45,85,0,1),P=t.bn(f,.75,.35,0,1),C=Math.pow(Math.max(T,P),.25),I=t.bA(w.lng,y.lng),M=t.bA(w.lat,y.lat);i.setCenter(new t.S(w.lng+I*C,w.lat+M*C).wrap()),i.setZoom(b+hi(x,i.center.lat));}handleMapControlsPan(e,t,i){if(!e.panDelta)return;const o=t.center.lat,a=t.zoom;t.setCenter(ui(e.panDelta,t).wrap()),t.setZoom(a+hi(o,t.center.lat));}cameraForBoxAndBearing(e,i,o,a,r){const s=Zt(e,i,o,a,r),n=i.left/r.width*2-1,l=(r.width-i.right)/r.width*2-1,c=i.top/r.height*-2+1,h=(r.height-i.bottom)/r.height*-2+1,u=t.bA(o.getWest(),o.getEast())<0,d=u?o.getEast():o.getWest(),_=u?o.getWest():o.getEast(),p=Math.max(o.getNorth(),o.getSouth()),m=Math.min(o.getNorth(),o.getSouth()),f=d+.5*t.bA(d,_),g=p+.5*t.bA(p,m),v=r.clone();v.setCenter(s.center),v.setBearing(s.bearing),v.setPitch(0),v.setRoll(0),v.setZoom(s.zoom);const x=v.modelViewProjectionMatrix,b=[si(o.getNorthWest()),si(o.getNorthEast()),si(o.getSouthWest()),si(o.getSouthEast()),si(new t.S(_,g)),si(new t.S(d,g)),si(new t.S(f,p)),si(new t.S(f,m))],y=si(s.center);let w=Number.POSITIVE_INFINITY;for(const e of b)n<0&&(w=wi.getLesserNonNegativeNonNull(w,wi.solveVectorScale(e,y,x,\"x\",n))),l>0&&(w=wi.getLesserNonNegativeNonNull(w,wi.solveVectorScale(e,y,x,\"x\",l))),c>0&&(w=wi.getLesserNonNegativeNonNull(w,wi.solveVectorScale(e,y,x,\"y\",c))),h<0&&(w=wi.getLesserNonNegativeNonNull(w,wi.solveVectorScale(e,y,x,\"y\",h)));if(Number.isFinite(w)&&0!==w)return s.zoom=v.zoom+t.ak(w),s;jt();}handleJumpToCenterZoom(e,i){const o=e.center.lat,a=e.constrain(i.center?t.S.convert(i.center):e.center,e.zoom).center;e.setCenter(a.wrap());const r=void 0!==i.zoom?+i.zoom:e.zoom+hi(o,a.lat);e.zoom!==r&&e.setZoom(r);}handleEaseTo(e,i){const o=e.zoom,a=e.center,r=e.padding,s={roll:e.roll,pitch:e.pitch,bearing:e.bearing},n={roll:void 0===i.roll?e.roll:i.roll,pitch:void 0===i.pitch?e.pitch:i.pitch,bearing:void 0===i.bearing?e.bearing:i.bearing},l=void 0!==i.zoom,c=!e.isPaddingEqual(i.padding);let h=!1;const u=i.center?t.S.convert(i.center):a,d=e.constrain(u,o).center;zt(e,d);const _=e.clone();_.setCenter(d),_.setZoom(l?+i.zoom:o+hi(a.lat,u.lat)),_.setBearing(i.bearing);const p=new t.P(t.ae(e.centerPoint.x+i.offsetAsPoint.x,0,e.width),t.ae(e.centerPoint.y+i.offsetAsPoint.y,0,e.height));_.setLocationAtPoint(d,p);const m=(i.offset&&i.offsetAsPoint.mag())>0?_.center:d,f=l?+i.zoom:o+hi(a.lat,m.lat),g=o+hi(a.lat,0),v=f+hi(m.lat,0),x=t.bA(a.lng,m.lng),b=t.bA(a.lat,m.lat),y=t.ah(v-g);return h=f!==o,{easeFunc:o=>{if(t.be(s,n)||Nt({startEulerAngles:s,endEulerAngles:n,tr:e,k:o,useSlerp:s.roll!=n.roll}),c&&e.interpolatePadding(r,i.padding,o),i.around)t.w(\"Easing around a point is not supported under globe projection.\"),e.setLocationAtPoint(i.around,i.aroundPoint);else {const t=v>g?Math.min(2,y):Math.max(.5,y),i=Math.pow(t,1-o),r=_i(a,x,b,o*i);e.setCenter(r.wrap());}if(h){const i=t.C.number(g,v,o)+hi(0,e.center.lat);e.setZoom(i);}},isZooming:h,elevationCenter:m}}handleFlyTo(e,i){const o=void 0!==i.zoom,a=e.center,r=e.zoom,s=e.padding,n=!e.isPaddingEqual(i.padding),l=e.constrain(t.S.convert(i.center||i.locationAtOffset),r).center,c=o?+i.zoom:e.zoom+hi(e.center.lat,l.lat),h=e.clone();h.setCenter(l),h.setZoom(c),h.setBearing(i.bearing);const u=new t.P(t.ae(e.centerPoint.x+i.offsetAsPoint.x,0,e.width),t.ae(e.centerPoint.y+i.offsetAsPoint.y,0,e.height));h.setLocationAtPoint(l,u);const d=h.center;zt(e,d);const _=function(e,i,o){const a=si(i),r=si(o),s=t.aX(a,r),n=Math.acos(s),l=ai(e);return n/(2*Math.PI)*l}(e,a,d),p=r+hi(a.lat,0),m=c+hi(d.lat,0),f=t.ah(m-p);let g;if(\"number\"==typeof i.minZoom){const o=+i.minZoom+hi(d.lat,0),a=Math.min(o,p,m)+hi(0,d.lat),r=e.constrain(d,a).zoom+hi(d.lat,0);g=t.ah(r-p);}const v=t.bA(a.lng,d.lng),x=t.bA(a.lat,d.lat);return {easeFunc:(o,r,l,h)=>{const u=_i(a,v,x,l);n&&e.interpolatePadding(s,i.padding,o);const _=1===o?d:u;e.setCenter(_.wrap());const m=p+t.ak(r);e.setZoom(1===o?c:m+hi(0,_.lat));},scaleOfZoom:f,targetCenter:d,scaleOfMinZoom:g,pixelPathLength:_}}static solveVectorScale(e,t,i,o,a){const r=\"x\"===o?[i[0],i[4],i[8],i[12]]:[i[1],i[5],i[9],i[13]],s=[i[3],i[7],i[11],i[15]],n=e[0]*r[0]+e[1]*r[1]+e[2]*r[2],l=e[0]*s[0]+e[1]*s[1]+e[2]*s[2],c=t[0]*r[0]+t[1]*r[1]+t[2]*r[2],h=t[0]*s[0]+t[1]*s[1]+t[2]*s[2];return c+a*l===n+a*h||s[3]*(n-c)+r[3]*(h-l)+n*h==c*l?null:(c+r[3]-a*h-a*s[3])/(c-n-a*h+a*l)}static getLesserNonNegativeNonNull(e,t){return null!==t&&t>=0&&t<e?t:e}}class Ti{constructor(e){this._globe=e,this._mercatorCameraHelper=new Ut,this._verticalPerspectiveCameraHelper=new wi;}get useGlobeControls(){return this._globe.useGlobeRendering}get currentHelper(){return this.useGlobeControls?this._verticalPerspectiveCameraHelper:this._mercatorCameraHelper}handlePanInertia(e,t){return this.currentHelper.handlePanInertia(e,t)}handleMapControlsRollPitchBearingZoom(e,t){return this.currentHelper.handleMapControlsRollPitchBearingZoom(e,t)}handleMapControlsPan(e,t,i){this.currentHelper.handleMapControlsPan(e,t,i);}cameraForBoxAndBearing(e,t,i,o,a){return this.currentHelper.cameraForBoxAndBearing(e,t,i,o,a)}handleJumpToCenterZoom(e,t){this.currentHelper.handleJumpToCenterZoom(e,t);}handleEaseTo(e,t){return this.currentHelper.handleEaseTo(e,t)}handleFlyTo(e,t){return this.currentHelper.handleFlyTo(e,t)}}const Pi=(e,i)=>t.y(e,i&&i.filter((e=>\"source.canvas\"!==e.identifier))),Ci=t.bE();class Ii extends t.E{constructor(e,i={}){var o,a;super(),this._rtlPluginLoaded=()=>{for(const e in this.sourceCaches){const t=this.sourceCaches[e].getSource().type;\"vector\"!==t&&\"geojson\"!==t||this.sourceCaches[e].reload();}},this.map=e,this.dispatcher=new O(B(),e._getMapId()),this.dispatcher.registerMessageHandler(\"GG\",((e,t)=>this.getGlyphs(e,t))),this.dispatcher.registerMessageHandler(\"GI\",((e,t)=>this.getImages(e,t))),this.dispatcher.registerMessageHandler(\"GDA\",((e,t)=>this.getDashes(e,t))),this.imageManager=new y,this.imageManager.setEventedParent(this);const r=(null===(o=e._container)||void 0===o?void 0:o.lang)||\"undefined\"!=typeof document&&(null===(a=document.documentElement)||void 0===a?void 0:a.lang)||void 0;this.glyphManager=new C(e._requestManager,i.localIdeographFontFamily,r),this.lineAtlas=new D(256,512),this.crossTileSymbolIndex=new wt,this._spritesImagesIds={},this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory=new t.bF,this._loaded=!1,this._availableImages=[],this._globalState={},this._resetUpdates(),this.dispatcher.broadcast(\"SR\",t.bG()),re().on(ie,this._rtlPluginLoaded),this.on(\"data\",(e=>{if(\"source\"!==e.dataType||\"metadata\"!==e.sourceDataType)return;const t=this.sourceCaches[e.sourceId];if(!t)return;const i=t.getSource();if(i&&i.vectorLayerIds)for(const e in this._layers){const t=this._layers[e];t.source===i.id&&this._validateLayer(t);}}));}setGlobalStateProperty(e,i){var o,a,r;this._checkLoaded();const s=null===i?null!==(r=null===(a=null===(o=this.stylesheet.state)||void 0===o?void 0:o[e])||void 0===a?void 0:a.default)&&void 0!==r?r:null:i;if(t.bH(s,this._globalState[e]))return this;this._globalState[e]=s,this._applyGlobalStateChanges([e]);}getGlobalState(){return this._globalState}setGlobalState(e){this._checkLoaded();const i=[];for(const o in e)!t.bH(this._globalState[o],e[o].default)&&(i.push(o),this._globalState[o]=e[o].default);this._applyGlobalStateChanges(i);}_applyGlobalStateChanges(e){if(0===e.length)return;const t=new Set,i={};for(const o of e){i[o]=this._globalState[o];for(const e in this._layers){const i=this._layers[e],a=i.getLayoutAffectingGlobalStateRefs(),r=i.getPaintAffectingGlobalStateRefs();if(a.has(o)&&t.add(i.source),r.has(o))for(const{name:e,value:t}of r.get(o))this._updatePaintProperty(i,e,t);}}this.dispatcher.broadcast(\"UGS\",i);for(const e in this.sourceCaches)t.has(e)&&(this._reloadSource(e),this._changed=!0);}loadURL(e,i={},o){this.fire(new t.l(\"dataloading\",{dataType:\"style\"})),i.validate=\"boolean\"!=typeof i.validate||i.validate;const a=this.map._requestManager.transformRequest(e,\"Style\");this._loadStyleRequest=new AbortController;const r=this._loadStyleRequest;t.j(a,this._loadStyleRequest).then((e=>{this._loadStyleRequest=null,this._load(e.data,i,o);})).catch((e=>{this._loadStyleRequest=null,e&&!r.signal.aborted&&this.fire(new t.k(e));}));}loadJSON(e,i={},o){this.fire(new t.l(\"dataloading\",{dataType:\"style\"})),this._frameRequest=new AbortController,s.frameAsync(this._frameRequest).then((()=>{this._frameRequest=null,i.validate=!1!==i.validate,this._load(e,i,o);})).catch((()=>{}));}loadEmpty(){this.fire(new t.l(\"dataloading\",{dataType:\"style\"})),this._load(Ci,{validate:!1});}_load(e,i,o){var a,r;let s=i.transformStyle?i.transformStyle(o,e):e;if(!i.validate||!Pi(this,t.z(s))){s=Object.assign({},s),this._loaded=!0,this.stylesheet=s;for(const e in s.sources)this.addSource(e,s.sources[e],{validate:!1});s.sprite?this._loadSprite(s.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(s.glyphs),this._createLayers(),this.light=new S(this.stylesheet.light),this._setProjectionInternal((null===(a=this.stylesheet.projection)||void 0===a?void 0:a.type)||\"mercator\"),this.sky=new R(this.stylesheet.sky),this.map.setTerrain(null!==(r=this.stylesheet.terrain)&&void 0!==r?r:null),this.fire(new t.l(\"data\",{dataType:\"style\"})),this.fire(new t.l(\"style.load\"));}}_createLayers(){var e,i,o;const a=t.bI(this.stylesheet.layers);this.setGlobalState(null!==(e=this.stylesheet.state)&&void 0!==e?e:null),this.dispatcher.broadcast(\"SL\",a),this._order=a.map((e=>e.id)),this._layers={},this._serializedLayers=null;for(const e of a){const a=t.bJ(e,this._globalState);if(a.setEventedParent(this,{layer:{id:e.id}}),this._layers[e.id]=a,t.bK(a)&&this.sourceCaches[a.source]){const t=null!==(o=null===(i=e.paint)||void 0===i?void 0:i[\"raster-fade-duration\"])&&void 0!==o?o:a.paint.get(\"raster-fade-duration\");this.sourceCaches[a.source].setRasterFadeDuration(t);}}}_loadSprite(e,i=!1,o=void 0){let a;this.imageManager.setLoaded(!1),this._spriteRequest=new AbortController,function(e,i,o,a){return t._(this,void 0,void 0,(function*(){const r=v(e),n=o>1?\"@2x\":\"\",l={},c={};for(const{id:e,url:o}of r){const r=i.transformRequest(x(o,n,\".json\"),\"SpriteJSON\");l[e]=t.j(r,a);const s=i.transformRequest(x(o,n,\".png\"),\"SpriteImage\");c[e]=f.getImage(s,a);}return yield Promise.all([...Object.values(l),...Object.values(c)]),function(e,i){return t._(this,void 0,void 0,(function*(){const t={};for(const o in e){t[o]={};const a=s.getImageCanvasContext((yield i[o]).data),r=(yield e[o]).data;for(const e in r){const{width:i,height:s,x:n,y:l,sdf:c,pixelRatio:h,stretchX:u,stretchY:d,content:_,textFitWidth:p,textFitHeight:m}=r[e];t[o][e]={data:null,pixelRatio:h,sdf:c,stretchX:u,stretchY:d,content:_,textFitWidth:p,textFitHeight:m,spriteData:{width:i,height:s,x:n,y:l,context:a}};}}return t}))}(l,c)}))}(e,this.map._requestManager,this.map.getPixelRatio(),this._spriteRequest).then((e=>{if(this._spriteRequest=null,e)for(const t in e){this._spritesImagesIds[t]=[];const o=this._spritesImagesIds[t]?this._spritesImagesIds[t].filter((t=>!(t in e))):[];for(const e of o)this.imageManager.removeImage(e),this._changedImages[e]=!0;for(const o in e[t]){const a=\"default\"===t?o:`${t}:${o}`;this._spritesImagesIds[t].push(a),a in this.imageManager.images?this.imageManager.updateImage(a,e[t][o],!1):this.imageManager.addImage(a,e[t][o]),i&&(this._changedImages[a]=!0);}}})).catch((e=>{this._spriteRequest=null,a=e,this.fire(new t.k(a));})).finally((()=>{this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),i&&(this._changed=!0),this.dispatcher.broadcast(\"SI\",this._availableImages),this.fire(new t.l(\"data\",{dataType:\"style\"})),o&&o(a);}));}_unloadSprite(){for(const e of Object.values(this._spritesImagesIds).flat())this.imageManager.removeImage(e),this._changedImages[e]=!0;this._spritesImagesIds={},this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast(\"SI\",this._availableImages),this.fire(new t.l(\"data\",{dataType:\"style\"}));}_validateLayer(e){const i=this.sourceCaches[e.source];if(!i)return;const o=e.sourceLayer;if(!o)return;const a=i.getSource();(\"geojson\"===a.type||a.vectorLayerIds&&-1===a.vectorLayerIds.indexOf(o))&&this.fire(new t.k(new Error(`Source layer \"${o}\" does not exist on source \"${a.id}\" as specified by style layer \"${e.id}\".`)));}loaded(){if(!this._loaded)return !1;if(Object.keys(this._updatedSources).length)return !1;for(const e in this.sourceCaches)if(!this.sourceCaches[e].loaded())return !1;return !!this.imageManager.isLoaded()}_serializeByIds(e,i=!1){const o=this._serializedAllLayers();if(!e||0===e.length)return Object.values(i?t.bL(o):o);const a=[];for(const r of e)if(o[r]){const e=i?t.bL(o[r]):o[r];a.push(e);}return a}_serializedAllLayers(){let e=this._serializedLayers;if(e)return e;e=this._serializedLayers={};const t=Object.keys(this._layers);for(const i of t){const t=this._layers[i];\"custom\"!==t.type&&(e[i]=t.serialize());}return e}hasTransitions(){var e,t,i;if(null===(e=this.light)||void 0===e?void 0:e.hasTransition())return !0;if(null===(t=this.sky)||void 0===t?void 0:t.hasTransition())return !0;if(null===(i=this.projection)||void 0===i?void 0:i.hasTransition())return !0;for(const e in this.sourceCaches)if(this.sourceCaches[e].hasTransition())return !0;for(const e in this._layers)if(this._layers[e].hasTransition())return !0;return !1}_checkLoaded(){if(!this._loaded)throw new Error(\"Style is not done loading.\")}update(e){if(!this._loaded)return;const i=this._changed;if(i){const t=Object.keys(this._updatedLayers),i=Object.keys(this._removedLayers);(t.length||i.length)&&this._updateWorkerLayers(t,i);for(const e in this._updatedSources){const t=this._updatedSources[e];if(\"reload\"===t)this._reloadSource(e);else {if(\"clear\"!==t)throw new Error(`Invalid action ${t}`);this._clearSource(e);}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(const t in this._updatedPaintProps)this._layers[t].updateTransitions(e);this.light.updateTransitions(e),this.sky.updateTransitions(e),this._resetUpdates();}const o={};for(const e in this.sourceCaches){const t=this.sourceCaches[e];o[e]=t.used,t.used=!1;}for(const t of this._order){const i=this._layers[t];i.recalculate(e,this._availableImages),!i.isHidden(e.zoom)&&i.source&&(this.sourceCaches[i.source].used=!0);}for(const e in o){const i=this.sourceCaches[e];!!o[e]!=!!i.used&&i.fire(new t.l(\"data\",{sourceDataType:\"visibility\",dataType:\"source\",sourceId:e}));}this.light.recalculate(e),this.sky.recalculate(e),this.projection.recalculate(e),this.z=e.zoom,i&&this.fire(new t.l(\"data\",{dataType:\"style\"}));}_updateTilesForChangedImages(){const e=Object.keys(this._changedImages);if(e.length){for(const t in this.sourceCaches)this.sourceCaches[t].reloadTilesForDependencies([\"icons\",\"patterns\"],e);this._changedImages={};}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(const e in this.sourceCaches)this.sourceCaches[e].reloadTilesForDependencies([\"glyphs\"],[\"\"]);this._glyphsDidChange=!1;}}_updateWorkerLayers(e,t){this.dispatcher.broadcast(\"UL\",{layers:this._serializeByIds(e,!1),removedIds:t});}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1;}setState(e,i={}){var o;this._checkLoaded();const a=this.serialize();if(e=i.transformStyle?i.transformStyle(a,e):e,(null===(o=i.validate)||void 0===o||o)&&Pi(this,t.z(e)))return !1;(e=t.bL(e)).layers=t.bI(e.layers);const r=t.bM(a,e),s=this._getOperationsToPerform(r);if(s.unimplemented.length>0)throw new Error(`Unimplemented: ${s.unimplemented.join(\", \")}.`);if(0===s.operations.length)return !1;for(const e of s.operations)e();return this.stylesheet=e,this._serializedLayers=null,!0}_getOperationsToPerform(e){const t=[],i=[];for(const o of e)switch(o.command){case \"setCenter\":case \"setZoom\":case \"setBearing\":case \"setPitch\":case \"setRoll\":continue;case \"addLayer\":t.push((()=>this.addLayer.apply(this,o.args)));break;case \"removeLayer\":t.push((()=>this.removeLayer.apply(this,o.args)));break;case \"setPaintProperty\":t.push((()=>this.setPaintProperty.apply(this,o.args)));break;case \"setLayoutProperty\":t.push((()=>this.setLayoutProperty.apply(this,o.args)));break;case \"setFilter\":t.push((()=>this.setFilter.apply(this,o.args)));break;case \"addSource\":t.push((()=>this.addSource.apply(this,o.args)));break;case \"removeSource\":t.push((()=>this.removeSource.apply(this,o.args)));break;case \"setLayerZoomRange\":t.push((()=>this.setLayerZoomRange.apply(this,o.args)));break;case \"setLight\":t.push((()=>this.setLight.apply(this,o.args)));break;case \"setGeoJSONSourceData\":t.push((()=>this.setGeoJSONSourceData.apply(this,o.args)));break;case \"setGlyphs\":t.push((()=>this.setGlyphs.apply(this,o.args)));break;case \"setSprite\":t.push((()=>this.setSprite.apply(this,o.args)));break;case \"setTerrain\":t.push((()=>this.map.setTerrain.apply(this,o.args)));break;case \"setSky\":t.push((()=>this.setSky.apply(this,o.args)));break;case \"setProjection\":this.setProjection.apply(this,o.args);break;case \"setGlobalState\":t.push((()=>this.setGlobalState.apply(this,o.args)));break;case \"setTransition\":t.push((()=>{}));break;default:i.push(o.command);}return {operations:t,unimplemented:i}}addImage(e,i){if(this.getImage(e))return this.fire(new t.k(new Error(`An image named \"${e}\" already exists.`)));this.imageManager.addImage(e,i),this._afterImageUpdated(e);}updateImage(e,t){this.imageManager.updateImage(e,t);}getImage(e){return this.imageManager.getImage(e)}removeImage(e){if(!this.getImage(e))return this.fire(new t.k(new Error(`An image named \"${e}\" does not exist.`)));this.imageManager.removeImage(e),this._afterImageUpdated(e);}_afterImageUpdated(e){this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.dispatcher.broadcast(\"SI\",this._availableImages),this.fire(new t.l(\"data\",{dataType:\"style\"}));}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(e,i,o={}){if(this._checkLoaded(),void 0!==this.sourceCaches[e])throw new Error(`Source \"${e}\" already exists.`);if(!i.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(i).join(\", \")}.`);if([\"vector\",\"raster\",\"geojson\",\"video\",\"image\"].indexOf(i.type)>=0&&this._validate(t.z.source,`sources.${e}`,i,null,o))return;this.map&&this.map._collectResourceTiming&&(i.collectResourceTiming=!0);const a=this.sourceCaches[e]=new Pe(e,i,this.dispatcher);a.style=this,a.setEventedParent(this,(()=>({isSourceLoaded:a.loaded(),source:a.serialize(),sourceId:e}))),a.onAdd(this.map),this._changed=!0;}removeSource(e){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error(\"There is no source with this ID\");for(const i in this._layers)if(this._layers[i].source===e)return this.fire(new t.k(new Error(`Source \"${e}\" cannot be removed while layer \"${i}\" is using it.`)));const i=this.sourceCaches[e];delete this.sourceCaches[e],delete this._updatedSources[e],i.fire(new t.l(\"data\",{sourceDataType:\"metadata\",dataType:\"source\",sourceId:e})),i.setEventedParent(null),i.onRemove(this.map),this._changed=!0;}setGeoJSONSourceData(e,t){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error(`There is no source with this ID=${e}`);const i=this.sourceCaches[e].getSource();if(\"geojson\"!==i.type)throw new Error(`geojsonSource.type is ${i.type}, which is !== 'geojson`);i.setData(t),this._changed=!0;}getSource(e){return this.sourceCaches[e]&&this.sourceCaches[e].getSource()}addLayer(e,i,o={}){this._checkLoaded();const a=e.id;if(this.getLayer(a))return void this.fire(new t.k(new Error(`Layer \"${a}\" already exists on this map.`)));let r;if(\"custom\"===e.type){if(Pi(this,t.bN(e)))return;r=t.bJ(e,this._globalState);}else {if(\"source\"in e&&\"object\"==typeof e.source&&(this.addSource(a,e.source),e=t.bL(e),e=t.e(e,{source:a})),this._validate(t.z.layer,`layers.${a}`,e,{arrayIndex:-1},o))return;r=t.bJ(e,this._globalState),this._validateLayer(r),r.setEventedParent(this,{layer:{id:a}});}const s=i?this._order.indexOf(i):this._order.length;if(i&&-1===s)this.fire(new t.k(new Error(`Cannot add layer \"${a}\" before non-existing layer \"${i}\".`)));else {if(this._order.splice(s,0,a),this._layerOrderChanged=!0,this._layers[a]=r,this._removedLayers[a]&&r.source&&\"custom\"!==r.type){const e=this._removedLayers[a];delete this._removedLayers[a],e.type!==r.type?this._updatedSources[r.source]=\"clear\":(this._updatedSources[r.source]=\"reload\",this.sourceCaches[r.source].pause());}this._updateLayer(r),r.onAdd&&r.onAdd(this.map);}}moveLayer(e,i){if(this._checkLoaded(),this._changed=!0,!this._layers[e])return void this.fire(new t.k(new Error(`The layer '${e}' does not exist in the map's style and cannot be moved.`)));if(e===i)return;const o=this._order.indexOf(e);this._order.splice(o,1);const a=i?this._order.indexOf(i):this._order.length;i&&-1===a?this.fire(new t.k(new Error(`Cannot move layer \"${e}\" before non-existing layer \"${i}\".`))):(this._order.splice(a,0,e),this._layerOrderChanged=!0);}removeLayer(e){this._checkLoaded();const i=this._layers[e];if(!i)return void this.fire(new t.k(new Error(`Cannot remove non-existing layer \"${e}\".`)));i.setEventedParent(null);const o=this._order.indexOf(e);this._order.splice(o,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=i,delete this._layers[e],this._serializedLayers&&delete this._serializedLayers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],i.onRemove&&i.onRemove(this.map);}getLayer(e){return this._layers[e]}getLayersOrder(){return [...this._order]}hasLayer(e){return e in this._layers}setLayerZoomRange(e,i,o){this._checkLoaded();const a=this.getLayer(e);a?a.minzoom===i&&a.maxzoom===o||(null!=i&&(a.minzoom=i),null!=o&&(a.maxzoom=o),this._updateLayer(a)):this.fire(new t.k(new Error(`Cannot set the zoom range of non-existing layer \"${e}\".`)));}setFilter(e,i,o={}){this._checkLoaded();const a=this.getLayer(e);if(a){if(!t.bH(a.filter,i))return null==i?(a.setFilter(void 0),void this._updateLayer(a)):void(this._validate(t.z.filter,`layers.${a.id}.filter`,i,null,o)||(a.setFilter(t.bL(i)),this._updateLayer(a)))}else this.fire(new t.k(new Error(`Cannot filter non-existing layer \"${e}\".`)));}getFilter(e){return t.bL(this.getLayer(e).filter)}setLayoutProperty(e,i,o,a={}){this._checkLoaded();const r=this.getLayer(e);r?t.bH(r.getLayoutProperty(i),o)||(r.setLayoutProperty(i,o,a),this._updateLayer(r)):this.fire(new t.k(new Error(`Cannot style non-existing layer \"${e}\".`)));}getLayoutProperty(e,i){const o=this.getLayer(e);if(o)return o.getLayoutProperty(i);this.fire(new t.k(new Error(`Cannot get style of non-existing layer \"${e}\".`)));}setPaintProperty(e,i,o,a={}){this._checkLoaded();const r=this.getLayer(e);r?t.bH(r.getPaintProperty(i),o)||this._updatePaintProperty(r,i,o,a):this.fire(new t.k(new Error(`Cannot style non-existing layer \"${e}\".`)));}_updatePaintProperty(e,i,o,a={}){e.setPaintProperty(i,o,a)&&this._updateLayer(e),t.bK(e)&&\"raster-fade-duration\"===i&&this.sourceCaches[e.source].setRasterFadeDuration(o),this._changed=!0,this._updatedPaintProps[e.id]=!0,this._serializedLayers=null;}getPaintProperty(e,t){return this.getLayer(e).getPaintProperty(t)}setFeatureState(e,i){this._checkLoaded();const o=e.source,a=e.sourceLayer,r=this.sourceCaches[o];if(void 0===r)return void this.fire(new t.k(new Error(`The source '${o}' does not exist in the map's style.`)));const s=r.getSource().type;\"geojson\"===s&&a?this.fire(new t.k(new Error(\"GeoJSON sources cannot have a sourceLayer parameter.\"))):\"vector\"!==s||a?(void 0===e.id&&this.fire(new t.k(new Error(\"The feature id parameter must be provided.\"))),r.setFeatureState(a,e.id,i)):this.fire(new t.k(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));}removeFeatureState(e,i){this._checkLoaded();const o=e.source,a=this.sourceCaches[o];if(void 0===a)return void this.fire(new t.k(new Error(`The source '${o}' does not exist in the map's style.`)));const r=a.getSource().type,s=\"vector\"===r?e.sourceLayer:void 0;\"vector\"!==r||s?i&&\"string\"!=typeof e.id&&\"number\"!=typeof e.id?this.fire(new t.k(new Error(\"A feature id is required to remove its specific state property.\"))):a.removeFeatureState(s,e.id,i):this.fire(new t.k(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));}getFeatureState(e){this._checkLoaded();const i=e.source,o=e.sourceLayer,a=this.sourceCaches[i];if(void 0!==a)return \"vector\"!==a.getSource().type||o?(void 0===e.id&&this.fire(new t.k(new Error(\"The feature id parameter must be provided.\"))),a.getFeatureState(o,e.id)):void this.fire(new t.k(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));this.fire(new t.k(new Error(`The source '${i}' does not exist in the map's style.`)));}getTransition(){return t.e({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){if(!this._loaded)return;const e=t.bO(this.sourceCaches,(e=>e.serialize())),i=this._serializeByIds(this._order,!0),o=this.map.getTerrain()||void 0,a=this.stylesheet;return t.bP({version:a.version,name:a.name,metadata:a.metadata,light:a.light,sky:a.sky,center:a.center,zoom:a.zoom,bearing:a.bearing,pitch:a.pitch,sprite:a.sprite,glyphs:a.glyphs,transition:a.transition,projection:a.projection,sources:e,layers:i,terrain:o},(e=>void 0!==e))}_updateLayer(e){this._updatedLayers[e.id]=!0,e.source&&!this._updatedSources[e.source]&&\"raster\"!==this.sourceCaches[e.source].getSource().type&&(this._updatedSources[e.source]=\"reload\",this.sourceCaches[e.source].pause()),this._serializedLayers=null,this._changed=!0;}_flattenAndSortRenderedFeatures(e){const t=e=>\"fill-extrusion\"===this._layers[e].type,i={},o=[];for(let a=this._order.length-1;a>=0;a--){const r=this._order[a];if(t(r)){i[r]=a;for(const t of e){const e=t[r];if(e)for(const t of e)o.push(t);}}}o.sort(((e,t)=>t.intersectionZ-e.intersectionZ));const a=[];for(let r=this._order.length-1;r>=0;r--){const s=this._order[r];if(t(s))for(let e=o.length-1;e>=0;e--){const t=o[e].feature;if(i[t.layer.id]<r)break;a.push(t),o.pop();}else for(const t of e){const e=t[s];if(e)for(const t of e)a.push(t.feature);}}return a}queryRenderedFeatures(e,i,o){i&&i.filter&&this._validate(t.z.filter,\"queryRenderedFeatures.filter\",i.filter,null,i);const a={};if(i&&i.layers){if(!(Array.isArray(i.layers)||i.layers instanceof Set))return this.fire(new t.k(new Error(\"parameters.layers must be an Array or a Set of strings\"))),[];for(const e of i.layers){const i=this._layers[e];if(!i)return this.fire(new t.k(new Error(`The layer '${e}' does not exist in the map's style and cannot be queried for features.`))),[];a[i.source]=!0;}}const r=[];i.availableImages=this._availableImages;const s=this._serializedAllLayers(),n=i.layers instanceof Set?i.layers:Array.isArray(i.layers)?new Set(i.layers):null,l=Object.assign(Object.assign({},i),{layers:n,globalState:this._globalState});for(const t in this.sourceCaches)i.layers&&!a[t]||r.push(Z(this.sourceCaches[t],this._layers,s,e,l,o,this.map.terrain?(e,t,i)=>this.map.terrain.getElevation(e,t,i):void 0));return this.placement&&r.push(function(e,t,i,o,a,r,s){const n={},l=r.queryRenderedSymbols(o),c=[];for(const e of Object.keys(l).map(Number))c.push(s[e]);c.sort(U);for(const i of c){const o=i.featureIndex.lookupSymbolFeatures(l[i.bucketInstanceId],t,i.bucketIndex,i.sourceLayerIndex,{filterSpec:a.filter,globalState:a.globalState},a.layers,a.availableImages,e);for(const e in o){const t=n[e]=n[e]||[],a=o[e];a.sort(((e,t)=>{const o=i.featureSortOrder;if(o){const i=o.indexOf(e.featureIndex);return o.indexOf(t.featureIndex)-i}return t.featureIndex-e.featureIndex}));for(const e of a)t.push(e);}}return function(e,t,i){for(const o in e)for(const a of e[o])G(a,i[t[o].source]);return e}(n,e,i)}(this._layers,s,this.sourceCaches,e,l,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(r)}querySourceFeatures(e,i){(null==i?void 0:i.filter)&&this._validate(t.z.filter,\"querySourceFeatures.filter\",i.filter,null,i);const o=this.sourceCaches[e];return o?function(e,t){const i=e.getRenderableIds().map((t=>e.getTileByID(t))),o=[],a={};for(let e=0;e<i.length;e++){const r=i[e],s=r.tileID.canonical.key;a[s]||(a[s]=!0,r.querySourceFeatures(o,t));}return o}(o,i?Object.assign(Object.assign({},i),{globalState:this._globalState}):{globalState:this._globalState}):[]}getLight(){return this.light.getLight()}setLight(e,i={}){this._checkLoaded();const o=this.light.getLight();let a=!1;for(const i in e)if(!t.bH(e[i],o[i])){a=!0;break}if(!a)return;const r={now:l(),transition:t.e({duration:300,delay:0},this.stylesheet.transition)};this.light.setLight(e,i),this.light.updateTransitions(r);}getProjection(){var e;return null===(e=this.stylesheet)||void 0===e?void 0:e.projection}setProjection(e){if(this._checkLoaded(),this.projection){if(this.projection.name===e.type)return;this.projection.destroy(),delete this.projection;}this.stylesheet.projection=e,this._setProjectionInternal(e.type);}getSky(){var e;return null===(e=this.stylesheet)||void 0===e?void 0:e.sky}setSky(e,i={}){this._checkLoaded();const o=this.getSky();let a=!1;if(!e&&!o)return;if(e&&!o)a=!0;else if(!e&&o)a=!0;else for(const i in e)if(!t.bH(e[i],o[i])){a=!0;break}if(!a)return;const r={now:l(),transition:t.e({duration:300,delay:0},this.stylesheet.transition)};this.stylesheet.sky=e,this.sky.setSky(e,i),this.sky.updateTransitions(r);}_setProjectionInternal(e){const i=function(e,i){const o={constrain:i};if(Array.isArray(e)){const t=new oi({type:e});return {projection:t,transform:new yi(o),cameraHelper:new Ti(t)}}switch(e){case \"mercator\":return {projection:new Rt,transform:new Ot(o),cameraHelper:new Ut};case \"globe\":{const e=new oi({type:[\"interpolate\",[\"linear\"],[\"zoom\"],11,\"vertical-perspective\",12,\"mercator\"]});return {projection:e,transform:new yi(o),cameraHelper:new Ti(e)}}case \"vertical-perspective\":return {projection:new ti,transform:new bi(o),cameraHelper:new wi};default:return t.w(`Unknown projection name: ${e}. Falling back to mercator projection.`),{projection:new Rt,transform:new Ot(o),cameraHelper:new Ut}}}(e,this.map.transformConstrain);this.projection=i.projection,this.map.migrateProjection(i.transform,i.cameraHelper);for(const e in this.sourceCaches)this.sourceCaches[e].reload();}_validate(e,i,o,a,r={}){return (!r||!1!==r.validate)&&Pi(this,e.call(t.z,t.e({key:i,style:this.serialize(),value:o,styleSpec:t.v},a)))}_remove(e=!0){this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._loadStyleRequest&&(this._loadStyleRequest.abort(),this._loadStyleRequest=null),this._spriteRequest&&(this._spriteRequest.abort(),this._spriteRequest=null),re().off(ie,this._rtlPluginLoaded);for(const e in this._layers)this._layers[e].setEventedParent(null);for(const e in this.sourceCaches){const t=this.sourceCaches[e];t.setEventedParent(null),t.onRemove(this.map);}this.imageManager.setEventedParent(null),this.setEventedParent(null),e&&this.dispatcher.broadcast(\"RM\",void 0),this.dispatcher.remove(e);}_clearSource(e){this.sourceCaches[e].clearTiles();}_reloadSource(e){this.sourceCaches[e].resume(),this.sourceCaches[e].reload();}_updateSources(e){for(const t in this.sourceCaches)this.sourceCaches[t].update(e,this.map.terrain);}_generateCollisionBoxes(){for(const e in this.sourceCaches)this._reloadSource(e);}_updatePlacement(e,t,i,o,a=!1){let r=!1,s=!1;const n={};for(const t of this._order){const i=this._layers[t];if(\"symbol\"!==i.type)continue;if(!n[i.source]){const e=this.sourceCaches[i.source];n[i.source]=e.getRenderableIds(!0).map((t=>e.getTileByID(t))).sort(((e,t)=>t.tileID.overscaledZ-e.tileID.overscaledZ||(e.tileID.isLessThan(t.tileID)?-1:1)));}const o=this.crossTileSymbolIndex.addLayer(i,n[i.source],e.center.lng);r=r||o;}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((a=a||this._layerOrderChanged||0===i)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(l(),e.zoom))&&(this.pauseablePlacement=new gt(e,this.map.terrain,this._order,a,t,i,o,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,n),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(l()),s=!0),r&&this.pauseablePlacement.placement.setStale()),s||r)for(const e of this._order){const t=this._layers[e];\"symbol\"===t.type&&this.placement.updateLayerOpacities(t,n[t.source]);}return !this.pauseablePlacement.isDone()||this.placement.hasTransitions(l())}_releaseSymbolFadeTiles(){for(const e in this.sourceCaches)this.sourceCaches[e].releaseSymbolFadeTiles();}getImages(e,i){return t._(this,void 0,void 0,(function*(){const e=yield this.imageManager.getImages(i.icons);this._updateTilesForChangedImages();const t=this.sourceCaches[i.source];return t&&t.setDependencies(i.tileID.key,i.type,i.icons),e}))}getGlyphs(e,i){return t._(this,void 0,void 0,(function*(){const e=yield this.glyphManager.getGlyphs(i.stacks),t=this.sourceCaches[i.source];return t&&t.setDependencies(i.tileID.key,i.type,[\"\"]),e}))}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(e,i={}){this._checkLoaded(),e&&this._validate(t.z.glyphs,\"glyphs\",e,null,i)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=e,this.glyphManager.entries={},this.glyphManager.setURL(e));}getDashes(e,i){return t._(this,void 0,void 0,(function*(){const e={};for(const[t,o]of Object.entries(i.dashes))e[t]=this.lineAtlas.getDash(o.dasharray,o.round);return e}))}addSprite(e,i,o={},a){this._checkLoaded();const r=[{id:e,url:i}],s=[...v(this.stylesheet.sprite),...r];this._validate(t.z.sprite,\"sprite\",s,null,o)||(this.stylesheet.sprite=s,this._loadSprite(r,!0,a));}removeSprite(e){this._checkLoaded();const i=v(this.stylesheet.sprite);if(i.find((t=>t.id===e))){if(this._spritesImagesIds[e])for(const t of this._spritesImagesIds[e])this.imageManager.removeImage(t),this._changedImages[t]=!0;i.splice(i.findIndex((t=>t.id===e)),1),this.stylesheet.sprite=i.length>0?i:void 0,delete this._spritesImagesIds[e],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast(\"SI\",this._availableImages),this.fire(new t.l(\"data\",{dataType:\"style\"}));}else this.fire(new t.k(new Error(`Sprite \"${e}\" doesn't exists on this map.`)));}getSprite(){return v(this.stylesheet.sprite)}setSprite(e,i={},o){this._checkLoaded(),e&&this._validate(t.z.sprite,\"sprite\",e,null,i)||(this.stylesheet.sprite=e,e?this._loadSprite(e,!0,o):(this._unloadSprite(),o&&o(null)));}}var Mi=t.aJ([{name:\"a_pos\",type:\"Int16\",components:2},{name:\"a_texture_pos\",type:\"Int16\",components:2}]);class Si{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null;}bind(e,t,i,o,a,r,s,n,l){this.context=e;let c=this.boundPaintVertexBuffers.length!==o.length;for(let e=0;!c&&e<o.length;e++)this.boundPaintVertexBuffers[e]!==o[e]&&(c=!0);!this.vao||this.boundProgram!==t||this.boundLayoutVertexBuffer!==i||c||this.boundIndexBuffer!==a||this.boundVertexOffset!==r||this.boundDynamicVertexBuffer!==s||this.boundDynamicVertexBuffer2!==n||this.boundDynamicVertexBuffer3!==l?this.freshBind(t,i,o,a,r,s,n,l):(e.bindVertexArray.set(this.vao),s&&s.bind(),a&&a.dynamicDraw&&a.bind(),n&&n.bind(),l&&l.bind());}freshBind(e,t,i,o,a,r,s,n){const l=e.numAttributes,c=this.context,h=c.gl;this.vao&&this.destroy(),this.vao=c.createVertexArray(),c.bindVertexArray.set(this.vao),this.boundProgram=e,this.boundLayoutVertexBuffer=t,this.boundPaintVertexBuffers=i,this.boundIndexBuffer=o,this.boundVertexOffset=a,this.boundDynamicVertexBuffer=r,this.boundDynamicVertexBuffer2=s,this.boundDynamicVertexBuffer3=n,t.enableAttributes(h,e);for(const t of i)t.enableAttributes(h,e);r&&r.enableAttributes(h,e),s&&s.enableAttributes(h,e),n&&n.enableAttributes(h,e),t.bind(),t.setVertexAttribPointers(h,e,a);for(const t of i)t.bind(),t.setVertexAttribPointers(h,e,a);r&&(r.bind(),r.setVertexAttribPointers(h,e,a)),o&&o.bind(),s&&(s.bind(),s.setVertexAttribPointers(h,e,a)),n&&(n.bind(),n.setVertexAttribPointers(h,e,a)),c.currentNumAttributes=l;}destroy(){this.vao&&(this.context.deleteVertexArray(this.vao),this.vao=null);}}const Ei=(e,i,o,a,r)=>({u_texture:0,u_ele_delta:e,u_fog_matrix:i,u_fog_color:o?o.properties.get(\"fog-color\"):t.bf.white,u_fog_ground_blend:o?o.properties.get(\"fog-ground-blend\"):1,u_fog_ground_blend_opacity:r?0:o?o.calculateFogBlendOpacity(a):0,u_horizon_color:o?o.properties.get(\"horizon-color\"):t.bf.white,u_horizon_fog_blend:o?o.properties.get(\"horizon-fog-blend\"):1,u_is_globe_mode:r?1:0}),Ri={mainMatrix:\"u_projection_matrix\",tileMercatorCoords:\"u_projection_tile_mercator_coords\",clippingPlane:\"u_projection_clipping_plane\",projectionTransition:\"u_projection_transition\",fallbackMatrix:\"u_projection_fallback_matrix\"};function Di(e){const t=[];for(let i=0;i<e.length;i++){if(null===e[i])continue;const o=e[i].split(\" \");t.push(o.pop());}return t}class zi{constructor(e,i,o,a,r,s,n,l,c=[]){const h=e.gl;this.program=h.createProgram();const u=Di(i.staticAttributes),d=o?o.getBinderAttributes():[],_=u.concat(d),p=Pt.prelude.staticUniforms?Di(Pt.prelude.staticUniforms):[],m=n.staticUniforms?Di(n.staticUniforms):[],f=i.staticUniforms?Di(i.staticUniforms):[],g=o?o.getBinderUniforms():[],v=p.concat(m).concat(f).concat(g),x=[];for(const e of v)x.indexOf(e)<0&&x.push(e);const b=o?o.defines():[];Kt(h)&&b.unshift(\"#version 300 es\"),r&&b.push(\"#define OVERDRAW_INSPECTOR;\"),s&&b.push(\"#define TERRAIN3D;\"),l&&b.push(l),c&&b.push(...c);let y=b.concat(Pt.prelude.fragmentSource,n.fragmentSource,i.fragmentSource).join(\"\\n\"),w=b.concat(Pt.prelude.vertexSource,n.vertexSource,i.vertexSource).join(\"\\n\");Kt(h)||(y=function(e){return e.replace(/\\bin\\s/g,\"varying \").replace(\"out highp vec4 fragColor;\",\"\").replace(/fragColor/g,\"gl_FragColor\").replace(/texture\\(/g,\"texture2D(\")}(y),w=function(e){return e.replace(/\\bin\\s/g,\"attribute \").replace(/\\bout\\s/g,\"varying \").replace(/texture\\(/g,\"texture2D(\")}(w));const T=h.createShader(h.FRAGMENT_SHADER);if(h.isContextLost())return void(this.failedToCreate=!0);if(h.shaderSource(T,y),h.compileShader(T),!h.getShaderParameter(T,h.COMPILE_STATUS))throw new Error(`Could not compile fragment shader: ${h.getShaderInfoLog(T)}`);h.attachShader(this.program,T);const P=h.createShader(h.VERTEX_SHADER);if(h.isContextLost())return void(this.failedToCreate=!0);if(h.shaderSource(P,w),h.compileShader(P),!h.getShaderParameter(P,h.COMPILE_STATUS))throw new Error(`Could not compile vertex shader: ${h.getShaderInfoLog(P)}`);h.attachShader(this.program,P),this.attributes={};const C={};this.numAttributes=_.length;for(let e=0;e<this.numAttributes;e++)_[e]&&(h.bindAttribLocation(this.program,e,_[e]),this.attributes[_[e]]=e);if(h.linkProgram(this.program),!h.getProgramParameter(this.program,h.LINK_STATUS))throw new Error(`Program failed to link: ${h.getProgramInfoLog(this.program)}`);h.deleteShader(P),h.deleteShader(T);for(let e=0;e<x.length;e++){const t=x[e];if(t&&!C[t]){const e=h.getUniformLocation(this.program,t);e&&(C[t]=e);}}this.fixedUniforms=a(e,C),this.terrainUniforms=((e,i)=>({u_depth:new t.bQ(e,i.u_depth),u_terrain:new t.bQ(e,i.u_terrain),u_terrain_dim:new t.bg(e,i.u_terrain_dim),u_terrain_matrix:new t.bS(e,i.u_terrain_matrix),u_terrain_unpack:new t.bT(e,i.u_terrain_unpack),u_terrain_exaggeration:new t.bg(e,i.u_terrain_exaggeration)}))(e,C),this.projectionUniforms=((e,i)=>({u_projection_matrix:new t.bS(e,i.u_projection_matrix),u_projection_tile_mercator_coords:new t.bT(e,i.u_projection_tile_mercator_coords),u_projection_clipping_plane:new t.bT(e,i.u_projection_clipping_plane),u_projection_transition:new t.bg(e,i.u_projection_transition),u_projection_fallback_matrix:new t.bS(e,i.u_projection_fallback_matrix)}))(e,C),this.binderUniforms=o?o.getUniforms(e,C):[];}draw(e,t,i,o,a,r,s,n,l,c,h,u,d,_,p,m,f,g,v){const x=e.gl;if(this.failedToCreate)return;if(e.program.set(this.program),e.setDepthMode(i),e.setStencilMode(o),e.setColorMode(a),e.setCullFace(r),n){e.activeTexture.set(x.TEXTURE2),x.bindTexture(x.TEXTURE_2D,n.depthTexture),e.activeTexture.set(x.TEXTURE3),x.bindTexture(x.TEXTURE_2D,n.texture);for(const e in this.terrainUniforms)this.terrainUniforms[e].set(n[e]);}if(l)for(const e in l)this.projectionUniforms[Ri[e]].set(l[e]);if(s)for(const e in this.fixedUniforms)this.fixedUniforms[e].set(s[e]);m&&m.setUniforms(e,this.binderUniforms,_,{zoom:p});let b=0;switch(t){case x.LINES:b=2;break;case x.TRIANGLES:b=3;break;case x.LINE_STRIP:b=1;}for(const i of d.get()){const o=i.vaos||(i.vaos={});(o[c]||(o[c]=new Si)).bind(e,this,h,m?m.getPaintVertexBuffers():[],u,i.vertexOffset,f,g,v),x.drawElements(t,i.primitiveLength*b,x.UNSIGNED_SHORT,i.primitiveOffset*b*2);}}}function Ai(e,i,o){const a=1/t.aC(o,1,i.transform.tileZoom),r=Math.pow(2,o.tileID.overscaledZ),s=o.tileSize*Math.pow(2,i.transform.tileZoom)/r,n=s*(o.tileID.canonical.x+o.tileID.wrap*r),l=s*o.tileID.canonical.y;return {u_image:0,u_texsize:o.imageAtlasTexture.size,u_scale:[a,e.fromScale,e.toScale],u_fade:e.t,u_pixel_coord_upper:[n>>16,l>>16],u_pixel_coord_lower:[65535&n,65535&l]}}const Li=(e,i,o,a)=>{const r=e.style.light,s=r.properties.get(\"position\"),n=[s.x,s.y,s.z],l=t.bW();\"viewport\"===r.properties.get(\"anchor\")&&t.bX(l,e.transform.bearingInRadians),t.bY(n,n,l);const c=e.transform.transformLightDirection(n),h=r.properties.get(\"color\");return {u_lightpos:n,u_lightpos_globe:c,u_lightintensity:r.properties.get(\"intensity\"),u_lightcolor:[h.r,h.g,h.b],u_vertical_gradient:+i,u_opacity:o,u_fill_translate:a}},ki=(e,i,o,a,r,s,n)=>t.e(Li(e,i,o,a),Ai(s,e,n),{u_height_factor:-Math.pow(2,r.overscaledZ)/n.tileSize/8}),Fi=(e,i,o,a)=>t.e(Ai(i,e,o),{u_fill_translate:a}),Bi=(e,t)=>({u_world:e,u_fill_translate:t}),Oi=(e,i,o,a,r)=>t.e(Fi(e,i,o,r),{u_world:a}),ji=(e,i,o,a,r)=>{const s=e.transform;let n,l,c=0;if(\"map\"===o.paint.get(\"circle-pitch-alignment\")){const e=t.aC(i,1,s.zoom);n=!0,l=[e,e],c=e/(t.$*Math.pow(2,i.tileID.overscaledZ))*2*Math.PI*r;}else n=!1,l=s.pixelsToGLUnits;return {u_camera_to_center_distance:s.cameraToCenterDistance,u_scale_with_map:+(\"map\"===o.paint.get(\"circle-pitch-scale\")),u_pitch_with_map:+n,u_device_pixel_ratio:e.pixelRatio,u_extrude_scale:l,u_globe_extrude_scale:c,u_translate:a}},Ni=e=>({u_pixel_extrude_scale:[1/e.width,1/e.height]}),Zi=e=>({u_viewport_size:[e.width,e.height]}),Ui=(e,t=1)=>({u_color:e,u_overlay:0,u_overlay_scale:t}),Gi=(e,i,o,a)=>{const r=t.aC(e,1,i)/(t.$*Math.pow(2,e.tileID.overscaledZ))*2*Math.PI*a;return {u_extrude_scale:t.aC(e,1,i),u_intensity:o,u_globe_extrude_scale:r}},Vi=(e,i,o,a)=>{const r=t.L();t.bZ(r,0,e.width,e.height,0,0,1);const s=e.context.gl;return {u_matrix:r,u_world:[s.drawingBufferWidth,s.drawingBufferHeight],u_image:o,u_color_ramp:a,u_opacity:i.paint.get(\"heatmap-opacity\")}},$i=(e,t,i)=>{const o=i.paint.get(\"hillshade-accent-color\");let a;switch(i.paint.get(\"hillshade-method\")){case \"basic\":a=4;break;case \"combined\":a=1;break;case \"igor\":a=2;break;case \"multidirectional\":a=3;break;default:a=0;}const r=i.getIlluminationProperties();for(let t=0;t<r.directionRadians.length;t++)\"viewport\"===i.paint.get(\"hillshade-illumination-anchor\")&&(r.directionRadians[t]+=e.transform.bearingInRadians);return {u_image:0,u_latrange:qi(0,t.tileID),u_exaggeration:i.paint.get(\"hillshade-exaggeration\"),u_altitudes:r.altitudeRadians,u_azimuths:r.directionRadians,u_accent:o,u_method:a,u_highlights:r.highlightColor,u_shadows:r.shadowColor}},Wi=(e,i)=>{const o=i.stride,a=t.L();return t.bZ(a,0,t.$,-t.$,0,0,1),t.M(a,a,[0,-t.$,0]),{u_matrix:a,u_image:1,u_dimension:[o,o],u_zoom:e.overscaledZ,u_unpack:i.getUnpackVector()}};function qi(e,i){const o=Math.pow(2,i.canonical.z),a=i.canonical.y;return [new t.a1(0,a/o).toLngLat().lat,new t.a1(0,(a+1)/o).toLngLat().lat]}const Hi=(e,t,i=0)=>({u_image:0,u_unpack:t.getUnpackVector(),u_dimension:[t.stride,t.stride],u_elevation_stops:1,u_color_stops:4,u_color_ramp_size:i,u_opacity:e.paint.get(\"color-relief-opacity\")}),Xi=(e,i,o,a)=>{const r=e.transform;return {u_translation:to(e,i,o),u_ratio:a/t.aC(i,1,r.zoom),u_device_pixel_ratio:e.pixelRatio,u_units_to_pixels:[1/r.pixelsToGLUnits[0],1/r.pixelsToGLUnits[1]]}},Ki=(e,i,o,a,r)=>t.e(Xi(e,i,o,a),{u_image:0,u_image_height:r}),Qi=(e,i,o,a,r)=>{const s=e.transform,n=eo(i,s);return {u_translation:to(e,i,o),u_texsize:i.imageAtlasTexture.size,u_ratio:a/t.aC(i,1,s.zoom),u_device_pixel_ratio:e.pixelRatio,u_image:0,u_scale:[n,r.fromScale,r.toScale],u_fade:r.t,u_units_to_pixels:[1/s.pixelsToGLUnits[0],1/s.pixelsToGLUnits[1]]}},Yi=(e,i,o,a,r)=>{const s=eo(i,e.transform);return t.e(Xi(e,i,o,a),{u_tileratio:s,u_crossfade_from:r.fromScale,u_crossfade_to:r.toScale,u_image:0,u_mix:r.t,u_lineatlas_width:e.lineAtlas.width,u_lineatlas_height:e.lineAtlas.height})},Ji=(e,i,o,a,r,s)=>{const n=eo(i,e.transform);return t.e(Xi(e,i,o,a),{u_image:0,u_image_height:s,u_tileratio:n,u_crossfade_from:r.fromScale,u_crossfade_to:r.toScale,u_image_dash:1,u_mix:r.t,u_lineatlas_width:e.lineAtlas.width,u_lineatlas_height:e.lineAtlas.height})};function eo(e,i){return 1/t.aC(e,1,i.tileZoom)}function to(e,i,o){return t.aD(e.transform,i,o.paint.get(\"line-translate\"),o.paint.get(\"line-translate-anchor\"))}const io=(e,t,i,o,a)=>{return {u_tl_parent:e,u_scale_parent:t,u_buffer_scale:1,u_fade_t:i.mix,u_opacity:i.opacity*o.paint.get(\"raster-opacity\"),u_image0:0,u_image1:1,u_brightness_low:o.paint.get(\"raster-brightness-min\"),u_brightness_high:o.paint.get(\"raster-brightness-max\"),u_saturation_factor:(s=o.paint.get(\"raster-saturation\"),s>0?1-1/(1.001-s):-s),u_contrast_factor:(r=o.paint.get(\"raster-contrast\"),r>0?1/(1-r):1+r),u_spin_weights:oo(o.paint.get(\"raster-hue-rotate\")),u_coords_top:[a[0].x,a[0].y,a[1].x,a[1].y],u_coords_bottom:[a[3].x,a[3].y,a[2].x,a[2].y]};var r,s;};function oo(e){e*=Math.PI/180;const t=Math.sin(e),i=Math.cos(e);return [(2*i+1)/3,(-Math.sqrt(3)*t-i+1)/3,(Math.sqrt(3)*t-i+1)/3]}const ao=(e,t,i,o,a,r,s,n,l,c,h,u,d)=>{const _=s.transform;return {u_is_size_zoom_constant:+(\"constant\"===e||\"source\"===e),u_is_size_feature_constant:+(\"constant\"===e||\"camera\"===e),u_size_t:t?t.uSizeT:0,u_size:t?t.uSize:0,u_camera_to_center_distance:_.cameraToCenterDistance,u_pitch:_.pitch/360*2*Math.PI,u_rotate_symbol:+i,u_aspect_ratio:_.width/_.height,u_fade_change:s.options.fadeDuration?s.symbolFadeChange:1,u_label_plane_matrix:n,u_coord_matrix:l,u_is_text:+h,u_pitch_with_map:+o,u_is_along_line:a,u_is_variable_anchor:r,u_texsize:u,u_texture:0,u_translation:c,u_pitched_scale:d}},ro=(e,i,o,a,r,s,n,l,c,h,u,d,_,p)=>{const m=n.transform;return t.e(ao(e,i,o,a,r,s,n,l,c,h,u,d,p),{u_gamma_scale:a?Math.cos(m.pitch*Math.PI/180)*m.cameraToCenterDistance:1,u_device_pixel_ratio:n.pixelRatio,u_is_halo:1})},so=(e,i,o,a,r,s,n,l,c,h,u,d,_)=>t.e(ro(e,i,o,a,r,s,n,l,c,h,!0,u,0,_),{u_texsize_icon:d,u_texture_icon:1}),no=(e,t)=>({u_opacity:e,u_color:t}),lo=(e,i,o,a,r)=>t.e(function(e,i,o,a){const r=o.imageManager.getPattern(e.from.toString()),s=o.imageManager.getPattern(e.to.toString()),{width:n,height:l}=o.imageManager.getPixelSize(),c=Math.pow(2,a.tileID.overscaledZ),h=a.tileSize*Math.pow(2,o.transform.tileZoom)/c,u=h*(a.tileID.canonical.x+a.tileID.wrap*c),d=h*a.tileID.canonical.y;return {u_image:0,u_pattern_tl_a:r.tl,u_pattern_br_a:r.br,u_pattern_tl_b:s.tl,u_pattern_br_b:s.br,u_texsize:[n,l],u_mix:i.t,u_pattern_size_a:r.displaySize,u_pattern_size_b:s.displaySize,u_scale_a:i.fromScale,u_scale_b:i.toScale,u_tile_units_to_pixels:1/t.aC(a,1,o.transform.tileZoom),u_pixel_coord_upper:[u>>16,d>>16],u_pixel_coord_lower:[65535&u,65535&d]}}(o,r,i,a),{u_opacity:e}),co=(e,t)=>{},ho={fillExtrusion:(e,i)=>({u_lightpos:new t.bU(e,i.u_lightpos),u_lightpos_globe:new t.bU(e,i.u_lightpos_globe),u_lightintensity:new t.bg(e,i.u_lightintensity),u_lightcolor:new t.bU(e,i.u_lightcolor),u_vertical_gradient:new t.bg(e,i.u_vertical_gradient),u_opacity:new t.bg(e,i.u_opacity),u_fill_translate:new t.bV(e,i.u_fill_translate)}),fillExtrusionPattern:(e,i)=>({u_lightpos:new t.bU(e,i.u_lightpos),u_lightpos_globe:new t.bU(e,i.u_lightpos_globe),u_lightintensity:new t.bg(e,i.u_lightintensity),u_lightcolor:new t.bU(e,i.u_lightcolor),u_vertical_gradient:new t.bg(e,i.u_vertical_gradient),u_height_factor:new t.bg(e,i.u_height_factor),u_opacity:new t.bg(e,i.u_opacity),u_fill_translate:new t.bV(e,i.u_fill_translate),u_image:new t.bQ(e,i.u_image),u_texsize:new t.bV(e,i.u_texsize),u_pixel_coord_upper:new t.bV(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.bV(e,i.u_pixel_coord_lower),u_scale:new t.bU(e,i.u_scale),u_fade:new t.bg(e,i.u_fade)}),fill:(e,i)=>({u_fill_translate:new t.bV(e,i.u_fill_translate)}),fillPattern:(e,i)=>({u_image:new t.bQ(e,i.u_image),u_texsize:new t.bV(e,i.u_texsize),u_pixel_coord_upper:new t.bV(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.bV(e,i.u_pixel_coord_lower),u_scale:new t.bU(e,i.u_scale),u_fade:new t.bg(e,i.u_fade),u_fill_translate:new t.bV(e,i.u_fill_translate)}),fillOutline:(e,i)=>({u_world:new t.bV(e,i.u_world),u_fill_translate:new t.bV(e,i.u_fill_translate)}),fillOutlinePattern:(e,i)=>({u_world:new t.bV(e,i.u_world),u_image:new t.bQ(e,i.u_image),u_texsize:new t.bV(e,i.u_texsize),u_pixel_coord_upper:new t.bV(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.bV(e,i.u_pixel_coord_lower),u_scale:new t.bU(e,i.u_scale),u_fade:new t.bg(e,i.u_fade),u_fill_translate:new t.bV(e,i.u_fill_translate)}),circle:(e,i)=>({u_camera_to_center_distance:new t.bg(e,i.u_camera_to_center_distance),u_scale_with_map:new t.bQ(e,i.u_scale_with_map),u_pitch_with_map:new t.bQ(e,i.u_pitch_with_map),u_extrude_scale:new t.bV(e,i.u_extrude_scale),u_device_pixel_ratio:new t.bg(e,i.u_device_pixel_ratio),u_globe_extrude_scale:new t.bg(e,i.u_globe_extrude_scale),u_translate:new t.bV(e,i.u_translate)}),collisionBox:(e,i)=>({u_pixel_extrude_scale:new t.bV(e,i.u_pixel_extrude_scale)}),collisionCircle:(e,i)=>({u_viewport_size:new t.bV(e,i.u_viewport_size)}),debug:(e,i)=>({u_color:new t.bR(e,i.u_color),u_overlay:new t.bQ(e,i.u_overlay),u_overlay_scale:new t.bg(e,i.u_overlay_scale)}),depth:co,clippingMask:co,heatmap:(e,i)=>({u_extrude_scale:new t.bg(e,i.u_extrude_scale),u_intensity:new t.bg(e,i.u_intensity),u_globe_extrude_scale:new t.bg(e,i.u_globe_extrude_scale)}),heatmapTexture:(e,i)=>({u_matrix:new t.bS(e,i.u_matrix),u_world:new t.bV(e,i.u_world),u_image:new t.bQ(e,i.u_image),u_color_ramp:new t.bQ(e,i.u_color_ramp),u_opacity:new t.bg(e,i.u_opacity)}),hillshade:(e,i)=>({u_image:new t.bQ(e,i.u_image),u_latrange:new t.bV(e,i.u_latrange),u_exaggeration:new t.bg(e,i.u_exaggeration),u_altitudes:new t.b$(e,i.u_altitudes),u_azimuths:new t.b$(e,i.u_azimuths),u_accent:new t.bR(e,i.u_accent),u_method:new t.bQ(e,i.u_method),u_shadows:new t.b_(e,i.u_shadows),u_highlights:new t.b_(e,i.u_highlights)}),hillshadePrepare:(e,i)=>({u_matrix:new t.bS(e,i.u_matrix),u_image:new t.bQ(e,i.u_image),u_dimension:new t.bV(e,i.u_dimension),u_zoom:new t.bg(e,i.u_zoom),u_unpack:new t.bT(e,i.u_unpack)}),colorRelief:(e,i)=>({u_image:new t.bQ(e,i.u_image),u_unpack:new t.bT(e,i.u_unpack),u_dimension:new t.bV(e,i.u_dimension),u_elevation_stops:new t.bQ(e,i.u_elevation_stops),u_color_stops:new t.bQ(e,i.u_color_stops),u_color_ramp_size:new t.bQ(e,i.u_color_ramp_size),u_opacity:new t.bg(e,i.u_opacity)}),line:(e,i)=>({u_translation:new t.bV(e,i.u_translation),u_ratio:new t.bg(e,i.u_ratio),u_device_pixel_ratio:new t.bg(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.bV(e,i.u_units_to_pixels)}),lineGradient:(e,i)=>({u_translation:new t.bV(e,i.u_translation),u_ratio:new t.bg(e,i.u_ratio),u_device_pixel_ratio:new t.bg(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.bV(e,i.u_units_to_pixels),u_image:new t.bQ(e,i.u_image),u_image_height:new t.bg(e,i.u_image_height)}),linePattern:(e,i)=>({u_translation:new t.bV(e,i.u_translation),u_texsize:new t.bV(e,i.u_texsize),u_ratio:new t.bg(e,i.u_ratio),u_device_pixel_ratio:new t.bg(e,i.u_device_pixel_ratio),u_image:new t.bQ(e,i.u_image),u_units_to_pixels:new t.bV(e,i.u_units_to_pixels),u_scale:new t.bU(e,i.u_scale),u_fade:new t.bg(e,i.u_fade)}),lineSDF:(e,i)=>({u_translation:new t.bV(e,i.u_translation),u_ratio:new t.bg(e,i.u_ratio),u_device_pixel_ratio:new t.bg(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.bV(e,i.u_units_to_pixels),u_image:new t.bQ(e,i.u_image),u_mix:new t.bg(e,i.u_mix),u_tileratio:new t.bg(e,i.u_tileratio),u_crossfade_from:new t.bg(e,i.u_crossfade_from),u_crossfade_to:new t.bg(e,i.u_crossfade_to),u_lineatlas_width:new t.bg(e,i.u_lineatlas_width),u_lineatlas_height:new t.bg(e,i.u_lineatlas_height)}),lineGradientSDF:(e,i)=>({u_translation:new t.bV(e,i.u_translation),u_ratio:new t.bg(e,i.u_ratio),u_device_pixel_ratio:new t.bg(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.bV(e,i.u_units_to_pixels),u_image:new t.bQ(e,i.u_image),u_image_height:new t.bg(e,i.u_image_height),u_tileratio:new t.bg(e,i.u_tileratio),u_crossfade_from:new t.bg(e,i.u_crossfade_from),u_crossfade_to:new t.bg(e,i.u_crossfade_to),u_image_dash:new t.bQ(e,i.u_image_dash),u_mix:new t.bg(e,i.u_mix),u_lineatlas_width:new t.bg(e,i.u_lineatlas_width),u_lineatlas_height:new t.bg(e,i.u_lineatlas_height)}),raster:(e,i)=>({u_tl_parent:new t.bV(e,i.u_tl_parent),u_scale_parent:new t.bg(e,i.u_scale_parent),u_buffer_scale:new t.bg(e,i.u_buffer_scale),u_fade_t:new t.bg(e,i.u_fade_t),u_opacity:new t.bg(e,i.u_opacity),u_image0:new t.bQ(e,i.u_image0),u_image1:new t.bQ(e,i.u_image1),u_brightness_low:new t.bg(e,i.u_brightness_low),u_brightness_high:new t.bg(e,i.u_brightness_high),u_saturation_factor:new t.bg(e,i.u_saturation_factor),u_contrast_factor:new t.bg(e,i.u_contrast_factor),u_spin_weights:new t.bU(e,i.u_spin_weights),u_coords_top:new t.bT(e,i.u_coords_top),u_coords_bottom:new t.bT(e,i.u_coords_bottom)}),symbolIcon:(e,i)=>({u_is_size_zoom_constant:new t.bQ(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.bQ(e,i.u_is_size_feature_constant),u_size_t:new t.bg(e,i.u_size_t),u_size:new t.bg(e,i.u_size),u_camera_to_center_distance:new t.bg(e,i.u_camera_to_center_distance),u_pitch:new t.bg(e,i.u_pitch),u_rotate_symbol:new t.bQ(e,i.u_rotate_symbol),u_aspect_ratio:new t.bg(e,i.u_aspect_ratio),u_fade_change:new t.bg(e,i.u_fade_change),u_label_plane_matrix:new t.bS(e,i.u_label_plane_matrix),u_coord_matrix:new t.bS(e,i.u_coord_matrix),u_is_text:new t.bQ(e,i.u_is_text),u_pitch_with_map:new t.bQ(e,i.u_pitch_with_map),u_is_along_line:new t.bQ(e,i.u_is_along_line),u_is_variable_anchor:new t.bQ(e,i.u_is_variable_anchor),u_texsize:new t.bV(e,i.u_texsize),u_texture:new t.bQ(e,i.u_texture),u_translation:new t.bV(e,i.u_translation),u_pitched_scale:new t.bg(e,i.u_pitched_scale)}),symbolSDF:(e,i)=>({u_is_size_zoom_constant:new t.bQ(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.bQ(e,i.u_is_size_feature_constant),u_size_t:new t.bg(e,i.u_size_t),u_size:new t.bg(e,i.u_size),u_camera_to_center_distance:new t.bg(e,i.u_camera_to_center_distance),u_pitch:new t.bg(e,i.u_pitch),u_rotate_symbol:new t.bQ(e,i.u_rotate_symbol),u_aspect_ratio:new t.bg(e,i.u_aspect_ratio),u_fade_change:new t.bg(e,i.u_fade_change),u_label_plane_matrix:new t.bS(e,i.u_label_plane_matrix),u_coord_matrix:new t.bS(e,i.u_coord_matrix),u_is_text:new t.bQ(e,i.u_is_text),u_pitch_with_map:new t.bQ(e,i.u_pitch_with_map),u_is_along_line:new t.bQ(e,i.u_is_along_line),u_is_variable_anchor:new t.bQ(e,i.u_is_variable_anchor),u_texsize:new t.bV(e,i.u_texsize),u_texture:new t.bQ(e,i.u_texture),u_gamma_scale:new t.bg(e,i.u_gamma_scale),u_device_pixel_ratio:new t.bg(e,i.u_device_pixel_ratio),u_is_halo:new t.bQ(e,i.u_is_halo),u_translation:new t.bV(e,i.u_translation),u_pitched_scale:new t.bg(e,i.u_pitched_scale)}),symbolTextAndIcon:(e,i)=>({u_is_size_zoom_constant:new t.bQ(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.bQ(e,i.u_is_size_feature_constant),u_size_t:new t.bg(e,i.u_size_t),u_size:new t.bg(e,i.u_size),u_camera_to_center_distance:new t.bg(e,i.u_camera_to_center_distance),u_pitch:new t.bg(e,i.u_pitch),u_rotate_symbol:new t.bQ(e,i.u_rotate_symbol),u_aspect_ratio:new t.bg(e,i.u_aspect_ratio),u_fade_change:new t.bg(e,i.u_fade_change),u_label_plane_matrix:new t.bS(e,i.u_label_plane_matrix),u_coord_matrix:new t.bS(e,i.u_coord_matrix),u_is_text:new t.bQ(e,i.u_is_text),u_pitch_with_map:new t.bQ(e,i.u_pitch_with_map),u_is_along_line:new t.bQ(e,i.u_is_along_line),u_is_variable_anchor:new t.bQ(e,i.u_is_variable_anchor),u_texsize:new t.bV(e,i.u_texsize),u_texsize_icon:new t.bV(e,i.u_texsize_icon),u_texture:new t.bQ(e,i.u_texture),u_texture_icon:new t.bQ(e,i.u_texture_icon),u_gamma_scale:new t.bg(e,i.u_gamma_scale),u_device_pixel_ratio:new t.bg(e,i.u_device_pixel_ratio),u_is_halo:new t.bQ(e,i.u_is_halo),u_translation:new t.bV(e,i.u_translation),u_pitched_scale:new t.bg(e,i.u_pitched_scale)}),background:(e,i)=>({u_opacity:new t.bg(e,i.u_opacity),u_color:new t.bR(e,i.u_color)}),backgroundPattern:(e,i)=>({u_opacity:new t.bg(e,i.u_opacity),u_image:new t.bQ(e,i.u_image),u_pattern_tl_a:new t.bV(e,i.u_pattern_tl_a),u_pattern_br_a:new t.bV(e,i.u_pattern_br_a),u_pattern_tl_b:new t.bV(e,i.u_pattern_tl_b),u_pattern_br_b:new t.bV(e,i.u_pattern_br_b),u_texsize:new t.bV(e,i.u_texsize),u_mix:new t.bg(e,i.u_mix),u_pattern_size_a:new t.bV(e,i.u_pattern_size_a),u_pattern_size_b:new t.bV(e,i.u_pattern_size_b),u_scale_a:new t.bg(e,i.u_scale_a),u_scale_b:new t.bg(e,i.u_scale_b),u_pixel_coord_upper:new t.bV(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.bV(e,i.u_pixel_coord_lower),u_tile_units_to_pixels:new t.bg(e,i.u_tile_units_to_pixels)}),terrain:(e,i)=>({u_texture:new t.bQ(e,i.u_texture),u_ele_delta:new t.bg(e,i.u_ele_delta),u_fog_matrix:new t.bS(e,i.u_fog_matrix),u_fog_color:new t.bR(e,i.u_fog_color),u_fog_ground_blend:new t.bg(e,i.u_fog_ground_blend),u_fog_ground_blend_opacity:new t.bg(e,i.u_fog_ground_blend_opacity),u_horizon_color:new t.bR(e,i.u_horizon_color),u_horizon_fog_blend:new t.bg(e,i.u_horizon_fog_blend),u_is_globe_mode:new t.bg(e,i.u_is_globe_mode)}),terrainDepth:(e,i)=>({u_ele_delta:new t.bg(e,i.u_ele_delta)}),terrainCoords:(e,i)=>({u_texture:new t.bQ(e,i.u_texture),u_terrain_coords_id:new t.bg(e,i.u_terrain_coords_id),u_ele_delta:new t.bg(e,i.u_ele_delta)}),projectionErrorMeasurement:(e,i)=>({u_input:new t.bg(e,i.u_input),u_output_expected:new t.bg(e,i.u_output_expected)}),atmosphere:(e,i)=>({u_sun_pos:new t.bU(e,i.u_sun_pos),u_atmosphere_blend:new t.bg(e,i.u_atmosphere_blend),u_globe_position:new t.bU(e,i.u_globe_position),u_globe_radius:new t.bg(e,i.u_globe_radius),u_inv_proj_matrix:new t.bS(e,i.u_inv_proj_matrix)}),sky:(e,i)=>({u_sky_color:new t.bR(e,i.u_sky_color),u_horizon_color:new t.bR(e,i.u_horizon_color),u_horizon:new t.bV(e,i.u_horizon),u_horizon_normal:new t.bV(e,i.u_horizon_normal),u_sky_horizon_blend:new t.bg(e,i.u_sky_horizon_blend),u_sky_blend:new t.bg(e,i.u_sky_blend)})};class uo{constructor(e,t,i){this.context=e;const o=e.gl;this.buffer=o.createBuffer(),this.dynamicDraw=Boolean(i),this.context.unbindVAO(),e.bindElementBuffer.set(this.buffer),o.bufferData(o.ELEMENT_ARRAY_BUFFER,t.arrayBuffer,this.dynamicDraw?o.DYNAMIC_DRAW:o.STATIC_DRAW),this.dynamicDraw||delete t.arrayBuffer;}bind(){this.context.bindElementBuffer.set(this.buffer);}updateData(e){const t=this.context.gl;if(!this.dynamicDraw)throw new Error(\"Attempted to update data while not in dynamic mode.\");this.context.unbindVAO(),this.bind(),t.bufferSubData(t.ELEMENT_ARRAY_BUFFER,0,e.arrayBuffer);}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer);}}const _o={Int8:\"BYTE\",Uint8:\"UNSIGNED_BYTE\",Int16:\"SHORT\",Uint16:\"UNSIGNED_SHORT\",Int32:\"INT\",Uint32:\"UNSIGNED_INT\",Float32:\"FLOAT\"};class po{constructor(e,t,i,o){this.length=t.length,this.attributes=i,this.itemSize=t.bytesPerElement,this.dynamicDraw=o,this.context=e;const a=e.gl;this.buffer=a.createBuffer(),e.bindVertexBuffer.set(this.buffer),a.bufferData(a.ARRAY_BUFFER,t.arrayBuffer,this.dynamicDraw?a.DYNAMIC_DRAW:a.STATIC_DRAW),this.dynamicDraw||delete t.arrayBuffer;}bind(){this.context.bindVertexBuffer.set(this.buffer);}updateData(e){if(e.length!==this.length)throw new Error(`Length of new data is ${e.length}, which doesn't match current length of ${this.length}`);const t=this.context.gl;this.bind(),t.bufferSubData(t.ARRAY_BUFFER,0,e.arrayBuffer);}enableAttributes(e,t){for(let i=0;i<this.attributes.length;i++){const o=t.attributes[this.attributes[i].name];void 0!==o&&e.enableVertexAttribArray(o);}}setVertexAttribPointers(e,t,i){for(let o=0;o<this.attributes.length;o++){const a=this.attributes[o],r=t.attributes[a.name];void 0!==r&&e.vertexAttribPointer(r,a.components,e[_o[a.type]],!1,this.itemSize,a.offset+this.itemSize*(i||0));}}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer);}}class mo{constructor(e){this.gl=e.gl,this.default=this.getDefault(),this.current=this.default,this.dirty=!1;}get(){return this.current}set(e){}getDefault(){return this.default}setDefault(){this.set(this.default);}}class fo extends mo{getDefault(){return t.bf.transparent}set(e){const t=this.current;(e.r!==t.r||e.g!==t.g||e.b!==t.b||e.a!==t.a||this.dirty)&&(this.gl.clearColor(e.r,e.g,e.b,e.a),this.current=e,this.dirty=!1);}}class go extends mo{getDefault(){return 1}set(e){(e!==this.current||this.dirty)&&(this.gl.clearDepth(e),this.current=e,this.dirty=!1);}}class vo extends mo{getDefault(){return 0}set(e){(e!==this.current||this.dirty)&&(this.gl.clearStencil(e),this.current=e,this.dirty=!1);}}class xo extends mo{getDefault(){return [!0,!0,!0,!0]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||e[3]!==t[3]||this.dirty)&&(this.gl.colorMask(e[0],e[1],e[2],e[3]),this.current=e,this.dirty=!1);}}class bo extends mo{getDefault(){return !0}set(e){(e!==this.current||this.dirty)&&(this.gl.depthMask(e),this.current=e,this.dirty=!1);}}class yo extends mo{getDefault(){return 255}set(e){(e!==this.current||this.dirty)&&(this.gl.stencilMask(e),this.current=e,this.dirty=!1);}}class wo extends mo{getDefault(){return {func:this.gl.ALWAYS,ref:0,mask:255}}set(e){const t=this.current;(e.func!==t.func||e.ref!==t.ref||e.mask!==t.mask||this.dirty)&&(this.gl.stencilFunc(e.func,e.ref,e.mask),this.current=e,this.dirty=!1);}}class To extends mo{getDefault(){const e=this.gl;return [e.KEEP,e.KEEP,e.KEEP]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||this.dirty)&&(this.gl.stencilOp(e[0],e[1],e[2]),this.current=e,this.dirty=!1);}}class Po extends mo{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.STENCIL_TEST):t.disable(t.STENCIL_TEST),this.current=e,this.dirty=!1;}}class Co extends mo{getDefault(){return [0,1]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||this.dirty)&&(this.gl.depthRange(e[0],e[1]),this.current=e,this.dirty=!1);}}class Io extends mo{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.DEPTH_TEST):t.disable(t.DEPTH_TEST),this.current=e,this.dirty=!1;}}class Mo extends mo{getDefault(){return this.gl.LESS}set(e){(e!==this.current||this.dirty)&&(this.gl.depthFunc(e),this.current=e,this.dirty=!1);}}class So extends mo{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.BLEND):t.disable(t.BLEND),this.current=e,this.dirty=!1;}}class Eo extends mo{getDefault(){const e=this.gl;return [e.ONE,e.ZERO]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||this.dirty)&&(this.gl.blendFunc(e[0],e[1]),this.current=e,this.dirty=!1);}}class Ro extends mo{getDefault(){return t.bf.transparent}set(e){const t=this.current;(e.r!==t.r||e.g!==t.g||e.b!==t.b||e.a!==t.a||this.dirty)&&(this.gl.blendColor(e.r,e.g,e.b,e.a),this.current=e,this.dirty=!1);}}class Do extends mo{getDefault(){return this.gl.FUNC_ADD}set(e){(e!==this.current||this.dirty)&&(this.gl.blendEquation(e),this.current=e,this.dirty=!1);}}class zo extends mo{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.CULL_FACE):t.disable(t.CULL_FACE),this.current=e,this.dirty=!1;}}class Ao extends mo{getDefault(){return this.gl.BACK}set(e){(e!==this.current||this.dirty)&&(this.gl.cullFace(e),this.current=e,this.dirty=!1);}}class Lo extends mo{getDefault(){return this.gl.CCW}set(e){(e!==this.current||this.dirty)&&(this.gl.frontFace(e),this.current=e,this.dirty=!1);}}class ko extends mo{getDefault(){return null}set(e){(e!==this.current||this.dirty)&&(this.gl.useProgram(e),this.current=e,this.dirty=!1);}}class Fo extends mo{getDefault(){return this.gl.TEXTURE0}set(e){(e!==this.current||this.dirty)&&(this.gl.activeTexture(e),this.current=e,this.dirty=!1);}}class Bo extends mo{getDefault(){const e=this.gl;return [0,0,e.drawingBufferWidth,e.drawingBufferHeight]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||e[3]!==t[3]||this.dirty)&&(this.gl.viewport(e[0],e[1],e[2],e[3]),this.current=e,this.dirty=!1);}}class Oo extends mo{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindFramebuffer(t.FRAMEBUFFER,e),this.current=e,this.dirty=!1;}}class jo extends mo{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindRenderbuffer(t.RENDERBUFFER,e),this.current=e,this.dirty=!1;}}class No extends mo{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindTexture(t.TEXTURE_2D,e),this.current=e,this.dirty=!1;}}class Zo extends mo{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindBuffer(t.ARRAY_BUFFER,e),this.current=e,this.dirty=!1;}}class Uo extends mo{getDefault(){return null}set(e){const t=this.gl;t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,e),this.current=e,this.dirty=!1;}}class Go extends mo{getDefault(){return null}set(e){var t;if(e===this.current&&!this.dirty)return;const i=this.gl;Kt(i)?i.bindVertexArray(e):null===(t=i.getExtension(\"OES_vertex_array_object\"))||void 0===t||t.bindVertexArrayOES(e),this.current=e,this.dirty=!1;}}class Vo extends mo{getDefault(){return 4}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixelStorei(t.UNPACK_ALIGNMENT,e),this.current=e,this.dirty=!1;}}class $o extends mo{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e),this.current=e,this.dirty=!1;}}class Wo extends mo{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,e),this.current=e,this.dirty=!1;}}class qo extends mo{constructor(e,t){super(e),this.context=e,this.parent=t;}getDefault(){return null}}class Ho extends qo{setDirty(){this.dirty=!0;}set(e){if(e===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const t=this.gl;t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0),this.current=e,this.dirty=!1;}}class Xo extends qo{set(e){if(e===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const t=this.gl;t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.RENDERBUFFER,e),this.current=e,this.dirty=!1;}}class Ko extends qo{set(e){if(e===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const t=this.gl;t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_STENCIL_ATTACHMENT,t.RENDERBUFFER,e),this.current=e,this.dirty=!1;}}const Qo=\"Framebuffer is not complete\";class Yo{constructor(e,t,i,o,a){this.context=e,this.width=t,this.height=i;const r=e.gl,s=this.framebuffer=r.createFramebuffer();if(this.colorAttachment=new Ho(e,s),o)this.depthAttachment=a?new Ko(e,s):new Xo(e,s);else if(a)throw new Error(\"Stencil cannot be set without depth\");if(r.checkFramebufferStatus(r.FRAMEBUFFER)!==r.FRAMEBUFFER_COMPLETE)throw new Error(Qo)}destroy(){const e=this.context.gl,t=this.colorAttachment.get();if(t&&e.deleteTexture(t),this.depthAttachment){const t=this.depthAttachment.get();t&&e.deleteRenderbuffer(t);}e.deleteFramebuffer(this.framebuffer);}}class Jo{constructor(e){var t,i;if(this.gl=e,this.clearColor=new fo(this),this.clearDepth=new go(this),this.clearStencil=new vo(this),this.colorMask=new xo(this),this.depthMask=new bo(this),this.stencilMask=new yo(this),this.stencilFunc=new wo(this),this.stencilOp=new To(this),this.stencilTest=new Po(this),this.depthRange=new Co(this),this.depthTest=new Io(this),this.depthFunc=new Mo(this),this.blend=new So(this),this.blendFunc=new Eo(this),this.blendColor=new Ro(this),this.blendEquation=new Do(this),this.cullFace=new zo(this),this.cullFaceSide=new Ao(this),this.frontFace=new Lo(this),this.program=new ko(this),this.activeTexture=new Fo(this),this.viewport=new Bo(this),this.bindFramebuffer=new Oo(this),this.bindRenderbuffer=new jo(this),this.bindTexture=new No(this),this.bindVertexBuffer=new Zo(this),this.bindElementBuffer=new Uo(this),this.bindVertexArray=new Go(this),this.pixelStoreUnpack=new Vo(this),this.pixelStoreUnpackPremultiplyAlpha=new $o(this),this.pixelStoreUnpackFlipY=new Wo(this),this.extTextureFilterAnisotropic=e.getExtension(\"EXT_texture_filter_anisotropic\")||e.getExtension(\"MOZ_EXT_texture_filter_anisotropic\")||e.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\"),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=e.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),this.maxTextureSize=e.getParameter(e.MAX_TEXTURE_SIZE),Kt(e)){this.HALF_FLOAT=e.HALF_FLOAT;const o=e.getExtension(\"EXT_color_buffer_half_float\");this.RGBA16F=null!==(t=e.RGBA16F)&&void 0!==t?t:null==o?void 0:o.RGBA16F_EXT,this.RGB16F=null!==(i=e.RGB16F)&&void 0!==i?i:null==o?void 0:o.RGB16F_EXT,e.getExtension(\"EXT_color_buffer_float\");}else {e.getExtension(\"EXT_color_buffer_half_float\"),e.getExtension(\"OES_texture_half_float_linear\");const t=e.getExtension(\"OES_texture_half_float\");this.HALF_FLOAT=null==t?void 0:t.HALF_FLOAT_OES;}}setDefault(){this.unbindVAO(),this.clearColor.setDefault(),this.clearDepth.setDefault(),this.clearStencil.setDefault(),this.colorMask.setDefault(),this.depthMask.setDefault(),this.stencilMask.setDefault(),this.stencilFunc.setDefault(),this.stencilOp.setDefault(),this.stencilTest.setDefault(),this.depthRange.setDefault(),this.depthTest.setDefault(),this.depthFunc.setDefault(),this.blend.setDefault(),this.blendFunc.setDefault(),this.blendColor.setDefault(),this.blendEquation.setDefault(),this.cullFace.setDefault(),this.cullFaceSide.setDefault(),this.frontFace.setDefault(),this.program.setDefault(),this.activeTexture.setDefault(),this.bindFramebuffer.setDefault(),this.pixelStoreUnpack.setDefault(),this.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.pixelStoreUnpackFlipY.setDefault();}setDirty(){this.clearColor.dirty=!0,this.clearDepth.dirty=!0,this.clearStencil.dirty=!0,this.colorMask.dirty=!0,this.depthMask.dirty=!0,this.stencilMask.dirty=!0,this.stencilFunc.dirty=!0,this.stencilOp.dirty=!0,this.stencilTest.dirty=!0,this.depthRange.dirty=!0,this.depthTest.dirty=!0,this.depthFunc.dirty=!0,this.blend.dirty=!0,this.blendFunc.dirty=!0,this.blendColor.dirty=!0,this.blendEquation.dirty=!0,this.cullFace.dirty=!0,this.cullFaceSide.dirty=!0,this.frontFace.dirty=!0,this.program.dirty=!0,this.activeTexture.dirty=!0,this.viewport.dirty=!0,this.bindFramebuffer.dirty=!0,this.bindRenderbuffer.dirty=!0,this.bindTexture.dirty=!0,this.bindVertexBuffer.dirty=!0,this.bindElementBuffer.dirty=!0,this.bindVertexArray.dirty=!0,this.pixelStoreUnpack.dirty=!0,this.pixelStoreUnpackPremultiplyAlpha.dirty=!0,this.pixelStoreUnpackFlipY.dirty=!0;}createIndexBuffer(e,t){return new uo(this,e,t)}createVertexBuffer(e,t,i){return new po(this,e,t,i)}createRenderbuffer(e,t,i){const o=this.gl,a=o.createRenderbuffer();return this.bindRenderbuffer.set(a),o.renderbufferStorage(o.RENDERBUFFER,e,t,i),this.bindRenderbuffer.set(null),a}createFramebuffer(e,t,i,o){return new Yo(this,e,t,i,o)}clear({color:e,depth:t,stencil:i}){const o=this.gl;let a=0;e&&(a|=o.COLOR_BUFFER_BIT,this.clearColor.set(e),this.colorMask.set([!0,!0,!0,!0])),void 0!==t&&(a|=o.DEPTH_BUFFER_BIT,this.depthRange.set([0,1]),this.clearDepth.set(t),this.depthMask.set(!0)),void 0!==i&&(a|=o.STENCIL_BUFFER_BIT,this.clearStencil.set(i),this.stencilMask.set(255)),o.clear(a);}setCullFace(e){!1===e.enable?this.cullFace.set(!1):(this.cullFace.set(!0),this.cullFaceSide.set(e.mode),this.frontFace.set(e.frontFace));}setDepthMode(e){e.func!==this.gl.ALWAYS||e.mask?(this.depthTest.set(!0),this.depthFunc.set(e.func),this.depthMask.set(e.mask),this.depthRange.set(e.range)):this.depthTest.set(!1);}setStencilMode(e){e.test.func!==this.gl.ALWAYS||e.mask?(this.stencilTest.set(!0),this.stencilMask.set(e.mask),this.stencilOp.set([e.fail,e.depthFail,e.pass]),this.stencilFunc.set({func:e.test.func,ref:e.ref,mask:e.test.mask})):this.stencilTest.set(!1);}setColorMode(e){t.bH(e.blendFunction,Gt.Replace)?this.blend.set(!1):(this.blend.set(!0),this.blendFunc.set(e.blendFunction),this.blendColor.set(e.blendColor)),this.colorMask.set(e.mask);}createVertexArray(){var e;return Kt(this.gl)?this.gl.createVertexArray():null===(e=this.gl.getExtension(\"OES_vertex_array_object\"))||void 0===e?void 0:e.createVertexArrayOES()}deleteVertexArray(e){var t;return Kt(this.gl)?this.gl.deleteVertexArray(e):null===(t=this.gl.getExtension(\"OES_vertex_array_object\"))||void 0===t?void 0:t.deleteVertexArrayOES(e)}unbindVAO(){this.bindVertexArray.set(null);}}let ea;function ta(e,i,o,a,r){const s=e.context,n=e.transform,l=s.gl,c=e.useProgram(\"collisionBox\"),h=[];let u=0,d=0;for(let t=0;t<a.length;t++){const _=a[t],p=i.getTile(_).getBucket(o);if(!p)continue;const m=r?p.textCollisionBox:p.iconCollisionBox,f=p.collisionCircleArray;f.length>0&&(h.push({circleArray:f,circleOffset:d,coord:_}),u+=f.length/4,d=u),m&&c.draw(s,l.LINES,Wt.disabled,Ht.disabled,e.colorModeForRenderPass(),$t.disabled,Ni(e.transform),e.style.map.terrain&&e.style.map.terrain.getTerrainData(_),n.getProjectionData({overscaledTileID:_,applyGlobeMatrix:!0,applyTerrainMatrix:!0}),o.id,m.layoutVertexBuffer,m.indexBuffer,m.segments,null,e.transform.zoom,null,null,m.collisionVertexBuffer);}if(!r||!h.length)return;const _=e.useProgram(\"collisionCircle\"),p=new t.c0;p.resize(4*u),p._trim();let m=0;for(const e of h)for(let t=0;t<e.circleArray.length/4;t++){const i=4*t,o=e.circleArray[i+0],a=e.circleArray[i+1],r=e.circleArray[i+2],s=e.circleArray[i+3];p.emplace(m++,o,a,r,s,0),p.emplace(m++,o,a,r,s,1),p.emplace(m++,o,a,r,s,2),p.emplace(m++,o,a,r,s,3);}(!ea||ea.length<2*u)&&(ea=function(e){const i=2*e,o=new t.c2;o.resize(i),o._trim();for(let e=0;e<i;e++){const t=6*e;o.uint16[t+0]=4*e+0,o.uint16[t+1]=4*e+1,o.uint16[t+2]=4*e+2,o.uint16[t+3]=4*e+2,o.uint16[t+4]=4*e+3,o.uint16[t+5]=4*e+0;}return o}(u));const f=s.createIndexBuffer(ea,!0),g=s.createVertexBuffer(p,t.c1.members,!0);for(const i of h){const a=Zi(e.transform);_.draw(s,l.TRIANGLES,Wt.disabled,Ht.disabled,e.colorModeForRenderPass(),$t.disabled,a,e.style.map.terrain&&e.style.map.terrain.getTerrainData(i.coord),null,o.id,g,f,t.aM.simpleSegment(0,2*i.circleOffset,i.circleArray.length,i.circleArray.length/2),null,e.transform.zoom,null,null,null);}g.destroy(),f.destroy();}const ia=t.ai(new Float32Array(16));function oa(e,i,o,a,r,s){const{horizontalAlign:n,verticalAlign:l}=t.aH(e);return new t.P((-(n-.5)*i/r+a[0])*s,(-(l-.5)*o/r+a[1])*s)}function aa(e,i,o,a,r,s){const n=i.tileAnchorPoint.add(new t.P(i.translation[0],i.translation[1]));if(i.pitchWithMap){let e=a.mult(s);o||(e=e.rotate(-r));const t=n.add(e);return Ae(t.x,t.y,i.pitchedLabelPlaneMatrix,i.getElevation).point}if(o){const t=Ue(i.tileAnchorPoint.x+1,i.tileAnchorPoint.y,i).point.sub(e),o=Math.atan(t.y/t.x)+(t.x<0?Math.PI:0);return e.add(a.rotate(o))}return e.add(a)}function ra(e,i,o,a,r,s,n,l,c,h,u,d){const _=e.text.placedSymbolArray,p=e.text.dynamicLayoutVertexArray,m=e.icon.dynamicLayoutVertexArray,f={};p.clear();for(let m=0;m<_.length;m++){const g=_.get(m),v=g.hidden||!g.crossTileID||e.allowVerticalPlacement&&!g.placedOrientation?null:a[g.crossTileID];if(v){const a=new t.P(g.anchorX,g.anchorY),_={getElevation:d,width:r.width,height:r.height,pitchedLabelPlaneMatrix:s,pitchWithMap:o,transform:r,tileAnchorPoint:a,translation:h,unwrappedTileID:u},m=o?Ve(a.x,a.y,_):Ue(a.x,a.y,_),x=Le(r.cameraToCenterDistance,m.signedDistanceFromCamera);let b=t.ap(e.textSizeData,l,g)*x/t.aB;o&&(b*=e.tilePixelRatio/n);const{width:y,height:w,anchor:T,textOffset:P,textBoxScale:C}=v,I=oa(T,y,w,P,C,b),M=r.getPitchedTextCorrection(a.x+h[0],a.y+h[1],u),S=aa(m.point,_,i,I,-r.bearingInRadians,M),E=e.allowVerticalPlacement&&g.placedOrientation===t.ao.vertical?Math.PI/2:0;for(let e=0;e<g.numGlyphs;e++)t.av(p,S,E);c&&g.associatedIconIndex>=0&&(f[g.associatedIconIndex]={shiftedAnchor:S,angle:E});}else Xe(g.numGlyphs,p);}if(c){m.clear();const i=e.icon.placedSymbolArray;for(let e=0;e<i.length;e++){const o=i.get(e);if(o.hidden)Xe(o.numGlyphs,m);else {const i=f[e];if(i)for(let e=0;e<o.numGlyphs;e++)t.av(m,i.shiftedAnchor,i.angle);else Xe(o.numGlyphs,m);}}e.icon.dynamicLayoutVertexBuffer.updateData(m);}e.text.dynamicLayoutVertexBuffer.updateData(p);}function sa(e,t,i){return i.iconsInText&&t?\"symbolTextAndIcon\":e?\"symbolSDF\":\"symbolIcon\"}function na(e,i,o,a,r,s,n,l,c,h,u,d,_){const p=e.context,m=p.gl,f=e.transform,g=\"map\"===l,v=\"map\"===c,x=\"viewport\"!==l&&\"point\"!==o.layout.get(\"symbol-placement\"),b=g&&!v&&!x,y=!o.layout.get(\"symbol-sort-key\").isConstant();let w=!1;const T=e.getDepthModeForSublayer(0,Wt.ReadOnly),P=o._unevaluatedLayout.hasValue(\"text-variable-anchor\")||o._unevaluatedLayout.hasValue(\"text-variable-anchor-offset\"),C=[],I=f.getCircleRadiusCorrection();for(const l of a){const a=i.getTile(l),c=a.getBucket(o);if(!c)continue;const u=r?c.text:c.icon;if(!u||!u.segments.get().length||!u.hasVisibleVertices)continue;const d=u.programConfigurations.get(o.id),p=r||c.sdfIcons,T=r?c.textSizeData:c.iconSizeData,M=v||0!==f.pitch,S=e.useProgram(sa(p,r,c),d),E=t.an(T,f.zoom),R=e.style.map.terrain&&e.style.map.terrain.getTerrainData(l);let D,z,A,L,k=[0,0],F=null;if(r)z=a.glyphAtlasTexture,A=m.LINEAR,D=a.glyphAtlasTexture.size,c.iconsInText&&(k=a.imageAtlasTexture.size,F=a.imageAtlasTexture,L=M||e.options.rotating||e.options.zooming||\"composite\"===T.kind||\"camera\"===T.kind?m.LINEAR:m.NEAREST);else {const t=1!==o.layout.get(\"icon-size\").constantOr(0)||c.iconsNeedLinear;z=a.imageAtlasTexture,A=p||e.options.rotating||e.options.zooming||t||M?m.LINEAR:m.NEAREST,D=a.imageAtlasTexture.size;}const B=t.aC(a,1,e.transform.zoom),O=Re(g,e.transform,B),j=t.L();t.aq(j,O);const N=De(v,g,e.transform,B),Z=t.aD(f,a,s,n),U=f.getProjectionData({overscaledTileID:l,applyGlobeMatrix:!_,applyTerrainMatrix:!0}),G=P&&c.hasTextData(),V=\"none\"!==o.layout.get(\"icon-text-fit\")&&G&&c.hasIconData();if(x){const t=e.style.map.terrain?(t,i)=>e.style.map.terrain.getElevation(l,t,i):null,i=\"map\"===o.layout.get(\"text-rotation-alignment\");Fe(c,e,r,O,j,v,h,i,l.toUnwrapped(),f.width,f.height,Z,t);}const $=r&&P||V,W=x||$?ia:v?O:e.transform.clipSpaceToPixelsMatrix,q=p&&0!==o.paint.get(r?\"text-halo-width\":\"icon-halo-width\").constantOr(1);let H;H=p?c.iconsInText?so(T.kind,E,b,v,x,$,e,W,N,Z,D,k,I):ro(T.kind,E,b,v,x,$,e,W,N,Z,r,D,0,I):ao(T.kind,E,b,v,x,$,e,W,N,Z,r,D,I);const X={program:S,buffers:u,uniformValues:H,projectionData:U,atlasTexture:z,atlasTextureIcon:F,atlasInterpolation:A,atlasInterpolationIcon:L,isSDF:p,hasHalo:q};if(y&&c.canOverlap){w=!0;const e=u.segments.get();for(const i of e)C.push({segments:new t.aM([i]),sortKey:i.sortKey,state:X,terrainData:R});}else C.push({segments:u.segments,sortKey:0,state:X,terrainData:R});}w&&C.sort(((e,t)=>e.sortKey-t.sortKey));for(const t of C){const i=t.state;if(p.activeTexture.set(m.TEXTURE0),i.atlasTexture.bind(i.atlasInterpolation,m.CLAMP_TO_EDGE),i.atlasTextureIcon&&(p.activeTexture.set(m.TEXTURE1),i.atlasTextureIcon&&i.atlasTextureIcon.bind(i.atlasInterpolationIcon,m.CLAMP_TO_EDGE)),i.isSDF){const a=i.uniformValues;i.hasHalo&&(a.u_is_halo=1,la(i.buffers,t.segments,o,e,i.program,T,u,d,a,i.projectionData,t.terrainData)),a.u_is_halo=0;}la(i.buffers,t.segments,o,e,i.program,T,u,d,i.uniformValues,i.projectionData,t.terrainData);}}function la(e,t,i,o,a,r,s,n,l,c,h){const u=o.context;a.draw(u,u.gl.TRIANGLES,r,s,n,$t.backCCW,l,h,c,i.id,e.layoutVertexBuffer,e.indexBuffer,t,i.paint,o.transform.zoom,e.programConfigurations.get(i.id),e.dynamicLayoutVertexBuffer,e.opacityVertexBuffer);}function ca(e,i,o,a,r){const s=e.context,n=s.gl,l=Ht.disabled,c=new Gt([n.ONE,n.ONE],t.bf.transparent,[!0,!0,!0,!0]),h=i.getBucket(o);if(!h)return;const u=a.key;let d=o.heatmapFbos.get(u);d||(d=ua(s,i.tileSize,i.tileSize),o.heatmapFbos.set(u,d)),s.bindFramebuffer.set(d.framebuffer),s.viewport.set([0,0,i.tileSize,i.tileSize]),s.clear({color:t.bf.transparent});const _=h.programConfigurations.get(o.id),p=e.useProgram(\"heatmap\",_,!r),m=e.transform.getProjectionData({overscaledTileID:i.tileID,applyGlobeMatrix:!0,applyTerrainMatrix:!0}),f=e.style.map.terrain.getTerrainData(a);p.draw(s,n.TRIANGLES,Wt.disabled,l,c,$t.disabled,Gi(i,e.transform.zoom,o.paint.get(\"heatmap-intensity\"),1),f,m,o.id,h.layoutVertexBuffer,h.indexBuffer,h.segments,o.paint,e.transform.zoom,_);}function ha(e,t,i,o,a){const r=e.context,s=r.gl,n=e.transform;r.setColorMode(e.colorModeForRenderPass());const l=da(r,t),c=i.key,h=t.heatmapFbos.get(c);if(!h)return;r.activeTexture.set(s.TEXTURE0),s.bindTexture(s.TEXTURE_2D,h.colorAttachment.get()),r.activeTexture.set(s.TEXTURE1),l.bind(s.LINEAR,s.CLAMP_TO_EDGE);const u=n.getProjectionData({overscaledTileID:i,applyTerrainMatrix:a,applyGlobeMatrix:!o});e.useProgram(\"heatmapTexture\").draw(r,s.TRIANGLES,Wt.disabled,Ht.disabled,e.colorModeForRenderPass(),$t.disabled,Vi(e,t,0,1),null,u,t.id,e.rasterBoundsBuffer,e.quadTriangleIndexBuffer,e.rasterBoundsSegments,t.paint,n.zoom),h.destroy(),t.heatmapFbos.delete(c);}function ua(e,t,i){var o,a;const r=e.gl,s=r.createTexture();r.bindTexture(r.TEXTURE_2D,s),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR);const n=null!==(o=e.HALF_FLOAT)&&void 0!==o?o:r.UNSIGNED_BYTE,l=null!==(a=e.RGBA16F)&&void 0!==a?a:r.RGBA;r.texImage2D(r.TEXTURE_2D,0,l,t,i,0,r.RGBA,n,null);const c=e.createFramebuffer(t,i,!1,!1);return c.colorAttachment.set(s),c}function da(e,i){return i.colorRampTexture||(i.colorRampTexture=new t.T(e,i.colorRamp,e.gl.RGBA)),i.colorRampTexture}function _a(e,i,o,a,r,s,n,l){let c=256;if(r.stepInterpolant){const a=i.getSource().maxzoom,r=n.canonical.z===a?Math.ceil(1<<e.transform.maxZoom-n.canonical.z):1;c=t.ae(t.c4(s.maxLineLength/t.$*1024*r),256,o.maxTextureSize);}return l.gradient=t.c5({expression:r.gradientExpression(),evaluationKey:\"lineProgress\",resolution:c,image:l.gradient||void 0,clips:s.lineClipsArray}),l.texture?l.texture.update(l.gradient):l.texture=new t.T(o,l.gradient,a.RGBA),l.version=r.gradientVersion,l.texture}function pa(e,t,i,o,a){e.activeTexture.set(t.TEXTURE0),i.imageAtlasTexture.bind(t.LINEAR,t.CLAMP_TO_EDGE),o.updatePaintBuffers(a);}function ma(e,t,i,o,a,r){(a||e.lineAtlas.dirty)&&(t.activeTexture.set(i.TEXTURE0),e.lineAtlas.bind(t)),o.updatePaintBuffers(r);}function fa(e,t,i,o,a,r,s){const n=r.gradients[a.id];let l=n.texture;a.gradientVersion!==n.version&&(l=_a(e,t,i,o,a,r,s,n)),i.activeTexture.set(o.TEXTURE0),l.bind(a.stepInterpolant?o.NEAREST:o.LINEAR,o.CLAMP_TO_EDGE);}function ga(e,t,i,o,a,r,s,n,l){const c=r.gradients[a.id];let h=c.texture;a.gradientVersion!==c.version&&(h=_a(e,t,i,o,a,r,s,c)),i.activeTexture.set(o.TEXTURE0),h.bind(a.stepInterpolant?o.NEAREST:o.LINEAR,o.CLAMP_TO_EDGE),i.activeTexture.set(o.TEXTURE1),e.lineAtlas.bind(i),n.updatePaintBuffers(l);}function va(e,t,i,o,a){if(!i||!o||!o.imageAtlas)return;const r=o.imageAtlas.patternPositions;let s=r[i.to.toString()],n=r[i.from.toString()];if(!s&&n&&(s=n),!n&&s&&(n=s),!s||!n){const e=a.getPaintProperty(t);s=r[e],n=r[e];}s&&n&&e.setConstantPatternPositions(s,n);}function xa(e,i,o,a,r,s,n,l){const c=e.context.gl,h=\"fill-pattern\",u=o.paint.get(h),d=u&&u.constantOr(1),_=o.getCrossfadeParameters();let p,m,f,g,v;const x=e.transform,b=o.paint.get(\"fill-translate\"),y=o.paint.get(\"fill-translate-anchor\");n?(m=d&&!o.getPaintProperty(\"fill-outline-color\")?\"fillOutlinePattern\":\"fillOutline\",p=c.LINES):(m=d?\"fillPattern\":\"fill\",p=c.TRIANGLES);const w=u.constantOr(null);for(const u of a){const a=i.getTile(u);if(d&&!a.patternsLoaded())continue;const T=a.getBucket(o);if(!T)continue;const P=T.programConfigurations.get(o.id),C=e.useProgram(m,P),I=e.style.map.terrain&&e.style.map.terrain.getTerrainData(u);d&&(e.context.activeTexture.set(c.TEXTURE0),a.imageAtlasTexture.bind(c.LINEAR,c.CLAMP_TO_EDGE),P.updatePaintBuffers(_)),va(P,h,w,a,o);const M=x.getProjectionData({overscaledTileID:u,applyGlobeMatrix:!l,applyTerrainMatrix:!0}),S=t.aD(x,a,b,y);if(n){g=T.indexBuffer2,v=T.segments2;const t=[c.drawingBufferWidth,c.drawingBufferHeight];f=\"fillOutlinePattern\"===m&&d?Oi(e,_,a,t,S):Bi(t,S);}else g=T.indexBuffer,v=T.segments,f=d?Fi(e,_,a,S):{u_fill_translate:S};const E=e.stencilModeForClipping(u);C.draw(e.context,p,r,E,s,$t.backCCW,f,I,M,o.id,T.layoutVertexBuffer,g,v,o.paint,e.transform.zoom,P);}}function ba(e,i,o,a,r,s,n,l){const c=e.context,h=c.gl,u=\"fill-extrusion-pattern\",d=o.paint.get(u),_=d.constantOr(1),p=o.getCrossfadeParameters(),m=o.paint.get(\"fill-extrusion-opacity\"),f=d.constantOr(null),g=e.transform;for(const d of a){const a=i.getTile(d),v=a.getBucket(o);if(!v)continue;const x=e.style.map.terrain&&e.style.map.terrain.getTerrainData(d),b=v.programConfigurations.get(o.id),y=e.useProgram(_?\"fillExtrusionPattern\":\"fillExtrusion\",b);_&&(e.context.activeTexture.set(h.TEXTURE0),a.imageAtlasTexture.bind(h.LINEAR,h.CLAMP_TO_EDGE),b.updatePaintBuffers(p));const w=g.getProjectionData({overscaledTileID:d,applyGlobeMatrix:!l,applyTerrainMatrix:!0});va(b,u,f,a,o);const T=t.aD(g,a,o.paint.get(\"fill-extrusion-translate\"),o.paint.get(\"fill-extrusion-translate-anchor\")),P=o.paint.get(\"fill-extrusion-vertical-gradient\"),C=_?ki(e,P,m,T,d,p,a):Li(e,P,m,T);y.draw(c,c.gl.TRIANGLES,r,s,n,$t.backCCW,C,x,w,o.id,v.layoutVertexBuffer,v.indexBuffer,v.segments,o.paint,e.transform.zoom,b,e.style.map.terrain&&v.centroidVertexBuffer);}}function ya(e,t,i,o,a,r,s,n,l){var c;const h=e.style.projection,u=e.context,d=e.transform,_=u.gl,p=[`#define NUM_ILLUMINATION_SOURCES ${i.paint.get(\"hillshade-highlight-color\").values.length}`],m=e.useProgram(\"hillshade\",null,!1,p),f=!e.options.moving;for(const p of o){const o=t.getTile(p),g=o.fbo;if(!g)continue;const v=h.getMeshFromTileID(u,p.canonical,n,!0,\"raster\"),x=null===(c=e.style.map.terrain)||void 0===c?void 0:c.getTerrainData(p);u.activeTexture.set(_.TEXTURE0),_.bindTexture(_.TEXTURE_2D,g.colorAttachment.get());const b=d.getProjectionData({overscaledTileID:p,aligned:f,applyGlobeMatrix:!l,applyTerrainMatrix:!0});m.draw(u,_.TRIANGLES,r,a[p.overscaledZ],s,$t.backCCW,$i(e,o,i),x,b,i.id,v.vertexBuffer,v.indexBuffer,v.segments);}}function wa(e,i,o,a,r,s,n,l,c){var h;const u=e.style.projection,d=e.context,_=e.transform,p=d.gl,m=e.useProgram(\"colorRelief\"),f=!e.options.moving;let g=!0,v=0;for(const x of a){const a=i.getTile(x),b=a.dem;if(g){const e=p.getParameter(p.MAX_TEXTURE_SIZE),{elevationTexture:t,colorTexture:i}=o.getColorRampTextures(d,e,b.getUnpackVector());d.activeTexture.set(p.TEXTURE1),t.bind(p.NEAREST,p.CLAMP_TO_EDGE),d.activeTexture.set(p.TEXTURE4),i.bind(p.LINEAR,p.CLAMP_TO_EDGE),g=!1,v=t.size[0];}if(!b||!b.data)continue;const y=b.stride,w=b.getPixels();if(d.activeTexture.set(p.TEXTURE0),d.pixelStoreUnpackPremultiplyAlpha.set(!1),a.demTexture=a.demTexture||e.getTileTexture(y),a.demTexture){const e=a.demTexture;e.update(w,{premultiply:!1}),e.bind(p.LINEAR,p.CLAMP_TO_EDGE);}else a.demTexture=new t.T(d,w,p.RGBA,{premultiply:!1}),a.demTexture.bind(p.LINEAR,p.CLAMP_TO_EDGE);const T=u.getMeshFromTileID(d,x.canonical,l,!0,\"raster\"),P=null===(h=e.style.map.terrain)||void 0===h?void 0:h.getTerrainData(x),C=_.getProjectionData({overscaledTileID:x,aligned:f,applyGlobeMatrix:!c,applyTerrainMatrix:!0});m.draw(d,p.TRIANGLES,s,r[x.overscaledZ],n,$t.backCCW,Hi(o,a.dem,v),P,C,o.id,T.vertexBuffer,T.indexBuffer,T.segments);}}const Ta=[new t.P(0,0),new t.P(t.$,0),new t.P(t.$,t.$),new t.P(0,t.$)];function Pa(e,t,i,o,a,r,s,n,l=!1,c=!1){const h=o[o.length-1].overscaledZ,u=e.context,d=u.gl,_=e.useProgram(\"raster\"),p=e.transform,m=e.style.projection,f=e.colorModeForRenderPass(),g=!e.options.moving,v=i.paint.get(\"raster-opacity\"),x=i.paint.get(\"raster-resampling\"),b=i.paint.get(\"raster-fade-duration\"),y=!!e.style.map.terrain;for(const w of o){const o=e.getDepthModeForSublayer(w.overscaledZ-h,1===v?Wt.ReadWrite:Wt.ReadOnly,d.LESS),T=t.getTile(w),P=\"nearest\"===x?d.NEAREST:d.LINEAR;u.activeTexture.set(d.TEXTURE0),T.texture.bind(P,d.CLAMP_TO_EDGE,d.LINEAR_MIPMAP_NEAREST),u.activeTexture.set(d.TEXTURE1);const{parentTile:C,parentScaleBy:I,parentTopLeft:M,fadeValues:S}=Ca(T,t,b,y);T.fadeOpacity=S.tileOpacity,C?(C.fadeOpacity=S.parentTileOpacity,C.texture.bind(P,d.CLAMP_TO_EDGE,d.LINEAR_MIPMAP_NEAREST)):T.texture.bind(P,d.CLAMP_TO_EDGE,d.LINEAR_MIPMAP_NEAREST),T.texture.useMipmap&&u.extTextureFilterAnisotropic&&e.transform.pitch>20&&d.texParameterf(d.TEXTURE_2D,u.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,u.extTextureFilterAnisotropicMax);const E=e.style.map.terrain&&e.style.map.terrain.getTerrainData(w),R=p.getProjectionData({overscaledTileID:w,aligned:g,applyGlobeMatrix:!c,applyTerrainMatrix:!0}),D=io(M,I,S.fadeMix,i,n),z=m.getMeshFromTileID(u,w.canonical,r,s,\"raster\");_.draw(u,d.TRIANGLES,o,a?a[w.overscaledZ]:Ht.disabled,f,l?$t.frontCCW:$t.backCCW,D,E,R,i.id,z.vertexBuffer,z.indexBuffer,z.segments);}}function Ca(e,i,o,a){const r={parentTile:null,parentScaleBy:1,parentTopLeft:[0,0],fadeValues:{tileOpacity:1,parentTileOpacity:1,fadeMix:{opacity:1,mix:0}}};if(0===o||a)return r;if(e.fadingParentID){const a=i._getLoadedTile(e.fadingParentID);if(!a)return r;const s=Math.pow(2,a.tileID.overscaledZ-e.tileID.overscaledZ),n=[e.tileID.canonical.x*s%1,e.tileID.canonical.y*s%1],c=function(e,i,o){const a=l(),r=(a-i.timeAdded)/o,s=e.fadingDirection===ne.Incoming,n=t.ae((a-e.timeAdded)/o,0,1),c=t.ae(1-r,0,1),h=s?n:c;return {tileOpacity:h,parentTileOpacity:s?c:n,fadeMix:{opacity:1,mix:1-h}}}(e,a,o);return {parentTile:a,parentScaleBy:s,parentTopLeft:n,fadeValues:c}}if(e.selfFading){const i=function(e,i){const o=(l()-e.timeAdded)/i,a=t.ae(o,0,1);return {tileOpacity:a,fadeMix:{opacity:a,mix:0}}}(e,o);return {parentTile:null,parentScaleBy:1,parentTopLeft:[0,0],fadeValues:i}}return r}const Ia=new t.bf(1,0,0,1),Ma=new t.bf(0,1,0,1),Sa=new t.bf(0,0,1,1),Ea=new t.bf(1,0,1,1),Ra=new t.bf(0,1,1,1);function Da(e,t,i,o){Aa(e,0,t+i/2,e.transform.width,i,o);}function za(e,t,i,o){Aa(e,t-i/2,0,i,e.transform.height,o);}function Aa(e,t,i,o,a,r){const s=e.context,n=s.gl;n.enable(n.SCISSOR_TEST),n.scissor(t*e.pixelRatio,i*e.pixelRatio,o*e.pixelRatio,a*e.pixelRatio),s.clear({color:r}),n.disable(n.SCISSOR_TEST);}function La(e,i,o){const a=e.context,r=a.gl,s=e.useProgram(\"debug\"),n=Wt.disabled,l=Ht.disabled,c=e.colorModeForRenderPass(),h=\"$debug\",u=e.style.map.terrain&&e.style.map.terrain.getTerrainData(o);a.activeTexture.set(r.TEXTURE0);const d=i.getTileByID(o.key).latestRawTileData,_=Math.floor((d&&d.byteLength||0)/1024),p=i.getTile(o).tileSize,m=512/Math.min(p,512)*(o.overscaledZ/e.transform.zoom)*.5;let f=o.canonical.toString();o.overscaledZ!==o.canonical.z&&(f+=` => ${o.overscaledZ}`),function(e,t){e.initDebugOverlayCanvas();const i=e.debugOverlayCanvas,o=e.context.gl,a=e.debugOverlayCanvas.getContext(\"2d\");a.clearRect(0,0,i.width,i.height),a.shadowColor=\"white\",a.shadowBlur=2,a.lineWidth=1.5,a.strokeStyle=\"white\",a.textBaseline=\"top\",a.font=\"bold 36px Open Sans, sans-serif\",a.fillText(t,5,5),a.strokeText(t,5,5),e.debugOverlayTexture.update(i),e.debugOverlayTexture.bind(o.LINEAR,o.CLAMP_TO_EDGE);}(e,`${f} ${_}kB`);const g=e.transform.getProjectionData({overscaledTileID:o,applyGlobeMatrix:!0,applyTerrainMatrix:!0});s.draw(a,r.TRIANGLES,n,l,Gt.alphaBlended,$t.disabled,Ui(t.bf.transparent,m),null,g,h,e.debugBuffer,e.quadTriangleIndexBuffer,e.debugSegments),s.draw(a,r.LINE_STRIP,n,l,c,$t.disabled,Ui(t.bf.red),u,g,h,e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments);}function ka(e,t,i,o){const{isRenderingGlobe:a}=o,r=e.context,s=r.gl,n=e.transform,l=e.colorModeForRenderPass(),c=e.getDepthModeFor3D(),h=e.useProgram(\"terrain\");r.bindFramebuffer.set(null),r.viewport.set([0,0,e.width,e.height]);for(const o of i){const i=t.getTerrainMesh(o.tileID),u=e.renderToTexture.getTexture(o),d=t.getTerrainData(o.tileID);r.activeTexture.set(s.TEXTURE0),s.bindTexture(s.TEXTURE_2D,u.texture);const _=t.getMeshFrameDelta(n.zoom),p=n.calculateFogMatrix(o.tileID.toUnwrapped()),m=Ei(_,p,e.style.sky,n.pitch,a),f=n.getProjectionData({overscaledTileID:o.tileID,applyTerrainMatrix:!1,applyGlobeMatrix:!0});h.draw(r,s.TRIANGLES,c,Ht.disabled,l,$t.backCCW,m,d,f,\"terrain\",i.vertexBuffer,i.indexBuffer,i.segments);}}function Fa(e,i){if(!i.mesh){const o=new t.aL;o.emplaceBack(-1,-1),o.emplaceBack(1,-1),o.emplaceBack(1,1),o.emplaceBack(-1,1);const a=new t.aN;a.emplaceBack(0,1,2),a.emplaceBack(0,2,3),i.mesh=new It(e.createVertexBuffer(o,Mt.members),e.createIndexBuffer(a),t.aM.simpleSegment(0,0,o.length,a.length));}return i.mesh}class Ba{constructor(e,i){this.context=new Jo(e),this.transform=i,this._tileTextures={},this.terrainFacilitator={dirty:!0,matrix:t.ai(new Float64Array(16)),renderTime:0},this.setup(),this.numSublayers=Pe.maxUnderzooming+Pe.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new wt;}resize(e,t,i){if(this.width=Math.floor(e*i),this.height=Math.floor(t*i),this.pixelRatio=i,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(const e of this.style._order)this.style._layers[e].resize();}setup(){const e=this.context,i=new t.aL;i.emplaceBack(0,0),i.emplaceBack(t.$,0),i.emplaceBack(0,t.$),i.emplaceBack(t.$,t.$),this.tileExtentBuffer=e.createVertexBuffer(i,Mt.members),this.tileExtentSegments=t.aM.simpleSegment(0,0,4,2);const o=new t.aL;o.emplaceBack(0,0),o.emplaceBack(t.$,0),o.emplaceBack(0,t.$),o.emplaceBack(t.$,t.$),this.debugBuffer=e.createVertexBuffer(o,Mt.members),this.debugSegments=t.aM.simpleSegment(0,0,4,5);const a=new t.c7;a.emplaceBack(0,0,0,0),a.emplaceBack(t.$,0,t.$,0),a.emplaceBack(0,t.$,0,t.$),a.emplaceBack(t.$,t.$,t.$,t.$),this.rasterBoundsBuffer=e.createVertexBuffer(a,Mi.members),this.rasterBoundsSegments=t.aM.simpleSegment(0,0,4,2);const r=new t.aL;r.emplaceBack(0,0),r.emplaceBack(t.$,0),r.emplaceBack(0,t.$),r.emplaceBack(t.$,t.$),this.rasterBoundsBufferPosOnly=e.createVertexBuffer(r,Mt.members),this.rasterBoundsSegmentsPosOnly=t.aM.simpleSegment(0,0,4,5);const s=new t.aL;s.emplaceBack(0,0),s.emplaceBack(1,0),s.emplaceBack(0,1),s.emplaceBack(1,1),this.viewportBuffer=e.createVertexBuffer(s,Mt.members),this.viewportSegments=t.aM.simpleSegment(0,0,4,2);const n=new t.c8;n.emplaceBack(0),n.emplaceBack(1),n.emplaceBack(3),n.emplaceBack(2),n.emplaceBack(0),this.tileBorderIndexBuffer=e.createIndexBuffer(n);const l=new t.aN;l.emplaceBack(1,0,2),l.emplaceBack(1,2,3),this.quadTriangleIndexBuffer=e.createIndexBuffer(l);const c=this.context.gl;this.stencilClearMode=new Ht({func:c.ALWAYS,mask:0},0,255,c.ZERO,c.ZERO,c.ZERO),this.tileExtentMesh=new It(this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments);}clearStencil(){const e=this.context,i=e.gl;this.nextStencilID=1,this.currentStencilSource=void 0;const o=t.L();t.bZ(o,0,this.width,this.height,0,0,1),t.N(o,o,[i.drawingBufferWidth,i.drawingBufferHeight,0]);const a={mainMatrix:o,tileMercatorCoords:[0,0,1,1],clippingPlane:[0,0,0,0],projectionTransition:0,fallbackMatrix:o};this.useProgram(\"clippingMask\",null,!0).draw(e,i.TRIANGLES,Wt.disabled,this.stencilClearMode,Gt.disabled,$t.disabled,null,null,a,\"$clipping\",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments);}_renderTileClippingMasks(e,t,i){if(this.currentStencilSource===e.source||!e.isTileClipped()||!t||!t.length)return;this.currentStencilSource=e.source,this.nextStencilID+t.length>256&&this.clearStencil();const o=this.context;o.setColorMode(Gt.disabled),o.setDepthMode(Wt.disabled);const a={};for(const e of t)a[e.key]=this.nextStencilID++;this._renderTileMasks(a,t,i,!0),this._renderTileMasks(a,t,i,!1),this._tileClippingMaskIDs=a;}_renderTileMasks(e,t,i,o){const a=this.context,r=a.gl,s=this.style.projection,n=this.transform,l=this.useProgram(\"clippingMask\");for(const c of t){const t=e[c.key],h=this.style.map.terrain&&this.style.map.terrain.getTerrainData(c),u=s.getMeshFromTileID(this.context,c.canonical,o,!0,\"stencil\"),d=n.getProjectionData({overscaledTileID:c,applyGlobeMatrix:!i,applyTerrainMatrix:!0});l.draw(a,r.TRIANGLES,Wt.disabled,new Ht({func:r.ALWAYS,mask:0},t,255,r.KEEP,r.KEEP,r.REPLACE),Gt.disabled,i?$t.disabled:$t.backCCW,null,h,d,\"$clipping\",u.vertexBuffer,u.indexBuffer,u.segments);}}_renderTilesDepthBuffer(){const e=this.context,t=e.gl,i=this.style.projection,o=this.transform,a=this.useProgram(\"depth\"),r=this.getDepthModeFor3D(),s=we(o,{tileSize:o.tileSize});for(const n of s){const s=this.style.map.terrain&&this.style.map.terrain.getTerrainData(n),l=i.getMeshFromTileID(this.context,n.canonical,!0,!0,\"raster\"),c=o.getProjectionData({overscaledTileID:n,applyGlobeMatrix:!0,applyTerrainMatrix:!0});a.draw(e,t.TRIANGLES,r,Ht.disabled,Gt.disabled,$t.backCCW,null,s,c,\"$clipping\",l.vertexBuffer,l.indexBuffer,l.segments);}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();const e=this.nextStencilID++,t=this.context.gl;return new Ht({func:t.NOTEQUAL,mask:255},e,255,t.KEEP,t.KEEP,t.REPLACE)}stencilModeForClipping(e){const t=this.context.gl;return new Ht({func:t.EQUAL,mask:255},this._tileClippingMaskIDs[e.key],0,t.KEEP,t.KEEP,t.REPLACE)}getStencilConfigForOverlapAndUpdateStencilID(e){const t=this.context.gl,i=e.sort(((e,t)=>t.overscaledZ-e.overscaledZ)),o=i[i.length-1].overscaledZ,a=i[0].overscaledZ-o+1;if(a>1){this.currentStencilSource=void 0,this.nextStencilID+a>256&&this.clearStencil();const e={};for(let i=0;i<a;i++)e[i+o]=new Ht({func:t.GEQUAL,mask:255},i+this.nextStencilID,255,t.KEEP,t.KEEP,t.REPLACE);return this.nextStencilID+=a,[e,i]}return [{[o]:Ht.disabled},i]}stencilConfigForOverlapTwoPass(e){const t=this.context.gl,i=e.sort(((e,t)=>t.overscaledZ-e.overscaledZ)),o=i[i.length-1].overscaledZ,a=i[0].overscaledZ-o+1;if(this.clearStencil(),a>1){const e={},r={};for(let i=0;i<a;i++)e[i+o]=new Ht({func:t.GREATER,mask:255},a+1+i,255,t.KEEP,t.KEEP,t.REPLACE),r[i+o]=new Ht({func:t.GREATER,mask:255},1+i,255,t.KEEP,t.KEEP,t.REPLACE);return this.nextStencilID=2*a+1,[e,r,i]}return this.nextStencilID=3,[{[o]:new Ht({func:t.GREATER,mask:255},2,255,t.KEEP,t.KEEP,t.REPLACE)},{[o]:new Ht({func:t.GREATER,mask:255},1,255,t.KEEP,t.KEEP,t.REPLACE)},i]}colorModeForRenderPass(){const e=this.context.gl;if(this._showOverdrawInspector){const i=1/8;return new Gt([e.CONSTANT_COLOR,e.ONE],new t.bf(i,i,i,0),[!0,!0,!0,!0])}return \"opaque\"===this.renderPass?Gt.unblended:Gt.alphaBlended}getDepthModeForSublayer(e,t,i){if(!this.opaquePassEnabledForLayer())return Wt.disabled;const o=1-((1+this.currentLayer)*this.numSublayers+e)*this.depthEpsilon;return new Wt(i||this.context.gl.LEQUAL,t,[o,o])}getDepthModeFor3D(){return new Wt(this.context.gl.LEQUAL,Wt.ReadWrite,this.depthRangeFor3D)}opaquePassEnabledForLayer(){return this.currentLayer<this.opaquePassCutoff}render(e,i){var o,a;this.style=e,this.options=i,this.lineAtlas=e.lineAtlas,this.imageManager=e.imageManager,this.glyphManager=e.glyphManager,this.symbolFadeChange=e.placement.symbolFadeChange(l()),this.imageManager.beginFrame();const r=this.style._order,s=this.style.sourceCaches,n={},c={},h={},u={isRenderingToTexture:!1,isRenderingGlobe:(null===(o=e.projection)||void 0===o?void 0:o.transitionState)>0};for(const e in s){const t=s[e];t.used&&t.prepare(this.context),n[e]=t.getVisibleCoordinates(!1),c[e]=n[e].slice().reverse(),h[e]=t.getVisibleCoordinates(!0).reverse();}this.opaquePassCutoff=1/0;for(let e=0;e<r.length;e++)if(this.style._layers[r[e]].is3D()){this.opaquePassCutoff=e;break}this.maybeDrawDepthAndCoords(!1),this.renderToTexture&&(this.renderToTexture.prepareForRender(this.style,this.transform.zoom),this.opaquePassCutoff=0),this.renderPass=\"offscreen\";for(const e of r){const t=this.style._layers[e];if(!t.hasOffscreenPass()||t.isHidden(this.transform.zoom))continue;const i=c[t.source];(\"custom\"===t.type||i.length)&&this.renderLayer(this,s[t.source],t,i,u);}if(null===(a=this.style.projection)||void 0===a||a.updateGPUdependent({context:this.context,useProgram:e=>this.useProgram(e)}),this.context.viewport.set([0,0,this.width,this.height]),this.context.bindFramebuffer.set(null),this.context.clear({color:i.showOverdrawInspector?t.bf.black:t.bf.transparent,depth:1}),this.clearStencil(),this.style.sky&&function(e,t){const i=e.context,o=i.gl,a=((e,t,i)=>{const o=Math.cos(t.rollInRadians),a=Math.sin(t.rollInRadians),r=pe(t),s=t.getProjectionData({overscaledTileID:null,applyGlobeMatrix:!0,applyTerrainMatrix:!0}).projectionTransition;return {u_sky_color:e.properties.get(\"sky-color\"),u_horizon_color:e.properties.get(\"horizon-color\"),u_horizon:[(t.width/2-r*a)*i,(t.height/2+r*o)*i],u_horizon_normal:[-a,o],u_sky_horizon_blend:e.properties.get(\"sky-horizon-blend\")*t.height/2*i,u_sky_blend:s}})(t,e.style.map.transform,e.pixelRatio),r=new Wt(o.LEQUAL,Wt.ReadWrite,[0,1]),s=Ht.disabled,n=e.colorModeForRenderPass(),l=e.useProgram(\"sky\"),c=Fa(i,t);l.draw(i,o.TRIANGLES,r,s,n,$t.disabled,a,null,void 0,\"sky\",c.vertexBuffer,c.indexBuffer,c.segments);}(this,this.style.sky),this._showOverdrawInspector=i.showOverdrawInspector,this.depthRangeFor3D=[0,1-(e._order.length+2)*this.numSublayers*this.depthEpsilon],!this.renderToTexture)for(this.renderPass=\"opaque\",this.currentLayer=r.length-1;this.currentLayer>=0;this.currentLayer--){const e=this.style._layers[r[this.currentLayer]],t=s[e.source],i=n[e.source];this._renderTileClippingMasks(e,i,!1),this.renderLayer(this,t,e,i,u);}this.renderPass=\"translucent\";let d=!1;for(this.currentLayer=0;this.currentLayer<r.length;this.currentLayer++){const e=this.style._layers[r[this.currentLayer]],t=s[e.source];if(this.renderToTexture&&this.renderToTexture.renderLayer(e,u))continue;this.opaquePassEnabledForLayer()||d||(d=!0,u.isRenderingGlobe&&!this.style.map.terrain&&this._renderTilesDepthBuffer());const i=(\"symbol\"===e.type?h:c)[e.source];this._renderTileClippingMasks(e,n[e.source],!!this.renderToTexture),this.renderLayer(this,t,e,i,u);}if(u.isRenderingGlobe&&function(e,i,o){const a=e.context,r=a.gl,s=e.useProgram(\"atmosphere\"),n=new Wt(r.LEQUAL,Wt.ReadOnly,[0,1]),l=e.transform,c=function(e,i){const o=e.properties.get(\"position\"),a=[-o.x,-o.y,-o.z],r=t.ai(new Float64Array(16));return \"map\"===e.properties.get(\"anchor\")&&(t.b6(r,r,i.rollInRadians),t.b7(r,r,-i.pitchInRadians),t.b6(r,r,i.bearingInRadians),t.b7(r,r,i.center.lat*Math.PI/180),t.bz(r,r,-i.center.lng*Math.PI/180)),t.c6(a,a,r),a}(o,e.transform),h=l.getProjectionData({overscaledTileID:null,applyGlobeMatrix:!0,applyTerrainMatrix:!0}),u=i.properties.get(\"atmosphere-blend\")*h.projectionTransition;if(0===u)return;const d=ni(l.worldSize,l.center.lat),_=l.inverseProjectionMatrix,p=new Float64Array(4);p[3]=1,t.aw(p,p,l.modelViewProjectionMatrix),p[0]/=p[3],p[1]/=p[3],p[2]/=p[3],p[3]=1,t.aw(p,p,_),p[0]/=p[3],p[1]/=p[3],p[2]/=p[3],p[3]=1;const m=((e,t,i,o,a)=>({u_sun_pos:e,u_atmosphere_blend:t,u_globe_position:i,u_globe_radius:o,u_inv_proj_matrix:a}))(c,u,[p[0],p[1],p[2]],d,_),f=Fa(a,i);s.draw(a,r.TRIANGLES,n,Ht.disabled,Gt.alphaBlended,$t.disabled,m,null,null,\"atmosphere\",f.vertexBuffer,f.indexBuffer,f.segments);}(this,this.style.sky,this.style.light),this.options.showTileBoundaries){const e=function(e,t){let i=null;const o=Object.values(e._layers).flatMap((i=>i.source&&!i.isHidden(t)?[e.sourceCaches[i.source]]:[])),a=o.filter((e=>\"vector\"===e.getSource().type)),r=o.filter((e=>\"vector\"!==e.getSource().type)),s=e=>{(!i||i.getSource().maxzoom<e.getSource().maxzoom)&&(i=e);};return a.forEach((e=>s(e))),i||r.forEach((e=>s(e))),i}(this.style,this.transform.zoom);e&&function(e,t,i){for(let o=0;o<i.length;o++)La(e,t,i[o]);}(this,e,e.getVisibleCoordinates());}this.options.showPadding&&function(e){const t=e.transform.padding;Da(e,e.transform.height-(t.top||0),3,Ia),Da(e,t.bottom||0,3,Ma),za(e,t.left||0,3,Sa),za(e,e.transform.width-(t.right||0),3,Ea);const i=e.transform.centerPoint;!function(e,t,i,o){Aa(e,t-1,i-10,2,20,o),Aa(e,t-10,i-1,20,2,o);}(e,i.x,e.transform.height-i.y,Ra);}(this),this.context.setDefault();}maybeDrawDepthAndCoords(e){if(!this.style||!this.style.map||!this.style.map.terrain)return;const i=this.terrainFacilitator.matrix,o=this.transform.modelViewProjectionMatrix;let a=this.terrainFacilitator.dirty;a||(a=e?!t.c9(i,o):!t.ca(i,o)),a||(a=this.style.map.terrain.sourceCache.anyTilesAfterTime(this.terrainFacilitator.renderTime)),a&&(t.cb(i,o),this.terrainFacilitator.renderTime=Date.now(),this.terrainFacilitator.dirty=!1,function(e,i){const o=e.context,a=o.gl,r=e.transform,s=Gt.unblended,n=new Wt(a.LEQUAL,Wt.ReadWrite,[0,1]),l=i.sourceCache.getRenderableTiles(),c=e.useProgram(\"terrainDepth\");o.bindFramebuffer.set(i.getFramebuffer(\"depth\").framebuffer),o.viewport.set([0,0,e.width/devicePixelRatio,e.height/devicePixelRatio]),o.clear({color:t.bf.transparent,depth:1});for(const e of l){const t=i.getTerrainMesh(e.tileID),l=i.getTerrainData(e.tileID),h=r.getProjectionData({overscaledTileID:e.tileID,applyTerrainMatrix:!1,applyGlobeMatrix:!0}),u={u_ele_delta:i.getMeshFrameDelta(r.zoom)};c.draw(o,a.TRIANGLES,n,Ht.disabled,s,$t.backCCW,u,l,h,\"terrain\",t.vertexBuffer,t.indexBuffer,t.segments);}o.bindFramebuffer.set(null),o.viewport.set([0,0,e.width,e.height]);}(this,this.style.map.terrain),function(e,i){const o=e.context,a=o.gl,r=e.transform,s=Gt.unblended,n=new Wt(a.LEQUAL,Wt.ReadWrite,[0,1]),l=i.getCoordsTexture(),c=i.sourceCache.getRenderableTiles(),h=e.useProgram(\"terrainCoords\");o.bindFramebuffer.set(i.getFramebuffer(\"coords\").framebuffer),o.viewport.set([0,0,e.width/devicePixelRatio,e.height/devicePixelRatio]),o.clear({color:t.bf.transparent,depth:1}),i.coordsIndex=[];for(const e of c){const t=i.getTerrainMesh(e.tileID),c=i.getTerrainData(e.tileID);o.activeTexture.set(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,l.texture);const u={u_terrain_coords_id:(255-i.coordsIndex.length)/255,u_texture:0,u_ele_delta:i.getMeshFrameDelta(r.zoom)},d=r.getProjectionData({overscaledTileID:e.tileID,applyTerrainMatrix:!1,applyGlobeMatrix:!0});h.draw(o,a.TRIANGLES,n,Ht.disabled,s,$t.backCCW,u,c,d,\"terrain\",t.vertexBuffer,t.indexBuffer,t.segments),i.coordsIndex.push(e.tileID.key);}o.bindFramebuffer.set(null),o.viewport.set([0,0,e.width,e.height]);}(this,this.style.map.terrain));}renderLayer(e,i,o,a,r){o.isHidden(this.transform.zoom)||(\"background\"===o.type||\"custom\"===o.type||(a||[]).length)&&(this.id=o.id,t.cc(o)?function(e,i,o,a,r,s){if(\"translucent\"!==e.renderPass)return;const{isRenderingToTexture:n}=s,l=Ht.disabled,c=e.colorModeForRenderPass();(o._unevaluatedLayout.hasValue(\"text-variable-anchor\")||o._unevaluatedLayout.hasValue(\"text-variable-anchor-offset\"))&&function(e,i,o,a,r,s,n,l,c){const h=i.transform,u=i.style.map.terrain,d=\"map\"===r,_=\"map\"===s;for(const r of e){const e=a.getTile(r),s=e.getBucket(o);if(!s||!s.text||!s.text.segments.get().length)continue;const p=t.an(s.textSizeData,h.zoom),m=t.aC(e,1,i.transform.zoom),f=Re(d,i.transform,m),g=\"none\"!==o.layout.get(\"icon-text-fit\")&&s.hasIconData();if(p){const i=Math.pow(2,h.zoom-e.tileID.overscaledZ),o=u?(e,t)=>u.getElevation(r,e,t):null;ra(s,d,_,c,h,f,i,p,g,t.aD(h,e,n,l),r.toUnwrapped(),o);}}}(a,e,o,i,o.layout.get(\"text-rotation-alignment\"),o.layout.get(\"text-pitch-alignment\"),o.paint.get(\"text-translate\"),o.paint.get(\"text-translate-anchor\"),r),0!==o.paint.get(\"icon-opacity\").constantOr(1)&&na(e,i,o,a,!1,o.paint.get(\"icon-translate\"),o.paint.get(\"icon-translate-anchor\"),o.layout.get(\"icon-rotation-alignment\"),o.layout.get(\"icon-pitch-alignment\"),o.layout.get(\"icon-keep-upright\"),l,c,n),0!==o.paint.get(\"text-opacity\").constantOr(1)&&na(e,i,o,a,!0,o.paint.get(\"text-translate\"),o.paint.get(\"text-translate-anchor\"),o.layout.get(\"text-rotation-alignment\"),o.layout.get(\"text-pitch-alignment\"),o.layout.get(\"text-keep-upright\"),l,c,n),i.map.showCollisionBoxes&&(ta(e,i,o,a,!0),ta(e,i,o,a,!1));}(e,i,o,a,this.style.placement.variableOffsets,r):t.cd(o)?function(e,i,o,a,r){if(\"translucent\"!==e.renderPass)return;const{isRenderingToTexture:s}=r,n=o.paint.get(\"circle-opacity\"),l=o.paint.get(\"circle-stroke-width\"),c=o.paint.get(\"circle-stroke-opacity\"),h=!o.layout.get(\"circle-sort-key\").isConstant();if(0===n.constantOr(1)&&(0===l.constantOr(1)||0===c.constantOr(1)))return;const u=e.context,d=u.gl,_=e.transform,p=e.getDepthModeForSublayer(0,Wt.ReadOnly),m=Ht.disabled,f=e.colorModeForRenderPass(),g=[],v=_.getCircleRadiusCorrection();for(let r=0;r<a.length;r++){const n=a[r],l=i.getTile(n),c=l.getBucket(o);if(!c)continue;const u=o.paint.get(\"circle-translate\"),d=o.paint.get(\"circle-translate-anchor\"),p=t.aD(_,l,u,d),m=c.programConfigurations.get(o.id),f=e.useProgram(\"circle\",m),x=c.layoutVertexBuffer,b=c.indexBuffer,y=e.style.map.terrain&&e.style.map.terrain.getTerrainData(n),w={programConfiguration:m,program:f,layoutVertexBuffer:x,indexBuffer:b,uniformValues:ji(e,l,o,p,v),terrainData:y,projectionData:_.getProjectionData({overscaledTileID:n,applyGlobeMatrix:!s,applyTerrainMatrix:!0})};if(h){const e=c.segments.get();for(const i of e)g.push({segments:new t.aM([i]),sortKey:i.sortKey,state:w});}else g.push({segments:c.segments,sortKey:0,state:w});}h&&g.sort(((e,t)=>e.sortKey-t.sortKey));for(const t of g){const{programConfiguration:i,program:a,layoutVertexBuffer:r,indexBuffer:s,uniformValues:n,terrainData:l,projectionData:c}=t.state;a.draw(u,d.TRIANGLES,p,m,f,$t.backCCW,n,l,c,o.id,r,s,t.segments,o.paint,e.transform.zoom,i);}}(e,i,o,a,r):t.ce(o)?function(e,i,o,a,r){if(0===o.paint.get(\"heatmap-opacity\"))return;const s=e.context,{isRenderingToTexture:n,isRenderingGlobe:l}=r;if(e.style.map.terrain){for(const t of a){const a=i.getTile(t);i.hasRenderableParent(t)||(\"offscreen\"===e.renderPass?ca(e,a,o,t,l):\"translucent\"===e.renderPass&&ha(e,o,t,n,l));}s.viewport.set([0,0,e.width,e.height]);}else \"offscreen\"===e.renderPass?function(e,i,o,a){const r=e.context,s=r.gl,n=e.transform,l=Ht.disabled,c=new Gt([s.ONE,s.ONE],t.bf.transparent,[!0,!0,!0,!0]);((function(e,i,o){const a=e.gl;e.activeTexture.set(a.TEXTURE1),e.viewport.set([0,0,i.width/4,i.height/4]);let r=o.heatmapFbos.get(t.c3);r?(a.bindTexture(a.TEXTURE_2D,r.colorAttachment.get()),e.bindFramebuffer.set(r.framebuffer)):(r=ua(e,i.width/4,i.height/4),o.heatmapFbos.set(t.c3,r));}))(r,e,o),r.clear({color:t.bf.transparent});for(let t=0;t<a.length;t++){const h=a[t];if(i.hasRenderableParent(h))continue;const u=i.getTile(h),d=u.getBucket(o);if(!d)continue;const _=d.programConfigurations.get(o.id),p=e.useProgram(\"heatmap\",_),m=n.getProjectionData({overscaledTileID:h,applyGlobeMatrix:!0,applyTerrainMatrix:!1}),f=n.getCircleRadiusCorrection();p.draw(r,s.TRIANGLES,Wt.disabled,l,c,$t.backCCW,Gi(u,n.zoom,o.paint.get(\"heatmap-intensity\"),f),null,m,o.id,d.layoutVertexBuffer,d.indexBuffer,d.segments,o.paint,n.zoom,_);}r.viewport.set([0,0,e.width,e.height]);}(e,i,o,a):\"translucent\"===e.renderPass&&function(e,i){const o=e.context,a=o.gl;o.setColorMode(e.colorModeForRenderPass());const r=i.heatmapFbos.get(t.c3);r&&(o.activeTexture.set(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,r.colorAttachment.get()),o.activeTexture.set(a.TEXTURE1),da(o,i).bind(a.LINEAR,a.CLAMP_TO_EDGE),e.useProgram(\"heatmapTexture\").draw(o,a.TRIANGLES,Wt.disabled,Ht.disabled,e.colorModeForRenderPass(),$t.disabled,Vi(e,i,0,1),null,null,i.id,e.viewportBuffer,e.quadTriangleIndexBuffer,e.viewportSegments,i.paint,e.transform.zoom));}(e,o);}(e,i,o,a,r):t.cf(o)?function(e,t,i,o,a){if(\"translucent\"!==e.renderPass)return;const{isRenderingToTexture:r}=a,s=i.paint.get(\"line-opacity\"),n=i.paint.get(\"line-width\");if(0===s.constantOr(1)||0===n.constantOr(1))return;const l=e.getDepthModeForSublayer(0,Wt.ReadOnly),c=e.colorModeForRenderPass(),h=i.paint.get(\"line-dasharray\"),u=h.constantOr(1),d=i.paint.get(\"line-pattern\"),_=d.constantOr(1),p=i.paint.get(\"line-gradient\"),m=i.getCrossfadeParameters();let f;f=_?\"linePattern\":u&&p?\"lineGradientSDF\":u?\"lineSDF\":p?\"lineGradient\":\"line\";const g=e.context,v=g.gl,x=e.transform;let b=!0;for(const a of o){const o=t.getTile(a);if(_&&!o.patternsLoaded())continue;const s=o.getBucket(i);if(!s)continue;const n=s.programConfigurations.get(i.id),y=e.context.program.get(),w=e.useProgram(f,n),T=b||w.program!==y,P=e.style.map.terrain&&e.style.map.terrain.getTerrainData(a),C=d.constantOr(null),I=h&&h.constantOr(null);if(C&&o.imageAtlas){const e=o.imageAtlas,t=e.patternPositions[C.to.toString()],i=e.patternPositions[C.from.toString()];t&&i&&n.setConstantPatternPositions(t,i);}else if(I){const t=\"round\"===i.layout.get(\"line-cap\"),o=e.lineAtlas.getDash(I.to,t),a=e.lineAtlas.getDash(I.from,t);n.setConstantDashPositions(o,a);}const M=x.getProjectionData({overscaledTileID:a,applyGlobeMatrix:!r,applyTerrainMatrix:!0}),S=x.getPixelScale();let E;_?(E=Qi(e,o,i,S,m),pa(g,v,o,n,m)):u&&p?(E=Ji(e,o,i,S,m,s.lineClipsArray.length),ga(e,t,g,v,i,s,a,n,m)):u?(E=Yi(e,o,i,S,m),ma(e,g,v,n,T,m)):p?(E=Ki(e,o,i,S,s.lineClipsArray.length),fa(e,t,g,v,i,s,a)):E=Xi(e,o,i,S);const R=e.stencilModeForClipping(a);w.draw(g,v.TRIANGLES,l,R,c,$t.disabled,E,P,M,i.id,s.layoutVertexBuffer,s.indexBuffer,s.segments,i.paint,e.transform.zoom,n,s.layoutVertexBuffer2),b=!1;}}(e,i,o,a,r):t.cg(o)?function(e,i,o,a,r){const s=o.paint.get(\"fill-color\"),n=o.paint.get(\"fill-opacity\");if(0===n.constantOr(1))return;const{isRenderingToTexture:l}=r,c=e.colorModeForRenderPass(),h=o.paint.get(\"fill-pattern\"),u=e.opaquePassEnabledForLayer()&&!h.constantOr(1)&&1===s.constantOr(t.bf.transparent).a&&1===n.constantOr(0)?\"opaque\":\"translucent\";if(e.renderPass===u){const t=e.getDepthModeForSublayer(1,\"opaque\"===e.renderPass?Wt.ReadWrite:Wt.ReadOnly);xa(e,i,o,a,t,c,!1,l);}if(\"translucent\"===e.renderPass&&o.paint.get(\"fill-antialias\")){const t=e.getDepthModeForSublayer(o.getPaintProperty(\"fill-outline-color\")?2:0,Wt.ReadOnly);xa(e,i,o,a,t,c,!0,l);}}(e,i,o,a,r):t.ch(o)?function(e,t,i,o,a){const r=i.paint.get(\"fill-extrusion-opacity\");if(0===r)return;const{isRenderingToTexture:s}=a;if(\"translucent\"===e.renderPass){const a=new Wt(e.context.gl.LEQUAL,Wt.ReadWrite,e.depthRangeFor3D);if(1!==r||i.paint.get(\"fill-extrusion-pattern\").constantOr(1))ba(e,t,i,o,a,Ht.disabled,Gt.disabled,s),ba(e,t,i,o,a,e.stencilModeFor3D(),e.colorModeForRenderPass(),s);else {const r=e.colorModeForRenderPass();ba(e,t,i,o,a,Ht.disabled,r,s);}}}(e,i,o,a,r):t.ci(o)?function(e,i,o,a,r){if(\"offscreen\"!==e.renderPass&&\"translucent\"!==e.renderPass)return;const{isRenderingToTexture:s}=r,n=e.context,l=e.style.projection.useSubdivision,c=e.getDepthModeForSublayer(0,Wt.ReadOnly),h=e.colorModeForRenderPass();if(\"offscreen\"===e.renderPass)!function(e,i,o,a,r,s,n){const l=e.context,c=l.gl;for(const h of o){const o=i.getTile(h),u=o.dem;if(!u||!u.data)continue;if(!o.needsHillshadePrepare)continue;const d=u.dim,_=u.stride,p=u.getPixels();if(l.activeTexture.set(c.TEXTURE1),l.pixelStoreUnpackPremultiplyAlpha.set(!1),o.demTexture=o.demTexture||e.getTileTexture(_),o.demTexture){const e=o.demTexture;e.update(p,{premultiply:!1}),e.bind(c.NEAREST,c.CLAMP_TO_EDGE);}else o.demTexture=new t.T(l,p,c.RGBA,{premultiply:!1}),o.demTexture.bind(c.NEAREST,c.CLAMP_TO_EDGE);l.activeTexture.set(c.TEXTURE0);let m=o.fbo;if(!m){const e=new t.T(l,{width:d,height:d,data:null},c.RGBA);e.bind(c.LINEAR,c.CLAMP_TO_EDGE),m=o.fbo=l.createFramebuffer(d,d,!0,!1),m.colorAttachment.set(e.texture);}l.bindFramebuffer.set(m.framebuffer),l.viewport.set([0,0,d,d]),e.useProgram(\"hillshadePrepare\").draw(l,c.TRIANGLES,r,s,n,$t.disabled,Wi(o.tileID,u),null,null,a.id,e.rasterBoundsBuffer,e.quadTriangleIndexBuffer,e.rasterBoundsSegments),o.needsHillshadePrepare=!1;}}(e,i,a,o,c,Ht.disabled,h),n.viewport.set([0,0,e.width,e.height]);else if(\"translucent\"===e.renderPass)if(l){const[t,r,n]=e.stencilConfigForOverlapTwoPass(a);ya(e,i,o,n,t,c,h,!1,s),ya(e,i,o,n,r,c,h,!0,s);}else {const[t,r]=e.getStencilConfigForOverlapAndUpdateStencilID(a);ya(e,i,o,r,t,c,h,!1,s);}}(e,i,o,a,r):t.cj(o)?function(e,t,i,o,a){if(\"translucent\"!==e.renderPass)return;if(!o.length)return;const{isRenderingToTexture:r}=a,s=e.style.projection.useSubdivision,n=e.getDepthModeForSublayer(0,Wt.ReadOnly),l=e.colorModeForRenderPass();if(s){const[a,s,c]=e.stencilConfigForOverlapTwoPass(o);wa(e,t,i,c,a,n,l,!1,r),wa(e,t,i,c,s,n,l,!0,r);}else {const[a,s]=e.getStencilConfigForOverlapAndUpdateStencilID(o);wa(e,t,i,s,a,n,l,!1,r);}}(e,i,o,a,r):t.bK(o)?function(e,t,i,o,a){if(\"translucent\"!==e.renderPass)return;if(0===i.paint.get(\"raster-opacity\"))return;if(!o.length)return;const{isRenderingToTexture:r}=a,s=t.getSource(),n=e.style.projection.useSubdivision;if(s instanceof Q)Pa(e,t,i,o,null,!1,!1,s.tileCoords,s.flippedWindingOrder,r);else if(n){const[a,s,n]=e.stencilConfigForOverlapTwoPass(o);Pa(e,t,i,n,a,!1,!0,Ta,!1,r),Pa(e,t,i,n,s,!0,!0,Ta,!1,r);}else {const[a,s]=e.getStencilConfigForOverlapAndUpdateStencilID(o);Pa(e,t,i,s,a,!1,!0,Ta,!1,r);}}(e,i,o,a,r):t.ck(o)?function(e,t,i,o,a){const r=i.paint.get(\"background-color\"),s=i.paint.get(\"background-opacity\");if(0===s)return;const{isRenderingToTexture:n}=a,l=e.context,c=l.gl,h=e.style.projection,u=e.transform,d=u.tileSize,_=i.paint.get(\"background-pattern\");if(e.isPatternMissing(_))return;const p=!_&&1===r.a&&1===s&&e.opaquePassEnabledForLayer()?\"opaque\":\"translucent\";if(e.renderPass!==p)return;const m=Ht.disabled,f=e.getDepthModeForSublayer(0,\"opaque\"===p?Wt.ReadWrite:Wt.ReadOnly),g=e.colorModeForRenderPass(),v=e.useProgram(_?\"backgroundPattern\":\"background\"),x=o||we(u,{tileSize:d,terrain:e.style.map.terrain});_&&(l.activeTexture.set(c.TEXTURE0),e.imageManager.bind(e.context));const b=i.getCrossfadeParameters();for(const t of x){const o=u.getProjectionData({overscaledTileID:t,applyGlobeMatrix:!n,applyTerrainMatrix:!0}),a=_?lo(s,e,_,{tileID:t,tileSize:d},b):no(s,r),p=e.style.map.terrain&&e.style.map.terrain.getTerrainData(t),x=h.getMeshFromTileID(l,t.canonical,!1,!0,\"raster\");v.draw(l,c.TRIANGLES,f,m,g,$t.backCCW,a,p,o,i.id,x.vertexBuffer,x.indexBuffer,x.segments);}}(e,0,o,a,r):t.cl(o)&&function(e,t,i,o){const{isRenderingGlobe:a}=o,r=e.context,s=i.implementation,n=e.style.projection,l=e.transform,c=l.getProjectionDataForCustomLayer(a),h={farZ:l.farZ,nearZ:l.nearZ,fov:l.fov*Math.PI/180,modelViewProjectionMatrix:l.modelViewProjectionMatrix,projectionMatrix:l.projectionMatrix,shaderData:{variantName:n.shaderVariantName,vertexShaderPrelude:`const float PI = 3.141592653589793;\\nuniform mat4 u_projection_matrix;\\n${n.shaderPreludeCode.vertexSource}`,define:n.shaderDefine},defaultProjectionData:c},u=s.renderingMode?s.renderingMode:\"2d\";if(\"offscreen\"===e.renderPass){const t=s.prerender;t&&(e.setCustomLayerDefaults(),r.setColorMode(e.colorModeForRenderPass()),t.call(s,r.gl,h),r.setDirty(),e.setBaseState());}else if(\"translucent\"===e.renderPass){e.setCustomLayerDefaults(),r.setColorMode(e.colorModeForRenderPass()),r.setStencilMode(Ht.disabled);const t=\"3d\"===u?e.getDepthModeFor3D():e.getDepthModeForSublayer(0,Wt.ReadOnly);r.setDepthMode(t),s.render(r.gl,h),r.setDirty(),e.setBaseState(),r.bindFramebuffer.set(null);}}(e,0,o,r));}saveTileTexture(e){const t=this._tileTextures[e.size[0]];t?t.push(e):this._tileTextures[e.size[0]]=[e];}getTileTexture(e){const t=this._tileTextures[e];return t&&t.length>0?t.pop():null}isPatternMissing(e){if(!e)return !1;if(!e.from||!e.to)return !0;const t=this.imageManager.getPattern(e.from.toString()),i=this.imageManager.getPattern(e.to.toString());return !t||!i}useProgram(e,t,i=!1,o=[]){this.cache=this.cache||{};const a=!!this.style.map.terrain,r=this.style.projection,s=i?Pt.projectionMercator:r.shaderPreludeCode,n=i?St:r.shaderDefine,l=e+(t?t.cacheKey:\"\")+`/${i?Et:r.shaderVariantName}`+(this._showOverdrawInspector?\"/overdraw\":\"\")+(a?\"/terrain\":\"\")+(o?`/${o.join(\"/\")}`:\"\");return this.cache[l]||(this.cache[l]=new zi(this.context,Pt[e],t,ho[e],this._showOverdrawInspector,a,s,n,o)),this.cache[l]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault();}setBaseState(){const e=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(e.FUNC_ADD);}initDebugOverlayCanvas(){null==this.debugOverlayCanvas&&(this.debugOverlayCanvas=document.createElement(\"canvas\"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new t.T(this.context,this.debugOverlayCanvas,this.context.gl.RGBA));}destroy(){this.debugOverlayTexture&&this.debugOverlayTexture.destroy();}overLimit(){const{drawingBufferWidth:e,drawingBufferHeight:t}=this.context.gl;return this.width!==e||this.height!==t}}function Oa(e,t){let i,o=!1,a=null,r=null;const s=()=>{a=null,o&&(e.apply(r,i),a=setTimeout(s,t),o=!1);};return (...e)=>(o=!0,r=this,i=e,a||s(),a)}class ja{constructor(e){this._getCurrentHash=()=>{const e=window.location.hash.replace(\"#\",\"\");if(this._hashName){let t;return e.split(\"&\").map((e=>e.split(\"=\"))).forEach((e=>{e[0]===this._hashName&&(t=e);})),(t&&t[1]||\"\").split(\"/\")}return e.split(\"/\")},this._onHashChange=()=>{const e=this._getCurrentHash();if(!this._isValidHash(e))return !1;const t=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(e[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+e[2],+e[1]],zoom:+e[0],bearing:t,pitch:+(e[4]||0)}),!0},this._updateHashUnthrottled=()=>{const e=window.location.href.replace(/(#.*)?$/,this.getHashString());window.history.replaceState(window.history.state,null,e);},this._removeHash=()=>{const e=this._getCurrentHash();if(0===e.length)return;const t=e.join(\"/\");let i=t;i.split(\"&\").length>0&&(i=i.split(\"&\")[0]),this._hashName&&(i=`${this._hashName}=${t}`);let o=window.location.hash.replace(i,\"\");o.startsWith(\"#&\")?o=o.slice(0,1)+o.slice(2):\"#\"===o&&(o=\"\");let a=window.location.href.replace(/(#.+)?$/,o);a=a.replace(\"&&\",\"&\"),window.history.replaceState(window.history.state,null,a);},this._updateHash=Oa(this._updateHashUnthrottled,300),this._hashName=e&&encodeURIComponent(e);}addTo(e){return this._map=e,addEventListener(\"hashchange\",this._onHashChange,!1),this._map.on(\"moveend\",this._updateHash),this}remove(){return removeEventListener(\"hashchange\",this._onHashChange,!1),this._map.off(\"moveend\",this._updateHash),clearTimeout(this._updateHash()),this._removeHash(),delete this._map,this}getHashString(e){const t=this._map.getCenter(),i=Math.round(100*this._map.getZoom())/100,o=Math.ceil((i*Math.LN2+Math.log(512/360/.5))/Math.LN10),a=Math.pow(10,o),r=Math.round(t.lng*a)/a,s=Math.round(t.lat*a)/a,n=this._map.getBearing(),l=this._map.getPitch();let c=\"\";if(c+=e?`/${r}/${s}/${i}`:`${i}/${s}/${r}`,(n||l)&&(c+=\"/\"+Math.round(10*n)/10),l&&(c+=`/${Math.round(l)}`),this._hashName){const e=this._hashName;let t=!1;const i=window.location.hash.slice(1).split(\"&\").map((i=>{const o=i.split(\"=\")[0];return o===e?(t=!0,`${o}=${c}`):i})).filter((e=>e));return t||i.push(`${e}=${c}`),`#${i.join(\"&\")}`}return `#${c}`}_isValidHash(e){if(e.length<3||e.some(isNaN))return !1;try{new t.S(+e[2],+e[1]);}catch(e){return !1}const i=+e[0],o=+(e[3]||0),a=+(e[4]||0);return i>=this._map.getMinZoom()&&i<=this._map.getMaxZoom()&&o>=-180&&o<=180&&a>=this._map.getMinPitch()&&a<=this._map.getMaxPitch()}}const Na={linearity:.3,easing:t.cm(0,0,.3,1)},Za=t.e({deceleration:2500,maxSpeed:1400},Na),Ua=t.e({deceleration:20,maxSpeed:1400},Na),Ga=t.e({deceleration:1e3,maxSpeed:360},Na),Va=t.e({deceleration:1e3,maxSpeed:90},Na),$a=t.e({deceleration:1e3,maxSpeed:360},Na);class Wa{constructor(e){this._map=e,this.clear();}clear(){this._inertiaBuffer=[];}record(e){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:l(),settings:e});}_drainInertiaBuffer(){const e=this._inertiaBuffer,t=l();for(;e.length>0&&t-e[0].time>160;)e.shift();}_onMoveEnd(e){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;const i={zoom:0,bearing:0,pitch:0,roll:0,pan:new t.P(0,0),pinchAround:void 0,around:void 0};for(const{settings:e}of this._inertiaBuffer)i.zoom+=e.zoomDelta||0,i.bearing+=e.bearingDelta||0,i.pitch+=e.pitchDelta||0,i.roll+=e.rollDelta||0,e.panDelta&&i.pan._add(e.panDelta),e.around&&(i.around=e.around),e.pinchAround&&(i.pinchAround=e.pinchAround);const o=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,a={};if(i.pan.mag()){const r=Ha(i.pan.mag(),o,t.e({},Za,e||{})),s=i.pan.mult(r.amount/i.pan.mag()),n=this._map.cameraHelper.handlePanInertia(s,this._map.transform);a.center=n.easingCenter,a.offset=n.easingOffset,qa(a,r);}if(i.zoom){const e=Ha(i.zoom,o,Ua);a.zoom=this._map.transform.zoom+e.amount,qa(a,e);}if(i.bearing){const e=Ha(i.bearing,o,Ga);a.bearing=this._map.transform.bearing+t.ae(e.amount,-179,179),qa(a,e);}if(i.pitch){const e=Ha(i.pitch,o,Va);a.pitch=this._map.transform.pitch+e.amount,qa(a,e);}if(i.roll){const e=Ha(i.roll,o,$a);a.roll=this._map.transform.roll+t.ae(e.amount,-179,179),qa(a,e);}if(a.zoom||a.bearing){const e=void 0===i.pinchAround?i.around:i.pinchAround;a.around=e?this._map.unproject(e):this._map.getCenter();}return this.clear(),t.e(a,{noMoveStart:!0})}}function qa(e,t){(!e.duration||e.duration<t.duration)&&(e.duration=t.duration,e.easing=t.easing);}function Ha(e,i,o){const{maxSpeed:a,linearity:r,deceleration:s}=o,n=t.ae(e*r/(i/1e3),-a,a),l=Math.abs(n)/(s*r);return {easing:o.easing,duration:1e3*l,amount:n*(l/2)}}class Xa extends t.l{preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}constructor(e,i,o,a={}){o=o instanceof MouseEvent?o:new MouseEvent(e,o);const r=c.mousePos(i.getCanvas(),o),s=i.unproject(r);super(e,t.e({point:r,lngLat:s,originalEvent:o},a)),this._defaultPrevented=!1,this.target=i;}}class Ka extends t.l{preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}constructor(e,i,o){const a=\"touchend\"===e?o.changedTouches:o.touches,r=c.touchPos(i.getCanvasContainer(),a),s=r.map((e=>i.unproject(e))),n=r.reduce(((e,t,i,o)=>e.add(t.div(o.length))),new t.P(0,0));super(e,{points:r,point:n,lngLats:s,lngLat:i.unproject(n),originalEvent:o}),this._defaultPrevented=!1;}}class Qa extends t.l{preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}constructor(e,t,i){super(e,{originalEvent:i}),this._defaultPrevented=!1;}}class Ya{constructor(e,t){this._map=e,this._clickTolerance=t.clickTolerance;}reset(){delete this._mousedownPos;}wheel(e){return this._firePreventable(new Qa(e.type,this._map,e))}mousedown(e,t){return this._mousedownPos=t,this._firePreventable(new Xa(e.type,this._map,e))}mouseup(e){this._map.fire(new Xa(e.type,this._map,e));}click(e,t){this._mousedownPos&&this._mousedownPos.dist(t)>=this._clickTolerance||this._map.fire(new Xa(e.type,this._map,e));}dblclick(e){return this._firePreventable(new Xa(e.type,this._map,e))}mouseover(e){this._map.fire(new Xa(e.type,this._map,e));}mouseout(e){this._map.fire(new Xa(e.type,this._map,e));}touchstart(e){return this._firePreventable(new Ka(e.type,this._map,e))}touchmove(e){this._map.fire(new Ka(e.type,this._map,e));}touchend(e){this._map.fire(new Ka(e.type,this._map,e));}touchcancel(e){this._map.fire(new Ka(e.type,this._map,e));}_firePreventable(e){if(this._map.fire(e),e.defaultPrevented)return {}}isEnabled(){return !0}isActive(){return !1}enable(){}disable(){}}class Ja{constructor(e){this._map=e;}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent;}mousemove(e){this._map.fire(new Xa(e.type,this._map,e));}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1;}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new Xa(\"contextmenu\",this._map,this._contextMenuEvent)),delete this._contextMenuEvent);}contextmenu(e){this._delayContextMenu?this._contextMenuEvent=e:this._ignoreContextMenu||this._map.fire(new Xa(e.type,this._map,e)),this._map.listens(\"contextmenu\")&&e.preventDefault();}isEnabled(){return !0}isActive(){return !1}enable(){}disable(){}}class er{constructor(e){this._map=e;}get transform(){return this._map._requestedCameraState||this._map.transform}get center(){return {lng:this.transform.center.lng,lat:this.transform.center.lat}}get zoom(){return this.transform.zoom}get pitch(){return this.transform.pitch}get bearing(){return this.transform.bearing}unproject(e){return this.transform.screenPointToLocation(t.P.convert(e),this._map.terrain)}}class tr{constructor(e,t){this._map=e,this._tr=new er(e),this._el=e.getCanvasContainer(),this._container=e.getContainer(),this._clickTolerance=t.clickTolerance||1;}isEnabled(){return !!this._enabled}isActive(){return !!this._active}enable(){this.isEnabled()||(this._enabled=!0);}disable(){this.isEnabled()&&(this._enabled=!1);}mousedown(e,t){this.isEnabled()&&e.shiftKey&&0===e.button&&(c.disableDrag(),this._startPos=this._lastPos=t,this._active=!0);}mousemoveWindow(e,t){if(!this._active)return;const i=t;if(this._lastPos.equals(i)||!this._box&&i.dist(this._startPos)<this._clickTolerance)return;const o=this._startPos;this._lastPos=i,this._box||(this._box=c.create(\"div\",\"maplibregl-boxzoom\",this._container),this._container.classList.add(\"maplibregl-crosshair\"),this._fireEvent(\"boxzoomstart\",e));const a=Math.min(o.x,i.x),r=Math.max(o.x,i.x),s=Math.min(o.y,i.y),n=Math.max(o.y,i.y);c.setTransform(this._box,`translate(${a}px,${s}px)`),this._box.style.width=r-a+\"px\",this._box.style.height=n-s+\"px\";}mouseupWindow(e,i){if(!this._active)return;if(0!==e.button)return;const o=this._startPos,a=i;if(this.reset(),c.suppressClick(),o.x!==a.x||o.y!==a.y)return this._map.fire(new t.l(\"boxzoomend\",{originalEvent:e})),{cameraAnimation:e=>e.fitScreenCoordinates(o,a,this._tr.bearing,{linear:!0})};this._fireEvent(\"boxzoomcancel\",e);}keydown(e){this._active&&27===e.keyCode&&(this.reset(),this._fireEvent(\"boxzoomcancel\",e));}reset(){this._active=!1,this._container.classList.remove(\"maplibregl-crosshair\"),this._box&&(c.remove(this._box),this._box=null),c.enableDrag(),delete this._startPos,delete this._lastPos;}_fireEvent(e,i){return this._map.fire(new t.l(e,{originalEvent:i}))}}function ir(e,t){if(e.length!==t.length)throw new Error(`The number of touches and points are not equal - touches ${e.length}, points ${t.length}`);const i={};for(let o=0;o<e.length;o++)i[e[o].identifier]=t[o];return i}class or{constructor(e){this.reset(),this.numTouches=e.numTouches;}reset(){delete this.centroid,delete this.startTime,delete this.touches,this.aborted=!1;}touchstart(e,i,o){(this.centroid||o.length>this.numTouches)&&(this.aborted=!0),this.aborted||(void 0===this.startTime&&(this.startTime=e.timeStamp),o.length===this.numTouches&&(this.centroid=function(e){const i=new t.P(0,0);for(const t of e)i._add(t);return i.div(e.length)}(i),this.touches=ir(o,i)));}touchmove(e,t,i){if(this.aborted||!this.centroid)return;const o=ir(i,t);for(const e in this.touches){const t=o[e];(!t||t.dist(this.touches[e])>30)&&(this.aborted=!0);}}touchend(e,t,i){if((!this.centroid||e.timeStamp-this.startTime>500)&&(this.aborted=!0),0===i.length){const e=!this.aborted&&this.centroid;if(this.reset(),e)return e}}}class ar{constructor(e){this.singleTap=new or(e),this.numTaps=e.numTaps,this.reset();}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset();}touchstart(e,t,i){this.singleTap.touchstart(e,t,i);}touchmove(e,t,i){this.singleTap.touchmove(e,t,i);}touchend(e,t,i){const o=this.singleTap.touchend(e,t,i);if(o){const t=e.timeStamp-this.lastTime<500,i=!this.lastTap||this.lastTap.dist(o)<30;if(t&&i||this.reset(),this.count++,this.lastTime=e.timeStamp,this.lastTap=o,this.count===this.numTaps)return this.reset(),o}}}class rr{constructor(e){this._tr=new er(e),this._zoomIn=new ar({numTouches:1,numTaps:2}),this._zoomOut=new ar({numTouches:2,numTaps:1}),this.reset();}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset();}touchstart(e,t,i){this._zoomIn.touchstart(e,t,i),this._zoomOut.touchstart(e,t,i);}touchmove(e,t,i){this._zoomIn.touchmove(e,t,i),this._zoomOut.touchmove(e,t,i);}touchend(e,t,i){const o=this._zoomIn.touchend(e,t,i),a=this._zoomOut.touchend(e,t,i),r=this._tr;return o?(this._active=!0,e.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:t=>t.easeTo({duration:300,zoom:r.zoom+1,around:r.unproject(o)},{originalEvent:e})}):a?(this._active=!0,e.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:t=>t.easeTo({duration:300,zoom:r.zoom-1,around:r.unproject(a)},{originalEvent:e})}):void 0}touchcancel(){this.reset();}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class sr{constructor(e){this._enabled=!!e.enable,this._moveStateManager=e.moveStateManager,this._clickTolerance=e.clickTolerance||1,this._moveFunction=e.move,this._activateOnStart=!!e.activateOnStart,e.assignEvents(this),this.reset();}reset(e){this._active=!1,this._moved=!1,delete this._lastPoint,this._moveStateManager.endMove(e);}_move(...e){const t=this._moveFunction(...e);if(t.bearingDelta||t.pitchDelta||t.rollDelta||t.around||t.panDelta)return this._active=!0,t}dragStart(e,t){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(e)&&(this._moveStateManager.startMove(e),this._lastPoint=Array.isArray(t)?t[0]:t,this._activateOnStart&&this._lastPoint&&(this._active=!0));}dragMove(e,t){if(!this.isEnabled())return;const i=this._lastPoint;if(!i)return;if(e.preventDefault(),!this._moveStateManager.isValidMoveEvent(e))return void this.reset(e);const o=Array.isArray(t)?t[0]:t;return !this._moved&&o.dist(i)<this._clickTolerance?void 0:(this._moved=!0,this._lastPoint=o,this._move(i,o))}dragEnd(e){this.isEnabled()&&this._lastPoint&&this._moveStateManager.isValidEndEvent(e)&&(this._moved&&c.suppressClick(),this.reset(e));}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}getClickTolerance(){return this._clickTolerance}}const nr=0,lr=2,cr={[nr]:1,[lr]:2};class hr{constructor(e){this._correctEvent=e.checkCorrectEvent;}startMove(e){const t=c.mouseButton(e);this._eventButton=t;}endMove(e){delete this._eventButton;}isValidStartEvent(e){return this._correctEvent(e)}isValidMoveEvent(e){return !function(e,t){const i=cr[t];return void 0===e.buttons||(e.buttons&i)!==i}(e,this._eventButton)}isValidEndEvent(e){return c.mouseButton(e)===this._eventButton}}class ur{constructor(){this._firstTouch=void 0;}_isOneFingerTouch(e){return 1===e.targetTouches.length}_isSameTouchEvent(e){return e.targetTouches[0].identifier===this._firstTouch}startMove(e){this._firstTouch=e.targetTouches[0].identifier;}endMove(e){delete this._firstTouch;}isValidStartEvent(e){return this._isOneFingerTouch(e)}isValidMoveEvent(e){return this._isOneFingerTouch(e)&&this._isSameTouchEvent(e)}isValidEndEvent(e){return this._isOneFingerTouch(e)&&this._isSameTouchEvent(e)}}class dr{constructor(e=new hr({checkCorrectEvent:()=>!0}),t=new ur){this.mouseMoveStateManager=e,this.oneFingerTouchMoveStateManager=t;}_executeRelevantHandler(e,t,i){return e instanceof MouseEvent?t(e):\"undefined\"!=typeof TouchEvent&&e instanceof TouchEvent?i(e):void 0}startMove(e){this._executeRelevantHandler(e,(e=>this.mouseMoveStateManager.startMove(e)),(e=>this.oneFingerTouchMoveStateManager.startMove(e)));}endMove(e){this._executeRelevantHandler(e,(e=>this.mouseMoveStateManager.endMove(e)),(e=>this.oneFingerTouchMoveStateManager.endMove(e)));}isValidStartEvent(e){return this._executeRelevantHandler(e,(e=>this.mouseMoveStateManager.isValidStartEvent(e)),(e=>this.oneFingerTouchMoveStateManager.isValidStartEvent(e)))}isValidMoveEvent(e){return this._executeRelevantHandler(e,(e=>this.mouseMoveStateManager.isValidMoveEvent(e)),(e=>this.oneFingerTouchMoveStateManager.isValidMoveEvent(e)))}isValidEndEvent(e){return this._executeRelevantHandler(e,(e=>this.mouseMoveStateManager.isValidEndEvent(e)),(e=>this.oneFingerTouchMoveStateManager.isValidEndEvent(e)))}}const _r=e=>{e.mousedown=e.dragStart,e.mousemoveWindow=e.dragMove,e.mouseup=e.dragEnd,e.contextmenu=e=>{e.preventDefault();};};class pr{constructor(e,t){this._clickTolerance=e.clickTolerance||1,this._map=t,this.reset();}reset(){this._active=!1,this._touches={},this._sum=new t.P(0,0);}_shouldBePrevented(e){return e<(this._map.cooperativeGestures.isEnabled()?2:1)}touchstart(e,t,i){return this._calculateTransform(e,t,i)}touchmove(e,t,i){if(this._active){if(!this._shouldBePrevented(i.length))return e.preventDefault(),this._calculateTransform(e,t,i);this._map.cooperativeGestures.notifyGestureBlocked(\"touch_pan\",e);}}touchend(e,t,i){this._calculateTransform(e,t,i),this._active&&this._shouldBePrevented(i.length)&&this.reset();}touchcancel(){this.reset();}_calculateTransform(e,i,o){o.length>0&&(this._active=!0);const a=ir(o,i),r=new t.P(0,0),s=new t.P(0,0);let n=0;for(const e in a){const t=a[e],i=this._touches[e];i&&(r._add(t),s._add(t.sub(i)),n++,a[e]=t);}if(this._touches=a,this._shouldBePrevented(n)||!s.mag())return;const l=s.div(n);return this._sum._add(l),this._sum.mag()<this._clickTolerance?void 0:{around:r.div(n),panDelta:l}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class mr{constructor(){this.reset();}reset(){this._active=!1,delete this._firstTwoTouches;}touchstart(e,t,i){this._firstTwoTouches||i.length<2||(this._firstTwoTouches=[i[0].identifier,i[1].identifier],this._start([t[0],t[1]]));}touchmove(e,t,i){if(!this._firstTwoTouches)return;e.preventDefault();const[o,a]=this._firstTwoTouches,r=fr(i,t,o),s=fr(i,t,a);if(!r||!s)return;const n=this._aroundCenter?null:r.add(s).div(2);return this._move([r,s],n,e)}touchend(e,t,i){if(!this._firstTwoTouches)return;const[o,a]=this._firstTwoTouches,r=fr(i,t,o),s=fr(i,t,a);r&&s||(this._active&&c.suppressClick(),this.reset());}touchcancel(){this.reset();}enable(e){this._enabled=!0,this._aroundCenter=!!e&&\"center\"===e.around;}disable(){this._enabled=!1,this.reset();}isEnabled(){return !!this._enabled}isActive(){return !!this._active}}function fr(e,t,i){for(let o=0;o<e.length;o++)if(e[o].identifier===i)return t[o]}function gr(e,t){return Math.log(e/t)/Math.LN2}class vr extends mr{reset(){super.reset(),delete this._distance,delete this._startDistance;}_start(e){this._startDistance=this._distance=e[0].dist(e[1]);}_move(e,t){const i=this._distance;if(this._distance=e[0].dist(e[1]),this._active||!(Math.abs(gr(this._distance,this._startDistance))<.1))return this._active=!0,{zoomDelta:gr(this._distance,i),pinchAround:t}}}function xr(e,t){return 180*e.angleWith(t)/Math.PI}class br extends mr{reset(){super.reset(),delete this._minDiameter,delete this._startVector,delete this._vector;}_start(e){this._startVector=this._vector=e[0].sub(e[1]),this._minDiameter=e[0].dist(e[1]);}_move(e,t,i){const o=this._vector;if(this._vector=e[0].sub(e[1]),this._active||!this._isBelowThreshold(this._vector))return this._active=!0,{bearingDelta:xr(this._vector,o),pinchAround:t}}_isBelowThreshold(e){this._minDiameter=Math.min(this._minDiameter,e.mag());const t=25/(Math.PI*this._minDiameter)*360,i=xr(e,this._startVector);return Math.abs(i)<t}}function yr(e){return Math.abs(e.y)>Math.abs(e.x)}class wr extends mr{constructor(e){super(),this._currentTouchCount=0,this._map=e;}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints;}touchstart(e,t,i){super.touchstart(e,t,i),this._currentTouchCount=i.length;}_start(e){this._lastPoints=e,yr(e[0].sub(e[1]))&&(this._valid=!1);}_move(e,t,i){if(this._map.cooperativeGestures.isEnabled()&&this._currentTouchCount<3)return;const o=e[0].sub(this._lastPoints[0]),a=e[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(o,a,i.timeStamp),this._valid?(this._lastPoints=e,this._active=!0,{pitchDelta:(o.y+a.y)/2*-.5}):void 0}gestureBeginsVertically(e,t,i){if(void 0!==this._valid)return this._valid;const o=e.mag()>=2,a=t.mag()>=2;if(!o&&!a)return;if(!o||!a)return void 0===this._firstMove&&(this._firstMove=i),i-this._firstMove<100&&void 0;const r=e.y>0==t.y>0;return yr(e)&&yr(t)&&r}}const Tr={panStep:100,bearingStep:15,pitchStep:10};class Pr{constructor(e){this._tr=new er(e);const t=Tr;this._panStep=t.panStep,this._bearingStep=t.bearingStep,this._pitchStep=t.pitchStep,this._rotationDisabled=!1;}reset(){this._active=!1;}keydown(e){if(e.altKey||e.ctrlKey||e.metaKey)return;let t=0,i=0,o=0,a=0,r=0;switch(e.keyCode){case 61:case 107:case 171:case 187:t=1;break;case 189:case 109:case 173:t=-1;break;case 37:e.shiftKey?i=-1:(e.preventDefault(),a=-1);break;case 39:e.shiftKey?i=1:(e.preventDefault(),a=1);break;case 38:e.shiftKey?o=1:(e.preventDefault(),r=-1);break;case 40:e.shiftKey?o=-1:(e.preventDefault(),r=1);break;default:return}return this._rotationDisabled&&(i=0,o=0),{cameraAnimation:s=>{const n=this._tr;s.easeTo({duration:300,easeId:\"keyboardHandler\",easing:Cr,zoom:t?Math.round(n.zoom)+t*(e.shiftKey?2:1):n.zoom,bearing:n.bearing+i*this._bearingStep,pitch:n.pitch+o*this._pitchStep,offset:[-a*this._panStep,-r*this._panStep],center:n.center},{originalEvent:e});}}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0;}enableRotation(){this._rotationDisabled=!1;}}function Cr(e){return e*(2-e)}const Ir=4.000244140625,Mr=1/450;class Sr{constructor(e,t){this._onTimeout=e=>{this._type=\"wheel\",this._delta-=this._lastValue,this._active||this._start(e);},this._map=e,this._tr=new er(e),this._triggerRenderFrame=t,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=Mr;}setZoomRate(e){this._defaultZoomRate=e;}setWheelZoomRate(e){this._wheelZoomRate=e;}isEnabled(){return !!this._enabled}isActive(){return !!this._active||void 0!==this._finishTimeout}isZooming(){return !!this._zooming}enable(e){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!e&&\"center\"===e.around);}disable(){this.isEnabled()&&(this._enabled=!1);}_shouldBePrevented(e){return !!this._map.cooperativeGestures.isEnabled()&&!(e.ctrlKey||this._map.cooperativeGestures.isBypassed(e))}wheel(e){if(!this.isEnabled())return;if(this._shouldBePrevented(e))return void this._map.cooperativeGestures.notifyGestureBlocked(\"wheel_zoom\",e);let t=e.deltaMode===WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY;const i=l(),o=i-(this._lastWheelEventTime||0);this._lastWheelEventTime=i,0!==t&&t%Ir==0?this._type=\"wheel\":0!==t&&Math.abs(t)<4?this._type=\"trackpad\":o>400?(this._type=null,this._lastValue=t,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(o*t)<200?\"trackpad\":\"wheel\",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,t+=this._lastValue)),e.shiftKey&&t&&(t/=4),this._type&&(this._lastWheelEvent=e,this._delta-=t,this._active||this._start(e)),e.preventDefault();}_start(e){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);const i=c.mousePos(this._map.getCanvas(),e),o=this._tr;this._aroundPoint=this._aroundCenter?o.transform.locationToScreenPoint(t.S.convert(o.center)):i,this._frameId||(this._frameId=!0,this._triggerRenderFrame());}renderFrame(){if(!this._frameId)return;if(this._frameId=null,!this.isActive())return;const e=this._tr.transform;if(\"number\"==typeof this._lastExpectedZoom){const t=e.zoom-this._lastExpectedZoom;\"number\"==typeof this._startZoom&&(this._startZoom+=t),\"number\"==typeof this._targetZoom&&(this._targetZoom+=t);}if(0!==this._delta){const i=\"wheel\"===this._type&&Math.abs(this._delta)>Ir?this._wheelZoomRate:this._defaultZoomRate;let o=2/(1+Math.exp(-Math.abs(this._delta*i)));this._delta<0&&0!==o&&(o=1/o);const a=\"number\"!=typeof this._targetZoom?e.scale:t.ah(this._targetZoom);this._targetZoom=e.constrain(e.getCameraLngLat(),t.ak(a*o)).zoom,\"wheel\"===this._type&&(this._startZoom=e.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0;}const i=\"number\"!=typeof this._targetZoom?e.zoom:this._targetZoom,o=this._startZoom,a=this._easing;let r,s=!1;if(\"wheel\"===this._type&&o&&a){const e=l()-this._lastWheelEventTime,n=Math.min((e+5)/200,1),c=a(n);r=t.C.number(o,i,c),n<1?this._frameId||(this._frameId=!0):s=!0;}else r=i,s=!0;return this._active=!0,s&&(this._active=!1,this._finishTimeout=setTimeout((()=>{this._zooming=!1,this._triggerRenderFrame(),delete this._targetZoom,delete this._lastExpectedZoom,delete this._finishTimeout;}),200)),this._lastExpectedZoom=r,{noInertia:!0,needsRenderFrame:!s,zoomDelta:r-e.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(e){let i=t.co;if(this._prevEase){const e=this._prevEase,o=(l()-e.start)/e.duration,a=e.easing(o+.01)-e.easing(o),r=.27/Math.sqrt(a*a+1e-4)*.01,s=Math.sqrt(.0729-r*r);i=t.cm(r,s,.25,1);}return this._prevEase={start:l(),duration:e,easing:i},i}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,delete this._lastExpectedZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);}}class Er{constructor(e,t){this._clickZoom=e,this._tapZoom=t;}enable(){this._clickZoom.enable(),this._tapZoom.enable();}disable(){this._clickZoom.disable(),this._tapZoom.disable();}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class Rr{constructor(e){this._tr=new er(e),this.reset();}reset(){this._active=!1;}dblclick(e,t){return e.preventDefault(),{cameraAnimation:i=>{i.easeTo({duration:300,zoom:this._tr.zoom+(e.shiftKey?-1:1),around:this._tr.unproject(t)},{originalEvent:e});}}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class Dr{constructor(){this._tap=new ar({numTouches:1,numTaps:1}),this.reset();}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,delete this._tapPoint,this._tap.reset();}touchstart(e,t,i){if(!this._swipePoint)if(this._tapTime){const o=t[0],a=e.timeStamp-this._tapTime<500,r=this._tapPoint.dist(o)<30;a&&r?i.length>0&&(this._swipePoint=o,this._swipeTouch=i[0].identifier):this.reset();}else this._tap.touchstart(e,t,i);}touchmove(e,t,i){if(this._tapTime){if(this._swipePoint){if(i[0].identifier!==this._swipeTouch)return;const o=t[0],a=o.y-this._swipePoint.y;return this._swipePoint=o,e.preventDefault(),this._active=!0,{zoomDelta:a/128}}}else this._tap.touchmove(e,t,i);}touchend(e,t,i){if(this._tapTime)this._swipePoint&&0===i.length&&this.reset();else {const o=this._tap.touchend(e,t,i);o&&(this._tapTime=e.timeStamp,this._tapPoint=o);}}touchcancel(){this.reset();}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class zr{constructor(e,t,i){this._el=e,this._mousePan=t,this._touchPan=i;}enable(e){this._inertiaOptions=e||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add(\"maplibregl-touch-drag-pan\");}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove(\"maplibregl-touch-drag-pan\");}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class Ar{constructor(e,t,i,o){this._pitchWithRotate=e.pitchWithRotate,this._rollEnabled=e.rollEnabled,this._mouseRotate=t,this._mousePitch=i,this._mouseRoll=o;}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable(),this._rollEnabled&&this._mouseRoll.enable();}disable(){this._mouseRotate.disable(),this._mousePitch.disable(),this._mouseRoll.disable();}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())&&(!this._rollEnabled||this._mouseRoll.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()||this._mouseRoll.isActive()}}class Lr{constructor(e,t,i,o){this._el=e,this._touchZoom=t,this._touchRotate=i,this._tapDragZoom=o,this._rotationDisabled=!1,this._enabled=!0;}enable(e){this._touchZoom.enable(e),this._rotationDisabled||this._touchRotate.enable(e),this._tapDragZoom.enable(),this._el.classList.add(\"maplibregl-touch-zoom-rotate\");}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove(\"maplibregl-touch-zoom-rotate\");}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable();}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable();}}class kr{constructor(e,t){this._bypassKey=-1!==navigator.userAgent.indexOf(\"Mac\")?\"metaKey\":\"ctrlKey\",this._map=e,this._options=t,this._enabled=!1;}isActive(){return !1}reset(){}_setupUI(){if(this._container)return;const e=this._map.getCanvasContainer();e.classList.add(\"maplibregl-cooperative-gestures\"),this._container=c.create(\"div\",\"maplibregl-cooperative-gesture-screen\",e);let t=this._map._getUIString(\"CooperativeGesturesHandler.WindowsHelpText\");\"metaKey\"===this._bypassKey&&(t=this._map._getUIString(\"CooperativeGesturesHandler.MacHelpText\"));const i=this._map._getUIString(\"CooperativeGesturesHandler.MobileHelpText\"),o=document.createElement(\"div\");o.className=\"maplibregl-desktop-message\",o.textContent=t,this._container.appendChild(o);const a=document.createElement(\"div\");a.className=\"maplibregl-mobile-message\",a.textContent=i,this._container.appendChild(a),this._container.setAttribute(\"aria-hidden\",\"true\");}_destroyUI(){this._container&&(c.remove(this._container),this._map.getCanvasContainer().classList.remove(\"maplibregl-cooperative-gestures\")),delete this._container;}enable(){this._setupUI(),this._enabled=!0;}disable(){this._enabled=!1,this._destroyUI();}isEnabled(){return this._enabled}isBypassed(e){return e[this._bypassKey]}notifyGestureBlocked(e,i){this._enabled&&(this._map.fire(new t.l(\"cooperativegestureprevented\",{gestureType:e,originalEvent:i})),this._container.classList.add(\"maplibregl-show\"),setTimeout((()=>{this._container.classList.remove(\"maplibregl-show\");}),100));}}const Fr=e=>e.zoom||e.drag||e.roll||e.pitch||e.rotate;class Br extends t.l{}function Or(e){return e.panDelta&&e.panDelta.mag()||e.zoomDelta||e.bearingDelta||e.pitchDelta||e.rollDelta}class jr{constructor(e,i){this.handleWindowEvent=e=>{this.handleEvent(e,`${e.type}Window`);},this.handleEvent=(e,i)=>{if(\"blur\"===e.type)return void this.stop(!0);this._updatingCamera=!0;const o=\"renderFrame\"===e.type?void 0:e,a={needsRenderFrame:!1},r={},s={};for(const{handlerName:n,handler:l,allowed:h}of this._handlers){if(!l.isEnabled())continue;let u;if(this._blockedByActive(s,h,n))l.reset();else if(l[i||e.type]){if(t.cp(e,i||e.type)){const t=c.mousePos(this._map.getCanvas(),e);u=l[i||e.type](e,t);}else if(t.cq(e,i||e.type)){const t=this._getMapTouches(e.touches),o=c.touchPos(this._map.getCanvas(),t);u=l[i||e.type](e,o,t);}else t.cr(i||e.type)||(u=l[i||e.type](e));this.mergeHandlerResult(a,r,u,n,o),u&&u.needsRenderFrame&&this._triggerRenderFrame();}(u||l.isActive())&&(s[n]=l);}const n={};for(const e in this._previousActiveHandlers)s[e]||(n[e]=o);this._previousActiveHandlers=s,(Object.keys(n).length||Or(a))&&(this._changes.push([a,r,n]),this._triggerRenderFrame()),(Object.keys(s).length||Or(a))&&this._map._stop(!0),this._updatingCamera=!1;const{cameraAnimation:l}=a;l&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],l(this._map));},this._map=e,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new Wa(e),this._bearingSnap=i.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(i);const o=this._el;this._listeners=[[o,\"touchstart\",{passive:!0}],[o,\"touchmove\",{passive:!1}],[o,\"touchend\",void 0],[o,\"touchcancel\",void 0],[o,\"mousedown\",void 0],[o,\"mousemove\",void 0],[o,\"mouseup\",void 0],[document,\"mousemove\",{capture:!0}],[document,\"mouseup\",void 0],[o,\"mouseover\",void 0],[o,\"mouseout\",void 0],[o,\"dblclick\",void 0],[o,\"click\",void 0],[o,\"keydown\",{capture:!1}],[o,\"keyup\",void 0],[o,\"wheel\",{passive:!1}],[o,\"contextmenu\",void 0],[window,\"blur\",void 0]];for(const[e,t,i]of this._listeners)c.addEventListener(e,t,e===document?this.handleWindowEvent:this.handleEvent,i);}destroy(){for(const[e,t,i]of this._listeners)c.removeEventListener(e,t,e===document?this.handleWindowEvent:this.handleEvent,i);}_addDefaultHandlers(e){const i=this._map,o=i.getCanvasContainer();this._add(\"mapEvent\",new Ya(i,e));const a=i.boxZoom=new tr(i,e);this._add(\"boxZoom\",a),e.interactive&&e.boxZoom&&a.enable();const r=i.cooperativeGestures=new kr(i,e.cooperativeGestures);this._add(\"cooperativeGestures\",r),e.cooperativeGestures&&r.enable();const s=new rr(i),n=new Rr(i);i.doubleClickZoom=new Er(n,s),this._add(\"tapZoom\",s),this._add(\"clickZoom\",n),e.interactive&&e.doubleClickZoom&&i.doubleClickZoom.enable();const l=new Dr;this._add(\"tapDragZoom\",l);const h=i.touchPitch=new wr(i);this._add(\"touchPitch\",h),e.interactive&&e.touchPitch&&i.touchPitch.enable(e.touchPitch);const u=()=>i.project(i.getCenter()),d=function({enable:e,clickTolerance:i,aroundCenter:o=!0,minPixelCenterThreshold:a=100,rotateDegreesPerPixelMoved:r=.8},s){const n=new hr({checkCorrectEvent:e=>0===c.mouseButton(e)&&e.ctrlKey||2===c.mouseButton(e)&&!e.ctrlKey});return new sr({clickTolerance:i,move:(e,i)=>{const n=s();if(o&&Math.abs(n.y-e.y)>a)return {bearingDelta:t.cn(new t.P(e.x,i.y),i,n)};let l=(i.x-e.x)*r;return o&&i.y<n.y&&(l=-l),{bearingDelta:l}},moveStateManager:n,enable:e,assignEvents:_r})}(e,u),_=function({enable:e,clickTolerance:t,pitchDegreesPerPixelMoved:i=-.5}){const o=new hr({checkCorrectEvent:e=>0===c.mouseButton(e)&&e.ctrlKey||2===c.mouseButton(e)});return new sr({clickTolerance:t,move:(e,t)=>({pitchDelta:(t.y-e.y)*i}),moveStateManager:o,enable:e,assignEvents:_r})}(e),p=function({enable:e,clickTolerance:t,rollDegreesPerPixelMoved:i=.3},o){const a=new hr({checkCorrectEvent:e=>2===c.mouseButton(e)&&e.ctrlKey});return new sr({clickTolerance:t,move:(e,t)=>{const a=o();let r=(t.x-e.x)*i;return t.y<a.y&&(r=-r),{rollDelta:r}},moveStateManager:a,enable:e,assignEvents:_r})}(e,u);i.dragRotate=new Ar(e,d,_,p),this._add(\"mouseRotate\",d,[\"mousePitch\"]),this._add(\"mousePitch\",_,[\"mouseRotate\",\"mouseRoll\"]),this._add(\"mouseRoll\",p,[\"mousePitch\"]),e.interactive&&e.dragRotate&&i.dragRotate.enable();const m=function({enable:e,clickTolerance:t}){const i=new hr({checkCorrectEvent:e=>0===c.mouseButton(e)&&!e.ctrlKey});return new sr({clickTolerance:t,move:(e,t)=>({around:t,panDelta:t.sub(e)}),activateOnStart:!0,moveStateManager:i,enable:e,assignEvents:_r})}(e),f=new pr(e,i);i.dragPan=new zr(o,m,f),this._add(\"mousePan\",m),this._add(\"touchPan\",f,[\"touchZoom\",\"touchRotate\"]),e.interactive&&e.dragPan&&i.dragPan.enable(e.dragPan);const g=new br,v=new vr;i.touchZoomRotate=new Lr(o,v,g,l),this._add(\"touchRotate\",g,[\"touchPan\",\"touchZoom\"]),this._add(\"touchZoom\",v,[\"touchPan\",\"touchRotate\"]),e.interactive&&e.touchZoomRotate&&i.touchZoomRotate.enable(e.touchZoomRotate),this._add(\"blockableMapEvent\",new Ja(i));const x=i.scrollZoom=new Sr(i,(()=>this._triggerRenderFrame()));this._add(\"scrollZoom\",x,[\"mousePan\"]),e.interactive&&e.scrollZoom&&i.scrollZoom.enable(e.scrollZoom);const b=i.keyboard=new Pr(i);this._add(\"keyboard\",b),e.interactive&&e.keyboard&&i.keyboard.enable();}_add(e,t,i){this._handlers.push({handlerName:e,handler:t,allowed:i}),this._handlersById[e]=t;}stop(e){if(!this._updatingCamera){for(const{handler:e}of this._handlers)e.reset();this._inertia.clear(),this._fireEvents({},{},e),this._changes=[];}}isActive(){for(const{handler:e}of this._handlers)if(e.isActive())return !0;return !1}isZooming(){return !!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return !!this._eventsInProgress.rotate}isMoving(){return Boolean(Fr(this._eventsInProgress))||this.isZooming()}_blockedByActive(e,t,i){for(const o in e)if(o!==i&&(!t||t.indexOf(o)<0))return !0;return !1}_getMapTouches(e){const t=[];for(const i of e)this._el.contains(i.target)&&t.push(i);return t}mergeHandlerResult(e,i,o,a,r){if(!o)return;t.e(e,o);const s={handlerName:a,originalEvent:o.originalEvent||r};void 0!==o.zoomDelta&&(i.zoom=s),void 0!==o.panDelta&&(i.drag=s),void 0!==o.rollDelta&&(i.roll=s),void 0!==o.pitchDelta&&(i.pitch=s),void 0!==o.bearingDelta&&(i.rotate=s);}_applyChanges(){const e={},i={},o={};for(const[a,r,s]of this._changes)a.panDelta&&(e.panDelta=(e.panDelta||new t.P(0,0))._add(a.panDelta)),a.zoomDelta&&(e.zoomDelta=(e.zoomDelta||0)+a.zoomDelta),a.bearingDelta&&(e.bearingDelta=(e.bearingDelta||0)+a.bearingDelta),a.pitchDelta&&(e.pitchDelta=(e.pitchDelta||0)+a.pitchDelta),a.rollDelta&&(e.rollDelta=(e.rollDelta||0)+a.rollDelta),void 0!==a.around&&(e.around=a.around),void 0!==a.pinchAround&&(e.pinchAround=a.pinchAround),a.noInertia&&(e.noInertia=a.noInertia),t.e(i,r),t.e(o,s);this._updateMapTransform(e,i,o),this._changes=[];}_updateMapTransform(e,t,i){const o=this._map,a=o._getTransformForUpdate(),r=o.terrain;if(!(Or(e)||r&&this._terrainMovement))return this._fireEvents(t,i,!0);o._stop(!0);let{panDelta:s,zoomDelta:n,bearingDelta:l,pitchDelta:c,rollDelta:h,around:u,pinchAround:d}=e;void 0!==d&&(u=d),u=u||o.transform.centerPoint,r&&!a.isPointOnMapSurface(u)&&(u=a.centerPoint);const _={panDelta:s,zoomDelta:n,rollDelta:h,pitchDelta:c,bearingDelta:l,around:u};this._map.cameraHelper.useGlobeControls&&!a.isPointOnMapSurface(u)&&(u=a.centerPoint);const p=u.distSqr(a.centerPoint)<.01?a.center:a.screenPointToLocation(s?u.sub(s):u);this._handleMapControls({terrain:r,tr:a,deltasForHelper:_,preZoomAroundLoc:p,combinedEventsInProgress:t,panDelta:s}),o._applyUpdatedTransform(a),this._map._update(),e.noInertia||this._inertia.record(e),this._fireEvents(t,i,!0);}_handleMapControls({terrain:e,tr:t,deltasForHelper:i,preZoomAroundLoc:o,combinedEventsInProgress:a,panDelta:r}){const s=this._map.cameraHelper;if(s.handleMapControlsRollPitchBearingZoom(i,t),e)return s.useGlobeControls?(this._terrainMovement||!a.drag&&!a.zoom||(this._terrainMovement=!0,this._map._elevationFreeze=!0),void s.handleMapControlsPan(i,t,o)):this._terrainMovement||!a.drag&&!a.zoom?void(a.drag&&this._terrainMovement&&r?t.setCenter(t.screenPointToLocation(t.centerPoint.sub(r))):s.handleMapControlsPan(i,t,o)):(this._terrainMovement=!0,this._map._elevationFreeze=!0,void s.handleMapControlsPan(i,t,o));s.handleMapControlsPan(i,t,o);}_fireEvents(e,i,o){const a=Fr(this._eventsInProgress),r=Fr(e),n={};for(const t in e){const{originalEvent:i}=e[t];this._eventsInProgress[t]||(n[`${t}start`]=i),this._eventsInProgress[t]=e[t];}!a&&r&&this._fireEvent(\"movestart\",r.originalEvent);for(const e in n)this._fireEvent(e,n[e]);r&&this._fireEvent(\"move\",r.originalEvent);for(const t in e){const{originalEvent:i}=e[t];this._fireEvent(t,i);}const l={};let c;for(const e in this._eventsInProgress){const{handlerName:t,originalEvent:o}=this._eventsInProgress[e];this._handlersById[t].isActive()||(delete this._eventsInProgress[e],c=i[t]||o,l[`${e}end`]=c);}for(const e in l)this._fireEvent(e,l[e]);const h=Fr(this._eventsInProgress),u=(a||r)&&!h;if(u&&this._terrainMovement){this._map._elevationFreeze=!1,this._terrainMovement=!1;const e=this._map._getTransformForUpdate();this._map.getCenterClampedToGround()&&e.recalculateZoomAndCenter(this._map.terrain),this._map._applyUpdatedTransform(e);}if(o&&u){this._updatingCamera=!0;const e=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),i=e=>0!==e&&-this._bearingSnap<e&&e<this._bearingSnap;!e||!e.essential&&s.prefersReducedMotion?(this._map.fire(new t.l(\"moveend\",{originalEvent:c})),i(this._map.getBearing())&&this._map.resetNorth()):(i(e.bearing||this._map.getBearing())&&(e.bearing=0),e.freezeElevation=!0,this._map.easeTo(e,{originalEvent:c})),this._updatingCamera=!1;}}_fireEvent(e,i){this._map.fire(new t.l(e,i?{originalEvent:i}:{}));}_requestFrame(){return this._map.triggerRepaint(),this._map._renderTaskQueue.add((e=>{delete this._frameId,this.handleEvent(new Br(\"renderFrame\",{timeStamp:e})),this._applyChanges();}))}_triggerRenderFrame(){void 0===this._frameId&&(this._frameId=this._requestFrame());}}class Nr extends t.E{constructor(e,t,i){super(),this._renderFrameCallback=()=>{const e=Math.min((l()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop();},this._moving=!1,this._zooming=!1,this.transform=e,this._bearingSnap=i.bearingSnap,this.cameraHelper=t,this.on(\"moveend\",(()=>{delete this._requestedCameraState;}));}migrateProjection(e,t){e.apply(this.transform),this.transform=e,this.cameraHelper=t;}getCenter(){return new t.S(this.transform.center.lng,this.transform.center.lat)}setCenter(e,t){return this.jumpTo({center:e},t)}getCenterElevation(){return this.transform.elevation}setCenterElevation(e,t){return this.jumpTo({elevation:e},t),this}getCenterClampedToGround(){return this._centerClampedToGround}setCenterClampedToGround(e){this._centerClampedToGround=e;}panBy(e,i,o){return e=t.P.convert(e).mult(-1),this.panTo(this.transform.center,t.e({offset:e},i),o)}panTo(e,i,o){return this.easeTo(t.e({center:e},i),o)}getZoom(){return this.transform.zoom}setZoom(e,t){return this.jumpTo({zoom:e},t),this}zoomTo(e,i,o){return this.easeTo(t.e({zoom:e},i),o)}zoomIn(e,t){return this.zoomTo(this.getZoom()+1,e,t),this}zoomOut(e,t){return this.zoomTo(this.getZoom()-1,e,t),this}getVerticalFieldOfView(){return this.transform.fov}setVerticalFieldOfView(e,i){return e!=this.transform.fov&&(this.transform.setFov(e),this.fire(new t.l(\"movestart\",i)).fire(new t.l(\"move\",i)).fire(new t.l(\"moveend\",i))),this}getBearing(){return this.transform.bearing}setBearing(e,t){return this.jumpTo({bearing:e},t),this}getPadding(){return this.transform.padding}setPadding(e,t){return this.jumpTo({padding:e},t),this}rotateTo(e,i,o){return this.easeTo(t.e({bearing:e},i),o)}resetNorth(e,i){return this.rotateTo(0,t.e({duration:1e3},e),i),this}resetNorthPitch(e,i){return this.easeTo(t.e({bearing:0,pitch:0,roll:0,duration:1e3},e),i),this}snapToNorth(e,t){return Math.abs(this.getBearing())<this._bearingSnap?this.resetNorth(e,t):this}getPitch(){return this.transform.pitch}setPitch(e,t){return this.jumpTo({pitch:e},t),this}getRoll(){return this.transform.roll}setRoll(e,t){return this.jumpTo({roll:e},t),this}cameraForBounds(e,t){e=$.convert(e).adjustAntiMeridian();const i=t&&t.bearing||0;return this._cameraForBoxAndBearing(e.getNorthWest(),e.getSouthEast(),i,t)}_cameraForBoxAndBearing(e,i,o,a){const r={top:0,bottom:0,right:0,left:0};if(\"number\"==typeof(a=t.e({padding:r,offset:[0,0],maxZoom:this.transform.maxZoom},a)).padding){const e=a.padding;a.padding={top:e,bottom:e,right:e,left:e};}const s=t.e(r,a.padding);a.padding=s;const n=this.transform,l=new $(e,i);return this.cameraHelper.cameraForBoxAndBearing(a,s,l,o,n)}fitBounds(e,t,i){return this._fitInternal(this.cameraForBounds(e,t),t,i)}fitScreenCoordinates(e,i,o,a,r){return this._fitInternal(this._cameraForBoxAndBearing(this.transform.screenPointToLocation(t.P.convert(e)),this.transform.screenPointToLocation(t.P.convert(i)),o,a),a,r)}_fitInternal(e,i,o){return e?(delete(i=t.e(e,i)).padding,i.linear?this.easeTo(i,o):this.flyTo(i,o)):this}jumpTo(e,i){this.stop();const o=this._getTransformForUpdate();let a=!1,r=!1,s=!1;const n=o.zoom;this.cameraHelper.handleJumpToCenterZoom(o,e);const l=o.zoom!==n;return \"elevation\"in e&&o.elevation!==+e.elevation&&o.setElevation(+e.elevation),\"bearing\"in e&&o.bearing!==+e.bearing&&(a=!0,o.setBearing(+e.bearing)),\"pitch\"in e&&o.pitch!==+e.pitch&&(r=!0,o.setPitch(+e.pitch)),\"roll\"in e&&o.roll!==+e.roll&&(s=!0,o.setRoll(+e.roll)),null==e.padding||o.isPaddingEqual(e.padding)||o.setPadding(e.padding),this._applyUpdatedTransform(o),this.fire(new t.l(\"movestart\",i)).fire(new t.l(\"move\",i)),l&&this.fire(new t.l(\"zoomstart\",i)).fire(new t.l(\"zoom\",i)).fire(new t.l(\"zoomend\",i)),a&&this.fire(new t.l(\"rotatestart\",i)).fire(new t.l(\"rotate\",i)).fire(new t.l(\"rotateend\",i)),r&&this.fire(new t.l(\"pitchstart\",i)).fire(new t.l(\"pitch\",i)).fire(new t.l(\"pitchend\",i)),s&&this.fire(new t.l(\"rollstart\",i)).fire(new t.l(\"roll\",i)).fire(new t.l(\"rollend\",i)),this.fire(new t.l(\"moveend\",i))}calculateCameraOptionsFromTo(e,i,o,a=0){const r=t.a1.fromLngLat(e,i),s=t.a1.fromLngLat(o,a),n=s.x-r.x,l=s.y-r.y,c=s.z-r.z,h=Math.hypot(n,l,c);if(0===h)throw new Error(\"Can't calculate camera options with same From and To\");const u=Math.hypot(n,l),d=t.ak(this.transform.cameraToCenterDistance/h/this.transform.tileSize),_=180*Math.atan2(n,-l)/Math.PI;let p=180*Math.acos(u/h)/Math.PI;return p=c<0?90-p:90+p,{center:s.toLngLat(),elevation:a,zoom:d,pitch:p,bearing:_}}calculateCameraOptionsFromCameraLngLatAltRotation(e,t,i,o,a){const r=this.transform.calculateCenterFromCameraLngLatAlt(e,t,i,o);return {center:r.center,elevation:r.elevation,zoom:r.zoom,bearing:i,pitch:o,roll:a}}easeTo(e,i){this._stop(!1,e.easeId),(!1===(e=t.e({offset:[0,0],duration:500,easing:t.co},e)).animate||!e.essential&&s.prefersReducedMotion)&&(e.duration=0);const o=this._getTransformForUpdate(),a=this.getBearing(),r=o.pitch,n=o.roll,l=\"bearing\"in e?this._normalizeBearing(e.bearing,a):a,c=\"pitch\"in e?+e.pitch:r,h=\"roll\"in e?this._normalizeBearing(e.roll,n):n,u=\"padding\"in e?e.padding:o.padding,d=t.P.convert(e.offset);let _,p;e.around&&(_=t.S.convert(e.around),p=o.locationToScreenPoint(_));const m={moving:this._moving,zooming:this._zooming,rotating:this._rotating,pitching:this._pitching,rolling:this._rolling},f=this.cameraHelper.handleEaseTo(o,{bearing:l,pitch:c,roll:h,padding:u,around:_,aroundPoint:p,offsetAsPoint:d,offset:e.offset,zoom:e.zoom,center:e.center});return this._rotating=this._rotating||a!==l,this._pitching=this._pitching||c!==r,this._rolling=this._rolling||h!==n,this._padding=!o.isPaddingEqual(u),this._zooming=this._zooming||f.isZooming,this._easeId=e.easeId,this._prepareEase(i,e.noMoveStart,m),this.terrain&&this._prepareElevation(f.elevationCenter),this._ease((t=>{f.easeFunc(t),this.terrain&&!e.freezeElevation&&this._updateElevation(t),this._applyUpdatedTransform(o),this._fireMoveEvents(i);}),(t=>{this.terrain&&e.freezeElevation&&this._finalizeElevation(),this._afterEase(i,t);}),e),this}_prepareEase(e,i,o={}){this._moving=!0,i||o.moving||this.fire(new t.l(\"movestart\",e)),this._zooming&&!o.zooming&&this.fire(new t.l(\"zoomstart\",e)),this._rotating&&!o.rotating&&this.fire(new t.l(\"rotatestart\",e)),this._pitching&&!o.pitching&&this.fire(new t.l(\"pitchstart\",e)),this._rolling&&!o.rolling&&this.fire(new t.l(\"rollstart\",e));}_prepareElevation(e){this._elevationCenter=e,this._elevationStart=this.transform.elevation,this._elevationTarget=this.terrain.getElevationForLngLatZoom(e,this.transform.tileZoom),this._elevationFreeze=!0;}_updateElevation(e){void 0!==this._elevationStart&&void 0!==this._elevationCenter||this._prepareElevation(this.transform.center),this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom));const i=this.terrain.getElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);if(e<1&&i!==this._elevationTarget){const t=this._elevationTarget-this._elevationStart;this._elevationStart+=e*(t-(i-(t*e+this._elevationStart))/(1-e)),this._elevationTarget=i;}this.transform.setElevation(t.C.number(this._elevationStart,this._elevationTarget,e));}_finalizeElevation(){this._elevationFreeze=!1,this.getCenterClampedToGround()&&this.transform.recalculateZoomAndCenter(this.terrain);}_getTransformForUpdate(){return this.transformCameraUpdate||this.terrain?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_elevateCameraIfInsideTerrain(e){if(!this.terrain&&e.elevation>=0&&e.pitch<=90)return {};const t=e.getCameraLngLat(),i=e.getCameraAltitude(),o=this.terrain?this.terrain.getElevationForLngLatZoom(t,e.zoom):0;if(i<o){const i=this.calculateCameraOptionsFromTo(t,o,e.center,e.elevation);return {pitch:i.pitch,zoom:i.zoom}}return {}}_applyUpdatedTransform(e){const t=[];if(t.push((e=>this._elevateCameraIfInsideTerrain(e))),this.transformCameraUpdate&&t.push((e=>this.transformCameraUpdate(e))),!t.length)return;const i=e.clone();for(const e of t){const t=i.clone(),{center:o,zoom:a,roll:r,pitch:s,bearing:n,elevation:l}=e(t);o&&t.setCenter(o),void 0!==l&&t.setElevation(l),void 0!==a&&t.setZoom(a),void 0!==r&&t.setRoll(r),void 0!==s&&t.setPitch(s),void 0!==n&&t.setBearing(n),i.apply(t);}this.transform.apply(i);}_fireMoveEvents(e){this.fire(new t.l(\"move\",e)),this._zooming&&this.fire(new t.l(\"zoom\",e)),this._rotating&&this.fire(new t.l(\"rotate\",e)),this._pitching&&this.fire(new t.l(\"pitch\",e)),this._rolling&&this.fire(new t.l(\"roll\",e));}_afterEase(e,i){if(this._easeId&&i&&this._easeId===i)return;delete this._easeId;const o=this._zooming,a=this._rotating,r=this._pitching,s=this._rolling;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._rolling=!1,this._padding=!1,o&&this.fire(new t.l(\"zoomend\",e)),a&&this.fire(new t.l(\"rotateend\",e)),r&&this.fire(new t.l(\"pitchend\",e)),s&&this.fire(new t.l(\"rollend\",e)),this.fire(new t.l(\"moveend\",e));}flyTo(e,i){if(!e.essential&&s.prefersReducedMotion){const o=t.Q(e,[\"center\",\"zoom\",\"bearing\",\"pitch\",\"roll\",\"elevation\",\"padding\"]);return this.jumpTo(o,i)}this.stop(),e=t.e({offset:[0,0],speed:1.2,curve:1.42,easing:t.co},e);const o=this._getTransformForUpdate(),a=o.bearing,r=o.pitch,n=o.roll,l=o.padding,c=\"bearing\"in e?this._normalizeBearing(e.bearing,a):a,h=\"pitch\"in e?+e.pitch:r,u=\"roll\"in e?this._normalizeBearing(e.roll,n):n,d=\"padding\"in e?e.padding:o.padding,_=t.P.convert(e.offset);let p=o.centerPoint.add(_);const m=o.screenPointToLocation(p),f=this.cameraHelper.handleFlyTo(o,{bearing:c,pitch:h,roll:u,padding:d,locationAtOffset:m,offsetAsPoint:_,center:e.center,minZoom:e.minZoom,zoom:e.zoom});let g=e.curve;const v=Math.max(o.width,o.height),x=v/f.scaleOfZoom,b=f.pixelPathLength;\"number\"==typeof f.scaleOfMinZoom&&(g=Math.sqrt(v/f.scaleOfMinZoom/b*2));const y=g*g;function w(e){const t=(x*x-v*v+(e?-1:1)*y*y*b*b)/(2*(e?x:v)*y*b);return Math.log(Math.sqrt(t*t+1)-t)}function T(e){return (Math.exp(e)-Math.exp(-e))/2}function P(e){return (Math.exp(e)+Math.exp(-e))/2}const C=w(!1);let I=function(e){return P(C)/P(C+g*e)},M=function(e){return v*((P(C)*(T(t=C+g*e)/P(t))-T(C))/y)/b;var t;},S=(w(!0)-C)/g;if(Math.abs(b)<2e-6||!isFinite(S)){if(Math.abs(v-x)<1e-6)return this.easeTo(e,i);const t=x<v?-1:1;S=Math.abs(Math.log(x/v))/g,M=()=>0,I=e=>Math.exp(t*g*e);}return e.duration=\"duration\"in e?+e.duration:1e3*S/(\"screenSpeed\"in e?+e.screenSpeed/g:+e.speed),e.maxDuration&&e.duration>e.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=a!==c,this._pitching=h!==r,this._rolling=u!==n,this._padding=!o.isPaddingEqual(d),this._prepareEase(i,!1),this.terrain&&this._prepareElevation(f.targetCenter),this._ease((s=>{const m=s*S,g=1/I(m),v=M(m);this._rotating&&o.setBearing(t.C.number(a,c,s)),this._pitching&&o.setPitch(t.C.number(r,h,s)),this._rolling&&o.setRoll(t.C.number(n,u,s)),this._padding&&(o.interpolatePadding(l,d,s),p=o.centerPoint.add(_)),f.easeFunc(s,g,v,p),this.terrain&&!e.freezeElevation&&this._updateElevation(s),this._applyUpdatedTransform(o),this._fireMoveEvents(i);}),(()=>{this.terrain&&e.freezeElevation&&this._finalizeElevation(),this._afterEase(i);}),e),this}isEasing(){return !!this._easeFrameId}stop(){return this._stop()}_stop(e,t){var i;if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){const e=this._onEaseEnd;delete this._onEaseEnd,e.call(this,t);}return e||null===(i=this.handlers)||void 0===i||i.stop(!1),this}_ease(e,t,i){!1===i.animate||0===i.duration?(e(1),t()):(this._easeStart=l(),this._easeOptions=i,this._onEaseFrame=e,this._onEaseEnd=t,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback));}_normalizeBearing(e,i){e=t.aO(e,-180,180);const o=Math.abs(e-i);return Math.abs(e-360-i)<o&&(e-=360),Math.abs(e+360-i)<o&&(e+=360),e}queryTerrainElevation(e){return this.terrain?this.terrain.getElevationForLngLatZoom(t.S.convert(e),this.transform.tileZoom):null}}const Zr={compact:!0,customAttribution:'<a href=\"https://maplibre.org/\" target=\"_blank\">MapLibre</a>'};class Ur{constructor(e=Zr){this._toggleAttribution=()=>{this._container.classList.contains(\"maplibregl-compact\")&&(this._container.classList.contains(\"maplibregl-compact-show\")?(this._container.setAttribute(\"open\",\"\"),this._container.classList.remove(\"maplibregl-compact-show\")):(this._container.classList.add(\"maplibregl-compact-show\"),this._container.removeAttribute(\"open\")));},this._updateData=e=>{!e||\"metadata\"!==e.sourceDataType&&\"visibility\"!==e.sourceDataType&&\"style\"!==e.dataType&&\"terrain\"!==e.type||this._updateAttributions();},this._updateCompact=()=>{this._map.getCanvasContainer().offsetWidth<=640||this._compact?!1===this._compact?this._container.setAttribute(\"open\",\"\"):this._container.classList.contains(\"maplibregl-compact\")||this._container.classList.contains(\"maplibregl-attrib-empty\")||(this._container.setAttribute(\"open\",\"\"),this._container.classList.add(\"maplibregl-compact\",\"maplibregl-compact-show\")):(this._container.setAttribute(\"open\",\"\"),this._container.classList.contains(\"maplibregl-compact\")&&this._container.classList.remove(\"maplibregl-compact\",\"maplibregl-compact-show\"));},this._updateCompactMinimize=()=>{this._container.classList.contains(\"maplibregl-compact\")&&this._container.classList.contains(\"maplibregl-compact-show\")&&this._container.classList.remove(\"maplibregl-compact-show\");},this.options=e;}getDefaultPosition(){return \"bottom-right\"}onAdd(e){return this._map=e,this._compact=this.options.compact,this._container=c.create(\"details\",\"maplibregl-ctrl maplibregl-ctrl-attrib\"),this._compactButton=c.create(\"summary\",\"maplibregl-ctrl-attrib-button\",this._container),this._compactButton.addEventListener(\"click\",this._toggleAttribution),this._setElementTitle(this._compactButton,\"ToggleAttribution\"),this._innerContainer=c.create(\"div\",\"maplibregl-ctrl-attrib-inner\",this._container),this._updateAttributions(),this._updateCompact(),this._map.on(\"styledata\",this._updateData),this._map.on(\"sourcedata\",this._updateData),this._map.on(\"terrain\",this._updateData),this._map.on(\"resize\",this._updateCompact),this._map.on(\"drag\",this._updateCompactMinimize),this._container}onRemove(){c.remove(this._container),this._map.off(\"styledata\",this._updateData),this._map.off(\"sourcedata\",this._updateData),this._map.off(\"terrain\",this._updateData),this._map.off(\"resize\",this._updateCompact),this._map.off(\"drag\",this._updateCompactMinimize),this._map=void 0,this._compact=void 0,this._attribHTML=void 0;}_setElementTitle(e,t){const i=this._map._getUIString(`AttributionControl.${t}`);e.title=i,e.setAttribute(\"aria-label\",i);}_updateAttributions(){if(!this._map.style)return;let e=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?e=e.concat(this.options.customAttribution.map((e=>\"string\"!=typeof e?\"\":e))):\"string\"==typeof this.options.customAttribution&&e.push(this.options.customAttribution)),this._map.style.stylesheet){const e=this._map.style.stylesheet;this.styleOwner=e.owner,this.styleId=e.id;}const t=this._map.style.sourceCaches;for(const i in t){const o=t[i];if(o.used||o.usedForTerrain){const t=o.getSource();t.attribution&&e.indexOf(t.attribution)<0&&e.push(t.attribution);}}e=e.filter((e=>String(e).trim())),e.sort(((e,t)=>e.length-t.length)),e=e.filter(((t,i)=>{for(let o=i+1;o<e.length;o++)if(e[o].indexOf(t)>=0)return !1;return !0}));const i=e.join(\" | \");i!==this._attribHTML&&(this._attribHTML=i,e.length?(this._innerContainer.innerHTML=c.sanitize(i),this._container.classList.remove(\"maplibregl-attrib-empty\")):this._container.classList.add(\"maplibregl-attrib-empty\"),this._updateCompact(),this._editLink=null);}}class Gr{constructor(e={}){this._updateCompact=()=>{const e=this._container.children;if(e.length){const t=e[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?!1!==this._compact&&t.classList.add(\"maplibregl-compact\"):t.classList.remove(\"maplibregl-compact\");}},this.options=e;}getDefaultPosition(){return \"bottom-left\"}onAdd(e){this._map=e,this._compact=this.options&&this.options.compact,this._container=c.create(\"div\",\"maplibregl-ctrl\");const t=c.create(\"a\",\"maplibregl-ctrl-logo\");return t.target=\"_blank\",t.rel=\"noopener nofollow\",t.href=\"https://maplibre.org/\",t.setAttribute(\"aria-label\",this._map._getUIString(\"LogoControl.Title\")),t.setAttribute(\"rel\",\"noopener nofollow\"),this._container.appendChild(t),this._container.style.display=\"block\",this._map.on(\"resize\",this._updateCompact),this._updateCompact(),this._container}onRemove(){c.remove(this._container),this._map.off(\"resize\",this._updateCompact),this._map=void 0,this._compact=void 0;}}class Vr{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1;}add(e){const t=++this._id;return this._queue.push({callback:e,id:t,cancelled:!1}),t}remove(e){const t=this._currentlyRunning,i=t?this._queue.concat(t):this._queue;for(const t of i)if(t.id===e)return void(t.cancelled=!0)}run(e=0){if(this._currentlyRunning)throw new Error(\"Attempting to run(), but is already running.\");const t=this._currentlyRunning=this._queue;this._queue=[];for(const i of t)if(!i.cancelled&&(i.callback(e),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1;}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[];}}var $r=t.aJ([{name:\"a_pos3d\",type:\"Int16\",components:3}]);class Wr extends t.E{constructor(e){super(),this._lastTilesetChange=l(),this.sourceCache=e,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.deltaZoom=1,this.tileSize=e._source.tileSize*2**this.deltaZoom,e.usedForTerrain=!0,e.tileSize=this.tileSize;}destruct(){this.sourceCache.usedForTerrain=!1,this.sourceCache.tileSize=null;}update(e,i){this.sourceCache.update(e,i),this._renderableTilesKeys=[];const o={};for(const a of we(e,{tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:i,calculateTileZoom:this.sourceCache._source.calculateTileZoom}))o[a.key]=!0,this._renderableTilesKeys.push(a.key),this._tiles[a.key]||(a.terrainRttPosMatrix32f=new Float64Array(16),t.bZ(a.terrainRttPosMatrix32f,0,t.$,t.$,0,0,1),this._tiles[a.key]=new le(a,this.tileSize),this._lastTilesetChange=l());for(const e in this._tiles)o[e]||delete this._tiles[e];}freeRtt(e){for(const t in this._tiles){const i=this._tiles[t];(!e||i.tileID.equals(e)||i.tileID.isChildOf(e)||e.isChildOf(i.tileID))&&(i.rtt=[]);}}getRenderableTiles(){return this._renderableTilesKeys.map((e=>this.getTileByID(e)))}getTileByID(e){return this._tiles[e]}getTerrainCoords(e,t){return t?this._getTerrainCoordsForTileRanges(e,t):this._getTerrainCoordsForRegularTile(e)}_getTerrainCoordsForRegularTile(e){const i={};for(const o of this._renderableTilesKeys){const a=this._tiles[o].tileID,r=e.clone(),s=t.ba();if(a.canonical.equals(e.canonical))t.bZ(s,0,t.$,t.$,0,0,1);else if(a.canonical.isChildOf(e.canonical)){const i=a.canonical.z-e.canonical.z,o=a.canonical.x-(a.canonical.x>>i<<i),r=a.canonical.y-(a.canonical.y>>i<<i),n=t.$>>i;t.bZ(s,0,n,n,0,0,1),t.M(s,s,[-o*n,-r*n,0]);}else {if(!e.canonical.isChildOf(a.canonical))continue;{const i=e.canonical.z-a.canonical.z,o=e.canonical.x-(e.canonical.x>>i<<i),r=e.canonical.y-(e.canonical.y>>i<<i),n=t.$>>i;t.bZ(s,0,t.$,t.$,0,0,1),t.M(s,s,[o*n,r*n,0]),t.N(s,s,[1/2**i,1/2**i,0]);}}r.terrainRttPosMatrix32f=new Float32Array(s),i[o]=r;}return i}_getTerrainCoordsForTileRanges(e,i){const o={};for(const a of this._renderableTilesKeys){const r=this._tiles[a].tileID;if(!this._isWithinTileRanges(r,i))continue;const s=e.clone(),n=t.ba();if(r.canonical.z===e.canonical.z){const i=e.canonical.x-r.canonical.x,o=e.canonical.y-r.canonical.y;t.bZ(n,0,t.$,t.$,0,0,1),t.M(n,n,[i*t.$,o*t.$,0]);}else if(r.canonical.z>e.canonical.z){const i=r.canonical.z-e.canonical.z,o=r.canonical.x-(r.canonical.x>>i<<i),a=r.canonical.y-(r.canonical.y>>i<<i),s=e.canonical.x-(r.canonical.x>>i),l=e.canonical.y-(r.canonical.y>>i),c=t.$>>i;t.bZ(n,0,c,c,0,0,1),t.M(n,n,[-o*c+s*t.$,-a*c+l*t.$,0]);}else {const i=e.canonical.z-r.canonical.z,o=e.canonical.x-(e.canonical.x>>i<<i),a=e.canonical.y-(e.canonical.y>>i<<i),s=(e.canonical.x>>i)-r.canonical.x,l=(e.canonical.y>>i)-r.canonical.y,c=t.$<<i;t.bZ(n,0,c,c,0,0,1),t.M(n,n,[o*t.$+s*c,a*t.$+l*c,0]);}s.terrainRttPosMatrix32f=new Float32Array(n),o[a]=s;}return o}getSourceTile(e,t){const i=this.sourceCache._source;let o=e.overscaledZ-this.deltaZoom;if(o>i.maxzoom&&(o=i.maxzoom),o<i.minzoom)return null;this._sourceTileCache[e.key]||(this._sourceTileCache[e.key]=e.scaledTo(o).key);let a=this.sourceCache.getTileByID(this._sourceTileCache[e.key]);if((!a||!a.dem)&&t)for(;o>=i.minzoom&&(!a||!a.dem);)a=this.sourceCache.getTileByID(e.scaledTo(o--).key);return a}anyTilesAfterTime(e=Date.now()){return this._lastTilesetChange>=e}_isWithinTileRanges(e,t){return t[e.canonical.z]&&e.canonical.x>=t[e.canonical.z].minTileX&&e.canonical.x<=t[e.canonical.z].maxTileX&&e.canonical.y>=t[e.canonical.z].minTileY&&e.canonical.y<=t[e.canonical.z].maxTileY}}class qr{constructor(e,t,i){this._meshCache={},this.painter=e,this.sourceCache=new Wr(t),this.options=i,this.exaggeration=\"number\"==typeof i.exaggeration?i.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024;}getDEMElevation(e,i,o,a=t.$){var r;if(!(i>=0&&i<a&&o>=0&&o<a))return 0;const s=this.getTerrainData(e),n=null===(r=s.tile)||void 0===r?void 0:r.dem;if(!n)return 0;const l=t.cs([],[i/a*t.$,o/a*t.$],s.u_terrain_matrix),c=[l[0]*n.dim,l[1]*n.dim],h=Math.floor(c[0]),u=Math.floor(c[1]),d=c[0]-h,_=c[1]-u;return n.get(h,u)*(1-d)*(1-_)+n.get(h+1,u)*d*(1-_)+n.get(h,u+1)*(1-d)*_+n.get(h+1,u+1)*d*_}getElevationForLngLatZoom(e,i){if(!t.ct(i,e.wrap()))return 0;const{tileID:o,mercatorX:a,mercatorY:r}=this._getOverscaledTileIDFromLngLatZoom(e,i);return this.getElevation(o,a%t.$,r%t.$,t.$)}getElevation(e,i,o,a=t.$){return this.getDEMElevation(e,i,o,a)*this.exaggeration}getTerrainData(e){if(!this._emptyDemTexture){const e=this.painter.context,i=new t.R({width:1,height:1},new Uint8Array(4));this._emptyDepthTexture=new t.T(e,i,e.gl.RGBA,{premultiply:!1}),this._emptyDemUnpack=[0,0,0,0],this._emptyDemTexture=new t.T(e,new t.R({width:1,height:1}),e.gl.RGBA,{premultiply:!1}),this._emptyDemTexture.bind(e.gl.NEAREST,e.gl.CLAMP_TO_EDGE),this._emptyDemMatrix=t.ai([]);}const i=this.sourceCache.getSourceTile(e,!0);if(i&&i.dem&&(!i.demTexture||i.needsTerrainPrepare)){const e=this.painter.context;i.demTexture=this.painter.getTileTexture(i.dem.stride),i.demTexture?i.demTexture.update(i.dem.getPixels(),{premultiply:!1}):i.demTexture=new t.T(e,i.dem.getPixels(),e.gl.RGBA,{premultiply:!1}),i.demTexture.bind(e.gl.NEAREST,e.gl.CLAMP_TO_EDGE),i.needsTerrainPrepare=!1;}const o=i&&i+i.tileID.key+e.key;if(o&&!this._demMatrixCache[o]){const o=this.sourceCache.sourceCache._source.maxzoom;let a=e.canonical.z-i.tileID.canonical.z;e.overscaledZ>e.canonical.z&&(e.canonical.z>=o?a=e.canonical.z-o:t.w(\"cannot calculate elevation if elevation maxzoom > source.maxzoom\"));const r=e.canonical.x-(e.canonical.x>>a<<a),s=e.canonical.y-(e.canonical.y>>a<<a),n=t.cu(new Float64Array(16),[1/(t.$<<a),1/(t.$<<a),0]);t.M(n,n,[r*t.$,s*t.$,0]),this._demMatrixCache[e.key]={matrix:n,coord:e};}return {u_depth:2,u_terrain:3,u_terrain_dim:i&&i.dem&&i.dem.dim||1,u_terrain_matrix:o?this._demMatrixCache[e.key].matrix:this._emptyDemMatrix,u_terrain_unpack:i&&i.dem&&i.dem.getUnpackVector()||this._emptyDemUnpack,u_terrain_exaggeration:this.exaggeration,texture:(i&&i.demTexture||this._emptyDemTexture).texture,depthTexture:(this._fboDepthTexture||this._emptyDepthTexture).texture,tile:i}}getFramebuffer(e){const i=this.painter,o=i.width/devicePixelRatio,a=i.height/devicePixelRatio;return !this._fbo||this._fbo.width===o&&this._fbo.height===a||(this._fbo.destroy(),this._fboCoordsTexture.destroy(),this._fboDepthTexture.destroy(),delete this._fbo,delete this._fboDepthTexture,delete this._fboCoordsTexture),this._fboCoordsTexture||(this._fboCoordsTexture=new t.T(i.context,{width:o,height:a,data:null},i.context.gl.RGBA,{premultiply:!1}),this._fboCoordsTexture.bind(i.context.gl.NEAREST,i.context.gl.CLAMP_TO_EDGE)),this._fboDepthTexture||(this._fboDepthTexture=new t.T(i.context,{width:o,height:a,data:null},i.context.gl.RGBA,{premultiply:!1}),this._fboDepthTexture.bind(i.context.gl.NEAREST,i.context.gl.CLAMP_TO_EDGE)),this._fbo||(this._fbo=i.context.createFramebuffer(o,a,!0,!1),this._fbo.depthAttachment.set(i.context.createRenderbuffer(i.context.gl.DEPTH_COMPONENT16,o,a))),this._fbo.colorAttachment.set(\"coords\"===e?this._fboCoordsTexture.texture:this._fboDepthTexture.texture),this._fbo}getCoordsTexture(){const e=this.painter.context;if(this._coordsTexture)return this._coordsTexture;const i=new Uint8Array(this._coordsTextureSize*this._coordsTextureSize*4);for(let e=0,t=0;e<this._coordsTextureSize;e++)for(let o=0;o<this._coordsTextureSize;o++,t+=4)i[t+0]=255&o,i[t+1]=255&e,i[t+2]=o>>8<<4|e>>8,i[t+3]=0;const o=new t.R({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(i.buffer)),a=new t.T(e,o,e.gl.RGBA,{premultiply:!1});return a.bind(e.gl.NEAREST,e.gl.CLAMP_TO_EDGE),this._coordsTexture=a,a}pointCoordinate(e){this.painter.maybeDrawDepthAndCoords(!0);const i=new Uint8Array(4),o=this.painter.context,a=o.gl,r=Math.round(e.x*this.painter.pixelRatio/devicePixelRatio),s=Math.round(e.y*this.painter.pixelRatio/devicePixelRatio),n=Math.round(this.painter.height/devicePixelRatio);o.bindFramebuffer.set(this.getFramebuffer(\"coords\").framebuffer),a.readPixels(r,n-s-1,1,1,a.RGBA,a.UNSIGNED_BYTE,i),o.bindFramebuffer.set(null);const l=i[0]+(i[2]>>4<<8),c=i[1]+((15&i[2])<<8),h=this.coordsIndex[255-i[3]],u=h&&this.sourceCache.getTileByID(h);if(!u)return null;const d=this._coordsTextureSize,_=(1<<u.tileID.canonical.z)*d;return new t.a1((u.tileID.canonical.x*d+l)/_+u.tileID.wrap,(u.tileID.canonical.y*d+c)/_,this.getElevation(u.tileID,l,c,d))}depthAtPoint(e){const t=new Uint8Array(4),i=this.painter.context,o=i.gl;return i.bindFramebuffer.set(this.getFramebuffer(\"depth\").framebuffer),o.readPixels(e.x,this.painter.height/devicePixelRatio-e.y-1,1,1,o.RGBA,o.UNSIGNED_BYTE,t),i.bindFramebuffer.set(null),(t[0]/16777216+t[1]/65536+t[2]/256+t[3])/256}getTerrainMesh(e){var i;const o=(null===(i=this.painter.style.projection)||void 0===i?void 0:i.transitionState)>0,a=o&&0===e.canonical.y,r=o&&e.canonical.y===(1<<e.canonical.z)-1,s=`m_${a?\"n\":\"\"}_${r?\"s\":\"\"}`;if(this._meshCache[s])return this._meshCache[s];const n=this.painter.context,l=new t.cv,c=new t.aN,h=this.meshSize,u=t.$/h,d=h*h;for(let e=0;e<=h;e++)for(let t=0;t<=h;t++)l.emplaceBack(t*u,e*u,0);for(let e=0;e<d;e+=h+1)for(let t=0;t<h;t++)c.emplaceBack(t+e,h+t+e+1,h+t+e+2),c.emplaceBack(t+e,h+t+e+2,t+e+1);const _=l.length,p=_+(h+1),m=(h+1)*h,f=a?t.bh:0,g=a?0:1,v=r?t.bi:t.$,x=r?0:1;for(let e=0;e<=h;e++)l.emplaceBack(e*u,f,g);for(let e=0;e<=h;e++)l.emplaceBack(e*u,v,x);for(let e=0;e<h;e++)c.emplaceBack(m+e,p+e,p+e+1),c.emplaceBack(m+e,p+e+1,m+e+1),c.emplaceBack(0+e,_+e+1,_+e),c.emplaceBack(0+e,0+e+1,_+e+1);const b=l.length,y=b+2*(h+1);for(const e of [0,1])for(let i=0;i<=h;i++)for(const o of [0,1])l.emplaceBack(e*t.$,i*u,o);for(let e=0;e<2*h;e+=2)c.emplaceBack(b+e,b+e+1,b+e+3),c.emplaceBack(b+e,b+e+3,b+e+2),c.emplaceBack(y+e,y+e+3,y+e+1),c.emplaceBack(y+e,y+e+2,y+e+3);const w=new It(n.createVertexBuffer(l,$r.members),n.createIndexBuffer(c),t.aM.simpleSegment(0,0,l.length,c.length));return this._meshCache[s]=w,w}getMeshFrameDelta(e){return 2*Math.PI*t.bu/Math.pow(2,Math.max(e,0))/5}getMinTileElevationForLngLatZoom(e,t){var i;const{tileID:o}=this._getOverscaledTileIDFromLngLatZoom(e,t);return null!==(i=this.getMinMaxElevation(o).minElevation)&&void 0!==i?i:0}getMinMaxElevation(e){const t=this.getTerrainData(e).tile,i={minElevation:null,maxElevation:null};return t&&t.dem&&(i.minElevation=t.dem.min*this.exaggeration,i.maxElevation=t.dem.max*this.exaggeration),i}_getOverscaledTileIDFromLngLatZoom(e,i){const o=t.a1.fromLngLat(e.wrap()),a=(1<<i)*t.$,r=o.x*a,s=o.y*a,n=Math.floor(r/t.$),l=Math.floor(s/t.$);return {tileID:new t.Z(i,0,i,n,l),mercatorX:r,mercatorY:s}}}class Hr{constructor(e,t,i){this._context=e,this._size=t,this._tileSize=i,this._objects=[],this._recentlyUsed=[],this._stamp=0;}destruct(){for(const e of this._objects)e.texture.destroy(),e.fbo.destroy();}_createObject(e){const i=this._context.createFramebuffer(this._tileSize,this._tileSize,!0,!0),o=new t.T(this._context,{width:this._tileSize,height:this._tileSize,data:null},this._context.gl.RGBA);return o.bind(this._context.gl.LINEAR,this._context.gl.CLAMP_TO_EDGE),this._context.extTextureFilterAnisotropic&&this._context.gl.texParameterf(this._context.gl.TEXTURE_2D,this._context.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,this._context.extTextureFilterAnisotropicMax),i.depthAttachment.set(this._context.createRenderbuffer(this._context.gl.DEPTH_STENCIL,this._tileSize,this._tileSize)),i.colorAttachment.set(o.texture),{id:e,fbo:i,texture:o,stamp:-1,inUse:!1}}getObjectForId(e){return this._objects[e]}useObject(e){e.inUse=!0,this._recentlyUsed=this._recentlyUsed.filter((t=>e.id!==t)),this._recentlyUsed.push(e.id);}stampObject(e){e.stamp=++this._stamp;}getOrCreateFreeObject(){for(const e of this._recentlyUsed)if(!this._objects[e].inUse)return this._objects[e];if(this._objects.length>=this._size)throw new Error(\"No free RenderPool available, call freeAllObjects() required!\");const e=this._createObject(this._objects.length);return this._objects.push(e),e}freeObject(e){e.inUse=!1;}freeAllObjects(){for(const e of this._objects)this.freeObject(e);}isFull(){return !(this._objects.length<this._size)&&!1===this._objects.some((e=>!e.inUse))}}const Xr={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0,\"color-relief\":!0};class Kr{constructor(e,t){this.painter=e,this.terrain=t,this.pool=new Hr(e.context,30,t.sourceCache.tileSize*t.qualityFactor);}destruct(){this.pool.destruct();}getTexture(e){return this.pool.getObjectForId(e.rtt[this._stacks.length-1].id).texture}prepareForRender(e,t){this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.sourceCache.getRenderableTiles(),this._renderableLayerIds=e._order.filter((i=>!e._layers[i].isHidden(t))),this._coordsAscending={};for(const t in e.sourceCaches){this._coordsAscending[t]={};const i=e.sourceCaches[t].getVisibleCoordinates(),o=e.sourceCaches[t].getSource(),a=o instanceof Q?o.terrainTileRanges:null;for(const e of i){const i=this.terrain.sourceCache.getTerrainCoords(e,a);for(const e in i)this._coordsAscending[t][e]||(this._coordsAscending[t][e]=[]),this._coordsAscending[t][e].push(i[e]);}}this._coordsAscendingStr={};for(const t of e._order){const i=e._layers[t],o=i.source;if(Xr[i.type]&&!this._coordsAscendingStr[o]){this._coordsAscendingStr[o]={};for(const e in this._coordsAscending[o])this._coordsAscendingStr[o][e]=this._coordsAscending[o][e].map((e=>e.key)).sort().join();}}for(const e of this._renderableTiles)for(const t in this._coordsAscendingStr){const i=this._coordsAscendingStr[t][e.tileID.key];i&&i!==e.rttCoords[t]&&(e.rtt=[]);}}renderLayer(e,i){if(e.isHidden(this.painter.transform.zoom))return !1;const o=Object.assign(Object.assign({},i),{isRenderingToTexture:!0}),a=e.type,r=this.painter,s=this._renderableLayerIds[this._renderableLayerIds.length-1]===e.id;if(Xr[a]&&(this._prevType&&Xr[this._prevType]||this._stacks.push([]),this._prevType=a,this._stacks[this._stacks.length-1].push(e.id),!s))return !0;if(Xr[this._prevType]||Xr[a]&&s){this._prevType=a;const e=this._stacks.length-1,i=this._stacks[e]||[];for(const a of this._renderableTiles){if(this.pool.isFull()&&(ka(this.painter,this.terrain,this._rttTiles,o),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(a),a.rtt[e]){const t=this.pool.getObjectForId(a.rtt[e].id);if(t.stamp===a.rtt[e].stamp){this.pool.useObject(t);continue}}const s=this.pool.getOrCreateFreeObject();this.pool.useObject(s),this.pool.stampObject(s),a.rtt[e]={id:s.id,stamp:s.stamp},r.context.bindFramebuffer.set(s.fbo.framebuffer),r.context.clear({color:t.bf.transparent,stencil:0}),r.currentStencilSource=void 0;for(let e=0;e<i.length;e++){const t=r.style._layers[i[e]],n=t.source?this._coordsAscending[t.source][a.tileID.key]:[a.tileID];r.context.viewport.set([0,0,s.fbo.width,s.fbo.height]),r._renderTileClippingMasks(t,n,!0),r.renderLayer(r,r.style.sourceCaches[t.source],t,n,o),t.source&&(a.rttCoords[t.source]=this._coordsAscendingStr[t.source][a.tileID.key]);}}return ka(this.painter,this.terrain,this._rttTiles,o),this._rttTiles=[],this.pool.freeAllObjects(),Xr[a]}return !1}}const Qr={\"AttributionControl.ToggleAttribution\":\"Toggle attribution\",\"AttributionControl.MapFeedback\":\"Map feedback\",\"FullscreenControl.Enter\":\"Enter fullscreen\",\"FullscreenControl.Exit\":\"Exit fullscreen\",\"GeolocateControl.FindMyLocation\":\"Find my location\",\"GeolocateControl.LocationNotAvailable\":\"Location not available\",\"LogoControl.Title\":\"MapLibre logo\",\"Map.Title\":\"Map\",\"Marker.Title\":\"Map marker\",\"NavigationControl.ResetBearing\":\"Reset bearing to north\",\"NavigationControl.ZoomIn\":\"Zoom in\",\"NavigationControl.ZoomOut\":\"Zoom out\",\"Popup.Close\":\"Close popup\",\"ScaleControl.Feet\":\"ft\",\"ScaleControl.Meters\":\"m\",\"ScaleControl.Kilometers\":\"km\",\"ScaleControl.Miles\":\"mi\",\"ScaleControl.NauticalMiles\":\"nm\",\"GlobeControl.Enable\":\"Enable globe\",\"GlobeControl.Disable\":\"Disable globe\",\"TerrainControl.Enable\":\"Enable terrain\",\"TerrainControl.Disable\":\"Disable terrain\",\"CooperativeGesturesHandler.WindowsHelpText\":\"Use Ctrl + scroll to zoom the map\",\"CooperativeGesturesHandler.MacHelpText\":\"Use ⌘ + scroll to zoom the map\",\"CooperativeGesturesHandler.MobileHelpText\":\"Use two fingers to move the map\"},Yr=i,Jr={hash:!1,interactive:!0,bearingSnap:7,attributionControl:Zr,maplibreLogo:!1,refreshExpiredTiles:!0,canvasContextAttributes:{antialias:!1,preserveDrawingBuffer:!1,powerPreference:\"high-performance\",failIfMajorPerformanceCaveat:!1,desynchronized:!1,contextType:void 0},scrollZoom:!0,minZoom:-2,maxZoom:22,minPitch:0,maxPitch:60,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,touchPitch:!0,cooperativeGestures:!1,trackResize:!0,center:[0,0],elevation:0,zoom:0,bearing:0,pitch:0,roll:0,renderWorldCopies:!0,maxTileCacheSize:null,maxTileCacheZoomLevels:t.a.MAX_TILE_CACHE_ZOOM_LEVELS,transformRequest:null,transformCameraUpdate:null,transformConstrain:null,fadeDuration:300,crossSourceCollisions:!0,clickTolerance:3,localIdeographFontFamily:\"sans-serif\",pitchWithRotate:!0,rollEnabled:!1,validateStyle:!0,maxCanvasSize:[4096,4096],cancelPendingTileRequestsWhileZooming:!0,centerClampedToGround:!0},es={showCompass:!0,showZoom:!0,visualizePitch:!1,visualizeRoll:!0};class ts{constructor(e,i,o=!1){this.mousedown=e=>{this.startMove(e,c.mousePos(this.element,e)),c.addEventListener(window,\"mousemove\",this.mousemove),c.addEventListener(window,\"mouseup\",this.mouseup);},this.mousemove=e=>{this.move(e,c.mousePos(this.element,e));},this.mouseup=e=>{this._rotatePitchHandler.dragEnd(e),this.offTemp();},this.touchstart=e=>{1!==e.targetTouches.length?this.reset():(this._startPos=this._lastPos=c.touchPos(this.element,e.targetTouches)[0],this.startMove(e,this._startPos),c.addEventListener(window,\"touchmove\",this.touchmove,{passive:!1}),c.addEventListener(window,\"touchend\",this.touchend));},this.touchmove=e=>{1!==e.targetTouches.length?this.reset():(this._lastPos=c.touchPos(this.element,e.targetTouches)[0],this.move(e,this._lastPos));},this.touchend=e=>{0===e.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)<this._clickTolerance&&this.element.click(),delete this._startPos,delete this._lastPos,this.offTemp();},this.reset=()=>{this._rotatePitchHandler.reset(),delete this._startPos,delete this._lastPos,this.offTemp();},this._clickTolerance=10,this.element=i;const a=new dr;this._rotatePitchHandler=new sr({clickTolerance:3,move:(e,a)=>{const r=i.getBoundingClientRect(),s=new t.P((r.bottom-r.top)/2,(r.right-r.left)/2);return {bearingDelta:t.cn(new t.P(e.x,a.y),a,s),pitchDelta:o?-.5*(a.y-e.y):void 0}},moveStateManager:a,enable:!0,assignEvents:()=>{}}),this.map=e,c.addEventListener(i,\"mousedown\",this.mousedown),c.addEventListener(i,\"touchstart\",this.touchstart,{passive:!1}),c.addEventListener(i,\"touchcancel\",this.reset);}startMove(e,t){this._rotatePitchHandler.dragStart(e,t),c.disableDrag();}move(e,t){const i=this.map,{bearingDelta:o,pitchDelta:a}=this._rotatePitchHandler.dragMove(e,t)||{};o&&i.setBearing(i.getBearing()+o),a&&i.setPitch(i.getPitch()+a);}off(){const e=this.element;c.removeEventListener(e,\"mousedown\",this.mousedown),c.removeEventListener(e,\"touchstart\",this.touchstart,{passive:!1}),c.removeEventListener(window,\"touchmove\",this.touchmove,{passive:!1}),c.removeEventListener(window,\"touchend\",this.touchend),c.removeEventListener(e,\"touchcancel\",this.reset),this.offTemp();}offTemp(){c.enableDrag(),c.removeEventListener(window,\"mousemove\",this.mousemove),c.removeEventListener(window,\"mouseup\",this.mouseup),c.removeEventListener(window,\"touchmove\",this.touchmove,{passive:!1}),c.removeEventListener(window,\"touchend\",this.touchend);}}let is;function os(e,i,o,a=!1){if(a||!o.getCoveringTilesDetailsProvider().allowWorldCopies())return null==e?void 0:e.wrap();const r=new t.S(e.lng,e.lat);if(e=new t.S(e.lng,e.lat),i){const a=new t.S(e.lng-360,e.lat),r=new t.S(e.lng+360,e.lat),s=o.locationToScreenPoint(e).distSqr(i);o.locationToScreenPoint(a).distSqr(i)<s?e=a:o.locationToScreenPoint(r).distSqr(i)<s&&(e=r);}for(;Math.abs(e.lng-o.center.lng)>180;){const t=o.locationToScreenPoint(e);if(t.x>=0&&t.y>=0&&t.x<=o.width&&t.y<=o.height)break;e.lng>o.center.lng?e.lng-=360:e.lng+=360;}return e.lng!==r.lng&&o.isPointOnMapSurface(o.locationToScreenPoint(e))?e:r}const as={center:\"translate(-50%,-50%)\",top:\"translate(-50%,0)\",\"top-left\":\"translate(0,0)\",\"top-right\":\"translate(-100%,0)\",bottom:\"translate(-50%,-100%)\",\"bottom-left\":\"translate(0,-100%)\",\"bottom-right\":\"translate(-100%,-100%)\",left:\"translate(0,-50%)\",right:\"translate(-100%,-50%)\"};function rs(e,t,i){const o=e.classList;for(const e in as)o.remove(`maplibregl-${i}-anchor-${e}`);o.add(`maplibregl-${i}-anchor-${t}`);}class ss extends t.E{constructor(e){if(super(),this._onKeyPress=e=>{const t=e.code,i=e.charCode||e.keyCode;\"Space\"!==t&&\"Enter\"!==t&&32!==i&&13!==i||this.togglePopup();},this._onMapClick=e=>{const t=e.originalEvent.target,i=this._element;this._popup&&(t===i||i.contains(t))&&this.togglePopup();},this._update=e=>{if(!this._map)return;const t=this._map.loaded()&&!this._map.isMoving();(\"terrain\"===(null==e?void 0:e.type)||\"render\"===(null==e?void 0:e.type)&&!t)&&this._map.once(\"render\",this._update),this._lngLat=os(this._lngLat,this._flatPos,this._map.transform),this._flatPos=this._pos=this._map.project(this._lngLat)._add(this._offset),this._map.terrain&&(this._flatPos=this._map.transform.locationToScreenPoint(this._lngLat)._add(this._offset));let i=\"\";\"viewport\"===this._rotationAlignment||\"auto\"===this._rotationAlignment?i=`rotateZ(${this._rotation}deg)`:\"map\"===this._rotationAlignment&&(i=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let o=\"\";\"viewport\"===this._pitchAlignment||\"auto\"===this._pitchAlignment?o=\"rotateX(0deg)\":\"map\"===this._pitchAlignment&&(o=`rotateX(${this._map.getPitch()}deg)`),this._subpixelPositioning||e&&\"moveend\"!==e.type||(this._pos=this._pos.round()),c.setTransform(this._element,`${as[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${o} ${i}`),s.frameAsync(new AbortController).then((()=>{this._updateOpacity(e&&\"moveend\"===e.type);})).catch((()=>{}));},this._onMove=e=>{if(!this._isDragging){const t=this._clickTolerance||this._map._clickTolerance;this._isDragging=e.point.dist(this._pointerdownPos)>=t;}this._isDragging&&(this._pos=e.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents=\"none\",\"pending\"===this._state&&(this._state=\"active\",this.fire(new t.l(\"dragstart\"))),this.fire(new t.l(\"drag\")));},this._onUp=()=>{this._element.style.pointerEvents=\"auto\",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off(\"mousemove\",this._onMove),this._map.off(\"touchmove\",this._onMove),\"active\"===this._state&&this.fire(new t.l(\"dragend\")),this._state=\"inactive\";},this._addDragHandler=e=>{this._element.contains(e.originalEvent.target)&&(e.preventDefault(),this._positionDelta=e.point.sub(this._pos).add(this._offset),this._pointerdownPos=e.point,this._state=\"pending\",this._map.on(\"mousemove\",this._onMove),this._map.on(\"touchmove\",this._onMove),this._map.once(\"mouseup\",this._onUp),this._map.once(\"touchend\",this._onUp));},this._anchor=e&&e.anchor||\"center\",this._color=e&&e.color||\"#3FB1CE\",this._scale=e&&e.scale||1,this._draggable=e&&e.draggable||!1,this._clickTolerance=e&&e.clickTolerance||0,this._subpixelPositioning=e&&e.subpixelPositioning||!1,this._isDragging=!1,this._state=\"inactive\",this._rotation=e&&e.rotation||0,this._rotationAlignment=e&&e.rotationAlignment||\"auto\",this._pitchAlignment=e&&e.pitchAlignment&&\"auto\"!==e.pitchAlignment?e.pitchAlignment:this._rotationAlignment,this.setOpacity(null==e?void 0:e.opacity,null==e?void 0:e.opacityWhenCovered),e&&e.element)this._element=e.element,this._offset=t.P.convert(e&&e.offset||[0,0]);else {this._defaultMarker=!0,this._element=c.create(\"div\");const i=c.createNS(\"http://www.w3.org/2000/svg\",\"svg\"),o=41,a=27;i.setAttributeNS(null,\"display\",\"block\"),i.setAttributeNS(null,\"height\",`${o}px`),i.setAttributeNS(null,\"width\",`${a}px`),i.setAttributeNS(null,\"viewBox\",`0 0 ${a} ${o}`);const r=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");r.setAttributeNS(null,\"stroke\",\"none\"),r.setAttributeNS(null,\"stroke-width\",\"1\"),r.setAttributeNS(null,\"fill\",\"none\"),r.setAttributeNS(null,\"fill-rule\",\"evenodd\");const s=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");s.setAttributeNS(null,\"fill-rule\",\"nonzero\");const n=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");n.setAttributeNS(null,\"transform\",\"translate(3.0, 29.0)\"),n.setAttributeNS(null,\"fill\",\"#000000\");const l=[{rx:\"10.5\",ry:\"5.25002273\"},{rx:\"10.5\",ry:\"5.25002273\"},{rx:\"9.5\",ry:\"4.77275007\"},{rx:\"8.5\",ry:\"4.29549936\"},{rx:\"7.5\",ry:\"3.81822308\"},{rx:\"6.5\",ry:\"3.34094679\"},{rx:\"5.5\",ry:\"2.86367051\"},{rx:\"4.5\",ry:\"2.38636864\"}];for(const e of l){const t=c.createNS(\"http://www.w3.org/2000/svg\",\"ellipse\");t.setAttributeNS(null,\"opacity\",\"0.04\"),t.setAttributeNS(null,\"cx\",\"10.5\"),t.setAttributeNS(null,\"cy\",\"5.80029008\"),t.setAttributeNS(null,\"rx\",e.rx),t.setAttributeNS(null,\"ry\",e.ry),n.appendChild(t);}const h=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");h.setAttributeNS(null,\"fill\",this._color);const u=c.createNS(\"http://www.w3.org/2000/svg\",\"path\");u.setAttributeNS(null,\"d\",\"M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z\"),h.appendChild(u);const d=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");d.setAttributeNS(null,\"opacity\",\"0.25\"),d.setAttributeNS(null,\"fill\",\"#000000\");const _=c.createNS(\"http://www.w3.org/2000/svg\",\"path\");_.setAttributeNS(null,\"d\",\"M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z\"),d.appendChild(_);const p=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");p.setAttributeNS(null,\"transform\",\"translate(6.0, 7.0)\"),p.setAttributeNS(null,\"fill\",\"#FFFFFF\");const m=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");m.setAttributeNS(null,\"transform\",\"translate(8.0, 8.0)\");const f=c.createNS(\"http://www.w3.org/2000/svg\",\"circle\");f.setAttributeNS(null,\"fill\",\"#000000\"),f.setAttributeNS(null,\"opacity\",\"0.25\"),f.setAttributeNS(null,\"cx\",\"5.5\"),f.setAttributeNS(null,\"cy\",\"5.5\"),f.setAttributeNS(null,\"r\",\"5.4999962\");const g=c.createNS(\"http://www.w3.org/2000/svg\",\"circle\");g.setAttributeNS(null,\"fill\",\"#FFFFFF\"),g.setAttributeNS(null,\"cx\",\"5.5\"),g.setAttributeNS(null,\"cy\",\"5.5\"),g.setAttributeNS(null,\"r\",\"5.4999962\"),m.appendChild(f),m.appendChild(g),s.appendChild(n),s.appendChild(h),s.appendChild(d),s.appendChild(p),s.appendChild(m),i.appendChild(s),i.setAttributeNS(null,\"height\",o*this._scale+\"px\"),i.setAttributeNS(null,\"width\",a*this._scale+\"px\"),this._element.appendChild(i),this._offset=t.P.convert(e&&e.offset||[0,-14]);}if(this._element.classList.add(\"maplibregl-marker\"),this._element.addEventListener(\"dragstart\",(e=>{e.preventDefault();})),this._element.addEventListener(\"mousedown\",(e=>{e.preventDefault();})),rs(this._element,this._anchor,\"marker\"),e&&e.className)for(const t of e.className.split(\" \"))this._element.classList.add(t);this._popup=null;}addTo(e){return this.remove(),this._map=e,this._element.hasAttribute(\"aria-label\")||this._element.setAttribute(\"aria-label\",e._getUIString(\"Marker.Title\")),this._element.hasAttribute(\"role\")||this._element.setAttribute(\"role\",\"button\"),e.getCanvasContainer().appendChild(this._element),e.on(\"move\",this._update),e.on(\"moveend\",this._update),e.on(\"terrain\",this._update),e.on(\"projectiontransition\",this._update),this.setDraggable(this._draggable),this._update(),this._map.on(\"click\",this._onMapClick),this}remove(){return this._opacityTimeout&&(clearTimeout(this._opacityTimeout),delete this._opacityTimeout),this._map&&(this._map.off(\"click\",this._onMapClick),this._map.off(\"move\",this._update),this._map.off(\"moveend\",this._update),this._map.off(\"terrain\",this._update),this._map.off(\"projectiontransition\",this._update),this._map.off(\"mousedown\",this._addDragHandler),this._map.off(\"touchstart\",this._addDragHandler),this._map.off(\"mouseup\",this._onUp),this._map.off(\"touchend\",this._onUp),this._map.off(\"mousemove\",this._onMove),this._map.off(\"touchmove\",this._onMove),delete this._map),c.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(e){return this._lngLat=t.S.convert(e),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(e){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener(\"keypress\",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute(\"tabindex\")),e){if(!(\"offset\"in e.options)){const t=38.1,i=13.5,o=Math.abs(i)/Math.SQRT2;e.options.offset=this._defaultMarker?{top:[0,0],\"top-left\":[0,0],\"top-right\":[0,0],bottom:[0,-t],\"bottom-left\":[o,-1*(t-i+o)],\"bottom-right\":[-o,-1*(t-i+o)],left:[i,-1*(t-i)],right:[-i,-1*(t-i)]}:this._offset;}this._popup=e,this._originalTabIndex=this._element.getAttribute(\"tabindex\"),this._originalTabIndex||this._element.setAttribute(\"tabindex\",\"0\"),this._element.addEventListener(\"keypress\",this._onKeyPress);}return this}setSubpixelPositioning(e){return this._subpixelPositioning=e,this}getPopup(){return this._popup}togglePopup(){const e=this._popup;return this._element.style.opacity===this._opacityWhenCovered?this:e?(e.isOpen()?e.remove():(e.setLngLat(this._lngLat),e.addTo(this._map)),this):this}_updateOpacity(e=!1){var i,o;const a=null===(i=this._map)||void 0===i?void 0:i.terrain,r=this._map.transform.isLocationOccluded(this._lngLat);if(!a||r){const e=r?this._opacityWhenCovered:this._opacity;return void(this._element.style.opacity!==e&&(this._element.style.opacity=e))}if(e)this._opacityTimeout=null;else {if(this._opacityTimeout)return;this._opacityTimeout=setTimeout((()=>{this._opacityTimeout=null;}),100);}const s=this._map,n=s.terrain.depthAtPoint(this._pos),l=s.terrain.getElevationForLngLatZoom(this._lngLat,s.transform.tileZoom);if(s.transform.lngLatToCameraDepth(this._lngLat,l)-n<.006)return void(this._element.style.opacity=this._opacity);const c=-this._offset.y/s.transform.pixelsPerMeter,h=Math.sin(s.getPitch()*Math.PI/180)*c,u=s.terrain.depthAtPoint(new t.P(this._pos.x,this._pos.y-this._offset.y)),d=s.transform.lngLatToCameraDepth(this._lngLat,l+h)-u>.006;(null===(o=this._popup)||void 0===o?void 0:o.isOpen())&&d&&this._popup.remove(),this._element.style.opacity=d?this._opacityWhenCovered:this._opacity;}getOffset(){return this._offset}setOffset(e){return this._offset=t.P.convert(e),this._update(),this}addClassName(e){this._element.classList.add(e);}removeClassName(e){this._element.classList.remove(e);}toggleClassName(e){return this._element.classList.toggle(e)}setDraggable(e){return this._draggable=!!e,this._map&&(e?(this._map.on(\"mousedown\",this._addDragHandler),this._map.on(\"touchstart\",this._addDragHandler)):(this._map.off(\"mousedown\",this._addDragHandler),this._map.off(\"touchstart\",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(e){return this._rotation=e||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(e){return this._rotationAlignment=e||\"auto\",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(e){return this._pitchAlignment=e&&\"auto\"!==e?e:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}setOpacity(e,t){return (void 0===this._opacity||void 0===e&&void 0===t)&&(this._opacity=\"1\",this._opacityWhenCovered=\"0.2\"),void 0!==e&&(this._opacity=e),void 0!==t&&(this._opacityWhenCovered=t),this._map&&this._updateOpacity(!0),this}}const ns={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0};let ls=0,cs=!1;const hs={maxWidth:100,unit:\"metric\"};function us(e,t,i){const o=i&&i.maxWidth||100,a=e._container.clientHeight/2,r=e._container.clientWidth/2,s=e.unproject([r-o/2,a]),n=e.unproject([r+o/2,a]),l=Math.round(e.project(n).x-e.project(s).x),c=Math.min(o,l,e._container.clientWidth),h=s.distanceTo(n);if(i&&\"imperial\"===i.unit){const i=3.2808*h;i>5280?ds(t,c,i/5280,e._getUIString(\"ScaleControl.Miles\")):ds(t,c,i,e._getUIString(\"ScaleControl.Feet\"));}else i&&\"nautical\"===i.unit?ds(t,c,h/1852,e._getUIString(\"ScaleControl.NauticalMiles\")):h>=1e3?ds(t,c,h/1e3,e._getUIString(\"ScaleControl.Kilometers\")):ds(t,c,h,e._getUIString(\"ScaleControl.Meters\"));}function ds(e,t,i,o){const a=function(e){const t=Math.pow(10,`${Math.floor(e)}`.length-1);let i=e/t;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:i>=1?1:function(e){const t=Math.pow(10,Math.ceil(-Math.log(e)/Math.LN10));return Math.round(e*t)/t}(i),t*i}(i);e.style.width=t*(a/i)+\"px\",e.innerHTML=`${a}&nbsp;${o}`;}const _s={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:\"\",maxWidth:\"240px\",subpixelPositioning:!1,locationOccludedOpacity:void 0},ps=[\"a[href]\",\"[tabindex]:not([tabindex='-1'])\",\"[contenteditable]:not([contenteditable='false'])\",\"button:not([disabled])\",\"input:not([disabled])\",\"select:not([disabled])\",\"textarea:not([disabled])\"].join(\", \");function ms(e){if(e){if(\"number\"==typeof e){const i=Math.round(Math.abs(e)/Math.SQRT2);return {center:new t.P(0,0),top:new t.P(0,e),\"top-left\":new t.P(i,i),\"top-right\":new t.P(-i,i),bottom:new t.P(0,-e),\"bottom-left\":new t.P(i,-i),\"bottom-right\":new t.P(-i,-i),left:new t.P(e,0),right:new t.P(-e,0)}}if(e instanceof t.P||Array.isArray(e)){const i=t.P.convert(e);return {center:i,top:i,\"top-left\":i,\"top-right\":i,bottom:i,\"bottom-left\":i,\"bottom-right\":i,left:i,right:i}}return {center:t.P.convert(e.center||[0,0]),top:t.P.convert(e.top||[0,0]),\"top-left\":t.P.convert(e[\"top-left\"]||[0,0]),\"top-right\":t.P.convert(e[\"top-right\"]||[0,0]),bottom:t.P.convert(e.bottom||[0,0]),\"bottom-left\":t.P.convert(e[\"bottom-left\"]||[0,0]),\"bottom-right\":t.P.convert(e[\"bottom-right\"]||[0,0]),left:t.P.convert(e.left||[0,0]),right:t.P.convert(e.right||[0,0])}}return ms(new t.P(0,0))}const fs=i;e.AJAXError=t.cz,e.Event=t.l,e.Evented=t.E,e.LngLat=t.S,e.MercatorCoordinate=t.a1,e.Point=t.P,e.addProtocol=t.cA,e.config=t.a,e.removeProtocol=t.cB,e.AttributionControl=Ur,e.BoxZoomHandler=tr,e.CanvasSource=J,e.CooperativeGesturesHandler=kr,e.DoubleClickZoomHandler=Er,e.DragPanHandler=zr,e.DragRotateHandler=Ar,e.EdgeInsets=Dt,e.FullscreenControl=class extends t.E{constructor(e={}){super(),this._onFullscreenChange=()=>{var e;let t=window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement;for(;null===(e=null==t?void 0:t.shadowRoot)||void 0===e?void 0:e.fullscreenElement;)t=t.shadowRoot.fullscreenElement;t===this._container!==this._fullscreen&&this._handleFullscreenChange();},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen();},this._fullscreen=!1,e&&e.container&&(e.container instanceof HTMLElement?this._container=e.container:t.w(\"Full screen control 'container' must be a DOM element.\")),\"onfullscreenchange\"in document?this._fullscreenchange=\"fullscreenchange\":\"onmozfullscreenchange\"in document?this._fullscreenchange=\"mozfullscreenchange\":\"onwebkitfullscreenchange\"in document?this._fullscreenchange=\"webkitfullscreenchange\":\"onmsfullscreenchange\"in document&&(this._fullscreenchange=\"MSFullscreenChange\");}onAdd(e){return this._map=e,this._container||(this._container=this._map.getContainer()),this._controlContainer=c.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group\"),this._setupUI(),this._controlContainer}onRemove(){c.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange);}_setupUI(){const e=this._fullscreenButton=c.create(\"button\",\"maplibregl-ctrl-fullscreen\",this._controlContainer);c.create(\"span\",\"maplibregl-ctrl-icon\",e).setAttribute(\"aria-hidden\",\"true\"),e.type=\"button\",this._updateTitle(),this._fullscreenButton.addEventListener(\"click\",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange);}_updateTitle(){const e=this._getTitle();this._fullscreenButton.setAttribute(\"aria-label\",e),this._fullscreenButton.title=e;}_getTitle(){return this._map._getUIString(this._isFullscreen()?\"FullscreenControl.Exit\":\"FullscreenControl.Enter\")}_isFullscreen(){return this._fullscreen}_handleFullscreenChange(){this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(\"maplibregl-ctrl-shrink\"),this._fullscreenButton.classList.toggle(\"maplibregl-ctrl-fullscreen\"),this._updateTitle(),this._fullscreen?(this.fire(new t.l(\"fullscreenstart\")),this._prevCooperativeGesturesEnabled=this._map.cooperativeGestures.isEnabled(),this._map.cooperativeGestures.disable()):(this.fire(new t.l(\"fullscreenend\")),this._prevCooperativeGesturesEnabled&&this._map.cooperativeGestures.enable());}_exitFullscreen(){window.document.exitFullscreen?window.document.exitFullscreen():window.document.mozCancelFullScreen?window.document.mozCancelFullScreen():window.document.msExitFullscreen?window.document.msExitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen();}_requestFullscreen(){this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen();}_togglePseudoFullScreen(){this._container.classList.toggle(\"maplibregl-pseudo-fullscreen\"),this._handleFullscreenChange(),this._map.resize();}},e.GeoJSONSource=K,e.GeolocateControl=class extends t.E{constructor(e){super(),this._onSuccess=e=>{if(this._map){if(this._isOutOfMapMaxBounds(e))return this._setErrorState(),this.fire(new t.l(\"outofmaxbounds\",e)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=e,this._watchState){case \"WAITING_ACTIVE\":case \"ACTIVE_LOCK\":case \"ACTIVE_ERROR\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active\");break;case \"BACKGROUND\":case \"BACKGROUND_ERROR\":this._watchState=\"BACKGROUND\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-background\");break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&\"OFF\"!==this._watchState&&this._updateMarker(e),this.options.trackUserLocation&&\"ACTIVE_LOCK\"!==this._watchState||this._updateCamera(e),this.options.showUserLocation&&this._dotElement.classList.remove(\"maplibregl-user-location-dot-stale\"),this.fire(new t.l(\"geolocate\",e)),this._finish();}},this._updateCamera=e=>{const i=new t.S(e.coords.longitude,e.coords.latitude),o=e.coords.accuracy,a=this._map.getBearing(),r=t.e({bearing:a},this.options.fitBoundsOptions),s=$.fromLngLat(i,o);this._map.fitBounds(s,r,{geolocateSource:!0});},this._updateMarker=e=>{if(e){const i=new t.S(e.coords.longitude,e.coords.latitude);this._accuracyCircleMarker.setLngLat(i).addTo(this._map),this._userLocationDotMarker.setLngLat(i).addTo(this._map),this._accuracy=e.coords.accuracy,this._updateCircleRadiusIfNeeded();}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove();},this._onUpdate=()=>{this._updateCircleRadiusIfNeeded();},this._onError=e=>{if(this._map){if(1===e.code){this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background-error\"),this._geolocateButton.disabled=!0;const e=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.title=e,this._geolocateButton.setAttribute(\"aria-label\",e),void 0!==this._geolocationWatchID&&this._clearWatch();}else {if(3===e.code&&cs)return;this._setErrorState();}\"OFF\"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add(\"maplibregl-user-location-dot-stale\"),this.fire(new t.l(\"error\",e)),this._finish();}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0;},this._setupUI=()=>{this._map&&(this._container.addEventListener(\"contextmenu\",(e=>e.preventDefault())),this._geolocateButton=c.create(\"button\",\"maplibregl-ctrl-geolocate\",this._container),c.create(\"span\",\"maplibregl-ctrl-icon\",this._geolocateButton).setAttribute(\"aria-hidden\",\"true\"),this._geolocateButton.type=\"button\",this._geolocateButton.disabled=!0);},this._finishSetupUI=e=>{if(this._map){if(!1===e){t.w(\"Geolocation support is not available so the GeolocateControl will be disabled.\");const e=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.disabled=!0,this._geolocateButton.title=e,this._geolocateButton.setAttribute(\"aria-label\",e);}else {const e=this._map._getUIString(\"GeolocateControl.FindMyLocation\");this._geolocateButton.disabled=!1,this._geolocateButton.title=e,this._geolocateButton.setAttribute(\"aria-label\",e);}this.options.trackUserLocation&&(this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this._watchState=\"OFF\"),this.options.showUserLocation&&(this._dotElement=c.create(\"div\",\"maplibregl-user-location-dot\"),this._userLocationDotMarker=new ss({element:this._dotElement}),this._circleElement=c.create(\"div\",\"maplibregl-user-location-accuracy-circle\"),this._accuracyCircleMarker=new ss({element:this._circleElement,pitchAlignment:\"map\"}),this.options.trackUserLocation&&(this._watchState=\"OFF\"),this._map.on(\"zoom\",this._onUpdate),this._map.on(\"move\",this._onUpdate),this._map.on(\"rotate\",this._onUpdate),this._map.on(\"pitch\",this._onUpdate)),this._geolocateButton.addEventListener(\"click\",(()=>this.trigger())),this._setup=!0,this.options.trackUserLocation&&this._map.on(\"movestart\",(e=>{const i=(null==e?void 0:e[0])instanceof ResizeObserverEntry;e.geolocateSource||\"ACTIVE_LOCK\"!==this._watchState||i||this._map.isZooming()||(this._watchState=\"BACKGROUND\",this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this.fire(new t.l(\"trackuserlocationend\")),this.fire(new t.l(\"userlocationlostfocus\")));}));}},this.options=t.e({},ns,e);}onAdd(e){return this._map=e,this._container=c.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group\"),this._setupUI(),function(){return t._(this,arguments,void 0,(function*(e=!1){if(void 0!==is&&!e)return is;if(void 0===window.navigator.permissions)return is=!!window.navigator.geolocation,is;try{const e=yield window.navigator.permissions.query({name:\"geolocation\"});is=\"denied\"!==e.state;}catch(e){is=!!window.navigator.geolocation;}return is}))}().then((e=>this._finishSetupUI(e))),this._container}onRemove(){void 0!==this._geolocationWatchID&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),c.remove(this._container),this._map.off(\"zoom\",this._onUpdate),this._map.off(\"move\",this._onUpdate),this._map.off(\"rotate\",this._onUpdate),this._map.off(\"pitch\",this._onUpdate),this._map=void 0,ls=0,cs=!1;}_isOutOfMapMaxBounds(e){const t=this._map.getMaxBounds(),i=e.coords;return t&&(i.longitude<t.getWest()||i.longitude>t.getEast()||i.latitude<t.getSouth()||i.latitude>t.getNorth())}_setErrorState(){switch(this._watchState){case \"WAITING_ACTIVE\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active-error\");break;case \"ACTIVE_LOCK\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\");break;case \"BACKGROUND\":this._watchState=\"BACKGROUND_ERROR\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\");break;case \"ACTIVE_ERROR\":case \"BACKGROUND_ERROR\":case \"OFF\":case void 0:break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadiusIfNeeded(){const e=this._userLocationDotMarker.getLngLat();if(!(this.options.showUserLocation&&this.options.showAccuracyCircle&&this._accuracy&&e))return;const t=this._map.project(e),i=this._map.unproject([t.x+100,t.y]),o=e.distanceTo(i)/100,a=2*this._accuracy/o;this._circleElement.style.width=`${a.toFixed(2)}px`,this._circleElement.style.height=`${a.toFixed(2)}px`;}trigger(){if(!this._setup)return t.w(\"Geolocate control triggered before added to a map\"),!1;if(this.options.trackUserLocation){switch(this._watchState){case \"OFF\":this._watchState=\"WAITING_ACTIVE\",this.fire(new t.l(\"trackuserlocationstart\"));break;case \"WAITING_ACTIVE\":case \"ACTIVE_LOCK\":case \"ACTIVE_ERROR\":case \"BACKGROUND_ERROR\":ls--,cs=!1,this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background-error\"),this.fire(new t.l(\"trackuserlocationend\"));break;case \"BACKGROUND\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new t.l(\"trackuserlocationstart\")),this.fire(new t.l(\"userlocationfocus\"));break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}switch(this._watchState){case \"WAITING_ACTIVE\":this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active\");break;case \"ACTIVE_LOCK\":this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active\");break;case \"OFF\":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}if(\"OFF\"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){let e;this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"true\"),ls++,ls>1?(e={maximumAge:6e5,timeout:0},cs=!0):(e=this.options.positionOptions,cs=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,e);}}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return !0}_clearWatch(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this.options.showUserLocation&&this._updateMarker(null);}},e.GlobeControl=class{constructor(){this._toggleProjection=()=>{var e;const t=null===(e=this._map.getProjection())||void 0===e?void 0:e.type;this._map.setProjection(\"mercator\"!==t&&t?{type:\"mercator\"}:{type:\"globe\"}),this._updateGlobeIcon();},this._updateGlobeIcon=()=>{var e;this._globeButton.classList.remove(\"maplibregl-ctrl-globe\"),this._globeButton.classList.remove(\"maplibregl-ctrl-globe-enabled\"),\"globe\"===(null===(e=this._map.getProjection())||void 0===e?void 0:e.type)?(this._globeButton.classList.add(\"maplibregl-ctrl-globe-enabled\"),this._globeButton.title=this._map._getUIString(\"GlobeControl.Disable\")):(this._globeButton.classList.add(\"maplibregl-ctrl-globe\"),this._globeButton.title=this._map._getUIString(\"GlobeControl.Enable\"));};}onAdd(e){return this._map=e,this._container=c.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group\"),this._globeButton=c.create(\"button\",\"maplibregl-ctrl-globe\",this._container),c.create(\"span\",\"maplibregl-ctrl-icon\",this._globeButton).setAttribute(\"aria-hidden\",\"true\"),this._globeButton.type=\"button\",this._globeButton.addEventListener(\"click\",this._toggleProjection),this._updateGlobeIcon(),this._map.on(\"styledata\",this._updateGlobeIcon),this._container}onRemove(){c.remove(this._container),this._map.off(\"styledata\",this._updateGlobeIcon),this._globeButton.removeEventListener(\"click\",this._toggleProjection),this._map=void 0;}},e.Hash=ja,e.ImageSource=Q,e.KeyboardHandler=Pr,e.LngLatBounds=$,e.LogoControl=Gr,e.Map=class extends Nr{constructor(e){var i,o;t.cw.mark(t.cx.create);const a=Object.assign(Object.assign(Object.assign({},Jr),e),{canvasContextAttributes:Object.assign(Object.assign({},Jr.canvasContextAttributes),e.canvasContextAttributes)});if(null!=a.minZoom&&null!=a.maxZoom&&a.minZoom>a.maxZoom)throw new Error(\"maxZoom must be greater than or equal to minZoom\");if(null!=a.minPitch&&null!=a.maxPitch&&a.minPitch>a.maxPitch)throw new Error(\"maxPitch must be greater than or equal to minPitch\");if(null!=a.minPitch&&a.minPitch<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(null!=a.maxPitch&&a.maxPitch>180)throw new Error(\"maxPitch must be less than or equal to 180\");const r=new Ot,s=new Ut;if(void 0!==a.minZoom&&r.setMinZoom(a.minZoom),void 0!==a.maxZoom&&r.setMaxZoom(a.maxZoom),void 0!==a.minPitch&&r.setMinPitch(a.minPitch),void 0!==a.maxPitch&&r.setMaxPitch(a.maxPitch),void 0!==a.renderWorldCopies&&r.setRenderWorldCopies(a.renderWorldCopies),null!==a.transformConstrain&&r.setConstrain(a.transformConstrain),super(r,s,{bearingSnap:a.bearingSnap}),this._idleTriggered=!1,this._crossFadingFactor=1,this._renderTaskQueue=new Vr,this._controls=[],this._mapId=t.a7(),this._contextLost=e=>{e.preventDefault(),this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this.fire(new t.l(\"webglcontextlost\",{originalEvent:e}));},this._contextRestored=e=>{this._setupPainter(),this.resize(),this._update(),this.fire(new t.l(\"webglcontextrestored\",{originalEvent:e}));},this._onMapScroll=e=>{if(e.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onWindowOnline=()=>{this._update();},this._interactive=a.interactive,this._maxTileCacheSize=a.maxTileCacheSize,this._maxTileCacheZoomLevels=a.maxTileCacheZoomLevels,this._canvasContextAttributes=Object.assign({},a.canvasContextAttributes),this._trackResize=!0===a.trackResize,this._bearingSnap=a.bearingSnap,this._centerClampedToGround=a.centerClampedToGround,this._refreshExpiredTiles=!0===a.refreshExpiredTiles,this._fadeDuration=a.fadeDuration,this._crossSourceCollisions=!0===a.crossSourceCollisions,this._collectResourceTiming=!0===a.collectResourceTiming,this._locale=Object.assign(Object.assign({},Qr),a.locale),this._clickTolerance=a.clickTolerance,this._overridePixelRatio=a.pixelRatio,this._maxCanvasSize=a.maxCanvasSize,this.transformCameraUpdate=a.transformCameraUpdate,this.transformConstrain=a.transformConstrain,this.cancelPendingTileRequestsWhileZooming=!0===a.cancelPendingTileRequestsWhileZooming,this._imageQueueHandle=f.addThrottleControl((()=>this.isMoving())),this._requestManager=new g(a.transformRequest),\"string\"==typeof a.container){if(this._container=document.getElementById(a.container),!this._container)throw new Error(`Container '${a.container}' not found.`)}else {if(!(a.container instanceof HTMLElement))throw new Error(\"Invalid type: 'container' must be a String or HTMLElement.\");this._container=a.container;}if(a.maxBounds&&this.setMaxBounds(a.maxBounds),this._setupContainer(),this._setupPainter(),this.on(\"move\",(()=>this._update(!1))),this.on(\"moveend\",(()=>this._update(!1))),this.on(\"zoom\",(()=>this._update(!0))),this.on(\"terrain\",(()=>{this.painter.terrainFacilitator.dirty=!0,this._update(!0);})),this.once(\"idle\",(()=>{this._idleTriggered=!0;})),\"undefined\"!=typeof window){addEventListener(\"online\",this._onWindowOnline,!1);let e=!1;const t=Oa((e=>{this._trackResize&&!this._removed&&(this.resize(e),this.redraw());}),50);this._resizeObserver=new ResizeObserver((i=>{e?t(i):e=!0;})),this._resizeObserver.observe(this._container);}this.handlers=new jr(this,a),this._hash=a.hash&&new ja(\"string\"==typeof a.hash&&a.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:a.center,elevation:a.elevation,zoom:a.zoom,bearing:a.bearing,pitch:a.pitch,roll:a.roll}),a.bounds&&(this.resize(),this.fitBounds(a.bounds,t.e({},a.fitBoundsOptions,{duration:0}))));const n=\"string\"==typeof a.style||!(\"globe\"===(null===(o=null===(i=a.style)||void 0===i?void 0:i.projection)||void 0===o?void 0:o.type));this.resize(null,n),this._localIdeographFontFamily=a.localIdeographFontFamily,this._validateStyle=a.validateStyle,a.style&&this.setStyle(a.style,{localIdeographFontFamily:a.localIdeographFontFamily}),a.attributionControl&&this.addControl(new Ur(\"boolean\"==typeof a.attributionControl?void 0:a.attributionControl)),a.maplibreLogo&&this.addControl(new Gr,a.logoPosition),this.on(\"style.load\",(()=>{if(n||this._resizeTransform(),this.transform.unmodified){const e=t.Q(this.style.stylesheet,[\"center\",\"zoom\",\"bearing\",\"pitch\",\"roll\"]);this.jumpTo(e);}})),this.on(\"data\",(e=>{this._update(\"style\"===e.dataType),this.fire(new t.l(`${e.dataType}data`,e));})),this.on(\"dataloading\",(e=>{this.fire(new t.l(`${e.dataType}dataloading`,e));})),this.on(\"dataabort\",(e=>{this.fire(new t.l(\"sourcedataabort\",e));}));}_getMapId(){return this._mapId}setGlobalStateProperty(e,t){return this.style.setGlobalStateProperty(e,t),this._update(!0)}getGlobalState(){return this.style.getGlobalState()}addControl(e,i){if(void 0===i&&(i=e.getDefaultPosition?e.getDefaultPosition():\"top-right\"),!e||!e.onAdd)return this.fire(new t.k(new Error(\"Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.\")));const o=e.onAdd(this);this._controls.push(e);const a=this._controlPositions[i];return -1!==i.indexOf(\"bottom\")?a.insertBefore(o,a.firstChild):a.appendChild(o),this}removeControl(e){if(!e||!e.onRemove)return this.fire(new t.k(new Error(\"Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.\")));const i=this._controls.indexOf(e);return i>-1&&this._controls.splice(i,1),e.onRemove(this),this}hasControl(e){return this._controls.indexOf(e)>-1}coveringTiles(e){return we(this.transform,e)}calculateCameraOptionsFromTo(e,t,i,o){return null==o&&this.terrain&&(o=this.terrain.getElevationForLngLatZoom(i,this.transform.tileZoom)),super.calculateCameraOptionsFromTo(e,t,i,o)}resize(e,i=!0){const[o,a]=this._containerDimensions(),r=this._getClampedPixelRatio(o,a);if(this._resizeCanvas(o,a,r),this.painter.resize(o,a,r),this.painter.overLimit()){const e=this.painter.context.gl;this._maxCanvasSize=[e.drawingBufferWidth,e.drawingBufferHeight];const t=this._getClampedPixelRatio(o,a);this._resizeCanvas(o,a,t),this.painter.resize(o,a,t);}this._resizeTransform(i);const s=!this._moving;return s&&(this.stop(),this.fire(new t.l(\"movestart\",e)).fire(new t.l(\"move\",e))),this.fire(new t.l(\"resize\",e)),s&&this.fire(new t.l(\"moveend\",e)),this}_resizeTransform(e=!0){var t;const[i,o]=this._containerDimensions();this.transform.resize(i,o,e),null===(t=this._requestedCameraState)||void 0===t||t.resize(i,o,e);}_getClampedPixelRatio(e,t){const{0:i,1:o}=this._maxCanvasSize,a=this.getPixelRatio(),r=e*a,s=t*a;return Math.min(r>i?i/r:1,s>o?o/s:1)*a}getPixelRatio(){var e;return null!==(e=this._overridePixelRatio)&&void 0!==e?e:devicePixelRatio}setPixelRatio(e){this._overridePixelRatio=e,this.resize();}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(e){return this.transform.setMaxBounds($.convert(e)),this._update()}setMinZoom(e){if((e=null==e?-2:e)>=-2&&e<=this.transform.maxZoom)return this.transform.setMinZoom(e),this._update(),this.getZoom()<e&&this.setZoom(e),this;throw new Error(\"minZoom must be between -2 and the current maxZoom, inclusive\")}getMinZoom(){return this.transform.minZoom}setMaxZoom(e){if((e=null==e?22:e)>=this.transform.minZoom)return this.transform.setMaxZoom(e),this._update(),this.getZoom()>e&&this.setZoom(e),this;throw new Error(\"maxZoom must be greater than the current minZoom\")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(e){if((e=null==e?0:e)<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(e>=0&&e<=this.transform.maxPitch)return this.transform.setMinPitch(e),this._update(),this.getPitch()<e&&this.setPitch(e),this;throw new Error(\"minPitch must be between 0 and the current maxPitch, inclusive\")}getMinPitch(){return this.transform.minPitch}setMaxPitch(e){if((e=null==e?60:e)>180)throw new Error(\"maxPitch must be less than or equal to 180\");if(e>=this.transform.minPitch)return this.transform.setMaxPitch(e),this._update(),this.getPitch()>e&&this.setPitch(e),this;throw new Error(\"maxPitch must be greater than the current minPitch\")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(e){return this.transform.setRenderWorldCopies(e),this._update()}setTransformConstrain(e){return this.transform.setConstrain(e),this._update()}project(e){return this.transform.locationToScreenPoint(t.S.convert(e),this.style&&this.terrain)}unproject(e){return this.transform.screenPointToLocation(t.P.convert(e),this.terrain)}isMoving(){var e;return this._moving||(null===(e=this.handlers)||void 0===e?void 0:e.isMoving())}isZooming(){var e;return this._zooming||(null===(e=this.handlers)||void 0===e?void 0:e.isZooming())}isRotating(){var e;return this._rotating||(null===(e=this.handlers)||void 0===e?void 0:e.isRotating())}_createDelegatedListener(e,t,i){if(\"mouseenter\"===e||\"mouseover\"===e){let o=!1;const a=a=>{const r=t.filter((e=>this.getLayer(e))),s=0!==r.length?this.queryRenderedFeatures(a.point,{layers:r}):[];s.length?o||(o=!0,i.call(this,new Xa(e,this,a.originalEvent,{features:s}))):o=!1;};return {layers:t,listener:i,delegates:{mousemove:a,mouseout:()=>{o=!1;}}}}if(\"mouseleave\"===e||\"mouseout\"===e){let o=!1;const a=a=>{const r=t.filter((e=>this.getLayer(e)));(0!==r.length?this.queryRenderedFeatures(a.point,{layers:r}):[]).length?o=!0:o&&(o=!1,i.call(this,new Xa(e,this,a.originalEvent)));},r=t=>{o&&(o=!1,i.call(this,new Xa(e,this,t.originalEvent)));};return {layers:t,listener:i,delegates:{mousemove:a,mouseout:r}}}{const o=e=>{const o=t.filter((e=>this.getLayer(e))),a=0!==o.length?this.queryRenderedFeatures(e.point,{layers:o}):[];a.length&&(e.features=a,i.call(this,e),delete e.features);};return {layers:t,listener:i,delegates:{[e]:o}}}}_saveDelegatedListener(e,t){this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[e]=this._delegatedListeners[e]||[],this._delegatedListeners[e].push(t);}_removeDelegatedListener(e,t,i){if(!this._delegatedListeners||!this._delegatedListeners[e])return;const o=this._delegatedListeners[e];for(let e=0;e<o.length;e++){const a=o[e];if(a.listener===i&&a.layers.length===t.length&&a.layers.every((e=>t.includes(e)))){for(const e in a.delegates)this.off(e,a.delegates[e]);return void o.splice(e,1)}}}on(e,t,i){if(void 0===i)return super.on(e,t);const o=\"string\"==typeof t?[t]:t,a=this._createDelegatedListener(e,o,i);this._saveDelegatedListener(e,a);for(const e in a.delegates)this.on(e,a.delegates[e]);return {unsubscribe:()=>{this._removeDelegatedListener(e,o,i);}}}once(e,t,i){if(void 0===i)return super.once(e,t);const o=\"string\"==typeof t?[t]:t,a=this._createDelegatedListener(e,o,i);for(const t in a.delegates){const r=a.delegates[t];a.delegates[t]=(...t)=>{this._removeDelegatedListener(e,o,i),r(...t);};}this._saveDelegatedListener(e,a);for(const e in a.delegates)this.once(e,a.delegates[e]);return this}off(e,t,i){return void 0===i?super.off(e,t):(this._removeDelegatedListener(e,\"string\"==typeof t?[t]:t,i),this)}queryRenderedFeatures(e,i){if(!this.style)return [];let o;const a=e instanceof t.P||Array.isArray(e),r=a?e:[[0,0],[this.transform.width,this.transform.height]];if(i=i||(a?{}:e)||{},r instanceof t.P||\"number\"==typeof r[0])o=[t.P.convert(r)];else {const e=t.P.convert(r[0]),i=t.P.convert(r[1]);o=[e,new t.P(i.x,e.y),i,new t.P(e.x,i.y),e];}return this.style.queryRenderedFeatures(o,i,this.transform)}querySourceFeatures(e,t){return this.style.querySourceFeatures(e,t)}setStyle(e,i){return !1!==(i=t.e({},{localIdeographFontFamily:this._localIdeographFontFamily,validate:this._validateStyle},i)).diff&&i.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&e?(this._diffStyle(e,i),this):(this._localIdeographFontFamily=i.localIdeographFontFamily,this._updateStyle(e,i))}setTransformRequest(e){return this._requestManager.setTransformRequest(e),this}_getUIString(e){const t=this._locale[e];if(null==t)throw new Error(`Missing UI string '${e}'`);return t}_updateStyle(e,t){var i,o;if(t.transformStyle&&this.style&&!this.style._loaded)return void this.style.once(\"style.load\",(()=>this._updateStyle(e,t)));const a=this.style&&t.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!e)),e?(this.style=new Ii(this,t||{}),this.style.setEventedParent(this,{style:this.style}),\"string\"==typeof e?this.style.loadURL(e,t,a):this.style.loadJSON(e,t,a),this):(null===(o=null===(i=this.style)||void 0===i?void 0:i.projection)||void 0===o||o.destroy(),delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new Ii(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty());}_diffStyle(e,i){if(\"string\"==typeof e){const o=this._requestManager.transformRequest(e,\"Style\");t.j(o,new AbortController).then((e=>{this._updateDiff(e.data,i);})).catch((e=>{e&&this.fire(new t.k(e));}));}else \"object\"==typeof e&&this._updateDiff(e,i);}_updateDiff(e,i){try{this.style.setState(e,i)&&this._update(!0);}catch(o){t.w(`Unable to perform style diff: ${o.message||o.error||o}.  Rebuilding the style from scratch.`),this._updateStyle(e,i);}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():t.w(\"There is no style added to the map.\")}addSource(e,t){return this._lazyInitEmptyStyle(),this.style.addSource(e,t),this._update(!0)}isSourceLoaded(e){const i=this.style&&this.style.sourceCaches[e];if(void 0!==i)return i.loaded();this.fire(new t.k(new Error(`There is no source with ID '${e}'`)));}setTerrain(e){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off(\"data\",this._terrainDataCallback),e){const i=this.style.sourceCaches[e.source];if(!i)throw new Error(`cannot load terrain, because there exists no source with ID: ${e.source}`);null===this.terrain&&i.reload();for(const i in this.style._layers){const o=this.style._layers[i];\"hillshade\"===o.type&&o.source===e.source&&t.w(\"You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.\"),\"color-relief\"===o.type&&o.source===e.source&&t.w(\"You are using the same source for a color-relief layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.\");}this.terrain=new qr(this.painter,i,e),this.painter.renderToTexture=new Kr(this.painter,this.terrain),this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this.transform.setElevation(this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this._terrainDataCallback=t=>{var i;\"style\"===t.dataType?this.terrain.sourceCache.freeRtt():\"source\"===t.dataType&&t.tile&&(t.sourceId!==e.source||this._elevationFreeze||(this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this._centerClampedToGround&&this.transform.setElevation(this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))),\"image\"===(null===(i=t.source)||void 0===i?void 0:i.type)?this.terrain.sourceCache.freeRtt():this.terrain.sourceCache.freeRtt(t.tile.tileID));},this.style.on(\"data\",this._terrainDataCallback);}else this.terrain&&this.terrain.sourceCache.destruct(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform.setMinElevationForCurrentTile(0),this._centerClampedToGround&&this.transform.setElevation(0);return this.fire(new t.l(\"terrain\",{terrain:e})),this}getTerrain(){var e,t;return null!==(t=null===(e=this.terrain)||void 0===e?void 0:e.options)&&void 0!==t?t:null}areTilesLoaded(){const e=this.style&&this.style.sourceCaches;for(const t in e){const i=e[t]._tiles;for(const e in i){const t=i[e];if(\"loaded\"!==t.state&&\"errored\"!==t.state)return !1}}return !0}removeSource(e){return this.style.removeSource(e),this._update(!0)}getSource(e){return this.style.getSource(e)}setSourceTileLodParams(e,t,i){if(i){const o=this.getSource(i);if(!o)throw new Error(`There is no source with ID \"${i}\", cannot set LOD parameters`);o.calculateTileZoom=xe(Math.max(1,e),Math.max(1,t));}else for(const i in this.style.sourceCaches)this.style.sourceCaches[i].getSource().calculateTileZoom=xe(Math.max(1,e),Math.max(1,t));return this._update(!0),this}refreshTiles(e,i){const o=this.style.sourceCaches[e];if(!o)throw new Error(`There is no source cache with ID \"${e}\", cannot refresh tile`);void 0===i?o.reload(!0):o.refreshTiles(i.map((e=>new t.a4(e.z,e.x,e.y))));}addImage(e,i,o={}){const{pixelRatio:a=1,sdf:r=!1,stretchX:n,stretchY:l,content:c,textFitWidth:h,textFitHeight:u}=o;if(this._lazyInitEmptyStyle(),!(i instanceof HTMLImageElement||t.b(i))){if(void 0===i.width||void 0===i.height)return this.fire(new t.k(new Error(\"Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")));{const{width:o,height:s,data:d}=i,_=i;return this.style.addImage(e,{data:new t.R({width:o,height:s},new Uint8Array(d)),pixelRatio:a,stretchX:n,stretchY:l,content:c,textFitWidth:h,textFitHeight:u,sdf:r,version:0,userImage:_}),_.onAdd&&_.onAdd(this,e),this}}{const{width:o,height:d,data:_}=s.getImageData(i);this.style.addImage(e,{data:new t.R({width:o,height:d},_),pixelRatio:a,stretchX:n,stretchY:l,content:c,textFitWidth:h,textFitHeight:u,sdf:r,version:0});}}updateImage(e,i){const o=this.style.getImage(e);if(!o)return this.fire(new t.k(new Error(\"The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.\")));const a=i instanceof HTMLImageElement||t.b(i)?s.getImageData(i):i,{width:r,height:n,data:l}=a;if(void 0===r||void 0===n)return this.fire(new t.k(new Error(\"Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")));if(r!==o.data.width||n!==o.data.height)return this.fire(new t.k(new Error(\"The width and height of the updated image must be that same as the previous version of the image\")));const c=!(i instanceof HTMLImageElement||t.b(i));return o.data.replace(l,c),this.style.updateImage(e,o),this}getImage(e){return this.style.getImage(e)}hasImage(e){return e?!!this.style.getImage(e):(this.fire(new t.k(new Error(\"Missing required image id\"))),!1)}removeImage(e){this.style.removeImage(e);}loadImage(e){return f.getImage(this._requestManager.transformRequest(e,\"Image\"),new AbortController)}listImages(){return this.style.listImages()}addLayer(e,t){return this._lazyInitEmptyStyle(),this.style.addLayer(e,t),this._update(!0)}moveLayer(e,t){return this.style.moveLayer(e,t),this._update(!0)}removeLayer(e){return this.style.removeLayer(e),this._update(!0)}getLayer(e){return this.style.getLayer(e)}getLayersOrder(){return this.style.getLayersOrder()}setLayerZoomRange(e,t,i){return this.style.setLayerZoomRange(e,t,i),this._update(!0)}setFilter(e,t,i={}){return this.style.setFilter(e,t,i),this._update(!0)}getFilter(e){return this.style.getFilter(e)}setPaintProperty(e,t,i,o={}){return this.style.setPaintProperty(e,t,i,o),this._update(!0)}getPaintProperty(e,t){return this.style.getPaintProperty(e,t)}setLayoutProperty(e,t,i,o={}){return this.style.setLayoutProperty(e,t,i,o),this._update(!0)}getLayoutProperty(e,t){return this.style.getLayoutProperty(e,t)}setGlyphs(e,t={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(e,t),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(e,t,i={}){return this._lazyInitEmptyStyle(),this.style.addSprite(e,t,i,(e=>{e||this._update(!0);})),this}removeSprite(e){return this._lazyInitEmptyStyle(),this.style.removeSprite(e),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(e,t={}){return this._lazyInitEmptyStyle(),this.style.setSprite(e,t,(e=>{e||this._update(!0);})),this}setLight(e,t={}){return this._lazyInitEmptyStyle(),this.style.setLight(e,t),this._update(!0)}getLight(){return this.style.getLight()}setSky(e,t={}){return this._lazyInitEmptyStyle(),this.style.setSky(e,t),this._update(!0)}getSky(){return this.style.getSky()}setFeatureState(e,t){return this.style.setFeatureState(e,t),this._update()}removeFeatureState(e,t){return this.style.removeFeatureState(e,t),this._update()}getFeatureState(e){return this.style.getFeatureState(e)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let e=0,t=0;return this._container&&(e=this._container.clientWidth||400,t=this._container.clientHeight||300),[e,t]}_setupContainer(){const e=this._container;e.classList.add(\"maplibregl-map\");const t=this._canvasContainer=c.create(\"div\",\"maplibregl-canvas-container\",e);this._interactive&&t.classList.add(\"maplibregl-interactive\"),this._canvas=c.create(\"canvas\",\"maplibregl-canvas\",t),this._canvas.addEventListener(\"webglcontextlost\",this._contextLost,!1),this._canvas.addEventListener(\"webglcontextrestored\",this._contextRestored,!1),this._canvas.setAttribute(\"tabindex\",this._interactive?\"0\":\"-1\"),this._canvas.setAttribute(\"aria-label\",this._getUIString(\"Map.Title\")),this._canvas.setAttribute(\"role\",\"region\");const i=this._containerDimensions(),o=this._getClampedPixelRatio(i[0],i[1]);this._resizeCanvas(i[0],i[1],o);const a=this._controlContainer=c.create(\"div\",\"maplibregl-control-container\",e),r=this._controlPositions={};[\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"].forEach((e=>{r[e]=c.create(\"div\",`maplibregl-ctrl-${e} `,a);})),this._container.addEventListener(\"scroll\",this._onMapScroll,!1);}_resizeCanvas(e,t,i){this._canvas.width=Math.floor(i*e),this._canvas.height=Math.floor(i*t),this._canvas.style.width=`${e}px`,this._canvas.style.height=`${t}px`;}_setupPainter(){const e=Object.assign(Object.assign({},this._canvasContextAttributes),{alpha:!0,depth:!0,stencil:!0,premultipliedAlpha:!0});let t=null;this._canvas.addEventListener(\"webglcontextcreationerror\",(i=>{t={requestedAttributes:e},i&&(t.statusMessage=i.statusMessage,t.type=i.type);}),{once:!0});let i=null;if(i=this._canvasContextAttributes.contextType?this._canvas.getContext(this._canvasContextAttributes.contextType,e):this._canvas.getContext(\"webgl2\",e)||this._canvas.getContext(\"webgl\",e),!i){const e=\"Failed to initialize WebGL\";throw t?(t.message=e,new Error(JSON.stringify(t))):new Error(e)}this.painter=new Ba(i,this.transform),h.testSupport(i);}migrateProjection(e,i){super.migrateProjection(e,i),this.painter.transform=e,this.fire(new t.l(\"projectiontransition\",{newProjection:this.style.projection.name}));}loaded(){return !this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(e){return this.style&&this.style._loaded?(this._styleDirty=this._styleDirty||e,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(e){return this._update(),this._renderTaskQueue.add(e)}_cancelRenderFrame(e){this._renderTaskQueue.remove(e);}_render(e){var i,o,a,r,s;const n=this._idleTriggered?this._fadeDuration:0,c=(null===(i=this.style.projection)||void 0===i?void 0:i.transitionState)>0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(e),this._removed)return;let h=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;const e=this.transform.zoom,i=l();this.style.zoomHistory.update(e,i);const o=new t.F(e,{now:i,fadeDuration:n,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),a=o.crossFadingFactor();1===a&&a===this._crossFadingFactor||(h=!0,this._crossFadingFactor=a),this.style.update(o);}const u=(null===(o=this.style.projection)||void 0===o?void 0:o.transitionState)>0!==c;null===(a=this.style.projection)||void 0===a||a.setErrorQueryLatitudeDegrees(this.transform.center.lat),this.transform.setTransitionState(null===(r=this.style.projection)||void 0===r?void 0:r.transitionState,null===(s=this.style.projection)||void 0===s?void 0:s.latitudeErrorCorrectionRadians),this.style&&(this._sourcesDirty||u)&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain?(this.terrain.sourceCache.update(this.transform,this.terrain),this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),!this._elevationFreeze&&this._centerClampedToGround&&this.transform.setElevation(this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))):(this.transform.setMinElevationForCurrentTile(0),this._centerClampedToGround&&this.transform.setElevation(0)),this._placementDirty=this.style&&this.style._updatePlacement(this.transform,this.showCollisionBoxes,n,this._crossSourceCollisions,u),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:n,showPadding:this.showPadding}),this.fire(new t.l(\"render\")),this.loaded()&&!this._loaded&&(this._loaded=!0,t.cw.mark(t.cx.load),this.fire(new t.l(\"load\"))),this.style&&(this.style.hasTransitions()||h)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();const d=this._sourcesDirty||this._styleDirty||this._placementDirty;return d||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new t.l(\"idle\")),!this._loaded||this._fullyLoaded||d||(this._fullyLoaded=!0,t.cw.mark(t.cx.fullLoad)),this}redraw(){return this.style&&(this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._render(0)),this}remove(){var e;this._hash&&this._hash.remove();for(const e of this._controls)e.onRemove(this);this._controls=[],this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._renderTaskQueue.clear(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),\"undefined\"!=typeof window&&removeEventListener(\"online\",this._onWindowOnline,!1),f.removeThrottleControl(this._imageQueueHandle),null===(e=this._resizeObserver)||void 0===e||e.disconnect();const i=this.painter.context.gl.getExtension(\"WEBGL_lose_context\");(null==i?void 0:i.loseContext)&&i.loseContext(),this._canvas.removeEventListener(\"webglcontextrestored\",this._contextRestored,!1),this._canvas.removeEventListener(\"webglcontextlost\",this._contextLost,!1),c.remove(this._canvasContainer),c.remove(this._controlContainer),this._container.removeEventListener(\"scroll\",this._onMapScroll,!1),this._container.classList.remove(\"maplibregl-map\"),t.cw.clearMetrics(),this._removed=!0,this.fire(new t.l(\"remove\"));}triggerRepaint(){this.style&&!this._frameRequest&&(this._frameRequest=new AbortController,s.frame(this._frameRequest,(e=>{t.cw.frame(e),this._frameRequest=null;try{this._render(e);}catch(e){if(!t.cy(e)&&!function(e){return e.message===Qo}(e))throw e}}),(()=>{})));}get showTileBoundaries(){return !!this._showTileBoundaries}set showTileBoundaries(e){this._showTileBoundaries!==e&&(this._showTileBoundaries=e,this._update());}get showPadding(){return !!this._showPadding}set showPadding(e){this._showPadding!==e&&(this._showPadding=e,this._update());}get showCollisionBoxes(){return !!this._showCollisionBoxes}set showCollisionBoxes(e){this._showCollisionBoxes!==e&&(this._showCollisionBoxes=e,e?this.style._generateCollisionBoxes():this._update());}get showOverdrawInspector(){return !!this._showOverdrawInspector}set showOverdrawInspector(e){this._showOverdrawInspector!==e&&(this._showOverdrawInspector=e,this._update());}get repaint(){return !!this._repaint}set repaint(e){this._repaint!==e&&(this._repaint=e,this.triggerRepaint());}get vertices(){return !!this._vertices}set vertices(e){this._vertices=e,this._update();}get version(){return Yr}getCameraTargetElevation(){return this.transform.elevation}getProjection(){return this.style.getProjection()}setProjection(e){return this._lazyInitEmptyStyle(),this.style.setProjection(e),this._update(!0)}},e.MapMouseEvent=Xa,e.MapTouchEvent=Ka,e.MapWheelEvent=Qa,e.Marker=ss,e.NavigationControl=class{constructor(e){this._updateZoomButtons=()=>{const e=this._map.getZoom(),t=e===this._map.getMaxZoom(),i=e===this._map.getMinZoom();this._zoomInButton.disabled=t,this._zoomOutButton.disabled=i,this._zoomInButton.setAttribute(\"aria-disabled\",t.toString()),this._zoomOutButton.setAttribute(\"aria-disabled\",i.toString());},this._rotateCompassArrow=()=>{this._compassIcon.style.transform=this.options.visualizePitch&&this.options.visualizeRoll?`scale(${1/Math.pow(Math.cos(this._map.transform.pitchInRadians),.5)}) rotateZ(${-this._map.transform.roll}deg) rotateX(${this._map.transform.pitch}deg) rotateZ(${-this._map.transform.bearing}deg)`:this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitchInRadians),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${-this._map.transform.bearing}deg)`:this.options.visualizeRoll?`rotate(${-this._map.transform.bearing-this._map.transform.roll}deg)`:`rotate(${-this._map.transform.bearing}deg)`;},this._setButtonTitle=(e,t)=>{const i=this._map._getUIString(`NavigationControl.${t}`);e.title=i,e.setAttribute(\"aria-label\",i);},this.options=t.e({},es,e),this._container=c.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group\"),this._container.addEventListener(\"contextmenu\",(e=>e.preventDefault())),this.options.showZoom&&(this._zoomInButton=this._createButton(\"maplibregl-ctrl-zoom-in\",(e=>this._map.zoomIn({},{originalEvent:e}))),c.create(\"span\",\"maplibregl-ctrl-icon\",this._zoomInButton).setAttribute(\"aria-hidden\",\"true\"),this._zoomOutButton=this._createButton(\"maplibregl-ctrl-zoom-out\",(e=>this._map.zoomOut({},{originalEvent:e}))),c.create(\"span\",\"maplibregl-ctrl-icon\",this._zoomOutButton).setAttribute(\"aria-hidden\",\"true\")),this.options.showCompass&&(this._compass=this._createButton(\"maplibregl-ctrl-compass\",(e=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:e}):this._map.resetNorth({},{originalEvent:e});})),this._compassIcon=c.create(\"span\",\"maplibregl-ctrl-icon\",this._compass),this._compassIcon.setAttribute(\"aria-hidden\",\"true\"));}onAdd(e){return this._map=e,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,\"ZoomIn\"),this._setButtonTitle(this._zoomOutButton,\"ZoomOut\"),this._map.on(\"zoom\",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,\"ResetBearing\"),this.options.visualizePitch&&this._map.on(\"pitch\",this._rotateCompassArrow),this.options.visualizeRoll&&this._map.on(\"roll\",this._rotateCompassArrow),this._map.on(\"rotate\",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new ts(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){c.remove(this._container),this.options.showZoom&&this._map.off(\"zoom\",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off(\"pitch\",this._rotateCompassArrow),this.options.visualizeRoll&&this._map.off(\"roll\",this._rotateCompassArrow),this._map.off(\"rotate\",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map;}_createButton(e,t){const i=c.create(\"button\",e,this._container);return i.type=\"button\",i.addEventListener(\"click\",t),i}},e.Popup=class extends t.E{constructor(e){super(),this._updateOpacity=()=>{void 0!==this.options.locationOccludedOpacity&&(this._container.style.opacity=this._map.transform.isLocationOccluded(this.getLngLat())?`${this.options.locationOccludedOpacity}`:\"\");},this.remove=()=>(this._content&&c.remove(this._content),this._container&&(c.remove(this._container),delete this._container),this._map&&(this._map.off(\"move\",this._update),this._map.off(\"move\",this._onClose),this._map.off(\"click\",this._onClose),this._map.off(\"remove\",this.remove),this._map.off(\"mousemove\",this._onMouseMove),this._map.off(\"mouseup\",this._onMouseUp),this._map.off(\"drag\",this._onDrag),this._map._canvasContainer.classList.remove(\"maplibregl-track-pointer\"),delete this._map,this.fire(new t.l(\"close\"))),this),this._onMouseUp=e=>{this._update(e.point);},this._onMouseMove=e=>{this._update(e.point);},this._onDrag=e=>{this._update(e.point);},this._update=e=>{if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(!this._container){if(this._container=c.create(\"div\",\"maplibregl-popup\",this._map.getContainer()),this._tip=c.create(\"div\",\"maplibregl-popup-tip\",this._container),this._container.appendChild(this._content),this.options.className)for(const e of this.options.className.split(\" \"))this._container.classList.add(e);this._closeButton&&this._closeButton.setAttribute(\"aria-label\",this._map._getUIString(\"Popup.Close\")),this._trackPointer&&this._container.classList.add(\"maplibregl-popup-track-pointer\");}if(this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._lngLat=os(this._lngLat,this._flatPos,this._map.transform,this._trackPointer),this._trackPointer&&!e)return;const t=this._flatPos=this._pos=this._trackPointer&&e?e:this._map.project(this._lngLat);this._map.terrain&&(this._flatPos=this._trackPointer&&e?e:this._map.transform.locationToScreenPoint(this._lngLat));let i=this.options.anchor;const o=ms(this.options.offset);if(!i){const e=this._container.offsetWidth,a=this._container.offsetHeight;let r;r=t.y+o.bottom.y<a?[\"top\"]:t.y>this._map.transform.height-a?[\"bottom\"]:[],t.x<e/2?r.push(\"left\"):t.x>this._map.transform.width-e/2&&r.push(\"right\"),i=0===r.length?\"bottom\":r.join(\"-\");}let a=t.add(o[i]);this.options.subpixelPositioning||(a=a.round()),c.setTransform(this._container,`${as[i]} translate(${a.x}px,${a.y}px)`),rs(this._container,i,\"popup\"),this._updateOpacity();},this._onClose=()=>{this.remove();},this.options=t.e(Object.create(_s),e);}addTo(e){return this._map&&this.remove(),this._map=e,this.options.closeOnClick&&this._map.on(\"click\",this._onClose),this.options.closeOnMove&&this._map.on(\"move\",this._onClose),this._map.on(\"remove\",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"mouseup\",this._onMouseUp),this._container&&this._container.classList.add(\"maplibregl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"maplibregl-track-pointer\")):this._map.on(\"move\",this._update),this.fire(new t.l(\"open\")),this}isOpen(){return !!this._map}getLngLat(){return this._lngLat}setLngLat(e){return this._lngLat=t.S.convert(e),this._pos=null,this._flatPos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on(\"move\",this._update),this._map.off(\"mousemove\",this._onMouseMove),this._container&&this._container.classList.remove(\"maplibregl-popup-track-pointer\"),this._map._canvasContainer.classList.remove(\"maplibregl-track-pointer\")),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._flatPos=null,this._update(),this._map&&(this._map.off(\"move\",this._update),this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"drag\",this._onDrag),this._container&&this._container.classList.add(\"maplibregl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"maplibregl-track-pointer\")),this}getElement(){return this._container}setText(e){return this.setDOMContent(document.createTextNode(e))}setHTML(e){const t=document.createDocumentFragment(),i=document.createElement(\"body\");let o;for(i.innerHTML=e;o=i.firstChild,o;)t.appendChild(o);return this.setDOMContent(t)}getMaxWidth(){var e;return null===(e=this._container)||void 0===e?void 0:e.style.maxWidth}setMaxWidth(e){return this.options.maxWidth=e,this._update(),this}setDOMContent(e){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=c.create(\"div\",\"maplibregl-popup-content\",this._container);return this._content.appendChild(e),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(e){return this._container&&this._container.classList.add(e),this}removeClassName(e){return this._container&&this._container.classList.remove(e),this}setOffset(e){return this.options.offset=e,this._update(),this}toggleClassName(e){if(this._container)return this._container.classList.toggle(e)}setSubpixelPositioning(e){this.options.subpixelPositioning=e;}_createCloseButton(){this.options.closeButton&&(this._closeButton=c.create(\"button\",\"maplibregl-popup-close-button\",this._content),this._closeButton.type=\"button\",this._closeButton.innerHTML=\"&#215;\",this._closeButton.addEventListener(\"click\",this._onClose));}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;const e=this._container.querySelector(ps);e&&e.focus();}},e.RasterDEMTileSource=X,e.RasterTileSource=H,e.ScaleControl=class{constructor(e){this._onMove=()=>{us(this._map,this._container,this.options);},this.setUnit=e=>{this.options.unit=e,us(this._map,this._container,this.options);},this.options=Object.assign(Object.assign({},hs),e);}getDefaultPosition(){return \"bottom-left\"}onAdd(e){return this._map=e,this._container=c.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-scale\",e.getContainer()),this._map.on(\"move\",this._onMove),this._onMove(),this._container}onRemove(){c.remove(this._container),this._map.off(\"move\",this._onMove),this._map=void 0;}},e.ScrollZoomHandler=Sr,e.Style=Ii,e.TerrainControl=class{constructor(e){this._toggleTerrain=()=>{this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon();},this._updateTerrainIcon=()=>{this._terrainButton.classList.remove(\"maplibregl-ctrl-terrain\"),this._terrainButton.classList.remove(\"maplibregl-ctrl-terrain-enabled\"),this._map.terrain?(this._terrainButton.classList.add(\"maplibregl-ctrl-terrain-enabled\"),this._terrainButton.title=this._map._getUIString(\"TerrainControl.Disable\")):(this._terrainButton.classList.add(\"maplibregl-ctrl-terrain\"),this._terrainButton.title=this._map._getUIString(\"TerrainControl.Enable\"));},this.options=e;}onAdd(e){return this._map=e,this._container=c.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group\"),this._terrainButton=c.create(\"button\",\"maplibregl-ctrl-terrain\",this._container),c.create(\"span\",\"maplibregl-ctrl-icon\",this._terrainButton).setAttribute(\"aria-hidden\",\"true\"),this._terrainButton.type=\"button\",this._terrainButton.addEventListener(\"click\",this._toggleTerrain),this._updateTerrainIcon(),this._map.on(\"terrain\",this._updateTerrainIcon),this._container}onRemove(){c.remove(this._container),this._map.off(\"terrain\",this._updateTerrainIcon),this._map=void 0;}},e.TwoFingersTouchPitchHandler=wr,e.TwoFingersTouchRotateHandler=br,e.TwoFingersTouchZoomHandler=vr,e.TwoFingersTouchZoomRotateHandler=Lr,e.VectorTileSource=q,e.VideoSource=Y,e.addSourceType=(e,i)=>t._(void 0,void 0,void 0,(function*(){if(te(e))throw new Error(`A source type called \"${e}\" already exists.`);((e,t)=>{ee[e]=t;})(e,i);})),e.clearPrewarmedResources=function(){const e=k;e&&(e.isPreloaded()&&1===e.numActive()?(e.release(z),k=null):console.warn(\"Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()\"));},e.createTileMesh=Jt,e.getMaxParallelImageRequests=function(){return t.a.MAX_PARALLEL_IMAGE_REQUESTS},e.getRTLTextPluginStatus=function(){return re().getRTLTextPluginStatus()},e.getVersion=function(){return fs},e.getWorkerCount=function(){return A.workerCount},e.getWorkerUrl=function(){return t.a.WORKER_URL},e.importScriptInWorkers=function(e){return j().broadcast(\"IS\",e)},e.isTimeFrozen=function(){return n.isFrozen()},e.prewarm=function(){B().acquire(z);},e.restoreNow=function(){n.restoreNow();},e.setMaxParallelImageRequests=function(e){t.a.MAX_PARALLEL_IMAGE_REQUESTS=e;},e.setNow=function(e){n.setNow(e);},e.setRTLTextPlugin=function(e,t){return re().setRTLTextPlugin(e,t)},e.setWorkerCount=function(e){A.workerCount=e;},e.setWorkerUrl=function(e){t.a.WORKER_URL=e;};}));\n\n//\n// Our custom intro provides a specialized \"define()\" function, called by the\n// AMD modules below, that sets up the worker blob URL and then executes the\n// main module, storing its exported value as 'maplibregl'\n\n\nvar maplibregl$1 = maplibregl;\n\nreturn maplibregl$1;\n\n}));\n//# sourceMappingURL=maplibre-gl.js.map\n","// maplibre-gl-layers - MapLibre's layer extension library enabling\n// the display, movement, and modification of large numbers of dynamic sprite images\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT\n// https://github.com/kekyo/maplibre-gl-layers\n\n/**\n * Internal-only type definitions shared across SpriteLayer implementation modules.\n */\n\nimport type {\n  SpriteMode,\n  SpriteAnchor,\n  SpriteImageOffset,\n  SpriteInterpolationOptions,\n  SpriteImageOriginLocation,\n  SpriteLocation,\n  SpriteTextGlyphHorizontalAlign,\n  SpriteTextureMagFilter,\n  SpriteTextureMinFilter,\n  SpriteInterpolationMode,\n  EasingFunction,\n  SpriteScreenPoint,\n  SpritePoint,\n} from './types';\nimport type { ResolvedSpriteScalingOptions, SurfaceCorner } from './math';\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * The handle value that using the instance.\n */\nexport type IdHandle = number;\n\n/**\n * Id handler interface.\n * @param T Identified instance type\n * @remarks It is used for (wasm) interoperability for identity.\n */\nexport interface IdHandler<T> {\n  /**\n   * Allocates a numeric handle for the specified identifier.\n   * @param {string} rawId - Raw identifier.\n   * @returns {IdHandle} Allocated handle.\n   */\n  readonly allocate: (rawId: string) => IdHandle;\n  /**\n   * Stores an instance reference at the given handle index.\n   * @param {IdHandle} handle - Numeric handle.\n   * @param {T} instance - Registered instance.\n   */\n  readonly store: (handle: IdHandle, instance: T) => void;\n  /**\n   * Get instance by handle.\n   * @param handle Numeric handle\n   * @returns Instance.\n   */\n  readonly get: (handle: IdHandle) => T;\n  /**\n   * Releases the handle associated with the provided identifier.\n   * @param {string} rawId - Raw identifier.\n   */\n  readonly release: (rawId: string) => void;\n  /**\n   * Clears all handle bookkeeping state.\n   */\n  readonly reset: () => void;\n}\n\n/**\n * Buffers exposing image metadata indexed by handle.\n * @remarks It is used for (wasm) interoperability for image identity.\n */\nexport interface ImageHandleBuffers {\n  readonly widths: Float32Array;\n  readonly heights: Float32Array;\n  readonly textureReady: Uint8Array;\n}\n\n/**\n * Registered image references aligned by handle index.\n * @remarks It is used for (wasm) interoperability for image identity.\n */\nexport type ImageResourceTable = readonly (\n  | Readonly<RegisteredImage>\n  | undefined\n)[];\n\n/**\n * Image handle buffer controller interface.\n * @remarks It is used for (wasm) interoperability for image identity.\n */\nexport interface ImageHandleBufferController {\n  /**\n   * Flag metadata buffers for regeneration.\n   * @param images Image map.\n   */\n  readonly markDirty: (images: ReadonlyMap<string, RegisteredImage>) => void;\n  /**\n   * Rebuilds the metadata buffers when flagged as dirty.\n   * @returns {ImageHandleBuffers} Metadata buffers aligned by handle index.\n   */\n  readonly ensure: () => ImageHandleBuffers;\n  /**\n   * Returns registered images aligned by handle index. Ensures buffers are up to date.\n   */\n  readonly getResourcesByHandle: () => ImageResourceTable;\n}\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Encoded pointer representing the target of an origin reference.\n * @remarks It is used for (wasm) interoperability for image identity.\n *          The high bits encode the sub-layer while the low bits encode the order slot.\n */\nexport type SpriteOriginReferenceKey = number;\n\n/** Sentinel used when the image does not reference another sprite image. */\nexport const SPRITE_ORIGIN_REFERENCE_KEY_NONE = -1;\n\n/**\n * Index into the render target bucket pointing at the resolved origin image.\n * @remarks It is used for (wasm) interoperability for image identity.\n *          When no origin is assigned or the reference could not be resolved,\n *          the value will be {@link SPRITE_ORIGIN_REFERENCE_INDEX_NONE}.\n */\nexport type SpriteOriginReferenceIndex = number;\n\n/** Sentinel indicating that the origin pointer has not been resolved yet. */\nexport const SPRITE_ORIGIN_REFERENCE_INDEX_NONE = -1;\n\n/**\n * Encode/Decode interface for a (subLayer, order) pair into a compact numeric key.\n * @remarks It is used for (wasm) interoperability for image identity.\n */\nexport interface SpriteOriginReference {\n  /**\n   * Encodes a (subLayer, order) pair into a compact numeric key.\n   * @param subLayer Sub-layer identifier within the sprite.\n   * @param order Order slot inside the sub-layer.\n   * @returns Encoded origin reference key.\n   */\n  readonly encodeKey: (\n    subLayer: number,\n    order: number\n  ) => SpriteOriginReferenceKey;\n  /**\n   * Decodes an origin reference key back into the sub-layer and order pair.\n   * @param key Encoded origin reference key.\n   * @returns `subLayer` and `order` components; when the key is invalid, both values are set to `-1`.\n   */\n  readonly decodeKey: (key: SpriteOriginReferenceKey) => {\n    readonly subLayer: number;\n    readonly order: number;\n  };\n}\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Tuple representing a single entry in a render target bucket.\n * @remarks It is used for (wasm) interoperability for sprite origin.\n *          The first item is the sprite's frame-level state and the second item is\n *          the specific image being rendered,\n *          mirroring how the renderer stores draw calls on the CPU side.\n *          Keeping the pair immutable prevents accidental divergence between cached data\n *          and the GPU buffers derived from it.\n */\nexport type RenderTargetEntryLike<TTag> = readonly [\n  InternalSpriteCurrentState<TTag>, // Sprite-level state shared by all of its images.\n  InternalSpriteImageState, // Concrete image variant queued for rendering.\n];\n\n/**\n * Parallel typed arrays that expose bucket metadata in a WASM-friendly layout.\n * @remarks It is used for (wasm) interoperability for sprite origin.\n *          Both arrays always share the same length as the bucket, allowing shader-side\n *          code (or WASM helpers) to traverse origin reference metadata without touching\n *          the heavyweight tuple objects.\n */\nexport interface RenderTargetBucketBuffers {\n  /**\n   * Encoded origin metadata (sub-layer/order pairs) for each queued image,\n   * mirroring `image.originReferenceKey`. A value of\n   * `SPRITE_ORIGIN_REFERENCE_KEY_NONE` denotes that the entry is self-originating.\n   */\n  readonly originReferenceKeys: Int32Array;\n  /**\n   * Bucket index pointing to the entry that should provide the origin image for\n   * the current sprite. Values equal to\n   * `SPRITE_ORIGIN_REFERENCE_INDEX_NONE` or outside the bucket range mark the\n   * origin as unresolved.\n   */\n  readonly originTargetIndices: Int32Array;\n}\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Represents a projected three dimensional position.\n * `MercatorCoordinate` uses the web mercator projection ([EPSG:3857](https://epsg.io/3857)) with slightly different units:\n * - the size of 1 unit is the width of the projected world instead of the \"mercator meter\"\n * - the origin of the coordinate space is at the north-west corner instead of the middle\n */\nexport interface SpriteMercatorCoordinate {\n  readonly x: number;\n  readonly y: number;\n  readonly z: number;\n}\n\nexport interface Releaseable {\n  readonly release: () => void;\n}\n\n/**\n * Abstraction that exposes projection-related helpers.\n */\nexport interface ProjectionHost extends Releaseable {\n  /**\n   * Get current zoom level.\n   * @returns Zoom level.\n   */\n  readonly getZoom: () => number;\n  /**\n   * Extracts the current clip-space context if the mercator matrix is available.\n   * @returns {ClipContext | null} Clip context or `null` when the transform is not ready.\n   */\n  readonly getClipContext: () => ClipContext | null;\n  /**\n   * Get mercator coordinate from the location\n   * @param location Location.\n   * @returns Mercator coordinate.\n   */\n  readonly fromLngLat: (\n    location: Readonly<SpriteLocation>\n  ) => SpriteMercatorCoordinate;\n  /**\n   * Project the location.\n   * @param location Location.\n   * @returns Projected point if valid location.\n   */\n  readonly project: (location: Readonly<SpriteLocation>) => SpritePoint | null;\n  /**\n   * Unproject the location.\n   * @param point Projected point.\n   * @returns Location if valid point.\n   */\n  readonly unproject: (point: Readonly<SpritePoint>) => SpriteLocation | null;\n  /**\n   * Calculate perspective ratio.\n   * @param location Location.\n   * @param cachedMercator Mercator coodinate when available earlier calculation.\n   * @returns The ratio.\n   */\n  readonly calculatePerspectiveRatio: (\n    location: Readonly<SpriteLocation>,\n    cachedMercator?: SpriteMercatorCoordinate\n  ) => number;\n}\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\nexport interface PrepareDrawSpriteImageParamsBase {\n  readonly imageResources: ImageResourceTable;\n  readonly imageHandleBuffers: Readonly<ImageHandleBuffers>;\n  readonly baseMetersPerPixel: number;\n  readonly spriteMinPixel: number;\n  readonly spriteMaxPixel: number;\n  readonly drawingBufferWidth: number;\n  readonly drawingBufferHeight: number;\n  readonly pixelRatio: number;\n  readonly clipContext: Readonly<ClipContext> | null;\n}\n\nexport interface PrepareDrawSpriteImageParamsBefore<TTag>\n  extends PrepareDrawSpriteImageParamsBase {\n  readonly bucket: readonly Readonly<RenderTargetEntryLike<TTag>>[];\n  readonly bucketBuffers: Readonly<RenderTargetBucketBuffers>;\n  readonly resolvedScaling: ResolvedSpriteScalingOptions;\n  readonly zoomScaleFactor: number;\n}\n\nexport interface PrepareDrawSpriteImageParamsAfter\n  extends PrepareDrawSpriteImageParamsBase {\n  readonly identityScaleX: number;\n  readonly identityScaleY: number;\n  readonly identityOffsetX: number;\n  readonly identityOffsetY: number;\n  readonly screenToClipScaleX: number;\n  readonly screenToClipScaleY: number;\n  readonly screenToClipOffsetX: number;\n  readonly screenToClipOffsetY: number;\n}\n\nexport interface PrepareDrawSpriteImageParams<TTag>\n  extends PrepareDrawSpriteImageParamsBefore<TTag>,\n    PrepareDrawSpriteImageParamsAfter {}\n\n/**\n * Prepared parameters for WebGL rendering.\n */\nexport interface PreparedDrawSpriteImageParams<T> {\n  readonly spriteEntry: InternalSpriteCurrentState<T>;\n  readonly imageEntry: InternalSpriteImageState;\n  readonly imageResource: RegisteredImage;\n  readonly vertexData: Float32Array;\n  readonly opacity: number;\n  readonly hitTestCorners:\n    | readonly [\n        Readonly<SpriteScreenPoint>,\n        Readonly<SpriteScreenPoint>,\n        Readonly<SpriteScreenPoint>,\n        Readonly<SpriteScreenPoint>,\n      ]\n    | null;\n  readonly screenToClip: {\n    readonly scaleX: number;\n    readonly scaleY: number;\n    readonly offsetX: number;\n    readonly offsetY: number;\n  };\n  readonly useShaderSurface: boolean;\n  readonly surfaceShaderInputs: SurfaceShaderInputs | undefined;\n  readonly surfaceClipEnabled: boolean;\n  readonly useShaderBillboard: boolean;\n  readonly billboardUniforms: {\n    readonly center: SpritePoint;\n    readonly halfWidth: number;\n    readonly halfHeight: number;\n    readonly anchor: SpriteAnchor;\n    readonly sin: number;\n    readonly cos: number;\n  } | null;\n}\n\n/**\n * The render calculation host.\n * Abstraction that render calculations.\n * @param TTag Tag type.\n */\nexport interface RenderCalculationHost<TTag> extends Releaseable {\n  readonly prepareDrawSpriteImages: (\n    params: PrepareDrawSpriteImageParams<TTag>\n  ) => PreparedDrawSpriteImageParams<TTag>[];\n}\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Corner model describing world displacements and resulting geographic coordinates for shader validation.\n */\nexport interface SurfaceShaderCornerState\n  extends SpriteLocation,\n    SurfaceCorner {}\n\n/**\n * Aggregated inputs required to reproduce surface geometry on the GPU.\n */\nexport interface SurfaceShaderInputs {\n  readonly mercatorCenter: {\n    readonly x: number;\n    readonly y: number;\n    readonly z: number;\n  };\n  readonly worldToMercatorScale: Readonly<SurfaceCorner>;\n  readonly halfSizeMeters: Readonly<SurfaceCorner>;\n  readonly anchor: Readonly<SpriteAnchor>;\n  readonly offsetMeters: Readonly<SurfaceCorner>;\n  readonly sinCos: { readonly sin: number; readonly cos: number };\n  readonly totalRotateDeg: number;\n  readonly depthBiasNdc: number;\n  readonly centerDisplacement: Readonly<SurfaceCorner>;\n  readonly baseLngLat: Readonly<SpriteLocation>;\n  readonly displacedCenter: Readonly<SpriteLocation>;\n  readonly scaleAdjustment: number;\n  readonly corners: readonly Readonly<SurfaceShaderCornerState>[];\n  clipCenter: {\n    readonly x: number;\n    readonly y: number;\n    readonly z: number;\n    readonly w: number;\n  };\n  clipBasisEast: {\n    readonly x: number;\n    readonly y: number;\n    readonly z: number;\n    readonly w: number;\n  };\n  clipBasisNorth: {\n    readonly x: number;\n    readonly y: number;\n    readonly z: number;\n    readonly w: number;\n  };\n  clipCorners: ReadonlyArray<{\n    readonly x: number;\n    readonly y: number;\n    readonly z: number;\n    readonly w: number;\n  }>;\n}\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Runtime state describing the active interpolation between two sprite locations.\n * Consumers reuse the same state across ticks to avoid re-allocations while animation is running.\n *\n * @property mode - Strategy used to resolve the target location (feedback or feedforward).\n * @property durationMs - Total time allocated for the interpolation in milliseconds.\n * @property easing - Resolved easing function applied to raw progress values.\n * @property startTimestamp - Epoch millisecond when the interpolation started, or -1 when uninitialized.\n * @property from - Origin sprite location cloned from the current render state.\n * @property to - Destination sprite location being interpolated towards.\n */\nexport interface SpriteInterpolationState {\n  readonly mode: SpriteInterpolationMode;\n  readonly durationMs: number;\n  readonly easing: EasingFunction;\n  startTimestamp: number;\n  readonly from: SpriteLocation;\n  readonly to: SpriteLocation;\n}\n\n/**\n * Runtime state tracked for numeric interpolations.\n * @property {number} durationMs - Total duration of the interpolation in milliseconds.\n * @property {EasingFunction} easing - Easing function applied to progress samples.\n * @property {number} from - Start value used for interpolation.\n * @property {number} to - Adjusted target along the shortest rotation path.\n * @property {number} finalValue - Caller-requested final value (used once interpolation completes).\n * @property {number} startTimestamp - Timestamp when interpolation began, `-1` until evaluation starts.\n */\nexport interface DegreeInterpolationState {\n  readonly durationMs: number;\n  readonly easing: EasingFunction;\n  readonly from: number;\n  readonly to: number;\n  readonly finalValue: number;\n  startTimestamp: number;\n}\n\nexport interface DistanceInterpolationState {\n  readonly durationMs: number;\n  readonly easing: EasingFunction;\n  readonly from: number;\n  readonly to: number;\n  readonly finalValue: number;\n  startTimestamp: number;\n}\n\n/**\n * Alias for the interpolation state used internally by sprites.\n */\nexport type InternalSpriteInterpolationState = SpriteInterpolationState;\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Texture filtering parameters resolved from the public options structure.\n */\nexport interface ResolvedTextureFilteringOptions {\n  readonly minFilter: SpriteTextureMinFilter;\n  readonly magFilter: SpriteTextureMagFilter;\n  readonly generateMipmaps: boolean;\n  readonly maxAnisotropy: number;\n}\n\n/**\n * Image metadata ready for use as a WebGL texture.\n */\nexport interface RegisteredImage {\n  readonly id: string;\n  /**\n   * For use (wasm) interoperability id.\n   */\n  readonly handle: number;\n  readonly width: number;\n  readonly height: number;\n  readonly bitmap: ImageBitmap;\n  texture: WebGLTexture | undefined;\n  atlasPageIndex: number;\n  atlasU0: number;\n  atlasV0: number;\n  atlasU1: number;\n  atlasV1: number;\n}\n\n/**\n * Padding resolved for glyph rendering with guaranteed non-negative values.\n */\nexport interface ResolvedTextGlyphPadding {\n  readonly top: number;\n  readonly right: number;\n  readonly bottom: number;\n  readonly left: number;\n}\n\n/**\n * Border sides resolved for glyph rendering.\n */\nexport interface ResolvedBorderSides {\n  readonly top: boolean;\n  readonly right: boolean;\n  readonly bottom: boolean;\n  readonly left: boolean;\n}\n\n/**\n * Fully resolved glyph rendering options with defaults applied.\n */\nexport interface ResolvedTextGlyphOptions {\n  readonly fontFamily: string;\n  readonly fontStyle: 'normal' | 'italic';\n  readonly fontWeight: string;\n  readonly fontSizePixel: number;\n  readonly color: string;\n  readonly letterSpacingPixel: number;\n  readonly backgroundColor?: string;\n  readonly paddingPixel: ResolvedTextGlyphPadding;\n  readonly borderColor?: string;\n  readonly borderWidthPixel: number;\n  readonly borderRadiusPixel: number;\n  readonly borderSides: ResolvedBorderSides;\n  readonly textAlign: SpriteTextGlyphHorizontalAlign;\n  readonly renderPixelRatio: number;\n}\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Mutable point reused when computing hit-test corners.\n */\nexport interface MutableSpriteScreenPoint extends SpriteScreenPoint {\n  x: number;\n  y: number;\n}\n\n/**\n * Compact representation of an Array-like 4x4 matrix.\n */\nexport type MatrixInput = ArrayLike<number>;\n\n/**\n * Cached clip-space context containing the mercator matrix required to project coordinates.\n */\nexport interface ClipContext {\n  readonly mercatorMatrix: MatrixInput;\n}\n\n/**\n * 2D canvas rendering context accepted by the glyph renderer.\n */\nexport type Canvas2DContext =\n  | CanvasRenderingContext2D\n  | OffscreenCanvasRenderingContext2D;\n\n/**\n * Canvas sources supported when rendering text glyphs.\n */\nexport type Canvas2DSource = HTMLCanvasElement | OffscreenCanvas;\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Base attributes for an image that composes a sprite.\n */\nexport interface InternalSpriteImageState {\n  subLayer: number;\n  order: number;\n  imageId: string;\n  imageHandle: number;\n  mode: SpriteMode;\n  opacity: number;\n  scale: number;\n  anchor: Readonly<SpriteAnchor>;\n  offset: SpriteImageOffset;\n  rotateDeg: number;\n  displayedRotateDeg: number;\n  autoRotation: boolean;\n  autoRotationMinDistanceMeters: number;\n  resolvedBaseRotateDeg: number;\n  originLocation?: Readonly<SpriteImageOriginLocation>;\n  originReferenceKey: SpriteOriginReferenceKey;\n  originRenderTargetIndex: SpriteOriginReferenceIndex;\n  rotationInterpolationState: Readonly<DegreeInterpolationState> | null;\n  rotationInterpolationOptions: Readonly<SpriteInterpolationOptions> | null;\n  offsetDegInterpolationState: Readonly<DegreeInterpolationState> | null;\n  offsetMetersInterpolationState: Readonly<DistanceInterpolationState> | null;\n  lastCommandRotateDeg: number;\n  lastCommandOffsetDeg: number;\n  lastCommandOffsetMeters: number;\n  surfaceShaderInputs?: Readonly<SurfaceShaderInputs>;\n  hitTestCorners?: [\n    MutableSpriteScreenPoint,\n    MutableSpriteScreenPoint,\n    MutableSpriteScreenPoint,\n    MutableSpriteScreenPoint,\n  ];\n}\n\n/**\n * Current sprite state tracked internally by the layer.\n */\nexport interface InternalSpriteCurrentState<TTag> {\n  spriteId: string;\n  handle: IdHandle;\n  isEnabled: boolean;\n  currentLocation: Readonly<SpriteLocation>;\n  fromLocation?: Readonly<SpriteLocation>;\n  toLocation?: Readonly<SpriteLocation>;\n  images: Map<number, Map<number, InternalSpriteImageState>>;\n  tag: TTag | null;\n  interpolationState: InternalSpriteInterpolationState | null;\n  pendingInterpolationOptions: SpriteInterpolationOptions | null;\n  lastCommandLocation: Readonly<SpriteLocation>;\n  lastAutoRotationLocation: Readonly<SpriteLocation>;\n  lastAutoRotationAngleDeg: number;\n  cachedMercator: Readonly<SpriteMercatorCoordinate>;\n  cachedMercatorLng: number;\n  cachedMercatorLat: number;\n  cachedMercatorZ: number | undefined;\n}\n","// maplibre-gl-layers - MapLibre's layer extension library enabling\n// the display, movement, and modification of large numbers of dynamic sprite images\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT\n// https://github.com/kekyo/maplibre-gl-layers\n\nimport type { EasingFunction } from './types';\n\n/**\n * Linear interpolation that clamps the value to the [0, 1] range.\n */\nexport const linearEasing: EasingFunction = (progress: number): number => {\n  if (!Number.isFinite(progress)) {\n    return 1;\n  }\n  if (progress <= 0) {\n    return 0;\n  }\n  if (progress >= 1) {\n    return 1;\n  }\n  return progress;\n};\n\n/**\n * Returns the provided easing function or falls back to linear interpolation.\n */\nexport const resolveEasing = (easing?: EasingFunction): EasingFunction =>\n  easing ?? linearEasing;\n","// maplibre-gl-layers - MapLibre's layer extension library enabling\n// the display, movement, and modification of large numbers of dynamic sprite images\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT\n// https://github.com/kekyo/maplibre-gl-layers\n\nimport type { Rect } from './looseQuadTree';\nimport type {\n  SpriteAnchor,\n  SpriteImageOffset,\n  SpriteTextGlyphHorizontalAlign,\n} from './types';\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/** Default sprite anchor centered at the image origin. */\nexport const DEFAULT_ANCHOR: Readonly<SpriteAnchor> = {\n  x: 0.0,\n  y: 0.0,\n} as const;\n\n/** Default image offset applied when none is provided. */\nexport const DEFAULT_IMAGE_OFFSET: Readonly<SpriteImageOffset> = {\n  offsetMeters: 0,\n  offsetDeg: 0,\n} as const;\n\nexport const DEFAULT_TEXT_GLYPH_FONT_FAMILY = 'sans-serif';\nexport const DEFAULT_TEXT_GLYPH_FONT_STYLE: 'normal' | 'italic' = 'normal';\nexport const DEFAULT_TEXT_GLYPH_FONT_WEIGHT = 'normal';\nexport const DEFAULT_TEXT_GLYPH_COLOR = '#000000';\nexport const DEFAULT_TEXT_GLYPH_ALIGN: SpriteTextGlyphHorizontalAlign =\n  'center';\nexport const DEFAULT_TEXT_GLYPH_FONT_SIZE = 32;\nexport const DEFAULT_TEXT_GLYPH_RENDER_PIXEL_RATIO = 1;\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * WGS84-compatible Earth radius in meters.\n * Used to convert one radian of longitude into meters when scaling sprites.\n * @constant\n */\nexport const EARTH_RADIUS_METERS = 6378137;\n\n/**\n * Multiplier for converting degrees to radians.\n * @constant\n */\nexport const DEG2RAD = Math.PI / 180;\n\n/**\n * Multiplier for converting radians to degrees.\n * @constant\n */\nexport const RAD2DEG = 180 / Math.PI;\n\n/**\n * Default MapLibre tile size used for Web Mercator calculations.\n * @constant\n */\nexport const TILE_SIZE = 512;\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n// Clamp the clip-space w component to avoid instability near the clip plane.\nexport const MIN_CLIP_Z_EPSILON = 1e-7;\n\n/** Small depth bias applied in NDC space. */\nexport const EPS_NDC = 1e-6;\n\n/** Maximum number of order slots available within a sub-layer (0..ORDER_MAX-1). */\nexport const ORDER_MAX = 16;\n\n/** Bucket width used to encode sub-layer and order into a single number. */\nexport const ORDER_BUCKET = 16;\n\nexport const MIN_CLIP_W = 1e-6;\n\n//////////////////////////////////////////////////////////////////////////////////////\n\nexport const HIT_TEST_WORLD_BOUNDS: Rect = {\n  x0: -180,\n  y0: -90,\n  x1: 180,\n  y1: 90,\n} as const;\n\n/** Small tolerance used to handle floating-point error during hit testing. */\nexport const HIT_TEST_EPSILON = 1e-3;\n\n//////////////////////////////////////////////////////////////////////////////////////\n\nexport const MAX_TEXT_GLYPH_RENDER_PIXEL_RATIO = 4;\nexport const MIN_TEXT_GLYPH_FONT_SIZE = 4;\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Index order used to decompose a quad into two triangles.\n * @constant\n */\nexport const TRIANGLE_INDICES = [0, 1, 2, 2, 1, 3] as const;\n\n/**\n * UV coordinates for each corner of a quad following the index order in {@link TRIANGLE_INDICES}.\n * @constant\n */\nexport const UV_CORNERS: ReadonlyArray<readonly [number, number]> = [\n  [0.0, 0.0],\n  [1.0, 0.0],\n  [0.0, 1.0],\n  [1.0, 1.0],\n] as const;\n","// maplibre-gl-layers - MapLibre's layer extension library enabling\n// the display, movement, and modification of large numbers of dynamic sprite images\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT\n// https://github.com/kekyo/maplibre-gl-layers\n\nimport type {\n  SpriteAnchor,\n  SpriteImageOffset,\n  SpriteLocation,\n  SpritePoint,\n  SpriteScalingOptions,\n  SpriteScreenPoint,\n} from './types';\nimport type {\n  InternalSpriteCurrentState,\n  MatrixInput,\n  ProjectionHost,\n  SpriteMercatorCoordinate,\n} from './internalTypes';\nimport {\n  DEG2RAD,\n  EARTH_RADIUS_METERS,\n  RAD2DEG,\n  TILE_SIZE,\n  TRIANGLE_INDICES,\n  UV_CORNERS,\n} from './const';\nimport { UNLIMITED_SPRITE_SCALING_OPTIONS } from './default';\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Produces a deep copy so later updates do not mutate the original object.\n */\nexport const cloneSpriteLocation = (\n  location: SpriteLocation\n): SpriteLocation => {\n  if (location.z === undefined) {\n    return { lng: location.lng, lat: location.lat };\n  }\n  return { lng: location.lng, lat: location.lat, z: location.z };\n};\n\n/**\n * Linearly interpolates longitude, latitude, and optionally altitude.\n * The `ratio` may fall outside [0, 1]; callers are responsible for clamping if needed.\n */\nexport const lerpSpriteLocation = (\n  from: SpriteLocation,\n  to: SpriteLocation,\n  ratio: number\n): SpriteLocation => {\n  const zFrom = from.z ?? 0;\n  const zTo = to.z ?? 0;\n  const hasZ = from.z !== undefined || to.z !== undefined;\n\n  const result: SpriteLocation = {\n    lng: from.lng + (to.lng - from.lng) * ratio,\n    lat: from.lat + (to.lat - from.lat) * ratio,\n  };\n\n  if (hasZ) {\n    result.z = zFrom + (zTo - zFrom) * ratio;\n  }\n\n  return result;\n};\n\n/**\n * Compares two locations. Treats altitude as equal when either side is undefined.\n */\nexport const spriteLocationsEqual = (\n  a: SpriteLocation,\n  b: SpriteLocation\n): boolean => {\n  const zA = a.z ?? null;\n  const zB = b.z ?? null;\n  return a.lng === b.lng && a.lat === b.lat && zA === zB;\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Multiplies a 4x4 matrix with a 4-component vector using row-major indexing.\n * @param {MatrixInput} matrix - Matrix to multiply.\n * @param {number} x - X component of the vector.\n * @param {number} y - Y component of the vector.\n * @param {number} z - Z component of the vector.\n * @param {number} w - W component of the vector.\n * @returns {[number, number, number, number]} Resulting homogeneous coordinate.\n */\nexport const multiplyMatrixAndVector = (\n  matrix: MatrixInput,\n  x: number,\n  y: number,\n  z: number,\n  w: number\n): [number, number, number, number] => {\n  const m0 = matrix[0] ?? 0;\n  const m1 = matrix[1] ?? 0;\n  const m2 = matrix[2] ?? 0;\n  const m3 = matrix[3] ?? 0;\n  const m4 = matrix[4] ?? 0;\n  const m5 = matrix[5] ?? 0;\n  const m6 = matrix[6] ?? 0;\n  const m7 = matrix[7] ?? 0;\n  const m8 = matrix[8] ?? 0;\n  const m9 = matrix[9] ?? 0;\n  const m10 = matrix[10] ?? 0;\n  const m11 = matrix[11] ?? 0;\n  const m12 = matrix[12] ?? 0;\n  const m13 = matrix[13] ?? 0;\n  const m14 = matrix[14] ?? 0;\n  const m15 = matrix[15] ?? 0;\n  return [\n    m0 * x + m4 * y + m8 * z + m12 * w,\n    m1 * x + m5 * y + m9 * z + m13 * w,\n    m2 * x + m6 * y + m10 * z + m14 * w,\n    m3 * x + m7 * y + m11 * z + m15 * w,\n  ];\n};\n\n/**\n * Structure holding resolved sprite scaling options.\n * @property {number} metersPerPixel - Effective number of meters represented by each rendered pixel.\n * @property {number} zoomMin - Lowest zoom level at which scaling interpolation begins.\n * @property {number} zoomMax - Highest zoom level at which scaling interpolation ends.\n * @property {number} scaleMin - Scale multiplier applied at {@link ResolvedSpriteScalingOptions.zoomMin}.\n * @property {number} scaleMax - Scale multiplier applied at {@link ResolvedSpriteScalingOptions.zoomMax}.\n * @property {number} spriteMinPixel - Lower clamp for sprite size in pixels.\n * @property {number} spriteMaxPixel - Upper clamp for sprite size in pixels.\n */\nexport interface ResolvedSpriteScalingOptions {\n  metersPerPixel: number;\n  zoomMin: number;\n  zoomMax: number;\n  scaleMin: number;\n  scaleMax: number;\n  spriteMinPixel: number;\n  spriteMaxPixel: number;\n}\n\n/**\n * Fills missing {@link SpriteScalingOptions} values with defaults so downstream math can assume a complete object.\n * @param options Optional scaling configuration from the caller.\n * @returns {ResolvedSpriteScalingOptions} Resolved scaling settings covering every field.\n */\nexport const resolveScalingOptions = (\n  options?: SpriteScalingOptions\n): ResolvedSpriteScalingOptions => {\n  const base = UNLIMITED_SPRITE_SCALING_OPTIONS;\n  const warnings: string[] = [];\n\n  const fallbackMetersPerPixel =\n    Number.isFinite(base.metersPerPixel) && (base.metersPerPixel ?? 0) > 0\n      ? base.metersPerPixel!\n      : 1;\n  let metersPerPixel =\n    options?.metersPerPixel !== undefined\n      ? options.metersPerPixel\n      : fallbackMetersPerPixel;\n  if (!Number.isFinite(metersPerPixel) || metersPerPixel <= 0) {\n    if (options?.metersPerPixel !== undefined) {\n      warnings.push(\n        `metersPerPixel(${String(options.metersPerPixel)}) is invalid; using ${fallbackMetersPerPixel}`\n      );\n    }\n    metersPerPixel = fallbackMetersPerPixel;\n  }\n\n  const fallbackZoomMin = Number.isFinite(base.zoomMin) ? base.zoomMin! : 0;\n  let zoomMin =\n    options?.zoomMin !== undefined ? options.zoomMin : fallbackZoomMin;\n  if (!Number.isFinite(zoomMin)) {\n    if (options?.zoomMin !== undefined) {\n      warnings.push(\n        `zoomMin(${String(options.zoomMin)}) is not finite; using ${fallbackZoomMin}`\n      );\n    }\n    zoomMin = fallbackZoomMin;\n  }\n\n  const fallbackZoomMax =\n    Number.isFinite(base.zoomMax) && base.zoomMax! > fallbackZoomMin\n      ? base.zoomMax!\n      : fallbackZoomMin;\n  let zoomMax =\n    options?.zoomMax !== undefined ? options.zoomMax : fallbackZoomMax;\n  if (!Number.isFinite(zoomMax)) {\n    if (options?.zoomMax !== undefined) {\n      warnings.push(\n        `zoomMax(${String(options.zoomMax)}) is not finite; using ${fallbackZoomMax}`\n      );\n    }\n    zoomMax = fallbackZoomMax;\n  }\n\n  if (zoomMax < zoomMin) {\n    warnings.push(\n      `zoomMax(${zoomMax}) < zoomMin(${zoomMin}); swapped values to maintain ascending order`\n    );\n    [zoomMin, zoomMax] = [zoomMax, zoomMin];\n  }\n\n  const fallbackScaleMin = Number.isFinite(base.scaleMin) ? base.scaleMin! : 1;\n  let scaleMin =\n    options?.scaleMin !== undefined ? options.scaleMin : fallbackScaleMin;\n  if (!Number.isFinite(scaleMin)) {\n    if (options?.scaleMin !== undefined) {\n      warnings.push(\n        `scaleMin(${String(options.scaleMin)}) is not finite; using ${fallbackScaleMin}`\n      );\n    }\n    scaleMin = fallbackScaleMin;\n  }\n  if (scaleMin < 0) {\n    warnings.push(`scaleMin(${scaleMin}) is negative; clamped to 0`);\n    scaleMin = 0;\n  }\n\n  const fallbackScaleMax = Number.isFinite(base.scaleMax) ? base.scaleMax! : 1;\n  let scaleMax =\n    options?.scaleMax !== undefined ? options.scaleMax : fallbackScaleMax;\n  if (!Number.isFinite(scaleMax)) {\n    if (options?.scaleMax !== undefined) {\n      warnings.push(\n        `scaleMax(${String(options.scaleMax)}) is not finite; using ${fallbackScaleMax}`\n      );\n    }\n    scaleMax = fallbackScaleMax;\n  }\n  if (scaleMax < 0) {\n    warnings.push(`scaleMax(${scaleMax}) is negative; clamped to 0`);\n    scaleMax = 0;\n  }\n\n  if (scaleMax < scaleMin) {\n    warnings.push(\n      `scaleMax(${scaleMax}) < scaleMin(${scaleMin}); swapped values to maintain ascending order`\n    );\n    [scaleMin, scaleMax] = [scaleMax, scaleMin];\n  }\n\n  const fallbackSpriteMin =\n    Number.isFinite(base.spriteMinPixel) && base.spriteMinPixel! >= 0\n      ? base.spriteMinPixel!\n      : 0;\n  let spriteMinPixel =\n    options?.spriteMinPixel !== undefined\n      ? options.spriteMinPixel\n      : fallbackSpriteMin;\n  if (!Number.isFinite(spriteMinPixel)) {\n    if (options?.spriteMinPixel !== undefined) {\n      warnings.push(\n        `spriteMinPixel(${String(\n          options.spriteMinPixel\n        )}) is not finite; using ${fallbackSpriteMin}`\n      );\n    }\n    spriteMinPixel = fallbackSpriteMin;\n  } else if (spriteMinPixel < 0) {\n    warnings.push(\n      `spriteMinPixel(${spriteMinPixel}) is negative; clamped to 0`\n    );\n    spriteMinPixel = 0;\n  }\n\n  const fallbackSpriteMax =\n    Number.isFinite(base.spriteMaxPixel) && base.spriteMaxPixel! >= 0\n      ? base.spriteMaxPixel!\n      : 0;\n  let spriteMaxPixel =\n    options?.spriteMaxPixel !== undefined\n      ? options.spriteMaxPixel\n      : fallbackSpriteMax;\n  if (!Number.isFinite(spriteMaxPixel)) {\n    if (options?.spriteMaxPixel !== undefined) {\n      warnings.push(\n        `spriteMaxPixel(${String(\n          options.spriteMaxPixel\n        )}) is not finite; using ${fallbackSpriteMax}`\n      );\n    }\n    spriteMaxPixel = fallbackSpriteMax;\n  } else if (spriteMaxPixel < 0) {\n    warnings.push(\n      `spriteMaxPixel(${spriteMaxPixel}) is negative; clamped to 0`\n    );\n    spriteMaxPixel = 0;\n  }\n\n  if (\n    spriteMinPixel > 0 &&\n    spriteMaxPixel > 0 &&\n    spriteMaxPixel < spriteMinPixel\n  ) {\n    warnings.push(\n      `spriteMaxPixel(${spriteMaxPixel}) < spriteMinPixel(${spriteMinPixel}); swapped values to maintain ascending order`\n    );\n    [spriteMinPixel, spriteMaxPixel] = [spriteMaxPixel, spriteMinPixel];\n  }\n\n  if (warnings.length > 0 && typeof console !== 'undefined') {\n    const warn = console.warn ?? null;\n    if (typeof warn === 'function') {\n      warn(`[SpriteScalingOptions] ${warnings.join('; ')}`);\n    }\n  }\n\n  return {\n    metersPerPixel,\n    zoomMin,\n    zoomMax,\n    scaleMin,\n    scaleMax,\n    spriteMinPixel,\n    spriteMaxPixel,\n  };\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Computes a linear scale factor based on zoom level.\n * @param {number} zoom - Current zoom level from MapLibre's camera.\n * @param {ResolvedSpriteScalingOptions} scaling - Resolved scaling options.\n * @returns {number} Scale value interpolated between {@link ResolvedSpriteScalingOptions.scaleMin} and {@link ResolvedSpriteScalingOptions.scaleMax}.\n */\nexport const calculateZoomScaleFactor = (\n  zoom: number,\n  scaling: ResolvedSpriteScalingOptions\n): number => {\n  const { zoomMin, zoomMax, scaleMin, scaleMax } = scaling;\n  // When the configured range collapses (max <= min), treat scale as constant to avoid division by zero.\n  if (zoomMax <= zoomMin) {\n    return scaleMax;\n  }\n  // Clamp low zooms to the minimum scale so sprites do not grow further when zooming out.\n  if (zoom <= zoomMin) {\n    return scaleMin;\n  }\n  // Clamp zooms beyond the upper bound to the maximum scale for stability when zooming in.\n  if (zoom >= zoomMax) {\n    return scaleMax;\n  }\n  const t = (zoom - zoomMin) / (zoomMax - zoomMin);\n  return scaleMin + (scaleMax - scaleMin) * t;\n};\n\n/**\n * Calculates meters per pixel at the given latitude.\n * Uses Web Mercator scale and applies the latitude-based cosine correction.\n * @param {number} zoom - Map zoom level used to determine the Mercator scale.\n * @param {number} latitude - Latitude in degrees where the meters-per-pixel value is resolved.\n * @returns {number} Distance in meters represented by a single pixel at the provided latitude.\n */\nexport const calculateMetersPerPixelAtLatitude = (\n  zoom: number,\n  latitude: number\n): number => {\n  const cosLatitude = Math.cos(latitude * DEG2RAD);\n  const scale = Math.pow(2, zoom);\n  const circumference = 2 * Math.PI * EARTH_RADIUS_METERS;\n  return (cosLatitude * circumference) / (TILE_SIZE * scale);\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Checks whether a value is finite and not `NaN`.\n * @param {number} value - Value to validate.\n * @returns {boolean} `true` when the number is both finite and not `NaN`.\n */\nexport const isFiniteNumber = (value: number): boolean =>\n  Number.isFinite(value) && !Number.isNaN(value);\n\n/**\n * Ensures a number is finite, falling back to `0` when invalid.\n * @param {number} value - Value to sanitize.\n * @returns {number} Either the original finite value or the neutral fallback `0`.\n */\nconst ensureFinite = (value: number): number =>\n  // Normalize infinite/NaN inputs so downstream multiplication results stay bounded.\n  Number.isFinite(value) ? value : 0;\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Calculates the distance and bearing between two points in meters.\n * @param {SpriteLocation} from - Starting point expressed in longitude/latitude (degrees) and optional altitude.\n * @param {SpriteLocation} to - Destination point expressed in longitude/latitude (degrees) and optional altitude.\n * @returns {{ distanceMeters: number; bearingDeg: number }} Distance in meters and bearing clockwise from north.\n */\nexport const calculateDistanceAndBearingMeters = (\n  from: SpriteLocation,\n  to: SpriteLocation\n): { distanceMeters: number; bearingDeg: number } => {\n  const lat1Rad = from.lat * DEG2RAD;\n  const lat2Rad = to.lat * DEG2RAD;\n  const lng1Rad = from.lng * DEG2RAD;\n  const lng2Rad = to.lng * DEG2RAD;\n\n  const deltaLat = lat2Rad - lat1Rad;\n  const deltaLng = lng2Rad - lng1Rad;\n\n  const sinHalfLat = Math.sin(deltaLat / 2);\n  const sinHalfLng = Math.sin(deltaLng / 2);\n  const haversine =\n    sinHalfLat * sinHalfLat +\n    Math.cos(lat1Rad) * Math.cos(lat2Rad) * sinHalfLng * sinHalfLng;\n  const clamped = Math.min(1, Math.max(0, haversine));\n  const angularDistance =\n    2 * Math.atan2(Math.sqrt(clamped), Math.sqrt(Math.max(0, 1 - clamped)));\n  const distanceMeters = EARTH_RADIUS_METERS * angularDistance;\n\n  // Bail out when the computed distance is invalid or degenerate to avoid noisy bearings.\n  if (!isFiniteNumber(distanceMeters) || distanceMeters <= 0) {\n    return { distanceMeters: 0, bearingDeg: 0 };\n  }\n\n  const y = Math.sin(deltaLng) * Math.cos(lat2Rad);\n  const x =\n    Math.cos(lat1Rad) * Math.sin(lat2Rad) -\n    Math.sin(lat1Rad) * Math.cos(lat2Rad) * Math.cos(deltaLng);\n  let bearingRad = Math.atan2(y, x);\n  // Guard: when inputs align, atan2 can return NaN; normalize to zero.\n  if (!Number.isFinite(bearingRad)) {\n    bearingRad = 0;\n  }\n  let bearingDeg = bearingRad * RAD2DEG;\n  // If the conversion produces an invalid number, reset the bearing so callers do not consume garbage.\n  if (!isFiniteNumber(bearingDeg)) {\n    bearingDeg = 0;\n  } else {\n    // Normalize to [0, 360) because MapLibre expects clockwise degrees from north.\n    bearingDeg = (bearingDeg + 360) % 360;\n  }\n\n  return { distanceMeters, bearingDeg };\n};\n\n/**\n * Clamps sprite dimensions so they stay within the configured pixel bounds while preserving aspect ratio.\n * @param {number} width - Calculated sprite width in pixels.\n * @param {number} height - Calculated sprite height in pixels.\n * @param {number} spriteMinPixel - Minimum allowed pixel extent for the sprite's largest side.\n * @param {number} spriteMaxPixel - Maximum allowed pixel extent for the sprite's largest side.\n * @returns {{ width: number; height: number }} Dimensions adjusted to satisfy min/max constraints.\n */\nconst clampSpritePixelSize = (\n  width: number,\n  height: number,\n  spriteMinPixel: number,\n  spriteMaxPixel: number\n): { width: number; height: number; scaleAdjustment: number } => {\n  const largest = Math.max(width, height);\n  // If the measured size is invalid or zero, skip clamping to avoid divisions.\n  if (!Number.isFinite(largest) || largest <= 0) {\n    return { width, height, scaleAdjustment: 1 };\n  }\n  let nextWidth = width;\n  let nextHeight = height;\n  let scaleAdjustment = 1;\n  let adjustedLargest = largest;\n  // Expand sprites that would render too small so visibility constraints are respected.\n  if (spriteMinPixel > 0 && largest < spriteMinPixel) {\n    const factor = spriteMinPixel / largest;\n    nextWidth *= factor;\n    nextHeight *= factor;\n    scaleAdjustment *= factor;\n    adjustedLargest *= factor;\n  }\n  // Shrink sprites that would exceed the configured maximum to protect layer.\n  if (spriteMaxPixel > 0 && adjustedLargest > spriteMaxPixel) {\n    const factor = spriteMaxPixel / adjustedLargest;\n    nextWidth *= factor;\n    nextHeight *= factor;\n    scaleAdjustment *= factor;\n  }\n  return { width: nextWidth, height: nextHeight, scaleAdjustment };\n};\n\n/**\n * Calculates billboard image dimensions in pixels and clamps them to display limits.\n * @param {number | undefined} imageWidth - Source bitmap width in pixels.\n * @param {number | undefined} imageHeight - Source bitmap height in pixels.\n * @param {number} baseMetersPerPixel - Base scale derived from map zoom and latitude.\n * @param {number} imageScale - User-provided scale multiplier.\n * @param {number} zoomScaleFactor - Zoom-dependent scale multiplier derived from {@link calculateZoomScaleFactor}.\n * @param {number} effectivePixelsPerMeter - Conversion between world meters and screen pixels.\n * @param {number} spriteMinPixel - Lower pixel clamp for the sprite's largest side.\n * @param {number} spriteMaxPixel - Upper pixel clamp for the sprite's largest side.\n * @returns {{ width: number; height: number; scaleAdjustment: number }} Pixel dimensions alongside the scale factor applied during clamping.\n */\nexport const calculateBillboardPixelDimensions = (\n  imageWidth: number | undefined,\n  imageHeight: number | undefined,\n  baseMetersPerPixel: number,\n  imageScale: number,\n  zoomScaleFactor: number,\n  effectivePixelsPerMeter: number,\n  spriteMinPixel: number,\n  spriteMaxPixel: number\n): { width: number; height: number; scaleAdjustment: number } => {\n  // Reject invalid inputs so the renderer can skip drawing without crashing downstream matrices.\n  if (\n    !imageWidth ||\n    !imageHeight ||\n    imageWidth <= 0 ||\n    imageHeight <= 0 ||\n    baseMetersPerPixel <= 0 ||\n    effectivePixelsPerMeter <= 0\n  ) {\n    return { width: 0, height: 0, scaleAdjustment: 1 };\n  }\n  const scaleFactor =\n    baseMetersPerPixel * imageScale * zoomScaleFactor * effectivePixelsPerMeter;\n  const rawWidth = ensureFinite(imageWidth * scaleFactor);\n  const rawHeight = ensureFinite(imageHeight * scaleFactor);\n  return clampSpritePixelSize(\n    rawWidth,\n    rawHeight,\n    spriteMinPixel,\n    spriteMaxPixel\n  );\n};\n\n/**\n * Computes the billboard offset in screen-space pixels.\n * @param {SpriteImageOffset | undefined} offset - Offset configuration describing length (meters) and heading (degrees).\n * @param {number} imageScale - User-provided scale multiplier applied to the offset distance.\n * @param {number} zoomScaleFactor - Zoom-dependent scale multiplier.\n * @param {number} effectivePixelsPerMeter - Conversion factor from meters to pixels.\n * @param {number} [sizeScaleAdjustment=1] - Additional scale factor applied when sprite size is clamped.\n * @returns {SpriteScreenPoint} Screen-space offset relative to the billboard center.\n */\nexport const calculateBillboardOffsetPixels = (\n  offset: SpriteImageOffset | undefined,\n  imageScale: number,\n  zoomScaleFactor: number,\n  effectivePixelsPerMeter: number,\n  sizeScaleAdjustment = 1\n): SpriteScreenPoint => {\n  const offsetMeters =\n    (offset?.offsetMeters ?? 0) * imageScale * zoomScaleFactor;\n  const offsetPixels =\n    offsetMeters * effectivePixelsPerMeter * sizeScaleAdjustment;\n  const offsetRad = (offset?.offsetDeg ?? 0) * DEG2RAD;\n  return {\n    x: offsetPixels * Math.sin(offsetRad),\n    y: offsetPixels * Math.cos(offsetRad),\n  };\n};\n\n/**\n * Computes the screen-space shift caused by anchor rotation for billboards.\n * @param {number} halfWidth - Half of the sprite width in pixels.\n * @param {number} halfHeight - Half of the sprite height in pixels.\n * @param {SpriteAnchor | undefined} anchor - Anchor definition normalized to [-1, 1] range.\n * @param {number} totalRotateDeg - Rotation applied to the sprite, combining user and bearing rotations.\n * @returns {SpritePoint} Pixel delta required to bring the anchor back to the requested origin.\n */\nexport const calculateBillboardAnchorShiftPixels = (\n  halfWidth: number,\n  halfHeight: number,\n  anchor: SpriteAnchor | undefined,\n  totalRotateDeg: number\n): SpritePoint => {\n  // If we have no spatial extent, rotation/anchor math loses meaning, so skip adjustments.\n  if (halfWidth <= 0 || halfHeight <= 0) {\n    return { x: 0, y: 0 };\n  }\n  const anchorX = (anchor?.x ?? 0) * halfWidth;\n  const anchorY = (anchor?.y ?? 0) * halfHeight;\n  // When anchor sits at the geometric center, no compensating shift is needed.\n  if (anchorX === 0 && anchorY === 0) {\n    return { x: 0, y: 0 };\n  }\n  const rad = -totalRotateDeg * DEG2RAD;\n  const cosR = Math.cos(rad);\n  const sinR = Math.sin(rad);\n  const shiftX = -anchorX * cosR + anchorY * sinR;\n  const shiftY = -anchorX * sinR - anchorY * cosR;\n  return { x: shiftX, y: shiftY };\n};\n\n/**\n * Calculates surface image dimensions in world meters.\n * @param {number | undefined} imageWidth - Source bitmap width in pixels.\n * @param {number | undefined} imageHeight - Source bitmap height in pixels.\n * @param {number} baseMetersPerPixel - World meters represented by a pixel at the current zoom.\n * @param {number} imageScale - User-provided scale multiplier.\n * @param {number} zoomScaleFactor - Zoom-dependent scale multiplier.\n * @returns {{ width: number; height: number; scaleAdjustment: number }} World dimensions in meters and the applied clamp scale factor.\n */\nexport const calculateSurfaceWorldDimensions = (\n  imageWidth: number | undefined,\n  imageHeight: number | undefined,\n  baseMetersPerPixel: number,\n  imageScale: number,\n  zoomScaleFactor: number,\n  options?: {\n    effectivePixelsPerMeter?: number;\n    spriteMinPixel?: number;\n    spriteMaxPixel?: number;\n  }\n): { width: number; height: number; scaleAdjustment: number } => {\n  // Reject invalid inputs to keep downstream displacement math finite.\n  if (\n    !imageWidth ||\n    !imageHeight ||\n    imageWidth <= 0 ||\n    imageHeight <= 0 ||\n    baseMetersPerPixel <= 0\n  ) {\n    return { width: 0, height: 0, scaleAdjustment: 1 };\n  }\n  const scaleFactor = baseMetersPerPixel * imageScale * zoomScaleFactor;\n  let width = ensureFinite(imageWidth * scaleFactor);\n  let height = ensureFinite(imageHeight * scaleFactor);\n  let scaleAdjustment = 1;\n\n  const effectivePixelsPerMeter =\n    options?.effectivePixelsPerMeter !== undefined\n      ? options.effectivePixelsPerMeter\n      : 0;\n  const spriteMinPixel = options?.spriteMinPixel ?? 0;\n  const spriteMaxPixel = options?.spriteMaxPixel ?? 0;\n\n  if (\n    effectivePixelsPerMeter > 0 &&\n    Number.isFinite(effectivePixelsPerMeter) &&\n    (spriteMinPixel > 0 || spriteMaxPixel > 0)\n  ) {\n    const largestMeters = Math.max(width, height);\n    if (largestMeters > 0 && Number.isFinite(largestMeters)) {\n      const largestPixels = largestMeters * effectivePixelsPerMeter;\n      if (Number.isFinite(largestPixels) && largestPixels > 0) {\n        let scale = 1;\n        if (spriteMinPixel > 0 && largestPixels < spriteMinPixel) {\n          scale = spriteMinPixel / largestPixels;\n        }\n        const scaledLargest = largestPixels * scale;\n        if (spriteMaxPixel > 0 && scaledLargest > spriteMaxPixel) {\n          scale = spriteMaxPixel / largestPixels;\n        }\n        if (scale !== 1) {\n          width *= scale;\n          height *= scale;\n          scaleAdjustment *= scale;\n        }\n      }\n    }\n  }\n\n  return { width, height, scaleAdjustment };\n};\n\n/**\n * Computes east/north shifts from anchor rotation on surface images.\n * @param {number} halfWidthMeters - Half of the world-space width.\n * @param {number} halfHeightMeters - Half of the world-space height.\n * @param {SpriteAnchor | undefined} anchor - Anchor definition normalized to [-1, 1] range.\n * @param {number} totalRotateDeg - Rotation angle applied to the surface.\n * @returns {SurfaceCorner} Displacement in meters required to apply the anchor.\n */\nexport const calculateSurfaceAnchorShiftMeters = (\n  halfWidthMeters: number,\n  halfHeightMeters: number,\n  anchor: SpriteAnchor | undefined,\n  totalRotateDeg: number\n): SurfaceCorner => {\n  // Degenerate dimensions mean the quad collapses; skip anchor adjustments.\n  if (halfWidthMeters <= 0 || halfHeightMeters <= 0) {\n    return { east: 0, north: 0 };\n  }\n  const anchorEast = (anchor?.x ?? 0) * halfWidthMeters;\n  const anchorNorth = (anchor?.y ?? 0) * halfHeightMeters;\n  // An anchor exactly at center produces no additional displacement.\n  if (anchorEast === 0 && anchorNorth === 0) {\n    return { east: 0, north: 0 };\n  }\n  const rad = -totalRotateDeg * DEG2RAD;\n  const cosR = Math.cos(rad);\n  const sinR = Math.sin(rad);\n  const east = -anchorEast * cosR + anchorNorth * sinR;\n  const north = -anchorEast * sinR - anchorNorth * cosR;\n  return { east, north };\n};\n\n/**\n * Calculates surface image offsets in meters.\n * @param {SpriteImageOffset | undefined} offset - Offset configuration for the surface sprite.\n * @param {number} imageScale - User-provided scale multiplier applied to the offset distance.\n * @param {number} zoomScaleFactor - Zoom-dependent scale multiplier.\n * @param {number} [sizeScaleAdjustment=1] - Additional scale factor applied when sprite size is clamped.\n * @returns {SurfaceCorner} Offset vector in meters.\n */\nexport const calculateSurfaceOffsetMeters = (\n  offset: SpriteImageOffset | undefined,\n  imageScale: number,\n  zoomScaleFactor: number,\n  sizeScaleAdjustment = 1\n): SurfaceCorner => {\n  const offsetMeters =\n    (offset?.offsetMeters ?? 0) * imageScale * zoomScaleFactor;\n  // Short-circuit when no displacement is requested to avoid redundant trig.\n  if (offsetMeters === 0) {\n    return { east: 0, north: 0 };\n  }\n  const rad = (offset?.offsetDeg ?? 0) * DEG2RAD;\n  return {\n    east: offsetMeters * Math.sin(rad) * sizeScaleAdjustment,\n    north: offsetMeters * Math.cos(rad) * sizeScaleAdjustment,\n  };\n};\n\n/**\n * Lower bound used to avoid dividing by zero when cosine of latitude approaches zero at the poles.\n * @constant\n */\nconst MIN_COS_LAT = 1e-6;\n\n/**\n * Adds east/north distances (meters) to a longitude/latitude pair.\n * @param {number} location - Base location in degrees.\n * @param {number} east - Eastward displacement in meters.\n * @param {number} north - Northward displacement in meters.\n * @returns {SpriteLocation} New geographic position after applying the displacement.\n */\nexport const applySurfaceDisplacement = (\n  location: SpriteLocation,\n  corner: SurfaceCorner\n): SpriteLocation => {\n  const deltaLat = (corner.north / EARTH_RADIUS_METERS) * RAD2DEG;\n  const cosLat = Math.cos(location.lat * DEG2RAD);\n  const deltaLng =\n    (corner.east / (EARTH_RADIUS_METERS * Math.max(cosLat, MIN_COS_LAT))) *\n    RAD2DEG;\n  return {\n    lng: location.lng + deltaLng,\n    lat: location.lat + deltaLat,\n    z: location.z,\n  };\n};\n\n/**\n * Converts screen coordinates to clip space.\n * @param {number} point - Screen-space coordinate in CSS pixels.\n * @param {number} drawingBufferWidth - WebGL drawing buffer width in device pixels.\n * @param {number} drawingBufferHeight - WebGL drawing buffer height in device pixels.\n * @param {number} pixelRatio - Device pixel ratio used to scale CSS pixels to device pixels.\n * @returns {[number, number]} Clip-space coordinates in the range [-1, 1].\n */\nexport const screenToClip = (\n  point: SpriteScreenPoint,\n  drawingBufferWidth: number,\n  drawingBufferHeight: number,\n  pixelRatio: number\n): [number, number] => {\n  const deviceX = point.x * pixelRatio;\n  const deviceY = point.y * pixelRatio;\n  const clipX = (deviceX / drawingBufferWidth) * 2 - 1;\n  const clipY = 1 - (deviceY / drawingBufferHeight) * 2;\n  return [clipX, clipY];\n};\n\n/**\n * Converts homogeneous clip coordinates back into screen-space pixels.\n * @param {[number, number, number, number]} clipPosition - Homogeneous clip coordinates.\n * @param {number} drawingBufferWidth - WebGL drawing buffer width in device pixels.\n * @param {number} drawingBufferHeight - WebGL drawing buffer height in device pixels.\n * @param {number} pixelRatio - Device pixel ratio relating CSS pixels to device pixels.\n * @returns {SpriteScreenPoint | null} Screen-space coordinates or `null` when invalid.\n */\nexport const clipToScreen = (\n  clipPosition: readonly [number, number, number, number],\n  drawingBufferWidth: number,\n  drawingBufferHeight: number,\n  pixelRatio: number\n): SpriteScreenPoint | null => {\n  const [clipX, clipY, , clipW] = clipPosition;\n  if (!Number.isFinite(clipW) || clipW === 0) {\n    return null;\n  }\n  const invW = 1 / clipW;\n  const ndcX = clipX * invW;\n  const ndcY = clipY * invW;\n  const deviceX = (ndcX + 1) * 0.5 * drawingBufferWidth;\n  const deviceY = (1 - ndcY) * 0.5 * drawingBufferHeight;\n  if (!Number.isFinite(deviceX) || !Number.isFinite(deviceY)) {\n    return null;\n  }\n  if (!Number.isFinite(pixelRatio) || pixelRatio === 0) {\n    return null;\n  }\n  return {\n    x: deviceX / pixelRatio,\n    y: deviceY / pixelRatio,\n  };\n};\n\n/**\n * Calculates the conversion factor between meters and pixels taking perspective into account.\n * @param {number} metersPerPixelAtLatitude - Meters covered by a single pixel at the sprite latitude.\n * @param {number} perspectiveRatio - Additional scale factor introduced by perspective settings.\n * @returns {number} Effective pixels per meter along the camera ray.\n */\nexport const calculateEffectivePixelsPerMeter = (\n  metersPerPixelAtLatitude: number,\n  perspectiveRatio: number\n): number => {\n  // Invalid or non-positive meters-per-pixel would invert scaling, so treat as unusable.\n  if (\n    !Number.isFinite(metersPerPixelAtLatitude) ||\n    metersPerPixelAtLatitude <= 0\n  ) {\n    return 0;\n  }\n  const basePixelsPerMeter = 1 / metersPerPixelAtLatitude;\n  // When perspective is missing or invalid, fall back to 1 to mimic orthographic scaling.\n  const clampedPerspective =\n    Number.isFinite(perspectiveRatio) && perspectiveRatio > 0\n      ? perspectiveRatio\n      : 1;\n  return basePixelsPerMeter * clampedPerspective;\n};\n\n/**\n * Projects a geographic coordinate and elevation into homogeneous clip space.\n * @typedef ProjectToClipSpaceFn\n * @param {number} location - Location in degrees.\n * @returns {[number, number, number, number] | null} Homogeneous clip coordinates or `null` when outside the view.\n */\nexport type ProjectToClipSpaceFn = (\n  location: Readonly<SpriteLocation>\n) => [number, number, number, number] | null;\n\n/**\n * Unprojects a screen-space point back to longitude/latitude.\n * @typedef UnprojectPointFn\n * @param {SpriteScreenPoint} point - Screen-space coordinates in pixels.\n * @returns {SpriteLocation | null} Geographic location or `null` when unprojection fails.\n */\nexport type UnprojectPointFn = (\n  point: Readonly<SpriteScreenPoint>\n) => SpriteLocation | null;\n\n/**\n * Resolves a depth key for billboards by sampling the clip-space Z at the sprite center.\n * @param {SpriteScreenPoint} center - Screen-space center of the billboard in pixels.\n * @param {SpriteLocation} spriteLocation - Geographic location including optional altitude.\n * @param {UnprojectPointFn} unproject - Function for converting screen coordinates to geographic coordinates.\n * @param {ProjectToClipSpaceFn} projectToClipSpace - Function that projects a geographic coordinate to clip space.\n * @returns {number | null} Negative normalized device coordinate Z used for depth sorting, or `null` when unavailable.\n */\nexport const calculateBillboardDepthKey = (\n  center: Readonly<SpriteScreenPoint>,\n  unproject: UnprojectPointFn,\n  projectToClipSpace: ProjectToClipSpaceFn\n): number | null => {\n  const lngLat = unproject(center);\n  // If the point cannot be unprojected (e.g., outside map), skip depth evaluation.\n  if (!lngLat) {\n    return null;\n  }\n  const clipPosition = projectToClipSpace(lngLat);\n  // Projection failures indicate the sprite is outside the camera frustum.\n  if (!clipPosition) {\n    return null;\n  }\n  const [, , clipZ, clipW] = clipPosition;\n  // Avoid dividing by zero when the homogeneous W collapses.\n  const ndcZ = clipW !== 0 ? clipZ / clipW : clipZ;\n  return -ndcZ;\n};\n\n/**\n * Signature for surface depth bias callbacks that tweak clip-space Z/W.\n * @typedef SurfaceDepthBiasFn\n * @param {{ index: number; clipZ: number; clipW: number }} params - Geometry index and unmodified clip coordinates.\n * @returns {{ clipZ: number; clipW: number }} Adjusted clip coordinates used for depth evaluation.\n */\nexport type SurfaceDepthBiasFn = (params: {\n  index: number;\n  clipZ: number;\n  clipW: number;\n}) => { clipZ: number; clipW: number };\n\n/**\n * Computes a depth key for surface quads by projecting each corner and tracking the deepest point.\n * @param {SpriteLocation} baseLngLat - Base longitude/latitude of the quad center.\n * @param {readonly SurfaceCorner[]} displacements - Corner offsets in meters from the center.\n * @param {ProjectToClipSpaceFn} projectToClipSpace - Projection function used to reach clip space.\n * @param {{ readonly indices?: readonly number[]; readonly biasFn?: SurfaceDepthBiasFn }} [options] - Optional overrides.\n * @returns {number | null} Depth key suitable for sorting, or `null` when any corner cannot be projected.\n */\nexport const calculateSurfaceDepthKey = (\n  baseLngLat: Readonly<SpriteLocation>,\n  displacements: readonly SurfaceCorner[],\n  projectToClipSpace: ProjectToClipSpaceFn,\n  options?: {\n    readonly indices?: readonly number[];\n    readonly biasFn?: SurfaceDepthBiasFn;\n  }\n): number | null => {\n  const indices = options?.indices ?? TRIANGLE_INDICES;\n  let maxDepth = Number.NEGATIVE_INFINITY;\n\n  // Iterate over requested indices so callers can restrict evaluation to specific triangles when needed.\n  for (const index of indices) {\n    const displacement = displacements[index];\n    // Skip missing vertices; the caller may have provided partial geometry.\n    if (!displacement) {\n      continue;\n    }\n\n    const displaced = applySurfaceDisplacement(baseLngLat, displacement);\n\n    const clipPosition = projectToClipSpace(displaced);\n    // Any unprojectable corner invalidates the depth key for the entire surface.\n    if (!clipPosition) {\n      return null;\n    }\n\n    let [, , clipZ, clipW] = clipPosition;\n    // Apply optional bias to mitigate z-fighting when stacking surfaces.\n    if (options?.biasFn) {\n      const biased = options.biasFn({ index, clipZ, clipW });\n      clipZ = biased.clipZ;\n      clipW = biased.clipW;\n    }\n    // Protect against divisions by zero when converting to NDC.\n    const ndcZ = clipW !== 0 ? clipZ / clipW : clipZ;\n    const depthCandidate = -ndcZ;\n    // Track the farthest (largest depth) value so sorting can use a single key per surface.\n    if (depthCandidate > maxDepth) {\n      maxDepth = depthCandidate;\n    }\n  }\n\n  return maxDepth;\n};\n\n/**\n * Projects a longitude/latitude pair to screen-space pixels.\n * @typedef ProjectLngLatFn\n * @param {SpriteLocation} lngLat - Geographic coordinate to project.\n * @returns {SpriteScreenPoint | null} Screen coordinates or `null` when projection fails.\n */\nexport type ProjectLngLatFn = (\n  lngLat: Readonly<SpriteLocation>\n) => SpriteScreenPoint | null;\n\n/**\n * Parameters required to resolve a billboard center position.\n * @typedef BillboardCenterParams\n * @property {SpriteScreenPoint} base - Reference screen-space position (usually anchor point).\n * @property {number} [imageWidth] - Source bitmap width in pixels.\n * @property {number} [imageHeight] - Source bitmap height in pixels.\n * @property {number} baseMetersPerPixel - Meters represented by a pixel at the sprite latitude.\n * @property {number} imageScale - User-provided scaling multiplier.\n * @property {number} zoomScaleFactor - Zoom-dependent scale multiplier.\n * @property {number} effectivePixelsPerMeter - Pixels per meter after perspective adjustments.\n * @property {number} spriteMinPixel - Lower clamp for the sprite's largest pixel dimension.\n * @property {number} spriteMaxPixel - Upper clamp for the sprite's largest pixel dimension.\n * @property {number} totalRotateDeg - Aggregate rotation applied to the sprite in degrees.\n * @property {SpriteAnchor} [anchor] - Anchor definition normalized between -1 and 1.\n * @property {SpriteImageOffset} [offset] - Offset definition applied in meters/deg.\n */\nexport interface BillboardCenterParams {\n  base: Readonly<SpriteScreenPoint>;\n  imageWidth?: number;\n  imageHeight?: number;\n  baseMetersPerPixel: number;\n  imageScale: number;\n  zoomScaleFactor: number;\n  effectivePixelsPerMeter: number;\n  spriteMinPixel: number;\n  spriteMaxPixel: number;\n  totalRotateDeg: number;\n  anchor?: Readonly<SpriteAnchor>;\n  offset?: Readonly<SpriteImageOffset>;\n}\n\n/**\n * Resolved properties describing the billboard center and derived dimensions.\n * @typedef BillboardCenterResult\n * @property {SpriteScreenPoint} center - Screen-space coordinate after offset adjustments.\n * @property {number} halfWidth - Half of the clamped pixel width.\n * @property {number} halfHeight - Half of the clamped pixel height.\n * @property {number} pixelWidth - Full pixel width after scaling and clamping.\n * @property {number} pixelHeight - Full pixel height after scaling and clamping.\n * @property {SpritePoint} anchorShift - Pixel delta caused by anchor rotation.\n * @property {SpritePoint} offsetShift - Pixel delta caused by radial offset.\n */\nexport interface BillboardCenterResult {\n  center: SpriteScreenPoint;\n  halfWidth: number;\n  halfHeight: number;\n  pixelWidth: number;\n  pixelHeight: number;\n  anchorShift: SpritePoint;\n  offsetShift: SpritePoint;\n}\n\n/**\n * Calculates the final billboard center position, applying scaling, anchor, and offset adjustments.\n * @param {BillboardCenterParams} params - Inputs describing sprite geometry and scaling context.\n * @returns {BillboardCenterResult} Computed center position and derived metrics for rendering.\n */\nexport const calculateBillboardCenterPosition = (\n  params: BillboardCenterParams\n): BillboardCenterResult => {\n  const {\n    base,\n    imageWidth,\n    imageHeight,\n    baseMetersPerPixel,\n    imageScale,\n    zoomScaleFactor,\n    effectivePixelsPerMeter,\n    spriteMinPixel,\n    spriteMaxPixel,\n    totalRotateDeg,\n    anchor,\n    offset,\n  } = params;\n\n  const pixelDims = calculateBillboardPixelDimensions(\n    imageWidth,\n    imageHeight,\n    baseMetersPerPixel,\n    imageScale,\n    zoomScaleFactor,\n    effectivePixelsPerMeter,\n    spriteMinPixel,\n    spriteMaxPixel\n  );\n  const halfWidth = pixelDims.width / 2;\n  const halfHeight = pixelDims.height / 2;\n\n  const anchorShift = calculateBillboardAnchorShiftPixels(\n    halfWidth,\n    halfHeight,\n    anchor,\n    totalRotateDeg\n  );\n  const offsetShift = calculateBillboardOffsetPixels(\n    offset,\n    imageScale,\n    zoomScaleFactor,\n    effectivePixelsPerMeter,\n    pixelDims.scaleAdjustment\n  );\n\n  // centerX/Y represent the image origin in screen space after anchor handling.\n  // calculateBillboardCornerScreenPositions treats the anchor as its origin,\n  // so this function applies only the offset and leaves anchor adjustments to the caller.\n  const center: SpriteScreenPoint = {\n    x: base.x + offsetShift.x,\n    y: base.y - offsetShift.y,\n  };\n\n  return {\n    center,\n    halfWidth,\n    halfHeight,\n    pixelWidth: pixelDims.width,\n    pixelHeight: pixelDims.height,\n    anchorShift,\n    offsetShift,\n  };\n};\n\n/**\n * Parameters controlling how billboard corners are computed in screen space.\n * @typedef BillboardCornerParams\n * @property {SpriteScreenPoint} center - Screen-space coordinate for the billboard center after offsets.\n * @property {number} halfWidth - Half of the billboard width in pixels.\n * @property {number} halfHeight - Half of the billboard height in pixels.\n * @property {SpriteAnchor} [anchor] - Optional anchor definition normalized between -1 and 1.\n * @property {number} totalRotateDeg - Total rotation applied to the billboard in degrees.\n */\nexport interface BillboardCornerParams {\n  center: Readonly<SpriteScreenPoint>;\n  halfWidth: number;\n  halfHeight: number;\n  anchor?: Readonly<SpriteAnchor>;\n  totalRotateDeg: number;\n}\n\n/**\n * Screen-space coordinates combined with UV data for a quad corner.\n * @typedef QuadCorner\n * @property {number} u - Texture u coordinate.\n * @property {number} v - Texture v coordinate.\n */\nexport interface QuadCorner extends SpriteScreenPoint {\n  readonly u: number;\n  readonly v: number;\n}\n\n/**\n * Corner positions for an unrotated, unit-sized billboard.\n * @constant\n */\nconst BILLBOARD_BASE_CORNERS: ReadonlyArray<readonly [number, number]> = [\n  [-1, 1],\n  [1, 1],\n  [-1, -1],\n  [1, -1],\n] as const;\n\n/**\n * Produces the rotated, anchor-adjusted screen-space positions for each billboard corner.\n * @param {BillboardCornerParams} params - Inputs describing the billboard geometry.\n * @returns {QuadCorner[]} Array containing screen- and texture-space information per corner.\n */\nexport const calculateBillboardCornerScreenPositions = (\n  params: BillboardCornerParams\n): QuadCorner[] => {\n  const { center, halfWidth, halfHeight, anchor, totalRotateDeg } = params;\n\n  // When the sprite has no area, fall back to placing all corners at the center to avoid invalid math.\n  if (halfWidth <= 0 || halfHeight <= 0) {\n    return UV_CORNERS.map(([u, v]) => ({ x: center.x, y: center.y, u, v }));\n  }\n\n  const anchorOffsetX = (anchor?.x ?? 0) * halfWidth;\n  const anchorOffsetY = (anchor?.y ?? 0) * halfHeight;\n  const rad = -totalRotateDeg * DEG2RAD;\n  const cosR = Math.cos(rad);\n  const sinR = Math.sin(rad);\n\n  const corners: QuadCorner[] = [];\n  // Iterate over base corners to rotate and translate each sprite vertex consistently.\n  for (let i = 0; i < BILLBOARD_BASE_CORNERS.length; i++) {\n    const [cornerXNorm, cornerYNorm] = BILLBOARD_BASE_CORNERS[i]!;\n    const [u, v] = UV_CORNERS[i]!;\n    const cornerX = cornerXNorm * halfWidth;\n    const cornerY = cornerYNorm * halfHeight;\n    const shiftedX = cornerX - anchorOffsetX;\n    const shiftedY = cornerY - anchorOffsetY;\n\n    const rotatedX = shiftedX * cosR - shiftedY * sinR;\n    const rotatedY = shiftedX * sinR + shiftedY * cosR;\n\n    corners.push({\n      x: center.x + rotatedX,\n      y: center.y - rotatedY,\n      u,\n      v,\n    });\n  }\n  return corners;\n};\n\nexport interface SurfaceShaderModelParams {\n  baseLngLat: Readonly<SpriteLocation>;\n  worldWidthMeters: number;\n  worldHeightMeters: number;\n  anchor: Readonly<SpriteAnchor>;\n  totalRotateDeg: number;\n  offsetMeters: Readonly<SurfaceCorner>;\n}\n\nexport type SurfaceShaderCornerModel = SurfaceCorner & SpriteLocation;\n\nexport const computeSurfaceCornerShaderModel = (\n  params: SurfaceShaderModelParams\n): SurfaceShaderCornerModel[] => {\n  const {\n    baseLngLat,\n    worldWidthMeters,\n    worldHeightMeters,\n    anchor,\n    totalRotateDeg,\n    offsetMeters,\n  } = params;\n\n  const halfWidth = worldWidthMeters / 2;\n  const halfHeight = worldHeightMeters / 2;\n\n  if (halfWidth <= 0 || halfHeight <= 0) {\n    const cosLat = Math.cos(baseLngLat.lat * DEG2RAD);\n    const cosLatClamped = Math.max(cosLat, MIN_COS_LAT);\n    const deltaLat = (offsetMeters.north / EARTH_RADIUS_METERS) * RAD2DEG;\n    const deltaLng =\n      (offsetMeters.east / (EARTH_RADIUS_METERS * cosLatClamped)) * RAD2DEG;\n    return SURFACE_BASE_CORNERS.map(() => ({\n      east: offsetMeters.east,\n      north: offsetMeters.north,\n      lng: baseLngLat.lng + deltaLng,\n      lat: baseLngLat.lat + deltaLat,\n    }));\n  }\n\n  const anchorEast = (anchor?.x ?? 0) * halfWidth;\n  const anchorNorth = (anchor?.y ?? 0) * halfHeight;\n  const rad = -totalRotateDeg * DEG2RAD;\n  const sinR = Math.sin(rad);\n  const cosR = Math.cos(rad);\n  const cosLat = Math.cos(baseLngLat.lat * DEG2RAD);\n  const cosLatClamped = Math.max(cosLat, MIN_COS_LAT);\n\n  return SURFACE_BASE_CORNERS.map(([eastNorm, northNorm]) => {\n    const cornerEast = eastNorm * halfWidth;\n    const cornerNorth = northNorm * halfHeight;\n\n    const localEast = cornerEast - anchorEast;\n    const localNorth = cornerNorth - anchorNorth;\n\n    const rotatedEast = localEast * cosR - localNorth * sinR;\n    const rotatedNorth = localEast * sinR + localNorth * cosR;\n\n    const east = rotatedEast + offsetMeters.east;\n    const north = rotatedNorth + offsetMeters.north;\n\n    const deltaLat = (north / EARTH_RADIUS_METERS) * RAD2DEG;\n    const deltaLng = (east / (EARTH_RADIUS_METERS * cosLatClamped)) * RAD2DEG;\n\n    return {\n      east,\n      north,\n      lng: baseLngLat.lng + deltaLng,\n      lat: baseLngLat.lat + deltaLat,\n    };\n  });\n};\n\n/**\n * Parameters for projecting a surface sprite's center into screen space.\n * @typedef SurfaceCenterParams\n * @property {SpriteLocation} baseLngLat - Base geographic location of the sprite.\n * @property {number} [imageWidth] - Source bitmap width in pixels.\n * @property {number} [imageHeight] - Source bitmap height in pixels.\n * @property {number} baseMetersPerPixel - Base meters per pixel at the sprite latitude.\n * @property {number} imageScale - User-provided scaling multiplier.\n * @property {number} zoomScaleFactor - Zoom-dependent scale multiplier.\n * @property {number} totalRotateDeg - Rotation applied to the sprite in degrees.\n * @property {SpriteAnchor} [anchor] - Anchor definition normalized between -1 and 1.\n * @property {SpriteImageOffset} [offset] - Offset definition applied in meters/deg.\n * @property {number} [effectivePixelsPerMeter] - Conversion rate from meters to on-screen pixels.\n * @property {number} [spriteMinPixel] - Lower clamp for the sprite's largest pixel dimension.\n * @property {number} [spriteMaxPixel] - Upper clamp for the sprite's largest pixel dimension.\n * @property {ProjectLngLatFn} [project] - Projection function mapping longitude/latitude to screen space.\n * @property {ProjectToClipSpaceFn} [projectToClipSpace] - Projection into clip space when available.\n * @property {number} [drawingBufferWidth] - WebGL drawing buffer width in device pixels.\n * @property {number} [drawingBufferHeight] - WebGL drawing buffer height in device pixels.\n * @property {number} [pixelRatio] - Device pixel ratio relating CSS pixels to device pixels.\n * @property {boolean} [resolveAnchorless] - When true, also computes the anchorless center.\n */\nexport interface SurfaceCenterParams {\n  baseLngLat: Readonly<SpriteLocation>;\n  imageWidth?: number;\n  imageHeight?: number;\n  baseMetersPerPixel: number;\n  imageScale: number;\n  zoomScaleFactor: number;\n  totalRotateDeg: number;\n  anchor?: Readonly<SpriteAnchor>;\n  offset?: Readonly<SpriteImageOffset>;\n  effectivePixelsPerMeter?: number;\n  spriteMinPixel?: number;\n  spriteMaxPixel?: number;\n  project?: ProjectLngLatFn;\n  projectToClipSpace?: ProjectToClipSpaceFn;\n  drawingBufferWidth?: number;\n  drawingBufferHeight?: number;\n  pixelRatio?: number;\n  resolveAnchorless?: boolean;\n}\n\n/**\n * Output describing the resolved surface center and displacement details.\n * @typedef SurfaceCenterResult\n * @property {SpriteScreenPoint | null} center - Projected screen coordinates or `null` when projection fails.\n * @property {{ width: number; height: number; scaleAdjustment: number }} worldDimensions - Sprite dimensions in world meters.\n * @property {SurfaceCorner} totalDisplacement - Combined anchor and offset displacement in meters.\n * @property {SpriteLocation} displacedLngLat - Geographic coordinates after applying displacement.\n * @property {SpriteScreenPoint | null | undefined} [anchorlessCenter] - Anchorless screen coordinates when requested.\n * @property {SurfaceCorner | undefined} [anchorlessDisplacement] - Offset-only displacement when requested.\n * @property {SpriteLocation | undefined} [anchorlessLngLat] - Anchorless geographic coordinate when requested.\n */\nexport interface SurfaceCenterResult {\n  center: Readonly<SpriteScreenPoint> | null;\n  worldDimensions: Readonly<{\n    width: number;\n    height: number;\n    scaleAdjustment: number;\n  }>;\n  totalDisplacement: Readonly<SurfaceCorner>;\n  displacedLngLat: Readonly<SpriteLocation>;\n  anchorlessCenter?: Readonly<SpriteScreenPoint> | null;\n  anchorlessDisplacement?: Readonly<SurfaceCorner>;\n  anchorlessLngLat?: Readonly<SpriteLocation>;\n}\n\n/**\n * Calculates the projected center of a surface sprite and derives related world-space displacements.\n * @param {SurfaceCenterParams} params - Inputs describing the sprite geometry and projection context.\n * @returns {SurfaceCenterResult} Result containing projection output and displacement metadata.\n */\nexport const calculateSurfaceCenterPosition = (\n  params: SurfaceCenterParams\n): SurfaceCenterResult => {\n  const {\n    baseLngLat,\n    imageWidth,\n    imageHeight,\n    baseMetersPerPixel,\n    imageScale,\n    zoomScaleFactor,\n    totalRotateDeg,\n    anchor,\n    offset,\n    effectivePixelsPerMeter = 0,\n    spriteMinPixel = 0,\n    spriteMaxPixel = 0,\n    project,\n    projectToClipSpace,\n    drawingBufferWidth,\n    drawingBufferHeight,\n    pixelRatio,\n    resolveAnchorless = false,\n  } = params;\n\n  const hasClipProjection =\n    typeof drawingBufferWidth === 'number' &&\n    drawingBufferWidth > 0 &&\n    typeof drawingBufferHeight === 'number' &&\n    drawingBufferHeight > 0 &&\n    typeof pixelRatio === 'number' &&\n    Number.isFinite(pixelRatio) &&\n    pixelRatio !== 0 &&\n    typeof projectToClipSpace === 'function';\n\n  const projectPoint = (\n    lngLat: Readonly<SpriteLocation>\n  ): SpriteScreenPoint | null => {\n    if (hasClipProjection && projectToClipSpace) {\n      const clip = projectToClipSpace(lngLat);\n      if (clip) {\n        const screen = clipToScreen(\n          clip,\n          drawingBufferWidth!,\n          drawingBufferHeight!,\n          pixelRatio!\n        );\n        if (screen) {\n          return screen;\n        }\n      }\n    }\n    return project ? project(lngLat) : null;\n  };\n\n  const worldDims = calculateSurfaceWorldDimensions(\n    imageWidth,\n    imageHeight,\n    baseMetersPerPixel,\n    imageScale,\n    zoomScaleFactor,\n    {\n      effectivePixelsPerMeter,\n      spriteMinPixel,\n      spriteMaxPixel,\n    }\n  );\n  const halfWidthMeters = worldDims.width / 2;\n  const halfHeightMeters = worldDims.height / 2;\n\n  const anchorShiftMeters = calculateSurfaceAnchorShiftMeters(\n    halfWidthMeters,\n    halfHeightMeters,\n    anchor,\n    totalRotateDeg\n  );\n  const offsetMeters = calculateSurfaceOffsetMeters(\n    offset,\n    imageScale,\n    zoomScaleFactor,\n    worldDims.scaleAdjustment\n  );\n\n  const totalDisplacement: SurfaceCorner = {\n    east: anchorShiftMeters.east + offsetMeters.east,\n    north: anchorShiftMeters.north + offsetMeters.north,\n  };\n\n  const displaced = applySurfaceDisplacement(baseLngLat, totalDisplacement);\n\n  const center = projectPoint(displaced);\n\n  let anchorlessCenter: Readonly<SpriteScreenPoint> | null | undefined;\n  let anchorlessDisplacement: Readonly<SurfaceCorner> | undefined;\n  let anchorlessLngLat: Readonly<SpriteLocation> | undefined;\n\n  if (resolveAnchorless) {\n    anchorlessDisplacement = offsetMeters;\n    anchorlessLngLat = applySurfaceDisplacement(\n      baseLngLat,\n      anchorlessDisplacement\n    );\n    anchorlessCenter = projectPoint(anchorlessLngLat) ?? null;\n  }\n\n  return {\n    center,\n    worldDimensions: worldDims,\n    totalDisplacement,\n    displacedLngLat: displaced,\n    anchorlessCenter,\n    anchorlessDisplacement,\n    anchorlessLngLat,\n  };\n};\n\n/**\n * Parameters describing how to compute each surface corner displacement.\n * @typedef SurfaceCornerParams\n * @property {number} worldWidthMeters - Width of the sprite footprint in meters.\n * @property {number} worldHeightMeters - Height of the sprite footprint in meters.\n * @property {SpriteAnchor} anchor - Anchor definition normalized between -1 and 1.\n * @property {number} totalRotateDeg - Rotation applied to the surface in degrees.\n * @property {SurfaceCorner} offsetMeters - Additional displacement applied uniformly to all corners.\n */\nexport interface SurfaceCornerParams {\n  worldWidthMeters: number;\n  worldHeightMeters: number;\n  anchor: Readonly<SpriteAnchor>;\n  totalRotateDeg: number;\n  offsetMeters: Readonly<SurfaceCorner>;\n}\n\n/**\n * East/north displacement for an individual surface corner.\n * @typedef SurfaceCorner\n * @property {number} east - Eastward offset in meters relative to the base center.\n * @property {number} north - Northward offset in meters relative to the base center.\n */\nexport interface SurfaceCorner {\n  readonly east: number;\n  readonly north: number;\n}\n\n/**\n * Corner list for a unit, axis-aligned surface quad before rotation and scaling.\n */\nconst SURFACE_BASE_CORNERS: ReadonlyArray<readonly [number, number]> = [\n  [-1, 1],\n  [1, 1],\n  [-1, -1],\n  [1, -1],\n] as const;\n\n/**\n * Number of surface corners returns from `calculateSurfaceCornerDisplacements`.\n */\nexport const SURFACE_CORNER_DISPLACEMENT_COUNT = SURFACE_BASE_CORNERS.length;\n\n/**\n * Converts normalized surface corners into world-space displacements honoring anchor, rotation, and offsets.\n * @param {SurfaceCornerParams} params - Inputs describing quad geometry and positioning.\n * @returns {SurfaceCorner[]} Array of corner displacements in meters relative to the base center.\n */\nexport const calculateSurfaceCornerDisplacements = (\n  params: SurfaceCornerParams\n): SurfaceCorner[] => {\n  const {\n    worldWidthMeters,\n    worldHeightMeters,\n    anchor,\n    totalRotateDeg,\n    offsetMeters,\n  } = params;\n\n  // Degenerate quads fallback to offset-only displacements so rendering can continue safely.\n  if (worldWidthMeters <= 0 || worldHeightMeters <= 0) {\n    return SURFACE_BASE_CORNERS.map(() => offsetMeters);\n  }\n\n  const halfWidth = worldWidthMeters / 2;\n  const halfHeight = worldHeightMeters / 2;\n  const anchorEast = (anchor?.x ?? 0) * halfWidth;\n  const anchorNorth = (anchor?.y ?? 0) * halfHeight;\n  const rad = -totalRotateDeg * DEG2RAD;\n  const cosR = Math.cos(rad);\n  const sinR = Math.sin(rad);\n\n  const corners: Readonly<SurfaceCorner>[] = [];\n  // Iterate over normalized unit corners to rotate and translate them into world space.\n  for (const [eastNorm, northNorm] of SURFACE_BASE_CORNERS) {\n    const cornerEast = eastNorm * halfWidth;\n    const cornerNorth = northNorm * halfHeight;\n\n    const localEast = cornerEast - anchorEast;\n    const localNorth = cornerNorth - anchorNorth;\n\n    const rotatedEast = localEast * cosR - localNorth * sinR;\n    const rotatedNorth = localEast * sinR + localNorth * cosR;\n\n    corners.push({\n      east: rotatedEast + offsetMeters.east,\n      north: rotatedNorth + offsetMeters.north,\n    });\n  }\n\n  return corners;\n};\n\n/**\n * Ensures the sprite's cached Mercator coordinate matches its current location.\n * Recomputes the coordinate lazily when longitude/latitude/altitude change.\n * @param {ProjectionHost} projectionHost - Projection host.\n * @param {InternalSpriteCurrentState<T>} sprite - Target sprite.\n * @returns {SpriteMercatorCoordinate} Cached Mercator coordinate representing the current location.\n */\nexport const resolveSpriteMercator = <T>(\n  projectionHost: ProjectionHost,\n  sprite: InternalSpriteCurrentState<T>\n): SpriteMercatorCoordinate => {\n  const location = sprite.currentLocation;\n  if (\n    sprite.cachedMercator &&\n    sprite.cachedMercatorLng === location.lng &&\n    sprite.cachedMercatorLat === location.lat &&\n    sprite.cachedMercatorZ === location.z\n  ) {\n    return sprite.cachedMercator;\n  }\n  const mercator = projectionHost.fromLngLat(location);\n  sprite.cachedMercator = mercator;\n  sprite.cachedMercatorLng = location.lng;\n  sprite.cachedMercatorLat = location.lat;\n  sprite.cachedMercatorZ = location.z;\n  return mercator;\n};\n","// maplibre-gl-layers - MapLibre's layer extension library enabling\n// the display, movement, and modification of large numbers of dynamic sprite images\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT\n// https://github.com/kekyo/maplibre-gl-layers\n\nimport type {\n  EasingFunction,\n  SpriteInterpolationMode,\n  SpriteInterpolationOptions,\n  SpriteLocation,\n} from './types';\nimport type { SpriteInterpolationState } from './internalTypes';\n\nimport { resolveEasing } from './easing';\nimport {\n  cloneSpriteLocation,\n  lerpSpriteLocation,\n  spriteLocationsEqual,\n} from './math';\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Computes a feed-forward target by extrapolating the delta between the two most recent locations.\n * When the previous location is missing the function falls back to cloning the current command,\n * ensuring the caller never receives an undefined reference.\n *\n * @param previous - The last command location that precedes `next`, or undefined when unavailable.\n * @param next - The upcoming command location to extrapolate from.\n * @returns A new sprite location positioned ahead of `next` using doubled deltas.\n */\nconst computeFeedforwardTarget = (\n  previous: SpriteLocation | undefined,\n  next: SpriteLocation\n): SpriteLocation => {\n  // If there is no previous command, trust the next command verbatim to avoid speculative extrapolation.\n  if (!previous) {\n    return cloneSpriteLocation(next);\n  }\n  const prevZ = previous.z ?? 0;\n  const nextZ = next.z ?? 0;\n  const hasZ = previous.z !== undefined || next.z !== undefined;\n\n  const target: SpriteLocation = {\n    lng: next.lng + (next.lng - previous.lng),\n    lat: next.lat + (next.lat - previous.lat),\n    // Only extrapolate altitude when either point includes z; otherwise we maintain the 2D assumption.\n    z: hasZ ? nextZ + (nextZ - prevZ) : undefined,\n  };\n  return target;\n};\n\n/**\n * Normalized representation of interpolation options with defaults applied.\n *\n * @property durationMs - Clamped non-negative duration in milliseconds.\n * @property mode - Strategy that guides how the destination is computed.\n * @property easing - Optional easing function carried through for later resolution.\n */\ninterface NormalizedInterpolationOptions {\n  durationMs: number;\n  mode: SpriteInterpolationMode;\n  easing?: EasingFunction;\n}\n\n/**\n * Normalizes raw interpolation options by clamping duration and applying defaults.\n *\n * @param options - Caller-provided interpolation options.\n * @returns Options safe for downstream consumption.\n */\nconst normalizeOptions = (\n  options: SpriteInterpolationOptions\n): NormalizedInterpolationOptions => {\n  return {\n    durationMs: Math.max(0, options.durationMs),\n    mode: options.mode ?? 'feedback',\n    easing: options.easing,\n  };\n};\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Parameters required to create a fresh interpolation state for the next animation segment.\n *\n * @property currentLocation - Sprite location currently rendered on screen.\n * @property lastCommandLocation - Previously commanded target, used for feedforward extrapolation.\n * @property nextCommandLocation - Upcoming commanded target that the sprite should reach.\n * @property options - Raw interpolation options supplied by the caller.\n */\nexport interface CreateInterpolationStateParams {\n  currentLocation: SpriteLocation;\n  lastCommandLocation?: SpriteLocation;\n  nextCommandLocation: SpriteLocation;\n  options: SpriteInterpolationOptions;\n}\n\n/**\n * Result of preparing interpolation state, including a flag denoting whether any lerp is needed.\n *\n * @property state - Prepared interpolation state ready for evaluation.\n * @property requiresInterpolation - Indicates whether lerping is needed or an immediate snap is sufficient.\n */\nexport interface CreateInterpolationStateResult {\n  readonly state: SpriteInterpolationState;\n  readonly requiresInterpolation: boolean;\n}\n\n/**\n * Creates interpolation state for the next sprite movement and signals if interpolation is necessary.\n *\n * @param params - The context needed to build interpolation state, including locations and configuration.\n * @returns The prepared state alongside a boolean indicating whether animation should run.\n */\nexport const createInterpolationState = (\n  params: CreateInterpolationStateParams\n): CreateInterpolationStateResult => {\n  const { currentLocation, lastCommandLocation, nextCommandLocation } = params;\n  const options = normalizeOptions(params.options);\n  const from = cloneSpriteLocation(currentLocation);\n  const easing = resolveEasing(options.easing);\n\n  let to: SpriteLocation;\n  // When feedforward is requested we extrapolate beyond the next command to smooth remote updates.\n  if (options.mode === 'feedforward') {\n    to = computeFeedforwardTarget(lastCommandLocation, nextCommandLocation);\n  } else {\n    // Otherwise we perform feedback interpolation by targeting the commanded location exactly.\n    to = cloneSpriteLocation(nextCommandLocation);\n  }\n\n  const requiresInterpolation =\n    options.durationMs > 0 && !spriteLocationsEqual(from, to);\n\n  const state: SpriteInterpolationState = {\n    mode: options.mode,\n    durationMs: options.durationMs,\n    easing,\n    startTimestamp: -1,\n    from,\n    to,\n  };\n\n  return { state, requiresInterpolation };\n};\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Parameters required to evaluate an interpolation tick at a given moment.\n *\n * @property state - Active interpolation state previously created.\n * @property timestamp - Epoch millisecond at which interpolation should be evaluated.\n */\nexport interface EvaluateInterpolationParams {\n  state: SpriteInterpolationState;\n  timestamp: number;\n}\n\n/**\n * Result of evaluating interpolation progress at a specific timestamp.\n *\n * @property location - Interpolated sprite location corresponding to the evaluated time.\n * @property completed - Indicates whether the interpolation has reached or exceeded its duration.\n * @property effectiveStartTimestamp - Timestamp detected or assigned as the interpolation starting point.\n */\nexport interface EvaluateInterpolationResult {\n  readonly location: SpriteLocation;\n  readonly completed: boolean;\n  readonly effectiveStartTimestamp: number;\n}\n\n/**\n * Evaluates an interpolation state at a specific point in time and returns the intermediate location.\n *\n * @param params - The interpolation state and the reference timestamp for evaluation.\n * @returns The lerped location, whether the interpolation has finished, and the effective start time.\n */\nexport const evaluateInterpolation = (\n  params: EvaluateInterpolationParams\n): EvaluateInterpolationResult => {\n  const { state } = params;\n  const easingFn = state.easing;\n  // Use the provided timestamp when valid; otherwise fall back to real time to keep animation advancing.\n  const timestamp = Number.isFinite(params.timestamp)\n    ? params.timestamp\n    : Date.now();\n\n  const duration = Math.max(0, state.durationMs);\n  // Reuse an existing start timestamp when set; if unset we kick off the interpolation at the current tick.\n  const effectiveStart =\n    state.startTimestamp >= 0 ? state.startTimestamp : timestamp;\n\n  // Zero-duration animations snap to the target immediately, avoiding unnecessary easing work.\n  if (duration === 0) {\n    return {\n      location: cloneSpriteLocation(state.to),\n      completed: true,\n      effectiveStartTimestamp: effectiveStart,\n    };\n  }\n\n  const elapsed = timestamp - effectiveStart;\n  // Guard against non-positive durations to prevent division by zero, treating them as instantly complete.\n  const rawProgress = duration <= 0 ? 1 : elapsed / duration;\n  const eased = easingFn(rawProgress);\n  const location = lerpSpriteLocation(state.from, state.to, eased);\n  const completed = rawProgress >= 1;\n\n  return {\n    location,\n    completed,\n    effectiveStartTimestamp: effectiveStart,\n  };\n};\n","// maplibre-gl-layers - MapLibre's layer extension library enabling\n// the display, movement, and modification of large numbers of dynamic sprite images\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT\n// https://github.com/kekyo/maplibre-gl-layers\n\nimport type { EasingFunction, SpriteInterpolationOptions } from './types';\nimport { resolveEasing } from './easing';\nimport type { DegreeInterpolationState } from './internalTypes';\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Small tolerance used to decide when numeric differences are effectively zero.\n * Prevents oscillation caused by floating-point noise during interpolation.\n * @constant\n */\nconst NUMERIC_EPSILON = 1e-6;\n\n/**\n * Normalizes animation duration values so downstream calculations avoid negative or invalid numbers.\n * @param {number} durationMs - Duration in milliseconds supplied by the caller.\n * @returns {number} Non-negative, finite duration safe for interpolation math.\n */\nconst normalizeDuration = (durationMs: number): number =>\n  Number.isFinite(durationMs) && durationMs > 0 ? durationMs : 0;\n\n/**\n * Normalizes angular deltas to the range [-180, 180] to enforce the shortest rotation path.\n * @param {number} delta - Difference between target and current angles in degrees.\n * @returns {number} Shortest equivalent delta within [-180, 180].\n */\nconst normalizeDelta = (delta: number): number => {\n  if (!Number.isFinite(delta)) {\n    return 0;\n  }\n  let adjusted = delta % 360;\n  // If the delta exceeds 180 degrees, rotate backwards instead to minimise travel.\n  if (adjusted > 180) {\n    adjusted -= 360;\n    // When delta drops below or equal to -180, rotate forwards by adding a full turn.\n  } else if (adjusted <= -180) {\n    adjusted += 360;\n  }\n  return adjusted;\n};\n\n/**\n * Resolves interpolation options by applying defaults to duration and easing configuration.\n * @param {SpriteInterpolationOptions} options - Caller-supplied interpolation configuration.\n * @returns {{ durationMs: number; easing: EasingFunction }} Sanitized options ready for state creation.\n */\nconst normalizeOptions = (\n  options: SpriteInterpolationOptions\n): {\n  durationMs: number;\n  easing: EasingFunction;\n  mode: 'feedback' | 'feedforward';\n} => {\n  return {\n    durationMs: normalizeDuration(options.durationMs),\n    easing: resolveEasing(options.easing),\n    mode: options.mode ?? 'feedback',\n  };\n};\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Parameters required to construct a {@link DegreeInterpolationState}.\n * @property {number} currentValue - Current numeric value rendered on screen.\n * @property {number} targetValue - Desired value after interpolation completes.\n * @property {number | undefined} previousCommandValue - Prior commanded value used for feed-forward prediction.\n * @property {SpriteInterpolationOptions} options - Timing and easing configuration.\n */\nexport interface CreateDegreeInterpolationStateParams {\n  currentValue: number;\n  targetValue: number;\n  previousCommandValue?: number;\n  options: SpriteInterpolationOptions;\n}\n\n/**\n * Result returned by {@link createDegreeInterpolationState} containing state and a flag for activation.\n * @property {DegreeInterpolationState} state - Resolved state object.\n * @property {boolean} requiresInterpolation - Indicates whether the caller should animate or snap.\n */\nexport interface CreateDegreeInterpolationStateResult {\n  readonly state: DegreeInterpolationState;\n  readonly requiresInterpolation: boolean;\n}\n\n/**\n * Creates interpolation state describing how to move from the current value to the target value.\n * @param {CreateDegreeInterpolationStateParams} params - Inputs describing the current, target, and options.\n * @returns {CreateDegreeInterpolationStateResult} State data plus a flag indicating if animation is needed.\n */\nexport const createDegreeInterpolationState = (\n  params: CreateDegreeInterpolationStateParams\n): CreateDegreeInterpolationStateResult => {\n  const { currentValue, targetValue } = params;\n  const options = normalizeOptions(params.options);\n\n  let effectiveTarget = targetValue;\n  const previousCommand = params.previousCommandValue;\n  if (\n    options.mode === 'feedforward' &&\n    previousCommand !== undefined &&\n    Number.isFinite(previousCommand)\n  ) {\n    const commandDelta = normalizeDelta(targetValue - previousCommand);\n    effectiveTarget = targetValue + commandDelta;\n  }\n\n  const delta = normalizeDelta(effectiveTarget - currentValue);\n  const pathTarget = currentValue + delta;\n\n  // Duration must be positive and delta must exceed epsilon before we animate.\n  const requiresInterpolation =\n    options.durationMs > 0 && Math.abs(delta) > NUMERIC_EPSILON;\n\n  const state: DegreeInterpolationState = {\n    durationMs: options.durationMs,\n    easing: options.easing,\n    from: currentValue,\n    to: pathTarget,\n    finalValue: effectiveTarget,\n    startTimestamp: -1,\n  };\n\n  return {\n    state,\n    requiresInterpolation,\n  };\n};\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Parameters describing interpolation evaluation state.\n * @property {DegreeInterpolationState} state - State generated via {@link createDegreeInterpolationState}.\n * @property {number} timestamp - Timestamp in milliseconds used to sample the interpolation curve.\n */\nexport interface EvaluateDegreeInterpolationParams {\n  state: DegreeInterpolationState;\n  timestamp: number;\n}\n\n/**\n * Result of evaluating a numeric interpolation at a specific timestamp.\n * @property {number} value - Current interpolated value (or final value after completion).\n * @property {boolean} completed - Indicates whether interpolation reached the end.\n * @property {number} effectiveStartTimestamp - Start timestamp applied during evaluation.\n */\nexport interface EvaluateDegreeInterpolationResult {\n  readonly value: number;\n  readonly completed: boolean;\n  readonly effectiveStartTimestamp: number;\n}\n\n/**\n * Clamps a numeric value to the inclusive range [0, 1], handling infinities gracefully.\n * @param {number} value - Raw easing output to normalize.\n * @returns {number} Value clamped between 0 and 1.\n */\nconst clamp01 = (value: number): number => {\n  // Non-finite easing outputs should be treated as completion to avoid the animation stalling.\n  if (!Number.isFinite(value)) {\n    return 1;\n  }\n  // Values below zero round up to zero so callers do not rewind past the start.\n  if (value <= 0) {\n    return 0;\n  }\n  // Values above one indicate completion and should saturate at one.\n  if (value >= 1) {\n    return 1;\n  }\n  return value;\n};\n\n/**\n * Evaluates a numeric interpolation against the provided timestamp.\n * @param {EvaluateDegreeInterpolationParams} params - Inputs containing interpolation state and sample timestamp.\n * @returns {EvaluateDegreeInterpolationResult} Current value, completion flag, and effective start time.\n */\nexport const evaluateDegreeInterpolation = (\n  params: EvaluateDegreeInterpolationParams\n): EvaluateDegreeInterpolationResult => {\n  const { state } = params;\n  const timestamp = Number.isFinite(params.timestamp)\n    ? params.timestamp\n    : Date.now();\n\n  const duration = Math.max(0, state.durationMs);\n  const effectiveStart =\n    state.startTimestamp >= 0 ? state.startTimestamp : timestamp;\n\n  // When duration collapses or no meaningful delta exists, snap to the final value immediately.\n  if (duration === 0 || Math.abs(state.to - state.from) <= NUMERIC_EPSILON) {\n    return {\n      value: state.finalValue,\n      completed: true,\n      effectiveStartTimestamp: effectiveStart,\n    };\n  }\n\n  const elapsed = timestamp - effectiveStart;\n  const rawProgress = duration <= 0 ? 1 : elapsed / duration;\n  const eased = clamp01(state.easing(rawProgress));\n  const interpolated = state.from + (state.to - state.from) * eased;\n  // rawProgress >= 1 indicates we've reached or passed the end of the animation window.\n  const completed = rawProgress >= 1;\n\n  return {\n    value: completed ? state.finalValue : interpolated,\n    completed,\n    effectiveStartTimestamp: effectiveStart,\n  };\n};\n","// maplibre-gl-layers - MapLibre's layer extension library enabling\n// the display, movement, and modification of large numbers of dynamic sprite images\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT\n// https://github.com/kekyo/maplibre-gl-layers\n\nimport type { SpriteInterpolationOptions } from './types';\nimport type { DegreeInterpolationState } from './internalTypes';\nimport { createDegreeInterpolationState } from './degreeInterpolation';\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Normalizes an absolute angle in degrees to the range [0, 360).\n * @param {number} angle - Angle provided by the caller which may fall outside a single revolution.\n * @returns {number} Angle wrapped to [0, 360) with negative zero converted to zero.\n */\nexport const normalizeAngleDeg = (angle: number): number => {\n  if (!Number.isFinite(angle)) {\n    return 0;\n  }\n  const wrapped = angle % 360;\n  const normalized = wrapped < 0 ? wrapped + 360 : wrapped;\n  return Object.is(normalized, -0) ? 0 : normalized;\n};\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Parameters describing the rotation update request.\n * @property {number} currentAngleDeg - Current angle already applied to the sprite in degrees.\n * @property {number} targetAngleDeg - Desired angle in degrees that should be reached.\n * @property {number | undefined} previousCommandAngleDeg - Previous commanded angle for feed-forward prediction.\n * @property {SpriteInterpolationOptions | null} [options] - Optional interpolation configuration.\n */\nexport interface ResolveRotationTargetParams {\n  currentAngleDeg: number;\n  targetAngleDeg: number;\n  previousCommandAngleDeg?: number;\n  options?: SpriteInterpolationOptions | null;\n}\n\n/**\n * Result produced by {@link resolveRotationTarget} when determining the next rotation step.\n * @property {number} nextAngleDeg - Angle that should be applied immediately.\n * @property {DegreeInterpolationState | null} interpolationState - Optional state for animating toward the target.\n */\nexport interface ResolveRotationTargetResult {\n  readonly nextAngleDeg: number;\n  readonly interpolationState: DegreeInterpolationState | null;\n}\n\n/**\n * Determines whether a rotation change requires interpolation and, if so, produces the state to drive it.\n * @param {ResolveRotationTargetParams} params - Inputs including current angle, target angle, and options.\n * @returns {ResolveRotationTargetResult} Immediate angle plus optional interpolation state.\n */\nexport const resolveRotationTarget = (\n  params: ResolveRotationTargetParams\n): ResolveRotationTargetResult => {\n  const options = params.options;\n  const targetAngle = normalizeAngleDeg(params.targetAngleDeg);\n  const currentAngle = normalizeAngleDeg(params.currentAngleDeg);\n  const previousCommandAngleDeg =\n    params.previousCommandAngleDeg !== undefined\n      ? normalizeAngleDeg(params.previousCommandAngleDeg)\n      : undefined;\n\n  // Without options or with a zero/negative duration we snap to the target directly.\n  if (!options || options.durationMs <= 0) {\n    return {\n      nextAngleDeg: targetAngle,\n      interpolationState: null,\n    };\n  }\n\n  const { state, requiresInterpolation } = createDegreeInterpolationState({\n    currentValue: currentAngle,\n    targetValue: targetAngle,\n    previousCommandValue: previousCommandAngleDeg,\n    options,\n  });\n\n  // No interpolation required when delta is negligible or clamped duration aborted the animation.\n  if (!requiresInterpolation) {\n    return {\n      nextAngleDeg: targetAngle,\n      interpolationState: null,\n    };\n  }\n\n  return {\n    nextAngleDeg: currentAngle,\n    interpolationState: state,\n  };\n};\n","// maplibre-gl-layers - MapLibre's layer extension library enabling\n// the display, movement, and modification of large numbers of dynamic sprite images\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT\n// https://github.com/kekyo/maplibre-gl-layers\n\nimport type { EasingFunction, SpriteInterpolationOptions } from './types';\nimport { resolveEasing } from './easing';\nimport type { DistanceInterpolationState } from './internalTypes';\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\nconst DISTANCE_EPSILON = 1e-6;\n\nconst normalizeDuration = (durationMs: number): number =>\n  Number.isFinite(durationMs) && durationMs > 0 ? durationMs : 0;\n\nconst normalizeOptions = (\n  options: SpriteInterpolationOptions\n): {\n  durationMs: number;\n  easing: EasingFunction;\n  mode: 'feedback' | 'feedforward';\n} => ({\n  durationMs: normalizeDuration(options.durationMs),\n  easing: resolveEasing(options.easing),\n  mode: options.mode ?? 'feedback',\n});\n\nexport interface CreateDistanceInterpolationStateParams {\n  currentValue: number;\n  targetValue: number;\n  previousCommandValue?: number;\n  options: SpriteInterpolationOptions;\n}\n\nexport interface CreateDistanceInterpolationStateResult {\n  readonly state: DistanceInterpolationState;\n  readonly requiresInterpolation: boolean;\n}\n\nexport const createDistanceInterpolationState = (\n  params: CreateDistanceInterpolationStateParams\n): CreateDistanceInterpolationStateResult => {\n  const { currentValue, targetValue } = params;\n  const options = normalizeOptions(params.options);\n\n  let effectiveTarget = targetValue;\n  const previousCommand = params.previousCommandValue;\n  if (\n    options.mode === 'feedforward' &&\n    previousCommand !== undefined &&\n    Number.isFinite(previousCommand)\n  ) {\n    const commandDelta = targetValue - previousCommand;\n    effectiveTarget = targetValue + commandDelta;\n  }\n\n  const delta = effectiveTarget - currentValue;\n\n  const requiresInterpolation =\n    options.durationMs > 0 && Math.abs(delta) > DISTANCE_EPSILON;\n\n  const state: DistanceInterpolationState = {\n    durationMs: options.durationMs,\n    easing: options.easing,\n    from: currentValue,\n    to: currentValue + delta,\n    finalValue: effectiveTarget,\n    startTimestamp: -1,\n  };\n\n  return {\n    state,\n    requiresInterpolation,\n  };\n};\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\nexport interface EvaluateDistanceInterpolationParams {\n  state: DistanceInterpolationState;\n  timestamp: number;\n}\n\nexport interface EvaluateDistanceInterpolationResult {\n  readonly value: number;\n  readonly completed: boolean;\n  readonly effectiveStartTimestamp: number;\n}\n\nconst clamp01 = (value: number): number => {\n  if (!Number.isFinite(value)) {\n    return 1;\n  }\n  if (value <= 0) {\n    return 0;\n  }\n  if (value >= 1) {\n    return 1;\n  }\n  return value;\n};\n\nexport const evaluateDistanceInterpolation = (\n  params: EvaluateDistanceInterpolationParams\n): EvaluateDistanceInterpolationResult => {\n  const { state } = params;\n  const timestamp = Number.isFinite(params.timestamp)\n    ? params.timestamp\n    : Date.now();\n\n  const duration = Math.max(0, state.durationMs);\n  const effectiveStart =\n    state.startTimestamp >= 0 ? state.startTimestamp : timestamp;\n\n  if (duration === 0 || Math.abs(state.to - state.from) <= DISTANCE_EPSILON) {\n    return {\n      value: state.finalValue,\n      completed: true,\n      effectiveStartTimestamp: effectiveStart,\n    };\n  }\n\n  const elapsed = timestamp - effectiveStart;\n  const rawProgress = duration <= 0 ? 1 : elapsed / duration;\n  const eased = clamp01(state.easing(rawProgress));\n  const interpolated = state.from + (state.to - state.from) * eased;\n  const completed = rawProgress >= 1;\n\n  return {\n    value: completed ? state.finalValue : interpolated,\n    completed,\n    effectiveStartTimestamp: effectiveStart,\n  };\n};\n","// maplibre-gl-layers - MapLibre's layer extension library enabling\n// the display, movement, and modification of large numbers of dynamic sprite images\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT\n// https://github.com/kekyo/maplibre-gl-layers\n\n/**\n * Utility helpers for managing sprite image interpolation channels.\n * Centralizes rotation and offset channel operations so SpriteLayer stays focused on orchestration.\n */\n\nimport type { SpriteInterpolationOptions, SpriteImageOffset } from './types';\nimport type {\n  InternalSpriteImageState,\n  DegreeInterpolationState,\n  DistanceInterpolationState,\n} from './internalTypes';\n\nimport {\n  createDegreeInterpolationState,\n  evaluateDegreeInterpolation,\n} from './degreeInterpolation';\nimport {\n  createDistanceInterpolationState,\n  evaluateDistanceInterpolation,\n} from './distanceInterpolation';\nimport {\n  normalizeAngleDeg,\n  resolveRotationTarget,\n} from './rotationInterpolation';\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\ninterface DegreeInterpolationStepOptions {\n  readonly normalize?: (value: number) => number;\n  readonly applyFinalValue?: (value: number) => void;\n}\n\ninterface DegreeInterpolationStepResult {\n  readonly state: DegreeInterpolationState | null;\n  readonly active: boolean;\n}\n\nconst stepDegreeInterpolationState = (\n  interpolationState: DegreeInterpolationState | null,\n  timestamp: number,\n  applyValue: (value: number) => void,\n  options?: DegreeInterpolationStepOptions\n): DegreeInterpolationStepResult => {\n  if (!interpolationState) {\n    return { state: null, active: false };\n  }\n\n  const evaluation = evaluateDegreeInterpolation({\n    state: interpolationState,\n    timestamp,\n  });\n\n  if (interpolationState.startTimestamp < 0) {\n    interpolationState.startTimestamp = evaluation.effectiveStartTimestamp;\n  }\n\n  const normalizeValue = options?.normalize ?? ((value: number) => value);\n  const applyFinalValue = options?.applyFinalValue ?? applyValue;\n\n  const interpolatedValue = normalizeValue(evaluation.value);\n  applyValue(interpolatedValue);\n\n  if (evaluation.completed) {\n    const finalValue = normalizeValue(interpolationState.finalValue);\n    applyFinalValue(finalValue);\n    return { state: null, active: false };\n  }\n\n  return { state: interpolationState, active: true };\n};\n\nconst updateImageDisplayedRotation = (\n  image: InternalSpriteImageState,\n  optionsOverride?: SpriteInterpolationOptions | null\n): void => {\n  const targetAngle = normalizeAngleDeg(\n    image.resolvedBaseRotateDeg + image.rotateDeg\n  );\n  const currentAngle = Number.isFinite(image.displayedRotateDeg)\n    ? image.displayedRotateDeg\n    : targetAngle;\n  const previousCommandAngle = image.lastCommandRotateDeg;\n\n  const options =\n    optionsOverride === undefined\n      ? image.rotationInterpolationOptions\n      : optionsOverride;\n\n  const { nextAngleDeg, interpolationState } = resolveRotationTarget({\n    currentAngleDeg: currentAngle,\n    targetAngleDeg: targetAngle,\n    previousCommandAngleDeg: previousCommandAngle,\n    options: options ?? undefined,\n  });\n\n  image.displayedRotateDeg = nextAngleDeg;\n  image.rotationInterpolationState = interpolationState;\n\n  if (!interpolationState) {\n    image.displayedRotateDeg = targetAngle;\n  }\n  image.lastCommandRotateDeg = targetAngle;\n};\n\n//////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Ensures the rotation channel reflects the latest targets, optionally overriding interpolation.\n */\nexport const syncImageRotationChannel = (\n  image: InternalSpriteImageState,\n  optionsOverride?: SpriteInterpolationOptions | null\n): void => {\n  updateImageDisplayedRotation(image, optionsOverride);\n};\n\nconst stepRotationInterpolation = (\n  image: InternalSpriteImageState,\n  timestamp: number\n): boolean => {\n  const { state, active } = stepDegreeInterpolationState(\n    image.rotationInterpolationState,\n    timestamp,\n    (value) => {\n      image.displayedRotateDeg = value;\n    },\n    {\n      normalize: normalizeAngleDeg,\n    }\n  );\n\n  image.rotationInterpolationState = state;\n  return active;\n};\n\nconst stepOffsetDegInterpolation = (\n  image: InternalSpriteImageState,\n  timestamp: number\n): boolean => {\n  const { state, active } = stepDegreeInterpolationState(\n    image.offsetDegInterpolationState,\n    timestamp,\n    (value) => {\n      image.offset.offsetDeg = value;\n    }\n  );\n\n  image.offsetDegInterpolationState = state;\n  return active;\n};\n\n/**\n * Clears any running offset angle interpolation.\n */\nexport const clearOffsetDegInterpolation = (\n  image: InternalSpriteImageState\n): void => {\n  image.offsetDegInterpolationState = null;\n};\n\n/**\n * Container used by the distance interpolation helper.\n */\ninterface DistanceInterpolationStepResult {\n  readonly state: DistanceInterpolationState | null;\n  readonly active: boolean;\n}\n\nconst stepDistanceInterpolationState = (\n  interpolationState: DistanceInterpolationState | null,\n  timestamp: number,\n  applyValue: (value: number) => void\n): DistanceInterpolationStepResult => {\n  if (!interpolationState) {\n    return { state: null, active: false };\n  }\n\n  const evaluation = evaluateDistanceInterpolation({\n    state: interpolationState,\n    timestamp,\n  });\n\n  if (interpolationState.startTimestamp < 0) {\n    interpolationState.startTimestamp = evaluation.effectiveStartTimestamp;\n  }\n\n  applyValue(evaluation.value);\n\n  if (evaluation.completed) {\n    applyValue(interpolationState.finalValue);\n    return { state: null, active: false };\n  }\n\n  return { state: interpolationState, active: true };\n};\n\n/**\n * Clears any running offset distance interpolation in meters.\n */\nexport const clearOffsetMetersInterpolation = (\n  image: InternalSpriteImageState\n): void => {\n  image.offsetMetersInterpolationState = null;\n};\n\nconst applyOffsetDegUpdate = (\n  image: InternalSpriteImageState,\n  nextOffset: SpriteImageOffset,\n  interpolationOptions?: SpriteInterpolationOptions | null\n): void => {\n  const options = interpolationOptions;\n\n  if (!options || options.durationMs <= 0) {\n    image.offset.offsetDeg = nextOffset.offsetDeg;\n    image.offsetDegInterpolationState = null;\n    image.lastCommandOffsetDeg = nextOffset.offsetDeg;\n    return;\n  }\n\n  const { state, requiresInterpolation } = createDegreeInterpolationState({\n    currentValue: image.offset.offsetDeg,\n    targetValue: nextOffset.offsetDeg,\n    previousCommandValue: image.lastCommandOffsetDeg,\n    options,\n  });\n\n  image.lastCommandOffsetDeg = nextOffset.offsetDeg;\n\n  if (requiresInterpolation) {\n    image.offsetDegInterpolationState = state;\n  } else {\n    image.offset.offsetDeg = nextOffset.offsetDeg;\n    image.offsetDegInterpolationState = null;\n  }\n};\n\nconst applyOffsetMetersUpdate = (\n  image: InternalSpriteImageState,\n  nextOffset: SpriteImageOffset,\n  interpolationOptions?: SpriteInterpolationOptions | null\n): void => {\n  const options = interpolationOptions;\n\n  if (!options || options.durationMs <= 0) {\n    image.offset.offsetMeters = nextOffset.offsetMeters;\n    image.offsetMetersInterpolationState = null;\n    image.lastCommandOffsetMeters = nextOffset.offsetMeters;\n    return;\n  }\n\n  const { state, requiresInterpolation } = createDistanceInterpolationState({\n    currentValue: image.offset.offsetMeters,\n    targetValue: nextOffset.offsetMeters,\n    previousCommandValue: image.lastCommandOffsetMeters,\n    options,\n  });\n\n  image.lastCommandOffsetMeters = nextOffset.offsetMeters;\n\n  if (requiresInterpolation) {\n    image.offsetMetersInterpolationState = state;\n  } else {\n    image.offset.offsetMeters = nextOffset.offsetMeters;\n    image.offsetMetersInterpolationState = null;\n  }\n};\n\nconst stepOffsetMetersInterpolation = (\n  image: InternalSpriteImageState,\n  timestamp: number\n): boolean => {\n  const { state, active } = stepDistanceInterpolationState(\n    image.offsetMetersInterpolationState,\n    timestamp,\n    (value) => {\n      image.offset.offsetMeters = value;\n    }\n  );\n\n  image.offsetMetersInterpolationState = state;\n  return active;\n};\n\ntype ImageInterpolationStepper = (\n  image: InternalSpriteImageState,\n  timestamp: number\n) => boolean;\n\nconst IMAGE_INTERPOLATION_STEPPERS: readonly ImageInterpolationStepper[] = [\n  stepRotationInterpolation,\n  stepOffsetDegInterpolation,\n  stepOffsetMetersInterpolation,\n];\n\n/**\n * Executes all interpolation steppers for an image and reports whether any remain active.\n */\nexport const stepSpriteImageInterpolations = (\n  image: InternalSpriteImageState,\n  timestamp: number\n): boolean => {\n  let active = false;\n  for (const stepper of IMAGE_INTERPOLATION_STEPPERS) {\n    if (stepper(image, timestamp)) {\n      active = true;\n    }\n  }\n  return active;\n};\n\ninterface ApplyOffsetUpdateOptions {\n  readonly deg?: SpriteInterpolationOptions | null;\n  readonly meters?: SpriteInterpolationOptions | null;\n}\n\n/**\n * Applies offset updates across both angular and radial channels.\n */\nexport const applyOffsetUpdate = (\n  image: InternalSpriteImageState,\n  nextOffset: SpriteImageOffset,\n  options: ApplyOffsetUpdateOptions = {}\n): void => {\n  applyOffsetDegUpdate(image, nextOffset, options.deg);\n  applyOffsetMetersUpdate(image, nextOffset, options.meters);\n};\n","// maplibre-gl-layers - MapLibre's layer extension library enabling\n// the display, movement, and modification of large numbers of dynamic sprite images\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT\n// https://github.com/kekyo/maplibre-gl-layers\n\nconst DEFAULT_MAX_ITEMS_PER_NODE = 16;\nconst DEFAULT_MAX_DEPTH = 20;\nconst DEFAULT_LOOSENESS = 1.5;\n\n/////////////////////////////////////////////////////////////////////////////////\n\nexport interface Rect {\n  readonly x0: number;\n  readonly y0: number;\n  readonly x1: number;\n  readonly y1: number;\n}\n\nexport interface Item<TState> extends Rect {\n  readonly state: TState;\n}\n\nexport interface LooseQuadTree<TState> {\n  readonly size: number;\n  readonly add: (item: Item<TState>) => void;\n  readonly remove: (\n    x0: number,\n    y0: number,\n    x1: number,\n    y1: number,\n    item: Item<TState>\n  ) => boolean;\n  readonly update: (\n    oldX0: number,\n    oldY0: number,\n    oldX1: number,\n    oldY1: number,\n    newX0: number,\n    newY0: number,\n    newX1: number,\n    newY1: number,\n    item: Item<TState>\n  ) => boolean;\n  readonly lookup: (\n    x0: number,\n    y0: number,\n    x1: number,\n    y1: number\n  ) => Item<TState>[];\n  readonly clear: () => void;\n}\n\n/////////////////////////////////////////////////////////////////////////////////\n\ninterface QuadItem<TState> {\n  readonly item: Item<TState>;\n  rect: Rect;\n  node: QuadNode<TState>;\n  index: number;\n}\n\ninterface QuadNode<TState> {\n  readonly bounds: Rect;\n  readonly looseBounds: Rect;\n  items: QuadItem<TState>[];\n  children: QuadNode<TState>[] | null;\n  readonly depth: number;\n}\n\n/////////////////////////////////////////////////////////////////////////////////\n\nconst createNode = <TState>(\n  bounds: Rect,\n  looseness: number,\n  depth: number\n): QuadNode<TState> => ({\n  bounds,\n  looseBounds: expandRect(bounds, looseness),\n  items: [],\n  children: null,\n  depth,\n});\n\nconst normalizeRect = (rect: Rect): Rect => {\n  const x0 = Math.min(rect.x0, rect.x1);\n  const y0 = Math.min(rect.y0, rect.y1);\n  const x1 = Math.max(rect.x0, rect.x1);\n  const y1 = Math.max(rect.y0, rect.y1);\n  return { x0, y0, x1, y1 };\n};\n\nconst isFiniteRect = (rect: Rect): boolean =>\n  Number.isFinite(rect.x0) &&\n  Number.isFinite(rect.y0) &&\n  Number.isFinite(rect.x1) &&\n  Number.isFinite(rect.y1);\n\nconst expandRect = (rect: Rect, looseness: number): Rect => {\n  if (looseness === 1) {\n    return rect;\n  }\n  const width = rect.x1 - rect.x0;\n  const height = rect.y1 - rect.y0;\n  const halfWidth = (width * looseness) / 2;\n  const halfHeight = (height * looseness) / 2;\n  const centerX = rect.x0 + width / 2;\n  const centerY = rect.y0 + height / 2;\n  return {\n    x0: centerX - halfWidth,\n    y0: centerY - halfHeight,\n    x1: centerX + halfWidth,\n    y1: centerY + halfHeight,\n  };\n};\n\nconst rectContainsRectInclusive = (container: Rect, target: Rect): boolean =>\n  container.x0 <= target.x0 &&\n  container.y0 <= target.y0 &&\n  container.x1 >= target.x1 &&\n  container.y1 >= target.y1;\n\nconst rectsOverlapInclusive = (a: Rect, b: Rect): boolean =>\n  !(a.x1 < b.x0 || a.x0 > b.x1 || a.y1 < b.y0 || a.y0 > b.y1);\n\nconst rectEquals = (a: Rect, b: Rect): boolean =>\n  a.x0 === b.x0 && a.y0 === b.y0 && a.x1 === b.x1 && a.y1 === b.y1;\n\n/////////////////////////////////////////////////////////////////////////////////\n\nexport interface LooseQuadTreeOptions {\n  readonly bounds: Rect;\n  readonly maxItemsPerNode?: number;\n  readonly maxDepth?: number;\n  readonly looseness?: number;\n}\n\nexport const createLooseQuadTree = <TState>(\n  options: LooseQuadTreeOptions\n): LooseQuadTree<TState> => {\n  const maxItemsPerNode = options.maxItemsPerNode ?? DEFAULT_MAX_ITEMS_PER_NODE;\n  const maxDepth = options.maxDepth ?? DEFAULT_MAX_DEPTH;\n  const looseness = options.looseness ?? DEFAULT_LOOSENESS;\n\n  if (maxItemsPerNode <= 0) {\n    throw new Error('maxItemsPerNode must be greater than 0.');\n  }\n  if (maxDepth < 0) {\n    throw new Error('maxDepth must be 0 or greater.');\n  }\n  if (!(looseness >= 1)) {\n    throw new Error('looseness must be greater than or equal to 1.');\n  }\n\n  const normalizedBounds = normalizeRect(options.bounds);\n  if (!isFiniteRect(normalizedBounds)) {\n    throw new Error('Bounds must have finite coordinates.');\n  }\n\n  let root: QuadNode<TState> = createNode(normalizedBounds, looseness, 0);\n  let count = 0;\n  let registry = new WeakMap<Item<TState>, QuadItem<TState>>();\n\n  //////////////////////////////////////////////////////////////////\n\n  const insertIntoNode = (\n    node: QuadNode<TState>,\n    quadItem: QuadItem<TState>\n  ): void => {\n    if (node.children) {\n      const childIndex = findChildIndex(node.children, quadItem.rect);\n      if (childIndex !== -1) {\n        insertIntoNode(node.children[childIndex]!, quadItem);\n        return;\n      }\n    }\n\n    quadItem.node = node;\n    quadItem.index = node.items.length;\n    node.items.push(quadItem);\n\n    if (node.items.length > maxItemsPerNode && node.depth < maxDepth) {\n      if (!node.children) {\n        subdivide(node);\n      }\n      const children = node.children;\n      if (!children) {\n        return;\n      }\n\n      let i = 0;\n      while (i < node.items.length) {\n        const candidate = node.items[i]!;\n        const childIndex = findChildIndex(children, candidate.rect);\n        if (childIndex !== -1) {\n          detachFromNode(candidate);\n          insertIntoNode(children[childIndex]!, candidate);\n        } else {\n          i += 1;\n        }\n      }\n    }\n  };\n\n  const removeQuadItem = (quadItem: QuadItem<TState>): void => {\n    detachFromNode(quadItem);\n    registry.delete(quadItem.item);\n  };\n\n  const detachFromNode = (quadItem: QuadItem<TState>): void => {\n    const node = quadItem.node;\n    const index = quadItem.index;\n    if (index < 0 || index >= node.items.length) {\n      return;\n    }\n    const lastIndex = node.items.length - 1;\n    if (index !== lastIndex) {\n      const moved = node.items[lastIndex]!;\n      node.items[index] = moved;\n      moved.index = index;\n    }\n    node.items.pop();\n    quadItem.index = -1;\n    quadItem.node = node;\n  };\n\n  const reassignIfPossible = (quadItem: QuadItem<TState>): void => {\n    const node = quadItem.node;\n    if (!node.children) {\n      return;\n    }\n    const childIndex = findChildIndex(node.children, quadItem.rect);\n    if (childIndex === -1) {\n      return;\n    }\n    detachFromNode(quadItem);\n    insertIntoNode(node.children[childIndex]!, quadItem);\n  };\n\n  const collectFromNode = (\n    node: QuadNode<TState>,\n    rect: Rect,\n    results: Item<TState>[]\n  ): void => {\n    if (!rectsOverlapInclusive(node.looseBounds, rect)) {\n      return;\n    }\n    for (const quadItem of node.items) {\n      if (rectsOverlapInclusive(quadItem.rect, rect)) {\n        results.push(quadItem.item);\n      }\n    }\n    if (!node.children) {\n      return;\n    }\n    for (const child of node.children!) {\n      collectFromNode(child, rect, results);\n    }\n  };\n\n  const findChildIndex = <T>(children: QuadNode<T>[], rect: Rect): number => {\n    for (let i = 0; i < children.length; i += 1) {\n      const child = children[i]!;\n      if (rectContainsRectInclusive(child.looseBounds, rect)) {\n        return i;\n      }\n    }\n    return -1;\n  };\n\n  const subdivide = (node: QuadNode<TState>): void => {\n    if (node.children) {\n      return;\n    }\n    const { bounds } = node;\n    const splitX = bounds.x0 + (bounds.x1 - bounds.x0) / 2;\n    const splitY = bounds.y0 + (bounds.y1 - bounds.y0) / 2;\n    const childrenBounds: Rect[] = [\n      normalizeRect({ x0: bounds.x0, y0: bounds.y0, x1: splitX, y1: splitY }),\n      normalizeRect({ x0: splitX, y0: bounds.y0, x1: bounds.x1, y1: splitY }),\n      normalizeRect({ x0: bounds.x0, y0: splitY, x1: splitX, y1: bounds.y1 }),\n      normalizeRect({ x0: splitX, y0: splitY, x1: bounds.x1, y1: bounds.y1 }),\n    ];\n    node.children = childrenBounds.map((childBounds) =>\n      createNode(childBounds, looseness, node.depth + 1)\n    );\n  };\n\n  //////////////////////////////////////////////////////////////////\n\n  const add = (item: Item<TState>): void => {\n    const rect = normalizeRect(item);\n    if (!rectContainsRectInclusive(root.bounds, rect)) {\n      throw new Error('Item rectangle is outside of quadtree bounds.');\n    }\n    const quadItem: QuadItem<TState> = {\n      item,\n      rect,\n      node: root,\n      index: -1,\n    };\n    insertIntoNode(root, quadItem);\n    registry.set(item, quadItem);\n    count += 1;\n  };\n\n  const remove = (\n    x0: number,\n    y0: number,\n    x1: number,\n    y1: number,\n    item: Item<TState>\n  ): boolean => {\n    const quadItem = registry.get(item);\n    if (!quadItem) {\n      return false;\n    }\n    const rect = normalizeRect({ x0, y0, x1, y1 });\n    if (!rectEquals(rect, quadItem.rect)) {\n      return false;\n    }\n    removeQuadItem(quadItem);\n    count -= 1;\n    return true;\n  };\n\n  const update = (\n    oldX0: number,\n    oldY0: number,\n    oldX1: number,\n    oldY1: number,\n    newX0: number,\n    newY0: number,\n    newX1: number,\n    newY1: number,\n    item: Item<TState>\n  ): boolean => {\n    const quadItem = registry.get(item);\n    if (!quadItem) {\n      return false;\n    }\n    const currentRect = quadItem.rect;\n    const expectedOldRect = normalizeRect({\n      x0: oldX0,\n      y0: oldY0,\n      x1: oldX1,\n      y1: oldY1,\n    });\n    if (!rectEquals(currentRect, expectedOldRect)) {\n      return false;\n    }\n\n    const newRect = normalizeRect({\n      x0: newX0,\n      y0: newY0,\n      x1: newX1,\n      y1: newY1,\n    });\n    if (!rectContainsRectInclusive(root.bounds, newRect)) {\n      throw new Error('Updated rectangle is outside of quadtree bounds.');\n    }\n\n    if (rectContainsRectInclusive(quadItem.node.looseBounds, newRect)) {\n      quadItem.rect = newRect;\n      reassignIfPossible(quadItem);\n      return true;\n    }\n\n    detachFromNode(quadItem);\n    quadItem.rect = newRect;\n    insertIntoNode(root, quadItem);\n    return true;\n  };\n\n  const lookup = (\n    x0: number,\n    y0: number,\n    x1: number,\n    y1: number\n  ): Item<TState>[] => {\n    const rect = normalizeRect({ x0, y0, x1, y1 });\n    const results: Item<TState>[] = [];\n    collectFromNode(root, rect, results);\n    return results;\n  };\n\n  const clear = (): void => {\n    root = createNode(normalizedBounds, looseness, 0);\n    registry = new WeakMap<Item<TState>, QuadItem<TState>>();\n    count = 0;\n  };\n\n  //////////////////////////////////////////////////////////////////\n\n  return {\n    get size(): number {\n      return count;\n    },\n    add,\n    remove,\n    update,\n    lookup,\n    clear,\n  };\n};\n","// maplibre-gl-layers - MapLibre's layer extension library enabling\n// the display, movement, and modification of large numbers of dynamic sprite images\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT\n// https://github.com/kekyo/maplibre-gl-layers\n\n/**\n * shader.ts\n *\n * Centralises shader source definitions, buffer layout constants, reusable scratch\n * buffers, and helper utilities for compiling and linking WebGL shader programs.\n */\n\nimport type { SpriteAnchor, SpriteScreenPoint } from './types';\nimport type {\n  PreparedDrawSpriteImageParams,\n  Releaseable,\n  SurfaceShaderInputs,\n} from './internalTypes';\nimport { DEG2RAD, UV_CORNERS } from './const';\n\n/** Number of components per vertex (clipPosition.xyzw + uv.xy). */\nexport const VERTEX_COMPONENT_COUNT = 6;\n/** Component count for clip-space position attributes. */\nexport const POSITION_COMPONENT_COUNT = 4;\n/** Component count for UV attributes. */\nexport const UV_COMPONENT_COUNT = 2;\n/** Byte size of a Float32. */\nexport const FLOAT_SIZE = Float32Array.BYTES_PER_ELEMENT;\n/** Stride per vertex in bytes. */\nexport const VERTEX_STRIDE = VERTEX_COMPONENT_COUNT * FLOAT_SIZE;\n/** Byte offset for the UV attribute. */\nexport const UV_OFFSET = POSITION_COMPONENT_COUNT * FLOAT_SIZE;\n/** Vertex count required to draw one sprite as two triangles. */\nexport const QUAD_VERTEX_COUNT = 6;\n\n/** Shared vertex shader that converts screen-space vertices when requested. */\nexport const VERTEX_SHADER_SOURCE = `\nattribute vec4 a_position;\nattribute vec2 a_uv;\nuniform vec2 u_screenToClipScale;\nuniform vec2 u_screenToClipOffset;\nuniform float u_billboardMode;\nuniform float u_surfaceMode;\nuniform vec2 u_billboardCenter;\nuniform vec2 u_billboardHalfSize;\nuniform vec2 u_billboardAnchor;\nuniform vec2 u_billboardSinCos;\nuniform float u_surfaceClipEnabled;\nuniform mat4 u_surfaceClipMatrix;\nuniform float u_surfaceDepthBias;\nvarying vec2 v_uv;\nvec2 computeBillboardCorner(vec2 baseCorner) {\n  vec2 anchorShift = vec2(u_billboardAnchor.x * u_billboardHalfSize.x, u_billboardAnchor.y * u_billboardHalfSize.y);\n  vec2 shifted = vec2(baseCorner.x * u_billboardHalfSize.x, baseCorner.y * u_billboardHalfSize.y) - anchorShift;\n  float sinR = u_billboardSinCos.x;\n  float cosR = u_billboardSinCos.y;\n  vec2 rotated = vec2(\n    shifted.x * cosR - shifted.y * sinR,\n    shifted.x * sinR + shifted.y * cosR\n  );\n  return vec2(\n    u_billboardCenter.x + rotated.x,\n    u_billboardCenter.y - rotated.y\n  );\n}\nvec4 computeSurfaceCorner(vec2 corner) {\n  if (u_surfaceClipEnabled < 0.5) {\n    return vec4(0.0, 0.0, 0.0, 1.0);\n  }\n  vec4 clip = u_surfaceClipMatrix * vec4(1.0, corner.x, corner.y, 0.0);\n  clip.z += u_surfaceDepthBias * clip.w;\n  return clip;\n}\nvoid main() {\n  v_uv = a_uv;\n  vec4 position;\n  if (u_billboardMode > 0.5) {\n    vec2 screenPosition = computeBillboardCorner(a_position.xy);\n    position = vec4(screenPosition, 0.0, 1.0);\n  } else if (u_surfaceMode > 0.5) {\n    vec2 baseCorner = vec2(a_position.x, a_position.y);\n    position = computeSurfaceCorner(baseCorner);\n  } else {\n    position = a_position;\n  }\n  position.xy = position.xy * u_screenToClipScale + u_screenToClipOffset;\n  gl_Position = position;\n}\n` as const;\n\n/** Fragment shader that applies texture sampling and opacity. */\nexport const FRAGMENT_SHADER_SOURCE = `\nprecision mediump float;\nuniform sampler2D u_texture;\nuniform float u_opacity;\nvarying vec2 v_uv;\nvoid main() {\n  vec4 texel = texture2D(u_texture, v_uv);\n  gl_FragColor = vec4(texel.rgb, texel.a) * u_opacity;\n}\n` as const;\n\n/** Initial vertex data for a unit quad. */\nexport const INITIAL_QUAD_VERTICES = new Float32Array(\n  QUAD_VERTEX_COUNT * VERTEX_COMPONENT_COUNT\n);\n\n/** Scratch buffer rewritten for each draw call. */\nexport const QUAD_VERTEX_SCRATCH = new Float32Array(\n  QUAD_VERTEX_COUNT * VERTEX_COMPONENT_COUNT\n);\n\n/** Vertex shader for debug hit-test outline rendering using screen coordinates. */\nexport const DEBUG_OUTLINE_VERTEX_SHADER_SOURCE = `\nattribute vec4 a_position;\nuniform vec2 u_screenToClipScale;\nuniform vec2 u_screenToClipOffset;\nvoid main() {\n  vec4 position = a_position;\n  position.xy = position.xy * u_screenToClipScale + u_screenToClipOffset;\n  gl_Position = position;\n}\n` as const;\n\n/** Fragment shader emitting a solid color for debug outlines. */\nexport const DEBUG_OUTLINE_FRAGMENT_SHADER_SOURCE = `\nprecision mediump float;\nuniform vec4 u_color;\nvoid main() {\n  gl_FragColor = u_color;\n}\n` as const;\n\n/** Number of vertices required to outline a quad using LINE_LOOP. */\nexport const DEBUG_OUTLINE_VERTEX_COUNT = 4;\n/** Components per debug outline vertex (clipPosition.xyzw). */\nexport const DEBUG_OUTLINE_POSITION_COMPONENT_COUNT = 4;\n/** Stride in bytes for debug outline vertices. */\nexport const DEBUG_OUTLINE_VERTEX_STRIDE =\n  DEBUG_OUTLINE_POSITION_COMPONENT_COUNT * FLOAT_SIZE;\n/** Scratch buffer reused when emitting debug outlines. */\nexport const DEBUG_OUTLINE_VERTEX_SCRATCH = new Float32Array(\n  DEBUG_OUTLINE_VERTEX_COUNT * DEBUG_OUTLINE_POSITION_COMPONENT_COUNT\n);\n/** Solid red RGBA color used for debug outlines. */\nexport const DEBUG_OUTLINE_COLOR: readonly [number, number, number, number] = [\n  1.0, 0.0, 0.0, 1.0,\n];\n/** Corner traversal order used when outlining a quad without crossing diagonals. */\nexport const DEBUG_OUTLINE_CORNER_ORDER = [0, 1, 3, 2] as const;\n\n/** Base corner definitions used when expanding billboards in shaders. */\nexport const BILLBOARD_BASE_CORNERS: ReadonlyArray<readonly [number, number]> =\n  [\n    [-1, 1],\n    [1, 1],\n    [-1, -1],\n    [1, -1],\n  ] as const;\n\n/** Base corner definitions used when expanding surface quads in shaders. */\nexport const SURFACE_BASE_CORNERS: ReadonlyArray<readonly [number, number]> = [\n  [-1, 1],\n  [1, 1],\n  [-1, -1],\n  [1, -1],\n] as const;\n\nexport const computeBillboardCornersShaderModel = ({\n  center,\n  halfWidth,\n  halfHeight,\n  anchor,\n  rotationDeg,\n}: {\n  center: Readonly<SpriteScreenPoint>;\n  halfWidth: number;\n  halfHeight: number;\n  anchor?: Readonly<SpriteAnchor>;\n  rotationDeg: number;\n}): Array<{ x: number; y: number; u: number; v: number }> => {\n  const anchorX = anchor?.x ?? 0;\n  const anchorY = anchor?.y ?? 0;\n  const rad = -rotationDeg * DEG2RAD;\n  const cosR = Math.cos(rad);\n  const sinR = Math.sin(rad);\n\n  return BILLBOARD_BASE_CORNERS.map(([cornerXNorm, cornerYNorm], index) => {\n    const cornerX = cornerXNorm * halfWidth;\n    const cornerY = cornerYNorm * halfHeight;\n    const shiftedX = cornerX - anchorX * halfWidth;\n    const shiftedY = cornerY - anchorY * halfHeight;\n    const rotatedX = shiftedX * cosR - shiftedY * sinR;\n    const rotatedY = shiftedX * sinR + shiftedY * cosR;\n    const [u, v] = UV_CORNERS[index]!;\n    return {\n      x: center.x + rotatedX,\n      y: center.y - rotatedY,\n      u,\n      v,\n    };\n  });\n};\n\n/**\n * Compiles a shader from source, throwing if compilation fails.\n * @param {WebGLRenderingContext} glContext - Active WebGL context.\n * @param {number} type - Shader type (`VERTEX_SHADER` or `FRAGMENT_SHADER`).\n * @param {string} source - GLSL source code.\n * @returns {WebGLShader} Compiled shader object.\n * @throws When shader creation or compilation fails.\n */\nexport const compileShader = (\n  glContext: WebGLRenderingContext,\n  type: number,\n  source: string\n): WebGLShader => {\n  const shader = glContext.createShader(type);\n  if (!shader) {\n    throw new Error('Failed to create shader.');\n  }\n  glContext.shaderSource(shader, source);\n  glContext.compileShader(shader);\n  if (!glContext.getShaderParameter(shader, glContext.COMPILE_STATUS)) {\n    const info = glContext.getShaderInfoLog(shader) ?? 'unknown error';\n    glContext.deleteShader(shader);\n    throw new Error(`Shader compile failed: ${info}`);\n  }\n  return shader;\n};\n\n/**\n * Links a vertex and fragment shader into a WebGL program.\n * @param {WebGLRenderingContext} glContext - Active WebGL context.\n * @param {string} vertexSource - Vertex shader GLSL source.\n * @param {string} fragmentSource - Fragment shader GLSL source.\n * @returns {WebGLProgram} Linked shader program ready for use.\n * @throws When linking fails or a program cannot be created.\n */\nexport const createShaderProgram = (\n  glContext: WebGLRenderingContext,\n  vertexSource: string,\n  fragmentSource: string\n): WebGLProgram => {\n  const vertexShader = compileShader(\n    glContext,\n    glContext.VERTEX_SHADER,\n    vertexSource\n  );\n  const fragmentShader = compileShader(\n    glContext,\n    glContext.FRAGMENT_SHADER,\n    fragmentSource\n  );\n  const program = glContext.createProgram();\n  if (!program) {\n    glContext.deleteShader(vertexShader);\n    glContext.deleteShader(fragmentShader);\n    throw new Error('Failed to create WebGL program.');\n  }\n  glContext.attachShader(program, vertexShader);\n  glContext.attachShader(program, fragmentShader);\n  glContext.linkProgram(program);\n  glContext.deleteShader(vertexShader);\n  glContext.deleteShader(fragmentShader);\n\n  if (!glContext.getProgramParameter(program, glContext.LINK_STATUS)) {\n    const info = glContext.getProgramInfoLog(program) ?? 'unknown error';\n    glContext.deleteProgram(program);\n    throw new Error(`Program link failed: ${info}`);\n  }\n\n  return program;\n};\n\nconst SURFACE_CLIP_MATRIX_IDENTITY = new Float32Array([\n  0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n]);\n\nconst FLOATS_PER_VERTEX = VERTEX_COMPONENT_COUNT;\nconst FLOATS_PER_SPRITE = QUAD_VERTEX_COUNT * VERTEX_COMPONENT_COUNT;\n\nexport interface SpriteDrawProgram<TTag> extends Releaseable {\n  beginFrame(): void;\n  uploadVertexBatch(items: PreparedDrawSpriteImageParams<TTag>[]): void;\n  draw(prepared: PreparedDrawSpriteImageParams<TTag>): boolean;\n}\n\nexport const createSpriteDrawProgram = <TTag>(\n  glContext: WebGLRenderingContext\n): SpriteDrawProgram<TTag> => {\n  const vertexBuffer = glContext.createBuffer();\n  if (!vertexBuffer) {\n    throw new Error('Failed to create vertex buffer.');\n  }\n\n  glContext.bindBuffer(glContext.ARRAY_BUFFER, vertexBuffer);\n  glContext.bufferData(\n    glContext.ARRAY_BUFFER,\n    INITIAL_QUAD_VERTICES,\n    glContext.DYNAMIC_DRAW\n  );\n\n  let vertexBufferCapacityFloats = INITIAL_QUAD_VERTICES.length;\n\n  const program = createShaderProgram(\n    glContext,\n    VERTEX_SHADER_SOURCE,\n    FRAGMENT_SHADER_SOURCE\n  );\n  glContext.useProgram(program);\n\n  const attribPositionLocation = glContext.getAttribLocation(\n    program,\n    'a_position'\n  );\n  const attribUvLocation = glContext.getAttribLocation(program, 'a_uv');\n  if (attribPositionLocation === -1 || attribUvLocation === -1) {\n    glContext.deleteBuffer(vertexBuffer);\n    glContext.deleteProgram(program);\n    throw new Error('Failed to acquire attribute locations.');\n  }\n\n  const uniformTextureLocation = glContext.getUniformLocation(\n    program,\n    'u_texture'\n  );\n  const uniformOpacityLocation = glContext.getUniformLocation(\n    program,\n    'u_opacity'\n  );\n  const uniformScreenToClipScaleLocation = glContext.getUniformLocation(\n    program,\n    'u_screenToClipScale'\n  );\n  const uniformScreenToClipOffsetLocation = glContext.getUniformLocation(\n    program,\n    'u_screenToClipOffset'\n  );\n  const uniformBillboardModeLocation = glContext.getUniformLocation(\n    program,\n    'u_billboardMode'\n  );\n  const uniformBillboardCenterLocation = glContext.getUniformLocation(\n    program,\n    'u_billboardCenter'\n  );\n  const uniformBillboardHalfSizeLocation = glContext.getUniformLocation(\n    program,\n    'u_billboardHalfSize'\n  );\n  const uniformBillboardAnchorLocation = glContext.getUniformLocation(\n    program,\n    'u_billboardAnchor'\n  );\n  const uniformBillboardSinCosLocation = glContext.getUniformLocation(\n    program,\n    'u_billboardSinCos'\n  );\n  const uniformSurfaceModeLocation = glContext.getUniformLocation(\n    program,\n    'u_surfaceMode'\n  );\n  const uniformSurfaceDepthBiasLocation = glContext.getUniformLocation(\n    program,\n    'u_surfaceDepthBias'\n  );\n  const uniformSurfaceClipEnabledLocation = glContext.getUniformLocation(\n    program,\n    'u_surfaceClipEnabled'\n  );\n  const uniformSurfaceClipMatrixLocation = glContext.getUniformLocation(\n    program,\n    'u_surfaceClipMatrix'\n  );\n\n  if (\n    !uniformTextureLocation ||\n    !uniformOpacityLocation ||\n    !uniformScreenToClipScaleLocation ||\n    !uniformScreenToClipOffsetLocation ||\n    !uniformBillboardModeLocation ||\n    !uniformBillboardCenterLocation ||\n    !uniformBillboardHalfSizeLocation ||\n    !uniformBillboardAnchorLocation ||\n    !uniformBillboardSinCosLocation ||\n    !uniformSurfaceModeLocation ||\n    !uniformSurfaceDepthBiasLocation ||\n    !uniformSurfaceClipEnabledLocation ||\n    !uniformSurfaceClipMatrixLocation\n  ) {\n    glContext.deleteBuffer(vertexBuffer);\n    glContext.deleteProgram(program);\n    throw new Error('Failed to acquire uniform locations.');\n  }\n\n  glContext.uniform1i(uniformTextureLocation, 0);\n  glContext.uniform1f(uniformOpacityLocation, 1.0);\n  glContext.uniform2f(uniformScreenToClipScaleLocation, 1.0, 1.0);\n  glContext.uniform2f(uniformScreenToClipOffsetLocation, 0.0, 0.0);\n  glContext.uniform1f(uniformSurfaceClipEnabledLocation, 0.0);\n  glContext.uniformMatrix4fv(\n    uniformSurfaceClipMatrixLocation,\n    false,\n    SURFACE_CLIP_MATRIX_IDENTITY\n  );\n  glContext.uniform1f(uniformBillboardModeLocation, 0);\n  glContext.uniform2f(uniformBillboardCenterLocation, 0.0, 0.0);\n  glContext.uniform2f(uniformBillboardHalfSizeLocation, 0.0, 0.0);\n  glContext.uniform2f(uniformBillboardAnchorLocation, 0.0, 0.0);\n  glContext.uniform2f(uniformBillboardSinCosLocation, 0.0, 1.0);\n  glContext.uniform1f(uniformSurfaceModeLocation, 0);\n  glContext.uniform1f(uniformSurfaceDepthBiasLocation, 0);\n\n  const vertexBatchOffsets = new Map<\n    PreparedDrawSpriteImageParams<TTag>,\n    number\n  >();\n  let batchedVertexScratch = new Float32Array(FLOATS_PER_SPRITE);\n\n  const ensureVertexBatchCapacity = (requiredFloatCount: number): void => {\n    if (batchedVertexScratch.length >= requiredFloatCount) {\n      return;\n    }\n    let capacity = batchedVertexScratch.length || FLOATS_PER_SPRITE;\n    while (capacity < requiredFloatCount) {\n      capacity *= 2;\n    }\n    batchedVertexScratch = new Float32Array(capacity);\n  };\n\n  const ensureVertexBufferCapacity = (requiredFloatCount: number): void => {\n    if (requiredFloatCount <= vertexBufferCapacityFloats) {\n      return;\n    }\n    let capacity = Math.max(vertexBufferCapacityFloats, FLOATS_PER_SPRITE);\n    while (capacity < requiredFloatCount) {\n      capacity *= 2;\n    }\n    glContext.bufferData(\n      glContext.ARRAY_BUFFER,\n      capacity * FLOAT_SIZE,\n      glContext.DYNAMIC_DRAW\n    );\n    vertexBufferCapacityFloats = capacity;\n  };\n\n  const orphanVertexBuffer = (): void => {\n    glContext.bufferData(\n      glContext.ARRAY_BUFFER,\n      vertexBufferCapacityFloats * FLOAT_SIZE,\n      glContext.DYNAMIC_DRAW\n    );\n  };\n\n  let currentScaleX = Number.NaN;\n  let currentScaleY = Number.NaN;\n  let currentOffsetX = Number.NaN;\n  let currentOffsetY = Number.NaN;\n  let currentSurfaceMode = Number.NaN;\n  let currentSurfaceClipEnabled = Number.NaN;\n  const currentSurfaceClipMatrix = new Float32Array(16);\n  currentSurfaceClipMatrix.fill(Number.NaN);\n  const surfaceClipMatrixScratch = new Float32Array(16);\n  let currentSurfaceDepthBias = Number.NaN;\n  let currentBillboardMode = Number.NaN;\n  const currentBillboardCenter = { x: Number.NaN, y: Number.NaN };\n  const currentBillboardHalfSize = { x: Number.NaN, y: Number.NaN };\n  const currentBillboardAnchor = { x: Number.NaN, y: Number.NaN };\n  const currentBillboardSinCos = { x: Number.NaN, y: Number.NaN };\n  let currentOpacity = Number.NaN;\n  let currentBoundTexture: WebGLTexture | null = null;\n\n  const resetFrameState = (): void => {\n    currentScaleX = Number.NaN;\n    currentScaleY = Number.NaN;\n    currentOffsetX = Number.NaN;\n    currentOffsetY = Number.NaN;\n    currentSurfaceMode = Number.NaN;\n    currentSurfaceClipEnabled = Number.NaN;\n    currentSurfaceClipMatrix.fill(Number.NaN);\n    currentSurfaceDepthBias = Number.NaN;\n    currentBillboardMode = Number.NaN;\n    currentBillboardCenter.x = Number.NaN;\n    currentBillboardCenter.y = Number.NaN;\n    currentBillboardHalfSize.x = Number.NaN;\n    currentBillboardHalfSize.y = Number.NaN;\n    currentBillboardAnchor.x = Number.NaN;\n    currentBillboardAnchor.y = Number.NaN;\n    currentBillboardSinCos.x = Number.NaN;\n    currentBillboardSinCos.y = Number.NaN;\n    currentOpacity = Number.NaN;\n    currentBoundTexture = null;\n    vertexBatchOffsets.clear();\n  };\n\n  const matricesEqual = (a: Float32Array, b: Float32Array): boolean => {\n    for (let index = 0; index < a.length; index++) {\n      if (a[index] !== b[index]) {\n        return false;\n      }\n    }\n    return true;\n  };\n\n  const writeSurfaceClipMatrix = (\n    target: Float32Array,\n    inputs: SurfaceShaderInputs\n  ): void => {\n    const center = inputs.clipCenter;\n    const basisEast = inputs.clipBasisEast;\n    const basisNorth = inputs.clipBasisNorth;\n    target[0] = center.x;\n    target[1] = center.y;\n    target[2] = center.z;\n    target[3] = center.w;\n    target[4] = basisEast.x;\n    target[5] = basisEast.y;\n    target[6] = basisEast.z;\n    target[7] = basisEast.w;\n    target[8] = basisNorth.x;\n    target[9] = basisNorth.y;\n    target[10] = basisNorth.z;\n    target[11] = basisNorth.w;\n    target[12] = 0;\n    target[13] = 0;\n    target[14] = 0;\n    target[15] = 0;\n  };\n\n  const applyScreenToClipUniforms = (\n    scaleX: number,\n    scaleY: number,\n    offsetX: number,\n    offsetY: number\n  ): void => {\n    if (\n      scaleX !== currentScaleX ||\n      scaleY !== currentScaleY ||\n      offsetX !== currentOffsetX ||\n      offsetY !== currentOffsetY\n    ) {\n      glContext.uniform2f(uniformScreenToClipScaleLocation, scaleX, scaleY);\n      glContext.uniform2f(uniformScreenToClipOffsetLocation, offsetX, offsetY);\n      currentScaleX = scaleX;\n      currentScaleY = scaleY;\n      currentOffsetX = offsetX;\n      currentOffsetY = offsetY;\n    }\n  };\n\n  const applySurfaceMode = (enabled: boolean): void => {\n    const value = enabled ? 1 : 0;\n    if (value !== currentSurfaceMode) {\n      glContext.uniform1f(uniformSurfaceModeLocation, value);\n      currentSurfaceMode = value;\n    }\n  };\n\n  const applySurfaceClipUniforms = (\n    enabled: boolean,\n    inputs: SurfaceShaderInputs | null\n  ): void => {\n    const hasInputs = Boolean(enabled && inputs);\n    const value = hasInputs ? 1 : 0;\n    if (value !== currentSurfaceClipEnabled) {\n      glContext.uniform1f(uniformSurfaceClipEnabledLocation, value);\n      currentSurfaceClipEnabled = value;\n    }\n    if (!hasInputs || !inputs) {\n      return;\n    }\n    writeSurfaceClipMatrix(surfaceClipMatrixScratch, inputs);\n    if (!matricesEqual(surfaceClipMatrixScratch, currentSurfaceClipMatrix)) {\n      glContext.uniformMatrix4fv(\n        uniformSurfaceClipMatrixLocation,\n        false,\n        surfaceClipMatrixScratch\n      );\n      currentSurfaceClipMatrix.set(surfaceClipMatrixScratch);\n    }\n  };\n\n  const beginFrame = (): void => {\n    glContext.useProgram(program);\n    glContext.bindBuffer(glContext.ARRAY_BUFFER, vertexBuffer);\n    glContext.enableVertexAttribArray(attribPositionLocation);\n    glContext.vertexAttribPointer(\n      attribPositionLocation,\n      POSITION_COMPONENT_COUNT,\n      glContext.FLOAT,\n      false,\n      VERTEX_STRIDE,\n      0\n    );\n    glContext.enableVertexAttribArray(attribUvLocation);\n    glContext.vertexAttribPointer(\n      attribUvLocation,\n      UV_COMPONENT_COUNT,\n      glContext.FLOAT,\n      false,\n      VERTEX_STRIDE,\n      UV_OFFSET\n    );\n    resetFrameState();\n  };\n\n  const uploadVertexBatch = (\n    items: PreparedDrawSpriteImageParams<TTag>[]\n  ): void => {\n    vertexBatchOffsets.clear();\n    if (items.length === 0) {\n      return;\n    }\n    let requiredFloatCount = 0;\n    for (const prepared of items) {\n      requiredFloatCount += prepared.vertexData.length;\n    }\n    ensureVertexBatchCapacity(requiredFloatCount);\n    let floatOffset = 0;\n    let vertexOffset = 0;\n    for (const prepared of items) {\n      const data = prepared.vertexData;\n      batchedVertexScratch.set(data, floatOffset);\n      vertexBatchOffsets.set(prepared, vertexOffset);\n      floatOffset += data.length;\n      vertexOffset += data.length / FLOATS_PER_VERTEX;\n    }\n    const uploadView = batchedVertexScratch.subarray(0, floatOffset);\n    ensureVertexBufferCapacity(uploadView.length);\n    orphanVertexBuffer();\n    glContext.bufferSubData(glContext.ARRAY_BUFFER, 0, uploadView);\n  };\n\n  const draw = (prepared: PreparedDrawSpriteImageParams<TTag>): boolean => {\n    const { screenToClip } = prepared;\n    applyScreenToClipUniforms(\n      screenToClip.scaleX,\n      screenToClip.scaleY,\n      screenToClip.offsetX,\n      screenToClip.offsetY\n    );\n\n    applySurfaceMode(prepared.useShaderSurface);\n\n    const surfaceInputs = prepared.surfaceShaderInputs;\n    if (prepared.useShaderSurface && surfaceInputs) {\n      const depthBias = surfaceInputs.depthBiasNdc;\n      if (depthBias !== currentSurfaceDepthBias) {\n        glContext.uniform1f(uniformSurfaceDepthBiasLocation, depthBias);\n        currentSurfaceDepthBias = depthBias;\n      }\n      applySurfaceClipUniforms(\n        prepared.surfaceClipEnabled,\n        prepared.surfaceClipEnabled ? surfaceInputs : null\n      );\n    } else {\n      if (currentSurfaceDepthBias !== 0) {\n        glContext.uniform1f(uniformSurfaceDepthBiasLocation, 0);\n        currentSurfaceDepthBias = 0;\n      }\n      applySurfaceClipUniforms(false, null);\n    }\n\n    const billboardMode = prepared.useShaderBillboard ? 1 : 0;\n    if (billboardMode !== currentBillboardMode) {\n      glContext.uniform1f(uniformBillboardModeLocation, billboardMode);\n      currentBillboardMode = billboardMode;\n    }\n    if (prepared.useShaderBillboard && prepared.billboardUniforms) {\n      const uniforms = prepared.billboardUniforms;\n      if (\n        uniforms.center.x !== currentBillboardCenter.x ||\n        uniforms.center.y !== currentBillboardCenter.y\n      ) {\n        glContext.uniform2f(\n          uniformBillboardCenterLocation,\n          uniforms.center.x,\n          uniforms.center.y\n        );\n        currentBillboardCenter.x = uniforms.center.x;\n        currentBillboardCenter.y = uniforms.center.y;\n      }\n      if (\n        uniforms.halfWidth !== currentBillboardHalfSize.x ||\n        uniforms.halfHeight !== currentBillboardHalfSize.y\n      ) {\n        glContext.uniform2f(\n          uniformBillboardHalfSizeLocation,\n          uniforms.halfWidth,\n          uniforms.halfHeight\n        );\n        currentBillboardHalfSize.x = uniforms.halfWidth;\n        currentBillboardHalfSize.y = uniforms.halfHeight;\n      }\n      if (\n        uniforms.anchor.x !== currentBillboardAnchor.x ||\n        uniforms.anchor.y !== currentBillboardAnchor.y\n      ) {\n        glContext.uniform2f(\n          uniformBillboardAnchorLocation,\n          uniforms.anchor.x,\n          uniforms.anchor.y\n        );\n        currentBillboardAnchor.x = uniforms.anchor.x;\n        currentBillboardAnchor.y = uniforms.anchor.y;\n      }\n      if (\n        uniforms.sin !== currentBillboardSinCos.x ||\n        uniforms.cos !== currentBillboardSinCos.y\n      ) {\n        glContext.uniform2f(\n          uniformBillboardSinCosLocation,\n          uniforms.sin,\n          uniforms.cos\n        );\n        currentBillboardSinCos.x = uniforms.sin;\n        currentBillboardSinCos.y = uniforms.cos;\n      }\n    }\n\n    const texture = prepared.imageResource.texture;\n    if (!texture) {\n      return false;\n    }\n\n    if (prepared.opacity !== currentOpacity) {\n      glContext.uniform1f(uniformOpacityLocation, prepared.opacity);\n      currentOpacity = prepared.opacity;\n    }\n    if (currentBoundTexture !== texture) {\n      glContext.activeTexture(glContext.TEXTURE0);\n      glContext.bindTexture(glContext.TEXTURE_2D, texture);\n      currentBoundTexture = texture;\n    }\n\n    const vertexOffset = vertexBatchOffsets.get(prepared);\n    if (vertexOffset === undefined) {\n      return false;\n    }\n\n    glContext.drawArrays(glContext.TRIANGLES, vertexOffset, QUAD_VERTEX_COUNT);\n    return true;\n  };\n\n  const release = (): void => {\n    glContext.deleteBuffer(vertexBuffer);\n    glContext.deleteProgram(program);\n  };\n\n  return {\n    beginFrame,\n    uploadVertexBatch,\n    draw,\n    release,\n  };\n};\n\nexport interface DebugOutlineRenderer extends Releaseable {\n  begin(\n    screenToClipScaleX: number,\n    screenToClipScaleY: number,\n    screenToClipOffsetX: number,\n    screenToClipOffsetY: number\n  ): void;\n  drawOutline(\n    corners: readonly [\n      SpriteScreenPoint,\n      SpriteScreenPoint,\n      SpriteScreenPoint,\n      SpriteScreenPoint,\n    ]\n  ): void;\n  end(): void;\n}\n\nexport const createDebugOutlineRenderer = (\n  glContext: WebGLRenderingContext\n): DebugOutlineRenderer => {\n  const program = createShaderProgram(\n    glContext,\n    DEBUG_OUTLINE_VERTEX_SHADER_SOURCE,\n    DEBUG_OUTLINE_FRAGMENT_SHADER_SOURCE\n  );\n\n  const attribPositionLocation = glContext.getAttribLocation(\n    program,\n    'a_position'\n  );\n  if (attribPositionLocation === -1) {\n    glContext.deleteProgram(program);\n    throw new Error('Failed to acquire debug attribute location.');\n  }\n\n  const uniformColorLocation = glContext.getUniformLocation(program, 'u_color');\n  const uniformScreenToClipScaleLocation = glContext.getUniformLocation(\n    program,\n    'u_screenToClipScale'\n  );\n  const uniformScreenToClipOffsetLocation = glContext.getUniformLocation(\n    program,\n    'u_screenToClipOffset'\n  );\n  if (\n    !uniformColorLocation ||\n    !uniformScreenToClipScaleLocation ||\n    !uniformScreenToClipOffsetLocation\n  ) {\n    glContext.deleteProgram(program);\n    throw new Error('Failed to acquire debug uniforms.');\n  }\n\n  const vertexBuffer = glContext.createBuffer();\n  if (!vertexBuffer) {\n    glContext.deleteProgram(program);\n    throw new Error('Failed to create debug vertex buffer.');\n  }\n  glContext.bindBuffer(glContext.ARRAY_BUFFER, vertexBuffer);\n  glContext.bufferData(\n    glContext.ARRAY_BUFFER,\n    DEBUG_OUTLINE_VERTEX_SCRATCH,\n    glContext.DYNAMIC_DRAW\n  );\n  glContext.bindBuffer(glContext.ARRAY_BUFFER, null);\n\n  let active = false;\n\n  const begin = (\n    screenToClipScaleX: number,\n    screenToClipScaleY: number,\n    screenToClipOffsetX: number,\n    screenToClipOffsetY: number\n  ): void => {\n    glContext.useProgram(program);\n    glContext.bindBuffer(glContext.ARRAY_BUFFER, vertexBuffer);\n    glContext.enableVertexAttribArray(attribPositionLocation);\n    glContext.vertexAttribPointer(\n      attribPositionLocation,\n      DEBUG_OUTLINE_POSITION_COMPONENT_COUNT,\n      glContext.FLOAT,\n      false,\n      DEBUG_OUTLINE_VERTEX_STRIDE,\n      0\n    );\n    glContext.disable(glContext.DEPTH_TEST);\n    glContext.depthMask(false);\n    glContext.uniform4f(\n      uniformColorLocation,\n      DEBUG_OUTLINE_COLOR[0],\n      DEBUG_OUTLINE_COLOR[1],\n      DEBUG_OUTLINE_COLOR[2],\n      DEBUG_OUTLINE_COLOR[3]\n    );\n    glContext.uniform2f(\n      uniformScreenToClipScaleLocation,\n      screenToClipScaleX,\n      screenToClipScaleY\n    );\n    glContext.uniform2f(\n      uniformScreenToClipOffsetLocation,\n      screenToClipOffsetX,\n      screenToClipOffsetY\n    );\n    active = true;\n  };\n\n  const drawOutline = (\n    corners: readonly [\n      SpriteScreenPoint,\n      SpriteScreenPoint,\n      SpriteScreenPoint,\n      SpriteScreenPoint,\n    ]\n  ): void => {\n    if (!active) {\n      return;\n    }\n    let writeOffset = 0;\n    for (const cornerIndex of DEBUG_OUTLINE_CORNER_ORDER) {\n      const corner = corners[cornerIndex]!;\n      DEBUG_OUTLINE_VERTEX_SCRATCH[writeOffset++] = corner.x;\n      DEBUG_OUTLINE_VERTEX_SCRATCH[writeOffset++] = corner.y;\n      DEBUG_OUTLINE_VERTEX_SCRATCH[writeOffset++] = 0;\n      DEBUG_OUTLINE_VERTEX_SCRATCH[writeOffset++] = 1;\n    }\n    glContext.bufferSubData(\n      glContext.ARRAY_BUFFER,\n      0,\n      DEBUG_OUTLINE_VERTEX_SCRATCH\n    );\n    glContext.drawArrays(glContext.LINE_LOOP, 0, DEBUG_OUTLINE_VERTEX_COUNT);\n  };\n\n  const end = (): void => {\n    if (!active) {\n      return;\n    }\n    glContext.depthMask(true);\n    glContext.enable(glContext.DEPTH_TEST);\n    glContext.disableVertexAttribArray(attribPositionLocation);\n    glContext.bindBuffer(glContext.ARRAY_BUFFER, null);\n    active = false;\n  };\n\n  const release = (): void => {\n    end();\n    glContext.deleteBuffer(vertexBuffer);\n    glContext.deleteProgram(program);\n  };\n\n  return {\n    begin,\n    drawOutline,\n    end,\n    release,\n  };\n};\n","import * as glMatrix from \"./common.js\";\n\n/**\n * 4x4 Matrix<br>Format: column-major, when typed out it looks like row-major<br>The matrices are being post multiplied.\n * @module mat4\n */\n\n/**\n * Creates a new identity mat4\n *\n * @returns {mat4} a new 4x4 matrix\n */\nexport function create() {\n  var out = new glMatrix.ARRAY_TYPE(16);\n  if (glMatrix.ARRAY_TYPE != Float32Array) {\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 0;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 0;\n    out[9] = 0;\n    out[11] = 0;\n    out[12] = 0;\n    out[13] = 0;\n    out[14] = 0;\n  }\n  out[0] = 1;\n  out[5] = 1;\n  out[10] = 1;\n  out[15] = 1;\n  return out;\n}\n\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\nexport function clone(a) {\n  var out = new glMatrix.ARRAY_TYPE(16);\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[3];\n  out[4] = a[4];\n  out[5] = a[5];\n  out[6] = a[6];\n  out[7] = a[7];\n  out[8] = a[8];\n  out[9] = a[9];\n  out[10] = a[10];\n  out[11] = a[11];\n  out[12] = a[12];\n  out[13] = a[13];\n  out[14] = a[14];\n  out[15] = a[15];\n  return out;\n}\n\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\nexport function copy(out, a) {\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[3];\n  out[4] = a[4];\n  out[5] = a[5];\n  out[6] = a[6];\n  out[7] = a[7];\n  out[8] = a[8];\n  out[9] = a[9];\n  out[10] = a[10];\n  out[11] = a[11];\n  out[12] = a[12];\n  out[13] = a[13];\n  out[14] = a[14];\n  out[15] = a[15];\n  return out;\n}\n\n/**\n * Create a new mat4 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} A new mat4\n */\nexport function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n  var out = new glMatrix.ARRAY_TYPE(16);\n  out[0] = m00;\n  out[1] = m01;\n  out[2] = m02;\n  out[3] = m03;\n  out[4] = m10;\n  out[5] = m11;\n  out[6] = m12;\n  out[7] = m13;\n  out[8] = m20;\n  out[9] = m21;\n  out[10] = m22;\n  out[11] = m23;\n  out[12] = m30;\n  out[13] = m31;\n  out[14] = m32;\n  out[15] = m33;\n  return out;\n}\n\n/**\n * Set the components of a mat4 to the given values\n *\n * @param {mat4} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} out\n */\nexport function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n  out[0] = m00;\n  out[1] = m01;\n  out[2] = m02;\n  out[3] = m03;\n  out[4] = m10;\n  out[5] = m11;\n  out[6] = m12;\n  out[7] = m13;\n  out[8] = m20;\n  out[9] = m21;\n  out[10] = m22;\n  out[11] = m23;\n  out[12] = m30;\n  out[13] = m31;\n  out[14] = m32;\n  out[15] = m33;\n  return out;\n}\n\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\nexport function identity(out) {\n  out[0] = 1;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = 1;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = 1;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\nexport function transpose(out, a) {\n  // If we are transposing ourselves we can skip a few steps but have to cache some values\n  if (out === a) {\n    var a01 = a[1],\n      a02 = a[2],\n      a03 = a[3];\n    var a12 = a[6],\n      a13 = a[7];\n    var a23 = a[11];\n    out[1] = a[4];\n    out[2] = a[8];\n    out[3] = a[12];\n    out[4] = a01;\n    out[6] = a[9];\n    out[7] = a[13];\n    out[8] = a02;\n    out[9] = a12;\n    out[11] = a[14];\n    out[12] = a03;\n    out[13] = a13;\n    out[14] = a23;\n  } else {\n    out[0] = a[0];\n    out[1] = a[4];\n    out[2] = a[8];\n    out[3] = a[12];\n    out[4] = a[1];\n    out[5] = a[5];\n    out[6] = a[9];\n    out[7] = a[13];\n    out[8] = a[2];\n    out[9] = a[6];\n    out[10] = a[10];\n    out[11] = a[14];\n    out[12] = a[3];\n    out[13] = a[7];\n    out[14] = a[11];\n    out[15] = a[15];\n  }\n  return out;\n}\n\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4 | null} out, or null if source matrix is not invertible\n */\nexport function invert(out, a) {\n  var a00 = a[0],\n    a01 = a[1],\n    a02 = a[2],\n    a03 = a[3];\n  var a10 = a[4],\n    a11 = a[5],\n    a12 = a[6],\n    a13 = a[7];\n  var a20 = a[8],\n    a21 = a[9],\n    a22 = a[10],\n    a23 = a[11];\n  var a30 = a[12],\n    a31 = a[13],\n    a32 = a[14],\n    a33 = a[15];\n  var b00 = a00 * a11 - a01 * a10;\n  var b01 = a00 * a12 - a02 * a10;\n  var b02 = a00 * a13 - a03 * a10;\n  var b03 = a01 * a12 - a02 * a11;\n  var b04 = a01 * a13 - a03 * a11;\n  var b05 = a02 * a13 - a03 * a12;\n  var b06 = a20 * a31 - a21 * a30;\n  var b07 = a20 * a32 - a22 * a30;\n  var b08 = a20 * a33 - a23 * a30;\n  var b09 = a21 * a32 - a22 * a31;\n  var b10 = a21 * a33 - a23 * a31;\n  var b11 = a22 * a33 - a23 * a32;\n\n  // Calculate the determinant\n  var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n  if (!det) {\n    return null;\n  }\n  det = 1.0 / det;\n  out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n  out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n  out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n  out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n  out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n  out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n  out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n  out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n  out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n  out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n  out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n  out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n  out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n  out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n  out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n  out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n  return out;\n}\n\n/**\n * Calculates the adjugate of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\nexport function adjoint(out, a) {\n  var a00 = a[0],\n    a01 = a[1],\n    a02 = a[2],\n    a03 = a[3];\n  var a10 = a[4],\n    a11 = a[5],\n    a12 = a[6],\n    a13 = a[7];\n  var a20 = a[8],\n    a21 = a[9],\n    a22 = a[10],\n    a23 = a[11];\n  var a30 = a[12],\n    a31 = a[13],\n    a32 = a[14],\n    a33 = a[15];\n  var b00 = a00 * a11 - a01 * a10;\n  var b01 = a00 * a12 - a02 * a10;\n  var b02 = a00 * a13 - a03 * a10;\n  var b03 = a01 * a12 - a02 * a11;\n  var b04 = a01 * a13 - a03 * a11;\n  var b05 = a02 * a13 - a03 * a12;\n  var b06 = a20 * a31 - a21 * a30;\n  var b07 = a20 * a32 - a22 * a30;\n  var b08 = a20 * a33 - a23 * a30;\n  var b09 = a21 * a32 - a22 * a31;\n  var b10 = a21 * a33 - a23 * a31;\n  var b11 = a22 * a33 - a23 * a32;\n  out[0] = a11 * b11 - a12 * b10 + a13 * b09;\n  out[1] = a02 * b10 - a01 * b11 - a03 * b09;\n  out[2] = a31 * b05 - a32 * b04 + a33 * b03;\n  out[3] = a22 * b04 - a21 * b05 - a23 * b03;\n  out[4] = a12 * b08 - a10 * b11 - a13 * b07;\n  out[5] = a00 * b11 - a02 * b08 + a03 * b07;\n  out[6] = a32 * b02 - a30 * b05 - a33 * b01;\n  out[7] = a20 * b05 - a22 * b02 + a23 * b01;\n  out[8] = a10 * b10 - a11 * b08 + a13 * b06;\n  out[9] = a01 * b08 - a00 * b10 - a03 * b06;\n  out[10] = a30 * b04 - a31 * b02 + a33 * b00;\n  out[11] = a21 * b02 - a20 * b04 - a23 * b00;\n  out[12] = a11 * b07 - a10 * b09 - a12 * b06;\n  out[13] = a00 * b09 - a01 * b07 + a02 * b06;\n  out[14] = a31 * b01 - a30 * b03 - a32 * b00;\n  out[15] = a20 * b03 - a21 * b01 + a22 * b00;\n  return out;\n}\n\n/**\n * Calculates the determinant of a mat4\n *\n * @param {ReadonlyMat4} a the source matrix\n * @returns {Number} determinant of a\n */\nexport function determinant(a) {\n  var a00 = a[0],\n    a01 = a[1],\n    a02 = a[2],\n    a03 = a[3];\n  var a10 = a[4],\n    a11 = a[5],\n    a12 = a[6],\n    a13 = a[7];\n  var a20 = a[8],\n    a21 = a[9],\n    a22 = a[10],\n    a23 = a[11];\n  var a30 = a[12],\n    a31 = a[13],\n    a32 = a[14],\n    a33 = a[15];\n  var b0 = a00 * a11 - a01 * a10;\n  var b1 = a00 * a12 - a02 * a10;\n  var b2 = a01 * a12 - a02 * a11;\n  var b3 = a20 * a31 - a21 * a30;\n  var b4 = a20 * a32 - a22 * a30;\n  var b5 = a21 * a32 - a22 * a31;\n  var b6 = a00 * b5 - a01 * b4 + a02 * b3;\n  var b7 = a10 * b5 - a11 * b4 + a12 * b3;\n  var b8 = a20 * b2 - a21 * b1 + a22 * b0;\n  var b9 = a30 * b2 - a31 * b1 + a32 * b0;\n\n  // Calculate the determinant\n  return a13 * b6 - a03 * b7 + a33 * b8 - a23 * b9;\n}\n\n/**\n * Multiplies two mat4s\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\nexport function multiply(out, a, b) {\n  var a00 = a[0],\n    a01 = a[1],\n    a02 = a[2],\n    a03 = a[3];\n  var a10 = a[4],\n    a11 = a[5],\n    a12 = a[6],\n    a13 = a[7];\n  var a20 = a[8],\n    a21 = a[9],\n    a22 = a[10],\n    a23 = a[11];\n  var a30 = a[12],\n    a31 = a[13],\n    a32 = a[14],\n    a33 = a[15];\n\n  // Cache only the current line of the second matrix\n  var b0 = b[0],\n    b1 = b[1],\n    b2 = b[2],\n    b3 = b[3];\n  out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n  out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n  out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n  out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n  b0 = b[4];\n  b1 = b[5];\n  b2 = b[6];\n  b3 = b[7];\n  out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n  out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n  out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n  out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n  b0 = b[8];\n  b1 = b[9];\n  b2 = b[10];\n  b3 = b[11];\n  out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n  out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n  out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n  out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n  b0 = b[12];\n  b1 = b[13];\n  b2 = b[14];\n  b3 = b[15];\n  out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n  out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n  out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n  out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n  return out;\n}\n\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {mat4} out\n */\nexport function translate(out, a, v) {\n  var x = v[0],\n    y = v[1],\n    z = v[2];\n  var a00, a01, a02, a03;\n  var a10, a11, a12, a13;\n  var a20, a21, a22, a23;\n  if (a === out) {\n    out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n    out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n    out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n    out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n  } else {\n    a00 = a[0];\n    a01 = a[1];\n    a02 = a[2];\n    a03 = a[3];\n    a10 = a[4];\n    a11 = a[5];\n    a12 = a[6];\n    a13 = a[7];\n    a20 = a[8];\n    a21 = a[9];\n    a22 = a[10];\n    a23 = a[11];\n    out[0] = a00;\n    out[1] = a01;\n    out[2] = a02;\n    out[3] = a03;\n    out[4] = a10;\n    out[5] = a11;\n    out[6] = a12;\n    out[7] = a13;\n    out[8] = a20;\n    out[9] = a21;\n    out[10] = a22;\n    out[11] = a23;\n    out[12] = a00 * x + a10 * y + a20 * z + a[12];\n    out[13] = a01 * x + a11 * y + a21 * z + a[13];\n    out[14] = a02 * x + a12 * y + a22 * z + a[14];\n    out[15] = a03 * x + a13 * y + a23 * z + a[15];\n  }\n  return out;\n}\n\n/**\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {ReadonlyVec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\nexport function scale(out, a, v) {\n  var x = v[0],\n    y = v[1],\n    z = v[2];\n  out[0] = a[0] * x;\n  out[1] = a[1] * x;\n  out[2] = a[2] * x;\n  out[3] = a[3] * x;\n  out[4] = a[4] * y;\n  out[5] = a[5] * y;\n  out[6] = a[6] * y;\n  out[7] = a[7] * y;\n  out[8] = a[8] * z;\n  out[9] = a[9] * z;\n  out[10] = a[10] * z;\n  out[11] = a[11] * z;\n  out[12] = a[12];\n  out[13] = a[13];\n  out[14] = a[14];\n  out[15] = a[15];\n  return out;\n}\n\n/**\n * Rotates a mat4 by the given angle around the given axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\nexport function rotate(out, a, rad, axis) {\n  var x = axis[0],\n    y = axis[1],\n    z = axis[2];\n  var len = Math.sqrt(x * x + y * y + z * z);\n  var s, c, t;\n  var a00, a01, a02, a03;\n  var a10, a11, a12, a13;\n  var a20, a21, a22, a23;\n  var b00, b01, b02;\n  var b10, b11, b12;\n  var b20, b21, b22;\n  if (len < glMatrix.EPSILON) {\n    return null;\n  }\n  len = 1 / len;\n  x *= len;\n  y *= len;\n  z *= len;\n  s = Math.sin(rad);\n  c = Math.cos(rad);\n  t = 1 - c;\n  a00 = a[0];\n  a01 = a[1];\n  a02 = a[2];\n  a03 = a[3];\n  a10 = a[4];\n  a11 = a[5];\n  a12 = a[6];\n  a13 = a[7];\n  a20 = a[8];\n  a21 = a[9];\n  a22 = a[10];\n  a23 = a[11];\n\n  // Construct the elements of the rotation matrix\n  b00 = x * x * t + c;\n  b01 = y * x * t + z * s;\n  b02 = z * x * t - y * s;\n  b10 = x * y * t - z * s;\n  b11 = y * y * t + c;\n  b12 = z * y * t + x * s;\n  b20 = x * z * t + y * s;\n  b21 = y * z * t - x * s;\n  b22 = z * z * t + c;\n\n  // Perform rotation-specific matrix multiplication\n  out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n  out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n  out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n  out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n  out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n  out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n  out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n  out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n  out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n  out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n  out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n  out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n  if (a !== out) {\n    // If the source and destination differ, copy the unchanged last row\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n  }\n  return out;\n}\n\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nexport function rotateX(out, a, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad);\n  var a10 = a[4];\n  var a11 = a[5];\n  var a12 = a[6];\n  var a13 = a[7];\n  var a20 = a[8];\n  var a21 = a[9];\n  var a22 = a[10];\n  var a23 = a[11];\n  if (a !== out) {\n    // If the source and destination differ, copy the unchanged rows\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    out[3] = a[3];\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n  }\n\n  // Perform axis-specific matrix multiplication\n  out[4] = a10 * c + a20 * s;\n  out[5] = a11 * c + a21 * s;\n  out[6] = a12 * c + a22 * s;\n  out[7] = a13 * c + a23 * s;\n  out[8] = a20 * c - a10 * s;\n  out[9] = a21 * c - a11 * s;\n  out[10] = a22 * c - a12 * s;\n  out[11] = a23 * c - a13 * s;\n  return out;\n}\n\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nexport function rotateY(out, a, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad);\n  var a00 = a[0];\n  var a01 = a[1];\n  var a02 = a[2];\n  var a03 = a[3];\n  var a20 = a[8];\n  var a21 = a[9];\n  var a22 = a[10];\n  var a23 = a[11];\n  if (a !== out) {\n    // If the source and destination differ, copy the unchanged rows\n    out[4] = a[4];\n    out[5] = a[5];\n    out[6] = a[6];\n    out[7] = a[7];\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n  }\n\n  // Perform axis-specific matrix multiplication\n  out[0] = a00 * c - a20 * s;\n  out[1] = a01 * c - a21 * s;\n  out[2] = a02 * c - a22 * s;\n  out[3] = a03 * c - a23 * s;\n  out[8] = a00 * s + a20 * c;\n  out[9] = a01 * s + a21 * c;\n  out[10] = a02 * s + a22 * c;\n  out[11] = a03 * s + a23 * c;\n  return out;\n}\n\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nexport function rotateZ(out, a, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad);\n  var a00 = a[0];\n  var a01 = a[1];\n  var a02 = a[2];\n  var a03 = a[3];\n  var a10 = a[4];\n  var a11 = a[5];\n  var a12 = a[6];\n  var a13 = a[7];\n  if (a !== out) {\n    // If the source and destination differ, copy the unchanged last row\n    out[8] = a[8];\n    out[9] = a[9];\n    out[10] = a[10];\n    out[11] = a[11];\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n  }\n\n  // Perform axis-specific matrix multiplication\n  out[0] = a00 * c + a10 * s;\n  out[1] = a01 * c + a11 * s;\n  out[2] = a02 * c + a12 * s;\n  out[3] = a03 * c + a13 * s;\n  out[4] = a10 * c - a00 * s;\n  out[5] = a11 * c - a01 * s;\n  out[6] = a12 * c - a02 * s;\n  out[7] = a13 * c - a03 * s;\n  return out;\n}\n\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\nexport function fromTranslation(out, v) {\n  out[0] = 1;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = 1;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = 1;\n  out[11] = 0;\n  out[12] = v[0];\n  out[13] = v[1];\n  out[14] = v[2];\n  out[15] = 1;\n  return out;\n}\n\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.scale(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Scaling vector\n * @returns {mat4} out\n */\nexport function fromScaling(out, v) {\n  out[0] = v[0];\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = v[1];\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = v[2];\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.rotate(dest, dest, rad, axis);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\nexport function fromRotation(out, rad, axis) {\n  var x = axis[0],\n    y = axis[1],\n    z = axis[2];\n  var len = Math.sqrt(x * x + y * y + z * z);\n  var s, c, t;\n  if (len < glMatrix.EPSILON) {\n    return null;\n  }\n  len = 1 / len;\n  x *= len;\n  y *= len;\n  z *= len;\n  s = Math.sin(rad);\n  c = Math.cos(rad);\n  t = 1 - c;\n\n  // Perform rotation-specific matrix multiplication\n  out[0] = x * x * t + c;\n  out[1] = y * x * t + z * s;\n  out[2] = z * x * t - y * s;\n  out[3] = 0;\n  out[4] = x * y * t - z * s;\n  out[5] = y * y * t + c;\n  out[6] = z * y * t + x * s;\n  out[7] = 0;\n  out[8] = x * z * t + y * s;\n  out[9] = y * z * t - x * s;\n  out[10] = z * z * t + c;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n\n/**\n * Creates a matrix from the given angle around the X axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.rotateX(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nexport function fromXRotation(out, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad);\n\n  // Perform axis-specific matrix multiplication\n  out[0] = 1;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = c;\n  out[6] = s;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = -s;\n  out[10] = c;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.rotateY(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nexport function fromYRotation(out, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad);\n\n  // Perform axis-specific matrix multiplication\n  out[0] = c;\n  out[1] = 0;\n  out[2] = -s;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = 1;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = s;\n  out[9] = 0;\n  out[10] = c;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.rotateZ(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nexport function fromZRotation(out, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad);\n\n  // Perform axis-specific matrix multiplication\n  out[0] = c;\n  out[1] = s;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = -s;\n  out[5] = c;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = 1;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, dest, vec);\n *     let quatMat = mat4.create();\n *     mat4.fromQuat(quatMat, quat);\n *     mat4.multiply(dest, dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\nexport function fromRotationTranslation(out, q, v) {\n  // Quaternion math\n  var x = q[0],\n    y = q[1],\n    z = q[2],\n    w = q[3];\n  var x2 = x + x;\n  var y2 = y + y;\n  var z2 = z + z;\n  var xx = x * x2;\n  var xy = x * y2;\n  var xz = x * z2;\n  var yy = y * y2;\n  var yz = y * z2;\n  var zz = z * z2;\n  var wx = w * x2;\n  var wy = w * y2;\n  var wz = w * z2;\n  out[0] = 1 - (yy + zz);\n  out[1] = xy + wz;\n  out[2] = xz - wy;\n  out[3] = 0;\n  out[4] = xy - wz;\n  out[5] = 1 - (xx + zz);\n  out[6] = yz + wx;\n  out[7] = 0;\n  out[8] = xz + wy;\n  out[9] = yz - wx;\n  out[10] = 1 - (xx + yy);\n  out[11] = 0;\n  out[12] = v[0];\n  out[13] = v[1];\n  out[14] = v[2];\n  out[15] = 1;\n  return out;\n}\n\n/**\n * Creates a new mat4 from a dual quat.\n *\n * @param {mat4} out Matrix\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @returns {mat4} mat4 receiving operation result\n */\nexport function fromQuat2(out, a) {\n  var translation = new glMatrix.ARRAY_TYPE(3);\n  var bx = -a[0],\n    by = -a[1],\n    bz = -a[2],\n    bw = a[3],\n    ax = a[4],\n    ay = a[5],\n    az = a[6],\n    aw = a[7];\n  var magnitude = bx * bx + by * by + bz * bz + bw * bw;\n  //Only scale if it makes sense\n  if (magnitude > 0) {\n    translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n    translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n    translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n  } else {\n    translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n    translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n    translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n  }\n  fromRotationTranslation(out, a, translation);\n  return out;\n}\n\n/**\n * Returns the translation vector component of a transformation\n *  matrix. If a matrix is built with fromRotationTranslation,\n *  the returned vector will be the same as the translation vector\n *  originally supplied.\n * @param  {vec3} out Vector to receive translation component\n * @param  {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\nexport function getTranslation(out, mat) {\n  out[0] = mat[12];\n  out[1] = mat[13];\n  out[2] = mat[14];\n  return out;\n}\n\n/**\n * Returns the scaling factor component of a transformation\n *  matrix. If a matrix is built with fromRotationTranslationScale\n *  with a normalized Quaternion parameter, the returned vector will be\n *  the same as the scaling vector\n *  originally supplied.\n * @param  {vec3} out Vector to receive scaling factor component\n * @param  {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\nexport function getScaling(out, mat) {\n  var m11 = mat[0];\n  var m12 = mat[1];\n  var m13 = mat[2];\n  var m21 = mat[4];\n  var m22 = mat[5];\n  var m23 = mat[6];\n  var m31 = mat[8];\n  var m32 = mat[9];\n  var m33 = mat[10];\n  out[0] = Math.sqrt(m11 * m11 + m12 * m12 + m13 * m13);\n  out[1] = Math.sqrt(m21 * m21 + m22 * m22 + m23 * m23);\n  out[2] = Math.sqrt(m31 * m31 + m32 * m32 + m33 * m33);\n  return out;\n}\n\n/**\n * Returns a quaternion representing the rotational component\n *  of a transformation matrix. If a matrix is built with\n *  fromRotationTranslation, the returned quaternion will be the\n *  same as the quaternion originally supplied.\n * @param {quat} out Quaternion to receive the rotation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {quat} out\n */\nexport function getRotation(out, mat) {\n  var scaling = new glMatrix.ARRAY_TYPE(3);\n  getScaling(scaling, mat);\n  var is1 = 1 / scaling[0];\n  var is2 = 1 / scaling[1];\n  var is3 = 1 / scaling[2];\n  var sm11 = mat[0] * is1;\n  var sm12 = mat[1] * is2;\n  var sm13 = mat[2] * is3;\n  var sm21 = mat[4] * is1;\n  var sm22 = mat[5] * is2;\n  var sm23 = mat[6] * is3;\n  var sm31 = mat[8] * is1;\n  var sm32 = mat[9] * is2;\n  var sm33 = mat[10] * is3;\n  var trace = sm11 + sm22 + sm33;\n  var S = 0;\n  if (trace > 0) {\n    S = Math.sqrt(trace + 1.0) * 2;\n    out[3] = 0.25 * S;\n    out[0] = (sm23 - sm32) / S;\n    out[1] = (sm31 - sm13) / S;\n    out[2] = (sm12 - sm21) / S;\n  } else if (sm11 > sm22 && sm11 > sm33) {\n    S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n    out[3] = (sm23 - sm32) / S;\n    out[0] = 0.25 * S;\n    out[1] = (sm12 + sm21) / S;\n    out[2] = (sm31 + sm13) / S;\n  } else if (sm22 > sm33) {\n    S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n    out[3] = (sm31 - sm13) / S;\n    out[0] = (sm12 + sm21) / S;\n    out[1] = 0.25 * S;\n    out[2] = (sm23 + sm32) / S;\n  } else {\n    S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n    out[3] = (sm12 - sm21) / S;\n    out[0] = (sm31 + sm13) / S;\n    out[1] = (sm23 + sm32) / S;\n    out[2] = 0.25 * S;\n  }\n  return out;\n}\n\n/**\n * Decomposes a transformation matrix into its rotation, translation\n * and scale components. Returns only the rotation component\n * @param  {quat} out_r Quaternion to receive the rotation component\n * @param  {vec3} out_t Vector to receive the translation vector\n * @param  {vec3} out_s Vector to receive the scaling factor\n * @param  {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @returns {quat} out_r\n */\nexport function decompose(out_r, out_t, out_s, mat) {\n  out_t[0] = mat[12];\n  out_t[1] = mat[13];\n  out_t[2] = mat[14];\n  var m11 = mat[0];\n  var m12 = mat[1];\n  var m13 = mat[2];\n  var m21 = mat[4];\n  var m22 = mat[5];\n  var m23 = mat[6];\n  var m31 = mat[8];\n  var m32 = mat[9];\n  var m33 = mat[10];\n  out_s[0] = Math.sqrt(m11 * m11 + m12 * m12 + m13 * m13);\n  out_s[1] = Math.sqrt(m21 * m21 + m22 * m22 + m23 * m23);\n  out_s[2] = Math.sqrt(m31 * m31 + m32 * m32 + m33 * m33);\n  var is1 = 1 / out_s[0];\n  var is2 = 1 / out_s[1];\n  var is3 = 1 / out_s[2];\n  var sm11 = m11 * is1;\n  var sm12 = m12 * is2;\n  var sm13 = m13 * is3;\n  var sm21 = m21 * is1;\n  var sm22 = m22 * is2;\n  var sm23 = m23 * is3;\n  var sm31 = m31 * is1;\n  var sm32 = m32 * is2;\n  var sm33 = m33 * is3;\n  var trace = sm11 + sm22 + sm33;\n  var S = 0;\n  if (trace > 0) {\n    S = Math.sqrt(trace + 1.0) * 2;\n    out_r[3] = 0.25 * S;\n    out_r[0] = (sm23 - sm32) / S;\n    out_r[1] = (sm31 - sm13) / S;\n    out_r[2] = (sm12 - sm21) / S;\n  } else if (sm11 > sm22 && sm11 > sm33) {\n    S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n    out_r[3] = (sm23 - sm32) / S;\n    out_r[0] = 0.25 * S;\n    out_r[1] = (sm12 + sm21) / S;\n    out_r[2] = (sm31 + sm13) / S;\n  } else if (sm22 > sm33) {\n    S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n    out_r[3] = (sm31 - sm13) / S;\n    out_r[0] = (sm12 + sm21) / S;\n    out_r[1] = 0.25 * S;\n    out_r[2] = (sm23 + sm32) / S;\n  } else {\n    S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n    out_r[3] = (sm12 - sm21) / S;\n    out_r[0] = (sm31 + sm13) / S;\n    out_r[1] = (sm23 + sm32) / S;\n    out_r[2] = 0.25 * S;\n  }\n  return out_r;\n}\n\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, dest, vec);\n *     let quatMat = mat4.create();\n *     mat4.fromQuat(quatMat, quat);\n *     mat4.multiply(dest, dest, quatMat);\n *     mat4.scale(dest, dest, scale)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @returns {mat4} out\n */\nexport function fromRotationTranslationScale(out, q, v, s) {\n  // Quaternion math\n  var x = q[0],\n    y = q[1],\n    z = q[2],\n    w = q[3];\n  var x2 = x + x;\n  var y2 = y + y;\n  var z2 = z + z;\n  var xx = x * x2;\n  var xy = x * y2;\n  var xz = x * z2;\n  var yy = y * y2;\n  var yz = y * z2;\n  var zz = z * z2;\n  var wx = w * x2;\n  var wy = w * y2;\n  var wz = w * z2;\n  var sx = s[0];\n  var sy = s[1];\n  var sz = s[2];\n  out[0] = (1 - (yy + zz)) * sx;\n  out[1] = (xy + wz) * sx;\n  out[2] = (xz - wy) * sx;\n  out[3] = 0;\n  out[4] = (xy - wz) * sy;\n  out[5] = (1 - (xx + zz)) * sy;\n  out[6] = (yz + wx) * sy;\n  out[7] = 0;\n  out[8] = (xz + wy) * sz;\n  out[9] = (yz - wx) * sz;\n  out[10] = (1 - (xx + yy)) * sz;\n  out[11] = 0;\n  out[12] = v[0];\n  out[13] = v[1];\n  out[14] = v[2];\n  out[15] = 1;\n  return out;\n}\n\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, dest, vec);\n *     mat4.translate(dest, dest, origin);\n *     let quatMat = mat4.create();\n *     mat4.fromQuat(quatMat, quat);\n *     mat4.multiply(dest, dest, quatMat);\n *     mat4.scale(dest, dest, scale)\n *     mat4.translate(dest, dest, negativeOrigin);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @param {ReadonlyVec3} o The origin vector around which to scale and rotate\n * @returns {mat4} out\n */\nexport function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n  // Quaternion math\n  var x = q[0],\n    y = q[1],\n    z = q[2],\n    w = q[3];\n  var x2 = x + x;\n  var y2 = y + y;\n  var z2 = z + z;\n  var xx = x * x2;\n  var xy = x * y2;\n  var xz = x * z2;\n  var yy = y * y2;\n  var yz = y * z2;\n  var zz = z * z2;\n  var wx = w * x2;\n  var wy = w * y2;\n  var wz = w * z2;\n  var sx = s[0];\n  var sy = s[1];\n  var sz = s[2];\n  var ox = o[0];\n  var oy = o[1];\n  var oz = o[2];\n  var out0 = (1 - (yy + zz)) * sx;\n  var out1 = (xy + wz) * sx;\n  var out2 = (xz - wy) * sx;\n  var out4 = (xy - wz) * sy;\n  var out5 = (1 - (xx + zz)) * sy;\n  var out6 = (yz + wx) * sy;\n  var out8 = (xz + wy) * sz;\n  var out9 = (yz - wx) * sz;\n  var out10 = (1 - (xx + yy)) * sz;\n  out[0] = out0;\n  out[1] = out1;\n  out[2] = out2;\n  out[3] = 0;\n  out[4] = out4;\n  out[5] = out5;\n  out[6] = out6;\n  out[7] = 0;\n  out[8] = out8;\n  out[9] = out9;\n  out[10] = out10;\n  out[11] = 0;\n  out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n  out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n  out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n  out[15] = 1;\n  return out;\n}\n\n/**\n * Calculates a 4x4 matrix from the given quaternion\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat4} out\n */\nexport function fromQuat(out, q) {\n  var x = q[0],\n    y = q[1],\n    z = q[2],\n    w = q[3];\n  var x2 = x + x;\n  var y2 = y + y;\n  var z2 = z + z;\n  var xx = x * x2;\n  var yx = y * x2;\n  var yy = y * y2;\n  var zx = z * x2;\n  var zy = z * y2;\n  var zz = z * z2;\n  var wx = w * x2;\n  var wy = w * y2;\n  var wz = w * z2;\n  out[0] = 1 - yy - zz;\n  out[1] = yx + wz;\n  out[2] = zx - wy;\n  out[3] = 0;\n  out[4] = yx - wz;\n  out[5] = 1 - xx - zz;\n  out[6] = zy + wx;\n  out[7] = 0;\n  out[8] = zx + wy;\n  out[9] = zy - wx;\n  out[10] = 1 - xx - yy;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\nexport function frustum(out, left, right, bottom, top, near, far) {\n  var rl = 1 / (right - left);\n  var tb = 1 / (top - bottom);\n  var nf = 1 / (near - far);\n  out[0] = near * 2 * rl;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = near * 2 * tb;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = (right + left) * rl;\n  out[9] = (top + bottom) * tb;\n  out[10] = (far + near) * nf;\n  out[11] = -1;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = far * near * 2 * nf;\n  out[15] = 0;\n  return out;\n}\n\n/**\n * Generates a perspective projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\nexport function perspectiveNO(out, fovy, aspect, near, far) {\n  var f = 1.0 / Math.tan(fovy / 2);\n  out[0] = f / aspect;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = f;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[11] = -1;\n  out[12] = 0;\n  out[13] = 0;\n  out[15] = 0;\n  if (far != null && far !== Infinity) {\n    var nf = 1 / (near - far);\n    out[10] = (far + near) * nf;\n    out[14] = 2 * far * near * nf;\n  } else {\n    out[10] = -1;\n    out[14] = -2 * near;\n  }\n  return out;\n}\n\n/**\n * Alias for {@link mat4.perspectiveNO}\n * @function\n */\nexport var perspective = perspectiveNO;\n\n/**\n * Generates a perspective projection matrix suitable for WebGPU with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\nexport function perspectiveZO(out, fovy, aspect, near, far) {\n  var f = 1.0 / Math.tan(fovy / 2);\n  out[0] = f / aspect;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = f;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[11] = -1;\n  out[12] = 0;\n  out[13] = 0;\n  out[15] = 0;\n  if (far != null && far !== Infinity) {\n    var nf = 1 / (near - far);\n    out[10] = far * nf;\n    out[14] = far * near * nf;\n  } else {\n    out[10] = -1;\n    out[14] = -near;\n  }\n  return out;\n}\n\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\nexport function perspectiveFromFieldOfView(out, fov, near, far) {\n  var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n  var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n  var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n  var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n  var xScale = 2.0 / (leftTan + rightTan);\n  var yScale = 2.0 / (upTan + downTan);\n  out[0] = xScale;\n  out[1] = 0.0;\n  out[2] = 0.0;\n  out[3] = 0.0;\n  out[4] = 0.0;\n  out[5] = yScale;\n  out[6] = 0.0;\n  out[7] = 0.0;\n  out[8] = -((leftTan - rightTan) * xScale * 0.5);\n  out[9] = (upTan - downTan) * yScale * 0.5;\n  out[10] = far / (near - far);\n  out[11] = -1.0;\n  out[12] = 0.0;\n  out[13] = 0.0;\n  out[14] = far * near / (near - far);\n  out[15] = 0.0;\n  return out;\n}\n\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\nexport function orthoNO(out, left, right, bottom, top, near, far) {\n  var lr = 1 / (left - right);\n  var bt = 1 / (bottom - top);\n  var nf = 1 / (near - far);\n  out[0] = -2 * lr;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = -2 * bt;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = 2 * nf;\n  out[11] = 0;\n  out[12] = (left + right) * lr;\n  out[13] = (top + bottom) * bt;\n  out[14] = (far + near) * nf;\n  out[15] = 1;\n  return out;\n}\n\n/**\n * Alias for {@link mat4.orthoNO}\n * @function\n */\nexport var ortho = orthoNO;\n\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\nexport function orthoZO(out, left, right, bottom, top, near, far) {\n  var lr = 1 / (left - right);\n  var bt = 1 / (bottom - top);\n  var nf = 1 / (near - far);\n  out[0] = -2 * lr;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = -2 * bt;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = nf;\n  out[11] = 0;\n  out[12] = (left + right) * lr;\n  out[13] = (top + bottom) * bt;\n  out[14] = near * nf;\n  out[15] = 1;\n  return out;\n}\n\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\nexport function lookAt(out, eye, center, up) {\n  var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n  var eyex = eye[0];\n  var eyey = eye[1];\n  var eyez = eye[2];\n  var upx = up[0];\n  var upy = up[1];\n  var upz = up[2];\n  var centerx = center[0];\n  var centery = center[1];\n  var centerz = center[2];\n  if (Math.abs(eyex - centerx) < glMatrix.EPSILON && Math.abs(eyey - centery) < glMatrix.EPSILON && Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n    return identity(out);\n  }\n  z0 = eyex - centerx;\n  z1 = eyey - centery;\n  z2 = eyez - centerz;\n  len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2);\n  z0 *= len;\n  z1 *= len;\n  z2 *= len;\n  x0 = upy * z2 - upz * z1;\n  x1 = upz * z0 - upx * z2;\n  x2 = upx * z1 - upy * z0;\n  len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2);\n  if (!len) {\n    x0 = 0;\n    x1 = 0;\n    x2 = 0;\n  } else {\n    len = 1 / len;\n    x0 *= len;\n    x1 *= len;\n    x2 *= len;\n  }\n  y0 = z1 * x2 - z2 * x1;\n  y1 = z2 * x0 - z0 * x2;\n  y2 = z0 * x1 - z1 * x0;\n  len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2);\n  if (!len) {\n    y0 = 0;\n    y1 = 0;\n    y2 = 0;\n  } else {\n    len = 1 / len;\n    y0 *= len;\n    y1 *= len;\n    y2 *= len;\n  }\n  out[0] = x0;\n  out[1] = y0;\n  out[2] = z0;\n  out[3] = 0;\n  out[4] = x1;\n  out[5] = y1;\n  out[6] = z1;\n  out[7] = 0;\n  out[8] = x2;\n  out[9] = y2;\n  out[10] = z2;\n  out[11] = 0;\n  out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n  out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n  out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n  out[15] = 1;\n  return out;\n}\n\n/**\n * Generates a matrix that makes something look at something else.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} target Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\nexport function targetTo(out, eye, target, up) {\n  var eyex = eye[0],\n    eyey = eye[1],\n    eyez = eye[2],\n    upx = up[0],\n    upy = up[1],\n    upz = up[2];\n  var z0 = eyex - target[0],\n    z1 = eyey - target[1],\n    z2 = eyez - target[2];\n  var len = z0 * z0 + z1 * z1 + z2 * z2;\n  if (len > 0) {\n    len = 1 / Math.sqrt(len);\n    z0 *= len;\n    z1 *= len;\n    z2 *= len;\n  }\n  var x0 = upy * z2 - upz * z1,\n    x1 = upz * z0 - upx * z2,\n    x2 = upx * z1 - upy * z0;\n  len = x0 * x0 + x1 * x1 + x2 * x2;\n  if (len > 0) {\n    len = 1 / Math.sqrt(len);\n    x0 *= len;\n    x1 *= len;\n    x2 *= len;\n  }\n  out[0] = x0;\n  out[1] = x1;\n  out[2] = x2;\n  out[3] = 0;\n  out[4] = z1 * x2 - z2 * x1;\n  out[5] = z2 * x0 - z0 * x2;\n  out[6] = z0 * x1 - z1 * x0;\n  out[7] = 0;\n  out[8] = z0;\n  out[9] = z1;\n  out[10] = z2;\n  out[11] = 0;\n  out[12] = eyex;\n  out[13] = eyey;\n  out[14] = eyez;\n  out[15] = 1;\n  return out;\n}\n\n/**\n * Returns a string representation of a mat4\n *\n * @param {ReadonlyMat4} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\nexport function str(a) {\n  return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\n\n/**\n * Returns Frobenius norm of a mat4\n *\n * @param {ReadonlyMat4} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\nexport function frob(a) {\n  return Math.sqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2] + a[3] * a[3] + a[4] * a[4] + a[5] * a[5] + a[6] * a[6] + a[7] * a[7] + a[8] * a[8] + a[9] * a[9] + a[10] * a[10] + a[11] * a[11] + a[12] * a[12] + a[13] * a[13] + a[14] * a[14] + a[15] * a[15]);\n}\n\n/**\n * Adds two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\nexport function add(out, a, b) {\n  out[0] = a[0] + b[0];\n  out[1] = a[1] + b[1];\n  out[2] = a[2] + b[2];\n  out[3] = a[3] + b[3];\n  out[4] = a[4] + b[4];\n  out[5] = a[5] + b[5];\n  out[6] = a[6] + b[6];\n  out[7] = a[7] + b[7];\n  out[8] = a[8] + b[8];\n  out[9] = a[9] + b[9];\n  out[10] = a[10] + b[10];\n  out[11] = a[11] + b[11];\n  out[12] = a[12] + b[12];\n  out[13] = a[13] + b[13];\n  out[14] = a[14] + b[14];\n  out[15] = a[15] + b[15];\n  return out;\n}\n\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\nexport function subtract(out, a, b) {\n  out[0] = a[0] - b[0];\n  out[1] = a[1] - b[1];\n  out[2] = a[2] - b[2];\n  out[3] = a[3] - b[3];\n  out[4] = a[4] - b[4];\n  out[5] = a[5] - b[5];\n  out[6] = a[6] - b[6];\n  out[7] = a[7] - b[7];\n  out[8] = a[8] - b[8];\n  out[9] = a[9] - b[9];\n  out[10] = a[10] - b[10];\n  out[11] = a[11] - b[11];\n  out[12] = a[12] - b[12];\n  out[13] = a[13] - b[13];\n  out[14] = a[14] - b[14];\n  out[15] = a[15] - b[15];\n  return out;\n}\n\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat4} out\n */\nexport function multiplyScalar(out, a, b) {\n  out[0] = a[0] * b;\n  out[1] = a[1] * b;\n  out[2] = a[2] * b;\n  out[3] = a[3] * b;\n  out[4] = a[4] * b;\n  out[5] = a[5] * b;\n  out[6] = a[6] * b;\n  out[7] = a[7] * b;\n  out[8] = a[8] * b;\n  out[9] = a[9] * b;\n  out[10] = a[10] * b;\n  out[11] = a[11] * b;\n  out[12] = a[12] * b;\n  out[13] = a[13] * b;\n  out[14] = a[14] * b;\n  out[15] = a[15] * b;\n  return out;\n}\n\n/**\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat4} out the receiving vector\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat4} out\n */\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n  out[0] = a[0] + b[0] * scale;\n  out[1] = a[1] + b[1] * scale;\n  out[2] = a[2] + b[2] * scale;\n  out[3] = a[3] + b[3] * scale;\n  out[4] = a[4] + b[4] * scale;\n  out[5] = a[5] + b[5] * scale;\n  out[6] = a[6] + b[6] * scale;\n  out[7] = a[7] + b[7] * scale;\n  out[8] = a[8] + b[8] * scale;\n  out[9] = a[9] + b[9] * scale;\n  out[10] = a[10] + b[10] * scale;\n  out[11] = a[11] + b[11] * scale;\n  out[12] = a[12] + b[12] * scale;\n  out[13] = a[13] + b[13] * scale;\n  out[14] = a[14] + b[14] * scale;\n  out[15] = a[15] + b[15] * scale;\n  return out;\n}\n\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\nexport function exactEquals(a, b) {\n  return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\nexport function equals(a, b) {\n  var a0 = a[0],\n    a1 = a[1],\n    a2 = a[2],\n    a3 = a[3];\n  var a4 = a[4],\n    a5 = a[5],\n    a6 = a[6],\n    a7 = a[7];\n  var a8 = a[8],\n    a9 = a[9],\n    a10 = a[10],\n    a11 = a[11];\n  var a12 = a[12],\n    a13 = a[13],\n    a14 = a[14],\n    a15 = a[15];\n  var b0 = b[0],\n    b1 = b[1],\n    b2 = b[2],\n    b3 = b[3];\n  var b4 = b[4],\n    b5 = b[5],\n    b6 = b[6],\n    b7 = b[7];\n  var b8 = b[8],\n    b9 = b[9],\n    b10 = b[10],\n    b11 = b[11];\n  var b12 = b[12],\n    b13 = b[13],\n    b14 = b[14],\n    b15 = b[15];\n  return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n\n/**\n * Alias for {@link mat4.multiply}\n * @function\n */\nexport var mul = multiply;\n\n/**\n * Alias for {@link mat4.subtract}\n * @function\n */\nexport var sub = subtract;","// maplibre-gl-layers - MapLibre's layer extension library enabling\n// the display, movement, and modification of large numbers of dynamic sprite images\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT\n// https://github.com/kekyo/maplibre-gl-layers\n\nimport { mat4 } from 'gl-matrix';\nimport type { mat4 as Mat4 } from 'gl-matrix';\nimport type { Map as MapLibreMap } from 'maplibre-gl';\n\nimport type { SpriteLocation, SpritePoint } from './types';\nimport type {\n  ClipContext,\n  ProjectionHost,\n  SpriteMercatorCoordinate,\n} from './internalTypes';\nimport { DEG2RAD, EARTH_RADIUS_METERS, TILE_SIZE } from './const';\nimport { multiplyMatrixAndVector } from './math';\n\n//////////////////////////////////////////////////////////////////////////////////////\n\nconst DEFAULT_FOV_DEG = 36.86989764584402; // MapLibre default vertical FOV.\nconst MAX_MERCATOR_LATITUDE = 85.051129;\nconst MAX_MERCATOR_HORIZON_ANGLE = 89.25;\nconst MIN_RENDER_DISTANCE_BELOW_CAMERA = 100;\nconst NEAR_CLIP_DIVISOR = 50;\nconst SIN_DENOMINATOR_EPSILON = 0.01;\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Required projection parameters. These correspond to the MapLibre transform state.\n */\nexport interface ProjectionHostParams {\n  readonly zoom: number;\n  readonly width: number;\n  readonly height: number;\n  readonly center: Readonly<SpriteLocation>;\n  readonly pitchDeg?: number;\n  readonly bearingDeg?: number;\n  readonly rollDeg?: number;\n  readonly fovDeg?: number;\n  readonly centerElevationMeters?: number;\n  readonly minElevationMeters?: number;\n  readonly cameraToCenterDistance?: number;\n  readonly centerOffsetX?: number;\n  readonly centerOffsetY?: number;\n  readonly tileSize?: number;\n  readonly autoCalculateNearFarZ?: boolean;\n  readonly nearZOverride?: number;\n  readonly farZOverride?: number;\n}\n\nexport interface PreparedProjectionState {\n  readonly zoom: number;\n  readonly mercatorMatrix: Mat4 | null;\n  readonly pixelMatrix: Mat4 | null;\n  readonly pixelMatrixInverse: Mat4 | null;\n  readonly worldSize: number;\n  readonly pixelPerMeter: number;\n  readonly cameraToCenterDistance: number;\n  readonly clipContext: ClipContext | null;\n}\n\n//////////////////////////////////////////////////////////////////////////////////////\n\nconst toFiniteOr = (value: number | undefined, fallback: number): number =>\n  Number.isFinite(value) ? (value as number) : fallback;\n\nconst clamp = (value: number, min: number, max: number): number =>\n  Math.min(Math.max(value, min), max);\n\nconst circumferenceAtLatitude = (latitudeDeg: number): number =>\n  2 * Math.PI * EARTH_RADIUS_METERS * Math.cos(latitudeDeg * DEG2RAD);\n\nconst mercatorXfromLng = (lng: number): number => (180 + lng) / 360;\n\nconst mercatorYfromLat = (lat: number): number => {\n  const constrained = clamp(lat, -MAX_MERCATOR_LATITUDE, MAX_MERCATOR_LATITUDE);\n  const radians = constrained * DEG2RAD;\n  return (\n    (180 - (180 / Math.PI) * Math.log(Math.tan(Math.PI / 4 + radians / 2))) /\n    360\n  );\n};\n\nconst mercatorZfromAltitude = (altitude: number, latDeg: number): number =>\n  altitude / circumferenceAtLatitude(latDeg);\n\nconst lngFromMercatorX = (x: number): number => x * 360 - 180;\n\nconst latFromMercatorY = (y: number): number => {\n  const y2 = 180 - y * 360;\n  return (360 / Math.PI) * Math.atan(Math.exp((y2 * Math.PI) / 180)) - 90;\n};\n\nconst projectToWorldCoordinates = (\n  worldSize: number,\n  lng: number,\n  lat: number\n): { readonly x: number; readonly y: number } => ({\n  x: mercatorXfromLng(lng) * worldSize,\n  y: mercatorYfromLat(lat) * worldSize,\n});\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n// Force using float64 precision on the mat4.\nconst createMat4f64 = (): Mat4 => new Float64Array(16) as unknown as Mat4;\nconst createIdentityMat4f64 = (): Mat4 => mat4.identity(createMat4f64());\n\n//////////////////////////////////////////////////////////////////////////////////////\n\nconst getMercatorHorizon = (\n  cameraToCenterDistance: number,\n  pitchDeg: number\n): number => {\n  const pitch = pitchDeg ?? 0;\n  const termA = Math.tan((90 - pitch) * DEG2RAD) * 0.85;\n  const termB = Math.tan((MAX_MERCATOR_HORIZON_ANGLE - pitch) * DEG2RAD);\n  const factor = Math.min(termA, termB);\n  return cameraToCenterDistance * (Number.isFinite(factor) ? factor : 0);\n};\n\nconst calculateNearFarZ = (\n  params: ProjectionHostParams,\n  cameraToCenterDistance: number,\n  cameraToSeaLevelDistance: number,\n  pixelPerMeter: number,\n  pitchRad: number,\n  limitedPitchRad: number,\n  rollRad: number\n): { nearZ: number; farZ: number } => {\n  const width = Math.max(0, params.width);\n  const height = Math.max(0, params.height);\n  const pitchDeg = toFiniteOr(params.pitchDeg, 0);\n  const offsetY = toFiniteOr(params.centerOffsetY, 0);\n  const fovDeg = toFiniteOr(params.fovDeg, DEFAULT_FOV_DEG);\n  const centerElevation = toFiniteOr(params.centerElevationMeters, 0);\n  const minElevation = toFiniteOr(params.minElevationMeters, centerElevation);\n  const cameraAltitude =\n    (Math.cos(pitchRad) * (cameraToCenterDistance || 1)) /\n      (pixelPerMeter || 1) +\n    centerElevation;\n\n  const nearZOverride = params.nearZOverride;\n  const farZOverride = params.farZOverride;\n  const autoCalculate = params.autoCalculateNearFarZ !== false;\n\n  const effectiveNear =\n    Number.isFinite(nearZOverride) && (nearZOverride as number) > 0\n      ? (nearZOverride as number)\n      : Math.max(height / NEAR_CLIP_DIVISOR, 1e-3);\n\n  const effectiveFarOverride =\n    Number.isFinite(farZOverride) && (farZOverride as number) > 0\n      ? (farZOverride as number)\n      : undefined;\n\n  if (!autoCalculate && effectiveFarOverride !== undefined) {\n    return {\n      nearZ: effectiveNear,\n      farZ: Math.max(effectiveFarOverride, effectiveNear * 1.5),\n    };\n  }\n\n  const minElevationForScene = Math.min(\n    centerElevation,\n    minElevation,\n    cameraAltitude - MIN_RENDER_DISTANCE_BELOW_CAMERA\n  );\n\n  const lowestPlane =\n    minElevationForScene < 0\n      ? cameraToSeaLevelDistance -\n        (minElevationForScene * pixelPerMeter) / Math.cos(limitedPitchRad)\n      : cameraToSeaLevelDistance;\n\n  const groundAngle = Math.PI / 2 + pitchRad;\n  const fovRad = fovDeg * DEG2RAD;\n  const rollCos = Math.cos(rollRad);\n  const rollSin = Math.sin(rollRad);\n  const horizon = getMercatorHorizon(cameraToCenterDistance, pitchDeg);\n  const horizonAngle = Math.atan(\n    horizon / (cameraToCenterDistance || Number.EPSILON)\n  );\n  const minFovCenterToHorizonRadians =\n    (90 - MAX_MERCATOR_HORIZON_ANGLE) * DEG2RAD;\n\n  const zfov =\n    fovRad *\n    ((Math.abs(rollCos) * height + Math.abs(rollSin) * width) / height);\n  const fovAboveCenter = zfov * (0.5 + offsetY / height);\n\n  const clampDenominator = clamp(\n    Math.PI - groundAngle - fovAboveCenter,\n    SIN_DENOMINATOR_EPSILON,\n    Math.PI - SIN_DENOMINATOR_EPSILON\n  );\n  const topHalfSurfaceDistance =\n    (Math.sin(fovAboveCenter) * lowestPlane) / Math.sin(clampDenominator);\n\n  const offsetFactorHorizon =\n    horizon === 0 ? 0.5 : 0.5 + offsetY / (Math.abs(horizon) * 2);\n  const fovCenterToHorizon =\n    Number.isFinite(horizonAngle) && horizonAngle > minFovCenterToHorizonRadians\n      ? 2 * horizonAngle * offsetFactorHorizon\n      : minFovCenterToHorizonRadians;\n\n  const clampDenominatorHorizon = clamp(\n    Math.PI - groundAngle - fovCenterToHorizon,\n    SIN_DENOMINATOR_EPSILON,\n    Math.PI - SIN_DENOMINATOR_EPSILON\n  );\n  const topHalfSurfaceDistanceHorizon =\n    (Math.sin(fovCenterToHorizon) * lowestPlane) /\n    Math.sin(clampDenominatorHorizon);\n\n  const validSurface = Number.isFinite(topHalfSurfaceDistance)\n    ? topHalfSurfaceDistance\n    : Number.POSITIVE_INFINITY;\n  const validHorizon = Number.isFinite(topHalfSurfaceDistanceHorizon)\n    ? topHalfSurfaceDistanceHorizon\n    : Number.POSITIVE_INFINITY;\n  const topHalfMinDistance = Math.min(validSurface, validHorizon);\n\n  const farCandidate =\n    (Math.cos(Math.PI / 2 - limitedPitchRad) * topHalfMinDistance +\n      lowestPlane) *\n    1.01;\n\n  const farZ =\n    effectiveFarOverride ??\n    (Number.isFinite(farCandidate) && farCandidate > effectiveNear\n      ? farCandidate\n      : Math.max(cameraToSeaLevelDistance * 1.5, effectiveNear * 2));\n\n  return {\n    nearZ: effectiveNear,\n    farZ,\n  };\n};\n\nexport const prepareProjectionState = (\n  params: ProjectionHostParams\n): PreparedProjectionState => {\n  const width = Math.max(0, params.width);\n  const height = Math.max(0, params.height);\n  const zoom = toFiniteOr(params.zoom, 0);\n\n  if (width <= 0 || height <= 0) {\n    return {\n      zoom,\n      mercatorMatrix: null,\n      pixelMatrix: null,\n      pixelMatrixInverse: null,\n      worldSize: 0,\n      pixelPerMeter: 0,\n      cameraToCenterDistance: 0,\n      clipContext: null,\n    };\n  }\n\n  const tileSize = Math.max(toFiniteOr(params.tileSize, TILE_SIZE), 1);\n  const scale = 2 ** zoom;\n  const worldSize = tileSize * scale;\n\n  const centerLng = toFiniteOr(params.center.lng, 0);\n  const centerLat = clamp(\n    toFiniteOr(params.center.lat, 0),\n    -MAX_MERCATOR_LATITUDE,\n    MAX_MERCATOR_LATITUDE\n  );\n  const centerElevation = toFiniteOr(params.centerElevationMeters, 0);\n  const minElevation = toFiniteOr(params.minElevationMeters, centerElevation);\n\n  const pitchDeg = toFiniteOr(params.pitchDeg, 0);\n  const bearingDeg = toFiniteOr(params.bearingDeg, 0);\n  const rollDeg = toFiniteOr(params.rollDeg, 0);\n  const fovDeg = toFiniteOr(params.fovDeg, DEFAULT_FOV_DEG);\n\n  const pitchRad = pitchDeg * DEG2RAD;\n  const bearingRad = bearingDeg * DEG2RAD;\n  const rollRad = rollDeg * DEG2RAD;\n  const fovRad = fovDeg * DEG2RAD;\n\n  const limitedPitchRad =\n    Math.min(Math.max(pitchDeg, 0), MAX_MERCATOR_HORIZON_ANGLE) * DEG2RAD;\n\n  const pixelPerMeter =\n    mercatorZfromAltitude(1, centerLat || 0) * worldSize || 1;\n\n  const cameraToCenterDistance =\n    toFiniteOr(\n      params.cameraToCenterDistance,\n      (0.5 / Math.tan(Math.max(fovRad / 2, 1e-6))) * height\n    ) || 1;\n\n  const offsetX = toFiniteOr(params.centerOffsetX, 0);\n  const offsetY = toFiniteOr(params.centerOffsetY, 0);\n\n  const centerWorld = projectToWorldCoordinates(\n    worldSize,\n    centerLng,\n    centerLat\n  );\n\n  const cameraToSeaLevelDistance = Math.max(\n    cameraToCenterDistance / 2,\n    cameraToCenterDistance +\n      (centerElevation * pixelPerMeter) / Math.cos(limitedPitchRad)\n  );\n\n  const { nearZ, farZ } = calculateNearFarZ(\n    {\n      ...params,\n      centerElevationMeters: centerElevation,\n      minElevationMeters: minElevation,\n    },\n    cameraToCenterDistance,\n    cameraToSeaLevelDistance,\n    pixelPerMeter,\n    pitchRad,\n    limitedPitchRad,\n    rollRad\n  );\n\n  const perspective = mat4.perspective(\n    createMat4f64(),\n    fovRad,\n    width / height,\n    Math.max(nearZ, 1e-6),\n    Math.max(farZ, nearZ + 1e-3)\n  );\n\n  perspective[8] = (-offsetX * 2) / width;\n  perspective[9] = (offsetY * 2) / height;\n\n  const worldMatrix = mat4.copy(createMat4f64(), perspective);\n  mat4.scale(worldMatrix, worldMatrix, [1, -1, 1]);\n  mat4.translate(worldMatrix, worldMatrix, [0, 0, -cameraToCenterDistance]);\n  mat4.rotateZ(worldMatrix, worldMatrix, -rollRad);\n  mat4.rotateX(worldMatrix, worldMatrix, pitchRad);\n  mat4.rotateZ(worldMatrix, worldMatrix, -bearingRad);\n  mat4.translate(worldMatrix, worldMatrix, [-centerWorld.x, -centerWorld.y, 0]);\n\n  const mercatorMatrix = mat4.scale(createMat4f64(), worldMatrix, [\n    worldSize,\n    worldSize,\n    worldSize,\n  ]);\n\n  mat4.scale(worldMatrix, worldMatrix, [1, 1, pixelPerMeter]);\n\n  const clipSpaceToPixelsMatrix = createIdentityMat4f64();\n  mat4.scale(clipSpaceToPixelsMatrix, clipSpaceToPixelsMatrix, [\n    width / 2,\n    -height / 2,\n    1,\n  ]);\n  mat4.translate(clipSpaceToPixelsMatrix, clipSpaceToPixelsMatrix, [1, -1, 0]);\n\n  const pixelMatrix = mat4.multiply(\n    createMat4f64(),\n    clipSpaceToPixelsMatrix,\n    worldMatrix\n  );\n\n  const pixelMatrixInverse = mat4.invert(createMat4f64(), pixelMatrix) ?? null;\n\n  const clipContext: ClipContext | null = mercatorMatrix\n    ? { mercatorMatrix }\n    : null;\n\n  return {\n    zoom,\n    mercatorMatrix,\n    pixelMatrix,\n    pixelMatrixInverse,\n    worldSize,\n    pixelPerMeter,\n    cameraToCenterDistance,\n    clipContext,\n  };\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a pure calculation projection host.\n * @param params Projection parameters\n * @returns Projection host\n */\nexport const createProjectionHost = (\n  params: ProjectionHostParams\n): ProjectionHost => {\n  let state = prepareProjectionState(params);\n\n  /**\n   * Get current zoom level.\n   * @returns Zoom level.\n   */\n  const getZoom = (): number => state.zoom;\n\n  /**\n   * Extracts the current clip-space context if the mercator matrix is available.\n   * @returns {ClipContext | null} Clip context or `null` when the transform is not ready.\n   */\n  const getClipContext = (): ClipContext | null => state.clipContext;\n\n  /**\n   * Get mercator coordinate from the location\n   * @param location Location.\n   * @returns Mercator coordinate.\n   */\n  const fromLngLat = (\n    location: Readonly<SpriteLocation>\n  ): SpriteMercatorCoordinate => {\n    const lng = toFiniteOr(location.lng, 0);\n    const lat = clamp(\n      toFiniteOr(location.lat, 0),\n      -MAX_MERCATOR_LATITUDE,\n      MAX_MERCATOR_LATITUDE\n    );\n    const altitude = toFiniteOr(location.z, 0);\n    return {\n      x: mercatorXfromLng(lng),\n      y: mercatorYfromLat(lat),\n      z: mercatorZfromAltitude(altitude, lat),\n    };\n  };\n\n  /**\n   * Project the location.\n   * @param location Location.\n   * @returns Projected point if valid location.\n   */\n  const project = (location: Readonly<SpriteLocation>): SpritePoint | null => {\n    if (!state.pixelMatrix) {\n      return null;\n    }\n    const mercator = fromLngLat(location);\n    const worldX = mercator.x * state.worldSize;\n    const worldY = mercator.y * state.worldSize;\n    const elevation = toFiniteOr(location.z, 0);\n\n    const [x, y, , w] = multiplyMatrixAndVector(\n      state.pixelMatrix,\n      worldX,\n      worldY,\n      elevation,\n      1\n    );\n\n    if (!Number.isFinite(w) || w <= 0) {\n      return null;\n    }\n\n    const projectedX = x / w;\n    const projectedY = y / w;\n\n    if (!Number.isFinite(projectedX) || !Number.isFinite(projectedY)) {\n      return null;\n    }\n\n    return { x: projectedX, y: projectedY };\n  };\n\n  /**\n   * Unproject the location.\n   * @param point Projected point.\n   * @returns Location if valid point.\n   */\n  const unproject = (point: Readonly<SpritePoint>): SpriteLocation | null => {\n    if (!state.pixelMatrixInverse) {\n      return null;\n    }\n\n    const coord0 = multiplyMatrixAndVector(\n      state.pixelMatrixInverse,\n      toFiniteOr(point.x, 0),\n      toFiniteOr(point.y, 0),\n      0,\n      1\n    );\n    const coord1 = multiplyMatrixAndVector(\n      state.pixelMatrixInverse,\n      toFiniteOr(point.x, 0),\n      toFiniteOr(point.y, 0),\n      1,\n      1\n    );\n\n    const w0 = coord0[3];\n    const w1 = coord1[3];\n\n    if (!Number.isFinite(w0) || !Number.isFinite(w1) || w0 === 0 || w1 === 0) {\n      return null;\n    }\n\n    const x0 = coord0[0] / w0;\n    const x1 = coord1[0] / w1;\n    const y0 = coord0[1] / w0;\n    const y1 = coord1[1] / w1;\n    const z0 = coord0[2] / w0;\n    const z1 = coord1[2] / w1;\n\n    const targetZ = 0;\n    const t = z0 === z1 ? 0 : (targetZ - z0) / (z1 - z0);\n\n    const worldX = x0 + (x1 - x0) * t;\n    const worldY = y0 + (y1 - y0) * t;\n\n    const mercatorX = worldX / (state.worldSize || 1);\n    const mercatorY = worldY / (state.worldSize || 1);\n\n    if (!Number.isFinite(mercatorX) || !Number.isFinite(mercatorY)) {\n      return null;\n    }\n\n    return {\n      lng: lngFromMercatorX(mercatorX),\n      lat: clamp(\n        latFromMercatorY(mercatorY),\n        -MAX_MERCATOR_LATITUDE,\n        MAX_MERCATOR_LATITUDE\n      ),\n    };\n  };\n\n  /**\n   * Calculate perspective ratio.\n   * @param location Location.\n   * @param cachedMercator Mercator coodinate when available earlier calculation.\n   * @returns The ratio.\n   */\n  const calculatePerspectiveRatio = (\n    location: Readonly<SpriteLocation>,\n    cachedMercator?: SpriteMercatorCoordinate\n  ): number => {\n    if (!state.mercatorMatrix || state.cameraToCenterDistance <= 0) {\n      return 1;\n    }\n\n    try {\n      const mercator = cachedMercator ?? fromLngLat(location as SpriteLocation);\n      const [, , , w] = multiplyMatrixAndVector(\n        state.mercatorMatrix,\n        mercator.x,\n        mercator.y,\n        mercator.z ?? 0,\n        1\n      );\n      if (!Number.isFinite(w) || w <= 0) {\n        return 1;\n      }\n      const ratio = state.cameraToCenterDistance / w;\n      return Number.isFinite(ratio) && ratio > 0 ? ratio : 1;\n    } catch {\n      return 1;\n    }\n  };\n\n  const release = () => {\n    state = undefined!;\n  };\n\n  return {\n    getZoom,\n    getClipContext,\n    fromLngLat,\n    project,\n    unproject,\n    calculatePerspectiveRatio,\n    release,\n  };\n};\n\n/**\n * Extract current MapLibre transform parameters into {@link ProjectionHostParams}.\n * Falls back to safe defaults when certain transform fields are unavailable.\n * @param map MapLibre map instance.\n * @returns Projection parameters usable by {@link createProjectionHost}.\n */\nexport const createProjectionHostParamsFromMapLibre = (\n  map: MapLibreMap\n): ProjectionHostParams => {\n  const ensureFinite = (value: unknown): number | undefined =>\n    typeof value === 'number' && Number.isFinite(value)\n      ? (value as number)\n      : undefined;\n\n  const centerLngLat = map.getCenter();\n  const transform: any = (map as unknown as { transform?: unknown }).transform;\n  const canvas =\n    typeof map.getCanvas === 'function' ? (map.getCanvas() ?? null) : null;\n\n  // Provide minimal fallback when the transform is not ready yet.\n  if (!transform) {\n    return {\n      zoom: ensureFinite(map.getZoom()) ?? 0,\n      width: ensureFinite(canvas?.width) ?? 0,\n      height: ensureFinite(canvas?.height) ?? 0,\n      center: { lng: centerLngLat.lng, lat: centerLngLat.lat },\n    };\n  }\n\n  const width =\n    ensureFinite(transform.width) ?? ensureFinite(canvas?.width) ?? 0;\n  const height =\n    ensureFinite(transform.height) ?? ensureFinite(canvas?.height) ?? 0;\n  const zoom = ensureFinite(transform.zoom) ?? ensureFinite(map.getZoom()) ?? 0;\n  const pitchDeg =\n    ensureFinite(transform.pitch) ?? ensureFinite(map.getPitch());\n  const bearingDeg =\n    ensureFinite(transform.bearing) ?? ensureFinite(map.getBearing());\n  const rollDeg = ensureFinite(transform.roll);\n  const fovDeg = ensureFinite(transform.fov);\n  const centerElevation = ensureFinite(transform.elevation);\n  const minElevation = ensureFinite(transform.minElevationForCurrentTile);\n  const cameraToCenterDistance = ensureFinite(transform.cameraToCenterDistance);\n  const centerOffset = transform.centerOffset;\n  const centerOffsetX = ensureFinite(centerOffset?.x);\n  const centerOffsetY = ensureFinite(centerOffset?.y);\n  const tileSize = ensureFinite(transform.tileSize);\n  const autoCalculateNearFarZ =\n    typeof transform.autoCalculateNearFarZ === 'boolean'\n      ? (transform.autoCalculateNearFarZ as boolean)\n      : undefined;\n  const nearZOverride =\n    autoCalculateNearFarZ === false ? ensureFinite(transform.nearZ) : undefined;\n  const farZOverride =\n    autoCalculateNearFarZ === false ? ensureFinite(transform.farZ) : undefined;\n\n  return {\n    zoom,\n    width,\n    height,\n    center: {\n      lng: centerLngLat.lng,\n      lat: centerLngLat.lat,\n    },\n    ...(pitchDeg !== undefined ? { pitchDeg } : {}),\n    ...(bearingDeg !== undefined ? { bearingDeg } : {}),\n    ...(rollDeg !== undefined ? { rollDeg } : {}),\n    ...(fovDeg !== undefined ? { fovDeg } : {}),\n    ...(centerElevation !== undefined\n      ? { centerElevationMeters: centerElevation }\n      : {}),\n    ...(minElevation !== undefined ? { minElevationMeters: minElevation } : {}),\n    ...(cameraToCenterDistance !== undefined ? { cameraToCenterDistance } : {}),\n    ...(centerOffsetX !== undefined ? { centerOffsetX } : {}),\n    ...(centerOffsetY !== undefined ? { centerOffsetY } : {}),\n    ...(tileSize !== undefined ? { tileSize } : {}),\n    ...(autoCalculateNearFarZ !== undefined ? { autoCalculateNearFarZ } : {}),\n    ...(nearZOverride !== undefined ? { nearZOverride } : {}),\n    ...(farZOverride !== undefined ? { farZOverride } : {}),\n  };\n};\n","// maplibre-gl-layers - MapLibre's layer extension library enabling\n// the display, movement, and modification of large numbers of dynamic sprite images\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT\n// https://github.com/kekyo/maplibre-gl-layers\n\n/** Debug flag */\nexport const SL_DEBUG = false;\n\n/** Enables the upcoming shader-based billboard corner computation when true. */\nexport const USE_SHADER_BILLBOARD_GEOMETRY = true;\n\n/** Enables the upcoming shader-based surface corner computation when true. */\nexport const USE_SHADER_SURFACE_GEOMETRY = true;\n\n/** Whether to enable the NDC bias for surface rendering (disabled by default). */\nexport const ENABLE_NDC_BIAS_SURFACE = true;\n\n/** Maximum number of atlas operations handled per processing pass. */\nexport const ATLAS_QUEUE_CHUNK_SIZE = 64;\n\n/** Time budget (milliseconds) spent per atlas queue processing pass. */\nexport const ATLAS_QUEUE_TIME_BUDGET_MS = 20;\n\n/** Maximum number of text glyph jobs handled per processing pass. */\nexport const TEXT_GLYPH_QUEUE_CHUNK_SIZE = 16;\n\n/** Time budget (milliseconds) spent on text glyph generation per pass. */\nexport const TEXT_GLYPH_QUEUE_TIME_BUDGET_MS = 20;\n","// maplibre-gl-layers - MapLibre's layer extension library enabling\n// the display, movement, and modification of large numbers of dynamic sprite images\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT\n// https://github.com/kekyo/maplibre-gl-layers\n\nimport {\n  prepareProjectionState,\n  type PreparedProjectionState,\n  type ProjectionHostParams,\n} from './projectionHost';\nimport type { ProjectionHost, SpriteMercatorCoordinate } from './internalTypes';\nimport type { SpriteLocation, SpritePoint } from './types';\nimport { prepareWasmHost, type WasmHost } from './wasmHost';\n\n//////////////////////////////////////////////////////////////////////////////////////\n\nconst WASM_FromLngLat_RESULT_ELEMENT_COUNT = 3;\n\n/**\n * Create `fromLngLat` delegator.\n * @param wasm Wasm hosted reference.\n * @returns fromLngLat function object.\n */\nconst createFromLngLat = (wasm: WasmHost) => {\n  // Allocate a result buffer.\n  const resultHolder = wasm.allocateTypedBuffer(\n    Float64Array,\n    WASM_FromLngLat_RESULT_ELEMENT_COUNT\n  );\n\n  // `fromLngLat` delegation body\n  const fromLngLat = (\n    location: Readonly<SpriteLocation>\n  ): SpriteMercatorCoordinate => {\n    // Prepare the result buffer.\n    const { ptr, buffer } = resultHolder.prepare();\n\n    // Call wasm entry point.\n    wasm.fromLngLat(location.lng, location.lat, location.z ?? 0, ptr);\n\n    // Extract results from the wasm buffer.\n    const x = buffer[0]!;\n    const y = buffer[1]!;\n    const z = buffer[2]!;\n\n    return { x, y, z };\n  };\n\n  // Attach releaser\n  fromLngLat.release = resultHolder.release;\n\n  return fromLngLat;\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\nconst WASM_Project_CONTEXT_ELEMENT_COUNT = 16;\nconst WASM_Project_RESULT_ELEMENT_COUNT = 2;\n\n/**\n * Create `project` delegator.\n * @param wasm Wasm hosted reference.\n * @returns project function object.\n */\nconst createProject = (\n  wasm: WasmHost,\n  preparedState: PreparedProjectionState\n) => {\n  // Short-circuit.\n  if (\n    !preparedState.pixelMatrix ||\n    preparedState.pixelMatrix.length !== WASM_Project_CONTEXT_ELEMENT_COUNT\n  ) {\n    const d = (\n      _location: Readonly<SpriteLocation>,\n      _cachedMercator?: SpriteMercatorCoordinate\n    ) => null;\n    d.release = () => {};\n    return d;\n  }\n\n  // Allocate a matrix buffer.\n  const matrixHolder = wasm.allocateTypedBuffer(\n    Float64Array,\n    preparedState.pixelMatrix\n  );\n\n  // Allocate a result buffer.\n  const resultHolder = wasm.allocateTypedBuffer(\n    Float64Array,\n    WASM_Project_RESULT_ELEMENT_COUNT\n  );\n\n  // `project` delegation body\n  const project = (location: Readonly<SpriteLocation>): SpritePoint | null => {\n    // Prepare the matrix buffer.\n    const { ptr: matrixPtr } = matrixHolder.prepare();\n    // Prepare the result buffer.\n    const { ptr: resultPtr, buffer: result } = resultHolder.prepare();\n\n    // Call wasm entry point.\n    if (\n      wasm.project(\n        location.lng,\n        location.lat,\n        location.z ?? 0,\n        preparedState.worldSize,\n        matrixPtr,\n        resultPtr\n      )\n    ) {\n      // Extract results from the wasm buffer.\n      const x = result[0]!;\n      const y = result[1]!;\n\n      return { x, y };\n    } else {\n      return null;\n    }\n  };\n\n  // Attach releaser\n  project.release = () => {\n    matrixHolder.release();\n    resultHolder.release();\n  };\n\n  return project;\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\nconst WASM_Unproject_CONTEXT_ELEMENT_COUNT = 16;\nconst WASM_Unproject_RESULT_ELEMENT_COUNT = 2;\n\n/**\n * Create `unproject` delegator.\n * @param wasm Wasm hosted reference.\n * @param preparedState Prepared projection state.\n * @returns unproject function object.\n */\nconst createUnproject = (\n  wasm: WasmHost,\n  preparedState: PreparedProjectionState\n) => {\n  // Short-circuit.\n  if (\n    !preparedState.pixelMatrixInverse ||\n    preparedState.pixelMatrixInverse.length !==\n      WASM_Unproject_CONTEXT_ELEMENT_COUNT\n  ) {\n    const d = (_point: Readonly<SpritePoint>) => null;\n    d.release = () => {};\n    return d;\n  }\n\n  // Allocate a matrix buffer.\n  const matrixHolder = wasm.allocateTypedBuffer(\n    Float64Array,\n    preparedState.pixelMatrixInverse\n  );\n\n  // Allocate a result buffer.\n  const resultHolder = wasm.allocateTypedBuffer(\n    Float64Array,\n    WASM_Unproject_RESULT_ELEMENT_COUNT\n  );\n\n  // `unproject` delegation body\n  const unproject = (point: Readonly<SpritePoint>): SpriteLocation | null => {\n    // Prepare the matrix buffer.\n    const { ptr: matrixPtr } = matrixHolder.prepare();\n    // Prepare the result buffer.\n    const { ptr: resultPtr, buffer: result } = resultHolder.prepare();\n\n    if (\n      wasm.unproject(\n        point.x,\n        point.y,\n        preparedState.worldSize,\n        matrixPtr,\n        resultPtr\n      )\n    ) {\n      const lng = result[0]!;\n      const lat = result[1]!;\n\n      return { lng, lat };\n    } else {\n      return null;\n    }\n  };\n\n  // Attach releaser\n  unproject.release = () => {\n    matrixHolder.release();\n    resultHolder.release();\n  };\n\n  return unproject;\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\nconst WASM_CalculatePerspectiveRatio_CONTEXT_ELEMENT_COUNT = 16;\nconst WASM_CalculatePerspectiveRatio_CACHED_MERCATOR_ELEMENT_COUNT = 3;\nconst WASM_CalculatePerspectiveRatio_RESULT_ELEMENT_COUNT = 1;\n\n/**\n * Create `calculatePerspectiveRatio` delegator.\n * @param wasm Wasm hosted reference.\n * @param preparedState Prepared projection state.\n * @param fromLngLat Wasm-backed fromLngLat delegator.\n * @returns calculatePerspectiveRatio function object.\n */\nconst createCalculatePerspectiveRatio = (\n  wasm: WasmHost,\n  preparedState: PreparedProjectionState\n) => {\n  // Short-circuit.\n  if (\n    !preparedState.mercatorMatrix ||\n    preparedState.mercatorMatrix.length !==\n      WASM_CalculatePerspectiveRatio_CONTEXT_ELEMENT_COUNT ||\n    preparedState.cameraToCenterDistance <= 0\n  ) {\n    const d = (\n      _location: Readonly<SpriteLocation>,\n      _cachedMercator?: SpriteMercatorCoordinate\n    ) => 1;\n    d.release = () => {};\n    return d;\n  }\n\n  const matrixHolder = wasm.allocateTypedBuffer(\n    Float64Array,\n    preparedState.mercatorMatrix\n  );\n\n  const cachedMercatorHolder = wasm.allocateTypedBuffer(\n    Float64Array,\n    WASM_CalculatePerspectiveRatio_CACHED_MERCATOR_ELEMENT_COUNT\n  );\n\n  const resultHolder = wasm.allocateTypedBuffer(\n    Float64Array,\n    WASM_CalculatePerspectiveRatio_RESULT_ELEMENT_COUNT\n  );\n\n  // `calculatePerspectiveRatio` delegation body\n  const calculatePerspectiveRatio = (\n    location: Readonly<SpriteLocation>,\n    cachedMercator?: SpriteMercatorCoordinate\n  ): number => {\n    if (cachedMercator) {\n      const { ptr: matrixPtr } = matrixHolder.prepare();\n      const { ptr: cachedMercatorPtr, buffer: cachedMercatorBuffer } =\n        cachedMercatorHolder.prepare();\n      const { ptr: resultPtr, buffer: result } = resultHolder.prepare();\n\n      cachedMercatorBuffer[0] = cachedMercator.x;\n      cachedMercatorBuffer[1] = cachedMercator.y;\n      cachedMercatorBuffer[2] = cachedMercator.z;\n\n      if (\n        wasm.calculatePerspectiveRatio(\n          location.lng,\n          location.lat,\n          location.z ?? 0,\n          cachedMercatorPtr,\n          preparedState.cameraToCenterDistance,\n          matrixPtr,\n          resultPtr\n        )\n      ) {\n        const ratio = result[0]!;\n        return ratio;\n      } else {\n        return 1;\n      }\n    } else {\n      const { ptr: matrixPtr } = matrixHolder.prepare();\n      const { ptr: resultPtr, buffer: result } = resultHolder.prepare();\n\n      if (\n        wasm.calculatePerspectiveRatio(\n          location.lng,\n          location.lat,\n          location.z ?? 0,\n          0,\n          preparedState.cameraToCenterDistance,\n          matrixPtr,\n          resultPtr\n        )\n      ) {\n        const ratio = result[0]!;\n        return ratio;\n      } else {\n        return 1;\n      }\n    }\n  };\n\n  // Attach releaser\n  calculatePerspectiveRatio.release = () => {\n    matrixHolder.release();\n    cachedMercatorHolder.release();\n    resultHolder.release();\n  };\n\n  return calculatePerspectiveRatio;\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create wasm-based calculation projection host.\n * @param params Projection parameters\n * @returns Projection host\n * @remarks This needs using before initialization (initializeWasmHost function)\n */\nexport const createWasmProjectionHost = (\n  params: ProjectionHostParams\n): ProjectionHost => {\n  // Get wasm host.\n  const wasm = prepareWasmHost();\n\n  // Prepare parameters.\n  const preparedState = prepareProjectionState(params);\n\n  //----------------------------------------------------------\n\n  // Member: fromLngLat\n  const fromLngLat = createFromLngLat(wasm);\n\n  // Member: project\n  const project = createProject(wasm, preparedState);\n\n  // Member: unproject\n  const unproject = createUnproject(wasm, preparedState);\n\n  // Member: calculatePerspectiveRatio\n  const calculatePerspectiveRatio = createCalculatePerspectiveRatio(\n    wasm,\n    preparedState\n  );\n\n  //----------------------------------------------------------\n\n  // The projection host disposer\n  const release = () => {\n    fromLngLat.release();\n    project.release();\n    unproject.release();\n    calculatePerspectiveRatio.release();\n  };\n\n  return {\n    getZoom: () => {\n      return preparedState.zoom;\n    },\n    getClipContext: () => {\n      return preparedState.clipContext;\n    },\n    fromLngLat, // Overrided\n    project, // Overrided\n    unproject, // Overrided\n    calculatePerspectiveRatio, // Overrided\n    release,\n  };\n};\n","// maplibre-gl-layers - MapLibre's layer extension library enabling\n// the display, movement, and modification of large numbers of dynamic sprite images\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT\n// https://github.com/kekyo/maplibre-gl-layers\n\nimport { Map as MapLibreMap } from 'maplibre-gl';\nimport { normalizeAngleDeg } from './rotationInterpolation';\nimport {\n  calculateBillboardCenterPosition,\n  calculateBillboardCornerScreenPositions,\n  calculateMetersPerPixelAtLatitude,\n  calculateEffectivePixelsPerMeter,\n  calculateSurfaceCenterPosition,\n  calculateSurfaceCornerDisplacements,\n  calculateSurfaceOffsetMeters,\n  calculateSurfaceWorldDimensions,\n  calculateBillboardDepthKey,\n  calculateSurfaceDepthKey,\n  applySurfaceDisplacement,\n  clipToScreen,\n  type ProjectToClipSpaceFn,\n  type UnprojectPointFn,\n  multiplyMatrixAndVector,\n  isFiniteNumber,\n  computeSurfaceCornerShaderModel,\n  type SurfaceCorner,\n  type QuadCorner,\n  calculateZoomScaleFactor,\n  resolveScalingOptions,\n  resolveSpriteMercator,\n} from './math';\nimport {\n  BILLBOARD_BASE_CORNERS,\n  SURFACE_BASE_CORNERS,\n  QUAD_VERTEX_SCRATCH,\n  computeBillboardCornersShaderModel,\n} from './shader';\nimport type {\n  InternalSpriteCurrentState,\n  InternalSpriteImageState,\n  ImageResourceTable,\n  RegisteredImage,\n  SurfaceShaderInputs,\n  ClipContext,\n  ProjectionHost,\n  PreparedDrawSpriteImageParams,\n  PrepareDrawSpriteImageParams,\n  RenderCalculationHost,\n  MutableSpriteScreenPoint,\n  PrepareDrawSpriteImageParamsBefore,\n  PrepareDrawSpriteImageParamsAfter,\n  RenderTargetEntryLike,\n} from './internalTypes';\nimport { SPRITE_ORIGIN_REFERENCE_INDEX_NONE } from './internalTypes';\nimport type {\n  SpriteAnchor,\n  SpriteLocation,\n  SpritePoint,\n  SpriteScreenPoint,\n} from './types';\nimport { createMapLibreProjectionHost } from './mapLibreProjectionHost';\nimport {\n  createProjectionHost,\n  type ProjectionHostParams,\n} from './projectionHost';\nimport {\n  DEFAULT_ANCHOR,\n  DEFAULT_IMAGE_OFFSET,\n  DEG2RAD,\n  EPS_NDC,\n  MIN_CLIP_W,\n  MIN_CLIP_Z_EPSILON,\n  ORDER_BUCKET,\n  ORDER_MAX,\n  TRIANGLE_INDICES,\n  UV_CORNERS,\n} from './const';\nimport {\n  ENABLE_NDC_BIAS_SURFACE,\n  SL_DEBUG,\n  USE_SHADER_BILLBOARD_GEOMETRY,\n  USE_SHADER_SURFACE_GEOMETRY,\n} from './config';\nimport { createWasmProjectionHost } from './wasmProjectionHost';\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Cache entry storing anchor-adjusted and raw centers for a sprite image.\n */\ninterface ImageCenterCacheEntry {\n  readonly anchorApplied?: SpritePoint;\n  readonly anchorless?: SpritePoint;\n}\n\n/**\n * Nested cache keyed by sprite ID and image key to avoid recomputing centers each frame.\n */\ntype ImageCenterCache = Map<string, Map<string, ImageCenterCacheEntry>>;\n\n/**\n * Resolves the image entry that a sprite should use as its origin reference when\n * another image in the same render bucket needs to inherit that origin.\n * The resolver is always invoked with the current sprite/image pair and can\n * return `null` when the origin is not available (e.g., the reference was\n * culled or stored in another bucket).\n */\ntype OriginImageResolver<T> = (\n  sprite: Readonly<InternalSpriteCurrentState<T>>,\n  image: Readonly<InternalSpriteImageState>\n) => InternalSpriteImageState | null;\n\ninterface DepthSortedItem<T> {\n  readonly sprite: InternalSpriteCurrentState<T>;\n  readonly image: InternalSpriteImageState;\n  readonly resource: Readonly<RegisteredImage>;\n  readonly depthKey: number;\n  readonly resolveOrigin: OriginImageResolver<T>;\n}\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a resolver that can look up origin reference images within a specific\n * render bucket. Each sprite image stores the index of the entry whose origin\n * data it depends on, so the resulting resolver simply dereferences that index\n * with additional validation to ensure the bucket still contains the expected\n * sprite/image pair.\n *\n * @param bucket - Ordered list of sprite/image pairs scheduled for rendering.\n * @returns Function that returns the origin image entry or `null` if it cannot\n *   be resolved safely.\n */\nconst createBucketOriginResolver = <T>(\n  bucket: readonly Readonly<RenderTargetEntryLike<T>>[]\n): OriginImageResolver<T> => {\n  return (sprite, image) => {\n    // Data-driven origin references store the bucket index directly on the image entry.\n    const index = image.originRenderTargetIndex;\n    if (\n      index === SPRITE_ORIGIN_REFERENCE_INDEX_NONE ||\n      index < 0 ||\n      index >= bucket.length\n    ) {\n      // Missing index or out-of-bounds reference -> origin cannot be resolved.\n      return null;\n    }\n    const entry = bucket[index];\n    if (!entry) {\n      // Bucket holes should not happen, but guard to avoid undefined access.\n      return null;\n    }\n    const [resolvedSprite, resolvedImage] = entry;\n    if (resolvedSprite !== sprite) {\n      // A stale index referencing another sprite is treated as unresolved.\n      return null;\n    }\n    return resolvedImage;\n  };\n};\n\n/**\n * Ensures an image has a reusable hit-test corner buffer.\n * @param {InternalSpriteImageState} imageEntry - Image requiring a corner buffer.\n * @returns {[SpriteScreenPoint, SpriteScreenPoint, SpriteScreenPoint, SpriteScreenPoint]}\n */\nconst ensureHitTestCorners = (\n  imageEntry: InternalSpriteImageState\n): [\n  MutableSpriteScreenPoint,\n  MutableSpriteScreenPoint,\n  MutableSpriteScreenPoint,\n  MutableSpriteScreenPoint,\n] => {\n  if (!imageEntry.hitTestCorners) {\n    imageEntry.hitTestCorners = [\n      { x: 0, y: 0 },\n      { x: 0, y: 0 },\n      { x: 0, y: 0 },\n      { x: 0, y: 0 },\n    ];\n  }\n  return imageEntry.hitTestCorners;\n};\n\nexport const collectDepthSortedItemsInternal = <T>(\n  projectionHost: ProjectionHost,\n  zoom: number,\n  zoomScaleFactor: number,\n  originCenterCache: ImageCenterCache,\n  {\n    bucket,\n    bucketBuffers,\n    imageResources,\n    clipContext,\n    baseMetersPerPixel,\n    spriteMinPixel,\n    spriteMaxPixel,\n    drawingBufferWidth,\n    drawingBufferHeight,\n    pixelRatio,\n  }: PrepareDrawSpriteImageParamsBefore<T>\n): DepthSortedItem<T>[] => {\n  const itemsWithDepth: DepthSortedItem<T>[] = [];\n\n  const projectToClipSpace: ProjectToClipSpaceFn = (location) =>\n    projectLngLatToClipSpace(projectionHost, location, clipContext);\n\n  const unprojectPoint: UnprojectPointFn = (point: SpriteScreenPoint) => {\n    return projectionHost.unproject(point);\n  };\n\n  if (\n    bucketBuffers &&\n    (bucketBuffers.originReferenceKeys.length !== bucket.length ||\n      bucketBuffers.originTargetIndices.length !== bucket.length)\n  ) {\n    throw new Error('bucketBuffers length mismatch');\n  }\n\n  const resolveOrigin = createBucketOriginResolver(bucket);\n\n  for (const [spriteEntry, imageEntry] of bucket) {\n    const imageResource = imageResources[imageEntry.imageHandle];\n    if (!imageResource || !imageResource.texture) {\n      continue;\n    }\n\n    const projected = projectionHost.project(spriteEntry.currentLocation);\n    if (!projected) {\n      continue;\n    }\n\n    const spriteMercator = resolveSpriteMercator(projectionHost, spriteEntry);\n    const metersPerPixelAtLat = calculateMetersPerPixelAtLatitude(\n      zoom,\n      spriteEntry.currentLocation.lat\n    );\n    if (!Number.isFinite(metersPerPixelAtLat) || metersPerPixelAtLat <= 0) {\n      continue;\n    }\n\n    const perspectiveRatio = projectionHost.calculatePerspectiveRatio(\n      spriteEntry.currentLocation,\n      spriteMercator\n    );\n    const effectivePixelsPerMeter = calculateEffectivePixelsPerMeter(\n      metersPerPixelAtLat,\n      perspectiveRatio\n    );\n    if (effectivePixelsPerMeter <= 0) {\n      continue;\n    }\n\n    const centerParams: ComputeImageCenterParams<T> = {\n      projectionHost,\n      imageResources,\n      originCenterCache,\n      projected,\n      baseMetersPerPixel,\n      spriteMinPixel,\n      spriteMaxPixel,\n      effectivePixelsPerMeter,\n      zoomScaleFactor,\n      drawingBufferWidth,\n      drawingBufferHeight,\n      pixelRatio,\n      clipContext,\n      resolveOrigin,\n    };\n\n    const anchorResolved = imageEntry.anchor ?? DEFAULT_ANCHOR;\n    const offsetResolved = imageEntry.offset ?? DEFAULT_IMAGE_OFFSET;\n\n    const depthCenter = computeImageCenterXY(\n      spriteEntry,\n      imageEntry,\n      centerParams,\n      true\n    );\n\n    let depthKey: number;\n\n    if (imageEntry.mode === 'surface') {\n      const imageScale = imageEntry.scale ?? 1;\n      const worldDims = calculateSurfaceWorldDimensions(\n        imageResource.width,\n        imageResource.height,\n        baseMetersPerPixel,\n        imageScale,\n        zoomScaleFactor,\n        {\n          effectivePixelsPerMeter,\n          spriteMinPixel,\n          spriteMaxPixel,\n        }\n      );\n      const totalRotateDeg = Number.isFinite(imageEntry.displayedRotateDeg)\n        ? imageEntry.displayedRotateDeg\n        : normalizeAngleDeg(\n            (imageEntry.resolvedBaseRotateDeg ?? 0) +\n              (imageEntry.rotateDeg ?? 0)\n          );\n      const offsetMeters = calculateSurfaceOffsetMeters(\n        offsetResolved,\n        imageScale,\n        zoomScaleFactor,\n        worldDims.scaleAdjustment\n      );\n      const cornerDisplacements = calculateSurfaceCornerDisplacements({\n        worldWidthMeters: worldDims.width,\n        worldHeightMeters: worldDims.height,\n        anchor: anchorResolved,\n        totalRotateDeg,\n        offsetMeters,\n      });\n\n      const baseLngLat = (() => {\n        if (imageEntry.originLocation !== undefined) {\n          const refImg = resolveOrigin(spriteEntry, imageEntry);\n          if (refImg) {\n            const baseCenter = computeImageCenterXY(\n              spriteEntry,\n              refImg,\n              centerParams,\n              imageEntry.originLocation.useResolvedAnchor ?? false\n            );\n            const baseLngLatLike = projectionHost.unproject(baseCenter);\n            if (baseLngLatLike) {\n              return baseLngLatLike;\n            }\n          }\n        }\n        return spriteEntry.currentLocation;\n      })();\n\n      const surfaceDepth = calculateSurfaceDepthKey(\n        baseLngLat,\n        cornerDisplacements,\n        projectToClipSpace,\n        {\n          biasFn: ENABLE_NDC_BIAS_SURFACE\n            ? ({ clipZ, clipW }) => {\n                const orderIndex = Math.min(imageEntry.order, ORDER_MAX - 1);\n                const biasIndex =\n                  imageEntry.subLayer * ORDER_BUCKET + orderIndex;\n                const biasNdc = -(biasIndex * EPS_NDC);\n                const biasedClipZ = clipZ + biasNdc * clipW;\n                const minClipZ = -clipW + MIN_CLIP_Z_EPSILON;\n                return {\n                  clipZ: biasedClipZ < minClipZ ? minClipZ : biasedClipZ,\n                  clipW,\n                };\n              }\n            : undefined,\n        }\n      );\n\n      if (surfaceDepth === null) {\n        continue;\n      }\n      depthKey = surfaceDepth;\n    } else {\n      const billboardDepth = calculateBillboardDepthKey(\n        depthCenter,\n        unprojectPoint,\n        projectToClipSpace\n      );\n      if (billboardDepth === null) {\n        continue;\n      }\n      depthKey = billboardDepth;\n    }\n\n    itemsWithDepth.push({\n      sprite: spriteEntry,\n      image: imageEntry,\n      resource: imageResource,\n      depthKey,\n      resolveOrigin,\n    });\n  }\n\n  itemsWithDepth.sort((a, b) => {\n    if (a.depthKey !== b.depthKey) {\n      return a.depthKey - b.depthKey;\n    }\n    if (a.image.order !== b.image.order) {\n      return a.image.order - b.image.order;\n    }\n    const spriteCompare = a.sprite.spriteId.localeCompare(b.sprite.spriteId);\n    if (spriteCompare !== 0) {\n      return spriteCompare;\n    }\n    return a.image.imageId.localeCompare(b.image.imageId);\n  });\n\n  return itemsWithDepth;\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Projects a longitude/latitude/elevation tuple into clip space using the provided context.\n * @param {number} lng - Longitude in degrees.\n * @param {number} lat - Latitude in degrees.\n * @param {number} elevationMeters - Elevation above the ellipsoid in meters.\n * @param {ClipContext | null} context - Clip-space context; `null` skips projection.\n * @returns {[number, number, number, number] | null} Clip coordinates or `null` when projection fails.\n */\nconst projectLngLatToClipSpace = (\n  projectionHost: ProjectionHost,\n  location: Readonly<SpriteLocation>,\n  context: Readonly<ClipContext> | null\n): [number, number, number, number] | null => {\n  if (!context) {\n    return null;\n  }\n  const { mercatorMatrix } = context;\n  const coord = projectionHost.fromLngLat(location);\n  const [clipX, clipY, clipZ, clipW] = multiplyMatrixAndVector(\n    mercatorMatrix,\n    coord.x,\n    coord.y,\n    coord.z,\n    1\n  );\n  if (!isFiniteNumber(clipW) || clipW <= MIN_CLIP_W) {\n    return null;\n  }\n  return [clipX, clipY, clipZ, clipW];\n};\n\n/**\n * Parameters required to determine an image center in screen space.\n */\ninterface ComputeImageCenterParams<T> {\n  readonly projectionHost: ProjectionHost;\n  readonly imageResources: ImageResourceTable;\n  readonly originCenterCache: ImageCenterCache;\n  readonly projected: Readonly<SpriteScreenPoint>;\n  readonly baseMetersPerPixel: number;\n  readonly spriteMinPixel: number;\n  readonly spriteMaxPixel: number;\n  readonly effectivePixelsPerMeter: number;\n  readonly zoomScaleFactor: number;\n  readonly drawingBufferWidth: number;\n  readonly drawingBufferHeight: number;\n  readonly pixelRatio: number;\n  readonly clipContext: Readonly<ClipContext> | null;\n  readonly resolveOrigin: OriginImageResolver<T>;\n}\n\n/**\n * Computes the screen-space center of an image, caching anchor-dependent results.\n * @template T Sprite tag type.\n * @param {InternalSpriteCurrentState<T>} sprite - Sprite that owns the image.\n * @param {InternalSpriteImageState} image - Image state to evaluate.\n * @param {ComputeImageCenterParams} params - Precomputed scaling and projection context.\n * @param {boolean} useResolvedAnchor - When true, returns the anchor-applied center.\n * @returns {SpriteScreenPoint} Screen-space coordinates for the requested center variant.\n */\nconst computeImageCenterXY = <T>(\n  sprite: Readonly<InternalSpriteCurrentState<T>>,\n  image: Readonly<InternalSpriteImageState>,\n  params: ComputeImageCenterParams<T>,\n  useResolvedAnchor: boolean\n): SpriteScreenPoint => {\n  const {\n    originCenterCache,\n    projected,\n    baseMetersPerPixel,\n    spriteMinPixel,\n    spriteMaxPixel,\n    effectivePixelsPerMeter,\n    zoomScaleFactor,\n    imageResources,\n    projectionHost,\n    drawingBufferWidth,\n    drawingBufferHeight,\n    pixelRatio,\n    clipContext,\n    resolveOrigin,\n  } = params;\n\n  let spriteCache = originCenterCache.get(sprite.spriteId);\n  if (!spriteCache) {\n    // Initialize a new cache bucket for this sprite when none exists yet.\n    spriteCache = new Map<string, ImageCenterCacheEntry>();\n    originCenterCache.set(sprite.spriteId, spriteCache);\n  }\n\n  const cacheKey = `${image.subLayer}:${image.order}`;\n  const cachedEntry = spriteCache.get(cacheKey);\n  if (cachedEntry) {\n    // Hit the cache: return whichever variant (anchor vs anchorless) the caller requested.\n    const cachedPoint = useResolvedAnchor\n      ? cachedEntry.anchorApplied\n      : cachedEntry.anchorless;\n    if (cachedPoint) {\n      return cachedPoint;\n    }\n  }\n\n  let base: Readonly<SpriteScreenPoint> = projected;\n  if (image.originLocation !== undefined) {\n    const ref = resolveOrigin(sprite, image);\n    if (ref) {\n      const refCenter = computeImageCenterXY(\n        sprite,\n        ref,\n        params,\n        useResolvedAnchor\n      );\n      base = refCenter;\n    }\n  }\n\n  const totalRotDeg = Number.isFinite(image.displayedRotateDeg)\n    ? image.displayedRotateDeg\n    : normalizeAngleDeg(\n        (image.resolvedBaseRotateDeg ?? 0) + (image.rotateDeg ?? 0)\n      );\n  const imageScaleLocal = image.scale ?? 1;\n  const imageResourceRef = imageResources[image.imageHandle];\n\n  if (image.mode === 'billboard') {\n    const placement = calculateBillboardCenterPosition({\n      base,\n      imageWidth: imageResourceRef?.width,\n      imageHeight: imageResourceRef?.height,\n      baseMetersPerPixel,\n      imageScale: imageScaleLocal,\n      zoomScaleFactor,\n      effectivePixelsPerMeter,\n      spriteMinPixel,\n      spriteMaxPixel,\n      totalRotateDeg: totalRotDeg,\n      anchor: image.anchor,\n      offset: image.offset,\n    });\n    // Center used when the anchor is resolved to the provided anchor point.\n    const anchorApplied: SpritePoint = placement.center;\n    // Origin fallback before anchor offsets are applied; used by callers referencing anchorless placement.\n    const anchorless: SpritePoint = {\n      x: anchorApplied.x + placement.anchorShift.x,\n      y: anchorApplied.y - placement.anchorShift.y,\n    };\n    // Reuse cached entry to avoid repeated allocations.\n    const entry = cachedEntry ?? { anchorless, anchorApplied };\n    spriteCache.set(cacheKey, entry);\n    return useResolvedAnchor ? anchorApplied : anchorless;\n  }\n\n  const baseLngLat: SpriteLocation =\n    image.originLocation !== undefined\n      ? // When anchored to another image, reproject the 2D reference point back to geographic space.\n        (projectionHost.unproject(base) ?? sprite.currentLocation)\n      : // Otherwise use the sprite's own interpolated geographic location.\n        sprite.currentLocation;\n\n  const projectToClipSpace: ProjectToClipSpaceFn | undefined = clipContext\n    ? (location) =>\n        projectLngLatToClipSpace(projectionHost, location, clipContext)\n    : undefined;\n\n  const surfacePlacement = calculateSurfaceCenterPosition({\n    baseLngLat,\n    imageWidth: imageResourceRef?.width,\n    imageHeight: imageResourceRef?.height,\n    baseMetersPerPixel,\n    imageScale: imageScaleLocal,\n    zoomScaleFactor,\n    totalRotateDeg: totalRotDeg,\n    anchor: image.anchor,\n    offset: image.offset,\n    effectivePixelsPerMeter,\n    spriteMinPixel,\n    spriteMaxPixel,\n    projectToClipSpace,\n    drawingBufferWidth,\n    drawingBufferHeight,\n    pixelRatio,\n    resolveAnchorless: true,\n    project: projectToClipSpace ? undefined : projectionHost.project,\n  });\n\n  // If the anchorless placement could not be projected, fall back to the original screen position.\n  const anchorlessCenter = surfacePlacement.anchorlessCenter ?? base;\n  // If the anchor-aware placement fails, reuse the anchorless center to keep the sprite visible.\n  const anchorAppliedCenter = surfacePlacement.center ?? anchorlessCenter;\n\n  // Cache the computed centers so repeated lookups in this frame avoid recomputation.\n  const entry = cachedEntry ?? {\n    anchorless: anchorlessCenter,\n    anchorApplied: anchorAppliedCenter,\n  };\n  spriteCache.set(cacheKey, entry);\n  // Respect the caller's anchor preference when selecting the cached center.\n  return useResolvedAnchor ? anchorAppliedCenter : anchorlessCenter;\n};\n\nconst CORNER_EAST: SurfaceCorner = { east: 1, north: 0 } as const;\nconst CORNER_NORTH: SurfaceCorner = { east: 0, north: 1 } as const;\n\nconst calculateWorldToMercatorScale = (\n  projectionHost: ProjectionHost,\n  base: Readonly<SpriteLocation>\n): SurfaceCorner => {\n  const origin = projectionHost.fromLngLat(base);\n  const eastLngLat = applySurfaceDisplacement(base, CORNER_EAST);\n  const eastCoord = projectionHost.fromLngLat(eastLngLat);\n  const northLngLat = applySurfaceDisplacement(base, CORNER_NORTH);\n  const northCoord = projectionHost.fromLngLat(northLngLat);\n  return {\n    east: eastCoord.x - origin.x,\n    north: northCoord.y - origin.y,\n  };\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\ninterface PrepareSurfaceShaderInputsParams {\n  readonly baseLngLat: Readonly<SpriteLocation>;\n  readonly worldWidthMeters: number;\n  readonly worldHeightMeters: number;\n  readonly anchor: Readonly<SpriteAnchor>;\n  readonly totalRotateDeg: number;\n  readonly offsetMeters: Readonly<{ east: number; north: number }>;\n  readonly displacedCenter: Readonly<SpriteLocation>;\n  readonly depthBiasNdc: number;\n  readonly scaleAdjustment: number;\n  readonly centerDisplacement: Readonly<SurfaceCorner>;\n}\n\nconst prepareSurfaceShaderInputs = (\n  projectionHost: ProjectionHost,\n  params: PrepareSurfaceShaderInputsParams\n): SurfaceShaderInputs => {\n  const {\n    baseLngLat,\n    worldWidthMeters,\n    worldHeightMeters,\n    anchor,\n    totalRotateDeg,\n    offsetMeters,\n    displacedCenter,\n    depthBiasNdc,\n    scaleAdjustment,\n    centerDisplacement,\n  } = params;\n\n  const halfSizeMeters = {\n    east: worldWidthMeters / 2,\n    north: worldHeightMeters / 2,\n  };\n  const rotationRad = -totalRotateDeg * DEG2RAD;\n  const sinR = Math.sin(rotationRad);\n  const cosR = Math.cos(rotationRad);\n\n  const mercatorCenter = projectionHost.fromLngLat(displacedCenter);\n\n  const worldToMercatorScale = calculateWorldToMercatorScale(\n    projectionHost,\n    displacedCenter\n  );\n\n  const cornerModel = computeSurfaceCornerShaderModel({\n    baseLngLat,\n    worldWidthMeters,\n    worldHeightMeters,\n    anchor,\n    totalRotateDeg,\n    offsetMeters,\n  });\n\n  return {\n    mercatorCenter: {\n      x: mercatorCenter.x,\n      y: mercatorCenter.y,\n      z: mercatorCenter.z ?? 0,\n    },\n    worldToMercatorScale,\n    halfSizeMeters,\n    anchor,\n    offsetMeters: {\n      east: offsetMeters.east,\n      north: offsetMeters.north,\n    },\n    sinCos: { sin: sinR, cos: cosR },\n    totalRotateDeg,\n    depthBiasNdc,\n    centerDisplacement: {\n      east: centerDisplacement.east,\n      north: centerDisplacement.north,\n    },\n    baseLngLat,\n    displacedCenter,\n    scaleAdjustment,\n    corners: cornerModel.map(\n      (corner: { east: number; north: number; lng: number; lat: number }) => ({\n        east: corner.east,\n        north: corner.north,\n        lng: corner.lng,\n        lat: corner.lat,\n      })\n    ),\n    clipCenter: { x: 0, y: 0, z: 0, w: 1 },\n    clipBasisEast: { x: 0, y: 0, z: 0, w: 0 },\n    clipBasisNorth: { x: 0, y: 0, z: 0, w: 0 },\n    clipCorners: [],\n  };\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Prepares quad data for a single sprite image before issuing the draw call.\n */\nexport const prepareDrawSpriteImageInternal = <TTag>(\n  projectionHost: ProjectionHost,\n  item: DepthSortedItem<TTag>,\n  zoom: number,\n  zoomScaleFactor: number,\n  originCenterCache: ImageCenterCache,\n  {\n    imageResources,\n    baseMetersPerPixel,\n    spriteMinPixel,\n    spriteMaxPixel,\n    drawingBufferWidth,\n    drawingBufferHeight,\n    pixelRatio,\n    clipContext,\n    identityScaleX,\n    identityScaleY,\n    identityOffsetX,\n    identityOffsetY,\n    screenToClipScaleX,\n    screenToClipScaleY,\n    screenToClipOffsetX,\n    screenToClipOffsetY,\n  }: PrepareDrawSpriteImageParamsAfter\n): PreparedDrawSpriteImageParams<TTag> | null => {\n  const spriteEntry = item.sprite;\n  const imageEntry = item.image;\n  const imageResource = item.resource;\n  const resolveOrigin = item.resolveOrigin;\n  const atlasU0 = Number.isFinite(imageResource.atlasU0)\n    ? imageResource.atlasU0\n    : 0;\n  const atlasV0 = Number.isFinite(imageResource.atlasV0)\n    ? imageResource.atlasV0\n    : 0;\n  const atlasU1 = Number.isFinite(imageResource.atlasU1)\n    ? imageResource.atlasU1\n    : 1;\n  const atlasV1 = Number.isFinite(imageResource.atlasV1)\n    ? imageResource.atlasV1\n    : 1;\n  const atlasUSpan = atlasU1 - atlasU0;\n  const atlasVSpan = atlasV1 - atlasV0;\n\n  const spriteMercator = resolveSpriteMercator(projectionHost, item.sprite);\n\n  // Reset previous frame state so skipped images do not leak stale uniforms.\n  imageEntry.surfaceShaderInputs = undefined;\n\n  let screenCornerBuffer:\n    | [\n        SpriteScreenPoint,\n        SpriteScreenPoint,\n        SpriteScreenPoint,\n        SpriteScreenPoint,\n      ]\n    | null = null;\n  let useShaderSurface = false;\n  let surfaceClipEnabled = false;\n  let resolvedSurfaceShaderInputs: Readonly<SurfaceShaderInputs> | undefined;\n  let useShaderBillboard = false;\n  let billboardUniforms: {\n    center: SpritePoint;\n    halfWidth: number;\n    halfHeight: number;\n    anchor: SpriteAnchor;\n    sin: number;\n    cos: number;\n  } | null = null;\n  let screenToClipUniforms = {\n    scaleX: identityScaleX,\n    scaleY: identityScaleY,\n    offsetX: identityOffsetX,\n    offsetY: identityOffsetY,\n  };\n\n  // Use per-image anchor/offset when provided; otherwise fall back to defaults.\n  const anchor = imageEntry.anchor ?? DEFAULT_ANCHOR;\n  const offsetDef = imageEntry.offset ?? DEFAULT_IMAGE_OFFSET;\n\n  // Prefer the dynamically interpolated rotation when available; otherwise synthesize it from base + manual rotations.\n  const totalRotateDeg = Number.isFinite(imageEntry.displayedRotateDeg)\n    ? imageEntry.displayedRotateDeg\n    : normalizeAngleDeg(\n        (imageEntry.resolvedBaseRotateDeg ?? 0) + (imageEntry.rotateDeg ?? 0)\n      );\n\n  const projected = projectionHost.project(spriteEntry.currentLocation);\n  if (!projected) {\n    // Projection may fail when the coordinate exits the viewport.\n    return null;\n  }\n\n  const metersPerPixelAtLat = calculateMetersPerPixelAtLatitude(\n    zoom,\n    spriteEntry.currentLocation.lat\n  );\n  if (!Number.isFinite(metersPerPixelAtLat) || metersPerPixelAtLat <= 0) {\n    return null;\n  }\n\n  const perspectiveRatio = projectionHost.calculatePerspectiveRatio(\n    spriteEntry.currentLocation,\n    spriteMercator\n  );\n\n  // Convert meters-per-pixel into pixels-per-meter when valid so scaling remains intuitive.\n  const basePixelsPerMeter =\n    metersPerPixelAtLat > 0 ? 1 / metersPerPixelAtLat : 0;\n  const effectivePixelsPerMeter = calculateEffectivePixelsPerMeter(\n    metersPerPixelAtLat,\n    perspectiveRatio\n  );\n  if (effectivePixelsPerMeter <= 0) {\n    return null;\n  }\n\n  // Input scale defaults to 1 when callers omit it.\n  const imageScale = imageEntry.scale ?? 1;\n\n  const centerParams: ComputeImageCenterParams<TTag> = {\n    projectionHost,\n    imageResources,\n    originCenterCache,\n    projected,\n    baseMetersPerPixel,\n    spriteMinPixel,\n    spriteMaxPixel,\n    effectivePixelsPerMeter,\n    zoomScaleFactor,\n    drawingBufferWidth,\n    drawingBufferHeight,\n    pixelRatio,\n    clipContext,\n    resolveOrigin,\n  };\n\n  let baseProjected = { x: projected.x, y: projected.y };\n  if (imageEntry.originLocation !== undefined) {\n    const refImg = resolveOrigin(spriteEntry, imageEntry);\n    if (refImg) {\n      // Align this image's base position with the referenced image when available.\n      baseProjected = computeImageCenterXY(\n        spriteEntry,\n        refImg,\n        centerParams,\n        imageEntry.originLocation.useResolvedAnchor ?? false\n      );\n    }\n  }\n\n  if (imageEntry.mode === 'surface') {\n    screenToClipUniforms = {\n      scaleX: identityScaleX,\n      scaleY: identityScaleY,\n      offsetX: identityOffsetX,\n      offsetY: identityOffsetY,\n    };\n    const baseLngLat =\n      imageEntry.originLocation !== undefined\n        ? // When an origin reference is set, reproject the cached screen point back to geographic space.\n          (projectionHost.unproject(baseProjected) ??\n          spriteEntry.currentLocation)\n        : // Otherwise base the surface on the sprite's current longitude/latitude.\n          spriteEntry.currentLocation;\n\n    const surfaceCenter = calculateSurfaceCenterPosition({\n      baseLngLat,\n      imageWidth: imageResource.width,\n      imageHeight: imageResource.height,\n      baseMetersPerPixel,\n      imageScale,\n      zoomScaleFactor,\n      totalRotateDeg,\n      anchor,\n      offset: offsetDef,\n      effectivePixelsPerMeter,\n      spriteMinPixel,\n      spriteMaxPixel,\n      projectToClipSpace: (location) =>\n        projectLngLatToClipSpace(projectionHost, location, clipContext),\n      drawingBufferWidth,\n      drawingBufferHeight,\n      pixelRatio,\n      project: clipContext ? undefined : projectionHost.project,\n    });\n\n    if (!surfaceCenter.center) {\n      // Projection failed for at least one corner; skip rendering to avoid NaNs.\n      return null;\n    }\n\n    const offsetMeters = calculateSurfaceOffsetMeters(\n      offsetDef,\n      imageScale,\n      zoomScaleFactor,\n      surfaceCenter.worldDimensions.scaleAdjustment\n    );\n    const cornerDisplacements = calculateSurfaceCornerDisplacements({\n      worldWidthMeters: surfaceCenter.worldDimensions.width,\n      worldHeightMeters: surfaceCenter.worldDimensions.height,\n      anchor,\n      totalRotateDeg,\n      offsetMeters,\n    });\n\n    const orderIndex = Math.min(imageEntry.order, ORDER_MAX - 1);\n    const depthBiasNdc = ENABLE_NDC_BIAS_SURFACE\n      ? -((imageEntry.subLayer * ORDER_BUCKET + orderIndex) * EPS_NDC)\n      : 0;\n\n    const displacedCenter = surfaceCenter.displacedLngLat ?? baseLngLat;\n\n    const surfaceShaderInputs = prepareSurfaceShaderInputs(projectionHost, {\n      baseLngLat,\n      worldWidthMeters: surfaceCenter.worldDimensions.width,\n      worldHeightMeters: surfaceCenter.worldDimensions.height,\n      anchor,\n      totalRotateDeg,\n      offsetMeters,\n      displacedCenter,\n      depthBiasNdc,\n      scaleAdjustment: surfaceCenter.worldDimensions.scaleAdjustment,\n      centerDisplacement: surfaceCenter.totalDisplacement,\n    });\n    imageEntry.surfaceShaderInputs = surfaceShaderInputs;\n\n    useShaderSurface = USE_SHADER_SURFACE_GEOMETRY && !!clipContext;\n    let clipCornerPositions: Array<[number, number, number, number]> | null =\n      null;\n    let clipCenterPosition: [number, number, number, number] | null = null;\n    if (useShaderSurface) {\n      clipCornerPositions = new Array(SURFACE_BASE_CORNERS.length) as Array<\n        [number, number, number, number]\n      >;\n      clipCenterPosition = projectLngLatToClipSpace(\n        projectionHost,\n        displacedCenter,\n        clipContext\n      );\n      if (!clipCenterPosition) {\n        useShaderSurface = false;\n        clipCornerPositions = null;\n      }\n    }\n\n    const hitTestCorners = ensureHitTestCorners(imageEntry);\n    const debugClipCorners: Array<[number, number, number, number]> | null =\n      SL_DEBUG ? [] : null;\n    let bufferOffset = 0;\n    // Iterate through each vertex defined by TRIANGLE_INDICES to populate the vertex buffer.\n    for (const index of TRIANGLE_INDICES) {\n      const displacement = cornerDisplacements[index]!;\n      const displaced = applySurfaceDisplacement(baseLngLat, displacement);\n\n      const clipPosition = projectLngLatToClipSpace(\n        projectionHost,\n        displaced,\n        clipContext\n      );\n      if (!clipPosition) {\n        // A vertex left the clip volume; abort drawing this image to prevent corrupt geometry.\n        return null;\n      }\n\n      let [clipX, clipY, clipZ, clipW] = clipPosition;\n      if (!useShaderSurface) {\n        const screenCorner = clipToScreen(\n          clipPosition,\n          drawingBufferWidth,\n          drawingBufferHeight,\n          pixelRatio\n        );\n        if (!screenCorner) {\n          return null;\n        }\n        const targetCorner = hitTestCorners[index]!;\n        targetCorner.x = screenCorner.x;\n        targetCorner.y = screenCorner.y;\n      }\n\n      if (depthBiasNdc !== 0) {\n        clipZ += depthBiasNdc * clipW;\n        const minClipZ = -clipW + MIN_CLIP_Z_EPSILON;\n        if (clipZ < minClipZ) {\n          // Avoid crossing the near clip plane after biasing, which would invert winding.\n          clipZ = minClipZ;\n        }\n      }\n\n      if (clipCornerPositions) {\n        clipCornerPositions[index] = [clipX, clipY, clipZ, clipW];\n      }\n\n      const [baseU, baseV] = UV_CORNERS[index]!;\n      const u = atlasU0 + baseU * atlasUSpan;\n      const v = atlasV0 + baseV * atlasVSpan;\n      if (useShaderSurface) {\n        const baseCorner = SURFACE_BASE_CORNERS[index]!;\n        QUAD_VERTEX_SCRATCH[bufferOffset++] = baseCorner[0];\n        QUAD_VERTEX_SCRATCH[bufferOffset++] = baseCorner[1];\n        QUAD_VERTEX_SCRATCH[bufferOffset++] = 0;\n        QUAD_VERTEX_SCRATCH[bufferOffset++] = 1;\n      } else {\n        QUAD_VERTEX_SCRATCH[bufferOffset++] = clipX;\n        QUAD_VERTEX_SCRATCH[bufferOffset++] = clipY;\n        QUAD_VERTEX_SCRATCH[bufferOffset++] = clipZ;\n        QUAD_VERTEX_SCRATCH[bufferOffset++] = clipW;\n      }\n      QUAD_VERTEX_SCRATCH[bufferOffset++] = u;\n      QUAD_VERTEX_SCRATCH[bufferOffset++] = v;\n\n      if (debugClipCorners) {\n        debugClipCorners.push([clipX, clipY, clipZ, clipW]);\n      }\n    }\n\n    let clipUniformEnabled = false;\n    if (\n      clipCornerPositions &&\n      clipCenterPosition &&\n      clipCornerPositions.every((corner) => Array.isArray(corner))\n    ) {\n      const leftTop = clipCornerPositions[0];\n      const rightTop = clipCornerPositions[1];\n      const leftBottom = clipCornerPositions[2];\n      const rightBottom = clipCornerPositions[3];\n      if (leftTop && rightTop && leftBottom && rightBottom) {\n        const clipBasisEast: [number, number, number, number] = [\n          (rightTop[0] - leftTop[0]) * 0.5,\n          (rightTop[1] - leftTop[1]) * 0.5,\n          (rightTop[2] - leftTop[2]) * 0.5,\n          (rightTop[3] - leftTop[3]) * 0.5,\n        ];\n        const clipBasisNorth: [number, number, number, number] = [\n          (leftTop[0] - leftBottom[0]) * 0.5,\n          (leftTop[1] - leftBottom[1]) * 0.5,\n          (leftTop[2] - leftBottom[2]) * 0.5,\n          (leftTop[3] - leftBottom[3]) * 0.5,\n        ];\n        const [centerX, centerY, centerZ, centerW] = clipCenterPosition;\n        surfaceShaderInputs.clipCenter = {\n          x: centerX,\n          y: centerY,\n          z: centerZ,\n          w: centerW,\n        };\n        surfaceShaderInputs.clipBasisEast = {\n          x: clipBasisEast[0],\n          y: clipBasisEast[1],\n          z: clipBasisEast[2],\n          w: clipBasisEast[3],\n        };\n        surfaceShaderInputs.clipBasisNorth = {\n          x: clipBasisNorth[0],\n          y: clipBasisNorth[1],\n          z: clipBasisNorth[2],\n          w: clipBasisNorth[3],\n        };\n        const clipCornersForInputs: Array<{\n          readonly x: number;\n          readonly y: number;\n          readonly z: number;\n          readonly w: number;\n        }> = [];\n        let allCornersResolved = true;\n        for (\n          let cornerIndex = 0;\n          cornerIndex < SURFACE_BASE_CORNERS.length;\n          cornerIndex++\n        ) {\n          const clipCorner = clipCornerPositions[cornerIndex];\n          if (!clipCorner) {\n            allCornersResolved = false;\n            break;\n          }\n          clipCornersForInputs.push({\n            x: clipCorner[0],\n            y: clipCorner[1],\n            z: clipCorner[2],\n            w: clipCorner[3],\n          });\n          const screenCorner = clipToScreen(\n            clipCorner,\n            drawingBufferWidth,\n            drawingBufferHeight,\n            pixelRatio\n          );\n          if (!screenCorner) {\n            return null;\n          }\n          const targetCorner = hitTestCorners[cornerIndex]!;\n          targetCorner.x = screenCorner.x;\n          targetCorner.y = screenCorner.y;\n        }\n        if (allCornersResolved) {\n          surfaceShaderInputs.clipCorners = clipCornersForInputs;\n          clipUniformEnabled = true;\n        } else {\n          surfaceShaderInputs.clipCorners = [];\n        }\n      } else {\n        surfaceShaderInputs.clipCorners = [];\n      }\n    } else {\n      surfaceShaderInputs.clipCorners = [];\n    }\n\n    if (useShaderSurface) {\n      surfaceClipEnabled = clipUniformEnabled;\n      if (debugClipCorners) {\n        surfaceShaderInputs.clipCorners = debugClipCorners.map(\n          ([x, y, z, w]) => ({\n            x,\n            y,\n            z,\n            w,\n          })\n        );\n      }\n    } else {\n      surfaceShaderInputs.clipCorners = [];\n      surfaceClipEnabled = false;\n    }\n\n    screenCornerBuffer = hitTestCorners;\n    resolvedSurfaceShaderInputs = surfaceShaderInputs;\n\n    if (SL_DEBUG) {\n      (imageEntry as any).__debugBag = {\n        mode: 'surface',\n        drawingBufferWidth,\n        drawingBufferHeight,\n        pixelRatio,\n        zoom,\n        zoomScaleFactor,\n        baseMetersPerPixel,\n        projected,\n        metersPerPixelAtLat,\n        perspectiveRatio,\n        basePixelsPerMeter,\n        effectivePixelsPerMeter,\n        imageScale,\n        anchor,\n        offsetDef,\n        baseLngLat,\n        surfaceCenter,\n        cornerDisplacements,\n        depthBiasNdc,\n        useShaderSurface,\n        surfaceShaderInputs,\n        clipCorners: debugClipCorners ?? undefined,\n      };\n    }\n  } else {\n    screenToClipUniforms = {\n      scaleX: screenToClipScaleX,\n      scaleY: screenToClipScaleY,\n      offsetX: screenToClipOffsetX,\n      offsetY: screenToClipOffsetY,\n    };\n    resolvedSurfaceShaderInputs = undefined;\n    surfaceClipEnabled = false;\n    useShaderSurface = false;\n    const placement = calculateBillboardCenterPosition({\n      base: baseProjected,\n      imageWidth: imageResource.width,\n      imageHeight: imageResource.height,\n      baseMetersPerPixel,\n      imageScale,\n      zoomScaleFactor,\n      effectivePixelsPerMeter,\n      spriteMinPixel,\n      spriteMaxPixel,\n      totalRotateDeg,\n      anchor,\n      offset: offsetDef,\n    });\n\n    const billboardShaderInputs = {\n      center: placement.center,\n      halfWidth: placement.halfWidth,\n      halfHeight: placement.halfHeight,\n      anchor,\n      totalRotateDeg,\n    };\n\n    if (SL_DEBUG) {\n      (imageEntry as any).__billboardShaderInputs = billboardShaderInputs;\n    }\n\n    useShaderBillboard = USE_SHADER_BILLBOARD_GEOMETRY;\n    billboardUniforms = useShaderBillboard\n      ? {\n          center: billboardShaderInputs.center,\n          halfWidth: billboardShaderInputs.halfWidth,\n          halfHeight: billboardShaderInputs.halfHeight,\n          anchor: billboardShaderInputs.anchor,\n          sin: Math.sin(-billboardShaderInputs.totalRotateDeg * DEG2RAD),\n          cos: Math.cos(-billboardShaderInputs.totalRotateDeg * DEG2RAD),\n        }\n      : null;\n\n    const writeBillboardCorners = (\n      corners: QuadCorner[],\n      useShaderGeometry: boolean\n    ): void => {\n      const hitTestCorners = ensureHitTestCorners(imageEntry);\n      let bufferOffset = 0;\n      for (const index of TRIANGLE_INDICES) {\n        const corner = corners[index]!;\n        if (useShaderGeometry) {\n          const baseCorner = BILLBOARD_BASE_CORNERS[index]!;\n          QUAD_VERTEX_SCRATCH[bufferOffset++] = baseCorner[0];\n          QUAD_VERTEX_SCRATCH[bufferOffset++] = baseCorner[1];\n        } else {\n          QUAD_VERTEX_SCRATCH[bufferOffset++] = corner.x;\n          QUAD_VERTEX_SCRATCH[bufferOffset++] = corner.y;\n        }\n        QUAD_VERTEX_SCRATCH[bufferOffset++] = 0;\n        QUAD_VERTEX_SCRATCH[bufferOffset++] = 1;\n        const scaledU = atlasU0 + corner.u * atlasUSpan;\n        const scaledV = atlasV0 + corner.v * atlasVSpan;\n        QUAD_VERTEX_SCRATCH[bufferOffset++] = scaledU;\n        QUAD_VERTEX_SCRATCH[bufferOffset++] = scaledV;\n      }\n\n      for (let i = 0; i < corners.length; i++) {\n        const source = corners[i]!;\n        const target = hitTestCorners[i]!;\n        target.x = source.x;\n        target.y = source.y;\n      }\n\n      screenCornerBuffer = hitTestCorners;\n    };\n\n    let resolvedCorners: QuadCorner[];\n    let shaderModelCorners: QuadCorner[] | undefined;\n    if (useShaderBillboard) {\n      shaderModelCorners = computeBillboardCornersShaderModel({\n        center: billboardShaderInputs.center,\n        halfWidth: billboardShaderInputs.halfWidth,\n        halfHeight: billboardShaderInputs.halfHeight,\n        anchor: billboardShaderInputs.anchor,\n        rotationDeg: billboardShaderInputs.totalRotateDeg,\n      });\n      resolvedCorners = shaderModelCorners;\n      if (SL_DEBUG) {\n        const cpuCorners = calculateBillboardCornerScreenPositions(\n          billboardShaderInputs\n        );\n        const cornerDelta = cpuCorners.map((corner, index) => {\n          const shaderCorner = shaderModelCorners![index]!;\n          return {\n            index,\n            dx: corner.x - shaderCorner.x,\n            dy: corner.y - shaderCorner.y,\n            du: corner.u - shaderCorner.u,\n            dv: corner.v - shaderCorner.v,\n          };\n        });\n        (imageEntry as any).__billboardCornerComparison = {\n          cpuCorners,\n          shaderModelCorners,\n          cornerDelta,\n        };\n      }\n    } else {\n      resolvedCorners = calculateBillboardCornerScreenPositions(\n        billboardShaderInputs\n      );\n    }\n\n    writeBillboardCorners(resolvedCorners, useShaderBillboard);\n\n    if (SL_DEBUG) {\n      (imageEntry as any).__debugBag = {\n        mode: 'billboard',\n        drawingBufferWidth,\n        drawingBufferHeight,\n        pixelRatio,\n        zoom,\n        zoomScaleFactor,\n        baseMetersPerPixel,\n        projected,\n        metersPerPixelAtLat,\n        perspectiveRatio,\n        basePixelsPerMeter,\n        effectivePixelsPerMeter,\n        imageScale,\n        anchor,\n        offsetDef,\n        baseProjected,\n        placement,\n        billboardCornersCpu: useShaderBillboard\n          ? ((imageEntry as any).__billboardCornerComparison?.cpuCorners ??\n            resolvedCorners)\n          : resolvedCorners,\n        billboardCornersShaderModel: shaderModelCorners,\n        billboardCornersUsed: resolvedCorners,\n      };\n    }\n  }\n\n  const hitTestCorners =\n    screenCornerBuffer && screenCornerBuffer.length === 4\n      ? screenCornerBuffer\n      : null;\n\n  return {\n    spriteEntry,\n    imageEntry,\n    imageResource,\n    vertexData: new Float32Array(QUAD_VERTEX_SCRATCH),\n    opacity: imageEntry.opacity,\n    hitTestCorners,\n    screenToClip: screenToClipUniforms,\n    useShaderSurface,\n    surfaceShaderInputs: resolvedSurfaceShaderInputs,\n    surfaceClipEnabled,\n    useShaderBillboard,\n    billboardUniforms,\n  };\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\nconst prepareDrawSpriteImages = <TTag>(\n  projectionHost: ProjectionHost,\n  params: PrepareDrawSpriteImageParams<TTag>\n) => {\n  // Render sprite images. The renderTargetEntries list is already filtered to visible items.\n  // Cache of sprite-specific reference origins (center pixel coordinates).\n  const originCenterCache: ImageCenterCache = new Map();\n\n  const zoom = projectionHost.getZoom();\n  const resolvedScaling =\n    params.resolvedScaling ??\n    resolveScalingOptions({\n      metersPerPixel: params.baseMetersPerPixel,\n      spriteMinPixel: params.spriteMinPixel,\n      spriteMaxPixel: params.spriteMaxPixel,\n      zoomMin: zoom,\n      zoomMax: zoom,\n    });\n  const zoomScaleFactor = calculateZoomScaleFactor(zoom, resolvedScaling);\n\n  // Step 1\n  const itemsWithDepth = collectDepthSortedItemsInternal(\n    projectionHost,\n    zoom,\n    zoomScaleFactor,\n    originCenterCache,\n    params\n  );\n\n  // Step 2\n  const preparedItems: PreparedDrawSpriteImageParams<TTag>[] = [];\n  for (const item of itemsWithDepth) {\n    const prepared = prepareDrawSpriteImageInternal(\n      projectionHost,\n      item,\n      zoom,\n      zoomScaleFactor,\n      originCenterCache,\n      params\n    );\n    if (prepared) {\n      preparedItems.push(prepared);\n    } else {\n      item.image.surfaceShaderInputs = undefined;\n    }\n  }\n\n  return preparedItems;\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create calculation host that binding MapLibre.\n * @param TTag Tag type.\n * @param map MapLibre Map.\n * @returns Calculation host.\n */\nexport const createMapLibreCalculationHost = <TTag>(\n  map: MapLibreMap\n): RenderCalculationHost<TTag> => {\n  const projectionHost = createMapLibreProjectionHost(map);\n  return {\n    prepareDrawSpriteImages: (params) =>\n      prepareDrawSpriteImages(projectionHost, params),\n    release: projectionHost.release,\n  };\n};\n\n/**\n * Create calculation host that pure implementation.\n * @param TTag Tag type.\n * @param params Projection host PrepareDrawSpriteImageInputsparams.\n * @returns Calculation host.\n */\nexport const createCalculationHost = <TTag>(\n  params: ProjectionHostParams\n): RenderCalculationHost<TTag> => {\n  const projectionHost = createProjectionHost(params);\n  return {\n    prepareDrawSpriteImages: (params) =>\n      prepareDrawSpriteImages(projectionHost, params),\n    release: projectionHost.release,\n  };\n};\n\nconst __createWasmProjectionCalculationTestHost = <TTag>(\n  params: ProjectionHostParams\n): RenderCalculationHost<TTag> => {\n  const projectionHost = createWasmProjectionHost(params);\n  return {\n    prepareDrawSpriteImages: (params) =>\n      prepareDrawSpriteImages(projectionHost, params),\n    release: projectionHost.release,\n  };\n};\n\n// Only testing purpose, DO NOT USE in production code.\nexport const __wasmProjectionCalculationTestInternals = {\n  __createWasmProjectionCalculationTestHost,\n};\n","// maplibre-gl-layers - MapLibre's layer extension library enabling\n// the display, movement, and modification of large numbers of dynamic sprite images\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT\n// https://github.com/kekyo/maplibre-gl-layers\n\nimport type {\n  ClipContext,\n  ImageHandleBufferController,\n  IdHandler,\n  InternalSpriteCurrentState,\n  InternalSpriteImageState,\n  MutableSpriteScreenPoint,\n  PreparedDrawSpriteImageParams,\n  PrepareDrawSpriteImageParams,\n  Releaseable,\n  RegisteredImage,\n  RenderCalculationHost,\n  SurfaceShaderCornerState,\n  SurfaceShaderInputs,\n  SpriteOriginReference,\n} from './internalTypes';\nimport { SURFACE_CORNER_DISPLACEMENT_COUNT, type SurfaceCorner } from './math';\nimport type {\n  SpriteAnchor,\n  SpriteLocation,\n  SpritePoint,\n  SpriteScreenPoint,\n  SpriteMode,\n} from './types';\nimport { prepareWasmHost, type BufferHolder, type WasmHost } from './wasmHost';\nimport {\n  prepareProjectionState,\n  type PreparedProjectionState,\n  type ProjectionHostParams,\n} from './projectionHost';\nimport {\n  MIN_CLIP_Z_EPSILON,\n  TRIANGLE_INDICES,\n  ORDER_BUCKET,\n  ORDER_MAX,\n  EPS_NDC,\n} from './const';\nimport {\n  ENABLE_NDC_BIAS_SURFACE,\n  USE_SHADER_BILLBOARD_GEOMETRY,\n  USE_SHADER_SURFACE_GEOMETRY,\n} from './config';\nimport {\n  SPRITE_ORIGIN_REFERENCE_INDEX_NONE,\n  SPRITE_ORIGIN_REFERENCE_KEY_NONE,\n} from './internalTypes';\nimport { QUAD_VERTEX_COUNT, VERTEX_COMPONENT_COUNT } from './shader';\n\n//////////////////////////////////////////////////////////////////////////////////////\n\nconst WASM_ProjectLngLatToClipSpace_MATRIX_ELEMENT_COUNT = 16;\nconst WASM_ProjectLngLatToClipSpace_RESULT_ELEMENT_COUNT = 4;\n\n/**\n * Create `projectLngLatToClipSpace` delegator.\n * @param wasm Wasm hosted reference.\n * @returns projectLngLatToClipSpace function object.\n */\nconst createProjectLngLatToClipSpace = (wasm: WasmHost) => {\n  // Allocate a matrix buffer.\n  const matrixHolder = wasm.allocateTypedBuffer(\n    Float64Array,\n    WASM_ProjectLngLatToClipSpace_MATRIX_ELEMENT_COUNT\n  );\n\n  // Allocate a result buffer.\n  const resultHolder = wasm.allocateTypedBuffer(\n    Float64Array,\n    WASM_ProjectLngLatToClipSpace_RESULT_ELEMENT_COUNT\n  );\n\n  // `projectLngLatToClipSpace` delegation body\n  const projectLngLatToClipSpace = (\n    clipContext: Readonly<ClipContext> | null,\n    location: Readonly<SpriteLocation>\n  ) => {\n    if (!clipContext) {\n      return null;\n    }\n\n    // Prepare the matrix buffer.\n    const { ptr: matrixPtr, buffer: matrix } = matrixHolder.prepare();\n    // Store matrix data into the buffer.\n    matrix.set(clipContext.mercatorMatrix);\n\n    // Prepare the result buffer.\n    const { ptr: resultPtr, buffer: result } = resultHolder.prepare();\n\n    if (\n      wasm.projectLngLatToClipSpace(\n        location.lng,\n        location.lat,\n        location.z ?? 0,\n        matrixPtr,\n        resultPtr\n      )\n    ) {\n      return [result[0]!, result[1]!, result[2]!, result[3]!];\n    } else {\n      return null;\n    }\n  };\n\n  // Attach releaser\n  projectLngLatToClipSpace.release = () => {\n    matrixHolder.release();\n    resultHolder.release();\n  };\n\n  return projectLngLatToClipSpace;\n};\n\n// TODO: Remove this when wasm implementation is done.\nexport const createWasmProjectLngLatToClipSpace = () => {\n  const wasm = prepareWasmHost();\n  return createProjectLngLatToClipSpace(wasm);\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\nconst WASM_CalculateBillboardDepthKey_MATRIX_ELEMENT_COUNT = 16;\nconst WASM_CalculateBillboardDepthKey_RESULT_ELEMENT_COUNT = 1;\n\n/**\n * Create `calculateBillboardDepthKey` delegator.\n * @param wasm Wasm hosted reference.\n * @param preparedState Prepared state.\n * @returns calculateBillboardDepthKey function object.\n */\nconst createCalculateBillboardDepthKey = (\n  wasm: WasmHost,\n  preparedState: PreparedProjectionState\n) => {\n  // Short-circuit.\n  if (\n    !preparedState.pixelMatrixInverse ||\n    preparedState.pixelMatrixInverse.length !==\n      WASM_CalculateBillboardDepthKey_MATRIX_ELEMENT_COUNT ||\n    !preparedState.clipContext ||\n    !preparedState.clipContext.mercatorMatrix ||\n    preparedState.clipContext.mercatorMatrix.length !==\n      WASM_CalculateBillboardDepthKey_MATRIX_ELEMENT_COUNT ||\n    !Number.isFinite(preparedState.worldSize) ||\n    preparedState.worldSize <= 0\n  ) {\n    const fallback = (_center: Readonly<SpriteScreenPoint>): number | null => {\n      return null;\n    };\n    fallback.release = () => {};\n    return fallback;\n  }\n\n  // Allocate an inverse matrix buffer.\n  const inverseHolder = wasm.allocateTypedBuffer(\n    Float64Array,\n    preparedState.pixelMatrixInverse\n  );\n\n  // Allocate a mercator matrix buffer.\n  const mercatorHolder = wasm.allocateTypedBuffer(\n    Float64Array,\n    preparedState.clipContext.mercatorMatrix\n  );\n\n  // Allocate a result buffer.\n  const resultHolder = wasm.allocateTypedBuffer(\n    Float64Array,\n    WASM_CalculateBillboardDepthKey_RESULT_ELEMENT_COUNT\n  );\n\n  // `calculateBillboardDepthKey` delegation body\n  const calculateBillboardDepthKey = (\n    center: Readonly<SpriteScreenPoint>\n  ): number | null => {\n    const { ptr: inversePtr } = inverseHolder.prepare();\n    const { ptr: mercatorPtr } = mercatorHolder.prepare();\n    const { ptr: resultPtr, buffer: resultBuffer } = resultHolder.prepare();\n\n    if (\n      wasm.calculateBillboardDepthKey(\n        center.x,\n        center.y,\n        preparedState.worldSize,\n        inversePtr,\n        mercatorPtr,\n        resultPtr\n      )\n    ) {\n      return resultBuffer[0] ?? null;\n    } else {\n      return null;\n    }\n  };\n\n  // Attach releaser\n  calculateBillboardDepthKey.release = () => {\n    inverseHolder.release();\n    mercatorHolder.release();\n    resultHolder.release();\n  };\n\n  return calculateBillboardDepthKey;\n};\n\n// TODO: Remove this when wasm implementation is done.\nexport const createWasmCalculateBillboardDepthKey = (\n  preparedState: PreparedProjectionState\n) => {\n  const wasm = prepareWasmHost();\n  return createCalculateBillboardDepthKey(wasm, preparedState);\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\nconst WASM_CalculateSurfaceDepthKey_MATRIX_ELEMENT_COUNT = 16;\nconst WASM_CalculateSurfaceDepthKey_DISPLACEMENT_ELEMENT_COUNT =\n  SURFACE_CORNER_DISPLACEMENT_COUNT * 2;\nconst WASM_CalculateSurfaceDepthKey_RESULT_ELEMENT_COUNT = 1;\n\ntype CalculateSurfaceDepthKeyOptions = {\n  readonly indices?: readonly number[];\n  readonly bias?: {\n    readonly ndc: number;\n    readonly minClipZEpsilon?: number;\n  };\n};\n\n/**\n * Create `calculateSurfaceDepthKey` delegator.\n * @param wasm Wasm hosted reference.\n * @param preparedState Prepared state.\n * @returns calculateSurfaceDepthKey function object.\n */\nconst createCalculateSurfaceDepthKey = (\n  wasm: WasmHost,\n  preparedState: PreparedProjectionState\n) => {\n  // Short-circuit.\n  if (\n    !preparedState.clipContext?.mercatorMatrix ||\n    preparedState.clipContext.mercatorMatrix.length !==\n      WASM_CalculateSurfaceDepthKey_MATRIX_ELEMENT_COUNT\n  ) {\n    const fallback = (\n      _base: Readonly<SpriteLocation>,\n      _displacements: readonly SurfaceCorner[]\n    ): number | null => null;\n    fallback.release = () => {};\n    return fallback;\n  }\n\n  // Allocate buffers for immutable matrices.\n  const mercatorHolder = wasm.allocateTypedBuffer(\n    Float64Array,\n    preparedState.clipContext.mercatorMatrix\n  );\n\n  const displacementHolder = wasm.allocateTypedBuffer(\n    Float64Array,\n    WASM_CalculateSurfaceDepthKey_DISPLACEMENT_ELEMENT_COUNT\n  );\n\n  const indexHolder = wasm.allocateTypedBuffer(Int32Array, TRIANGLE_INDICES);\n\n  const resultHolder = wasm.allocateTypedBuffer(\n    Float64Array,\n    WASM_CalculateSurfaceDepthKey_RESULT_ELEMENT_COUNT\n  );\n\n  const calculateSurfaceDepthKey = (\n    baseLngLat: Readonly<SpriteLocation>,\n    displacements: readonly SurfaceCorner[],\n    options?: CalculateSurfaceDepthKeyOptions\n  ): number | null => {\n    if (displacements.length !== SURFACE_CORNER_DISPLACEMENT_COUNT) {\n      return null;\n    }\n\n    const displacementView = displacementHolder.prepare();\n    const displacementBuffer = displacementView.buffer;\n\n    let displacementOffset = 0;\n    for (const corner of displacements) {\n      displacementBuffer[displacementOffset++] = corner.east;\n      displacementBuffer[displacementOffset++] = corner.north;\n    }\n\n    const indexView = indexHolder.prepare();\n    const indexBuffer = indexView.buffer;\n    let indexCount: number = TRIANGLE_INDICES.length;\n    if (options?.indices && options.indices.length > 0) {\n      if (options.indices.length > indexBuffer.length) {\n        return null;\n      }\n      indexCount = options.indices.length;\n      indexBuffer.set(options.indices);\n      let writeIndex = indexCount;\n      while (writeIndex < indexBuffer.length) {\n        indexBuffer[writeIndex++] = 0;\n      }\n    } else {\n      indexBuffer.set(TRIANGLE_INDICES);\n    }\n\n    const { ptr: mercatorPtr } = mercatorHolder.prepare();\n    const { ptr: resultPtr, buffer: resultBuffer } = resultHolder.prepare();\n\n    const bias = options?.bias;\n    const applyBias = bias ? 1 : 0;\n    const biasNdc = bias?.ndc ?? 0;\n    const minClipZEpsilon = bias?.minClipZEpsilon ?? MIN_CLIP_Z_EPSILON;\n\n    const success = wasm.calculateSurfaceDepthKey(\n      baseLngLat.lng,\n      baseLngLat.lat,\n      baseLngLat.z ?? 0,\n      displacementView.ptr,\n      displacements.length,\n      indexView.ptr,\n      indexCount,\n      mercatorPtr,\n      applyBias,\n      biasNdc,\n      minClipZEpsilon,\n      resultPtr\n    );\n\n    if (!success) {\n      return null;\n    }\n\n    return resultBuffer[0] ?? null;\n  };\n\n  // Attach releaser\n  calculateSurfaceDepthKey.release = () => {\n    mercatorHolder.release();\n    displacementHolder.release();\n    indexHolder.release();\n    resultHolder.release();\n  };\n\n  return calculateSurfaceDepthKey;\n};\n\nexport const createWasmCalculateSurfaceDepthKey = (\n  preparedState: PreparedProjectionState\n) => {\n  const wasm = prepareWasmHost();\n  return createCalculateSurfaceDepthKey(wasm, preparedState);\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * ## Input buffer layout (Float64Array)\n *\n * - Header (`INPUT_HEADER_LENGTH`): counts, offsets, feature flags.\n * - Frame constants (`INPUT_FRAME_CONSTANT_LENGTH`): A constant scalar between frames, such as zoom, meters-per-pixel, and screen-to-clip conversion.\n * - Matrices (`INPUT_MATRIX_LENGTH`): mercator/pixel/pixelInverse (16 items ×3).\n * - Resource table (`RESOURCE_STRIDE`× count): Size and texture state of each image handles\n * - Sprite table (`SPRITE_STRIDE`× count): `handle`, `currentLocation`, `cachedMercator`.\n * - Item table (`ITEM_STRIDE`× bucket length): Drawing attributes of each sprite images\n *\n * ## Result buffer layout (Float64Array)\n *\n * - Header (`RESULT_HEADER_LENGTH`): prepared count, stride, feature flags。\n * - Item result (`RESULT_ITEM_STRIDE`): `spriteHandle`, `imageIndex`, `resourceIndex`,\n *   Screen-to-Clip, vertex attributes, hit-test corners, surface/billboard uniforms。\n *\n * Since these struct definitions assume the same order in the Wasm side as well,\n * if you change any constants, you must simultaneously update the Wasm implementation.\n */\n\nconst INPUT_HEADER_LENGTH = 15;\nconst INPUT_FRAME_CONSTANT_LENGTH = 24;\nconst INPUT_MATRIX_LENGTH = 48;\nconst RESOURCE_STRIDE = 9;\nconst SPRITE_STRIDE = 6;\nconst ITEM_STRIDE = 27;\nconst INPUT_BASE_LENGTH =\n  INPUT_HEADER_LENGTH + INPUT_FRAME_CONSTANT_LENGTH + INPUT_MATRIX_LENGTH;\n\nconst RESULT_HEADER_LENGTH = 7;\nconst RESULT_VERTEX_COMPONENT_LENGTH =\n  QUAD_VERTEX_COUNT * VERTEX_COMPONENT_COUNT;\nconst RESULT_HIT_TEST_COMPONENT_LENGTH = 8; // 4 corners * 2 components\nconst RESULT_SURFACE_CORNER_COMPONENT_LENGTH = 4 /* corners */ * 4; /* xyzw */\nconst RESULT_SURFACE_CORNER_MODEL_COMPONENT_LENGTH = 4 /* corners */ * 4; // east,north,lng,lat\nconst RESULT_SURFACE_BLOCK_LENGTH =\n  3 + // mercatorCenter\n  2 + // worldToMercatorScale\n  2 + // halfSizeMeters\n  2 + // anchor\n  2 + // offsetMeters\n  2 + // sin/cos\n  1 + // totalRotateDeg\n  1 + // depthBiasNdc\n  2 + // centerDisplacement\n  4 + // clipCenter xyzw\n  4 + // clipBasisEast\n  4 + // clipBasisNorth\n  RESULT_SURFACE_CORNER_COMPONENT_LENGTH + // clipCorners\n  3 + // baseLngLat\n  3 + // displacedCenter\n  1 + // scaleAdjustment\n  RESULT_SURFACE_CORNER_MODEL_COMPONENT_LENGTH; // corner model (east/north/lng/lat)\nconst RESULT_BILLBOARD_UNIFORM_LENGTH = 8; // center(2)+halfSize(2)+anchor(2)+sin+cos\nconst RESULT_COMMON_ITEM_LENGTH =\n  4 + // spriteIndex,imageIndex,resourceIndex,opacity\n  4 + // screenToClip scale/offset\n  3 + // useShaderSurface, surfaceClipEnabled, useShaderBillboard\n  RESULT_BILLBOARD_UNIFORM_LENGTH;\nconst RESULT_ITEM_STRIDE =\n  RESULT_COMMON_ITEM_LENGTH +\n  RESULT_VERTEX_COMPONENT_LENGTH +\n  RESULT_HIT_TEST_COMPONENT_LENGTH +\n  RESULT_SURFACE_BLOCK_LENGTH;\n\nconst enum InputHeaderFlags {\n  USE_SHADER_SURFACE_GEOMETRY = 1 << 0,\n  USE_SHADER_BILLBOARD_GEOMETRY = 1 << 1,\n  ENABLE_NDC_BIAS_SURFACE = 1 << 2,\n}\n\nconst enum InputHeaderIndex {\n  TOTAL_LENGTH = 0,\n  FRAME_CONST_COUNT = 1,\n  MATRIX_OFFSET = 2,\n  RESOURCE_COUNT = 3,\n  RESOURCE_OFFSET = 4,\n  SPRITE_COUNT = 5,\n  SPRITE_OFFSET = 6,\n  ITEM_COUNT = 7,\n  ITEM_OFFSET = 8,\n  FLAGS = 9,\n  RESERVED0 = 10,\n  RESERVED1 = 11,\n  RESERVED2 = 12,\n  RESERVED3 = 13,\n  RESERVED4 = 14,\n}\n\nconst enum ResultHeaderIndex {\n  PREPARED_COUNT = 0,\n  ITEM_STRIDE = 1,\n  VERTEX_COMPONENT_COUNT = 2,\n  SURFACE_CORNER_COUNT = 3,\n  FLAGS = 4,\n  RESERVED0 = 5,\n  RESERVED1 = 6,\n}\n\nconst enum ResultHeaderFlags {\n  HAS_HIT_TEST = 1 << 0,\n  HAS_SURFACE_INPUTS = 1 << 1,\n}\n\nconst toFiniteOr = (value: number | undefined, fallback: number): number =>\n  Number.isFinite(value) ? (value as number) : fallback;\n\nconst boolToNumber = (value: boolean): number => (value ? 1 : 0);\n\nconst modeToNumber = (mode: SpriteMode): number => (mode === 'surface' ? 0 : 1);\n\nconst computeInputElementCount = (\n  resourceCount: number,\n  spriteCount: number,\n  resultItemCount: number\n): number => {\n  const resourceLength = resourceCount * RESOURCE_STRIDE;\n  const spriteLength = spriteCount * SPRITE_STRIDE;\n  const itemLength = resultItemCount * ITEM_STRIDE;\n  return INPUT_BASE_LENGTH + resourceLength + spriteLength + itemLength;\n};\n\nconst computeResultElementCount = (itemCount: number): number =>\n  RESULT_HEADER_LENGTH + itemCount * RESULT_ITEM_STRIDE;\n\nconst ensureHitTestCorners = (\n  imageEntry: InternalSpriteImageState\n): [\n  MutableSpriteScreenPoint,\n  MutableSpriteScreenPoint,\n  MutableSpriteScreenPoint,\n  MutableSpriteScreenPoint,\n] => {\n  if (!imageEntry.hitTestCorners) {\n    imageEntry.hitTestCorners = [\n      { x: 0, y: 0 },\n      { x: 0, y: 0 },\n      { x: 0, y: 0 },\n      { x: 0, y: 0 },\n    ];\n  }\n  return imageEntry.hitTestCorners;\n};\n\ninterface PreparedInputBuffer extends Releaseable {\n  readonly parameterHolder: BufferHolder<Float64Array>;\n  readonly resultItemCount: number;\n}\n\ninterface WritableWasmProjectionState<TTag> {\n  readonly preparedProjection: PreparedProjectionState;\n  readonly prepareInputBuffer: (\n    params: PrepareDrawSpriteImageParams<TTag>\n  ) => PreparedInputBuffer;\n  readonly getImageRefs: () => readonly InternalSpriteImageState[];\n  readonly getResourceRefs: () => readonly (RegisteredImage | undefined)[];\n}\n\n/**\n * Wasm interoperability dependencies.\n * @remarks These are a group of helpers that perform marshaling to generate input/output data for wasm calculation.\n */\nexport interface WasmCalculationInteropDependencies<TTag> {\n  readonly imageIdHandler: IdHandler<RegisteredImage>;\n  readonly imageHandleBuffersController: ImageHandleBufferController;\n  readonly originReference: SpriteOriginReference;\n  readonly spriteIdHandler: IdHandler<InternalSpriteCurrentState<TTag>>;\n}\n\n/**\n * Create prepared image parameters from wasm calculation.\n * @param inputBuffer Input buffer\n * @param deps Host dependencies\n * @param resultBuffer Received wasm calculation data\n * @returns Prepared parameters for WebGL rendering\n */\nconst converToPreparedDrawImageParams = <TTag>(\n  state: WritableWasmProjectionState<TTag>,\n  deps: WasmCalculationInteropDependencies<TTag>,\n  resultBuffer: BufferHolder<Float64Array>\n): PreparedDrawSpriteImageParams<TTag>[] => {\n  const { buffer } = resultBuffer.prepare();\n  if (buffer.length < RESULT_HEADER_LENGTH) {\n    return [];\n  }\n\n  const preparedCount = Math.max(\n    0,\n    Math.trunc(buffer[ResultHeaderIndex.PREPARED_COUNT] ?? 0)\n  );\n  const itemStride = Math.trunc(buffer[ResultHeaderIndex.ITEM_STRIDE] ?? 0);\n  const flags = Math.trunc(buffer[ResultHeaderIndex.FLAGS] ?? 0);\n  const hasHitTest = (flags & ResultHeaderFlags.HAS_HIT_TEST) !== 0;\n  const hasSurfaceInputs = (flags & ResultHeaderFlags.HAS_SURFACE_INPUTS) !== 0;\n\n  if (\n    itemStride <= 0 ||\n    buffer.length < RESULT_HEADER_LENGTH + preparedCount * itemStride\n  ) {\n    return [];\n  }\n\n  const { spriteIdHandler } = deps;\n  const imageRefs = state.getImageRefs();\n  const resourceRefs = state.getResourceRefs();\n\n  const items: PreparedDrawSpriteImageParams<TTag>[] = [];\n\n  for (let itemIndex = 0; itemIndex < preparedCount; itemIndex++) {\n    const base = RESULT_HEADER_LENGTH + itemIndex * itemStride;\n    let cursor = base;\n\n    const spriteHandle = Math.trunc(buffer[cursor++] ?? -1);\n    const imageIndex = Math.trunc(buffer[cursor++] ?? -1);\n    const resourceIndex = Math.trunc(buffer[cursor++] ?? -1);\n\n    const spriteEntry =\n      spriteHandle >= 0 ? spriteIdHandler.get(spriteHandle) : undefined;\n    const imageEntry = imageRefs[imageIndex];\n    const imageResource = resourceRefs[resourceIndex];\n    if (!spriteEntry || !imageEntry || !imageResource) {\n      continue;\n    }\n\n    const opacity = buffer[cursor++] ?? 0;\n    const screenToClip = {\n      scaleX: buffer[cursor++] ?? 0,\n      scaleY: buffer[cursor++] ?? 0,\n      offsetX: buffer[cursor++] ?? 0,\n      offsetY: buffer[cursor++] ?? 0,\n    };\n    const useShaderSurface = (buffer[cursor++] ?? 0) !== 0;\n    const surfaceClipEnabled = (buffer[cursor++] ?? 0) !== 0;\n    const useShaderBillboard = (buffer[cursor++] ?? 0) !== 0;\n\n    const billboardCenter: SpritePoint = {\n      x: buffer[cursor++] ?? 0,\n      y: buffer[cursor++] ?? 0,\n    };\n    const halfWidth = buffer[cursor++] ?? 0;\n    const halfHeight = buffer[cursor++] ?? 0;\n    const billboardAnchor: SpriteAnchor = {\n      x: buffer[cursor++] ?? 0,\n      y: buffer[cursor++] ?? 0,\n    };\n    const billboardSin = buffer[cursor++] ?? 0;\n    const billboardCos = buffer[cursor++] ?? 0;\n\n    const vertexStart = base + RESULT_COMMON_ITEM_LENGTH;\n    const vertexEnd = vertexStart + RESULT_VERTEX_COMPONENT_LENGTH;\n    const hitTestStart = vertexEnd;\n    const hitTestEnd = hitTestStart + RESULT_HIT_TEST_COMPONENT_LENGTH;\n    const surfaceStart = hitTestEnd;\n\n    if (vertexEnd > buffer.length) {\n      break;\n    }\n\n    const vertexSlice = buffer.subarray(vertexStart, vertexEnd);\n    const vertexData = new Float32Array(RESULT_VERTEX_COMPONENT_LENGTH);\n    for (let i = 0; i < vertexSlice.length; i++) {\n      vertexData[i] = vertexSlice[i] ?? 0;\n    }\n\n    let hitTestCorners: PreparedDrawSpriteImageParams<TTag>['hitTestCorners'] =\n      null;\n    if (hasHitTest) {\n      if (hitTestEnd > buffer.length) {\n        break;\n      }\n      const corners = ensureHitTestCorners(imageEntry);\n      for (let i = 0; i < 4; i++) {\n        const x = buffer[hitTestStart + i * 2] ?? 0;\n        const y = buffer[hitTestStart + i * 2 + 1] ?? 0;\n        corners[i]!.x = x;\n        corners[i]!.y = y;\n      }\n      hitTestCorners = corners;\n    }\n\n    let surfaceShaderInputs: SurfaceShaderInputs | undefined;\n    if (useShaderSurface && hasSurfaceInputs) {\n      if (surfaceStart + RESULT_SURFACE_BLOCK_LENGTH > buffer.length) {\n        break;\n      }\n      let surfaceCursor = surfaceStart;\n      const mercatorCenter = {\n        x: buffer[surfaceCursor++] ?? 0,\n        y: buffer[surfaceCursor++] ?? 0,\n        z: buffer[surfaceCursor++] ?? 0,\n      };\n      const worldToMercatorScale: SurfaceCorner = {\n        east: buffer[surfaceCursor++] ?? 0,\n        north: buffer[surfaceCursor++] ?? 0,\n      };\n      const halfSizeMeters: SurfaceCorner = {\n        east: buffer[surfaceCursor++] ?? 0,\n        north: buffer[surfaceCursor++] ?? 0,\n      };\n      const surfaceAnchor: SpriteAnchor = {\n        x: buffer[surfaceCursor++] ?? 0,\n        y: buffer[surfaceCursor++] ?? 0,\n      };\n      const offsetMeters: SurfaceCorner = {\n        east: buffer[surfaceCursor++] ?? 0,\n        north: buffer[surfaceCursor++] ?? 0,\n      };\n      const sin = buffer[surfaceCursor++] ?? 0;\n      const cos = buffer[surfaceCursor++] ?? 0;\n      const totalRotateDeg = buffer[surfaceCursor++] ?? 0;\n      const depthBiasNdc = buffer[surfaceCursor++] ?? 0;\n      const centerDisplacement: SurfaceCorner = {\n        east: buffer[surfaceCursor++] ?? 0,\n        north: buffer[surfaceCursor++] ?? 0,\n      };\n      const clipCenter = {\n        x: buffer[surfaceCursor++] ?? 0,\n        y: buffer[surfaceCursor++] ?? 0,\n        z: buffer[surfaceCursor++] ?? 0,\n        w: buffer[surfaceCursor++] ?? 0,\n      };\n      const clipBasisEast = {\n        x: buffer[surfaceCursor++] ?? 0,\n        y: buffer[surfaceCursor++] ?? 0,\n        z: buffer[surfaceCursor++] ?? 0,\n        w: buffer[surfaceCursor++] ?? 0,\n      };\n      const clipBasisNorth = {\n        x: buffer[surfaceCursor++] ?? 0,\n        y: buffer[surfaceCursor++] ?? 0,\n        z: buffer[surfaceCursor++] ?? 0,\n        w: buffer[surfaceCursor++] ?? 0,\n      };\n      const clipCorners: Array<{\n        readonly x: number;\n        readonly y: number;\n        readonly z: number;\n        readonly w: number;\n      }> = [];\n      for (let i = 0; i < 4; i++) {\n        clipCorners.push({\n          x: buffer[surfaceCursor++] ?? 0,\n          y: buffer[surfaceCursor++] ?? 0,\n          z: buffer[surfaceCursor++] ?? 0,\n          w: buffer[surfaceCursor++] ?? 0,\n        });\n      }\n      const baseLngLat: SpriteLocation = {\n        lng: buffer[surfaceCursor++] ?? 0,\n        lat: buffer[surfaceCursor++] ?? 0,\n        z: buffer[surfaceCursor++] ?? 0,\n      };\n      const displacedCenter: SpriteLocation = {\n        lng: buffer[surfaceCursor++] ?? 0,\n        lat: buffer[surfaceCursor++] ?? 0,\n        z: buffer[surfaceCursor++] ?? 0,\n      };\n      const scaleAdjustment = buffer[surfaceCursor++] ?? 0;\n\n      const corners: SurfaceShaderCornerState[] = [];\n      for (let i = 0; i < 4; i++) {\n        corners.push({\n          east: buffer[surfaceCursor++] ?? 0,\n          north: buffer[surfaceCursor++] ?? 0,\n          lng: buffer[surfaceCursor++] ?? 0,\n          lat: buffer[surfaceCursor++] ?? 0,\n        });\n      }\n\n      surfaceShaderInputs = {\n        mercatorCenter,\n        worldToMercatorScale,\n        halfSizeMeters,\n        anchor: surfaceAnchor,\n        offsetMeters,\n        sinCos: { sin, cos },\n        totalRotateDeg,\n        depthBiasNdc,\n        centerDisplacement,\n        baseLngLat,\n        displacedCenter,\n        scaleAdjustment,\n        corners,\n        clipCenter,\n        clipBasisEast,\n        clipBasisNorth,\n        clipCorners,\n      };\n      imageEntry.surfaceShaderInputs = surfaceShaderInputs;\n    } else {\n      imageEntry.surfaceShaderInputs = undefined;\n    }\n\n    const billboardUniforms = useShaderBillboard\n      ? {\n          center: billboardCenter,\n          halfWidth,\n          halfHeight,\n          anchor: billboardAnchor,\n          sin: billboardSin,\n          cos: billboardCos,\n        }\n      : null;\n\n    items.push({\n      spriteEntry,\n      imageEntry,\n      imageResource,\n      vertexData,\n      opacity,\n      hitTestCorners,\n      screenToClip,\n      useShaderSurface,\n      surfaceShaderInputs,\n      surfaceClipEnabled,\n      useShaderBillboard,\n      billboardUniforms,\n    });\n  }\n\n  return items;\n};\n\n/**\n * Invoke `prepareDrawSpriteImages` wasm entry point. Marshals both input parameters and output results.\n * @param wasm Wasm host.\n * @param wasmState Wasm projection states.\n * @param deps Wasm interoperability dependencies.\n * @param params Input parameters.\n * @returns Prepared draw image parameters, uses to WebGL render.\n */\nconst prepareDrawSpriteImagesInternal = <TTag>(\n  wasm: WasmHost,\n  wasmState: WritableWasmProjectionState<TTag>,\n  deps: WasmCalculationInteropDependencies<TTag>,\n  params: PrepareDrawSpriteImageParams<TTag>\n): PreparedDrawSpriteImageParams<TTag>[] => {\n  // TODO: Removed in the future.\n  if (!wasm.prepareDrawSpriteImages) {\n    throw new Error(\n      'prepareDrawSpriteImages entry point is not available in the current wasm host.'\n    );\n  }\n\n  // Construct wasm input parameters\n  const inputBuffer = wasmState.prepareInputBuffer(params);\n  try {\n    // Construct wasm result buffer\n    const resultElementCount = computeResultElementCount(\n      inputBuffer.resultItemCount\n    );\n    const resultBuffer = wasm.allocateTypedBuffer(\n      Float64Array,\n      resultElementCount\n    );\n\n    try {\n      // Get the pointers of parameters.\n      const { ptr: paramsPtr } = inputBuffer.parameterHolder.prepare();\n      const { ptr: resultPtr } = resultBuffer.prepare();\n\n      // Invoke wasm entry point.\n      const success = wasm.prepareDrawSpriteImages(paramsPtr, resultPtr);\n      if (!success) {\n        return [];\n      }\n\n      // Convert result using the latest state snapshot (image/resource refs).\n      return converToPreparedDrawImageParams(wasmState, deps, resultBuffer);\n    } finally {\n      resultBuffer.release();\n    }\n  } finally {\n    inputBuffer.release();\n  }\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Construct wasm projection states.\n * @param wasm Wasm host.\n * @param params Projection host parameters.\n * @param deps Wasm interoperability dependencies.\n * @returns\n */\nconst convertToWasmProjectionState = <TTag>(\n  wasm: WasmHost,\n  params: ProjectionHostParams,\n  deps: WasmCalculationInteropDependencies<TTag>\n): WritableWasmProjectionState<TTag> => {\n  const { imageHandleBuffersController, originReference, imageIdHandler } =\n    deps;\n  void imageIdHandler;\n  const preparedProjection = prepareProjectionState(params);\n  let spriteHandles: number[] = [];\n  let imageRefs: InternalSpriteImageState[] = [];\n  let resourceRefs: ReadonlyArray<RegisteredImage | undefined> = [];\n\n  const writeMatrix = (\n    buffer: Float64Array,\n    start: number,\n    matrix: ArrayLike<number> | null | undefined\n  ) => {\n    for (let i = 0; i < 16; i++) {\n      buffer[start + i] = matrix ? (matrix[i] ?? 0) : 0;\n    }\n  };\n\n  const prepareInputBuffer = (\n    callParams: PrepareDrawSpriteImageParams<TTag>\n  ): PreparedInputBuffer => {\n    const { bucket } = callParams;\n    const resultItemCount = bucket.length;\n\n    const spriteHandleSet = new Set<number>();\n    const spriteByHandle = new Map<number, InternalSpriteCurrentState<TTag>>();\n    spriteHandles = [];\n    const registerSprite = (\n      sprite: InternalSpriteCurrentState<TTag>\n    ): number => {\n      const spriteHandle = sprite.handle;\n      if (!spriteHandleSet.has(spriteHandle)) {\n        spriteHandleSet.add(spriteHandle);\n        spriteHandles.push(spriteHandle);\n        spriteByHandle.set(spriteHandle, sprite);\n      }\n      return spriteHandle;\n    };\n\n    imageRefs = [];\n    bucket.forEach(([sprite, image]) => {\n      registerSprite(sprite);\n      imageRefs.push(image);\n    });\n\n    resourceRefs = imageHandleBuffersController.getResourcesByHandle();\n    const resourceCount = resourceRefs.length;\n    const spriteCount = spriteHandles.length;\n    const requiredElements = computeInputElementCount(\n      resourceCount,\n      spriteCount,\n      resultItemCount\n    );\n\n    const parameterHolder = wasm.allocateTypedBuffer(\n      Float64Array,\n      requiredElements\n    );\n\n    const { buffer: parameterBuffer } = parameterHolder.prepare();\n    parameterBuffer.fill(0, 0, requiredElements);\n\n    const frameConstOffset = INPUT_HEADER_LENGTH;\n    const matrixOffset = frameConstOffset + INPUT_FRAME_CONSTANT_LENGTH;\n    const resourceOffset = matrixOffset + INPUT_MATRIX_LENGTH;\n    const spriteOffset = resourceOffset + resourceCount * RESOURCE_STRIDE;\n    const itemOffset = spriteOffset + spriteCount * SPRITE_STRIDE;\n\n    let inputFlags = 0;\n    if (USE_SHADER_SURFACE_GEOMETRY) {\n      inputFlags |= InputHeaderFlags.USE_SHADER_SURFACE_GEOMETRY;\n    }\n    if (USE_SHADER_BILLBOARD_GEOMETRY) {\n      inputFlags |= InputHeaderFlags.USE_SHADER_BILLBOARD_GEOMETRY;\n    }\n    if (ENABLE_NDC_BIAS_SURFACE) {\n      inputFlags |= InputHeaderFlags.ENABLE_NDC_BIAS_SURFACE;\n    }\n\n    parameterBuffer[InputHeaderIndex.TOTAL_LENGTH] = requiredElements;\n    parameterBuffer[InputHeaderIndex.FRAME_CONST_COUNT] =\n      INPUT_FRAME_CONSTANT_LENGTH;\n    parameterBuffer[InputHeaderIndex.MATRIX_OFFSET] = matrixOffset;\n    parameterBuffer[InputHeaderIndex.RESOURCE_COUNT] = resourceCount;\n    parameterBuffer[InputHeaderIndex.RESOURCE_OFFSET] = resourceOffset;\n    parameterBuffer[InputHeaderIndex.SPRITE_COUNT] = spriteCount;\n    parameterBuffer[InputHeaderIndex.SPRITE_OFFSET] = spriteOffset;\n    parameterBuffer[InputHeaderIndex.ITEM_COUNT] = resultItemCount;\n    parameterBuffer[InputHeaderIndex.ITEM_OFFSET] = itemOffset;\n    parameterBuffer[InputHeaderIndex.FLAGS] = inputFlags;\n\n    const frameConstView = parameterBuffer.subarray(\n      frameConstOffset,\n      frameConstOffset + INPUT_FRAME_CONSTANT_LENGTH\n    );\n    let fcCursor = 0;\n    frameConstView[fcCursor++] = toFiniteOr(preparedProjection.zoom, 0);\n    frameConstView[fcCursor++] = toFiniteOr(preparedProjection.worldSize, 0);\n    frameConstView[fcCursor++] = toFiniteOr(\n      preparedProjection.pixelPerMeter,\n      0\n    );\n    frameConstView[fcCursor++] = toFiniteOr(\n      preparedProjection.cameraToCenterDistance,\n      0\n    );\n    frameConstView[fcCursor++] = callParams.baseMetersPerPixel;\n    frameConstView[fcCursor++] = callParams.spriteMinPixel;\n    frameConstView[fcCursor++] = callParams.spriteMaxPixel;\n    frameConstView[fcCursor++] = callParams.drawingBufferWidth;\n    frameConstView[fcCursor++] = callParams.drawingBufferHeight;\n    frameConstView[fcCursor++] = callParams.pixelRatio;\n    frameConstView[fcCursor++] = toFiniteOr(callParams.zoomScaleFactor, 1);\n    frameConstView[fcCursor++] = callParams.identityScaleX;\n    frameConstView[fcCursor++] = callParams.identityScaleY;\n    frameConstView[fcCursor++] = callParams.identityOffsetX;\n    frameConstView[fcCursor++] = callParams.identityOffsetY;\n    frameConstView[fcCursor++] = callParams.screenToClipScaleX;\n    frameConstView[fcCursor++] = callParams.screenToClipScaleY;\n    frameConstView[fcCursor++] = callParams.screenToClipOffsetX;\n    frameConstView[fcCursor++] = callParams.screenToClipOffsetY;\n    frameConstView[fcCursor++] = MIN_CLIP_Z_EPSILON;\n    frameConstView[fcCursor++] = ORDER_BUCKET;\n    frameConstView[fcCursor++] = ORDER_MAX;\n    frameConstView[fcCursor++] = EPS_NDC;\n    frameConstView[fcCursor++] = boolToNumber(ENABLE_NDC_BIAS_SURFACE);\n\n    writeMatrix(\n      parameterBuffer,\n      matrixOffset,\n      preparedProjection.mercatorMatrix\n    );\n    writeMatrix(\n      parameterBuffer,\n      matrixOffset + 16,\n      preparedProjection.pixelMatrix\n    );\n    writeMatrix(\n      parameterBuffer,\n      matrixOffset + 32,\n      preparedProjection.pixelMatrixInverse\n    );\n\n    let cursor = resourceOffset;\n    for (let handle = 0; handle < resourceCount; handle++) {\n      const resource = resourceRefs[handle];\n      parameterBuffer[cursor++] = handle;\n      if (resource) {\n        parameterBuffer[cursor++] = resource.width;\n        parameterBuffer[cursor++] = resource.height;\n        parameterBuffer[cursor++] = resource.texture ? 1 : 0;\n        parameterBuffer[cursor++] =\n          typeof resource.atlasPageIndex === 'number'\n            ? resource.atlasPageIndex\n            : -1;\n        parameterBuffer[cursor++] =\n          typeof resource.atlasU0 === 'number' ? resource.atlasU0 : 0;\n        parameterBuffer[cursor++] =\n          typeof resource.atlasV0 === 'number' ? resource.atlasV0 : 0;\n        parameterBuffer[cursor++] =\n          typeof resource.atlasU1 === 'number' ? resource.atlasU1 : 1;\n        parameterBuffer[cursor++] =\n          typeof resource.atlasV1 === 'number' ? resource.atlasV1 : 1;\n      } else {\n        parameterBuffer[cursor++] = 0;\n        parameterBuffer[cursor++] = 0;\n        parameterBuffer[cursor++] = 0;\n        parameterBuffer[cursor++] = -1;\n        parameterBuffer[cursor++] = 0;\n        parameterBuffer[cursor++] = 0;\n        parameterBuffer[cursor++] = 1;\n        parameterBuffer[cursor++] = 1;\n      }\n    }\n\n    cursor = spriteOffset;\n    spriteHandles.forEach((handle) => {\n      const sprite = spriteByHandle.get(handle);\n      if (!sprite) {\n        return;\n      }\n      const location = sprite.currentLocation;\n      const mercator = sprite.cachedMercator;\n      parameterBuffer[cursor++] = location.lng;\n      parameterBuffer[cursor++] = location.lat;\n      parameterBuffer[cursor++] = location.z ?? 0;\n      parameterBuffer[cursor++] = mercator.x;\n      parameterBuffer[cursor++] = mercator.y;\n      parameterBuffer[cursor++] = mercator.z ?? 0;\n    });\n\n    const originReferenceKeys =\n      callParams.bucketBuffers?.originReferenceKeys ?? null;\n    const originTargetIndices =\n      callParams.bucketBuffers?.originTargetIndices ?? null;\n\n    cursor = itemOffset;\n    bucket.forEach(([sprite, image], index) => {\n      const imageHandle = image.imageHandle;\n      const spriteHandle = sprite.handle;\n      const originKeyCandidate =\n        originReferenceKeys?.[index] ?? image.originReferenceKey;\n      const originKey =\n        originKeyCandidate !== undefined &&\n        originKeyCandidate !== SPRITE_ORIGIN_REFERENCE_KEY_NONE\n          ? originKeyCandidate\n          : originReference.encodeKey(image.subLayer, image.order);\n      const originIndex =\n        originTargetIndices?.[index] ?? image.originRenderTargetIndex;\n      const originLocation = image.originLocation;\n      const currentLocation = sprite.currentLocation;\n      parameterBuffer[cursor++] = spriteHandle;\n      parameterBuffer[cursor++] = imageHandle;\n      parameterBuffer[cursor++] =\n        originIndex ?? SPRITE_ORIGIN_REFERENCE_INDEX_NONE;\n      parameterBuffer[cursor++] = boolToNumber(\n        originLocation?.useResolvedAnchor ?? false\n      );\n      parameterBuffer[cursor++] = modeToNumber(image.mode);\n      parameterBuffer[cursor++] = image.scale ?? 1;\n      parameterBuffer[cursor++] = image.opacity;\n      const anchor = image.anchor ?? { x: 0, y: 0 };\n      parameterBuffer[cursor++] = anchor.x;\n      parameterBuffer[cursor++] = anchor.y;\n      const offset = image.offset ?? { offsetDeg: 0, offsetMeters: 0 };\n      parameterBuffer[cursor++] = offset.offsetMeters;\n      parameterBuffer[cursor++] = offset.offsetDeg;\n      parameterBuffer[cursor++] = toFiniteOr(image.displayedRotateDeg, 0);\n      parameterBuffer[cursor++] = toFiniteOr(image.resolvedBaseRotateDeg, 0);\n      parameterBuffer[cursor++] = toFiniteOr(image.rotateDeg, 0);\n      parameterBuffer[cursor++] = image.order;\n      parameterBuffer[cursor++] = image.subLayer;\n      parameterBuffer[cursor++] = originKey ?? SPRITE_ORIGIN_REFERENCE_KEY_NONE;\n      parameterBuffer[cursor++] =\n        originReferenceKeys?.[index] ?? SPRITE_ORIGIN_REFERENCE_KEY_NONE;\n      parameterBuffer[cursor++] =\n        originTargetIndices?.[index] ?? SPRITE_ORIGIN_REFERENCE_INDEX_NONE;\n      parameterBuffer[cursor++] = image.imageHandle;\n      parameterBuffer[cursor++] = currentLocation.lng;\n      parameterBuffer[cursor++] = currentLocation.lat;\n      parameterBuffer[cursor++] = currentLocation.z ?? 0;\n      parameterBuffer[cursor++] = originLocation?.subLayer ?? -1;\n      parameterBuffer[cursor++] = originLocation?.order ?? -1;\n      parameterBuffer[cursor++] = boolToNumber(\n        originLocation?.useResolvedAnchor ?? false\n      );\n      parameterBuffer[cursor++] = index;\n    });\n\n    return {\n      parameterHolder,\n      resultItemCount,\n      release: () => parameterHolder.release(),\n    };\n  };\n\n  return {\n    preparedProjection,\n    prepareInputBuffer,\n    getImageRefs: () => imageRefs,\n    getResourceRefs: () => resourceRefs,\n  };\n};\n\n/**\n * Create calculation host that wasm implementation.\n * @param TTag Tag type.\n * @param params Projection host params.\n * @param deps Wasm interoperability dependencies.\n * @returns Calculation host.\n */\nexport const createWasmCalculationHost = <TTag>(\n  params: ProjectionHostParams,\n  deps: WasmCalculationInteropDependencies<TTag>\n): RenderCalculationHost<TTag> => {\n  // Get wasm host.\n  const wasm = prepareWasmHost();\n\n  // Prepare parameters.\n  const wasmState = convertToWasmProjectionState<TTag>(wasm, params, deps);\n  try {\n    return {\n      prepareDrawSpriteImages: (params) =>\n        prepareDrawSpriteImagesInternal<TTag>(wasm, wasmState, deps, params),\n      release: () => {},\n    };\n  } catch (error) {\n    throw error;\n  }\n};\n\n// Only testing purpose, DO NOT USE in production code.\nexport const __wasmCalculationTestInternals = {\n  convertToWasmProjectionState,\n  converToPreparedDrawImageParams,\n  prepareDrawSpriteImagesInternal,\n};\n","// maplibre-gl-layers - MapLibre's layer extension library enabling\n// the display, movement, and modification of large numbers of dynamic sprite images\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT\n// https://github.com/kekyo/maplibre-gl-layers\n\nimport { ORDER_BUCKET } from './const';\nimport {\n  SPRITE_ORIGIN_REFERENCE_INDEX_NONE,\n  SPRITE_ORIGIN_REFERENCE_KEY_NONE,\n  type ImageHandleBufferController,\n  type ImageHandleBuffers,\n  type IdHandle,\n  type IdHandler,\n  type ImageResourceTable,\n  type RegisteredImage,\n  type RenderTargetBucketBuffers,\n  type RenderTargetEntryLike,\n  type SpriteOriginReference,\n  type SpriteOriginReferenceKey,\n} from './internalTypes';\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create id handler object.\n * @param T Identified instance type\n * @returns Image id handler object.\n * @remarks It is used for (wasm) interoperability for image identity.\n */\nexport const createIdHandler = <T>(): IdHandler<T> => {\n  /**\n   * Maps instance identifiers to their numeric handles.\n   */\n  const handleById = new Map<string, number>();\n\n  /**\n   * Table of registered instance indexed by handle. Index 0 is reserved.\n   */\n  const byHandle: T[] = [undefined!];\n\n  /**\n   * Reusable handles reclaimed from unregistered instance.\n   */\n  const reusableHandles: number[] = [];\n\n  /**\n   * Next handle to allocate when the reusable pool is empty.\n   */\n  let nexteHandle = 1;\n\n  /**\n   * Allocates a numeric handle for the specified instance identifier.\n   * @param {string} rawId - Raw identifier.\n   * @returns {number} Allocated handle.\n   */\n  const allocate = (rawId: string): number => {\n    const handle =\n      reusableHandles.length > 0 ? reusableHandles.pop()! : nexteHandle++;\n    handleById.set(rawId, handle);\n    return handle;\n  };\n\n  /**\n   * Stores an instance reference at the given handle index.\n   * @param {number} handle - Numeric handle.\n   * @param {T} instance - Registered instance.\nx   */\n  const store = (handle: number, instance: T): void => {\n    byHandle[handle] = instance;\n  };\n\n  /**\n   * Get instance by handle.\n   * @param handle Numeric handle\n   * @returns Instance.\n   */\n  const get = (handle: IdHandle): T => {\n    return byHandle[handle]!;\n  };\n\n  /**\n   * Releases the numeric handle associated with the provided identifier.\n   * @param {string} rawId - Raw identifier.\n   */\n  const release = (rawId: string): void => {\n    const handle = handleById.get(rawId);\n    if (handle === undefined) {\n      return;\n    }\n    handleById.delete(rawId);\n    byHandle[handle] = undefined!;\n    reusableHandles.push(handle);\n  };\n\n  /**\n   * Clears all handle bookkeeping state.\n   * @returns {void}\n   */\n  const reset = (): void => {\n    handleById.clear();\n    byHandle.length = 1;\n    byHandle[0] = undefined!;\n    reusableHandles.length = 0;\n    nexteHandle = 1;\n  };\n\n  return {\n    allocate,\n    store,\n    get,\n    release,\n    reset,\n  };\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Image handle buffer controller interface.\n * @remarks It is used for (wasm) interoperability for image identity.\n */\nexport const createImageHandleBufferController =\n  (): ImageHandleBufferController => {\n    /**\n     * Scheduled image map, interprets at the ensure function.\n     */\n    let scheduledImages: ReadonlyMap<string, RegisteredImage> = undefined!;\n\n    /**\n     * Marks whether the metadata buffers require regeneration.\n     */\n    let imageHandleBuffersDirty = false;\n\n    /**\n     * Cached metadata buffers indexed by image handle.\n     * Index 0 remains unused so handle values start at 1.\n     */\n    let imageHandleBuffers: ImageHandleBuffers = {\n      widths: new Float32Array(1),\n      heights: new Float32Array(1),\n      textureReady: new Uint8Array(1),\n    };\n\n    let resourcesByHandle: (RegisteredImage | undefined)[] = [undefined];\n\n    /**\n     * Flag metadata buffers for regeneration.\n     * @param images Image map.\n     */\n    const markDirty = (images: ReadonlyMap<string, RegisteredImage>): void => {\n      scheduledImages = images;\n      imageHandleBuffersDirty = true;\n    };\n\n    /**\n     * Rebuilds the metadata buffers when flagged as dirty.\n     * @returns {ImageHandleBuffers} Metadata buffers aligned by handle index.\n     */\n    const ensure = (): ImageHandleBuffers => {\n      if (!imageHandleBuffersDirty) {\n        return imageHandleBuffers;\n      }\n\n      let maxHandle = 0;\n      scheduledImages.forEach((image) => {\n        if (image.handle > maxHandle) {\n          maxHandle = image.handle;\n        }\n      });\n\n      const size = Math.max(maxHandle + 1, 1);\n      if (imageHandleBuffers.widths.length !== size) {\n        imageHandleBuffers = {\n          widths: new Float32Array(size),\n          heights: new Float32Array(size),\n          textureReady: new Uint8Array(size),\n        };\n      } else {\n        imageHandleBuffers.widths.fill(0);\n        imageHandleBuffers.heights.fill(0);\n        imageHandleBuffers.textureReady.fill(0);\n      }\n\n      if (resourcesByHandle.length !== size) {\n        resourcesByHandle = new Array<RegisteredImage | undefined>(size).fill(\n          undefined\n        );\n      } else {\n        resourcesByHandle.fill(undefined);\n      }\n\n      scheduledImages.forEach((image) => {\n        const handle = image.handle;\n        if (handle <= 0 || handle >= size) {\n          return;\n        }\n        imageHandleBuffers.widths[handle] = image.width;\n        imageHandleBuffers.heights[handle] = image.height;\n        imageHandleBuffers.textureReady[handle] = image.texture ? 1 : 0;\n        resourcesByHandle[handle] = image;\n      });\n\n      imageHandleBuffersDirty = false;\n      return imageHandleBuffers;\n    };\n\n    /**\n     * Returns registered images aligned by handle index. Ensures buffers are up to date.\n     */\n    const getResourcesByHandle = (): ImageResourceTable => {\n      if (imageHandleBuffersDirty) {\n        ensure();\n      }\n      return resourcesByHandle;\n    };\n\n    return {\n      markDirty,\n      ensure,\n      getResourcesByHandle,\n    };\n  };\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates typed buffers aligned with the supplied render target bucket for WASM interop.\n * @param bucket Render target bucket containing sprite/image pairs.\n * @param options Optional configuration.\n * @returns {RenderTargetBucketBuffers} Typed array views of origin metadata.\n */\nexport const createRenderTargetBucketBuffers = <T>(\n  bucket: readonly Readonly<RenderTargetEntryLike<T>>[],\n  options: {\n    readonly originReference?: SpriteOriginReference;\n  } = {}\n): RenderTargetBucketBuffers => {\n  const length = bucket.length;\n  const originReferenceKeys = new Int32Array(length);\n  const originTargetIndices = new Int32Array(length);\n\n  for (let index = 0; index < length; index++) {\n    const entry = bucket[index];\n    if (!entry) {\n      originReferenceKeys[index] = SPRITE_ORIGIN_REFERENCE_KEY_NONE;\n      originTargetIndices[index] = SPRITE_ORIGIN_REFERENCE_INDEX_NONE;\n      continue;\n    }\n    const [, image] = entry;\n    let key = image.originReferenceKey;\n    if (\n      key === undefined ||\n      key === null ||\n      Number.isNaN(key) ||\n      !Number.isFinite(key)\n    ) {\n      key = SPRITE_ORIGIN_REFERENCE_KEY_NONE;\n    }\n    if (\n      key === SPRITE_ORIGIN_REFERENCE_KEY_NONE &&\n      image.originLocation !== undefined &&\n      options.originReference\n    ) {\n      key = options.originReference.encodeKey(\n        image.originLocation.subLayer,\n        image.originLocation.order\n      );\n    }\n    originReferenceKeys[index] = key;\n\n    let originIndex = image.originRenderTargetIndex;\n    if (\n      originIndex === undefined ||\n      originIndex === null ||\n      !Number.isFinite(originIndex)\n    ) {\n      originIndex = SPRITE_ORIGIN_REFERENCE_INDEX_NONE;\n    }\n    originTargetIndices[index] = originIndex;\n  }\n\n  return {\n    originReferenceKeys,\n    originTargetIndices,\n  };\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Encode/Decode a (subLayer, order) pair into a compact numeric key.\n * @remarks It is used for (wasm) interoperability for image identity.\n */\nexport const createSpriteOriginReference = (): SpriteOriginReference => {\n  /**\n   * Encodes a (subLayer, order) pair into a compact numeric key.\n   * @param subLayer Sub-layer identifier within the sprite.\n   * @param order Order slot inside the sub-layer.\n   * @returns Encoded origin reference key.\n   */\n  const encodeKey = (\n    subLayer: number,\n    order: number\n  ): SpriteOriginReferenceKey => subLayer * ORDER_BUCKET + order;\n\n  /**\n   * Decodes an origin reference key back into the sub-layer and order pair.\n   * @param key Encoded origin reference key.\n   * @returns `subLayer` and `order` components; when the key is invalid,   both values are set to `-1`.\n   */\n  const decodeKey = (\n    key: SpriteOriginReferenceKey\n  ): { subLayer: number; order: number } => {\n    if (key < 0) {\n      return { subLayer: -1, order: -1 };\n    }\n    const subLayer = Math.trunc(key / ORDER_BUCKET);\n    const order = key % ORDER_BUCKET;\n    return { subLayer, order };\n  };\n\n  return {\n    encodeKey,\n    decodeKey,\n  };\n};\n","// maplibre-gl-layers - MapLibre's layer extension library enabling\n// the display, movement, and modification of large numbers of dynamic sprite images\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT\n// https://github.com/kekyo/maplibre-gl-layers\n\nimport type { Canvas2DContext, Canvas2DSource } from './internalTypes';\nimport type { Deferred } from 'async-primitives';\n\n//////////////////////////////////////////////////////////////////////////////////////\n\nexport interface AtlasManagerOptions {\n  readonly pageWidth?: number;\n  readonly pageHeight?: number;\n  readonly padding?: number;\n}\n\nexport interface AtlasPlacement {\n  readonly pageIndex: number;\n  readonly width: number;\n  readonly height: number;\n  readonly x: number;\n  readonly y: number;\n  readonly u0: number;\n  readonly v0: number;\n  readonly u1: number;\n  readonly v1: number;\n}\n\nexport interface AtlasPageState {\n  readonly index: number;\n  readonly width: number;\n  readonly height: number;\n  readonly canvas: Canvas2DSource;\n  needsUpload: boolean;\n}\n\nexport interface AtlasManager {\n  readonly upsertImage: (id: string, bitmap: ImageBitmap) => AtlasPlacement;\n  readonly removeImage: (id: string) => boolean;\n  readonly getImagePlacement: (id: string) => AtlasPlacement | null;\n  readonly getPages: () => readonly AtlasPageState[];\n  readonly markPageClean: (pageIndex: number) => void;\n  readonly clear: () => void;\n}\n\nexport interface AtlasQueueUpsertEntry {\n  readonly imageId: string;\n  readonly bitmap: ImageBitmap;\n  readonly deferred: Deferred<boolean>;\n}\n\nexport interface AtlasQueueOptions {\n  readonly maxOperationsPerPass: number;\n  readonly timeBudgetMs: number;\n}\n\nexport interface AtlasQueueCallbacks {\n  readonly onChunkProcessed: () => void;\n}\n\nexport interface AtlasOperationQueue {\n  readonly enqueueUpsert: (entry: AtlasQueueUpsertEntry) => void;\n  readonly flushPending: () => void;\n  readonly cancelForImage: (imageId: string, reason?: Error) => void;\n  readonly rejectAll: (reason: Error) => void;\n  readonly pendingCount: number;\n}\n\n//////////////////////////////////////////////////////////////////////////////////////\n\nconst DEFAULT_PAGE_WIDTH = 2048;\nconst DEFAULT_PAGE_HEIGHT = 2048;\nconst DEFAULT_PADDING = 1;\n\ninterface ManagedAtlasImage {\n  readonly id: string;\n  bitmap: ImageBitmap;\n  width: number;\n  height: number;\n  placement: AtlasPlacement | null;\n}\n\ninterface LayoutSlot {\n  readonly x: number;\n  readonly y: number;\n}\n\ninterface InternalAtlasPage extends AtlasPageState {\n  readonly ctx: Canvas2DContext;\n  cursorX: number;\n  cursorY: number;\n  rowHeight: number;\n}\n\nconst createFallbackCanvas2D = (\n  width: number,\n  height: number\n): { canvas: Canvas2DSource; ctx: Canvas2DContext } => {\n  const fallbackCanvas = {\n    width,\n    height,\n  } as Record<string, unknown>;\n\n  const fallbackContext = {\n    canvas: fallbackCanvas,\n    drawImage: () => {},\n    clearRect: () => {},\n    save: () => {},\n    restore: () => {},\n    scale: () => {},\n    translate: () => {},\n    imageSmoothingEnabled: false,\n  } as Record<string, unknown>;\n\n  (fallbackCanvas as any).getContext = () =>\n    fallbackContext as unknown as CanvasRenderingContext2D;\n\n  return {\n    canvas: fallbackCanvas as unknown as Canvas2DSource,\n    ctx: fallbackContext as unknown as Canvas2DContext,\n  };\n};\n\nconst createCanvas2D = (\n  width: number,\n  height: number\n): { canvas: Canvas2DSource; ctx: Canvas2DContext } => {\n  if (typeof OffscreenCanvas !== 'undefined') {\n    const canvas = new OffscreenCanvas(width, height);\n    const ctx = canvas.getContext('2d');\n    if (!ctx) {\n      throw new Error('Failed to acquire 2D context for sprite atlas.');\n    }\n    return { canvas, ctx };\n  }\n\n  if (typeof document !== 'undefined') {\n    const canvas = document.createElement('canvas');\n    canvas.width = width;\n    canvas.height = height;\n    const ctx = canvas.getContext('2d');\n    if (!ctx) {\n      throw new Error('Failed to acquire 2D context for sprite atlas.');\n    }\n    return { canvas, ctx };\n  }\n\n  return createFallbackCanvas2D(width, height);\n};\n\nconst clampPositiveInteger = (value: number): number => {\n  if (!Number.isFinite(value) || value <= 0) {\n    return 1;\n  }\n  return Math.max(1, Math.round(value));\n};\n\nconst tryAllocateInPage = (\n  page: InternalAtlasPage,\n  width: number,\n  height: number\n): LayoutSlot | null => {\n  if (page.cursorX + width > page.width) {\n    const nextRowY = page.cursorY + page.rowHeight;\n    if (nextRowY + height > page.height) {\n      return null;\n    }\n    page.cursorX = 0;\n    page.cursorY = nextRowY;\n    page.rowHeight = 0;\n  }\n\n  if (page.cursorY + height > page.height) {\n    return null;\n  }\n\n  const slot: LayoutSlot = {\n    x: page.cursorX,\n    y: page.cursorY,\n  };\n  page.cursorX += width;\n  if (height > page.rowHeight) {\n    page.rowHeight = height;\n  }\n  return slot;\n};\n\nconst createPage = (\n  index: number,\n  width: number,\n  height: number\n): InternalAtlasPage => {\n  const { canvas, ctx } = createCanvas2D(width, height);\n  ctx.clearRect(0, 0, width, height);\n  return {\n    index,\n    width,\n    height,\n    canvas,\n    ctx,\n    cursorX: 0,\n    cursorY: 0,\n    rowHeight: 0,\n    needsUpload: true,\n  };\n};\n\nconst applyPlacementToPage = (\n  image: ManagedAtlasImage,\n  page: InternalAtlasPage,\n  slot: LayoutSlot,\n  padding: number\n): AtlasPlacement => {\n  const drawX = slot.x + padding;\n  const drawY = slot.y + padding;\n  page.ctx.drawImage(image.bitmap, drawX, drawY);\n  page.needsUpload = true;\n\n  const placement: AtlasPlacement = {\n    pageIndex: page.index,\n    width: image.width,\n    height: image.height,\n    x: drawX,\n    y: drawY,\n    u0: drawX / page.width,\n    v0: drawY / page.height,\n    u1: (drawX + image.width) / page.width,\n    v1: (drawY + image.height) / page.height,\n  };\n  image.placement = placement;\n  return placement;\n};\n\nconst redrawPlacementOnPage = (\n  image: ManagedAtlasImage,\n  page: InternalAtlasPage,\n  placement: AtlasPlacement\n): AtlasPlacement => {\n  page.ctx.clearRect(\n    placement.x,\n    placement.y,\n    placement.width,\n    placement.height\n  );\n  page.ctx.drawImage(image.bitmap, placement.x, placement.y);\n  page.needsUpload = true;\n  image.placement = placement;\n  return placement;\n};\n\nconst sortImagesForPacking = (\n  left: ManagedAtlasImage,\n  right: ManagedAtlasImage\n): number => {\n  if (left.height !== right.height) {\n    return right.height - left.height;\n  }\n  if (left.width !== right.width) {\n    return right.width - left.width;\n  }\n  return left.id.localeCompare(right.id);\n};\n\nexport const createAtlasManager = (\n  options?: AtlasManagerOptions\n): AtlasManager => {\n  const pageWidth = clampPositiveInteger(\n    options?.pageWidth ?? DEFAULT_PAGE_WIDTH\n  );\n  const pageHeight = clampPositiveInteger(\n    options?.pageHeight ?? DEFAULT_PAGE_HEIGHT\n  );\n  const padding = Math.max(0, Math.round(options?.padding ?? DEFAULT_PADDING));\n\n  const images = new Map<string, ManagedAtlasImage>();\n  let pages: InternalAtlasPage[] = [];\n\n  const ensureFitsInPage = (image: ManagedAtlasImage): void => {\n    const paddedWidth = image.width + padding * 2;\n    const paddedHeight = image.height + padding * 2;\n    if (paddedWidth > pageWidth || paddedHeight > pageHeight) {\n      throw new Error(\n        `[SpriteLayer][Atlas] Image \"${image.id}\" (${image.width}x${image.height}) exceeds atlas page size ${pageWidth}x${pageHeight}.`\n      );\n    }\n  };\n\n  const placeImageIncrementally = (\n    image: ManagedAtlasImage\n  ): AtlasPlacement => {\n    ensureFitsInPage(image);\n    const paddedWidth = image.width + padding * 2;\n    const paddedHeight = image.height + padding * 2;\n\n    for (const page of pages) {\n      const slot = tryAllocateInPage(page, paddedWidth, paddedHeight);\n      if (slot) {\n        return applyPlacementToPage(image, page, slot, padding);\n      }\n    }\n\n    const newPage = createPage(pages.length, pageWidth, pageHeight);\n    pages.push(newPage);\n    const slot = tryAllocateInPage(newPage, paddedWidth, paddedHeight);\n    if (!slot) {\n      throw new Error(\n        `[SpriteLayer][Atlas] Unable to allocate image \"${image.id}\" on a fresh page.`\n      );\n    }\n    return applyPlacementToPage(image, newPage, slot, padding);\n  };\n\n  const rebuildAtlas = (): void => {\n    if (images.size === 0) {\n      pages = [];\n      return;\n    }\n\n    const sortedImages = Array.from(images.values()).sort(sortImagesForPacking);\n    const rebuiltPages: InternalAtlasPage[] = [];\n\n    for (const entry of sortedImages) {\n      const paddedWidth = entry.width + padding * 2;\n      const paddedHeight = entry.height + padding * 2;\n\n      if (paddedWidth > pageWidth || paddedHeight > pageHeight) {\n        throw new Error(\n          `[SpriteLayer][Atlas] Image \"${entry.id}\" (${entry.width}x${entry.height}) exceeds atlas page size ${pageWidth}x${pageHeight}.`\n        );\n      }\n\n      let allocatedSlot: LayoutSlot | null = null;\n      let targetPage: InternalAtlasPage | null = null;\n\n      for (const page of rebuiltPages) {\n        const slot = tryAllocateInPage(page, paddedWidth, paddedHeight);\n        if (slot) {\n          allocatedSlot = slot;\n          targetPage = page;\n          break;\n        }\n      }\n\n      if (!allocatedSlot || !targetPage) {\n        const newPage = createPage(rebuiltPages.length, pageWidth, pageHeight);\n        rebuiltPages.push(newPage);\n        allocatedSlot = tryAllocateInPage(newPage, paddedWidth, paddedHeight);\n        targetPage = newPage;\n\n        if (!allocatedSlot) {\n          throw new Error(\n            `[SpriteLayer][Atlas] Unable to allocate image \"${entry.id}\" on a fresh page.`\n          );\n        }\n      }\n\n      applyPlacementToPage(entry, targetPage, allocatedSlot, padding);\n    }\n\n    pages = rebuiltPages;\n  };\n\n  return {\n    upsertImage: (id: string, bitmap: ImageBitmap): AtlasPlacement => {\n      const width = clampPositiveInteger(bitmap.width);\n      const height = clampPositiveInteger(bitmap.height);\n      const existing = images.get(id);\n\n      if (existing) {\n        existing.bitmap = bitmap;\n        const sizeChanged =\n          existing.width !== width || existing.height !== height;\n        existing.width = width;\n        existing.height = height;\n\n        if (!sizeChanged && existing.placement) {\n          const page = pages[existing.placement.pageIndex];\n          if (!page) {\n            throw new Error(\n              `[SpriteLayer][Atlas] Missing atlas page ${existing.placement.pageIndex} for image \"${id}\".`\n            );\n          }\n          return redrawPlacementOnPage(existing, page, existing.placement);\n        }\n\n        rebuildAtlas();\n      } else {\n        const image: ManagedAtlasImage = {\n          id,\n          bitmap,\n          width,\n          height,\n          placement: null,\n        };\n        images.set(id, image);\n\n        try {\n          return placeImageIncrementally(image);\n        } catch (error) {\n          images.delete(id);\n          throw error;\n        }\n      }\n\n      const entry = images.get(id);\n      if (!entry || !entry.placement) {\n        throw new Error(\n          `[SpriteLayer][Atlas] Failed to register image \"${id}\" in the atlas.`\n        );\n      }\n      return entry.placement;\n    },\n\n    removeImage: (id: string): boolean => {\n      const removed = images.delete(id);\n      if (removed) {\n        rebuildAtlas();\n      }\n      return removed;\n    },\n\n    getImagePlacement: (id: string): AtlasPlacement | null => {\n      const entry = images.get(id);\n      return entry?.placement ?? null;\n    },\n\n    getPages: (): readonly AtlasPageState[] => {\n      return pages.slice();\n    },\n\n    markPageClean: (pageIndex: number): void => {\n      const page = pages[pageIndex];\n      if (page) {\n        page.needsUpload = false;\n      }\n    },\n\n    clear: (): void => {\n      images.clear();\n      pages = [];\n    },\n  };\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\nexport const createAtlasOperationQueue = (\n  atlasManager: AtlasManager,\n  options: AtlasQueueOptions,\n  callbacks: AtlasQueueCallbacks\n): AtlasOperationQueue => {\n  const queue: AtlasQueueUpsertEntry[] = [];\n  let timer: ReturnType<typeof setTimeout> | null = null;\n  let isProcessing = false;\n\n  const normalizedMaxOps = Math.max(1, options.maxOperationsPerPass | 0);\n\n  const now = (): number =>\n    typeof performance !== 'undefined' ? performance.now() : Date.now();\n\n  const processChunk = (\n    timeBudgetMs: number = options.timeBudgetMs\n  ): { processedAny: boolean; hasRemaining: boolean } => {\n    if (isProcessing || queue.length === 0) {\n      return {\n        processedAny: false,\n        hasRemaining: queue.length > 0,\n      };\n    }\n    isProcessing = true;\n    let processedAny = false;\n    const hasBudget = Number.isFinite(timeBudgetMs) && timeBudgetMs > 0;\n    const budgetStart = hasBudget ? now() : 0;\n    try {\n      let processedCount = 0;\n      while (queue.length > 0) {\n        const entry = queue.shift()!;\n        try {\n          atlasManager.upsertImage(entry.imageId, entry.bitmap);\n          entry.deferred.resolve(true);\n          processedAny = true;\n        } catch (error) {\n          entry.deferred.reject(error);\n        }\n        processedCount += 1;\n        if (processedCount >= normalizedMaxOps) {\n          break;\n        }\n        if (hasBudget && now() - budgetStart >= timeBudgetMs) {\n          break;\n        }\n      }\n      if (processedAny) {\n        callbacks.onChunkProcessed();\n      }\n      return {\n        processedAny,\n        hasRemaining: queue.length > 0,\n      };\n    } finally {\n      isProcessing = false;\n    }\n  };\n\n  const schedule = (): void => {\n    if (timer || queue.length === 0) {\n      return;\n    }\n    timer = setTimeout(() => {\n      timer = null;\n      const { hasRemaining } = processChunk();\n      if (hasRemaining) {\n        schedule();\n      }\n    }, 0);\n  };\n\n  const cancelEntriesForImage = (imageId: string, reason: Error): void => {\n    for (let idx = queue.length - 1; idx >= 0; idx -= 1) {\n      const entry = queue[idx];\n      if (entry && entry.imageId === imageId) {\n        queue.splice(idx, 1);\n        entry.deferred.reject(reason);\n      }\n    }\n  };\n\n  return {\n    enqueueUpsert: (entry: AtlasQueueUpsertEntry): void => {\n      queue.push(entry);\n      schedule();\n    },\n    flushPending: (): void => {\n      const { hasRemaining } = processChunk();\n      if (hasRemaining) {\n        schedule();\n      }\n    },\n    cancelForImage: (imageId: string, reason?: Error): void => {\n      const rejectionReason =\n        reason ??\n        new Error(\n          `[SpriteLayer][Atlas] Image \"${imageId}\" was cancelled before placement.`\n        );\n      cancelEntriesForImage(imageId, rejectionReason);\n    },\n    rejectAll: (reason: Error): void => {\n      while (queue.length > 0) {\n        const entry = queue.shift();\n        entry?.deferred.reject(reason);\n      }\n    },\n    get pendingCount(): number {\n      return queue.length;\n    },\n  };\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n","// maplibre-gl-layers - MapLibre's layer extension library enabling\n// the display, movement, and modification of large numbers of dynamic sprite images\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT\n// https://github.com/kekyo/maplibre-gl-layers\n\n/**\n * SpriteLayer.ts\n *\n * Module that manages large numbers of sprites as a custom MapLibre WebGL layer, handling scaling,\n * interpolation animations, and buffer management for parallel rendering.\n * Includes CustomLayerInterface implementations, texture utilities, interpolation logic,\n * ordering rules, and depth-normalization helpers for avoiding Z-buffer issues.\n */\n\nimport { type Map as MapLibreMap } from 'maplibre-gl';\nimport type { CustomRenderMethodInput } from 'maplibre-gl';\n\nimport {\n  type SpriteInit,\n  type SpriteInitCollection,\n  type SpriteLayerInterface,\n  type SpriteLayerOptions,\n  type SpriteTextureFilteringOptions,\n  type SpriteTextureMagFilter,\n  type SpriteTextureMinFilter,\n  type SpriteAnchor,\n  type SpriteLocation,\n  type SpriteCurrentState,\n  type SpriteLayerEventMap,\n  type SpriteLayerEventListener,\n  type SpriteUpdateEntry,\n  type SpriteUpdaterEntry,\n  type SpriteImageDefinitionInit,\n  type SpriteImageDefinitionUpdate,\n  type SpriteLayerHoverEvent,\n  type SpriteMutateCallbacks,\n  type SpriteMutateSourceItem,\n  type SpriteImageOffset,\n  type SpriteInterpolationOptions,\n  type SpriteImageOriginLocation,\n  type SpriteScreenPoint,\n  type SpriteLayerClickEvent,\n  type SpriteImageState,\n  type SpriteTextGlyphDimensions,\n  type SpriteTextGlyphOptions,\n  type SpriteTextGlyphHorizontalAlign,\n  type SpriteTextGlyphPaddingPixel,\n  type SpriteTextGlyphBorderSide,\n  type SpriteImageRegisterOptions,\n} from './types';\nimport type {\n  ResolvedTextureFilteringOptions,\n  RegisteredImage,\n  ResolvedTextGlyphPadding,\n  ResolvedBorderSides,\n  ResolvedTextGlyphOptions,\n  Canvas2DContext,\n  Canvas2DSource,\n  InternalSpriteImageState,\n  InternalSpriteCurrentState,\n  ProjectionHost,\n  PreparedDrawSpriteImageParams,\n  RenderCalculationHost,\n  SpriteOriginReference,\n  SpriteOriginReferenceKey,\n} from './internalTypes';\nimport {\n  SPRITE_ORIGIN_REFERENCE_KEY_NONE,\n  SPRITE_ORIGIN_REFERENCE_INDEX_NONE,\n} from './internalTypes';\nimport { loadImageBitmap, SvgSizeResolutionError } from './image';\nimport {\n  createInterpolationState,\n  evaluateInterpolation,\n} from './interpolation';\nimport { normalizeAngleDeg } from './rotationInterpolation';\nimport {\n  calculateDistanceAndBearingMeters,\n  calculateMetersPerPixelAtLatitude,\n  calculateZoomScaleFactor,\n  calculateSurfaceOffsetMeters,\n  calculateSurfaceWorldDimensions,\n  applySurfaceDisplacement,\n  isFiniteNumber,\n  resolveScalingOptions,\n  calculateBillboardAnchorShiftPixels,\n  calculateBillboardPixelDimensions,\n  calculateBillboardOffsetPixels,\n  calculateEffectivePixelsPerMeter,\n  calculateSurfaceCornerDisplacements,\n  cloneSpriteLocation,\n  spriteLocationsEqual,\n  resolveSpriteMercator,\n} from './math';\nimport {\n  applyOffsetUpdate,\n  clearOffsetDegInterpolation,\n  clearOffsetMetersInterpolation,\n  stepSpriteImageInterpolations,\n  syncImageRotationChannel,\n} from './interpolationChannels';\nimport { DEFAULT_TEXTURE_FILTERING_OPTIONS } from './default';\nimport {\n  createLooseQuadTree,\n  type Item as LooseQuadTreeItem,\n  type LooseQuadTree,\n  type Rect as LooseQuadTreeRect,\n} from './looseQuadTree';\nimport {\n  DEBUG_OUTLINE_CORNER_ORDER,\n  createSpriteDrawProgram,\n  createDebugOutlineRenderer,\n  type SpriteDrawProgram,\n  type DebugOutlineRenderer,\n} from './shader';\nimport { createCalculationHost } from './calculationHost';\nimport {\n  createProjectionHost,\n  createProjectionHostParamsFromMapLibre,\n} from './projectionHost';\nimport { createWasmProjectionHost } from './wasmProjectionHost';\nimport { createWasmCalculationHost } from './wasmCalculationHost';\nimport {\n  DEFAULT_ANCHOR,\n  DEFAULT_IMAGE_OFFSET,\n  DEFAULT_TEXT_GLYPH_ALIGN,\n  DEFAULT_TEXT_GLYPH_COLOR,\n  DEFAULT_TEXT_GLYPH_FONT_FAMILY,\n  DEFAULT_TEXT_GLYPH_FONT_SIZE,\n  DEFAULT_TEXT_GLYPH_FONT_STYLE,\n  DEFAULT_TEXT_GLYPH_FONT_WEIGHT,\n  DEFAULT_TEXT_GLYPH_RENDER_PIXEL_RATIO,\n  HIT_TEST_EPSILON,\n  HIT_TEST_WORLD_BOUNDS,\n  MAX_TEXT_GLYPH_RENDER_PIXEL_RATIO,\n  MIN_TEXT_GLYPH_FONT_SIZE,\n} from './const';\nimport {\n  SL_DEBUG,\n  ATLAS_QUEUE_CHUNK_SIZE,\n  ATLAS_QUEUE_TIME_BUDGET_MS,\n  TEXT_GLYPH_QUEUE_CHUNK_SIZE,\n  TEXT_GLYPH_QUEUE_TIME_BUDGET_MS,\n} from './config';\nimport {\n  createImageHandleBufferController,\n  createIdHandler,\n  createSpriteOriginReference,\n  createRenderTargetBucketBuffers,\n} from './utils';\nimport {\n  createAtlasManager,\n  type AtlasPageState,\n  createAtlasOperationQueue,\n} from './atlas';\nimport {\n  createDeferred,\n  onAbort,\n  type Deferred,\n  type Releasable,\n} from 'async-primitives';\nimport { isSpriteLayerHostEnabled } from './runtime';\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n// Sprite definition and rendering flow:\n// The order of calculations below is significant; changing it produces incorrect rendering.\n// * Skip processing when no images are registered via registerImage or no sprites exist.\n// * Each sprite (SpriteCompositeInit<T>) assigns images by subLayer and order. Although the logical\n//   structure is sprite -> images, rendering must process grouped images by sub-layer, then order, then sprite.\n// * Every sprite has a single base location (A: SpriteLocation).\n// * A sprite may contain zero or more images, each with its own SpriteImageDefinition attributes.\n// * When isEnabled is false, the sprite has zero images, every image has opacity 0.0, or all image IDs are invalid,\n//   the sprite can be ignored for the remainder of the pipeline.\n// * When movement interpolation (SpriteLocationInterpolationOptions) is enabled, it operates per sprite (not per image),\n//   producing an interpolated position B relative to the base position A. Rotation angles are not interpolated.\n//   SpriteInterpolationMode supports feedback and feed-forward:\n//   * Feedback: interpolate between the previous and current base locations over durationMs when the position changes.\n//   * Feed-forward: double the delta vector between the previous and current base locations to determine a destination,\n//     then interpolate from the current position toward that point over durationMs, treating the destination as the\n//     position reached after durationMs elapses.\n// * Images with opacity 0.0 or invalid image IDs are skipped entirely.\n// * Each image applies opacity to its alpha.\n// * SpriteMode determines whether calculations assume a viewport-facing plane or the map surface.\n// * originLocation selects the anchor point (I). Without a reference, use the sprite's interpolated position B. When\n//   referencing another image, reuse that image's anchor (resolving recursively within the same sprite).\n// * Anchors (C: SpriteAnchor) determine each image's base position relative to B.\n// * Image scale (D) enlarges or shrinks the rendered image.\n// * Offsets (SpriteImageOffset) derived from the scaled anchor (E) decide the final placement.\n// * When autoRotation is enabled, compute heading from movement around A to obtain the base rotation angle (F),\n//   causing surface-mode images to face the travel direction. The rotation value itself is mode-agnostic; billboard\n//   mode may ignore it visually. Movement shorter than autoRotationMinDistanceMeters (G) does not update F. Retain the\n//   last origin position (H) and update it only after exceeding G so rotation changes occur at meaningful distances.\n// * rotateDeg applies an additional rotation on top of F using the anchor-adjusted position (E) as the pivot.\n\n// Baseline computation values:\n// SpriteScalingOptions parameters are used here.\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/** Default threshold in meters for auto-rotation to treat movement as significant. */\nconst DEFAULT_AUTO_ROTATION_MIN_DISTANCE_METERS = 20;\n\n/** Sentinel used when an image has not been placed on any atlas page. */\nconst ATLAS_PAGE_INDEX_NONE = -1;\n\n/** Query radius (in CSS pixels) when sampling the hit-test QuadTree. */\nconst HIT_TEST_QUERY_RADIUS_PIXELS = 32;\n\n/** List of acceptable minification filters exposed to callers. */\nconst MIN_FILTER_VALUES: readonly SpriteTextureMinFilter[] = [\n  'nearest',\n  'linear',\n  'nearest-mipmap-nearest',\n  'nearest-mipmap-linear',\n  'linear-mipmap-nearest',\n  'linear-mipmap-linear',\n] as const;\n\n/** List of acceptable magnification filters. */\nconst MAG_FILTER_VALUES: readonly SpriteTextureMagFilter[] = [\n  'nearest',\n  'linear',\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/** Minification filters that require mipmaps to produce complete textures. */\nconst MIPMAP_MIN_FILTERS: ReadonlySet<SpriteTextureMinFilter> =\n  new Set<SpriteTextureMinFilter>([\n    'nearest-mipmap-nearest',\n    'nearest-mipmap-linear',\n    'linear-mipmap-nearest',\n    'linear-mipmap-linear',\n  ]);\n\nconst filterRequiresMipmaps = (filter: SpriteTextureMinFilter): boolean =>\n  MIPMAP_MIN_FILTERS.has(filter);\n\nconst resolveTextureFilteringOptions = (\n  options?: SpriteTextureFilteringOptions\n): ResolvedTextureFilteringOptions => {\n  const minCandidate = options?.minFilter;\n  const minFilter: SpriteTextureMinFilter = MIN_FILTER_VALUES.includes(\n    minCandidate as SpriteTextureMinFilter\n  )\n    ? (minCandidate as SpriteTextureMinFilter)\n    : DEFAULT_TEXTURE_FILTERING_OPTIONS.minFilter!;\n\n  const magCandidate = options?.magFilter;\n  const magFilter: SpriteTextureMagFilter = MAG_FILTER_VALUES.includes(\n    magCandidate as SpriteTextureMagFilter\n  )\n    ? (magCandidate as SpriteTextureMagFilter)\n    : DEFAULT_TEXTURE_FILTERING_OPTIONS.magFilter!;\n\n  let generateMipmaps =\n    options?.generateMipmaps ??\n    DEFAULT_TEXTURE_FILTERING_OPTIONS.generateMipmaps!;\n  if (filterRequiresMipmaps(minFilter)) {\n    generateMipmaps = true;\n  }\n\n  let maxAnisotropy =\n    options?.maxAnisotropy ?? DEFAULT_TEXTURE_FILTERING_OPTIONS.maxAnisotropy!;\n  if (!Number.isFinite(maxAnisotropy) || maxAnisotropy < 1) {\n    maxAnisotropy = 1;\n  }\n\n  return {\n    minFilter,\n    magFilter,\n    generateMipmaps,\n    maxAnisotropy,\n  };\n};\n\nconst ANISOTROPY_EXTENSION_NAMES = [\n  'EXT_texture_filter_anisotropic',\n  'WEBKIT_EXT_texture_filter_anisotropic',\n  'MOZ_EXT_texture_filter_anisotropic',\n] as const;\n\nconst resolveAnisotropyExtension = (\n  glContext: WebGLRenderingContext\n): EXT_texture_filter_anisotropic | null => {\n  for (const name of ANISOTROPY_EXTENSION_NAMES) {\n    const extension = glContext.getExtension(name);\n    if (extension) {\n      return extension as EXT_texture_filter_anisotropic;\n    }\n  }\n  return null;\n};\n\nconst isPowerOfTwo = (value: number): boolean =>\n  value > 0 && (value & (value - 1)) === 0;\n\nconst resolveGlMinFilter = (\n  glContext: WebGLRenderingContext,\n  filter: SpriteTextureMinFilter\n): number => {\n  switch (filter) {\n    case 'nearest':\n      return glContext.NEAREST;\n    case 'nearest-mipmap-nearest':\n      return glContext.NEAREST_MIPMAP_NEAREST;\n    case 'nearest-mipmap-linear':\n      return glContext.NEAREST_MIPMAP_LINEAR;\n    case 'linear-mipmap-nearest':\n      return glContext.LINEAR_MIPMAP_NEAREST;\n    case 'linear-mipmap-linear':\n      return glContext.LINEAR_MIPMAP_LINEAR;\n    case 'linear':\n    default:\n      return glContext.LINEAR;\n  }\n};\n\nconst resolveGlMagFilter = (\n  glContext: WebGLRenderingContext,\n  filter: SpriteTextureMagFilter\n): number => {\n  switch (filter) {\n    case 'nearest':\n      return glContext.NEAREST;\n    case 'linear':\n    default:\n      return glContext.LINEAR;\n  }\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Applies auto-rotation to all images within a sprite when movement exceeds the configured threshold.\n * @template T Arbitrary sprite tag type.\n * @param {InternalSpriteCurrentState<T>} sprite - Sprite undergoing potential rotation update.\n * @param {SpriteLocation} nextLocation - Destination location used to derive bearing and distance.\n * @returns {boolean} `true` when auto-rotation was applied, `false` otherwise.\n */\nexport const applyAutoRotation = <T>(\n  sprite: InternalSpriteCurrentState<T>,\n  nextLocation: SpriteLocation\n): boolean => {\n  let hasAutoRotation = false;\n  let requiredDistance = 0;\n\n  sprite.images.forEach((orderMap) => {\n    orderMap.forEach((image) => {\n      // Images without auto-rotation contribute nothing; continue scanning others.\n      if (!image.autoRotation) {\n        return;\n      }\n      hasAutoRotation = true;\n      const minDistance = Math.max(0, image.autoRotationMinDistanceMeters ?? 0);\n      // Track the largest minimum distance across images so we respect all constraints.\n      if (minDistance > requiredDistance) {\n        requiredDistance = minDistance;\n      }\n    });\n  });\n\n  // No auto-rotating images means nothing to update.\n  if (!hasAutoRotation) {\n    return false;\n  }\n\n  const { distanceMeters, bearingDeg } = calculateDistanceAndBearingMeters(\n    sprite.lastAutoRotationLocation,\n    nextLocation\n  );\n\n  // Guard against zero/invalid distances (e.g., same point) to avoid jitter.\n  if (!isFiniteNumber(distanceMeters) || distanceMeters <= 0) {\n    return false;\n  }\n\n  // Ignore movement shorter than the required threshold to reduce noise.\n  if (distanceMeters < requiredDistance) {\n    return false;\n  }\n\n  const resolvedAngleRaw = isFiniteNumber(bearingDeg)\n    ? bearingDeg\n    : sprite.lastAutoRotationAngleDeg;\n  const resolvedAngle = normalizeAngleDeg(resolvedAngleRaw);\n\n  sprite.images.forEach((orderMap) => {\n    orderMap.forEach((image) => {\n      // Only update images participating in auto-rotation; others preserve their manual angles.\n      if (!image.autoRotation) {\n        return;\n      }\n      image.resolvedBaseRotateDeg = resolvedAngle;\n      syncImageRotationChannel(image);\n    });\n  });\n\n  sprite.lastAutoRotationLocation = cloneSpriteLocation(nextLocation);\n  sprite.lastAutoRotationAngleDeg = resolvedAngle;\n\n  return true;\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Resolves text padding into a fully populated structure with non-negative values.\n * @param {SpriteTextGlyphPaddingPixel} [padding] - Caller-supplied padding definition.\n * @returns {ResolvedTextGlyphPadding} Padding ready for measurement and drawing.\n */\nconst resolveTextGlyphPadding = (\n  padding?: SpriteTextGlyphPaddingPixel\n): ResolvedTextGlyphPadding => {\n  if (typeof padding === 'number' && Number.isFinite(padding)) {\n    const safeValue = Math.max(0, padding);\n    return {\n      top: safeValue,\n      right: safeValue,\n      bottom: safeValue,\n      left: safeValue,\n    };\n  }\n\n  if (typeof padding === 'object' && padding !== null) {\n    const safe = (value?: number): number =>\n      typeof value === 'number' && Number.isFinite(value) && value >= 0\n        ? value\n        : 0;\n\n    return {\n      top: safe(padding.top),\n      right: safe(padding.right),\n      bottom: safe(padding.bottom),\n      left: safe(padding.left),\n    };\n  }\n\n  return { top: 0, right: 0, bottom: 0, left: 0 };\n};\n\n/**\n * Normalizes the border sides definition, defaulting to all sides when unspecified or invalid.\n * @param {readonly SpriteTextGlyphBorderSide[]} [sides] - Requested border sides.\n * @returns {ResolvedBorderSides} Derived sides ready for rendering.\n */\nconst resolveBorderSides = (\n  sides?: readonly SpriteTextGlyphBorderSide[]\n): ResolvedBorderSides => {\n  if (!Array.isArray(sides) || sides.length === 0) {\n    return { top: true, right: true, bottom: true, left: true };\n  }\n\n  let top = false;\n  let right = false;\n  let bottom = false;\n  let left = false;\n\n  for (const side of sides) {\n    switch (side) {\n      case 'top':\n        top = true;\n        break;\n      case 'right':\n        right = true;\n        break;\n      case 'bottom':\n        bottom = true;\n        break;\n      case 'left':\n        left = true;\n        break;\n      default:\n        break;\n    }\n  }\n\n  if (!top && !right && !bottom && !left) {\n    return { top: true, right: true, bottom: true, left: true };\n  }\n\n  return { top, right, bottom, left };\n};\n\n/**\n * Picks a valid horizontal alignment, defaulting to center when unspecified.\n * @param {SpriteTextGlyphHorizontalAlign} [align] - Requested alignment.\n * @returns {SpriteTextGlyphHorizontalAlign} Derived alignment used during layer.\n */\nconst resolveTextAlign = (\n  align?: SpriteTextGlyphHorizontalAlign\n): SpriteTextGlyphHorizontalAlign => {\n  switch (align) {\n    case 'left':\n    case 'right':\n      return align;\n    case 'center':\n    default:\n      return DEFAULT_TEXT_GLYPH_ALIGN;\n  }\n};\n\n/**\n * Returns the font style when provided, falling back to the default when invalid.\n * @param {'normal' | 'italic'} [style] - Requested font style.\n * @returns {'normal' | 'italic'} Style to use for drawing.\n */\nconst resolveFontStyle = (style?: 'normal' | 'italic'): 'normal' | 'italic' =>\n  style === 'italic' ? 'italic' : DEFAULT_TEXT_GLYPH_FONT_STYLE;\n\n/**\n * Validates that a numeric value is positive and finite; otherwise returns a fallback.\n * @param {number | undefined} value - Value to test.\n * @param {number} fallback - Value to use when the test fails.\n * @returns {number} Positive finite number suitable for layer math.\n */\nconst resolvePositiveFinite = (value: number | undefined, fallback: number) => {\n  if (typeof value !== 'number' || !Number.isFinite(value)) {\n    return fallback;\n  }\n  return value > 0 ? value : fallback;\n};\n\n/**\n * Normalizes a finite number to be non-negative, falling back when invalid.\n * @param {number | undefined} value - Value to validate.\n * @param {number} [fallback=0] - Fallback used when the value is negative or invalid.\n * @returns {number} Non-negative finite value.\n */\nconst resolveNonNegativeFinite = (value: number | undefined, fallback = 0) => {\n  if (typeof value !== 'number' || !Number.isFinite(value)) {\n    return fallback;\n  }\n  return value >= 0 ? value : fallback;\n};\n\n/**\n * Resolves optional numeric values, returning a fallback when not finite.\n * @param {number | undefined} value - Value to test.\n * @param {number} fallback - Replacement when the value is invalid.\n * @returns {number} Provided value or fallback.\n */\nconst resolveFiniteOrDefault = (\n  value: number | undefined,\n  fallback: number\n): number =>\n  typeof value === 'number' && Number.isFinite(value) ? value : fallback;\n\n/**\n * Ensures the text glyph render pixel ratio stays within supported bounds.\n * @param {number} [value] - Requested pixel ratio.\n * @returns {number} Clamped pixel ratio for rendering.\n */\nconst resolveRenderPixelRatio = (value?: number): number => {\n  if (typeof value !== 'number' || !Number.isFinite(value) || value <= 0) {\n    return DEFAULT_TEXT_GLYPH_RENDER_PIXEL_RATIO;\n  }\n  return Math.min(\n    Math.max(value, DEFAULT_TEXT_GLYPH_RENDER_PIXEL_RATIO),\n    MAX_TEXT_GLYPH_RENDER_PIXEL_RATIO\n  );\n};\n\n/**\n * Merges text glyph options with defaults, producing a fully resolved configuration.\n * @param {SpriteTextGlyphOptions} [options] - User-specified options.\n * @param {number} [preferredLineHeight] - Optional line height used as fallback for font size.\n * @returns {ResolvedTextGlyphOptions} Resolved options ready for glyph rendering.\n */\nconst resolveTextGlyphOptions = (\n  options?: SpriteTextGlyphOptions,\n  preferredLineHeight?: number\n): ResolvedTextGlyphOptions => {\n  const fallbackFontSize =\n    typeof preferredLineHeight === 'number' && preferredLineHeight > 0\n      ? // When a preferred line height is provided, use it as the baseline font size.\n        preferredLineHeight\n      : // Otherwise fall back to the default glyph font size.\n        DEFAULT_TEXT_GLYPH_FONT_SIZE;\n\n  const resolvedFontSize = resolvePositiveFinite(\n    options?.fontSizePixelHint,\n    fallbackFontSize\n  );\n\n  return {\n    fontFamily: options?.fontFamily ?? DEFAULT_TEXT_GLYPH_FONT_FAMILY,\n    fontStyle: resolveFontStyle(options?.fontStyle),\n    fontWeight: options?.fontWeight ?? DEFAULT_TEXT_GLYPH_FONT_WEIGHT,\n    fontSizePixel: resolvedFontSize,\n    color: options?.color ?? DEFAULT_TEXT_GLYPH_COLOR,\n    letterSpacingPixel: resolveFiniteOrDefault(options?.letterSpacingPixel, 0),\n    backgroundColor: options?.backgroundColor,\n    paddingPixel: resolveTextGlyphPadding(options?.paddingPixel),\n    borderColor: options?.borderColor,\n    borderWidthPixel: resolveNonNegativeFinite(options?.borderWidthPixel, 0),\n    borderRadiusPixel: resolveNonNegativeFinite(options?.borderRadiusPixel, 0),\n    borderSides: resolveBorderSides(options?.borderSides),\n    textAlign: resolveTextAlign(options?.textAlign),\n    renderPixelRatio: resolveRenderPixelRatio(options?.renderPixelRatio),\n  };\n};\n\n/**\n * Coerces glyph dimensions to positive integers to satisfy canvas requirements.\n * @param {number} value - Raw dimension.\n * @returns {number} Rounded, positive dimension.\n */\nconst clampGlyphDimension = (value: number): number => {\n  if (typeof value !== 'number' || !Number.isFinite(value)) {\n    return 1;\n  }\n  const rounded = Math.round(value);\n  return rounded > 0 ? rounded : 1;\n};\n\n/**\n * Creates a 2D canvas context using either `OffscreenCanvas` or a DOM canvas as fallback.\n * @param {number} width - Canvas width in pixels.\n * @param {number} height - Canvas height in pixels.\n * @returns {{ canvas: Canvas2DSource; ctx: Canvas2DContext }} Canvas and rendering context.\n * @throws When no 2D canvas implementation is available.\n */\nconst createCanvas2D = (\n  width: number,\n  height: number\n): { canvas: Canvas2DSource; ctx: Canvas2DContext } => {\n  if (typeof OffscreenCanvas !== 'undefined') {\n    const canvas = new OffscreenCanvas(width, height);\n    const ctx = canvas.getContext('2d');\n    if (!ctx) {\n      throw new Error('Failed to acquire 2d context for text glyph rendering.');\n    }\n    return { canvas, ctx };\n  }\n\n  if (typeof document !== 'undefined') {\n    const canvas = document.createElement('canvas');\n    canvas.width = width;\n    canvas.height = height;\n    const ctx = canvas.getContext('2d');\n    if (!ctx) {\n      throw new Error('Failed to acquire 2d context for text glyph rendering.');\n    }\n    return { canvas, ctx };\n  }\n\n  throw new Error('Canvas 2D is not supported in this environment.');\n};\n\n/**\n * Creates an ImageBitmap from a canvas, optionally resizing when a pixel ratio is applied.\n * @param {Canvas2DSource} canvas - Source canvas.\n * @param {number} renderWidth - Width of the rendered content before scaling.\n * @param {number} renderHeight - Height of the rendered content before scaling.\n * @param {number} targetWidth - Width after applying pixel ratio adjustments.\n * @param {number} targetHeight - Height after applying pixel ratio adjustments.\n * @param {number} renderPixelRatio - Pixel ratio used to calculate resize hints.\n * @returns {Promise<ImageBitmap>} Bitmap ready for texture upload.\n */\nconst createImageBitmapFromCanvas = async (\n  canvas: Canvas2DSource,\n  renderWidth: number,\n  renderHeight: number,\n  targetWidth: number,\n  targetHeight: number,\n  renderPixelRatio: number\n): Promise<ImageBitmap> => {\n  if (typeof createImageBitmap === 'function') {\n    // When renderPixelRatio differs from 1 we request the browser to perform the resize.\n    if (renderPixelRatio !== 1) {\n      return await createImageBitmap(\n        canvas as any,\n        0,\n        0,\n        renderWidth,\n        renderHeight,\n        {\n          resizeWidth: targetWidth,\n          resizeHeight: targetHeight,\n        }\n      );\n    }\n    return await createImageBitmap(canvas as any);\n  }\n\n  const hasOffscreenCanvas = typeof OffscreenCanvas !== 'undefined';\n  if (hasOffscreenCanvas && canvas instanceof OffscreenCanvas) {\n    // OffscreenCanvas can provide transferToImageBitmap without DOM involvement.\n    if (renderPixelRatio !== 1) {\n      const targetCanvas = new OffscreenCanvas(targetWidth, targetHeight);\n      const targetCtx = targetCanvas.getContext('2d');\n      if (!targetCtx) {\n        throw new Error('Failed to acquire 2d context for image resizing.');\n      }\n      targetCtx.imageSmoothingEnabled = true;\n      targetCtx.drawImage(canvas, 0, 0, targetWidth, targetHeight);\n      return targetCanvas.transferToImageBitmap();\n    }\n    return canvas.transferToImageBitmap();\n  }\n\n  if (hasOffscreenCanvas) {\n    const targetCanvas = new OffscreenCanvas(targetWidth, targetHeight);\n    const targetCtx = targetCanvas.getContext('2d');\n    if (!targetCtx) {\n      throw new Error('Failed to acquire 2d context for image resizing.');\n    }\n    targetCtx.imageSmoothingEnabled = true;\n    targetCtx.drawImage(\n      canvas as HTMLCanvasElement,\n      0,\n      0,\n      targetWidth,\n      targetHeight\n    );\n    return targetCanvas.transferToImageBitmap();\n  }\n\n  throw new Error('ImageBitmap API is not supported in this environment.');\n};\n\n/**\n * Builds a CSS font string from resolved text glyph options.\n * @param {ResolvedTextGlyphOptions} options - Resolved typography options.\n * @returns {string} CSS font shorthand string.\n */\nconst buildFontString = (options: ResolvedTextGlyphOptions): string =>\n  `${options.fontStyle} ${options.fontWeight} ${options.fontSizePixel}px ${options.fontFamily}`;\n\n/**\n * Draws a rounded rectangle path into the provided canvas context.\n * @param {Canvas2DContext} ctx - Canvas 2D context.\n * @param {number} x - X coordinate of the rectangle origin.\n * @param {number} y - Y coordinate of the rectangle origin.\n * @param {number} width - Width of the rectangle.\n * @param {number} height - Height of the rectangle.\n * @param {number} radius - Corner radius in pixels.\n */\nconst drawRoundedRectPath = (\n  ctx: Canvas2DContext,\n  x: number,\n  y: number,\n  width: number,\n  height: number,\n  radius: number\n) => {\n  const maxRadius = Math.max(0, Math.min(radius, width / 2, height / 2));\n  // If the radius collapses, fall back to a plain rectangle.\n  if (maxRadius === 0) {\n    ctx.rect(x, y, width, height);\n    return;\n  }\n\n  ctx.moveTo(x + maxRadius, y);\n  ctx.lineTo(x + width - maxRadius, y);\n  ctx.quadraticCurveTo(x + width, y, x + width, y + maxRadius);\n  ctx.lineTo(x + width, y + height - maxRadius);\n  ctx.quadraticCurveTo(\n    x + width,\n    y + height,\n    x + width - maxRadius,\n    y + height\n  );\n  ctx.lineTo(x + maxRadius, y + height);\n  ctx.quadraticCurveTo(x, y + height, x, y + height - maxRadius);\n  ctx.lineTo(x, y + maxRadius);\n  ctx.quadraticCurveTo(x, y, x + maxRadius, y);\n};\n\n/**\n * Fills a rounded rectangle, preserving canvas state.\n * @param {Canvas2DContext} ctx - Canvas context.\n * @param {number} width - Rectangle width.\n * @param {number} height - Rectangle height.\n * @param {number} radius - Corner radius.\n * @param {string} color - Fill color.\n */\nconst fillRoundedRect = (\n  ctx: Canvas2DContext,\n  width: number,\n  height: number,\n  radius: number,\n  color: string\n) => {\n  ctx.save();\n  ctx.beginPath();\n  drawRoundedRectPath(ctx, 0, 0, width, height, radius);\n  ctx.fillStyle = color;\n  ctx.fill();\n  ctx.restore();\n};\n\n/**\n * Strokes a rounded rectangle, preserving canvas state.\n * @param {Canvas2DContext} ctx - Canvas context.\n * @param {number} width - Rectangle width.\n * @param {number} height - Rectangle height.\n * @param {number} radius - Corner radius.\n * @param {string} color - Stroke color.\n * @param {number} lineWidth - Stroke width in pixels.\n * @param {ResolvedBorderSides} sides - Border sides to render.\n */\nconst strokeRoundedRect = (\n  ctx: Canvas2DContext,\n  width: number,\n  height: number,\n  radius: number,\n  color: string,\n  lineWidth: number,\n  sides: ResolvedBorderSides\n) => {\n  const { top, right, bottom, left } = sides;\n  if (lineWidth <= 0 || (!top && !right && !bottom && !left)) {\n    return;\n  }\n\n  ctx.save();\n  ctx.strokeStyle = color;\n  ctx.lineWidth = lineWidth;\n\n  const cornerRadius = Math.max(0, Math.min(radius, width / 2, height / 2));\n  const previousCap = ctx.lineCap;\n  ctx.lineCap = cornerRadius === 0 ? 'square' : 'butt';\n\n  if (top) {\n    const startX = cornerRadius;\n    const endX = width - cornerRadius;\n    if (endX > startX) {\n      ctx.beginPath();\n      ctx.moveTo(startX, 0);\n      ctx.lineTo(endX, 0);\n      ctx.stroke();\n    }\n  }\n\n  if (right) {\n    const startY = cornerRadius;\n    const endY = height - cornerRadius;\n    if (endY > startY) {\n      ctx.beginPath();\n      ctx.moveTo(width, startY);\n      ctx.lineTo(width, endY);\n      ctx.stroke();\n    }\n  }\n\n  if (bottom) {\n    const startX = width - cornerRadius;\n    const endX = cornerRadius;\n    if (startX > endX) {\n      ctx.beginPath();\n      ctx.moveTo(startX, height);\n      ctx.lineTo(endX, height);\n      ctx.stroke();\n    }\n  }\n\n  if (left) {\n    const startY = height - cornerRadius;\n    const endY = cornerRadius;\n    if (startY > endY) {\n      ctx.beginPath();\n      ctx.moveTo(0, startY);\n      ctx.lineTo(0, endY);\n      ctx.stroke();\n    }\n  }\n\n  ctx.lineCap = previousCap;\n  ctx.restore();\n};\n\n/**\n * Measures text width while considering custom letter spacing.\n * @param {Canvas2DContext} ctx - Canvas context.\n * @param {string} text - Text to measure.\n * @param {number} letterSpacing - Additional spacing between glyphs.\n * @returns {number} Width in pixels.\n */\nconst measureTextWidthWithSpacing = (\n  ctx: Canvas2DContext,\n  text: string,\n  letterSpacing: number\n): number => {\n  // Empty strings contribute zero width regardless of spacing.\n  if (text.length === 0) {\n    return 0;\n  }\n  // When no spacing is requested rely on the built-in measurement.\n  if (letterSpacing === 0) {\n    return ctx.measureText(text).width;\n  }\n\n  const glyphs = Array.from(text);\n  let total = 0;\n  for (const glyph of glyphs) {\n    total += ctx.measureText(glyph).width;\n  }\n  return total + letterSpacing * Math.max(0, glyphs.length - 1);\n};\n\n/**\n * Estimates text height using font metrics with fallbacks for older browsers.\n * @param {Canvas2DContext} ctx - Canvas context.\n * @param {string} text - Text to measure.\n * @param {number} fontSize - Font size in pixels used to derive fallbacks.\n * @returns {number} Text height in pixels.\n */\nconst measureTextHeight = (\n  ctx: Canvas2DContext,\n  text: string,\n  fontSize: number\n): number => {\n  const metrics = ctx.measureText(text);\n  const fallbackAscent = fontSize * 0.8;\n  const fallbackDescent = fontSize * 0.2;\n  const ascent = Number.isFinite(metrics.actualBoundingBoxAscent)\n    ? metrics.actualBoundingBoxAscent\n    : fallbackAscent;\n  const descent = Number.isFinite(metrics.actualBoundingBoxDescent)\n    ? metrics.actualBoundingBoxDescent\n    : fallbackDescent;\n  const height = ascent + descent;\n  // Use measured height only when valid; otherwise fall back to font size for readability.\n  if (Number.isFinite(height) && height > 0) {\n    return height;\n  }\n  return Math.max(fontSize, 1);\n};\n\n/**\n * Draws text while applying uniform letter spacing between glyphs.\n * @param {Canvas2DContext} ctx - Canvas context.\n * @param {string} text - Text to render.\n * @param {number} startX - Initial X coordinate.\n * @param {number} y - Baseline Y coordinate.\n * @param {number} letterSpacing - Additional spacing per glyph.\n */\nconst drawTextWithLetterSpacing = (\n  ctx: Canvas2DContext,\n  text: string,\n  startX: number,\n  y: number,\n  letterSpacing: number\n) => {\n  if (text.length === 0) {\n    return;\n  }\n  // When spacing is zero fall back to a single fillText call for performance.\n  if (letterSpacing === 0) {\n    ctx.fillText(text, startX, y);\n    return;\n  }\n\n  const glyphs = Array.from(text);\n  let cursorX = startX;\n  for (const glyph of glyphs) {\n    ctx.fillText(glyph, cursorX, y);\n    cursorX += ctx.measureText(glyph).width + letterSpacing;\n  }\n};\n\n/**\n * Clones an optional origin location descriptor to avoid mutating caller state.\n * @param {SpriteImageOriginLocation} [origin] - Source origin definition.\n * @returns {SpriteImageOriginLocation | undefined} Deep clone of the origin or `undefined` when absent.\n */\nconst cloneOriginLocation = (\n  origin?: SpriteImageOriginLocation\n): SpriteImageOriginLocation | undefined => {\n  if (!origin) {\n    return undefined;\n  }\n  const result: SpriteImageOriginLocation = {\n    subLayer: origin.subLayer,\n    order: origin.order,\n  };\n  if (origin.useResolvedAnchor !== undefined) {\n    result.useResolvedAnchor = origin.useResolvedAnchor;\n  }\n  return result;\n};\n\n/**\n * Clones a sprite anchor, defaulting to the origin when none supplied.\n * @param {SpriteAnchor} [anchor] - Anchor to clone.\n * @returns {SpriteAnchor} Safe copy for mutation within the layer state.\n */\nexport const cloneAnchor = (anchor?: SpriteAnchor): SpriteAnchor => {\n  if (!anchor) {\n    return { ...DEFAULT_ANCHOR };\n  }\n  return { x: anchor.x, y: anchor.y };\n};\n\n/**\n * Clones an image offset, applying defaults when missing.\n * @param {SpriteImageOffset} [offset] - Offset definition to copy.\n * @returns {SpriteImageOffset} Cloned offset structure.\n */\nexport const cloneOffset = (offset?: SpriteImageOffset): SpriteImageOffset => {\n  if (!offset) {\n    return { ...DEFAULT_IMAGE_OFFSET };\n  }\n  return {\n    offsetMeters: offset.offsetMeters,\n    offsetDeg: offset.offsetDeg,\n  };\n};\n\n/**\n * Deep-clones interpolation options to prevent shared references between sprites.\n * @param {SpriteInterpolationOptions} options - Options provided by the user.\n * @returns {SpriteInterpolationOptions} Cloned options object.\n */\nexport const cloneInterpolationOptions = (\n  options: SpriteInterpolationOptions\n): SpriteInterpolationOptions => {\n  return {\n    mode: options.mode,\n    durationMs: options.durationMs,\n    easing: options.easing,\n  };\n};\n\n/**\n * Creates internal sprite image state from initialization data and layer bookkeeping fields.\n * @param {SpriteImageDefinitionInit} imageInit - Caller-provided image definition.\n * @param {number} subLayer - Sub-layer index the image belongs to.\n * @param {number} order - Ordering slot within the sub-layer.\n * @param {SpriteOriginReference} originReference - Encode/Decode origin reference.\n * @returns {InternalSpriteImageState} Normalized internal state ready for rendering.\n */\nexport const createImageStateFromInit = (\n  imageInit: SpriteImageDefinitionInit,\n  subLayer: number,\n  order: number,\n  originReference: SpriteOriginReference\n): InternalSpriteImageState => {\n  const mode = imageInit.mode ?? 'surface';\n  const autoRotationDefault = mode === 'surface';\n  const initialOffset = cloneOffset(imageInit.offset);\n  const initialRotateDeg = normalizeAngleDeg(imageInit.rotateDeg ?? 0);\n  const originLocation = cloneOriginLocation(imageInit.originLocation);\n  const originReferenceKey =\n    originLocation !== undefined\n      ? originReference.encodeKey(originLocation.subLayer, originLocation.order)\n      : SPRITE_ORIGIN_REFERENCE_KEY_NONE;\n  const state: InternalSpriteImageState = {\n    subLayer,\n    order,\n    imageId: imageInit.imageId,\n    imageHandle: 0,\n    mode,\n    opacity: imageInit.opacity ?? 1.0,\n    scale: imageInit.scale ?? 1.0,\n    anchor: cloneAnchor(imageInit.anchor),\n    offset: initialOffset,\n    rotateDeg: imageInit.rotateDeg ?? 0,\n    displayedRotateDeg: initialRotateDeg,\n    autoRotation: imageInit.autoRotation ?? autoRotationDefault,\n    autoRotationMinDistanceMeters:\n      imageInit.autoRotationMinDistanceMeters ??\n      DEFAULT_AUTO_ROTATION_MIN_DISTANCE_METERS,\n    resolvedBaseRotateDeg: 0,\n    originLocation,\n    originReferenceKey,\n    originRenderTargetIndex: SPRITE_ORIGIN_REFERENCE_INDEX_NONE,\n    rotationInterpolationState: null,\n    rotationInterpolationOptions: null,\n    offsetDegInterpolationState: null,\n    offsetMetersInterpolationState: null,\n    lastCommandRotateDeg: initialRotateDeg,\n    lastCommandOffsetDeg: initialOffset.offsetDeg,\n    lastCommandOffsetMeters: initialOffset.offsetMeters,\n  };\n  // Preload rotation interpolation defaults when supplied on initialization; otherwise treat as absent.\n  const rotateInitOption = imageInit.interpolation?.rotateDeg ?? null;\n  if (rotateInitOption) {\n    state.rotationInterpolationOptions =\n      cloneInterpolationOptions(rotateInitOption);\n  }\n\n  syncImageRotationChannel(state);\n\n  return state;\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Factory that creates the MapLibre layer interface for the sprite layer.\n * Implements the CustomLayerInterface lifecycle (init -> render -> dispose), packing thousands\n * of sprites into GPU buffers for efficient rendering. Supports optional scaling controls for\n * billboard and surface modes.\n *\n * @template T Arbitrary tag type for per-sprite metadata.\n * @param {SpriteLayerOptions} [options] Initial layer options such as ID or scaling settings.\n * @returns {SpriteLayerInterface<T>} Interface for sprite add/update/remove operations and MapLibre hooks.\n */\nexport const createSpriteLayer = <T = any>(\n  options?: SpriteLayerOptions\n): SpriteLayerInterface<T> => {\n  // Use caller-supplied layer ID when provided, otherwise fall back to a default identifier.\n  const id = options?.id ?? 'sprite-layer';\n  let resolvedScaling = resolveScalingOptions(options?.spriteScaling);\n  const resolvedTextureFiltering = resolveTextureFilteringOptions(\n    options?.textureFiltering\n  );\n  const showDebugBounds = options?.showDebugBounds === true;\n\n  const createProjectionHostForMap = (\n    mapInstance: MapLibreMap\n  ): ProjectionHost => {\n    const params = createProjectionHostParamsFromMapLibre(mapInstance);\n    if (isSpriteLayerHostEnabled()) {\n      return createWasmProjectionHost(params);\n    }\n    return createProjectionHost(params);\n    // return createMapLibreProjectionHost(mapInstance);\n  };\n\n  const createCalculationHostForMap = (\n    mapInstance: MapLibreMap\n  ): RenderCalculationHost<T> => {\n    const params = createProjectionHostParamsFromMapLibre(mapInstance);\n    if (isSpriteLayerHostEnabled()) {\n      return createWasmCalculationHost<T>(params, {\n        imageIdHandler,\n        imageHandleBuffersController,\n        originReference,\n        spriteIdHandler,\n      });\n    }\n    return createCalculationHost<T>(params);\n    // return createMapLibreCalculationHost<TTag>(mapInstance);\n  };\n\n  /** WebGL context supplied by MapLibre, assigned during onAdd. */\n  let gl: WebGLRenderingContext | null = null;\n  /** MapLibre map instance provided to the custom layer. */\n  let map: MapLibreMap | null = null;\n  /** Sprite drawing helper encapsulating shader state. */\n  let spriteDrawProgram: SpriteDrawProgram<T> | null = null;\n  /** Cached anisotropic filtering extension instance (when available). */\n  let anisotropyExtension: EXT_texture_filter_anisotropic | null = null;\n  /** Maximum anisotropy supported by the current context. */\n  let maxSupportedAnisotropy = 1;\n  /** Helper used to render debug hit-test outlines. */\n  let debugOutlineRenderer: DebugOutlineRenderer | null = null;\n\n  //////////////////////////////////////////////////////////////////////////\n\n  /** Sprite image atlas manager coordinating page packing. */\n  const atlasManager = createAtlasManager();\n  /** Active WebGL textures keyed by atlas page index. */\n  const atlasPageTextures = new Map<number, WebGLTexture>();\n  /** Flag indicating atlas pages require GPU upload. */\n  let atlasNeedsUpload = false;\n  /** Deferred handler invoked when the atlas queue processes entries. */\n  let handleAtlasQueueChunkProcessed: (() => void) | null = null;\n\n  const atlasQueue = createAtlasOperationQueue(\n    atlasManager,\n    {\n      maxOperationsPerPass: ATLAS_QUEUE_CHUNK_SIZE,\n      timeBudgetMs: ATLAS_QUEUE_TIME_BUDGET_MS,\n    },\n    {\n      onChunkProcessed: () => {\n        handleAtlasQueueChunkProcessed?.();\n      },\n    }\n  );\n\n  /** Pending text glyph identifiers awaiting generation. */\n  const pendingTextGlyphIds = new Set<string>();\n\n  interface TextGlyphQueueEntry {\n    readonly glyphId: string;\n    readonly text: string;\n    readonly dimensions: SpriteTextGlyphDimensions;\n    readonly options?: SpriteTextGlyphOptions;\n    readonly deferred: Deferred<boolean>;\n    readonly signal?: AbortSignal;\n    readonly abortHandle: Releasable | null;\n  }\n\n  const textGlyphQueue: TextGlyphQueueEntry[] = [];\n  let textGlyphQueueTimer: ReturnType<typeof setTimeout> | null = null;\n  let isProcessingTextGlyphQueue = false;\n\n  const now = (): number =>\n    typeof performance !== 'undefined' ? performance.now() : Date.now();\n\n  const scheduleTextGlyphQueueProcessing = (): void => {\n    if (textGlyphQueueTimer) {\n      return;\n    }\n    textGlyphQueueTimer = setTimeout(() => {\n      textGlyphQueueTimer = null;\n      void processTextGlyphQueueChunk();\n    }, 0);\n  };\n\n  const enqueueTextGlyphJob = (entry: TextGlyphQueueEntry): void => {\n    textGlyphQueue.push(entry);\n    scheduleTextGlyphQueueProcessing();\n  };\n\n  const cancelPendingTextGlyphJob = (imageId: string, reason?: Error): void => {\n    for (let idx = textGlyphQueue.length - 1; idx >= 0; idx -= 1) {\n      const entry = textGlyphQueue[idx];\n      if (entry && entry.glyphId === imageId) {\n        textGlyphQueue.splice(idx, 1);\n        pendingTextGlyphIds.delete(imageId);\n        entry.abortHandle?.release();\n        entry.deferred.reject(\n          reason ??\n            new Error(\n              `[SpriteLayer][GlyphQueue] Image \"${imageId}\" was cancelled before generation.`\n            )\n        );\n      }\n    }\n  };\n\n  const rejectAllPendingTextGlyphJobs = (reason: Error): void => {\n    while (textGlyphQueue.length > 0) {\n      const entry = textGlyphQueue.shift();\n      if (entry) {\n        pendingTextGlyphIds.delete(entry.glyphId);\n        entry.abortHandle?.release();\n        entry.deferred.reject(reason);\n      }\n    }\n  };\n\n  const executeTextGlyphJob = async (\n    entry: TextGlyphQueueEntry\n  ): Promise<void> => {\n    if (entry.signal?.aborted) {\n      entry.abortHandle?.release();\n      entry.deferred.reject(entry.signal.reason);\n      pendingTextGlyphIds.delete(entry.glyphId);\n      return;\n    }\n    if (images.has(entry.glyphId)) {\n      entry.abortHandle?.release();\n      entry.deferred.resolve(false);\n      pendingTextGlyphIds.delete(entry.glyphId);\n      return;\n    }\n    if (!pendingTextGlyphIds.has(entry.glyphId)) {\n      entry.abortHandle?.release();\n      entry.deferred.reject(\n        new Error(\n          `[SpriteLayer][GlyphQueue] Image \"${entry.glyphId}\" was removed before generation.`\n        )\n      );\n      return;\n    }\n    let registeredImage: RegisteredImage | null = null;\n    try {\n      const { bitmap, width, height } = await renderTextGlyphBitmap(\n        entry.text,\n        entry.dimensions,\n        entry.options\n      );\n      const handle = imageIdHandler.allocate(entry.glyphId);\n      registeredImage = {\n        id: entry.glyphId,\n        handle,\n        width,\n        height,\n        bitmap,\n        texture: undefined,\n        atlasPageIndex: ATLAS_PAGE_INDEX_NONE,\n        atlasU0: 0,\n        atlasV0: 0,\n        atlasU1: 1,\n        atlasV1: 1,\n      };\n      images.set(entry.glyphId, registeredImage);\n      imageIdHandler.store(handle, registeredImage);\n      updateSpriteImageHandles(entry.glyphId, handle);\n      imageHandleBuffersController.markDirty(images);\n\n      const atlasDeferred = createDeferred<boolean>();\n      atlasQueue.enqueueUpsert({\n        imageId: entry.glyphId,\n        bitmap,\n        deferred: atlasDeferred,\n      });\n      await atlasDeferred.promise;\n\n      entry.deferred.resolve(true);\n    } catch (error) {\n      if (registeredImage) {\n        images.delete(entry.glyphId);\n        imageIdHandler.release(entry.glyphId);\n        updateSpriteImageHandles(entry.glyphId, 0);\n        imageHandleBuffersController.markDirty(images);\n        atlasManager.removeImage(entry.glyphId);\n        registeredImage.bitmap.close?.();\n      }\n      entry.deferred.reject(error);\n    }\n    pendingTextGlyphIds.delete(entry.glyphId);\n    entry.abortHandle?.release();\n  };\n\n  const processTextGlyphQueueChunk = async (): Promise<void> => {\n    if (isProcessingTextGlyphQueue || textGlyphQueue.length === 0) {\n      return;\n    }\n    isProcessingTextGlyphQueue = true;\n    const budgetStart = now();\n    let processedCount = 0;\n    try {\n      while (textGlyphQueue.length > 0) {\n        const entry = textGlyphQueue.shift()!;\n        await executeTextGlyphJob(entry);\n        processedCount += 1;\n        if (processedCount >= TEXT_GLYPH_QUEUE_CHUNK_SIZE) {\n          break;\n        }\n        if (now() - budgetStart >= TEXT_GLYPH_QUEUE_TIME_BUDGET_MS) {\n          break;\n        }\n      }\n    } finally {\n      isProcessingTextGlyphQueue = false;\n    }\n    if (textGlyphQueue.length > 0) {\n      scheduleTextGlyphQueueProcessing();\n    }\n  };\n\n  /**\n   * Determines whether any atlas page requires uploading or missing texture recreation.\n   * @param pageStates Optional atlas page list to evaluate.\n   * @returns True when at least one page is dirty or lacks a matching GL texture.\n   */\n  const shouldUploadAtlasPages = (\n    pageStates?: readonly AtlasPageState[]\n  ): boolean => {\n    const pages = pageStates ?? atlasManager.getPages();\n    for (const page of pages) {\n      if (page.needsUpload) {\n        return true;\n      }\n      if (!atlasPageTextures.has(page.index)) {\n        return true;\n      }\n    }\n    return false;\n  };\n\n  /**\n   * Registry of loaded images, pairing ImageBitmaps with WebGL textures.\n   */\n  const images = new Map<string, RegisteredImage>();\n\n  /**\n   * Maps image identifiers to their numeric handles.\n   * @remarks It is used for (wasm) interoperability for image identity.\n   */\n  const imageIdHandler = createIdHandler<RegisteredImage>();\n\n  /**\n   * Maps sprite identifiers to numeric handles for wasm interop.\n   */\n  const spriteIdHandler = createIdHandler<InternalSpriteCurrentState<T>>();\n\n  /**\n   * Create image handle buffer controller.\n   * @remarks It is used for (wasm) interoperability for image identity.\n   */\n  const imageHandleBuffersController = createImageHandleBufferController();\n\n  /**\n   * Resolve registered image handle for specified identifier.\n   * @param imageId Image identifier.\n   * @returns Image handle or 0 when not registered.\n   * @remarks It is used for (wasm) interoperability for image identity.\n   */\n  const resolveImageHandle = (imageId: string): number => {\n    const resource = images.get(imageId);\n    return resource ? resource.handle : 0;\n  };\n\n  /**\n   * Encode/Decode for a (subLayer, order) pair into a compact numeric key.\n   */\n  const originReference = createSpriteOriginReference();\n\n  /**\n   * Synchronizes atlas placements from the atlas manager into registered images.\n   * Marks atlas textures as dirty when placements change.\n   */\n  const syncAtlasPlacementsFromManager = (): void => {\n    let placementsChanged = false;\n    images.forEach((image, imageId) => {\n      const placement = atlasManager.getImagePlacement(imageId);\n      if (!placement) {\n        if (\n          image.atlasPageIndex !== ATLAS_PAGE_INDEX_NONE ||\n          image.atlasU0 !== 0 ||\n          image.atlasV0 !== 0 ||\n          image.atlasU1 !== 1 ||\n          image.atlasV1 !== 1\n        ) {\n          image.atlasPageIndex = ATLAS_PAGE_INDEX_NONE;\n          image.atlasU0 = 0;\n          image.atlasV0 = 0;\n          image.atlasU1 = 1;\n          image.atlasV1 = 1;\n          image.texture = undefined;\n          placementsChanged = true;\n        }\n        return;\n      }\n      if (\n        image.atlasPageIndex !== placement.pageIndex ||\n        image.atlasU0 !== placement.u0 ||\n        image.atlasV0 !== placement.v0 ||\n        image.atlasU1 !== placement.u1 ||\n        image.atlasV1 !== placement.v1\n      ) {\n        image.atlasPageIndex = placement.pageIndex;\n        image.atlasU0 = placement.u0;\n        image.atlasV0 = placement.v0;\n        image.atlasU1 = placement.u1;\n        image.atlasV1 = placement.v1;\n        image.texture = undefined;\n        placementsChanged = true;\n      }\n    });\n    if (placementsChanged) {\n      imageHandleBuffersController.markDirty(images);\n    }\n    atlasNeedsUpload = placementsChanged || shouldUploadAtlasPages();\n  };\n\n  /**\n   * Collection of sprites currently managed by the layer.\n   */\n  const sprites = new Map<string, InternalSpriteCurrentState<T>>();\n\n  /**\n   * Updates image handle for every sprite image referencing the specified identifier.\n   * @param imageId Image identifier.\n   * @param handle Resolved handle (0 when not registered).\n   */\n  const updateSpriteImageHandles = (imageId: string, handle: number): void => {\n    sprites.forEach((sprite) => {\n      sprite.images.forEach((orderMap) => {\n        orderMap.forEach((imageState) => {\n          if (imageState.imageId === imageId) {\n            imageState.imageHandle = handle;\n          }\n        });\n      });\n    });\n  };\n\n  /**\n   * State stored in the QuadTree used for hit testing.\n   */\n  interface HitTestTreeState {\n    readonly sprite: Readonly<InternalSpriteCurrentState<T>>;\n    readonly image: Readonly<InternalSpriteImageState>;\n    drawIndex: number;\n  }\n\n  /**\n   * Hit-test QuadTree based on longitude and latitude.\n   */\n  const hitTestTree: LooseQuadTree<HitTestTreeState> = createLooseQuadTree({\n    bounds: HIT_TEST_WORLD_BOUNDS,\n  });\n\n  interface HitTestTreeHandle {\n    rect: Readonly<LooseQuadTreeRect>;\n    item: Readonly<LooseQuadTreeItem<HitTestTreeState>>;\n  }\n\n  /**\n   * Reverse lookup table from an image state to the corresponding QuadTree item.\n   * Using a WeakMap avoids blocking GC when an image is disposed.\n   */\n  let hitTestTreeItems = new WeakMap<\n    InternalSpriteImageState,\n    HitTestTreeHandle\n  >();\n\n  let isHitTestEnabled = true;\n\n  /**\n   * Computes an axis-aligned rectangle that encloses the given longitude/latitude points.\n   * @param {SpriteLocation[]} points - List of geographic coordinates to include.\n   * @returns {LooseQuadTreeRect | null} Generated rectangle; returns null when the input is invalid.\n   */\n  const rectFromLngLatPoints = (\n    points: readonly Readonly<SpriteLocation>[]\n  ): LooseQuadTreeRect | null => {\n    let minLng = Number.POSITIVE_INFINITY;\n    let maxLng = Number.NEGATIVE_INFINITY;\n    let minLat = Number.POSITIVE_INFINITY;\n    let maxLat = Number.NEGATIVE_INFINITY;\n\n    for (const point of points) {\n      if (\n        !point ||\n        !Number.isFinite(point.lng) ||\n        !Number.isFinite(point.lat)\n      ) {\n        continue;\n      }\n      if (point.lng < minLng) minLng = point.lng;\n      if (point.lng > maxLng) maxLng = point.lng;\n      if (point.lat < minLat) minLat = point.lat;\n      if (point.lat > maxLat) maxLat = point.lat;\n    }\n\n    if (\n      minLng === Number.POSITIVE_INFINITY ||\n      maxLng === Number.NEGATIVE_INFINITY ||\n      minLat === Number.POSITIVE_INFINITY ||\n      maxLat === Number.NEGATIVE_INFINITY\n    ) {\n      return null;\n    }\n\n    return {\n      x0: Math.max(\n        HIT_TEST_WORLD_BOUNDS.x0,\n        Math.min(minLng, HIT_TEST_WORLD_BOUNDS.x1)\n      ),\n      y0: Math.max(\n        HIT_TEST_WORLD_BOUNDS.y0,\n        Math.min(minLat, HIT_TEST_WORLD_BOUNDS.y1)\n      ),\n      x1: Math.max(\n        HIT_TEST_WORLD_BOUNDS.x0,\n        Math.min(maxLng, HIT_TEST_WORLD_BOUNDS.x1)\n      ),\n      y1: Math.max(\n        HIT_TEST_WORLD_BOUNDS.y0,\n        Math.min(maxLat, HIT_TEST_WORLD_BOUNDS.y1)\n      ),\n    };\n  };\n\n  /**\n   * Creates a rectangle based on the built-in safety radius shared by surface and billboard modes.\n   * @param {SpriteLocation} base - Center geographic coordinate.\n   * @param {number} radiusMeters - Safety radius in meters along east-west and north-south.\n   * @returns {LooseQuadTreeRect | null} Generated rectangle.\n   */\n  const rectFromRadiusMeters = (\n    base: Readonly<SpriteLocation>,\n    radiusMeters: number\n  ): LooseQuadTreeRect | null => {\n    if (\n      !Number.isFinite(base.lng) ||\n      !Number.isFinite(base.lat) ||\n      !Number.isFinite(radiusMeters) ||\n      radiusMeters <= 0\n    ) {\n      return null;\n    }\n\n    const cornerNE = applySurfaceDisplacement(base, {\n      east: radiusMeters,\n      north: radiusMeters,\n    });\n    const cornerSW = applySurfaceDisplacement(base, {\n      east: -radiusMeters,\n      north: -radiusMeters,\n    });\n\n    return rectFromLngLatPoints([cornerNE, cornerSW]);\n  };\n\n  /**\n   * Estimates the geographic rectangle that a surface-mode image may occupy.\n   * @param {ProjectionHost} projectionHost - Projection host.\n   * @param {InternalSpriteCurrentState<T>} sprite - Target sprite.\n   * @param {InternalSpriteImageState} image - Target image.\n   * @returns {LooseQuadTreeRect | null} Estimated rectangle.\n   */\n  const estimateSurfaceImageBounds = (\n    projectionHost: ProjectionHost,\n    sprite: Readonly<InternalSpriteCurrentState<T>>,\n    image: Readonly<InternalSpriteImageState>\n  ): LooseQuadTreeRect | null => {\n    const imageResource = images.get(image.imageId);\n    if (!imageResource) {\n      return null;\n    }\n\n    const baseLocation = sprite.currentLocation;\n    const zoom = projectionHost.getZoom();\n    const zoomScaleFactor = calculateZoomScaleFactor(zoom, resolvedScaling);\n    const metersPerPixelAtLat = calculateMetersPerPixelAtLatitude(\n      zoom,\n      baseLocation.lat\n    );\n    if (!Number.isFinite(metersPerPixelAtLat) || metersPerPixelAtLat <= 0) {\n      return null;\n    }\n\n    const spriteMercator = resolveSpriteMercator(projectionHost, sprite);\n    const perspectiveRatio = projectionHost.calculatePerspectiveRatio(\n      baseLocation,\n      spriteMercator\n    );\n    const effectivePixelsPerMeter = calculateEffectivePixelsPerMeter(\n      metersPerPixelAtLat,\n      perspectiveRatio\n    );\n    if (\n      !Number.isFinite(effectivePixelsPerMeter) ||\n      effectivePixelsPerMeter <= 0\n    ) {\n      return null;\n    }\n\n    const imageScale = image.scale ?? 1;\n    const baseMetersPerPixel = resolvedScaling.metersPerPixel;\n    const spriteMinPixel = resolvedScaling.spriteMinPixel;\n    const spriteMaxPixel = resolvedScaling.spriteMaxPixel;\n\n    const worldDims = calculateSurfaceWorldDimensions(\n      imageResource.width,\n      imageResource.height,\n      baseMetersPerPixel,\n      imageScale,\n      zoomScaleFactor,\n      {\n        effectivePixelsPerMeter,\n        spriteMinPixel,\n        spriteMaxPixel,\n      }\n    );\n    if (worldDims.width <= 0 || worldDims.height <= 0) {\n      return null;\n    }\n\n    const anchor = image.anchor ?? DEFAULT_ANCHOR;\n    const offsetDef = image.offset ?? DEFAULT_IMAGE_OFFSET;\n    const offsetMetersVec = calculateSurfaceOffsetMeters(\n      offsetDef,\n      imageScale,\n      zoomScaleFactor,\n      worldDims.scaleAdjustment\n    );\n\n    const totalRotateDeg = Number.isFinite(image.displayedRotateDeg)\n      ? image.displayedRotateDeg\n      : normalizeAngleDeg(\n          (image.resolvedBaseRotateDeg ?? 0) + (image.rotateDeg ?? 0)\n        );\n\n    const cornerDisplacements = calculateSurfaceCornerDisplacements({\n      worldWidthMeters: worldDims.width,\n      worldHeightMeters: worldDims.height,\n      anchor,\n      totalRotateDeg,\n      offsetMeters: offsetMetersVec,\n    });\n\n    const corners = cornerDisplacements.map((corner) =>\n      applySurfaceDisplacement(baseLocation, corner)\n    );\n    return rectFromLngLatPoints(corners);\n  };\n\n  /**\n   * Estimates the geographic rectangle that a billboard-mode image may occupy.\n   * Currently evaluates it using a safety radius converted from screen pixels to meters.\n   * @param {InternalSpriteCurrentState<T>} sprite - Target sprite.\n   * @param {InternalSpriteImageState} image - Target image.\n   * @returns {LooseQuadTreeRect | null} Estimated rectangle.\n   */\n  const estimateBillboardImageBounds = (\n    projectionHost: ProjectionHost,\n    sprite: InternalSpriteCurrentState<T>,\n    image: InternalSpriteImageState\n  ): LooseQuadTreeRect | null => {\n    const imageResource = images.get(image.imageId);\n    if (!imageResource) {\n      return null;\n    }\n\n    const baseLocation = sprite.currentLocation;\n    const zoom = projectionHost.getZoom();\n    const zoomScaleFactor = calculateZoomScaleFactor(zoom, resolvedScaling);\n    const metersPerPixelAtLat = calculateMetersPerPixelAtLatitude(\n      zoom,\n      baseLocation.lat\n    );\n    if (!Number.isFinite(metersPerPixelAtLat) || metersPerPixelAtLat <= 0) {\n      return null;\n    }\n\n    const spriteMercator = resolveSpriteMercator(projectionHost, sprite);\n    const perspectiveRatio = projectionHost.calculatePerspectiveRatio(\n      baseLocation,\n      spriteMercator\n    );\n    const effectivePixelsPerMeter = calculateEffectivePixelsPerMeter(\n      metersPerPixelAtLat,\n      perspectiveRatio\n    );\n    if (\n      !Number.isFinite(effectivePixelsPerMeter) ||\n      effectivePixelsPerMeter <= 0\n    ) {\n      return null;\n    }\n\n    const baseMetersPerPixel = resolvedScaling.metersPerPixel;\n    const spriteMinPixel = resolvedScaling.spriteMinPixel;\n    const spriteMaxPixel = resolvedScaling.spriteMaxPixel;\n    const imageScale = image.scale ?? 1;\n    const totalRotateDeg = Number.isFinite(image.displayedRotateDeg)\n      ? image.displayedRotateDeg\n      : normalizeAngleDeg(\n          (image.resolvedBaseRotateDeg ?? 0) + (image.rotateDeg ?? 0)\n        );\n\n    const pixelDims = calculateBillboardPixelDimensions(\n      imageResource.width,\n      imageResource.height,\n      baseMetersPerPixel,\n      imageScale,\n      zoomScaleFactor,\n      effectivePixelsPerMeter,\n      spriteMinPixel,\n      spriteMaxPixel\n    );\n\n    const halfWidthMeters = pixelDims.width / 2 / effectivePixelsPerMeter;\n    const halfHeightMeters = pixelDims.height / 2 / effectivePixelsPerMeter;\n\n    const anchorShift = calculateBillboardAnchorShiftPixels(\n      pixelDims.width / 2,\n      pixelDims.height / 2,\n      image.anchor,\n      totalRotateDeg\n    );\n\n    const offsetShift = calculateBillboardOffsetPixels(\n      image.offset ?? DEFAULT_IMAGE_OFFSET,\n      imageScale,\n      zoomScaleFactor,\n      effectivePixelsPerMeter\n    );\n\n    const anchorShiftMeters =\n      Math.hypot(anchorShift.x, anchorShift.y) / effectivePixelsPerMeter;\n    const offsetShiftMeters =\n      Math.hypot(offsetShift.x, offsetShift.y) / effectivePixelsPerMeter;\n    const safetyRadius =\n      Math.hypot(halfWidthMeters, halfHeightMeters) +\n      anchorShiftMeters +\n      offsetShiftMeters;\n\n    return rectFromRadiusMeters(baseLocation, safetyRadius);\n  };\n\n  /**\n   * Estimates the geographic bounding box of an image.\n   * @param {ProjectionHost} projectionHost - Projection host.\n   * @param {InternalSpriteCurrentState<T>} sprite - Target sprite.\n   * @param {InternalSpriteImageState} image - Target image.\n   * @returns {LooseQuadTreeRect | null} Estimated rectangle.\n   */\n  const estimateImageBounds = (\n    projectionHost: ProjectionHost,\n    sprite: Readonly<InternalSpriteCurrentState<T>>,\n    image: Readonly<InternalSpriteImageState>\n  ): LooseQuadTreeRect | null => {\n    if (image.opacity <= 0 || !sprite.isEnabled) {\n      return null;\n    }\n    if (image.mode === 'surface') {\n      return estimateSurfaceImageBounds(projectionHost, sprite, image);\n    }\n    return estimateBillboardImageBounds(projectionHost, sprite, image);\n  };\n\n  const removeImageBoundsFromHitTestTree = (\n    image: InternalSpriteImageState\n  ): void => {\n    const handle = hitTestTreeItems.get(image);\n    if (!handle) {\n      return;\n    }\n    hitTestTree.remove(\n      handle.rect.x0,\n      handle.rect.y0,\n      handle.rect.x1,\n      handle.rect.y1,\n      handle.item\n    );\n    hitTestTreeItems.delete(image);\n  };\n\n  const setItemRect = (\n    item: LooseQuadTreeItem<HitTestTreeState>,\n    rect: LooseQuadTreeRect\n  ): void => {\n    const mutable = item as unknown as {\n      x0: number;\n      y0: number;\n      x1: number;\n      y1: number;\n    };\n    mutable.x0 = rect.x0;\n    mutable.y0 = rect.y0;\n    mutable.x1 = rect.x1;\n    mutable.y1 = rect.y1;\n  };\n\n  const registerImageBoundsInHitTestTree = (\n    projectionHost: ProjectionHost,\n    sprite: Readonly<InternalSpriteCurrentState<T>>,\n    image: Readonly<InternalSpriteImageState>\n  ): void => {\n    const existingHandle = hitTestTreeItems.get(image);\n\n    if (!isHitTestEnabled) {\n      if (existingHandle) {\n        removeImageBoundsFromHitTestTree(image);\n      }\n      return;\n    }\n\n    const rect = estimateImageBounds(projectionHost, sprite, image);\n\n    if (!rect) {\n      if (existingHandle) {\n        removeImageBoundsFromHitTestTree(image);\n      }\n      return;\n    }\n    if (!existingHandle) {\n      const handle: HitTestTreeHandle = {\n        rect,\n        item: {\n          x0: rect.x0,\n          y0: rect.y0,\n          x1: rect.x1,\n          y1: rect.y1,\n          state: {\n            sprite,\n            image,\n            drawIndex: 0,\n          },\n        },\n      };\n      hitTestTree.add(handle.item);\n      hitTestTreeItems.set(image, handle);\n      return;\n    }\n\n    const currentRect = existingHandle.rect;\n    const unchanged =\n      currentRect.x0 === rect.x0 &&\n      currentRect.y0 === rect.y0 &&\n      currentRect.x1 === rect.x1 &&\n      currentRect.y1 === rect.y1;\n\n    if (unchanged) {\n      return;\n    }\n\n    const updated = hitTestTree.update(\n      currentRect.x0,\n      currentRect.y0,\n      currentRect.x1,\n      currentRect.y1,\n      rect.x0,\n      rect.y0,\n      rect.x1,\n      rect.y1,\n      existingHandle.item\n    );\n\n    if (updated) {\n      existingHandle.rect = rect;\n      setItemRect(existingHandle.item, rect);\n      return;\n    }\n\n    // Fallback: remove and re-add when update failed (e.g., stale registry).\n    removeImageBoundsFromHitTestTree(image);\n    const newHandle: HitTestTreeHandle = {\n      rect,\n      item: {\n        x0: rect.x0,\n        y0: rect.y0,\n        x1: rect.x1,\n        y1: rect.y1,\n        state: {\n          sprite,\n          image,\n          drawIndex: 0,\n        },\n      },\n    };\n    hitTestTree.add(newHandle.item);\n    hitTestTreeItems.set(image, newHandle);\n  };\n\n  const refreshSpriteHitTestBounds = (\n    projectionHost: ProjectionHost,\n    sprite: Readonly<InternalSpriteCurrentState<T>>\n  ): void => {\n    sprite.images.forEach((orderMap) => {\n      orderMap.forEach((image) => {\n        registerImageBoundsInHitTestTree(projectionHost, sprite, image);\n      });\n    });\n  };\n\n  // Helpers for manipulating image maps.\n\n  /**\n   * Looks up an image state for the given sprite, sub-layer, and ordering slot.\n   * @param {InternalSpriteCurrentState<T>} sprite - Sprite whose image map is queried.\n   * @param {number} subLayer - Sub-layer identifier.\n   * @param {number} order - Order position within the sub-layer.\n   * @returns {InternalSpriteImageState | undefined} Image state when present.\n   */\n  const getImageState = (\n    sprite: Readonly<InternalSpriteCurrentState<T>>,\n    subLayer: number,\n    order: number\n  ): InternalSpriteImageState | undefined =>\n    // Use optional chaining to safely traverse the nested map hierarchy.\n    sprite.images.get(subLayer)?.get(order);\n\n  /**\n   * Inserts or replaces an image state inside the sprite hierarchy, creating buckets when needed.\n   * @param {InternalSpriteCurrentState<T>} sprite - Sprite receiving the image state.\n   * @param {InternalSpriteImageState} state - Image state to store.\n   * @returns {void}\n   */\n  const setImageState = (\n    sprite: Readonly<InternalSpriteCurrentState<T>>,\n    state: Readonly<InternalSpriteImageState>\n  ): void => {\n    let inner = sprite.images.get(state.subLayer);\n    if (!inner) {\n      inner = new Map<number, InternalSpriteImageState>();\n      sprite.images.set(state.subLayer, inner);\n    }\n    inner.set(state.order, state);\n  };\n\n  /**\n   * Tests whether a sprite contains an image entry at the specified sub-layer/order slot.\n   * @param {InternalSpriteCurrentState<T>} sprite - Sprite to inspect.\n   * @param {number} subLayer - Sub-layer identifier.\n   * @param {number} order - Order index within the sub-layer.\n   * @returns {boolean} `true` when an image state exists.\n   */\n  const hasImageState = (\n    sprite: Readonly<InternalSpriteCurrentState<T>>,\n    subLayer: number,\n    order: number\n  ): boolean =>\n    // Return true only when the nested map exists and contains the desired order entry.\n    sprite.images.get(subLayer)?.has(order) ?? false;\n\n  /**\n   * Removes an image entry from the sprite, pruning empty sub-layer maps when necessary.\n   * @param {InternalSpriteCurrentState<T>} sprite - Sprite to mutate.\n   * @param {number} subLayer - Sub-layer identifier containing the image.\n   * @param {number} order - Order index to remove.\n   * @returns {boolean} `true` when the image existed and was deleted.\n   */\n  const deleteImageState = (\n    sprite: Readonly<InternalSpriteCurrentState<T>>,\n    subLayer: number,\n    order: number\n  ): boolean => {\n    const inner = sprite.images.get(subLayer);\n    if (!inner) return false;\n    const deleted = inner.delete(order);\n    // Drop the sub-layer bucket entirely when it no longer contains images.\n    if (inner.size === 0) {\n      sprite.images.delete(subLayer);\n    }\n    return deleted;\n  };\n\n  type RenderTargetEntry = readonly [\n    InternalSpriteCurrentState<T>,\n    InternalSpriteImageState,\n  ];\n\n  interface HitTestEntry {\n    readonly sprite: InternalSpriteCurrentState<T>;\n    readonly image: InternalSpriteImageState;\n    readonly corners: readonly [\n      SpriteScreenPoint,\n      SpriteScreenPoint,\n      SpriteScreenPoint,\n      SpriteScreenPoint,\n    ];\n    readonly minX: number;\n    readonly maxX: number;\n    readonly minY: number;\n    readonly maxY: number;\n  }\n\n  /**\n   * Determines whether a point lies inside the quad defined by `corners`.\n   * Uses the edge order shared with the debug outline rendering so hit testing stays in sync\n   * with the visible polygon even when rotation reorders the logical corner layout.\n   * @param {SpriteScreenPoint} point - Point to test.\n   * @param {readonly SpriteScreenPoint[]} corners - Quad corners used during rendering.\n   * @returns {boolean} `true` when the point lies inside either rendered triangle.\n   */\n  const pointInRenderedQuad = (\n    point: SpriteScreenPoint,\n    corners: readonly [\n      SpriteScreenPoint,\n      SpriteScreenPoint,\n      SpriteScreenPoint,\n      SpriteScreenPoint,\n    ]\n  ): boolean => {\n    let hasPositiveCross = false;\n    let hasNegativeCross = false;\n    for (let i = 0; i < DEBUG_OUTLINE_CORNER_ORDER.length; i++) {\n      const currentIndex = DEBUG_OUTLINE_CORNER_ORDER[i]!;\n      const nextIndex =\n        DEBUG_OUTLINE_CORNER_ORDER[\n          (i + 1) % DEBUG_OUTLINE_CORNER_ORDER.length\n        ]!;\n      const a = corners[currentIndex]!;\n      const b = corners[nextIndex]!;\n      const edgeX = b.x - a.x;\n      const edgeY = b.y - a.y;\n      const pointX = point.x - a.x;\n      const pointY = point.y - a.y;\n      const cross = edgeX * pointY - edgeY * pointX;\n      if (Math.abs(cross) <= HIT_TEST_EPSILON) {\n        continue;\n      }\n      if (cross > 0) {\n        hasPositiveCross = true;\n      } else {\n        hasNegativeCross = true;\n      }\n      if (hasPositiveCross && hasNegativeCross) {\n        return false;\n      }\n    }\n    return true;\n  };\n\n  /**\n   * Performs bounding-box precheck followed by triangle tests to confirm pointer hits.\n   * @param {HitTestEntry} entry - Hit-test entry to evaluate.\n   * @param {SpriteScreenPoint} point - Point to test.\n   * @returns {boolean} `true` when the point hits the sprite image.\n   */\n  const isPointInsideHitEntry = (\n    entry: HitTestEntry,\n    point: SpriteScreenPoint\n  ): boolean => {\n    // Early reject when outside the expanded bounding box to avoid expensive triangle tests.\n    if (\n      point.x < entry.minX - HIT_TEST_EPSILON ||\n      point.x > entry.maxX + HIT_TEST_EPSILON ||\n      point.y < entry.minY - HIT_TEST_EPSILON ||\n      point.y > entry.maxY + HIT_TEST_EPSILON\n    ) {\n      return false;\n    }\n    return pointInRenderedQuad(point, entry.corners);\n  };\n\n  /**\n   * Groups render entries by sub-layer and returns them sorted by sub-layer index.\n   * @param {readonly RenderTargetEntry[]} entries - Entries to bucket.\n   * @returns {Array<[number, RenderTargetEntry[]]>} Array of sub-layer id with associated entries.\n   */\n  const buildSortedSubLayerBuckets = (\n    entries: readonly RenderTargetEntry[]\n  ): Array<[number, RenderTargetEntry[]]> => {\n    const buckets = new Map<number, RenderTargetEntry[]>();\n    for (const entry of entries) {\n      const subLayer = entry[1].subLayer;\n      let bucket = buckets.get(subLayer);\n      // Lazily create a bucket per sub-layer.\n      if (!bucket) {\n        bucket = [];\n        buckets.set(subLayer, bucket);\n      }\n      bucket.push(entry);\n    }\n    return Array.from(buckets.keys())\n      .sort((a, b) => a - b)\n      .map((subLayer) => [subLayer, buckets.get(subLayer)!]);\n  };\n\n  /**\n   * List of sprite/image pairs that need to be rendered.\n   * Updated whenever sprites or their images are added or removed, and filtered to visible entries.\n   */\n  const renderTargetEntries: RenderTargetEntry[] = [];\n\n  const hitTestEntries: HitTestEntry[] = [];\n  let hitTestEntryByImage = new WeakMap<\n    InternalSpriteImageState,\n    HitTestEntry\n  >();\n\n  /**\n   * Adds a hit-test entry to the cache, computing its axis-aligned bounding box.\n   * @param {InternalSpriteCurrentState<T>} spriteEntry - Sprite owning the image.\n   * @param {InternalSpriteImageState} imageEntry - Image reference.\n   * @param {readonly SpriteScreenPoint[]} screenCorners - Quad corners in screen space.\n   */\n  const registerHitTestEntry = (\n    spriteEntry: Readonly<InternalSpriteCurrentState<T>>,\n    imageEntry: Readonly<InternalSpriteImageState>,\n    screenCorners: readonly [\n      SpriteScreenPoint,\n      SpriteScreenPoint,\n      SpriteScreenPoint,\n      SpriteScreenPoint,\n    ],\n    drawIndex: number\n  ): void => {\n    if (!isHitTestEnabled) {\n      return;\n    }\n    const corners = screenCorners;\n\n    let minX = corners[0].x;\n    let maxX = corners[0].x;\n    let minY = corners[0].y;\n    let maxY = corners[0].y;\n    // Walk the remaining corners to calculate the bounding box extrema.\n    for (let i = 1; i < corners.length; i++) {\n      const corner = corners[i]!;\n      // Track extrema to form a quick-reject bounding box.\n      if (corner.x < minX) minX = corner.x;\n      if (corner.x > maxX) maxX = corner.x;\n      if (corner.y < minY) minY = corner.y;\n      if (corner.y > maxY) maxY = corner.y;\n    }\n\n    const entry: HitTestEntry = {\n      sprite: spriteEntry,\n      image: imageEntry,\n      corners,\n      minX,\n      maxX,\n      minY,\n      maxY,\n    };\n    hitTestEntries.push(entry);\n    hitTestEntryByImage.set(imageEntry, entry);\n\n    const handle = hitTestTreeItems.get(imageEntry);\n    if (handle) {\n      handle.item.state.drawIndex = drawIndex;\n    }\n  };\n\n  const findTopmostHitEntryLinear = (\n    point: SpriteScreenPoint\n  ): HitTestEntry | null => {\n    // Iterate in reverse so later render entries (visually on top) win.\n    for (let i = hitTestEntries.length - 1; i >= 0; i--) {\n      const entry = hitTestEntries[i]!;\n      if (isPointInsideHitEntry(entry, point)) {\n        return entry;\n      }\n    }\n    return null;\n  };\n\n  /**\n   * Returns the top-most hit-test entry at the given screen point.\n   * @param {SpriteScreenPoint} point - Screen coordinate from the pointer event.\n   * @returns {HitTestEntry | null} Entry representing the hit or `null` if none.\n   */\n  const findTopmostHitEntry = (\n    point: SpriteScreenPoint\n  ): HitTestEntry | null => {\n    if (!isHitTestEnabled) {\n      return null;\n    }\n    const mapInstance = map;\n    if (!mapInstance) {\n      return findTopmostHitEntryLinear(point);\n    }\n\n    const centerLngLat = mapInstance.unproject([point.x, point.y] as any);\n    if (!centerLngLat) {\n      return findTopmostHitEntryLinear(point);\n    }\n\n    const searchPoints: SpriteLocation[] = [\n      { lng: centerLngLat.lng, lat: centerLngLat.lat },\n    ];\n    const radius = HIT_TEST_QUERY_RADIUS_PIXELS;\n    const offsets: Array<[number, number]> = [\n      [point.x - radius, point.y - radius],\n      [point.x + radius, point.y - radius],\n      [point.x - radius, point.y + radius],\n      [point.x + radius, point.y + radius],\n    ];\n    for (const [x, y] of offsets) {\n      const lngLat = mapInstance.unproject([x, y] as any);\n      if (lngLat) {\n        searchPoints.push({ lng: lngLat.lng, lat: lngLat.lat });\n      }\n    }\n\n    const searchRect = rectFromLngLatPoints(searchPoints);\n    if (!searchRect) {\n      return findTopmostHitEntryLinear(point);\n    }\n\n    const candidates = hitTestTree.lookup(\n      searchRect.x0,\n      searchRect.y0,\n      searchRect.x1,\n      searchRect.y1\n    );\n    if (candidates.length === 0) {\n      return findTopmostHitEntryLinear(point);\n    }\n\n    candidates.sort((a, b) => a.state.drawIndex - b.state.drawIndex);\n\n    const seenImages = new Set<InternalSpriteImageState>();\n    for (let i = candidates.length - 1; i >= 0; i--) {\n      const candidate = candidates[i]!;\n      const image = candidate.state.image;\n      if (seenImages.has(image)) {\n        continue;\n      }\n      seenImages.add(image);\n\n      const entry = hitTestEntryByImage.get(image);\n      if (!entry) {\n        continue;\n      }\n      if (isPointInsideHitEntry(entry, point)) {\n        return entry;\n      }\n    }\n\n    return findTopmostHitEntryLinear(point);\n  };\n\n  // TODO: For debug purpose, DO NOT DELETE\n  if (SL_DEBUG) {\n    // Expose render pipeline state for developer diagnostics via global window hooks.\n    (window as any).__renderTargetEntries = renderTargetEntries;\n    (window as any).__spriteHitTestEntries = hitTestEntries;\n  }\n  // TODO: end\n\n  //////////////////////////////////////////////////////////////////////////\n\n  type SpriteEventKey = keyof SpriteLayerEventMap<T>;\n  type GenericSpriteListener = SpriteLayerEventListener<T, SpriteEventKey>;\n\n  /** Event listener registry. */\n  const eventListeners = new Map<SpriteEventKey, Set<GenericSpriteListener>>();\n\n  /**\n   * Retrieves or lazily creates the listener set for a specific event type.\n   * @param {SpriteEventKey} type - Event type identifier.\n   * @returns {Set<GenericSpriteListener>} Listener set.\n   */\n  const getListenerSet = (type: SpriteEventKey): Set<GenericSpriteListener> => {\n    let set = eventListeners.get(type);\n    if (!set) {\n      set = new Set();\n      eventListeners.set(type, set);\n    }\n    return set;\n  };\n\n  /**\n   * Registers a sprite-layer event listener.\n   * @param {K} type - Event type to subscribe to.\n   * @param {SpriteLayerEventListener<T, K>} listener - Listener callback.\n   */\n  const addEventListener = <K extends SpriteEventKey>(\n    type: K,\n    listener: SpriteLayerEventListener<T, K>\n  ): void => {\n    getListenerSet(type).add(listener as GenericSpriteListener);\n  };\n\n  /**\n   * Removes a previously registered event listener.\n   * @param {K} type - Event type to unsubscribe from.\n   * @param {SpriteLayerEventListener<T, K>} listener - Listener to remove.\n   */\n  const removeEventListener = <K extends SpriteEventKey>(\n    type: K,\n    listener: SpriteLayerEventListener<T, K>\n  ): void => {\n    const listeners = eventListeners.get(type);\n    // No listener set mapped to this type, nothing to remove.\n    if (!listeners) {\n      return;\n    }\n    listeners.delete(listener as GenericSpriteListener);\n    // Drop the set entirely once it becomes empty to free memory.\n    if (listeners.size === 0) {\n      eventListeners.delete(type);\n    }\n  };\n\n  let canvasElement: HTMLCanvasElement | null = null;\n  const inputListenerDisposers: Array<() => void> = [];\n\n  /**\n   * Determines if any listeners are registered for the specified event.\n   * @param {SpriteEventKey} type - Event type identifier.\n   * @returns {boolean} `true` when at least one listener exists.\n   */\n  const hasSpriteListeners = (type: SpriteEventKey): boolean =>\n    // Treat missing listener sets as zero, otherwise check the registered count.\n    (eventListeners.get(type)?.size ?? 0) > 0;\n\n  /**\n   * Indicates whether any `spriteclick` listeners are registered.\n   * @returns {boolean} `true` when at least one click listener exists.\n   */\n  const hasSpriteClickListeners = (): boolean =>\n    hasSpriteListeners('spriteclick');\n\n  /**\n   * Indicates whether any `spritehover` listeners are registered.\n   * @returns {boolean} `true` when at least one hover listener exists.\n   */\n  const hasSpriteHoverListeners = (): boolean =>\n    hasSpriteListeners('spritehover');\n\n  /**\n   * Converts native pointer/touch events into screen-space coordinates relative to the canvas.\n   * @param {MouseEvent | PointerEvent | TouchEvent} nativeEvent - Event to process.\n   * @returns {SpriteScreenPoint | null} Screen point or `null` when unavailable.\n   */\n  const resolveScreenPointFromEvent = (\n    nativeEvent: MouseEvent | PointerEvent | TouchEvent\n  ): SpriteScreenPoint | null => {\n    // Without a canvas element we cannot translate event coordinates.\n    if (!canvasElement) {\n      return null;\n    }\n    const rect = canvasElement.getBoundingClientRect();\n    const toScreenPoint = (\n      clientX: number,\n      clientY: number\n    ): SpriteScreenPoint => ({\n      x: clientX - rect.left,\n      y: clientY - rect.top,\n    });\n\n    if ('changedTouches' in nativeEvent) {\n      const touchEvent = nativeEvent as TouchEvent;\n      const touch =\n        // Prefer the touch that triggered the event, otherwise fall back to any active touch (or null).\n        touchEvent.changedTouches?.[0] ?? touchEvent.touches?.[0] ?? null;\n      // Touch events may fire without active touches (e.g., cancellation); ignore when absent.\n      if (!touch) {\n        return null;\n      }\n      return toScreenPoint(touch.clientX, touch.clientY);\n    }\n\n    const mouseLike = nativeEvent as MouseEvent;\n    return toScreenPoint(mouseLike.clientX, mouseLike.clientY);\n  };\n\n  /**\n   * Resolves sprite and image state for a hit-test entry.\n   * @param {HitTestEntry} hitEntry - Hit-test entry returned from the lookup.\n   * @returns {{ sprite: SpriteCurrentState<T> | undefined; image: SpriteImageState | undefined }} Sprite/image state pair.\n   */\n  const resolveSpriteEventPayload = (\n    hitEntry: HitTestEntry | null\n  ): {\n    sprite: SpriteCurrentState<T> | undefined;\n    image: SpriteImageState | undefined;\n  } => {\n    if (!hitEntry) {\n      return {\n        sprite: undefined,\n        image: undefined,\n      };\n    }\n    const spriteState = getSpriteState(hitEntry.sprite.spriteId);\n    const imageState =\n      spriteState?.images\n        .get(hitEntry.image.subLayer)\n        ?.get(hitEntry.image.order) ?? undefined;\n\n    return {\n      sprite: spriteState,\n      image: imageState,\n    };\n  };\n\n  /**\n   * Dispatches a `spriteclick` event to registered listeners.\n   * @param {HitTestEntry} hitEntry - Entry that was hit.\n   * @param {SpriteScreenPoint} screenPoint - Screen-space location of the click.\n   * @param {MouseEvent | PointerEvent | TouchEvent} originalEvent - Native input event.\n   */\n  const dispatchSpriteClick = (\n    hitEntry: HitTestEntry,\n    screenPoint: SpriteScreenPoint,\n    originalEvent: MouseEvent | PointerEvent | TouchEvent\n  ): void => {\n    const listeners = eventListeners.get('spriteclick');\n    // When no listeners are registered, short-circuit without doing extra work.\n    if (!listeners || listeners.size === 0) {\n      return;\n    }\n\n    const payload = resolveSpriteEventPayload(hitEntry);\n\n    const clickEvent: SpriteLayerClickEvent<T> = {\n      type: 'spriteclick',\n      sprite: payload.sprite,\n      image: payload.image,\n      screenPoint,\n      originalEvent,\n    };\n\n    listeners.forEach((listener) => {\n      (listener as SpriteLayerEventListener<T, 'spriteclick'>)(clickEvent);\n    });\n  };\n\n  /**\n   * Dispatches a `spritehover` event to registered listeners.\n   * @param {HitTestEntry} hitEntry - Entry that was hit.\n   * @param {SpriteScreenPoint} screenPoint - Screen-space location of the hover.\n   * @param {MouseEvent | PointerEvent} originalEvent - Native input event.\n   */\n  const dispatchSpriteHover = (\n    hitEntry: HitTestEntry | null,\n    screenPoint: SpriteScreenPoint,\n    originalEvent: MouseEvent | PointerEvent\n  ): void => {\n    const listeners = eventListeners.get('spritehover');\n    // When no listeners are registered, short-circuit without doing extra work.\n    if (!listeners || listeners.size === 0) {\n      return;\n    }\n\n    const payload = resolveSpriteEventPayload(hitEntry);\n\n    const hoverEvent: SpriteLayerHoverEvent<T> = {\n      type: 'spritehover',\n      sprite: payload.sprite,\n      image: payload.image,\n      screenPoint,\n      originalEvent,\n    };\n\n    listeners.forEach((listener) => {\n      (listener as SpriteLayerEventListener<T, 'spritehover'>)(hoverEvent);\n    });\n  };\n\n  /**\n   * Resolves hit-test information for a native event.\n   * @param {MouseEvent | PointerEvent | TouchEvent} nativeEvent - Original browser event.\n   * @returns {{ hitEntry: HitTestEntry; screenPoint: SpriteScreenPoint } | null} Hit-test result or `null`.\n   */\n  const resolveHitTestResult = (\n    nativeEvent: MouseEvent | PointerEvent | TouchEvent\n  ): {\n    hitEntry: HitTestEntry | null;\n    screenPoint: SpriteScreenPoint;\n  } | null => {\n    const screenPoint = resolveScreenPointFromEvent(nativeEvent);\n    // Input may lack coordinates (e.g., touchend without touches); abort hit-testing in that case.\n    if (!screenPoint) {\n      return null;\n    }\n\n    const hitEntry = findTopmostHitEntry(screenPoint);\n    // No sprites intersected the event point; nothing to dispatch.\n    return { hitEntry: hitEntry ?? null, screenPoint };\n  };\n\n  /**\n   * Handles pointer/touch events to trigger sprite click callbacks when matches are found.\n   * @param {MouseEvent | PointerEvent | TouchEvent} nativeEvent - Original browser event.\n   */\n  const processClickEvent = (\n    nativeEvent: MouseEvent | PointerEvent | TouchEvent\n  ): void => {\n    // Skip work entirely when no listeners are interested in click events.\n    if (!hasSpriteClickListeners()) {\n      return;\n    }\n\n    const hitResult = resolveHitTestResult(nativeEvent);\n    if (!hitResult || !hitResult.hitEntry) {\n      return;\n    }\n\n    dispatchSpriteClick(hitResult.hitEntry, hitResult.screenPoint, nativeEvent);\n  };\n\n  /**\n   * Handles pointer/mouse move events to trigger sprite hover callbacks.\n   * @param {MouseEvent | PointerEvent} nativeEvent - Original browser hover event.\n   */\n  const processHoverEvent = (nativeEvent: MouseEvent | PointerEvent): void => {\n    // Skip work entirely when no listeners are interested in hover events.\n    if (!hasSpriteHoverListeners()) {\n      return;\n    }\n\n    const hitResult = resolveHitTestResult(nativeEvent);\n    if (!hitResult) {\n      return;\n    }\n\n    dispatchSpriteHover(hitResult.hitEntry, hitResult.screenPoint, nativeEvent);\n  };\n\n  //////////////////////////////////////////////////////////////////////////\n\n  /**\n   * Creates or refreshes WebGL textures for registered images.\n   * Processes only queued entries to avoid unnecessary work.\n   * Intended to run just before drawing; returns immediately if the GL context is unavailable.\n   * Ensures registerImage calls outside the render loop sync on the next frame.\n   * @returns {void}\n   */\n  const ensureTextures = (): void => {\n    if (!gl) {\n      return;\n    }\n    atlasQueue.flushPending();\n    if (!atlasNeedsUpload) {\n      return;\n    }\n\n    const glContext = gl;\n    const pages = atlasManager.getPages();\n    const activePageIndices = new Set<number>();\n    pages.forEach((page) => activePageIndices.add(page.index));\n\n    atlasPageTextures.forEach((texture, pageIndex) => {\n      if (!activePageIndices.has(pageIndex)) {\n        glContext.deleteTexture(texture);\n        atlasPageTextures.delete(pageIndex);\n      }\n    });\n\n    pages.forEach((page) => {\n      const requiresUpload =\n        page.needsUpload || !atlasPageTextures.has(page.index);\n      if (!requiresUpload) {\n        return;\n      }\n\n      let texture = atlasPageTextures.get(page.index);\n      let isNewTexture = false;\n      if (!texture) {\n        texture = glContext.createTexture();\n        if (!texture) {\n          throw new Error('Failed to create texture.');\n        }\n        atlasPageTextures.set(page.index, texture);\n        isNewTexture = true;\n      }\n      glContext.bindTexture(glContext.TEXTURE_2D, texture);\n      if (isNewTexture) {\n        glContext.texParameteri(\n          glContext.TEXTURE_2D,\n          glContext.TEXTURE_WRAP_S,\n          glContext.CLAMP_TO_EDGE\n        );\n        glContext.texParameteri(\n          glContext.TEXTURE_2D,\n          glContext.TEXTURE_WRAP_T,\n          glContext.CLAMP_TO_EDGE\n        );\n      }\n      glContext.pixelStorei(glContext.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 1);\n      glContext.texImage2D(\n        glContext.TEXTURE_2D,\n        0,\n        glContext.RGBA,\n        glContext.RGBA,\n        glContext.UNSIGNED_BYTE,\n        page.canvas as TexImageSource\n      );\n\n      let minFilterEnum = resolveGlMinFilter(\n        glContext,\n        resolvedTextureFiltering.minFilter\n      );\n      const magFilterEnum = resolveGlMagFilter(\n        glContext,\n        resolvedTextureFiltering.magFilter\n      );\n\n      let usedMipmaps = false;\n      if (resolvedTextureFiltering.generateMipmaps) {\n        const isWebGL2 =\n          typeof WebGL2RenderingContext !== 'undefined' &&\n          glContext instanceof WebGL2RenderingContext;\n        const canUseMipmaps =\n          isWebGL2 || (isPowerOfTwo(page.width) && isPowerOfTwo(page.height));\n        if (canUseMipmaps) {\n          glContext.generateMipmap(glContext.TEXTURE_2D);\n          usedMipmaps = true;\n        } else {\n          minFilterEnum = glContext.LINEAR;\n        }\n      }\n\n      if (\n        !usedMipmaps &&\n        filterRequiresMipmaps(resolvedTextureFiltering.minFilter)\n      ) {\n        minFilterEnum = glContext.LINEAR;\n      }\n\n      glContext.texParameteri(\n        glContext.TEXTURE_2D,\n        glContext.TEXTURE_MIN_FILTER,\n        minFilterEnum\n      );\n      glContext.texParameteri(\n        glContext.TEXTURE_2D,\n        glContext.TEXTURE_MAG_FILTER,\n        magFilterEnum\n      );\n\n      if (\n        usedMipmaps &&\n        anisotropyExtension &&\n        resolvedTextureFiltering.maxAnisotropy > 1\n      ) {\n        const ext = anisotropyExtension;\n        const targetAnisotropy = Math.min(\n          resolvedTextureFiltering.maxAnisotropy,\n          maxSupportedAnisotropy\n        );\n        if (targetAnisotropy > 1) {\n          glContext.texParameterf(\n            glContext.TEXTURE_2D,\n            ext.TEXTURE_MAX_ANISOTROPY_EXT,\n            targetAnisotropy\n          );\n        }\n      }\n\n      atlasManager.markPageClean(page.index);\n    });\n\n    images.forEach((image) => {\n      if (image.atlasPageIndex !== ATLAS_PAGE_INDEX_NONE) {\n        image.texture = atlasPageTextures.get(image.atlasPageIndex);\n      } else {\n        image.texture = undefined;\n      }\n    });\n    imageHandleBuffersController.markDirty(images);\n    atlasNeedsUpload = shouldUploadAtlasPages(pages);\n  };\n\n  /**\n   * Requests a redraw from MapLibre.\n   * Custom layers must call triggerRepaint manually whenever their content changes.\n   * Ensure this runs after animations or style updates so the render loop reflects changes.\n   * @returns {void}\n   */\n  let isRenderScheduled = false;\n\n  const scheduleRender = (): void => {\n    if (!map || isRenderScheduled) {\n      return;\n    }\n    isRenderScheduled = true;\n    map.triggerRepaint();\n  };\n\n  handleAtlasQueueChunkProcessed = () => {\n    syncAtlasPlacementsFromManager();\n    scheduleRender();\n  };\n\n  /**\n   * Rebuilds the list of renderable images based on visibility.\n   * @returns {void}\n   */\n  const ensureRenderTargetEntries = (): void => {\n    renderTargetEntries.length = 0;\n\n    // Traverse every sprite.\n    // Iterate over every sprite to update animation state before drawing.\n    sprites.forEach((sprite) => {\n      // Skip disabled sprites; they should not appear in render output.\n      if (!sprite.isEnabled) {\n        return;\n      }\n      if (sprite.images.size === 0) {\n        // No images associated with this sprite, so nothing to render.\n        return;\n      }\n\n      // Collect each image (subLayer -> order -> image).\n      // Process all image layers belonging to the sprite.\n      sprite.images.forEach((orderMap) => {\n        // Inspect each ordered image entry to update rotation/offset animations.\n        orderMap.forEach((image) => {\n          // Fully transparent images contribute nothing and can be ignored.\n          if (image.opacity <= 0) {\n            image.originRenderTargetIndex = SPRITE_ORIGIN_REFERENCE_INDEX_NONE;\n            image.originReferenceKey = SPRITE_ORIGIN_REFERENCE_KEY_NONE;\n            return;\n          }\n          const imageResource = images.get(image.imageId);\n          // Skip images referencing texture IDs that are not registered.\n          if (!imageResource) {\n            image.imageHandle = 0;\n            image.originRenderTargetIndex = SPRITE_ORIGIN_REFERENCE_INDEX_NONE;\n            image.originReferenceKey = SPRITE_ORIGIN_REFERENCE_KEY_NONE;\n            return;\n          }\n\n          if (image.originLocation !== undefined) {\n            image.originReferenceKey = originReference.encodeKey(\n              image.originLocation.subLayer,\n              image.originLocation.order\n            );\n          } else {\n            image.originReferenceKey = SPRITE_ORIGIN_REFERENCE_KEY_NONE;\n          }\n          image.originRenderTargetIndex = SPRITE_ORIGIN_REFERENCE_INDEX_NONE;\n\n          image.imageHandle = imageResource.handle;\n          renderTargetEntries.push([sprite, image]);\n        });\n      });\n    });\n\n    // Pre-sorting (However, camera face depth is not normalized)\n    renderTargetEntries.sort((a, b) => {\n      const aImage = a[1];\n      const bImage = b[1];\n      if (aImage.subLayer !== bImage.subLayer) {\n        return aImage.subLayer - bImage.subLayer;\n      }\n      if (aImage.order !== bImage.order) {\n        return aImage.order - bImage.order;\n      }\n      return aImage.imageId.localeCompare(bImage.imageId);\n    });\n\n    const originIndexBySprite = new Map<\n      string,\n      Map<SpriteOriginReferenceKey, number>\n    >();\n\n    for (let index = 0; index < renderTargetEntries.length; index++) {\n      const [sprite, image] = renderTargetEntries[index]!;\n      let indexMap = originIndexBySprite.get(sprite.spriteId);\n      if (!indexMap) {\n        indexMap = new Map<SpriteOriginReferenceKey, number>();\n        originIndexBySprite.set(sprite.spriteId, indexMap);\n      }\n      const selfKey = originReference.encodeKey(image.subLayer, image.order);\n      indexMap.set(selfKey, index);\n    }\n\n    for (const [sprite, image] of renderTargetEntries) {\n      if (image.originReferenceKey === SPRITE_ORIGIN_REFERENCE_KEY_NONE) {\n        image.originRenderTargetIndex = SPRITE_ORIGIN_REFERENCE_INDEX_NONE;\n        continue;\n      }\n      const indexMap = originIndexBySprite.get(sprite.spriteId);\n      const targetIndex =\n        indexMap?.get(image.originReferenceKey) ??\n        SPRITE_ORIGIN_REFERENCE_INDEX_NONE;\n      image.originRenderTargetIndex = targetIndex;\n    }\n  };\n\n  //////////////////////////////////////////////////////////////////////////\n\n  /**\n   * Invoked by MapLibre when the layer is added to the map.\n   * Initializes WebGL resources, compiles shaders, and enables required attributes.\n   *\n   * @param {MapLibreMap} mapInstance - MapLibre map instance.\n   * @param {WebGLRenderingContext} glContext - Supplied WebGL context.\n   */\n  const onAdd = (\n    mapInstance: MapLibreMap,\n    glContext: WebGLRenderingContext\n  ): void => {\n    map = mapInstance;\n    gl = glContext;\n    anisotropyExtension = resolveAnisotropyExtension(glContext);\n    if (anisotropyExtension) {\n      const ext = anisotropyExtension;\n      const supported = glContext.getParameter(\n        ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT\n      ) as number | null;\n      if (\n        typeof supported === 'number' &&\n        Number.isFinite(supported) &&\n        supported >= 1\n      ) {\n        maxSupportedAnisotropy = supported;\n      } else {\n        maxSupportedAnisotropy = 1;\n      }\n    } else {\n      maxSupportedAnisotropy = 1;\n    }\n\n    canvasElement = mapInstance.getCanvas();\n    const registerDisposer = (disposer: () => void) => {\n      inputListenerDisposers.push(disposer);\n    };\n    const supportsPointerEvents =\n      typeof window !== 'undefined' && 'PointerEvent' in window;\n    // Only attach DOM listeners when a canvas is present.\n    if (canvasElement) {\n      if (supportsPointerEvents) {\n        const pointerUpListener = (event: PointerEvent) => {\n          if (event.pointerType === 'mouse' && event.button !== 0) {\n            // Ignore non-primary mouse buttons to match click semantics.\n            return;\n          }\n          processClickEvent(event);\n        };\n        canvasElement.addEventListener('pointerup', pointerUpListener, {\n          passive: true,\n        });\n        registerDisposer(() => {\n          canvasElement?.removeEventListener('pointerup', pointerUpListener);\n        });\n\n        const pointerMoveListener = (event: PointerEvent) => {\n          if (!event.isPrimary) {\n            // Secondary pointers are ignored to reduce duplicate hover dispatch.\n            return;\n          }\n          if (event.pointerType === 'touch') {\n            // Touch pointers do not support hover semantics.\n            return;\n          }\n          processHoverEvent(event);\n        };\n        canvasElement.addEventListener('pointermove', pointerMoveListener, {\n          passive: true,\n        });\n        registerDisposer(() => {\n          canvasElement?.removeEventListener(\n            'pointermove',\n            pointerMoveListener\n          );\n        });\n      } else {\n        const clickListener = (event: MouseEvent) => {\n          if (event.button !== 0) {\n            // Only respond to primary button clicks when pointer events are unavailable.\n            return;\n          }\n          processClickEvent(event);\n        };\n        canvasElement.addEventListener('click', clickListener, {\n          passive: true,\n        });\n        registerDisposer(() => {\n          canvasElement?.removeEventListener('click', clickListener);\n        });\n\n        const touchListener = (event: TouchEvent) => {\n          processClickEvent(event);\n        };\n        canvasElement.addEventListener('touchend', touchListener, {\n          passive: true,\n        });\n        registerDisposer(() => {\n          canvasElement?.removeEventListener('touchend', touchListener);\n        });\n\n        const mouseMoveListener = (event: MouseEvent) => {\n          processHoverEvent(event);\n        };\n        canvasElement.addEventListener('mousemove', mouseMoveListener, {\n          passive: true,\n        });\n        registerDisposer(() => {\n          canvasElement?.removeEventListener('mousemove', mouseMoveListener);\n        });\n      }\n    }\n\n    spriteDrawProgram = createSpriteDrawProgram<T>(glContext);\n\n    if (showDebugBounds) {\n      debugOutlineRenderer = createDebugOutlineRenderer(glContext);\n    }\n\n    // Request a render pass.\n    scheduleRender();\n  };\n\n  /**\n   * Called when the layer is removed from the map to release WebGL resources.\n   */\n  const onRemove = (): void => {\n    inputListenerDisposers.forEach((dispose) => dispose());\n    inputListenerDisposers.length = 0;\n    canvasElement = null;\n    hitTestEntries.length = 0;\n    hitTestEntryByImage = new WeakMap<InternalSpriteImageState, HitTestEntry>();\n    hitTestTree.clear();\n    hitTestTreeItems = new WeakMap<\n      InternalSpriteImageState,\n      HitTestTreeHandle\n    >();\n\n    const glContext = gl;\n    if (glContext) {\n      atlasPageTextures.forEach((texture) => {\n        glContext.deleteTexture(texture);\n      });\n      atlasPageTextures.clear();\n      images.forEach((image) => {\n        image.texture = undefined;\n      });\n      atlasNeedsUpload = true;\n      if (spriteDrawProgram) {\n        spriteDrawProgram.release();\n        spriteDrawProgram = null;\n      }\n      if (debugOutlineRenderer) {\n        debugOutlineRenderer.release();\n        debugOutlineRenderer = null;\n      }\n    }\n\n    eventListeners.forEach((set) => set.clear());\n    eventListeners.clear();\n\n    gl = null;\n    map = null;\n    debugOutlineRenderer = null;\n    anisotropyExtension = null;\n    maxSupportedAnisotropy = 1;\n  };\n\n  /**\n   * Per-frame render loop.\n   * Draws visible sprites in layer order and assigns textures to each quad.\n   *\n   * @param {WebGLRenderingContext} glContext - WebGL context used for rendering.\n   * @param {CustomRenderMethodInput} options - Render options supplied by MapLibre (timestamp, etc.).\n   */\n  const render = (\n    glContext: WebGLRenderingContext,\n    _options: CustomRenderMethodInput\n  ): void => {\n    isRenderScheduled = false;\n    hitTestEntries.length = 0;\n    hitTestEntryByImage = new WeakMap<InternalSpriteImageState, HitTestEntry>();\n\n    // Abort early if any critical resource (map or shader program) is missing.\n    const mapInstance = map;\n    if (!mapInstance || !spriteDrawProgram) {\n      return;\n    }\n\n    const timestamp =\n      typeof performance !== 'undefined' &&\n      typeof performance.now === 'function'\n        ? // Prefer high-resolution timers when available for smoother animation progress.\n          performance.now()\n        : // Fall back to Date.now() in environments without the Performance API.\n          Date.now();\n\n    let hasActiveInterpolation = false;\n    sprites.forEach((sprite) => {\n      const state = sprite.interpolationState;\n      // Advance sprite position interpolation when an active state exists.\n      if (state) {\n        const evaluation = evaluateInterpolation({\n          state,\n          timestamp,\n        });\n        // Initialize start timestamp on first evaluation to align progress.\n        if (state.startTimestamp < 0) {\n          state.startTimestamp = evaluation.effectiveStartTimestamp;\n        }\n        sprite.currentLocation = evaluation.location;\n\n        // Once interpolation completes, snap to the destination and clear transient state.\n        if (evaluation.completed) {\n          sprite.currentLocation = cloneSpriteLocation(state.to);\n          sprite.fromLocation = undefined;\n          sprite.toLocation = undefined;\n          sprite.interpolationState = null;\n        } else {\n          hasActiveInterpolation = true;\n        }\n      }\n\n      sprite.images.forEach((orderMap) => {\n        orderMap.forEach((image) => {\n          if (stepSpriteImageInterpolations(image, timestamp)) {\n            hasActiveInterpolation = true;\n          }\n        });\n      });\n    });\n\n    // Schedule another frame when any interpolation remains in-flight to keep animations smooth.\n    if (hasActiveInterpolation) {\n      scheduleRender();\n    }\n\n    const canvas = glContext.canvas as HTMLCanvasElement;\n    const cssWidth = canvas.clientWidth;\n    const cssHeight = canvas.clientHeight;\n\n    // clientWidth/Height are in CSS pixels. devicePixelRatio is handled internally by WebGL.\n    // Bail out if cssHeight is zero, as subsequent clip conversion becomes undefined.\n    // A zero-sized canvas cannot support render calculations, so skip drawing entirely.\n    if (cssWidth === 0 || cssHeight === 0) {\n      return;\n    }\n\n    // Synchronize GPU uploads for image textures.\n    ensureTextures();\n\n    const drawingBufferWidth = glContext.drawingBufferWidth;\n    const drawingBufferHeight = glContext.drawingBufferHeight;\n    const pixelRatio = drawingBufferWidth / cssWidth;\n    if (drawingBufferWidth === 0 || drawingBufferHeight === 0) {\n      return;\n    }\n\n    const screenToClipScaleX = (2 * pixelRatio) / drawingBufferWidth;\n    const screenToClipScaleY = (-2 * pixelRatio) / drawingBufferHeight;\n    const screenToClipOffsetX = -1;\n    const screenToClipOffsetY = 1;\n    const identityScaleX = 1;\n    const identityScaleY = 1;\n    const identityOffsetX = 0;\n    const identityOffsetY = 0;\n\n    const baseMetersPerPixel = resolvedScaling.metersPerPixel;\n    const spriteMinPixel = resolvedScaling.spriteMinPixel;\n    const spriteMaxPixel = resolvedScaling.spriteMaxPixel;\n\n    // Prepare to create projection host\n    const projectionHost = createProjectionHostForMap(mapInstance);\n    try {\n      const clipContext = projectionHost.getClipContext();\n      // Without a clip context we cannot project to clip space; skip rendering.\n      if (!clipContext) {\n        return;\n      }\n\n      const zoom = projectionHost.getZoom();\n      const zoomScaleFactor = calculateZoomScaleFactor(zoom, resolvedScaling);\n\n      // Enable blending and avoid depth-buffer interference.\n      glContext.enable(glContext.BLEND);\n      glContext.blendFunc(glContext.SRC_ALPHA, glContext.ONE_MINUS_SRC_ALPHA);\n      glContext.disable(glContext.DEPTH_TEST);\n      glContext.depthMask(false);\n\n      const drawProgram = spriteDrawProgram;\n      drawProgram.beginFrame();\n\n      let drawOrderCounter = 0;\n      const drawPreparedSprite = (\n        prepared: PreparedDrawSpriteImageParams<T>\n      ): void => {\n        const didDraw = drawProgram.draw(prepared);\n        if (!didDraw) {\n          return;\n        }\n\n        prepared.imageEntry.surfaceShaderInputs =\n          prepared.surfaceShaderInputs ?? undefined;\n\n        if (prepared.hitTestCorners && prepared.hitTestCorners.length === 4) {\n          registerHitTestEntry(\n            prepared.spriteEntry,\n            prepared.imageEntry,\n            prepared.hitTestCorners as [\n              SpriteScreenPoint,\n              SpriteScreenPoint,\n              SpriteScreenPoint,\n              SpriteScreenPoint,\n            ],\n            drawOrderCounter\n          );\n        }\n\n        drawOrderCounter += 1;\n      };\n\n      const sortedSubLayerBuckets =\n        buildSortedSubLayerBuckets(renderTargetEntries);\n\n      if (renderTargetEntries.length > 0) {\n        const calculationHost = createCalculationHostForMap(mapInstance);\n        try {\n          const imageHandleBuffers = imageHandleBuffersController.ensure();\n          const imageResources =\n            imageHandleBuffersController.getResourcesByHandle();\n          const bucketBuffers = createRenderTargetBucketBuffers(\n            renderTargetEntries,\n            {\n              originReference,\n            }\n          );\n          const preparedItems = calculationHost.prepareDrawSpriteImages({\n            bucket: renderTargetEntries,\n            bucketBuffers,\n            imageResources,\n            imageHandleBuffers,\n            resolvedScaling,\n            clipContext,\n            baseMetersPerPixel,\n            spriteMinPixel,\n            spriteMaxPixel,\n            drawingBufferWidth,\n            drawingBufferHeight,\n            pixelRatio,\n            zoomScaleFactor,\n            identityScaleX,\n            identityScaleY,\n            identityOffsetX,\n            identityOffsetY,\n            screenToClipScaleX,\n            screenToClipScaleY,\n            screenToClipOffsetX,\n            screenToClipOffsetY,\n          });\n\n          drawProgram.uploadVertexBatch(preparedItems);\n\n          const preparedBySubLayer = new Map<\n            number,\n            PreparedDrawSpriteImageParams<T>[]\n          >();\n          for (const prepared of preparedItems) {\n            const subLayer = prepared.imageEntry.subLayer;\n            let list = preparedBySubLayer.get(subLayer);\n            if (!list) {\n              list = [];\n              preparedBySubLayer.set(subLayer, list);\n            }\n            list.push(prepared);\n          }\n\n          for (const [subLayer, bucket] of sortedSubLayerBuckets) {\n            const preparedBucket = preparedBySubLayer.get(subLayer);\n            if (!preparedBucket) {\n              continue;\n            }\n            const bucketImages = new Set<InternalSpriteImageState>();\n            for (const [, image] of bucket) {\n              bucketImages.add(image);\n            }\n            for (const prepared of preparedBucket) {\n              if (!bucketImages.has(prepared.imageEntry)) {\n                continue;\n              }\n              bucketImages.delete(prepared.imageEntry);\n              drawPreparedSprite(prepared);\n            }\n          }\n        } finally {\n          calculationHost.release();\n        }\n      }\n\n      if (showDebugBounds && debugOutlineRenderer) {\n        debugOutlineRenderer.begin(\n          screenToClipScaleX,\n          screenToClipScaleY,\n          screenToClipOffsetX,\n          screenToClipOffsetY\n        );\n        for (const entry of hitTestEntries) {\n          debugOutlineRenderer.drawOutline(entry.corners);\n        }\n        debugOutlineRenderer.end();\n      }\n    } finally {\n      projectionHost.release();\n    }\n\n    glContext.depthMask(true);\n    glContext.enable(glContext.DEPTH_TEST);\n    glContext.disable(glContext.BLEND);\n  };\n\n  //////////////////////////////////////////////////////////////////////////\n\n  /**\n   * Registers an image URL or existing ImageBitmap with the image registry.\n   * @param {string} imageId - Image identifier used by sprites.\n   * @param {string | ImageBitmap} imageSource - Image URL or existing ImageBitmap to load.\n   * @param {SpriteImageRegisterOptions | undefined} [options] - Optional controls for SVG rasterization.\n   * @returns {Promise<boolean>} Resolves to `true` when registered; `false` if the ID already exists.\n   * @remarks Sprites must register images before referencing them.\n   */\n  const registerImage = async (\n    imageId: string,\n    imageSource: string | ImageBitmap,\n    options?: SpriteImageRegisterOptions,\n    signal?: AbortSignal\n  ): Promise<boolean> => {\n    // Load from URL when given a string; otherwise reuse the provided bitmap directly.\n    let bitmap: ImageBitmap;\n    try {\n      bitmap =\n        typeof imageSource === 'string'\n          ? await loadImageBitmap(imageSource, options)\n          : imageSource;\n    } catch (error) {\n      if (error instanceof SvgSizeResolutionError) {\n        console.warn(\n          `[SpriteLayer] Unable to register image \"${imageId}\": ${error.message}`,\n          error\n        );\n        return false;\n      }\n      throw error;\n    }\n    // Reject duplicate registrations to keep texture management consistent.\n    if (images.has(imageId)) {\n      // Avoid overwriting an existing texture registration using the same identifier.\n      return false;\n    }\n\n    const handle = imageIdHandler.allocate(imageId);\n    // Store the image metadata.\n    const image: RegisteredImage = {\n      id: imageId,\n      handle,\n      width: bitmap.width,\n      height: bitmap.height,\n      bitmap,\n      texture: undefined,\n      atlasPageIndex: ATLAS_PAGE_INDEX_NONE,\n      atlasU0: 0,\n      atlasV0: 0,\n      atlasU1: 1,\n      atlasV1: 1,\n    };\n    images.set(imageId, image);\n    imageIdHandler.store(handle, image);\n    updateSpriteImageHandles(imageId, handle);\n    imageHandleBuffersController.markDirty(images);\n\n    const deferred = createDeferred<boolean>();\n    const abortHandle = signal\n      ? onAbort(signal, (error) => {\n          deferred.reject(error);\n        })\n      : null;\n    atlasQueue.enqueueUpsert({ imageId, bitmap, deferred });\n\n    try {\n      return await deferred.promise;\n    } catch (e) {\n      images.delete(imageId);\n      imageIdHandler.release(imageId);\n      updateSpriteImageHandles(imageId, 0);\n      imageHandleBuffersController.markDirty(images);\n      atlasManager.removeImage(imageId);\n      bitmap.close?.();\n      throw e;\n    } finally {\n      abortHandle?.release();\n    }\n  };\n\n  /**\n   * Generates a text glyph image and registers it as a sprite resource.\n   * @param {string} textGlyphId - Identifier assigned to the generated glyph.\n   * @param {string} text - Text content to render.\n   * @param {SpriteTextGlyphDimensions} dimensions - Dimension constraints (line height or max width).\n   * @param {SpriteTextGlyphOptions} [options] - Additional styling options for the glyph.\n   * @returns {Promise<boolean>} Resolves to `true` when registered; `false` if the ID already exists.\n   */\n  interface TextGlyphRenderResult {\n    readonly bitmap: ImageBitmap;\n    readonly width: number;\n    readonly height: number;\n  }\n\n  const renderTextGlyphBitmap = async (\n    text: string,\n    dimensions: SpriteTextGlyphDimensions,\n    options?: SpriteTextGlyphOptions\n  ): Promise<TextGlyphRenderResult> => {\n    let lineHeight: number | undefined;\n    let maxWidth: number | undefined;\n    const isLineHeightMode = 'lineHeightPixel' in dimensions;\n    if (isLineHeightMode) {\n      const { lineHeightPixel } = dimensions as { lineHeightPixel: number };\n      lineHeight = clampGlyphDimension(lineHeightPixel);\n    } else {\n      const { maxWidthPixel } = dimensions as { maxWidthPixel: number };\n      maxWidth = clampGlyphDimension(maxWidthPixel);\n    }\n\n    const resolved = resolveTextGlyphOptions(options, lineHeight);\n    let fontSize = resolved.fontSizePixel;\n\n    const { ctx: measureCtx } = createCanvas2D(1, 1);\n    const applyFontSize = (ctx: Canvas2DContext, size: number) => {\n      ctx.font = buildFontString({ ...resolved, fontSizePixel: size });\n    };\n    applyFontSize(measureCtx, fontSize);\n    measureCtx.textBaseline = 'alphabetic';\n\n    const letterSpacing = resolved.letterSpacingPixel;\n    let measuredWidth = measureTextWidthWithSpacing(\n      measureCtx,\n      text,\n      letterSpacing\n    );\n\n    let contentWidthLimit: number | undefined;\n    if (!isLineHeightMode && typeof maxWidth === 'number') {\n      const padding = resolved.paddingPixel;\n      const borderWidth = resolved.borderWidthPixel;\n      const glyphCount = Array.from(text).length;\n      const letterSpacingTotal = letterSpacing * Math.max(glyphCount - 1, 0);\n\n      contentWidthLimit = Math.max(\n        1,\n        maxWidth - borderWidth - padding.left - padding.right\n      );\n      if (contentWidthLimit < letterSpacingTotal) {\n        contentWidthLimit = letterSpacingTotal;\n      }\n\n      if (text.length > 0 && measuredWidth > contentWidthLimit) {\n        const initialRatio = contentWidthLimit / measuredWidth;\n        fontSize = Math.max(\n          MIN_TEXT_GLYPH_FONT_SIZE,\n          Math.floor(fontSize * initialRatio)\n        );\n        applyFontSize(measureCtx, fontSize);\n        measuredWidth = measureTextWidthWithSpacing(\n          measureCtx,\n          text,\n          letterSpacing\n        );\n\n        let guard = 0;\n        while (\n          measuredWidth > contentWidthLimit &&\n          fontSize > MIN_TEXT_GLYPH_FONT_SIZE &&\n          guard < 12\n        ) {\n          const ratio = contentWidthLimit / measuredWidth;\n          const nextFontSize = Math.max(\n            MIN_TEXT_GLYPH_FONT_SIZE,\n            Math.floor(fontSize * Math.max(ratio, 0.75))\n          );\n          if (nextFontSize === fontSize) {\n            fontSize = Math.max(MIN_TEXT_GLYPH_FONT_SIZE, fontSize - 1);\n          } else {\n            fontSize = nextFontSize;\n          }\n          applyFontSize(measureCtx, fontSize);\n          measuredWidth = measureTextWidthWithSpacing(\n            measureCtx,\n            text,\n            letterSpacing\n          );\n          guard += 1;\n        }\n      }\n    }\n\n    applyFontSize(measureCtx, fontSize);\n    measuredWidth = measureTextWidthWithSpacing(\n      measureCtx,\n      text,\n      letterSpacing\n    );\n    const measuredHeight = measureTextHeight(measureCtx, text, fontSize);\n\n    const paddingPixel = resolved.paddingPixel;\n    const borderWidthPixel = resolved.borderWidthPixel;\n\n    const contentHeight = isLineHeightMode\n      ? lineHeight!\n      : clampGlyphDimension(Math.ceil(measuredHeight));\n\n    const totalWidth = clampGlyphDimension(\n      Math.ceil(\n        borderWidthPixel +\n          paddingPixel.left +\n          paddingPixel.right +\n          measuredWidth\n      )\n    );\n    const totalHeight = clampGlyphDimension(\n      Math.ceil(\n        borderWidthPixel +\n          paddingPixel.top +\n          paddingPixel.bottom +\n          contentHeight\n      )\n    );\n\n    const renderPixelRatio = resolved.renderPixelRatio;\n    const renderWidth = Math.max(1, Math.round(totalWidth * renderPixelRatio));\n    const renderHeight = Math.max(\n      1,\n      Math.round(totalHeight * renderPixelRatio)\n    );\n\n    const { canvas, ctx } = createCanvas2D(renderWidth, renderHeight);\n    ctx.clearRect(0, 0, renderWidth, renderHeight);\n    ctx.save();\n    if (renderPixelRatio !== 1) {\n      ctx.scale(renderPixelRatio, renderPixelRatio);\n    }\n    ctx.imageSmoothingEnabled = true;\n\n    if (resolved.backgroundColor) {\n      fillRoundedRect(\n        ctx,\n        totalWidth,\n        totalHeight,\n        resolved.borderRadiusPixel,\n        resolved.backgroundColor\n      );\n    }\n\n    if (resolved.borderColor && borderWidthPixel > 0) {\n      const inset = borderWidthPixel / 2;\n      const strokeWidth = Math.max(0, totalWidth - borderWidthPixel);\n      const strokeHeight = Math.max(0, totalHeight - borderWidthPixel);\n      const strokeRadius = Math.max(0, resolved.borderRadiusPixel - inset);\n      ctx.save();\n      ctx.translate(inset, inset);\n      strokeRoundedRect(\n        ctx,\n        strokeWidth,\n        strokeHeight,\n        strokeRadius,\n        resolved.borderColor,\n        borderWidthPixel,\n        resolved.borderSides\n      );\n      ctx.restore();\n    }\n\n    const borderInset = borderWidthPixel / 2;\n    const contentWidth = Math.max(\n      0,\n      totalWidth - borderWidthPixel - paddingPixel.left - paddingPixel.right\n    );\n    const contentHeightInner = Math.max(\n      0,\n      totalHeight - borderWidthPixel - paddingPixel.top - paddingPixel.bottom\n    );\n    const contentLeft = borderInset + paddingPixel.left;\n    const contentTop = borderInset + paddingPixel.top;\n    const textY = contentTop + contentHeightInner / 2;\n\n    const renderOptions = { ...resolved, fontSizePixel: fontSize };\n    ctx.font = buildFontString(renderOptions);\n    ctx.fillStyle = resolved.color;\n    ctx.textAlign = 'left';\n    ctx.textBaseline = 'middle';\n\n    const totalTextWidth = measureTextWidthWithSpacing(\n      ctx,\n      text,\n      letterSpacing\n    );\n\n    let textStartX = contentLeft;\n    switch (resolved.textAlign) {\n      case 'right':\n        textStartX = contentLeft + (contentWidth - totalTextWidth);\n        break;\n      case 'center':\n        textStartX = contentLeft + (contentWidth - totalTextWidth) / 2;\n        break;\n      case 'left':\n      default:\n        textStartX = contentLeft;\n        break;\n    }\n\n    drawTextWithLetterSpacing(ctx, text, textStartX, textY, letterSpacing);\n\n    ctx.restore();\n\n    const bitmap = await createImageBitmapFromCanvas(\n      canvas,\n      renderWidth,\n      renderHeight,\n      totalWidth,\n      totalHeight,\n      renderPixelRatio\n    );\n\n    return { bitmap, width: totalWidth, height: totalHeight };\n  };\n\n  const registerTextGlyph = async (\n    textGlyphId: string,\n    text: string,\n    dimensions: SpriteTextGlyphDimensions,\n    options?: SpriteTextGlyphOptions,\n    signal?: AbortSignal\n  ): Promise<boolean> => {\n    if (images.has(textGlyphId) || pendingTextGlyphIds.has(textGlyphId)) {\n      return true;\n    }\n\n    pendingTextGlyphIds.add(textGlyphId);\n    const deferred = createDeferred<boolean>();\n    let glyphAbortHandle: Releasable | null = null;\n    if (signal) {\n      glyphAbortHandle = onAbort(signal, (error) => {\n        cancelPendingTextGlyphJob(textGlyphId, error);\n      });\n    }\n    enqueueTextGlyphJob({\n      glyphId: textGlyphId,\n      text,\n      dimensions,\n      options,\n      deferred,\n      signal,\n      abortHandle: glyphAbortHandle,\n    });\n\n    try {\n      return await deferred.promise;\n    } finally {\n      pendingTextGlyphIds.delete(textGlyphId);\n    }\n  };\n  /**\n   * Unregisters an image and releases any associated GPU resources.\n   * @param {string} imageId - Unique identifier of the image to remove.\n   * @returns {boolean} `true` when the image existed and was removed; `false` otherwise.\n   */\n  const unregisterImage = (imageId: string): boolean => {\n    // Ensure the image exists.\n    const image = images.get(imageId);\n    if (!image) {\n      if (pendingTextGlyphIds.has(imageId)) {\n        cancelPendingTextGlyphJob(\n          imageId,\n          new Error(\n            `[SpriteLayer][GlyphQueue] Image \"${imageId}\" was unregistered before generation.`\n          )\n        );\n        return true;\n      }\n      return false;\n    }\n\n    atlasQueue.cancelForImage(\n      imageId,\n      new Error(\n        `[SpriteLayer][Atlas] Image \"${imageId}\" was unregistered before placement.`\n      )\n    );\n\n    // Remove image bounds\n    sprites.forEach((sprite) => {\n      sprite.images.forEach((orderMap) => {\n        orderMap.forEach((imageState) => {\n          if (imageState.imageId === imageId) {\n            removeImageBoundsFromHitTestTree(imageState);\n          }\n        });\n      });\n    });\n\n    if (image.bitmap) {\n      image.bitmap.close?.();\n    }\n\n    // Remove the image entry.\n    images.delete(imageId);\n    imageIdHandler.release(imageId);\n    updateSpriteImageHandles(imageId, 0);\n    imageHandleBuffersController.markDirty(images);\n    atlasManager.removeImage(imageId);\n    syncAtlasPlacementsFromManager();\n\n    // Rebuild render targets now that the image is gone.\n    ensureRenderTargetEntries();\n    scheduleRender();\n\n    return true;\n  };\n\n  /**\n   * Unregisters all images and glyphs, cleaning up associated GPU textures.\n   * @returns {void}\n   */\n  const unregisterAllImages = (): void => {\n    rejectAllPendingTextGlyphJobs(\n      new Error(\n        '[SpriteLayer][GlyphQueue] Pending glyph operations were cleared.'\n      )\n    );\n    pendingTextGlyphIds.clear();\n    atlasQueue.rejectAll(\n      new Error('[SpriteLayer][Atlas] Pending atlas operations were cleared.')\n    );\n    const glContext = gl;\n    atlasPageTextures.forEach((texture) => {\n      if (glContext) {\n        glContext.deleteTexture(texture);\n      }\n    });\n    atlasPageTextures.clear();\n    images.forEach((image) => {\n      if (image.bitmap) {\n        image.bitmap.close?.();\n      }\n    });\n    images.clear();\n    atlasManager.clear();\n    atlasNeedsUpload = false;\n    imageIdHandler.reset();\n    imageHandleBuffersController.markDirty(images);\n    sprites.forEach((sprite) => {\n      sprite.images.forEach((orderMap) => {\n        orderMap.forEach((imageState) => {\n          imageState.imageHandle = 0;\n        });\n      });\n    });\n    hitTestTree.clear();\n    hitTestTreeItems = new WeakMap<\n      InternalSpriteImageState,\n      HitTestTreeHandle\n    >();\n    hitTestEntryByImage = new WeakMap<InternalSpriteImageState, HitTestEntry>();\n    ensureRenderTargetEntries();\n    scheduleRender();\n  };\n\n  /**\n   * Returns the identifiers of all registered images and glyphs.\n   * @returns {string[]} Array containing every registered imageId.\n   */\n  const getAllImageIds = (): string[] => Array.from(images.keys());\n\n  //////////////////////////////////////////////////////////////////////////\n\n  /**\n   * Internal helper that constructs sprite state without scheduling redraws.\n   * @param {ProjectionHost} projectionHost - Projection host.\n   * @param {string} spriteId - Sprite identifier.\n   * @param {SpriteInit<T>} init - Initial sprite parameters.\n   * @returns {boolean} `true` when the sprite is stored; `false` when the ID already exists or is invalid.\n   */\n  const addSpriteInternal = (\n    projectionHost: ProjectionHost,\n    spriteId: string,\n    init: SpriteInit<T>\n  ): boolean => {\n    // Reject duplicates.\n    if (sprites.get(spriteId)) {\n      return false;\n    }\n\n    // Build internal image state map.\n    const imagesInit = init.images ?? [];\n    // Each initial image definition will be normalized into internal state maps below.\n    const images = new Map<number, Map<number, InternalSpriteImageState>>();\n    for (const imageInit of imagesInit) {\n      const state = createImageStateFromInit(\n        imageInit,\n        imageInit.subLayer,\n        imageInit.order,\n        originReference\n      );\n      state.imageHandle = resolveImageHandle(state.imageId);\n      let inner = images.get(imageInit.subLayer);\n      if (!inner) {\n        // First entry for this sub-layer; allocate a map for subsequent inserts.\n        inner = new Map<number, InternalSpriteImageState>();\n        images.set(imageInit.subLayer, inner);\n      }\n      if (inner.has(imageInit.order)) {\n        // Disallow duplicate orders.\n        return false;\n      }\n      inner.set(imageInit.order, state);\n    }\n\n    // Validate origin references (existence and detect cycles).\n    type Key = { subLayer: number; order: number };\n    const keyToStr = (k: Key) => `${k.subLayer}:${k.order}`;\n    const getRef = (k: Key): Key | undefined => {\n      const ref = images.get(k.subLayer)?.get(k.order)?.originLocation;\n      if (!ref) return undefined;\n      return { subLayer: ref.subLayer, order: ref.order };\n    };\n    const hasCycle = (start: Key): boolean => {\n      const visited = new Set<string>();\n      let cur = getRef(start);\n      while (cur) {\n        // Follow originLocation references depth-first, checking for loops.\n        const id = keyToStr(cur);\n        if (cur.subLayer === start.subLayer && cur.order === start.order) {\n          return true;\n        }\n        if (visited.has(id)) {\n          return true;\n        }\n        visited.add(id);\n        cur = getRef(cur);\n      }\n      return false;\n    };\n\n    // Validate each stored image across all sub-layers to guard against invalid references.\n    for (const [subLayer, omap] of images) {\n      for (const [order, state] of omap) {\n        const ref = state.originLocation;\n        if (ref !== undefined && !images.get(ref.subLayer)?.has(ref.order)) {\n          throw new Error(\n            `originLocation refers missing image {${ref.subLayer}, ${ref.order}} in sprite ${spriteId}`\n          );\n        }\n        if (ref !== undefined && hasCycle({ subLayer, order })) {\n          throw new Error(\n            `originLocation has cyclic reference at image {${subLayer}, ${order}} in sprite ${spriteId}`\n          );\n        }\n      }\n    }\n\n    // Construct internal sprite state.\n    const currentLocation = cloneSpriteLocation(init.location);\n    const initialAltitude = currentLocation.z ?? 0;\n    const initialMercator = projectionHost.fromLngLat(currentLocation);\n    const spriteHandle = spriteIdHandler.allocate(spriteId);\n\n    const spriteState: InternalSpriteCurrentState<T> = {\n      spriteId,\n      handle: spriteHandle,\n      // Sprites default to enabled unless explicitly disabled in the init payload.\n      isEnabled: init.isEnabled ?? true,\n      currentLocation,\n      fromLocation: undefined,\n      toLocation: undefined,\n      images,\n      // Tags default to null to simplify downstream comparisons.\n      tag: init.tag ?? null,\n      interpolationState: null,\n      pendingInterpolationOptions: null,\n      lastCommandLocation: cloneSpriteLocation(currentLocation),\n      lastAutoRotationLocation: cloneSpriteLocation(currentLocation),\n      lastAutoRotationAngleDeg: 0,\n      cachedMercator: initialMercator,\n      cachedMercatorLng: currentLocation.lng,\n      cachedMercatorLat: currentLocation.lat,\n      cachedMercatorZ: initialAltitude,\n    };\n\n    // Store the sprite state.\n    sprites.set(spriteId, spriteState);\n    spriteIdHandler.store(spriteHandle, spriteState);\n\n    refreshSpriteHitTestBounds(projectionHost, spriteState);\n\n    return true;\n  };\n\n  /**\n   * Expands a batch sprite payload into iterable entries.\n   * @param {SpriteInitCollection<T>} collection - Batch payload.\n   * @returns {Array<[string, Readonly<SpriteInit<T>>]>} Normalized entries.\n   */\n  const resolveSpriteInitCollection = (\n    collection: SpriteInitCollection<T>\n  ): readonly [string, Readonly<SpriteInit<T>>][] => {\n    if (Array.isArray(collection)) {\n      return collection.map((entry): [string, Readonly<SpriteInit<T>>] => [\n        entry.spriteId,\n        entry,\n      ]);\n    }\n    return Object.entries(collection);\n  };\n\n  /**\n   * Creates a new sprite with the provided options and adds it to the layer.\n   * @param {string} spriteId - Sprite identifier.\n   * @param {SpriteInit<T>} init - Initial sprite parameters supplied by the caller.\n   * @returns {boolean} `true` when the sprite is added; `false` when the ID already exists.\n   */\n  const addSprite = (spriteId: string, init: SpriteInit<T>): boolean => {\n    if (!map) {\n      return false;\n    }\n\n    const projectionHost = createProjectionHostForMap(map);\n    try {\n      const isAdded = addSpriteInternal(projectionHost, spriteId, init);\n      if (isAdded) {\n        // Rebuild render target entries.\n        ensureRenderTargetEntries();\n        // Request a redraw so the new sprite appears immediately.\n        scheduleRender();\n      }\n      return isAdded;\n    } finally {\n      projectionHost.release();\n    }\n  };\n\n  /**\n   * Adds multiple sprites in a single batch operation.\n   * @param {SpriteInitCollection<T>} collection - Sprite payloads keyed by spriteId or as array entries.\n   * @returns {number} Number of sprites that were newly added.\n   */\n  const addSprites = (collection: SpriteInitCollection<T>): number => {\n    if (!map) {\n      return 0;\n    }\n\n    const projectionHost = createProjectionHostForMap(map);\n    try {\n      let addedCount = 0;\n      for (const [spriteId, spriteInit] of resolveSpriteInitCollection(\n        collection\n      )) {\n        if (addSpriteInternal(projectionHost, spriteId, spriteInit)) {\n          addedCount++;\n        }\n      }\n      if (addedCount > 0) {\n        // Rebuild render target entries.\n        ensureRenderTargetEntries();\n        // Request a redraw so the new sprite appears immediately.\n        scheduleRender();\n      }\n      return addedCount;\n    } finally {\n      projectionHost.release();\n    }\n  };\n\n  /**\n   * Removes a sprite without requesting rendering.\n   * @param {string} spriteId - Sprite identifier.\n   * @returns {boolean} `true` when the sprite existed and was removed.\n   */\n  const removeSpriteInternal = (spriteId: string): boolean => {\n    const sprite = sprites.get(spriteId);\n    if (!sprite) {\n      return false;\n    }\n    sprite.images.forEach((orderMap) => {\n      orderMap.forEach((image) => {\n        removeImageBoundsFromHitTestTree(image);\n      });\n    });\n    sprites.delete(spriteId);\n    spriteIdHandler.release(spriteId);\n    return true;\n  };\n\n  /**\n   * Removes a sprite from the layer.\n   * @param {string} spriteId - Sprite identifier.\n   * @remarks Removing a sprite does not affect registered images.\n   * @returns {boolean} `true` if the sprite existed and was removed.\n   */\n  const removeSprite = (spriteId: string): boolean => {\n    // Exit early when the sprite does not exist.\n    const removed = removeSpriteInternal(spriteId);\n    if (!removed) {\n      return false;\n    }\n\n    // Rebuild render targets.\n    ensureRenderTargetEntries();\n    // Request a redraw to remove the sprite immediately.\n    scheduleRender();\n\n    return true;\n  };\n\n  /**\n   * Removes multiple sprites at once.\n   * @param {readonly string[]} spriteIds - Sprite identifiers to remove.\n   * @returns {number} Number of sprites that were removed.\n   */\n  const removeSprites = (spriteIds: readonly string[]): number => {\n    let removedCount = 0;\n    for (const spriteId of spriteIds) {\n      if (removeSpriteInternal(spriteId)) {\n        removedCount++;\n      }\n    }\n    if (removedCount > 0) {\n      // Rebuild render target entries.\n      ensureRenderTargetEntries();\n      // Request a redraw so the new sprite appears immediately.\n      scheduleRender();\n    }\n    return removedCount;\n  };\n\n  /**\n   * Removes every sprite managed by the layer.\n   * @returns {number} Number of sprites that were cleared.\n   */\n  const removeAllSprites = (): number => {\n    const removedCount = sprites.size;\n    if (removedCount === 0) {\n      return 0;\n    }\n\n    hitTestTree.clear();\n    hitTestTreeItems = new WeakMap();\n    hitTestEntryByImage = new WeakMap();\n    sprites.clear();\n    spriteIdHandler.reset();\n\n    // Rebuild render target entries.\n    ensureRenderTargetEntries();\n    // Request a redraw so the new sprite appears immediately.\n    scheduleRender();\n\n    return removedCount;\n  };\n\n  /**\n   * Deletes all sprite images attached to the specified sprite while keeping the sprite entry intact.\n   * @param {string} spriteId - Identifier of the sprite whose images should be removed.\n   * @returns {number} Number of images that were removed.\n   */\n  const removeAllSpriteImages = (spriteId: string): number => {\n    const sprite = sprites.get(spriteId);\n    if (!sprite) {\n      return 0;\n    }\n    if (sprite.images.size === 0) {\n      return 0;\n    }\n\n    let removedCount = 0;\n    sprite.images.forEach((orderMap) => {\n      removedCount += orderMap.size;\n      orderMap.forEach((image) => {\n        removeImageBoundsFromHitTestTree(image);\n      });\n    });\n    sprite.images.clear();\n\n    // Rebuild render target entries.\n    ensureRenderTargetEntries();\n    // Request a redraw so the sprite reflects the removal immediately.\n    scheduleRender();\n\n    return removedCount;\n  };\n\n  /**\n   * Retrieves the current state for a sprite.\n   * @param {string} spriteId - Sprite identifier.\n   * @returns {SpriteCurrentState<T> | undefined} Sprite state, or `undefined` when absent.\n   */\n  const getSpriteState = (\n    spriteId: string\n  ): SpriteCurrentState<T> | undefined => {\n    return sprites.get(spriteId) as SpriteCurrentState<T> | undefined;\n  };\n\n  //////////////////////////////////////////////////////////////////////////\n\n  interface SpriteImageOperationInternalResult {\n    isUpdated: boolean;\n  }\n\n  /**\n   * Adds an image definition to the sprite, validating origin references and initializing rotation state.\n   * @param {ProjectionHost} projectionHost - Projection host.\n   * @param {InternalSpriteCurrentState<T>} sprite - Sprite receiving the image.\n   * @param {number} subLayer - Sub-layer identifier.\n   * @param {number} order - Order slot within the sub-layer.\n   * @param {SpriteImageDefinitionInit} imageInit - Image definition to insert.\n   * @param {SpriteImageOperationInternalResult} resultOut - Output flag indicating whether mutation occurred.\n   * @returns {boolean} `true` when the image is added; `false` when the slot already exists.\n   */\n  const addSpriteImageInternal = (\n    projectionHost: ProjectionHost,\n    sprite: InternalSpriteCurrentState<T>,\n    subLayer: number,\n    order: number,\n    imageInit: SpriteImageDefinitionInit,\n    resultOut: SpriteImageOperationInternalResult\n  ): boolean => {\n    if (hasImageState(sprite, subLayer, order)) {\n      return false;\n    }\n\n    // Create and add the internal image state.\n    const state = createImageStateFromInit(\n      imageInit,\n      subLayer,\n      order,\n      originReference\n    );\n    state.imageHandle = resolveImageHandle(state.imageId);\n\n    // Verify references: ensure targets exist and no cycles occur.\n    if (state.originLocation !== undefined) {\n      const ref = state.originLocation;\n      if (!hasImageState(sprite, ref.subLayer, ref.order)) {\n        throw new Error(\n          `originLocation refers missing image {${ref.subLayer}, ${ref.order}} in sprite ${sprite.spriteId}`\n        );\n      }\n      const keyToStr = (k: { subLayer: number; order: number }) =>\n        `${k.subLayer}:${k.order}`;\n      const getRef = (k: { subLayer: number; order: number }) =>\n        getImageState(sprite, k.subLayer, k.order)?.originLocation;\n      const visited = new Set<string>();\n      let curMaybe: SpriteImageOriginLocation | undefined =\n        state.originLocation;\n      while (curMaybe) {\n        const cur = curMaybe as SpriteImageOriginLocation;\n        if (cur.subLayer === subLayer && cur.order === order) {\n          throw new Error(\n            `originLocation has cyclic reference at image {${subLayer}, ${order}} in sprite ${sprite.spriteId}`\n          );\n        }\n        const id = keyToStr(cur);\n        if (visited.has(id)) {\n          throw new Error(\n            `originLocation has cyclic reference including image {${cur.subLayer}, ${cur.order}} in sprite ${sprite.spriteId}`\n          );\n        }\n        visited.add(id);\n        curMaybe = getRef(cur);\n      }\n    }\n\n    if (state.autoRotation) {\n      state.resolvedBaseRotateDeg = sprite.lastAutoRotationAngleDeg;\n    }\n\n    syncImageRotationChannel(state);\n\n    setImageState(sprite, state);\n    registerImageBoundsInHitTestTree(projectionHost, sprite, state);\n    resultOut.isUpdated = true;\n    return true;\n  };\n\n  /**\n   * Adds an image to the sprite identified by the given sub-layer and order.\n   * @param {string} spriteId - Target sprite ID.\n   * @param {number} subLayer - Target sub-layer index.\n   * @param {number} order - Order position within the sub-layer.\n   * @param {SpriteImageDefinitionInit} imageInit - Image definition to add.\n   * @returns {boolean} `true` when inserted; `false` if an image already exists at that slot.\n   */\n  const addSpriteImage = (\n    spriteId: string,\n    subLayer: number,\n    order: number,\n    imageInit: SpriteImageDefinitionInit\n  ): boolean => {\n    // Fail if the sprite is missing.\n    const sprite = sprites.get(spriteId);\n    if (!sprite) {\n      return false;\n    }\n\n    if (!map) {\n      return false;\n    }\n\n    const projectionHost = createProjectionHostForMap(map);\n    try {\n      // Insert the image definition.\n      const result: SpriteImageOperationInternalResult = { isUpdated: false };\n      addSpriteImageInternal(\n        projectionHost,\n        sprite,\n        subLayer,\n        order,\n        imageInit,\n        result\n      );\n      if (!result.isUpdated) {\n        return false;\n      }\n\n      // Refresh render targets.\n      ensureRenderTargetEntries();\n      // Request a redraw so the new image appears immediately.\n      scheduleRender();\n\n      return true;\n    } finally {\n      projectionHost.release();\n    }\n  };\n\n  /**\n   * Updates an existing image with partial changes, handling interpolation and auto-rotation adjustments.\n   * @param {ProjectionHost} projectionHost - Projection host.\n   * @param {InternalSpriteCurrentState<T>} sprite - Sprite containing the image.\n   * @param {number} subLayer - Sub-layer identifier.\n   * @param {number} order - Order slot within the sub-layer.\n   * @param {SpriteImageDefinitionUpdate} imageUpdate - Changes to apply.\n   * @param {SpriteImageOperationInternalResult} resultOut - Output flag reporting whether anything changed.\n   * @returns {boolean} `true` when the image exists and the update succeeded.\n   */\n  const updateSpriteImageInternal = (\n    projectionHost: ProjectionHost,\n    sprite: InternalSpriteCurrentState<T>,\n    subLayer: number,\n    order: number,\n    imageUpdate: SpriteImageDefinitionUpdate,\n    resultOut: SpriteImageOperationInternalResult\n  ): boolean => {\n    const state = getImageState(sprite, subLayer, order);\n    // Ignore updates targeting image slots that do not exist.\n    if (!state) return false;\n\n    // Apply updates for each provided attribute.\n    if (imageUpdate.imageId !== undefined) {\n      // Swap texture reference when caller points to a new image asset.\n      state.imageId = imageUpdate.imageId;\n      state.imageHandle = resolveImageHandle(imageUpdate.imageId);\n    }\n    if (imageUpdate.mode !== undefined) {\n      // Mode changes influence how geometry is generated.\n      state.mode = imageUpdate.mode;\n    }\n    if (imageUpdate.opacity !== undefined) {\n      // Update opacity; zero values will be filtered out during rendering.\n      state.opacity = imageUpdate.opacity;\n    }\n    if (imageUpdate.scale !== undefined) {\n      // Adjust image scaling factor applied to dimensions and offsets.\n      state.scale = imageUpdate.scale;\n    }\n    const prevAutoRotation = state.autoRotation;\n    const prevMinDistance = state.autoRotationMinDistanceMeters;\n\n    let shouldReapplyAutoRotation = false;\n    let shouldResetResolvedAngle = false;\n\n    if (imageUpdate.anchor !== undefined) {\n      state.anchor = cloneAnchor(imageUpdate.anchor);\n    }\n    const interpolationOptions = imageUpdate.interpolation;\n    // Optional interpolation payloads allow independent control over offset and rotation animations.\n    const offsetDegInterpolationOption = interpolationOptions?.offsetDeg;\n    const offsetMetersInterpolationOption = interpolationOptions?.offsetMeters;\n    // Pull out rotateDeg interpolation hints when the payload includes them.\n    const rotateInterpolationOption = interpolationOptions?.rotateDeg;\n    let rotationOverride: SpriteInterpolationOptions | null | undefined;\n    let hasRotationOverride = false;\n    if (imageUpdate.offset !== undefined) {\n      const clonedOffset = cloneOffset(imageUpdate.offset);\n      applyOffsetUpdate(state, clonedOffset, {\n        deg: offsetDegInterpolationOption,\n        meters: offsetMetersInterpolationOption,\n      });\n    } else {\n      if (offsetDegInterpolationOption === null) {\n        // Explicit null clears any running angular interpolation.\n        clearOffsetDegInterpolation(state);\n      }\n      if (offsetMetersInterpolationOption === null) {\n        // Explicit null clears any running distance interpolation.\n        clearOffsetMetersInterpolation(state);\n      }\n    }\n    if (rotateInterpolationOption !== undefined) {\n      // Caller supplied new rotation interpolation preferences.\n      if (rotateInterpolationOption === null) {\n        state.rotationInterpolationOptions = null;\n        rotationOverride = null;\n      } else {\n        const cloned = cloneInterpolationOptions(rotateInterpolationOption);\n        state.rotationInterpolationOptions = cloned;\n        rotationOverride = cloned;\n      }\n      hasRotationOverride = true;\n    }\n    let requireRotationSync = false;\n    if (imageUpdate.rotateDeg !== undefined) {\n      state.rotateDeg = imageUpdate.rotateDeg;\n      requireRotationSync = true;\n    } else if (hasRotationOverride) {\n      requireRotationSync = true;\n    }\n    if (imageUpdate.autoRotation !== undefined) {\n      state.autoRotation = imageUpdate.autoRotation;\n      if (imageUpdate.autoRotation) {\n        if (!prevAutoRotation) {\n          state.resolvedBaseRotateDeg = sprite.lastAutoRotationAngleDeg;\n          shouldReapplyAutoRotation = true;\n        }\n      } else if (prevAutoRotation) {\n        shouldResetResolvedAngle = true;\n      }\n    }\n    if (imageUpdate.autoRotationMinDistanceMeters !== undefined) {\n      state.autoRotationMinDistanceMeters =\n        imageUpdate.autoRotationMinDistanceMeters;\n      if (\n        state.autoRotation &&\n        imageUpdate.autoRotationMinDistanceMeters !== prevMinDistance\n      ) {\n        shouldReapplyAutoRotation = true;\n      }\n    }\n\n    if (shouldResetResolvedAngle) {\n      state.resolvedBaseRotateDeg = 0;\n      requireRotationSync = true;\n    }\n\n    if (shouldReapplyAutoRotation) {\n      const applied = applyAutoRotation(sprite, sprite.currentLocation);\n      if (!applied && state.autoRotation) {\n        state.resolvedBaseRotateDeg = sprite.lastAutoRotationAngleDeg;\n        requireRotationSync = true;\n      }\n    }\n\n    if (requireRotationSync) {\n      // Ensure displayed angle reflects the latest base rotation and overrides.\n      syncImageRotationChannel(\n        state,\n        // When a rotation override has been computed, pass it along (null clears interpolation); otherwise leave undefined.\n        hasRotationOverride ? (rotationOverride ?? null) : undefined\n      );\n    }\n\n    registerImageBoundsInHitTestTree(projectionHost, sprite, state);\n\n    resultOut.isUpdated = true;\n    return true;\n  };\n\n  /**\n   * Updates an image belonging to the specified sprite.\n   * @param {string} spriteId - Target sprite ID.\n   * @param {number} subLayer - Target sub-layer index.\n   * @param {number} order - Order position within the sub-layer.\n   * @param {SpriteImageDefinitionUpdate} imageUpdate - Changes to apply.\n   * @returns {boolean} `true` when the update succeeds.\n   */\n  const updateSpriteImage = (\n    spriteId: string,\n    subLayer: number,\n    order: number,\n    imageUpdate: SpriteImageDefinitionUpdate\n  ): boolean => {\n    if (!map) {\n      return false;\n    }\n\n    const projectionHost = createProjectionHostForMap(map);\n    try {\n      // Fail if the sprite cannot be found.\n      const sprite = sprites.get(spriteId);\n      if (!sprite) {\n        return false;\n      }\n\n      // Apply the image update.\n      const result: SpriteImageOperationInternalResult = { isUpdated: false };\n      updateSpriteImageInternal(\n        projectionHost,\n        sprite,\n        subLayer,\n        order,\n        imageUpdate,\n        result\n      );\n      if (!result.isUpdated) {\n        return false;\n      }\n\n      // Refresh render targets.\n      ensureRenderTargetEntries();\n      // Request a redraw so the updated image is displayed immediately.\n      scheduleRender();\n\n      return true;\n    } finally {\n      projectionHost.release();\n    }\n  };\n\n  /**\n   * Removes an image from the given sprite.\n   * @param {InternalSpriteCurrentState<T>} sprite - Sprite that owns the image.\n   * @param {number} subLayer - Sub-layer index housing the image.\n   * @param {number} order - Order slot of the image.\n   * @param {SpriteImageOperationInternalResult} resultOut - Output flag recording if removal occurred.\n   * @returns {boolean} `true` when the entry is removed from the sprite.\n   */\n  const removeSpriteImageInternal = (\n    sprite: InternalSpriteCurrentState<T>,\n    subLayer: number,\n    order: number,\n    resultOut: SpriteImageOperationInternalResult\n  ): boolean => {\n    const state = getImageState(sprite, subLayer, order);\n    if (state) {\n      removeImageBoundsFromHitTestTree(state);\n    }\n    const deleted = deleteImageState(sprite, subLayer, order);\n    if (deleted) {\n      resultOut.isUpdated = true;\n      return true;\n    }\n    return false;\n  };\n\n  /**\n   * Removes an image identified by sub-layer and order from the sprite.\n   * @param {string} spriteId - Target sprite ID.\n   * @param {number} subLayer - Target sub-layer index.\n   * @param {number} order - Order slot assigned to the image.\n   * @returns {boolean} `true` when the removal succeeds.\n   */\n  const removeSpriteImage = (\n    spriteId: string,\n    subLayer: number,\n    order: number\n  ): boolean => {\n    // Abort if the sprite does not exist.\n    const sprite = sprites.get(spriteId);\n    if (!sprite) {\n      return false;\n    }\n\n    // Delete the image entry.\n    const result: SpriteImageOperationInternalResult = { isUpdated: false };\n    removeSpriteImageInternal(sprite, subLayer, order, result);\n    if (!result.isUpdated) {\n      return false;\n    }\n\n    // Refresh render targets.\n    ensureRenderTargetEntries();\n    // Request a redraw so the removal takes effect immediately.\n    scheduleRender();\n\n    return true;\n  };\n\n  //////////////////////////////////////////////////////////////////////////\n\n  /**\n   * Result flags returned from {@link updateSpriteInternal} describing how the sprite update was handled.\n   * - `'notfound'`: Sprite did not exist.\n   * - `'ignored'`: Update made no changes.\n   * - `'updated'`: State changed but no redraw was necessary.\n   * - `'isRequiredRender'`: State changed and a redraw must be scheduled.\n   */\n  type UpdateSpriteResult =\n    | 'notfound'\n    | 'ignored'\n    | 'updated'\n    | 'isRequiredRender';\n\n  const updateSpriteInternal = (\n    projectionHost: ProjectionHost,\n    spriteId: string,\n    update: SpriteUpdateEntry<T>\n  ): UpdateSpriteResult => {\n    // Bail out if the sprite does not exist.\n    const sprite = sprites.get(spriteId);\n    if (!sprite) {\n      return 'notfound';\n    }\n\n    // Track whether the update changed any state or requires rendering.\n    let updated = false;\n    let isRequiredRender = false;\n    let needsHitTestRefresh = false;\n\n    if (update.isEnabled !== undefined) {\n      // Only flip the enable flag when the requested value differs to avoid noisy redraws.\n      if (sprite.isEnabled !== update.isEnabled) {\n        sprite.isEnabled = update.isEnabled;\n        updated = true;\n        isRequiredRender = true;\n        needsHitTestRefresh = true;\n      }\n    }\n\n    let interpolationOptionsForLocation:\n      | SpriteInterpolationOptions\n      | null\n      | undefined = undefined;\n    let interpolationExplicitlySpecified = false;\n\n    if (update.interpolation !== undefined) {\n      interpolationExplicitlySpecified = true;\n      if (update.interpolation === null) {\n        // Explicit null clears any pending animations so the sprite snaps instantly.\n        if (\n          sprite.pendingInterpolationOptions !== null ||\n          sprite.interpolationState !== null ||\n          sprite.fromLocation !== undefined ||\n          sprite.toLocation !== undefined\n        ) {\n          sprite.pendingInterpolationOptions = null;\n          sprite.interpolationState = null;\n          sprite.fromLocation = undefined;\n          sprite.toLocation = undefined;\n          updated = true;\n        }\n        interpolationOptionsForLocation = null;\n      } else {\n        const nextOptions = cloneInterpolationOptions(update.interpolation);\n        // Replace the cached interpolation configuration only when a parameter changed.\n        if (\n          !sprite.pendingInterpolationOptions ||\n          sprite.pendingInterpolationOptions.durationMs !==\n            nextOptions.durationMs ||\n          sprite.pendingInterpolationOptions.mode !== nextOptions.mode ||\n          sprite.pendingInterpolationOptions.easing !== nextOptions.easing\n        ) {\n          sprite.pendingInterpolationOptions = nextOptions;\n          updated = true;\n        }\n        interpolationOptionsForLocation = nextOptions;\n      }\n    }\n\n    if (update.location !== undefined) {\n      const newCommandLocation = cloneSpriteLocation(update.location);\n      const locationChanged = !spriteLocationsEqual(\n        sprite.lastCommandLocation,\n        newCommandLocation\n      );\n\n      const optionsForLocation = interpolationExplicitlySpecified\n        ? // When new interpolation parameters accompanied the update, prefer them (or null to disable).\n          (interpolationOptionsForLocation ?? null)\n        : // Otherwise reuse any previously cached interpolation request.\n          sprite.pendingInterpolationOptions;\n\n      const effectiveOptions =\n        // Treat `undefined` as \"no interpolation change\" whereas explicit `null` disables interpolation.\n        optionsForLocation === undefined ? null : optionsForLocation;\n\n      let handledByInterpolation = false;\n\n      if (effectiveOptions && effectiveOptions.durationMs > 0) {\n        // Create a fresh interpolation whenever a timed move is requested.\n        const { state, requiresInterpolation } = createInterpolationState({\n          currentLocation: sprite.currentLocation,\n          lastCommandLocation: sprite.lastCommandLocation,\n          nextCommandLocation: newCommandLocation,\n          options: effectiveOptions,\n        });\n\n        // Clear any stale state before deciding whether to reuse it.\n        sprite.interpolationState = null;\n\n        if (requiresInterpolation) {\n          // Store the interpolation so the render loop can advance it over time.\n          sprite.interpolationState = state;\n          sprite.fromLocation = cloneSpriteLocation(state.from);\n          sprite.toLocation = cloneSpriteLocation(state.to);\n          sprite.currentLocation = cloneSpriteLocation(state.from);\n          handledByInterpolation = true;\n          updated = true;\n          isRequiredRender = true;\n        }\n      }\n\n      sprite.lastCommandLocation = cloneSpriteLocation(newCommandLocation);\n\n      if (handledByInterpolation) {\n        // Interpolation will animate towards the destination; the current location already set to start.\n      } else if (locationChanged) {\n        // Without interpolation, move immediately to the requested location and mark for redraw.\n        sprite.currentLocation = cloneSpriteLocation(newCommandLocation);\n        sprite.fromLocation = undefined;\n        sprite.toLocation = undefined;\n        sprite.interpolationState = null;\n        updated = true;\n        isRequiredRender = true;\n      } else {\n        // Location unchanged: clear transient interpolation state so future updates start cleanly.\n        sprite.interpolationState = null;\n        sprite.fromLocation = undefined;\n        sprite.toLocation = undefined;\n      }\n\n      sprite.pendingInterpolationOptions = null;\n\n      // Auto-rotation should react immediately to the most recent command location.\n      applyAutoRotation(sprite, newCommandLocation);\n      needsHitTestRefresh = true;\n    }\n\n    if (update.tag !== undefined) {\n      const nextTag = update.tag ?? null;\n      // Only mutate the tag when the identity actually changes to minimise change detection churn.\n      if (sprite.tag !== nextTag) {\n        sprite.tag = nextTag;\n        updated = true;\n      }\n    }\n\n    if (needsHitTestRefresh) {\n      refreshSpriteHitTestBounds(projectionHost, sprite);\n    }\n\n    // Rendering must be scheduled when draw-affecting changes occurred.\n    if (isRequiredRender) {\n      return 'isRequiredRender';\n    }\n    // Otherwise report whether any non-rendering state changed.\n    if (updated) {\n      return 'updated';\n    }\n    return 'ignored';\n  };\n\n  /**\n   * Updates a sprite with the provided changes.\n   * @param {string} spriteId - Sprite ID to update.\n   * @param {SpriteUpdateEntry<T>} update - Changes to apply.\n   * @returns {boolean} `true` if the update modified state.\n   */\n  const updateSprite = (\n    spriteId: string,\n    update: SpriteUpdateEntry<T>\n  ): boolean => {\n    if (!map) {\n      return false;\n    }\n\n    const projectionHost = createProjectionHostForMap(map);\n    try {\n      // Perform the update.\n      const result = updateSpriteInternal(projectionHost, spriteId, update);\n\n      switch (result) {\n        case 'notfound':\n          // Sprite missing; report no change to the caller.\n          return false;\n        case 'ignored':\n          // Update produced no state difference, so nothing to propagate.\n          return false;\n        case 'updated':\n          // State changed but no redraw is required (e.g., metadata change).\n          return true;\n        case 'isRequiredRender':\n          // State changed in a way that affects rendering; refresh buffers and request repaint.\n          ensureRenderTargetEntries();\n          scheduleRender();\n          return true;\n      }\n    } finally {\n      projectionHost.release();\n    }\n  };\n\n  /**\n   * Adds, updates, or removes sprites based on arbitrary source items.\n   * @template TSourceItem Source item type that exposes a sprite identifier.\n   * @param {readonly TSourceItem[]} sourceItems - Collection supplying mutation targets.\n   * @param {SpriteMutateCallbacks<T, TSourceItem>} mutator - Callbacks for adding or modifying sprites.\n   * @returns {number} Number of sprites that changed.\n   */\n  const mutateSprites = <TSourceItem extends SpriteMutateSourceItem>(\n    sourceItems: readonly TSourceItem[],\n    mutator: SpriteMutateCallbacks<T, TSourceItem>\n  ): number => {\n    if (sourceItems.length === 0) {\n      return 0;\n    }\n\n    if (!map) {\n      return 0;\n    }\n\n    const projectionHost = createProjectionHostForMap(map);\n    try {\n      let changedCount = 0;\n      let isRequiredRender = false;\n\n      // Reuse mutable helpers for efficiency.\n      let currentSprite: InternalSpriteCurrentState<T> = undefined!;\n      let didMutateImages = false;\n      const operationResult: SpriteImageOperationInternalResult = {\n        isUpdated: false,\n      };\n      const updateObject: SpriteUpdaterEntry<T> = {\n        isEnabled: undefined,\n        location: undefined,\n        interpolation: undefined,\n        tag: undefined,\n        getImageIndexMap: () => {\n          const map = new Map<number, Set<number>>();\n          currentSprite.images.forEach((inner, subLayer) => {\n            map.set(subLayer, new Set(inner.keys()));\n          });\n          return map;\n        },\n        addImage: (subLayer, order, imageInit) => {\n          const added = addSpriteImageInternal(\n            projectionHost,\n            currentSprite,\n            subLayer,\n            order,\n            imageInit,\n            operationResult\n          );\n          if (added) {\n            didMutateImages = true;\n          }\n          return added;\n        },\n        updateImage: (subLayer, order, imageUpdate) => {\n          const updated = updateSpriteImageInternal(\n            projectionHost,\n            currentSprite,\n            subLayer,\n            order,\n            imageUpdate,\n            operationResult\n          );\n          if (updated) {\n            didMutateImages = true;\n          }\n          return updated;\n        },\n        removeImage: (subLayer, order) => {\n          const removed = removeSpriteImageInternal(\n            currentSprite,\n            subLayer,\n            order,\n            operationResult\n          );\n          if (removed) {\n            didMutateImages = true;\n          }\n          return removed;\n        },\n      } as SpriteUpdaterEntry<T>;\n\n      for (const sourceItem of sourceItems) {\n        const spriteId = sourceItem.spriteId;\n        const sprite = sprites.get(spriteId);\n\n        if (!sprite) {\n          const init = mutator.add(sourceItem);\n          if (!init) {\n            continue;\n          }\n          if (addSpriteInternal(projectionHost, spriteId, init)) {\n            changedCount++;\n            isRequiredRender = true;\n          }\n          continue;\n        }\n\n        currentSprite = sprite;\n        operationResult.isUpdated = false;\n        didMutateImages = false;\n\n        const decision = mutator.modify(\n          sourceItem,\n          sprite as SpriteCurrentState<T>,\n          updateObject\n        );\n\n        if (decision === 'remove') {\n          if (removeSpriteInternal(spriteId)) {\n            changedCount++;\n            isRequiredRender = true;\n          }\n        } else {\n          const updateResult = updateSpriteInternal(\n            projectionHost,\n            spriteId,\n            updateObject\n          );\n          let spriteChanged = false;\n\n          switch (updateResult) {\n            case 'updated':\n              spriteChanged = true;\n              break;\n            case 'isRequiredRender':\n              spriteChanged = true;\n              isRequiredRender = true;\n              break;\n          }\n\n          if (didMutateImages) {\n            spriteChanged = true;\n            isRequiredRender = true;\n          }\n\n          if (spriteChanged) {\n            changedCount++;\n          }\n        }\n\n        // Reset reusable fields on the shared update object.\n        updateObject.isEnabled = undefined;\n        updateObject.location = undefined;\n        updateObject.interpolation = undefined;\n        updateObject.tag = undefined;\n        operationResult.isUpdated = false;\n        didMutateImages = false;\n      }\n\n      // Request rendering\n      if (isRequiredRender) {\n        // Either a sprite changed or an image operation mutated state; refresh buffers and repaint.\n        ensureRenderTargetEntries();\n        scheduleRender();\n      }\n\n      return changedCount;\n    } finally {\n      projectionHost.release();\n    }\n  };\n\n  /**\n   * Iterates over every sprite and attempts to update it via the provided callback.\n   * @param {(sprite: SpriteCurrentState<T>, update: SpriteUpdaterEntry<T>) => boolean} updater - Callback invoked per sprite; return `false` to abort iteration.\n   * @returns {number} Number of sprites updated.\n   */\n  const updateForEach = (\n    updater: (\n      sprite: SpriteCurrentState<T>,\n      update: SpriteUpdaterEntry<T>\n    ) => boolean\n  ): number => {\n    if (!map) {\n      return 0;\n    }\n\n    const projectionHost = createProjectionHostForMap(map);\n    try {\n      let updatedCount = 0;\n      let isRequiredRender = false;\n\n      // Reuse allocation-heavy objects.\n      let currentSprite: InternalSpriteCurrentState<T> = undefined!;\n      const operationResult: SpriteImageOperationInternalResult = {\n        isUpdated: false,\n      };\n      const updateObject: SpriteUpdaterEntry<T> = {\n        getImageIndexMap: () => {\n          const map = new Map<number, Set<number>>();\n          currentSprite.images.forEach((inner, subLayer) => {\n            map.set(subLayer, new Set(inner.keys()));\n          });\n          return map;\n        },\n        addImage: (subLayer, order, imageInit) =>\n          addSpriteImageInternal(\n            projectionHost,\n            currentSprite,\n            subLayer,\n            order,\n            imageInit,\n            operationResult\n          ),\n        updateImage: (subLayer, order, imageUpdate) =>\n          updateSpriteImageInternal(\n            projectionHost,\n            currentSprite,\n            subLayer,\n            order,\n            imageUpdate,\n            operationResult\n          ),\n        removeImage: (subLayer, order) =>\n          removeSpriteImageInternal(\n            currentSprite,\n            subLayer,\n            order,\n            operationResult\n          ),\n      } as SpriteUpdaterEntry<T>;\n\n      // Process every sprite.\n      sprites.forEach((sprite) => {\n        currentSprite = sprite;\n\n        // Invoke the user-supplied updater to populate updateObject.\n        updater(sprite as SpriteCurrentState<T>, updateObject);\n\n        // Apply the update.\n        const result = updateSpriteInternal(\n          projectionHost,\n          sprite.spriteId,\n          updateObject\n        );\n\n        switch (result) {\n          case 'notfound':\n            // Sprite vanished during iteration; skip it.\n            break;\n          case 'ignored':\n            // Updater made no net changes.\n            break;\n          case 'updated':\n            updatedCount++;\n            break;\n          case 'isRequiredRender':\n            // Changes require a redraw after iteration completes.\n            isRequiredRender = true;\n            updatedCount++;\n            break;\n        }\n\n        // Reset reusable fields on the shared update object.\n        updateObject.isEnabled = undefined;\n        updateObject.location = undefined;\n        updateObject.interpolation = undefined;\n        updateObject.tag = undefined;\n      });\n\n      // Request rendering if any sprite or image changed.\n      if (isRequiredRender || operationResult.isUpdated) {\n        // Either a sprite changed or an image operation mutated state; refresh buffers and repaint.\n        ensureRenderTargetEntries();\n        scheduleRender();\n      }\n\n      return updatedCount;\n    } finally {\n      projectionHost.release();\n    }\n  };\n\n  const setHitTestEnabled = (enabled: boolean) => {\n    if (isHitTestEnabled === enabled) {\n      return;\n    }\n    isHitTestEnabled = enabled;\n    hitTestTree.clear();\n    hitTestTreeItems = new WeakMap<\n      InternalSpriteImageState,\n      HitTestTreeHandle\n    >();\n    hitTestEntryByImage = new WeakMap<InternalSpriteImageState, HitTestEntry>();\n    if (!enabled) {\n      return;\n    }\n\n    if (!map) {\n      return;\n    }\n\n    const projectionHost = createProjectionHostForMap(map);\n    try {\n      sprites.forEach((sprite) => {\n        refreshSpriteHitTestBounds(projectionHost, sprite);\n      });\n    } finally {\n      projectionHost.release();\n    }\n  };\n\n  /**\n   * MapLibre CustomLayerInterface-compatible object exposing sprite management APIs.\n   */\n  const spriteLayout = {\n    id,\n    type: 'custom' as const,\n    renderingMode: '2d' as const,\n    onAdd,\n    onRemove,\n    render,\n    registerImage,\n    registerTextGlyph,\n    unregisterImage,\n    unregisterAllImages,\n    getAllImageIds,\n    addSprite,\n    addSprites,\n    removeSprite,\n    removeSprites,\n    removeAllSprites,\n    removeAllSpriteImages,\n    getSpriteState,\n    addSpriteImage,\n    updateSpriteImage,\n    removeSpriteImage,\n    updateSprite,\n    mutateSprites,\n    updateForEach,\n    setHitTestEnabled,\n    on: addEventListener,\n    off: removeEventListener,\n  };\n\n  return spriteLayout;\n};\n"],"names":["response","exports","projectLngLatToClipSpace","calculateBillboardDepthKey","calculateSurfaceDepthKey","prepareDrawSpriteImages","release","module","this","t","e","r","n","i","s","a","l","o","u","c","h","p","f","d","y","m","g","x","v","b","w","_","S","A","k","M","I","z","P","C","E","T","B","V","F","D","$","L","O","R","U","j","N","G","X","Z","Y","H","K","J","W","Q","tt","q","location","scale","BILLBOARD_BASE_CORNERS","cosLat","cosLatClamped","SURFACE_BASE_CORNERS","normalizeOptions","normalizeDuration","clamp01","toFiniteOr","mat4.identity","perspective","mat4.perspective","mat4.copy","mat4.scale","mat4.translate","mat4.rotateZ","mat4.rotateX","mat4.multiply","mat4.invert","ensureFinite","ensureHitTestCorners","_a","entry","hitTestCorners","params","_b","_c","_d","createCanvas2D","slot","addEventListener","removeEventListener","options","ctx","images","id","map"],"mappings":"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","x_google_ignoreList":[2,10,22]}