From 6201c0e7bf2b33d103da4058ac4f3b2efee1434d Mon Sep 17 00:00:00 2001 From: Hannah Wood Date: Thu, 10 Sep 2026 15:12:56 +0100 Subject: [PATCH 01/14] Made contrast enhancer in rust --- .github/workflows/rust.yml | 52 + .readthedocs.yml | 1 + Cargo.toml | 12 + ...ring_misc_functions_in_rust_v_python.ipynb | 49437 ++++++++++++++++ pyproject.toml | 12 +- tests/rust/__init__.py | 1 + tests/rust/test_misc.py | 63 + tests/test_utils.py | 35 + .../static/openlayers/viewer.css | 8 + .../visualization/static/openlayers/viewer.js | 12144 +++- .../static/openlayers/viewer_legacy.css | 2 +- tiatoolbox/rust/utils/misc/Cargo.toml | 16 + tiatoolbox/rust/utils/misc/__init__.pyi | 10 + tiatoolbox/rust/utils/misc/src/lib.rs | 90 + tiatoolbox/utils/misc.py | 18 + 15 files changed, 61567 insertions(+), 334 deletions(-) create mode 100644 .github/workflows/rust.yml create mode 100644 Cargo.toml create mode 100644 benchmarks/comparing_misc_functions_in_rust_v_python.ipynb create mode 100644 tests/rust/__init__.py create mode 100644 tests/rust/test_misc.py create mode 100644 tiatoolbox/rust/utils/misc/Cargo.toml create mode 100644 tiatoolbox/rust/utils/misc/__init__.pyi create mode 100644 tiatoolbox/rust/utils/misc/src/lib.rs diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml new file mode 100644 index 0000000000..7ced47995b --- /dev/null +++ b/.github/workflows/rust.yml @@ -0,0 +1,52 @@ +name: Rust +on: + push: + branches: [ develop, main, master ] + pull_request: + branches: [ develop, main, master ] +jobs: + rust: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v7 + with: + python-version: "3.12" + - name: Install dependencies + run: | + sudo apt update + sudo apt-get install -y libopenjp2-7 libopenjp2-tools + python -m pip install --upgrade pip + python -m pip install ruff==0.16.1 pytest pytest-cov pytest-runner + pip install uv + uv pip install --system torch torchvision --index-url https://download.pytorch.org/whl/cpu + uv pip install --system -e . + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + with: + components: rustfmt, clippy + - name: Install cargo-llvm-cov + uses: taiki-e/install-action@cargo-llvm-cov + - name: Check formatting + run: cargo fmt --all -- --check + - name: Run Clippy + run: cargo clippy --all-targets --all-features -- -D warnings -A clippy::too_many_arguments + - name: Run Rust coverage + shell: bash + run: | + source <(cargo llvm-cov show-env --sh) + cargo llvm-cov clean --workspace + python -m pip install --force-reinstall --no-deps -e . + python -m pytest tests/rust -v + cargo test --all-features + cargo llvm-cov report --lcov --output-path lcov.info + - name: Upload Rust coverage to Codecov + uses: codecov/codecov-action@v4 + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + with: + files: lcov.info + flags: rust + fail_ci_if_error: false diff --git a/.readthedocs.yml b/.readthedocs.yml index 0667574433..c13e447924 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -10,6 +10,7 @@ build: os: ubuntu-24.04 tools: python: "3.12" + rust: "latest" apt_packages: - libopenjp2-7-dev - libopenjp2-tools diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000000..eaf76dfa7d --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,12 @@ +[workspace] +resolver = "2" +members = [ + "tiatoolbox/rust/utils/misc", +] + +[workspace.package] +version = "0.1.0" +edition = "2024" + +[workspace.dependencies] +pyo3 = "0.29.2" diff --git a/benchmarks/comparing_misc_functions_in_rust_v_python.ipynb b/benchmarks/comparing_misc_functions_in_rust_v_python.ipynb new file mode 100644 index 0000000000..a713fbb225 --- /dev/null +++ b/benchmarks/comparing_misc_functions_in_rust_v_python.ipynb @@ -0,0 +1,49437 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "aqPkpRk-pT5q" + }, + "source": [ + "# Benchmarking Misc in Rust\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This work focuses on converting code in tiatoolbox/utils/misc.py from Python to Rust with the aim of reducing the time it takes to run the code. This Juypter notebook shows the speedup that certain functions are having being written in rust.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Rust is a programming language that is proven to be faster than Python, especially for CPU bound operations and processing large amounts of data.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook compares the execution time of several function in two forms.\n", + "One the original python version\n", + "Two the modified function where some or all of the code has been moved to Rust\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It tests how long it runs in Python and in Rust using different sized inputs. Each input size has multiple tests and the average of all the tests is taken to minimise the impact of any outliers. The x axis shows the size of the input and the y axis shows the average time taken of each input of size x.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook will show which functions benefitted being moved into Rust.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:00:37.340097Z", + "iopub.status.busy": "2026-09-02T16:00:37.340021Z", + "iopub.status.idle": "2026-09-02T16:00:37.342036Z", + "shell.execute_reply": "2026-09-02T16:00:37.341644Z" + } + }, + "outputs": [], + "source": [ + "step1 = 100\n", + "step2 = 1000" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "b6S8vzFipT5w" + }, + "source": [ + "# Part 1: Json.dump\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:00:37.342908Z", + "iopub.status.busy": "2026-09-02T16:00:37.342832Z", + "iopub.status.idle": "2026-09-02T16:00:39.354846Z", + "shell.execute_reply": "2026-09-02T16:00:39.354345Z" + } + }, + "outputs": [], + "source": [ + "import json\n", + "import time\n", + "from pathlib import Path\n", + "\n", + "import numpy as np\n", + "\n", + "import tiatoolbox.rust.utils.misc as rmisc\n", + "\n", + "example_dict = {}\n", + "sizeofarray = []\n", + "timings = []\n", + "i = 10\n", + "maxarraysize = 1000\n", + "with Path.open(\"example.txt\", \"w\") as handle: # skipcq: PTC-W6004\n", + " json.dump({\"a\": 1}, handle)\n", + "while i <= maxarraysize:\n", + " python_times = np.empty(0)\n", + " rust_times = np.empty(0)\n", + " for j in range(len(example_dict), i):\n", + " example_dict[str(j)] = 1\n", + " for _j in range(10):\n", + " start_time = time.time()\n", + " with Path.open(\"example.txt\", \"w\") as handle: # skipcq: PTC-W6004\n", + " json.dump(example_dict, handle)\n", + " python_end_time = time.time() - start_time\n", + " python_times = np.append(python_times, python_end_time)\n", + " start_time = time.time()\n", + " rmisc.json_dump_python_object(\"example.txt\", example_dict)\n", + " rust_end_time = time.time() - start_time\n", + " rust_times = np.append(rust_times, rust_end_time)\n", + " sizeofarray.append(len(example_dict))\n", + " timings.append([np.average(python_times), np.average(rust_times)])\n", + " i += 10" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:00:39.356107Z", + "iopub.status.busy": "2026-09-02T16:00:39.355982Z", + "iopub.status.idle": "2026-09-02T16:00:39.757561Z", + "shell.execute_reply": "2026-09-02T16:00:39.757102Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlIAAAGxCAYAAACp51jCAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvctoD+AAAAAlwSFlzAAAPYQAAD2EBqD+naQAAts9JREFUeJzsnXeYXGX5/j8zO7O995pseicFAqELCEgVUEBpFkBFFBUURX/6taMI2EAsICqiggjSQRAJLSSkkN6TzW62916mnN8f73mn7czszOxsS57Pde11zp4558zZJWTuPM/93o/FMAwDQRAEQRAEIWqsE/0AgiAIgiAIUxURUoIgCIIgCDEiQkoQBEEQBCFGREgJgiAIgiDEiAgpQRAEQRCEGBEhJQiCIAiCECMipARBEARBEGJEhJQgCIIgCEKM2Cb6AY503G43dXV1ZGRkYLFYJvpxBEEQBEGIAMMw6O7uprS0FKs1dN1JhNQYU1dXR0VFxUQ/hiAIgiAIMVBTU0N5eXnI10VIjTEZGRmA+g+RmZk5wU8jCIIgCEIkdHV1UVFR4fkcD4UIqTFGt/MyMzNFSAmCIAjCFGMkW46YzQVBEARBEGJEhJQgCIIgCEKMiJASBEEQBEGIEfFITQLcbjdDQ0MT/RhHJXa7nYSEhIl+DEEQBGGKIkJqghkaGuLgwYO43e6JfpSjluzsbIqLiyXnSxAEQYgaEVITiGEY1NfXk5CQQEVFRdjALyH+GIZBX18fTU1NAJSUlEzwEwmCIAhTDRFSE4jT6aSvr4/S0lJSU1Mn+nGOSlJSUgBoamqisLBQ2nyCIAhCVEgJZAJxuVwAJCYmTvCTHN1oEetwOCb4SQRBEISphgipSYB4cyYW+f0LgiAIsSJCSpgU3HvvvTz55JMT/RiCIAiCEBXikRKi5uGHH+btt98GVHxARUUFl156KQsWLIjo+l//+tcUFhZy5ZVXeo698MILHHfccVx22WVj8syCIAiCMBZIRUqImtWrV/Pmm2+yatUqjjnmGLZt28aSJUt46qmnIrr+5ZdfZs2aNWP8lIIgCIIw9khFSoiJkpISbrjhBgBuuukmenp6+P73v09qaiqrV6/mxz/+sd/5jz76KLW1tRQUFLBlyxaqqqo81//whz/0nPf666/z6quv4nK5uPzyy1mxYoXffbZt28Zjjz1GW1sbxxxzDNddd51n5R2oFmFlZSW5ublh7yMIgiBMHFsPd1KQkURxVvJEP8qokYqUEBcWL15MTU0NM2fO5M4772Tbtm2e19xuN3fccQc2m41Zs2aRk5NDSUkJq1atYtWqVR4h9Ne//pXvfve75OXl0drayqpVq9i4caPnPi+++CIrVqygvr6eyspK7rvvPk455RS/VPgXXniBW265Jex9BEEQhImjpq2Pi+9/i08+vG6iHyUuSEVqEmEYBv0O14S8d4o9IebVay6Xi//+978sXryYOXPmcNppp/HHP/6Re++9F4BXXnmFhoYGrr32WgoKCqioqGD27NmeipQmNzeX//73v54sp3379vHnP/+ZFStWYBgGt9xyC7fccgt33303ADfeeCMzZszg97//PV/4whciuo8gCIIwsexr7sEwYHdjNwMOF8n2qZ3fJ0JqEtHvcLHwOy9PyHvv+P65pCZG/sdh9+7d3HDDDTidTt599106Ozt5/vnnASVwbr31Vn76059it9v54x//yIUXXkhBQUHYe55xxhl+gZjz5s3j8OHDANTW1rJv3z4+/vGPe17Pzs7mggsuYPXq1X5CKtx9BEEQhImlsXMAAMNQ1ak5RRkT/ESjQ1p7QkxkZmayatUqzjjjDO6//34OHDjgqfh89KMfxeFw8Oyzz9LW1sbTTz/Npz/96RHv6et1AkhISPCEluoxLvn5+X7n5Ofn09jYGPF9BEEQhImloWvAs3+wpXcCnyQ+SEVqEpFiT2DH98+dsPeOBl+zeSDJyclcc801/PGPf6S2tpbc3FzOO+88z+uxtBArKioAOHToENOnT/ccP3ToENOmTYv6foIgCMLE0OgjpKpaRUgJccRisUTVXpvM3HjjjaxYsYLdu3fziU98wq/VlpubS1tbW1T3Kygo4LTTTuOXv/wlp5xyClarlZ07d/LCCy/wj3/8I96PLwiCIIwRjV2Dnv2DLX0T+CTx4cj41BYmHccccwzLly9n/fr1fOpTn/J77cMf/jDXXHMNQ0NDpKen+8UfhOM3v/kN55xzDitWrGD27Nm8+uqrXHXVVVx66aVj8SMIgiAIY0BDp09FSlp7wtHIpz/9abq7u0c8b/ny5SQnJzN37ly/45dddhnr169n8+bN9Pb2kpKSwm233TbM/3T11VfT2+v9n2zRokXs3buX1157jfb2dr797W+zdOlSv2siuY8g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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.plot(sizeofarray, timings)\n", + "plt.xlabel(\"Size of dictionary\")\n", + "plt.ylabel(\"Time(s)\")\n", + "plt.legend([\"Python\", \"Rust\"])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "b6S8vzFipT5w" + }, + "source": [ + "# Part 2: Patch Predictions As Annotations\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Patch predictions as annotations written fully in python\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:00:39.774104Z", + "iopub.status.busy": "2026-09-02T16:00:39.773977Z", + "iopub.status.idle": "2026-09-02T16:00:40.198045Z", + "shell.execute_reply": "2026-09-02T16:00:40.197502Z" + } + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "from shapely.geometry import Polygon\n", + "from tqdm.auto import tqdm\n", + "\n", + "from tiatoolbox.annotation.storage import Annotation\n", + "\n", + "\n", + "def py_patch_predictions_as_annotations(\n", + " preds: list | np.ndarray,\n", + " keys: list,\n", + " class_dict: dict,\n", + " class_probs: list | np.ndarray,\n", + " patch_coords: list | np.ndarray,\n", + " classes_predicted: list,\n", + " labels: list,\n", + " *,\n", + " verbose: bool = True,\n", + ") -> list:\n", + " \"\"\"Helper function to generate annotation per patch predictions.\"\"\"\n", + " annotations = []\n", + " tqdm_loop = tqdm(\n", + " patch_coords,\n", + " leave=False,\n", + " desc=\"Converting outputs to AnnotationStore.\",\n", + " disable=not verbose,\n", + " )\n", + "\n", + " for i, _ in enumerate(tqdm_loop):\n", + " if \"probabilities\" in keys:\n", + " props = {\n", + " f\"prob_{class_dict[j]}\": class_probs[i][j] for j in classes_predicted\n", + " }\n", + " else:\n", + " props = {}\n", + " if \"labels\" in keys:\n", + " props[\"label\"] = class_dict[labels[i]]\n", + " if len(preds) > 0:\n", + " props[\"type\"] = class_dict[preds[i]]\n", + " annotations.append(Annotation(Polygon.from_bounds(*patch_coords[i]), props))\n", + "\n", + " return annotations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Patch Predictions As Annotations with some code written in rust\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:00:40.199390Z", + "iopub.status.busy": "2026-09-02T16:00:40.199241Z", + "iopub.status.idle": "2026-09-02T16:00:40.201749Z", + "shell.execute_reply": "2026-09-02T16:00:40.201367Z" + } + }, + "outputs": [], + "source": [ + "def rust_patch_predictions_as_annotations(\n", + " preds: list | np.ndarray,\n", + " keys: list,\n", + " class_dict: dict,\n", + " class_probs: list | np.ndarray,\n", + " patch_coords: list | np.ndarray,\n", + " classes_predicted: list,\n", + " labels: list,\n", + " *,\n", + " verbose: bool = True,\n", + ") -> list:\n", + " \"\"\"Helper function to generate annotation per patch predictions.\"\"\"\n", + " _ = verbose\n", + " if len(class_probs) == 0:\n", + " class_probs = np.empty((0, 2))\n", + " if len(patch_coords) == 0:\n", + " patch_coords = np.empty((0, 2))\n", + " return rmisc.patch_predictions_as_annotations(\n", + " Annotation,\n", + " Polygon,\n", + " np.array(preds).astype(\"float\"),\n", + " \"labels\" in keys,\n", + " \"probabilities\" in keys,\n", + " class_dict,\n", + " np.array(class_probs).astype(\"float\"),\n", + " np.array(patch_coords).astype(\"float\"),\n", + " classes_predicted,\n", + " labels,\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Comparison of speed it takes to run code in rust vs python\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:00:40.202747Z", + "iopub.status.busy": "2026-09-02T16:00:40.202669Z", + "iopub.status.idle": "2026-09-02T16:00:53.344379Z", + "shell.execute_reply": "2026-09-02T16:00:53.343785Z" + } + }, + "outputs": [], + "source": [ + "import time\n", + "\n", + "sizeofarray = []\n", + "timings = []\n", + "timings = []\n", + "num_patches = 10\n", + "num_classes = 10\n", + "max_patches = 1000\n", + "while num_patches <= max_patches:\n", + " python_times = np.empty(0)\n", + " rust_times = np.empty(0)\n", + " for _j in range(10):\n", + " rng = np.random.default_rng(42)\n", + " class_probs = rng.random(\n", + " (num_patches, num_classes),\n", + " dtype=np.float64,\n", + " )\n", + " class_probs /= class_probs.sum(axis=1, keepdims=True)\n", + " preds = np.argmax(class_probs, axis=1).astype(np.float64).tolist()\n", + " labels = (\n", + " rng.integers(0, num_classes, size=num_patches).astype(np.int32).tolist()\n", + " )\n", + " x = np.arange(num_patches, dtype=np.float64) * 10\n", + " y = np.zeros(num_patches, dtype=np.float64)\n", + " patch_coords = np.column_stack((x, y, x + 10, y + 10))\n", + " keys = [\"predictions\", \"probabilities\", \"labels\"]\n", + " class_dict = {index: f\"class_{index}\" for index in range(num_classes)}\n", + " classes_predicted = list(range(num_classes))\n", + " verbose: bool = False\n", + " start_time = time.time()\n", + " python_object = py_patch_predictions_as_annotations(\n", + " preds,\n", + " keys,\n", + " class_dict,\n", + " class_probs,\n", + " patch_coords,\n", + " classes_predicted,\n", + " labels,\n", + " verbose=False,\n", + " )\n", + " python_end_time = time.time() - start_time\n", + " python_times = np.append(python_times, python_end_time)\n", + " start_time = time.time()\n", + " rust_object = rust_patch_predictions_as_annotations(\n", + " preds,\n", + " keys,\n", + " class_dict,\n", + " class_probs,\n", + " patch_coords,\n", + " classes_predicted,\n", + " labels,\n", + " verbose=False,\n", + " )\n", + " rust_end_time = time.time() - start_time\n", + " rust_times = np.append(rust_times, rust_end_time)\n", + " if python_object != rust_object:\n", + " print(\"Incorrect result\")\n", + " sizeofarray.append(num_patches)\n", + " timings.append([np.average(python_times), np.average(rust_times)])\n", + " if num_patches < step1:\n", + " num_patches += 10\n", + " num_classes += 10\n", + " else:\n", + " num_patches += 100\n", + " num_classes += 100" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:00:53.345831Z", + "iopub.status.busy": "2026-09-02T16:00:53.345741Z", + "iopub.status.idle": "2026-09-02T16:00:53.389253Z", + "shell.execute_reply": "2026-09-02T16:00:53.388825Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAGxCAYAAACKvAkXAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvctoD+AAAAAlwSFlzAAAPYQAAD2EBqD+naQAAcJZJREFUeJzt3Xd4FNXbxvFvOiQkoUOAhN57BynSm1joUuzBXrGioj98RURQVBBFRSwIgqiAgCC9g4TeOyGEEkhIIz173j8WFiNtE5LdhNyf68plZvbMzLOrsjczp7gYYwwiIiIi+YirswsQERERcTQFIBEREcl3FIBEREQk31EAEhERkXxHAUhERETyHQUgERERyXcUgERERCTfUQASERGRfMfd2QXkVhaLhVOnTuHr64uLi4uzyxERERE7GGOIi4ujTJkyuLpe/z6PAtB1nDp1isDAQGeXISIiIlkQFhZGuXLlrvu6AtB1+Pr6AtYP0M/Pz8nViIiIiD1iY2MJDAy0fY9fjwLQdVx+7OXn56cAJCIiksfcrPuKOkGLiIhIvqMAJCIiIvmOApCIiIjkO+oDdAssFgspKSnOLiNf8vDwwM3NzdlliIhIHqUAlEUpKSkcO3YMi8Xi7FLyrcKFC1O6dGnN0yQiIpmmAJQFxhhOnz6Nm5sbgYGBN5xoSbKfMYaEhAQiIiIACAgIcHJFIiKS1ygAZUFaWhoJCQmUKVMGb29vZ5eTLxUsWBCAiIgISpYsqcdhIiKSKU6/dTF37lw6duxInTp1GDhwIIcPH75he4vFwvz58+nZsydVqlRh06ZN12wXGRnJa6+9RpMmTWjbti3Tpk3LtprT09MB8PT0zLZzSuZdDp+pqalOrkRERPIapwag+fPn07dvX+6++26mTJmCMYY2bdoQFRV13WNef/11vvzyS+69916OHDlCYmLiVW0iIyNp3rw527dvZ/z48YwfP55ly5axdu3abK1ffU+cS5+/iIhklVMfgf3vf/9jyJAhvPjiiwD8+OOPBAQE8OWXX/LWW29d85hRo0bh6enJyZMnr3veESNGkJ6ezrx58yhQoAAAU6dOtd25kezzySefUKFCBXr37u3sUkREROzmtDtAcXFxbN26la5du9r2eXp60qlTJ1auXHnd42722MkYw8yZMxkyZIgt/FyW3/uJTJ06leDgYIKDg3nqqaf44IMP2Ldvn93HT5gwgZkzZ2bYt3DhQv7555/sLlVERCRHOS0AnTx5EmMMpUuXzrC/dOnSN7y7czPnz58nKiqKwMBAHn74YerWrUvXrl2ZPn36DY9LTk4mNjY2w8/tZtWqVaxZs4YWLVpQr149du/eTd26dfnjjz/sOn7x4sVs2LAhh6sUERHJeU57BHZ5/hwPD48M+z09PW/pUdXliQlfffVVRo8ezbBhw9i0aROPPvooMTExPPXUU9c8bvTo0YwcOTLL180rAgICCA4OBuCpp54iPj6e9957D29vb1atWsUHH3yQof3PP/9MeHg4JUqUYOfOnRw/ftx2/Pvvv29rt3LlSpYuXUp6ejr9+vWjUaNGGc6ze/duZs6cSVRUFPXq1ePBBx+0jeSCK4/SihYtesPziIhI3rdo9xm83F1pX6Ok02pw2h2g4sWLA9YOy/92/vx522tZUaxYMVxdXenVqxdPP/009erVY+jQoTz88MN888031z1u+PDhxMTE2H7CwsKyXENeUqdOHcLCwqhUqRKjR49m9+7dttcsFgvDhw/H3d2dypUrU6RIEQICAmjRogUtWrSwBZhp06bxv//9j2LFihEZGUmLFi3YunWr7Tx//fUXjRo14vTp01SoUIGJEyfSunXrDLNoL1y4kOeff/6G5xERkbzv6Ll4Xvl1B498v5lVB885rQ6n3QEqVaoUgYGBbNiwgXvuuce2f926dXTr1i3L5y1QoAD16tWjcOHCGfYXLlyYixcvXvc4Ly8vvLy8snRNYwyJqc7pYF3Qwy3Lo6HS09NZtmwZderUoWrVqrRt25bvvvuOTz75BIAlS5Zw5swZHnjgAUqUKEFgYCBVqlSx3QG6rGjRoixbtszWx+rw4cP88MMPNGrUCGMMzz//PM8//zzjxo0DYOjQoVSsWJGvv/6aZ5991q7ziIhI3peYks7TP28lPjmN5hWL0qpyMafV4tRRYE8++STjx4/noYceokaNGnz99dccPXqUoUOH2tq8+eabbN++nYULF9p93meffZa33nqLZ599lipVqnDs2DGmTZvGgAEDcuJtkJiaTq13FufIuW9m73td8fa0/1/jgQMHCA4OJi0tjY0bNxITE8OCBQsAazAZNmwYY8aMwcPDg++++46ePXtSokSJG56zffv2GTqYV69e3daPKzw8nMOHDzNw4EDb64ULF+auu+5i1apVGQLQjc4jIiJ53ztzd7P/TBzFC3kxYWBD3N2cNxuPUwPQ66+/zsmTJ6lfvz4+Pj64ubkxbdo06tata2sTERHBiRMnbNu///47r732mq2f0ODBgylYsKDtLgPAY489xokTJ2jUqBGFChXiwoULPPDAA4waNcqxbzAX8vPzo0WLFnh4ePDAAw9wxx132B5l9e3bl+eee44///yTdu3aMXfuXGbPnn3Tc/67Lw9YR9td/vdzebmK/z7WLF68+FWPt250HhERydtmhYTx65aTuLrA5wMbUNKvwM0PykFODUBubm5MmjSJsWPHEhUVRUBAAO7uGUsaPXo0SUlJtu3OnTuzaNGiq85VtGjRDNsjR47kzTff5Ny5c5QuXfqq82angh5u7H2v680b5tC1M+PfnaD/q0CBAgwZMoTvvvuO8PBwihYtSvfu3W2vZ+VRW2BgIAChoaGUL1/etj80NJSgoKBMn09ERPKefadjGTHH2sd0WOdq3FE56319s0uuWAvMx8cHHx+fa77238cvvr6++Pr62nVeLy8vypUrd8v13YyLi0umHkPlZkOHDqVRo0YcOHCAhx56KMMjqaJFi95wlu5rKVGiBG3btuWzzz6jdevWuLq6sm/fPhYuXMgvv/yS3eWLiEguE5eUytM/byU5zUK76iV4ul0VZ5cE5JIAJLlHvXr1aNiwISEhITzyyCMZXrv33nsZMmQIKSkpFCpUKMMw+BuZNGkSXbp0oVGjRlSpUoWlS5cyaNAgevXqlRNvQUREcgljDG/8totj5y9Sxr8A4/s3wNU1dyxjpACUjzz66KPExcXdtF3Dhg0pUKAA1apVy7C/d+/ehISEsGPHDi5evEjBggV5+eWXr+rfM3jw4Awj7mrXrs2hQ4dYvnw5Fy5cYMSIEdSvXz/DMfacR0RE8pYf1h9nwa7TeLi5MHFwI4r45J5FxF2MMcbZReRGsbGx+Pv7ExMTg5+fX4bXkpKSOHbsGBUrVrxquY28LjY2lvLly/PFF18waNAgZ5dzQ7fzvwcRkbxu24kL9J+8gdR0wzs9a/Fo64oOue6Nvr//zamrwUvu8uqrr9K2bVsqVapE//79nV2OiIjkURcupvDs9G2kphu61ynNI60qOLukq+gRmNg0atSIZs2a0b179xwdNSciIrcvi8UwbNZ2wqMTqVDMmzF962V5wt6cpG85sfn3ZIUiIiJZ8eWqI6w4cA4vd1cmDW6MXwGPmx/kBHoEJiIiItliw5FIPv77AADv3VubWmWu3wfH2RSARERE5JZFxCXx3IxtWAz0aVSO/k0CnV3SDSkAiYiIyC1JS7fw/IxtnI9PpnopX96/r06u7PfzbwpAIiIickvGLz3IxqNR+Hi6MWlIIwp6Zm6ZJmdQABIREZEsW7E/gi9WHAHgwz71qFyikJMrso8CkIiIiGRJeHQiL83aDsCDLctzd/0yzi0oEzQMPh8JCQnh+PHjAHh4eFCuXDnq1auHh0f2DVEMDw9ny5Yt3HPPPdl2ThERyX1S0iw88/NWohNSqV/On7fuqunskjJFASgfmThxIgsWLODOO+8kLS2Nbdu24e7uzrx586hdu3a2XGPDhg0EBwcTHR2dLecTEZHc6YOF+9geFo1/QQ8mDmqEl3vu7/fzb3oEls/Url2b2bNnM2fOHA4dOkSRIkV44YUXbK8fPnyYJUuWZDjm7Nmz/P777xn2xcbGsnLlSlauXElsbCwA586dY+PGjaSmpjJ79mxmz57N7t27c/5NiYiIQy3YeZrv1x8H4JP+9Qks6u3cgrJAd4DyMU9PT7p06cI333xj2zd//ny+/fbbDMFl27Zt9O/fn7S0NABWrFhBnz59qF69OoUKFeLIkSN8/vnnVKxYkXXr1pGamsovv/wCQK9evahTp45j35iIiOSYo+fief23nQA8eWdlOtYs5eSKskYBKDsYA6kJzrm2hzfcwlwLR48epXjx4pk6ZvTo0Tz22GOMHTsWgJiYGDZt2kTt2rV5+eWXCQ4OZvbs2VmuSUREcqek1HSe/nkr8clpNKtYlFe6VHN2SVmmAJQdUhPgAyf1fH/zFHj62N383LlzzJ49m7S0NDZt2sTvv//OTz/9lKlLenl5ERoaSmJiIgULFsTf358uXbpktnIREclj3pm7m/1n4iheyJOJAxvi7pZ3e9Lk3colSyIiIvjll1/4+eef+fHHH+nevTu9evXK1Dk++ugjwsLCKFGiBF27dmXChAkkJSXlUMUiIpIb/BoSxqyQk7i6wOf3N6SkXwFnl3RLdAcoO3h4W+/EOOvamXC5EzRYOzc3adKEN954g08++QQAV1dXLBZLhmP+G25q1qzJhg0bOH36NMuXL2fUqFEsXryY+fPn38IbERGR3Gr/mVhGzLX2DX2pUzXuqJK5rhO5kQJQdnBxydRjqNyiVKlSfPzxxwwaNIihQ4dSs2ZNypYtS3h4OMnJyXh5eQGwatWqDMedPn2agIAAAgICGDx4MBaLxTaSrFChQiQnJzv8vYiISM6IS0rl6WlbSUq1cGe1EjzTvoqzS8oWCkD5XP/+/Rk3bhzDhw9nzpw5dO7cmQIFCnD//ffTq1cvQkJCmDVrVoZjhgwZQmBgIK1atSI9PZ3x48fTp08fAOrWrUt6ejojRoygfv361KhRQ6PARETyKGMMb/y+i6PnLxLgX4DxAxrg6pq7Fzm1l/oA5SNNmzblzjvvvGr/p59+ioeHB6dPn8bPz49NmzZRpUoVVq5cSfXq1Zk3b54t4AAsXryYDh068M8//7Bt2zZGjBjBl19+CUDZsmX566+/OH/+PDNnzmTHjh0Oe38iIpK9ftwQyoKdp3F3dWHioEYU9fF0dknZxsUYY5xdRG4UGxuLv78/MTEx+Pn5ZXgtKSmJY8eOUbFiRQoUyNudwPIy/XsQEck528Oi6ffVelLTDSN61uKx1hWdXZJdbvT9/W+6AyQiIiIZRCek8MzPW0lNN3SvU5pHW1VwdknZTgFIREREbCwWw7BZOwiPTqRCMW/G9K2Hyy1MuJtbKQCJiIiIzVerj7B8fwSe7q58MbgRfgU8nF1SjlAAEhEREQA2Ho1k3OIDALx3T21ql/F3ckU5RwFIREREiIhL4rkZ27AY6N2oLAOaBjq7pBylAHQLNIDOufT5i4hkj3SL4YUZ2zkXl0y1UoV4/746t2W/n39zegA6ceIE//d//8ezzz7L5MmT7ZpF+Pz584wbN47g4GAOHDhww7Zr1qwhODiYmTNnZlfJuLm5AZCSkpJt55TMS0hIAMDD4/Z8Pi0i4ijjlxxkw9FIfDzdmDS4Md6et/88yU59h3v37qVVq1a0a9eOFi1a8Pnnn/Pjjz+ycuXK636pffHFF3zwwQd07dqVqVOnMmTIEKpXr37NtufOneOBBx4gPj6eQoUKMWDAgGyp293dHW9vb86dO4eHhweurk7PkfmKMYaEhAQiIiIoXLiwLZCKiEjmrTgQwcQVhwEY3aceVUoWcnJFjuHUAPT666/TqFEjfv/9d1xcXHjwwQepWLEiP/30E48++ug1j+nYsSPBwcGcO3eOqVOnXvfcxhgeeughnn32WaZNm5atdbu4uBAQEMCxY8cIDQ3N1nOL/QoXLkzp0qWdXYaISJ4VHp3ISzO3A/BAi/LcU7+McwtyIKcFoJSUFBYvXswXX3xhe84YEBBA+/bt+fPPP68bgGrUqGHX+T/++GOSkpJ4+eWXsz0AAXh6elK1alU9BnMSDw8P3fkREbkFKWkWnvl5K9EJqdQr58/bPWs6uySHcloAOnHiBKmpqVSoUCHD/ooVK7JmzZpbOvfmzZsZN24cISEhdnfiSk5OztD/KDY29qbHuLq6agkGERHJk0b/tY/tYdH4FXDni0GN8HLPX3+pdFrnlcTERAB8fX0z7Pf19bW9lhWxsbEMHDiQCRMmUK5cObuPGz16NP7+/rafwMDbe/ifiIjkXwt3nWbquuMAfNK/AYFFvZ1bkBM4LQBdXqDswoULGfZHRUXdcPGym5k+fTqRkZEsXryY4OBggoODCQsLY+nSpQQHB2OxWK553PDhw4mJibH9hIWFZbkGERGR3OrY+Yu8NnsnAE/cWYlOtUo5uSLncNojsMDAQPz8/Ni7dy/du3e37d+zZw916tTJ8nnbtm3L2LFjM+z7+++/CQgIoEWLFtd9JObl5YWXl1eWrysiIpLbJaWm89S0LcQnp9GsQlFe7XLtUdT5gdMCkKurKwMGDOC7777jySefxMfHh82bN7Nx40ZGjBhha/fDDz9w9OhRRo4cadd5a9WqRa1atTLsmzhxIrVr1yY4ODhb34OIiEhe8u7cPew/E0fxQp5MGNQQd7f8O42LU9/5Bx98gLu7O/Xr16d379506tSJp556KsMdoTVr1vDbb7/ZttevX09wcDCvvfYaAGPHjiU4OJh58+Y5vH4REZG8YvaWk8wMCcPFBT67vyGl/PL3IB6nzgNUvHhxQkJCWLFiBWfPnuWdd96hQYMGGdo8/PDD9OjRw7ZdokQJWrRoAUCHDh1s+2/U4fndd98lICAge4sXERHJI/afieXtObsAeKlTNVpVKe7kipzPxWhBpWuKjY3F39+fmJiYW+qULSIi4kzxyWncM3EtR89dpG21Enz/cFNcXW/fdb7s/f7Ovw//REREbnPGGN74bSdHz10kwL8Anw5ocFuHn8xQABIREblN/bQxlPk7T+Pu6sLEQY0o6uPp7JJyDQUgERGR29COsGj+b/5eAN7oXoPG5Ys4uaLcRQFIRETkNhOdkMLTP28lNd3QrXZpHmtd0dkl5ToKQCIiIrcRi8Xw8qwdhEcnUr6YNx/1q2f3upj5iQKQiIjIbWTy6qMs2x+Bp7srkwY3wq+Ah7NLypUUgERERG4Tm45GMu7vAwCMvKc2tcv4O7mi3EsBSERE5DZwLi6Z52ZsI91i6N2wLPc3DXR2SdeXeMH640QKQCIiInlcusXwwi/biIhLplqpQrzfq07u7feTmgQzBsF33SD6hNPKcOpSGCIiInLrPl16kPVHIvH2dGPS4EZ4e+bSr3eLBeY8CSfWg5cfJMc5rRTdARIREcnDVh6IYMLywwCM7l2XKiV9nVzRDSx9B/b8Aa4eMGAalKrttFIUgERERPKoU9GJvDRzOwBDWgRxb4Oyzi3oRjZ9DesnWH+/9wuodKdTy1EAEhERyYPS0i08P2MbFxJSqVvWnxE9azm7pOvbvwD+es36e4cRUH+Ac+tBAUhERCRP+nzZIUJCL+Dr5c4Xgxrh5e7m7JKu7WQIzH4MMNDoIWjzsrMrAhSARERE8pz1R84zYYW1388HvesSVMzbyRVdR+QRmN4f0hKhahe46xPIJaPTFIBERETykMj4ZF78ZTvGwP1NA7m7fhlnl3RtF8/Dz30hIRICGkDfqeCWe0anKQCJiIjkERaL4ZVfdxARl0yVkoV4927njaK6oZQEmHE/RB2FwkEwaBZ4FXJ2VRkoAImIiOQR3607xooD5/B0d2XioIYU9MyF/X4s6fD7UDi5GQoUhsG/gW8pZ1d1FQUgERGRPGDnyWjGLNoPwDs9a1GjtJ+TK7oGY2DRcNg/H9w8YeAMKFHN2VVdkwKQiIhILheXlMpzM7aRmm7oXqc0g5sHObuka9vwBfwz2fp7r6+g/B3OrecGFIBERERyMWMMb8/ZTWhkAmULF+TD3vVy5zpfe/6Av9+y/t75/6BOH+fWcxMKQCIiIrnY7C0nmbv9FG6uLnw+sAH+3h7OLulqoRvg9yesvzd7HO54zrn12EEBSEREJJc6HBHPO3P3ADCsczUaly/q5Iqu4dxB64iv9GSo0RO6fZhr5vq5EQUgERGRXCgpNZ1np28lMTWdVlWK8dSdlZ1d0tXizsLPfSApGso1hd7fgGsuHJl2DQpAIiIiudDohfvYfyaOYj6ejO/fAFfXXHZXJeWidZbn6BNQpCIM/AU8c+mM1NegACQiIpLLLN5zhh82hALwcf/6lPQr4OSK/iM9DX59BE5vB+9iMOQ38Cnu7KoyRQFIREQkFwmPTuS12TsBeKJtJdpVL+nkiv7DGFj4ChxaDO4FYOBMKJYLH8/dhAKQiIhILpGWbuGFGduISUylfjl/Xu5S3dklXW3tJ7BlKuACfb6FwKbOrihLFIBERERyic+XHSIk9AK+Xu5MGNgIT/dc9jW9cxYse8/6e/cxUPNu59ZzC3LZJysiIpI/rT9yngkrDgPwQe+6BBXLZR2Kj66COU9bf2/5LDR/wrn13CKnr0tvsVjYtGkTZ8+epU6dOlSpUsWu47Zt28aBAwfo0KEDJUte/Xw0KiqKLVu24O7uToMGDShSpEh2ly4iIpItIuOTefGX7RgD9zcN5O76ZZxdUkZn98LMB8CSCrV7WWd6zuOcGoBiYmLo1q0bJ06coFatWqxfv57nnnuODz/88LrHLF26lLfffpuoqCgOHTrEihUrMgQgYwxPP/008+bNo3bt2iQkJLBz504+/fRTHn30UUe8LREREbtZLIZXft1BRFwyVUoW4t27azu7pIxiT8PP/SA5BoJawn1fgWvef4Dk1AD01ltvERUVxd69e/H392ft2rW0adOGzp0707Fjx2seEx8fz/jx4wkMDCQwMPCq140x1K9fn88++wxPT08AvvzyS5544gk6depEUFAuXUBOREType/WHWPFgXN4ursycVBDCnrmookEk2Kt4Sf2JBSrCvdPB49cNiQ/i5wW4Ywx/Pzzzzz22GP4+/sD0Lp1a5o1a8a0adOue9x9991Hy5Ytr/u6q6srTz75pC38APTp04e0tDR2796dfW9ARETkFu08Gc2YRfsBeKdnLWqU9nNyRf+SngqzHoSzu8CnJAyZDd65cCmOLHLaHaCTJ08SHR1NnTp1MuyvW7cu27dvz9ZrLV26FBcXF2rVqnXdNsnJySQnJ9u2Y2Njs7UGERGRf4tLSuW5GdtITTd0r1Oawc1z0RMKY+DPF+DoCvDwhkEzoUgFZ1eVrZx2BygmJgaAokUzpslixYoRHR2dbdc5fvw4L774Ik899RQVKlS4brvRo0fj7+9v+7nW4zUREZHsYIzh7Tm7CY1MoGzhgnzYux4uuWkB0ZUfwvafwcUV+n0PZRs5u6Js57QA5OXlBVj79PxbfHw8BQpkz/PFU6dO0blzZ5o3b86nn356w7bDhw8nJibG9hMWFpYtNYiIiPzX7C0nmbv9FG6uLnw+sAH+3h7OLumKbdNg1aXBSHd9AtW6OreeHOK0R2BBQUG4u7tz4sSJDPtDQ0OpVKnSLZ//1KlTtG/fnmrVqjF79mw8PG78H5eXl5ctlImIiOSUwxHxvDN3DwDDOlejcflc1K/m8DLroy+ANi9Dk0ecW08OcuodoI4dO/Lrr7/a9p0/f57ly5dz11132fZt3ryZRYsWZercp0+fpn379lSpUoXff/9dwUZERHKFpNR0np2+lcTUdFpVKcZTd+aiNbRO77R2erakQd3+0GGEsyvKUU4dBv/hhx/SunVrHnjgAVq2bMm3335LzZo1efjhh21tJk+ezMaNG+nWrRsAx44dY9OmTURFRQGwfPlyzpw5Q506dahTpw7Jycl07NiR6Oho+vfvzx9//GE7V7NmzbLl7pKIiEhWjF64j/1n4ijm48n4/g1wdc0l/X6iw6zD3VPioUIbuPcLyE19knKAUwNQgwYN2Lp1K99++y2bNm1i0KBBPPXUUxnu2DRr1izDLM4nTpxgzpw5AAwYMICDBw9y8OBB3N3dqVOnDikpKdSrVw+Av/76K8P1SpUqpQAkIiJOsXjPGX7YEArAx/3rU9Ivl8ynkxhtDT/xZ6BETRgwDdw9b3pYXudijDHOLiI3io2Nxd/fn5iYGPz8ctG8DCIikueERyfS47M1xCSm8kTbSgzvUdPZJVmlJcO0PnB8DfgGQPBS8C/n7Kpuib3f33l/LmsREZFcLC3dwgszthGTmEr9cv683KW6s0uyMgbmPmMNP56+MPjXPB9+MkMBSEREJAd9vuwQIaEX8PVyZ8LARni655Kv3mXvwa5fwdUd+v8Apes6uyKHyiX/FkRERG4/64+cZ8KKwwB80LsuQcW8nVzRJSHfwdpPrL/f/TlUufb6m7czBSAREZEcEBmfzIu/bMcYGNAkkLvrl3F2SVYHFsGCl62/txsODQc7tx4nUQASERHJZhaL4ZVfdxARl0yVkoV4957rr0XpUOFbYPYjYCzQcAjc+bqzK3IaBSAREZFs9t26Y6w4cA5Pd1cmDmqIt6dTZ52xijoG0wdAagJU7gg9P73t5/q5EQUgERGRbLTzZDRjFu0H4J2etahROhdMpZIQZZ3r5+I5a2fn/j+AWy5af8wJFIBERESySVxSKs/N2EZquqF7ndIMbh7k7JIgNQlmDITIQ+AfCIN+BS9fZ1fldApAIiIi2cAYw9tzdhMamUDZwgX5sHc9XJz9iMligT+egLCN4OVvnevHL8C5NeUSCkAiIiLZYPaWk8zdfgo3Vxc+H9gAf+9c8IhpyQjYOwdcPeD+aVAyl8xAnQsoAImIiNyiwxHxvDN3DwDDOlejcfmiTq4I2PgVbJho/f2+L6FiW+fWk8soAImIiNyCpNR0np2+lcTUdFpVKcaTd1Z2dkmwdx4sesP6e8d3oV4/59aTCykAiYiI3ILRC/ex/0wcxXw8Gd+/AW6uTu73E/YP/D4UMNDkMWj9knPryaUUgERERLJo8Z4z/LAhFICP+9enpF8B5xYUecQ6109aElTrBt0/ytdz/dyIApCIiEgWhEcn8trsnQA83rYS7aqXdG5B8edgWh9IjIIyDaHvd+CWCyZgzKUUgERERDIpLd3CCzO2EZOYSv1y/rzSpbpzC0pJgBkD4MIxKFweBs0CTx/n1pTLKQCJiIhk0ufLDhESegFfL3cmDGyEp7sTv04t6fBbsHWdr4JFYMhvUMjJd6PyAAUgERGRTFh/5DwTVhwG4IPedQkq5u28YoyBv16HAwvAzQsG/gLFqzqvnjxEAUhERMROkfHJvPjLdoyBAU0Cubt+GecWtHosbP4GcIHeX0NQC+fWk4eod5SIiIgdLBbDK7/uICIumSolC/HuPbWcW9DKMbDyA+vvXT+A2vc5tZy8RgFIRETEDt+tO8aKA+fwdHdl4qCGeHs68St05YewcrT1904joeXTzqslj1IAEhERuYmdJ6MZs2g/ACN61qJGaT/nFbNiNKz60Pp75/eg1QvOqyUPUx8gERGRG4hLSuW5GdtITTd0q12aIc2DnFeMwk+20R0gERGR6zDG8Pac3YRGJlC2cEHG9KmHizNmVjbG+shr1Rjrduf/g1bPO76O24gCkIiIyHXM3nKSudtP4ebqwucDG+Dv7eH4Iv4bfrq8D3c85/g6bjMKQCIiItdwOCKed+buAWBY52o0Ll/U8UUYAys+gNUfWbe7jII7nnV8HbchBSAREZH/SEpN59npW0lMTadVlWI8eWdlxxdhDKwYZZ3rB6xD3Vs+4/g6blMKQCIiIv8xeuE+9p+Jo5iPJ+P7N8DN1cH9foyB5e/DmnHWbYWfbKcAJCIi8i+L95zhhw2hAHzcvz4l/Qo4tgBjYPn/wZqPrdtdR2uenxygACQiInJJeHQir83eCcDjbSvRrrqDFxU1Bpa9B2s/sW53+xBaPOXYGvKJXDEPUFpaGtHR0Zk6JiUlhTNnzpCSkpKt5xURkfwpLd3CCzO2EZOYSv1y/rzSpbpjCzAGlo38V/gZo/CTg5wagIwxvP766/j7+xMQEEBQUBDz5s274TGhoaG88cYbBAUFERAQwPr167PlvCIikr99tuwQIaEX8PVyZ8LARni6O/Ar0hhY+j9YO9663W0MtHjScdfPh5wagMaPH8/XX3/NqlWriI+P58UXX6Rv374cOHDgusfMmjULf39/Fi5cmK3nFRGR/OunjaFMWH4YgFG96xJUzNtxFzcGlr4L6z61bnf/SOHHAVyMMcZZF69YsSJ9+/Zl7Nixtn2VKlXivvvu45NPPrnhsSdPniQwMJAVK1bQrl27bDvvZbGxsfj7+xMTE4OfnxPXfBERkRz104bjjLg0388TbSsxvEdNx13cFn4+s253HwvNH3fc9W9D9n5/O60T9Llz5zh+/DitW7fOsL9Nmzb8888/ue68IiJy+/lxw3HbZIePt63EG91rOO7ixsCSd2D959btHuOg2VDHXT+fc9ojsHPnzgFQvHjxDPtLlChBRESEw8+bnJxMbGxshh8REbl9/bD+Svh54s5KDO9ew3HrfBkDS0Yo/DiR0wLQ5f/I0tLSMuxPS0vDzc3N4ecdPXo0/v7+tp/AwMAs1yAiIrnb9+uO8e48a/h58s7KvNHNweHn77dh/QTr9l0fK/w4gdMCUJkyZQA4e/Zshv1nz561vebI8w4fPpyYmBjbT1hYWJZrEBGR3GvqumP878+9ADzVrjKvd6vu+PCzYaJ1+65PoGmwY64tGTgtAPn7+1O/fn2WLFli25eWlsayZcto27atbV9sbCyRkZHZft7/8vLyws/PL8OPiIjcXr5be4yRl8LP0+0q81pXB4efxW9dCT89x0PTxxxzbbmKU4fBv/322/zwww9MmTKFvXv38vjjj2OxWHjqqSsTPw0bNow777zTtp2YmMiZM2dsfX2ioqI4c+YM8fHxmTqviIjkL1PWHuO9+dbw80z7yrzq8PDzJmz8wrrdczw0edQx15ZrcmoA6tu3L1OnTmXy5Ml0796diIgIVq5cScmSV6Ye9/f3z9Ched68eTRo0IDu3btTqlQpnn76aRo0aMBXX32VqfOKiEj+8e2ao/zfpfDzXIcqvNLFweFn0XDYOMm63fNThZ9cwKnzAOVmmgdIROT28M3qo4xauA+A5ztU4aXO1RwffjZ9ad3u+Sk0ecQx186ncv08QCIiIjnt69VH+GDhfgCe71iVlzpVdV74ufszaPywY64tN6UAJCIit6XJq44w+i9r+HmhY1Ve6lzNcRc3Bha9AZsudc+4+3No/JDjri83pQAkIiK3na9WHeHDS+HnxU5VebGTg8PPX6/DP5MBF7jnc2j0oOOuL3ZRABIRkdvKpJWH+WiRdfHrlzpV44VOVR13cWPgr9fgn6+xhp8J0OgBx11f7KYAJCIit40vVhxm7GJr+BnWuRrPd3Rw+Fn4Kmz+BnCBeydCwyGOu75kigKQiIjcFv4dfl7uXI3nHB5+XoHN36LwkzcoAImISJ43cfkhxv19EIBXulTj2Q4ODD8WizX8hEzBGn6+gIaDHXd9yRIFIBERydM+X3aIT5ZYw8+rXavzTPsqjru4xQILX4aQ7wAXuG8SNBjkuOtLlikAiYhInvXZ0kOMX2oNP691q87T7RR+xD4KQCIikid9uvQgny49BMDr3WrwVLvKjru4xQILhsGWqVjDz5fQYKDjri+3TAFIRETynPFLDvLZMmv4eaN7DZ6809Hh5yXY8j3gAr2+gvr3O+76ki0yHYCOHz/OrFmzWL16NSdPngQgMDCQtm3b0r9/f8qXL5/tRYqIiAAYYxi/9BCfXwo/w7vX4AlHh5/5L8LWH8DFFe77CuoPcNz1JdvYvRr80aNH6du3L1WrVmXatGmUKlWKHj160KNHD0qWLMmPP/5IlSpV6NevH0ePHs3JmkVEJB8yxjB+yUFb+HmrR00nhJ8XroSfXpMVfvIwu+8AtWzZkscff5xx48ZRoUKFa7Y5fvw4U6ZMoWXLlpw9eza7ahQRkXzOGMMnSw4yYflhAN6+qybBbSo5rgBb+PnxSvip199x15ds52KMMfY0jIyMpFixYnadNDNtc6vY2Fj8/f2JiYnBz8/P2eWIiORbxhg+/vsgE1c4Mfz8+Txs++lS+Pka6vVz3PUlU+z9/rb7EdiNAo0xhsOHDxMfH3/TtiIiIvYyxjB28QEnh5/nFH5uQ3YHoH/bvHkzzzzzjG170KBBVK1aldKlS7NmzZpsK05ERPIvYwwfLT7ApJVHAHinZy3Hh595z8G2adbw0/sbhZ/bSJYC0CuvvMKgQdbJnnbu3Mlff/1FSEgIb775Jm+99Va2FigiIvmPMYYxiw7w5aXw8+7dtXi0dUXHFXA5/Gz/V/ip29dx15ccl6V5gLZs2UKjRo0AWLJkCb1796Zx48ZUr16dDz/8MFsLFBGR/MUYw4eL9jN5lXVE8f/ursXDrRwZftIvhZ+fwcUN+nwDdfo47vriEFm6A+Tn52cb6v7nn3/Svn17AKKjo9VhWEREsswYw4d/XQk/I++p7fjwM/fZf4WfbxV+blNZugPUv39/7rrrLmrVqsWuXbvo2bMnAIsWLaJHjx7ZWqCIiOQPxhg+WLiPb9YcA+C9e2vzYMsKjivAkg5zn4EdM6zhp+8UqN3LcdcXh8pSABo3bhxVq1YlNDSU0aNHU6RIEQCOHDnCO++8k60FiojI7c8Yw6gF+/h2rTX8/N+9tXnAkeEnPc0afnb+ovCTT9g9D1B+o3mAREQcwxjD+wv2MeVS+Hn/vjoMaeHAZZVSLsKvj8ChxZfCz3dQ+z7HXV+yVbbPA9SvXz/2799/03Z79+6lXz8NExQRkZszxvB/86+En1G9HBx+LkbCD/dYw497ARgwTeEnn7D7EViLFi1o0aIFDRs25O6776Zx48aUKlUKYwxnzpxh8+bNzJs3j127djFixIicrFlERG4Dxhjem7+XqeuOA/BBr7oMah7kuAIuHIdpfSDyMBQsAgNnQlBzx11fnCpTj8AiIyOZPHkyv/zyC7t37+byoS4uLtStW5eBAwcydOjQ22ImaD0CExHJOcYYRv65l+/XHwdgdO+6DGzmwPBzeif83Bfiz4J/IAz5HUpUc9z1JcfY+/2d5T5AMTExhIeH4+LiQpkyZfD3989ysbmRApCISM74b/j5sHdd7ndk+Dm6Cn4ZDClxULI2DPkN/AIcd33JUfZ+f2dpFBiAv7//bRd6REQkZxljeHfeHn7cEIqLizX8DGjqwPCz+zf4/QmwpEL51nD/z1CwsOOuL7lGliZCBIiLi+O3335j7Nixtn379u1Dg8pERORajDG8M/dK+BnTu55jw8+GSTD7UWv4qXWv9c6Pwk++laVHYPv376dz585YLBZOnTplCz0PPfQQXbt2ta0TlpfpEZiISPaxWAzvzNvNtI0nrOGnTz36Nwl01MVh6buw/nPrdrMnoNtocHVzzPXFobJ9GPy/vfTSSzzwwAOcPHkyw/7nn3+ecePGZeWUIiJym7JYDCPmXgk/Hzky/KSlwJwnr4SfTv+D7mMUfiRrAWjDhg289tpruLi4ZNhfo0YN9uzZk6lzLVq0iLvuuosmTZrwyCOPcPz48Vs+JiUlhU8//ZQuXbrQtGlT+vTpw+LFizNVl4iI3DqLxfD23N38vMkafsb2rU8/R4Wf5DiYMQB2zrROcHjfl9D6JfjPd5fkT1kKQMYYkpOTATKEoKNHj2aqY/SiRYu4++67adOmDR9//DHR0dG0bt2a6OjoWzrmpZdeYsyYMQwdOpRJkybRoEEDevTowd9//53p9yoiIlljsRjemrOL6ZfCz7i+9enbuJxjLh4fAd/3hCPLwcMbBs2EBnm/e4Zknyz1AerXrx9BQUF8/PHHuLm5kZ6eTkREBP369aNChQr88MMPdp2nefPmVKtWjZ9++gmA5ORkSpcuzeuvv84bb7yR5WMqVqzIgw8+yMiRI23H1atXj06dOvHJJ5/YVZv6AImIZJ3FYnjzj138sjkMFxf4uF99ejdyUPiJPGKd4PDCMfAuBoN+hXKNHXNtcboc7QP0ySefMGfOHKpWrYrFYqFNmzZUqlSJ8PBwPvzwQ7vOER8fz+bNmzOsHu/l5UWnTp1YsWLFLR3TqlUr1qxZQ2JiIgAHDhzg2LFjtG7dOitvV0REMuHf4cfVBT7p78DwE74VpnSxhp/C5eGxJQo/ck1ZmgcoMDCQnTt3Mn36dEJCQrBYLAwaNIgHHniAQoUK2XWO8PBwjDEEBGScfCogIOC6/YjsPWbKlCk8/PDDlCpVipIlS3LmzBk+++wzevfufd16kpOTbY/1wJogRUQkcywWw/DfdzEz5HL4acB9Dcs65uKHl8LMByH1IpSuB4Nng28px1xb8pwsT4To4+PD0KFDGTp0aJaOT0tLA8DT0zPDfi8vL1JTU2/pmNGjR7N69WomT55M5cqV+fvvvxk2bBg1a9bkjjvuuOa5R48eneGRmYiIZM7lOz+Xw8/4AQ24t4GDws+OX2DuM2BJg0rtrIuaevk65tqSJ2U5AAFYLBYSEhKu2m/PXaDL64VFRkZm2B8ZGUnx4sWzfExsbCzvv/8+U6ZMYeDAgQA0a9aMkJAQRo4ced3RYMOHD2fYsGG27djYWAIDHTRSQUQkj7vc4fnyYy+HhR9jrEPcl7xj3a7bD+6dBO6eNz5O8r0s9QE6cOAA7du3p2DBgvj6+l71Y4/SpUtTpkwZNm3alGH/hg0baNz42s9r7TkmMTGR9PT0q0JUiRIlbvhYy8vLCz8/vww/IiJyc9bws5sZ/1x57OWQ8GOxwKLhV8JPy2eh19cKP2KXLAWghx56CH9/f+bOncuGDRuu+rHXE088wbfffsvRo0cB+PHHHzl48CDBwcG2Nu+++y69evWy+5hSpUpRq1YtJkyYwMWLFwHrzNW///47HTp0yMrbFRGR67g8yeGMf6xD3T/uX98xfX7SkuG3R2HTl9btLqOg6yhwzfIKT5LPZOkR2I4dO1i0aBGFCxe+pYu/+eabHD9+nBo1alC8eHESEhL47rvvaNCgga1NeHg4hw4dytQxs2bN4tFHH7V1gg4PD2fQoEGMGDHiluoVEZErjLEub3F5ksOP+9WnV0MHjPZKirGu5n58Dbh6QK+voG7fnL+u3FayNA9QzZo1mTt3LtWqVcuWIi5cuMD58+cJCgrCy8srw2unTp0iISGBKlWq2H3MZdHR0URGRlKuXLnrtrkezQMkInJ9lxc2/WljqG2GZ4dMchh3Bqb1hbO7wLOQtbNz5fY5f13JM+z9/s5SAPr111/59NNPGTNmDJUrV75qSYzSpUtnvuJcRgFIROTajDG8O+/Kqu4f9annmOUtzh+Cn3pDzAnwKQlDZkNA/Zy/ruQp9n5/Z+kRWLFixdi9ezdt2rS55utZyFQiIpIHGGMY+edeW/gZ46jwE7YZpveHxCgoWhmG/AZFK+b8deW2laUA9PTTT3PXXXfx9NNP33I/IBERyRsuh5/v1x8HYExvB63qfmAR/PowpCVCmUYw+FfwufZ0KSL2ylIAOnHiBP/8848eDYmI5BPGGN6b/6/w06cu/Zs6IPxs/Qn+fAFMOlTpDP1/AE+fnL+u3PayNF6watWqnDx5MrtrERGRXMgYw/sL9jF13XEARveuy4CmQTl9UVg1FuY9aw0/DQbDwBkKP5JtsnQHaMiQIQwZMoQxY8ZQpUqVqzpBV6hQITtqExERJzPGMGrBPqasPQbAB73qMrBZDocfSzosfBVCpli327wMHUbAf75rRG5FlkaB/Tfw/Nft0Alao8BEJL8zxvDBwn18s8Yafkb1qsPg5uVz9qKpifBbMOyfD7hAj7HQLGtrTkr+lKOjwP49MaGIiNx+jDF8+Nd+W/h5/z4HhJ/ECzBjIJzYAG6e0PsbqH1fzl5T8q0sBaD/TkooIiK3D2MMHy7az+TV1iWH/u/e2gxpkcPhJ+akdYLDc/vAyx8GTocKrXP2mpKv2R2Adu/eDUCdOnVsv19PnTp1bq0qERFxCmMMHy0+wORV1vDz3r21eaBlhZy9aMQ+mNYHYsPBN8A6x0+p2jl7Tcn37A5AdevWBaz/c1z+/Xpuhz5AIiL5jTGGsYsP8OXKIwCMvKc2D+Z0+AndADMGWNf3Kl7dGn4KO2B4veR7dgeg06dPX/N3ERHJ+4wxjPv7AJMuhZ//3V2Lh+6okLMX3fcnzH4M0pMhsDkM/AW8i+bsNUUusTsAlS5dmuDgYL799tvbYq0vERGxMsbwyZKDfLHCGn7e6VmLh1vl8DITm6fAwlfAWKB6D+j7HXgUzNlrivxLpiZCnDJlSk7VISIiTjJ+6SEmLD8MwIietXi0dQ6GH2Ng+ShYMMwafho/DP1/UvgRh8vSKDAREbk9jF9ykM+XWac2efuumjyWk+EnPQ3mvwjbfrJutxsOd76uCQ7FKRSARETyqU+XHuSzf4Wf4DaVcu5iKQkw+xE4uAhcXKHneOvdHxEnyXQAcne/+SFpaWlZKkZERBzjs6WH+HSpNfy82aNGzoafi5HWkV4nN4N7Aeg7FWr0yLnridgh0wFo4sSJOVGHiIg4yIRlhxi/9CAAw7vX4PG2lXPuYhdCrXP8RB6CAoVh0CwIap5z1xOxU6YD0JNPPpkTdYiIiANMXH6Ij5dYw8/r3WrwxJ05GH7O7LLO7hx/BvzKwQO/Q4nqOXc9kUxQHyARkXziixWHGfe3Nfy81q06T7XLwfBzbDX8MhiSY6FkbRgyG/zK5Nz1RDJJAUhEJB+YtPIwYxcfAODVrtV5ul0OreloscCW72DRcEhPgfKt4f6foWDhnLmeSBZlKgAlJibmVB0iIpJDvlx5hI8WWcPPK12q8Uz7HAo/EfvhzxcgbKN1u9a90Otr8CiQM9cTuQWZCkAFCug/YhGRvGTyqiOMWbQfgJc7V+PZDlWz/yJpybDmE1jzMVhSwcMHOo6AZo+Dq1v2X08kG+gRmIjIberr1UcY/Zc1/AzrXI3nOuZA+Aldb73rc97at4hq3aDHOC1oKrmeApCIyG3o2zVH+WChNfy82Kkqz2d3+EmMhqXvwpbvrds+JaHHR1DrPs3sLHmCApCIyG3m2zVHeX/BPgBe6FiVFztVy76TGwN758Jfr0H8Weu+Rg9B55FQsEj2XUckhykAiYjcRqasPWYLP893qMKLnbLxzk/MSVjwChz8y7pdrCrc/RlUaJV91xBxEAUgEZHbxHdrj/F/8/cC8FyHKrzUuRou2fE4ypIOm7+FZe9BSjy4ekCbYdB6mEZ4SZ6lACQichv4ft0x3rsUfp5tX4Vh2RV+zu6Bec9DeIh1O7C59a5PyZq3fm4RJ1IAEhHJ435Yf5z//WkNP0+3q8zLXbIh/KQmwqqPYP3nYEkDLz/o9C40fhRcXbOhahHnUgASEcnDftxwnHfn7QHgqXaVebVr9VsPP0dXwfwXIeqodbvm3dD9Iy1lIbcVpweg06dPM23aNM6ePUvdunUZNGgQHh4e2XLM8uXLWb58Od7e3gwaNIgKFSrk0LsQEXG8nzYc55251vDz5J2Vee1Ww09CFPw9ArZPs277Bljn9KnZMxuqFcldnHof8+DBg9StW5cVK1bg6+vLqFGj6NKlC+np6bd0THp6OgMHDmTQoEEYYzDG0KtXL/bu3euItyUikuOmbQxlxKXw80TbSrze7RbCjzGw81eY2PRS+HGBpsHwzCaFH7ltuRhjjLMu3qtXLy5cuMCKFStwcXHh5MmTVK5cmW+++YYHH3wwy8eMHz+ed955h507d1KxYkUALl68SEJCAiVKlLCrttjYWPz9/YmJicHPzy973rCISDb4eVMob/2xG4DH21ZiePcaWQ8/F0JhwTA4vNS6XaKmtZNzUPNsqlbEsez9/nbaHaDU1FT++usvBg0aZPsft1y5crRr1465c+fe0jGTJk1i8ODBtvAD4OPjY3f4ERHJraZvOmELP8GtK2Y9/KSnwfoJMKmFNfy4eUL7t+GJ1Qo/ki84rQ/QiRMnSE5OzhBSACpVqsS6deuyfExsbCyHDx/mnXfe4ZdffmHLli2UKVOGfv36Ua5cuevWk5ycTHJysm07NjY2q29NRCRHzPjnBG/+sQuAx1pX5K27amYt/JzaDn8+D6d3WLfLt4a7P4XiObBWmEgu5bQ7QImJiQD4+vpm2O/n50dCQkKWj7kcXEaPHs2MGTMoUaIEa9eupXr16tcNVpfb+/v7234CA7WQn4jkHjM3n2D479bw82irirydlfCTchH+fhu+6WANPwX84Z4J8NCfCj+S7zjtDlChQoUAiI6OzrD/woUL131mZ88xl8NR2bJlMzwW69mzJ2+//TYrVqy45rmHDx/OsGHDbNuxsbEKQSKSK8zaHMYbl8LPI60qMKJnFsLP4aUwfxhEh1q3a/eGbh+Cb6lsrlYkb3DaHaCgoCAKFSrEvn37Muzft28ftWrVyvIx/v7+lCtXjoYNG2Zo07BhQ44fP37dery8vPDz88vwIyLibLNCwnj9950YAw/fUYF3etbKXPi5eB5+GwrT+ljDj38gDJoF/aYq/Ei+5rQA5OrqSr9+/fj+++9tj7a2b9/O+vXrGTBggK3d9OnT+eCDDzJ1zKBBg1i+fDlpaWmAdVj8smXLrgpFIiK5lcVi+OTvA7w22xp+HmpZnnfvzkT4MQa2T4eJTWDXLHBxhRZPw9MboVrXnC1eJA9w6jD4iIgI2rVrB0CDBg1YtGgRvXr1YsqUKbY2wcHBbNy4kd27d9t9TFxcHN26dSM6OprmzZsTEhJCYmIiS5YssXsyRA2DFxFniUlM5cVftrHiwDkAhrapyJs9MvHYK/IIzH8Jjq2ybpeqC/d8BmUb51DFIrmHvd/fTg1AYB19tXjxYtuszi1atMjw+ooVKzhz5gwDBw60+xiw3vVZvnw5oaGhBAUF0a5dOzw9Pe2uSwFIRJzh4Nk4Hv8xhOORCXi5uzK6d116N7r+CNYM0lOtQ9tXjYG0JHAvAO3egJbPgtuNZ9gXuV3kmQCUWykAiYijLdx1mld+3UFCSjplCxdk8gONqVPW376DT26xDm0/a71bTqV20HM8FK2UY/WK5Eb2fn87fS0wEZH8Lt1iGLv4AF+tOgJAqyrFmDCwEUV97LhrnRwHy0fBpq8AAwWLQtcPoP79cKuLoorcxhSAREScKDohhedmbGPNofOAdWmL17pWx93NjjEqBxbBgpch9qR1u9790HUU+BTPwYpFbg8KQCIiTrL3VCxPTAshLCqRAh6ufNS3PvfUL3PzA+POwqLXYc8f1u3C5a2Pu6p0zNmCRW4jCkAiIk4wd3s4r/+2k6RUC0FFvZn8QGNqBtykv6HFAtt+giUjICkGXNyg5TPWjs6ePo4pXOQ2oQAkIuJAaekWPvxrP9+uPQZA22ol+Pz+BhT2vkl/n/OH4M8XIPTSkj4BDeCezyGgfs4WLHKbUgASEXGQyPhknp2+jQ1HIwF4pn1lhnWujpvrDTorp6XAuk9h9VhITwEPb2j/FjR/Etz0R7hIVun/HhERB9h1MoYnp20hPDoRb083Pu5Xn+51A258UNRR+GUwROy1blfpBHd9AkXK53zBIrc5BSARkRw2e8tJ3vxjFylpFioW92HyA42pVsr3xged2Ai/DIKESPAuDt3HQJ0+Gtoukk0UgEREckhquoX35+/lhw3WFdg71ijJJwMa4F/wJrMy7/wV5j5tfeQV0AAGzQTf0jlfsEg+ogAkIpIDzsUl88zPW/nneBQAL3Ssygsdq+J6o/4+xsCqj2CldQFoavSE3l9rhJdIDlAAEhHJZttOXOCpaVs5E5uEr5c7nwxoQOdapW58UFoyzHsOds60bt/xPHQaCa52TIgoIpmmACQiko1++ecE78zdQ0q6hcolfPj6wSZULlHoxgddjISZg+HEBuvcPj0/gcYPO6RekfxKAUhEJBskp6Uz8s+9TN90AoCutUsxrl99fAvcpL/P+UPwcz+4cAy8/KH/D1C5vQMqFsnfFIBERG7R2dgknpq2ha0nonFxgVe6VOepOyvfuL8PwLHVMHOIdVbnwkEw6FcoWcMxRYvkcwpAIiK3IOR4FE/9vJVzccn4FXDns4ENaV+95M0P3DbNOrOzJQ3KNYX7Z0ChEjlfsIgACkAiIllijGHaxlBG/rmXNIuheilfJj/QmArFbzJiy2KB5f8Haz+xbtfuDfdNAo+COV+0iNgoAImIZFJSajoj5uzm1y0nAbirXgAf9amHj9dN/khNTYQ/noS9c6zbbV+Fdm9qpJeIEygAiYhkwqnoRJ6atoUdJ2NwdYHXu9Xg8baVcLnZDM3xETBjIISHgKuHdSHTBoMcU7SIXEUBSETEThuPRvLMz1uJvJhCYW8PJg5sROuqxW9+YMQ++Lk/xJyAAoXh/p+hQuscr1dErk8BSETkJowxTF13nFEL95FuMdQK8GPyA40JLOp984MPL4NfH4bkWChayTrSq3iVHK9ZRG5MAUhE5AYSU9J5849d/LEtHID7GpRhdO96FPR0u/nBId/BglfApEPQHdY7P95Fc7hiEbGHApCIyHWERSXw5LQt7DkVi5urC2/1qMkjrSrcvL+PJR2WvAMbJlq3691v7fPj7pXzRYuIXRSARESuYe2h8zw3YysXElIp5uPJxEGNaFm52M0PTLkIvw2FAwus2+3fhravwM1Ck4g4lAKQiMi/GGP4evVRxizaj8VAvXL+fDWkMWUK2zFPT+xpmDEATu8ANy/r/D51++Z80SKSaQpAIiKXJKSk8ersnSzYeRqAfo3L8X/31aGAhx39fU7vhOkDIO4UeBezzuwc1DyHKxaRrFIAEhEBQiMv8sRPW9h/Jg53Vxfevac2Q5oH3by/D8DBxfDrI5B6EYpXg0GzoGjFnC9aRLJMAUhE8r2VByJ4fsY2YpPSKOHrxaTBjWhawc7RWhu/gsXDwVig4p3Q/0coWDhH6xWRW6cAJCL5ljGGSSuPMO7vAxgDDYMK89WQxpTyK3Dzg9PTrMHnn6+t240ehLs+ATePnC1aRLKFApCI5EvxyWm8MmsHi/acAWBQ8yDevbsWXu529PdJioXZj8LhJYALdB4JdzyvkV4ieYgCkIjkO0fOxfPET1s4HBGPp5sr791bm/ubBdl3cHSYtbNzxB5wLwi9v4Za9+RswSKS7XJFANq2bRtnz56ldu3aBAYGZusxERERrF+/nsqVK1O3bt3sKllE8qile8/y0sztxCWnUdqvAF8OaUTDoCL2HRy+FWbcD/FnoVApGDgDyjbO2YJFJEe4OvPicXFx3HnnnXTt2pVRo0ZRvXp1/ve//2XbMenp6fTr14/+/fszZcqU7H8DIpJnWCyG8UsOEvxjCHHJaTStUIR5z7WyP/zs+xOm9rCGn5K1IXiZwo9IHubUO0Bvv/024eHhHDhwgCJFirB8+XI6duxIu3btaNeu3S0f895771GqVClq1aqV829GRHKtE5EJDP9jJ+sORwLwUMvyvHVXLTzd7fg7oDGw/nNY8i5goEpn6PsdFPDL2aJFJEc57Q6QMYZp06bx2GOPUaSI9W9gHTp0oHHjxvz000+3fMzq1av54YcfmDx5cs6+ERHJtdIthm/XHKXrp6tZdzgSL3dXxvWrz8h769gXftJT4c/nret6YaDpUBj4i8KPyG3AaXeATp48SVRUFPXr18+wv0GDBuzYseOWjomMjGTIkCF8//33tqB0M8nJySQnJ9u2Y2Nj7X0rIpILHTgTx2u/7WRHWDQALSoV5cPe9ahQ3Me+EyRGw6wH4dgqcHGFrqOhxZM5Vq+IOJbTAlBMTAzAVQGlWLFiREdH39IxjzzyCPfffz8dOnSwu57Ro0czcuRIu9uLSO6UkmbhixWHmbTyMKnpBl8vd968qyYDmgTi6mrnMPWoYzC9P5w/CB4+1kde1bvlbOEi4lBOewTm6ekJQEJCQob98fHxeHl5ZfmYWbNmsXr1apo0acKcOXOYM2cOMTExHDlyhDlz5mCMuea5hw8fTkxMjO0nLCzslt6fiDjethMX6DlhDZ8tO0RquqFTzVIsGXYnA5sF2R9+TmyCbztZw49vGXh0kcKPyG3IaXeAgoKCcHNzuypohIWFUbHitdfQseeYQoUK0a5dO6ZPn257PSoqir179/L9999zzz33XHNtHy8vr+sGLxHJ3RJS0vj474N8t+4YxkAxH09G3lubu+oG2LeW12W7ZsOcpyE9GQLqw8CZ4BeQc4WLiNO4mOvdEnGAzp07U6BAAf78808ALly4QLly5Rg7dixPP/00ANu3bycqKsr2OMueY/6rQYMGtGvXjk8//dTu2mJjY/H39ycmJgY/P3V4FMmt1h46z/A/dhIWlQhA74ZlGdGzFkV8PO0/iTGwehyseN+6Xb0H9PkWPO3sLyQiuYa9399OHQY/evRo2rRpw9ChQ2nZsiWTJ0+mcuXKPProo7Y2EydOZOPGjezevdvuY0Tk9heTkMqohXuZFXISgLKFCzKqVx3aVS+ZuROlJcO852HnL9btls9C5/fA1Y4lMUQkz3LqRIhNmjQhJCSEggULsnjxYu6++27Wrl1LgQJXFiJs2LAhHTt2zNQx/9W+fXvNAi1yG1m0+zSdxq9iVshJXFys8/osfqlt5sNPQhT81MsaflzcrIuZdh2l8COSDzj1EVhupkdgIrlPRFwS787dw1+7rQuYVirhw0d96tGkQtHMn+z8YZjeD6KOgpcf9PseqnS86WEikrvliUdgIiL2MMbw65aTvD9/L7FJabi7uvDknZV5tkMVCnhk4W7N8bUwcwgkXgD/IBg0E0ppxniR/EQBSERytbCoBIb/vou1h88DUKesH2P61KN2Gf+snXD7DJj3HFhSoWwT64KmhTL56ExE8jwFIBHJldIthu/XH2fc4gMkpqbj5e7KsM7VeKx1RdzdstB90WKBlR/A6rHW7Vr3Qa+vwKNgttYtInmDApCI5DoHz8bx2uydbL+0jEXzikX5sE89Ktq7jMV/ReyDRW/A0ZXW7TYvQ/u3wdWp40BExIkUgEQk10hJszBp5WG+WGFdxqKQlzvDe9RgYNNMzOT8bxcjrXd9Qr4DYwE3T+g5HhoOyf7iRSRPUQASkVxhe1g0r8/eyYGzcQB0rFGS93vVIcA/C4+o0lJg8zewcgwkW9cQpOY91vl9il57pnkRyV8UgETEqS4vYzF13TEsBor6ePK/e2pzd71MLmMB1hmdDy6CxW9B1BHrvtJ1rSu5V2yT/cWLSJ6lACQiTrPu8Hne+P3KMha9Li1jUTQzy1hcdnYvLH4Tjq6wbvuUgI7vQIPBmthQRK6iACQiDheTmMoHC/YxM8S6sHEZ/wKM6lWX9jWyMBz94nlY8QFsmXqln0/LZ6D1MCigSUxF5NoUgETEoRbtPsM7c3cTEZcMwIMty/NatxoU8srkH0dpKfDP17DqI/XzEZFMUwASEYeIiEvif/P2sHDXpWUsivvwYZ96NKuYyWUsrtfPp9uHUKF1NlctIrcrBSARyVHGGGZvOcn7C/YRk5iKm6sLT7StxPMdq2Z+GYuzey7181lp3fYpCR1HqJ+PiGSaApCI5JiwqATe/GMXaw5Zl7GoXcaPj/pmYRkL9fMRkWymACQi2S7dYvhh/XHG/X2AhBTrMhYvdqrG0DaZXMbiWv18at1r7edTpEKO1C4i+YMCkIhkq0Nn43jtt51sOxENQLOKRfmwd10qlShk/0mMgQN/wd9vQdRR677S9S7182mV/UWLSL6jACQi2SIlzcKXK4/wxYrDpKRbKOTlzhvdazCoWSaXsTi7BxYNh2OrrNs+JS/N5zNI/XxEJNsoAInILdsRFs1r/1rGokONkozK7DIWF8/DilGw5ftL/Xy8rP182gwDL9+cKVxE8i0FIBHJssSUdD5ZcoApa68sY/Hu3bW4p34Z+5exSEuBfyZf6ucTa92nfj4iksMUgEQkS9YfPs8bv+/iRFQCAPc1KMM7d9e2fxkLY+DAQvj77Sv9fALqW9ftUj8fEclhCkAikinn4pIZt/iAbRmLAP8CjOpVhw41Stl/kjO7rfP5XO7nU6iUtZ9P/UHgmolRYiIiWaQAJCJ2uZicxrdrjvH16iNcTEkH4IEW5XmtW3V8C3jYd5L4c9Z+Plt/uNLP545nofVL6ucjIg6lACQiN5SWbmFmSBifLj3EuUvrd9Ur58+InrVoWsHOZSzSkmHTZFg99ko/n9q9oNNIKFI+hyoXEbk+BSARuSZjDEv2nmXMov0cOXcRgMCiBXmtaw3uqhtg39D2y/18Fr8FF45Z9wXUt87nU/6OHKxeROTGFIBE5CpbQi8weuE+QkIvAFDE24PnO1ZlcPPyeLrb2UfnzG5YPByOrbZuFyoFHd+F+gPVz0dEnE4BSERsjp6L56NFB1i0x7piewEPVx5rXZEn7qyMX6b6+bwPW39UPx8RybUUgESEc3HJfLbsIDP+CSPdYnB1gX6NA3mpczVK+xew7yTq5yMieYgCkEg+djE5jW/WHOWb1UdtI7s61CjJ691qUL20nXdrjIH9C6zz+dj6+TS41M+nZc4ULiJyixSARPKh1HQLMzdbR3adj7eO7Kpfzp/hPWrSolIx+090ZjcsegOOr7Fuq5+PiOQRCkAi+Ygxhr8vjew6emlkV1BRb17rVp276gbYv3zFNfv5PHepn08mVn0XEXESBSCRfGJLaBQfLNzPlksju4r6ePJ8hyoMyszIrphw2DjJumBpSrx1X+3e0HkkFA7KmcJFRHJArglASUlJFChgZ2dLO49JS0vDzc3N/r/VityGjpyL56NF+1m85yxgHdkV3LoST9xZyf4ZnCP2wbrPYdcssKRZ96mfj4jkYU5/SP/uu+9SuHBhChUqRNWqVVm0aNEtHzN37lzatGlD4cKF8fHxoWPHjuzcuTOn3oJIrhQRl8Rbf+yiy/jVLN5zFlcXGNAkkJWvtOeVrnYsX2EMhK6Hn/vDpBawY7o1/FRoA4Nnw+MrFX5EJM9yagCaMGECn376KfPnzychIYFHHnmE++67j8OHD2f5mPT0dKZOncqHH35IZGQkZ86cISAggK5duxITE+OotybiNBeT0xi/5CDtxq7k500nSLcYOtUsyaIX2zKmb72bD2u3pMO+P2FKZ5jaHQ4tBlyg5j0QvAweng9VO4PurIpIHuZijDHOunjlypW57777+Pjjj237KlSoQN++fRk3bly2HRMeHk65cuVYvHgxXbp0sau22NhY/P39iYmJwc/PLxPvSsQ5bnlkV2oS7PwF1k+AyEt/CXHzggaDrB2ci1XOwepFRLKHvd/fTusDdP78eY4ePUqbNm0y7G/bti2bNm3KtmMATpw4AUDx4sVvsWqR3McYw+I9Z/lo0X6OnreO7CpfzJvXutagR93SN+8Dl3gBQr6DjV/BxQjrvgL+0HQoNH8CCpXM4XcgIuJ4TgtAERHWP2j/G0pKlix53TCTlWOSk5N54YUXuOOOO2jYsOF160lOTiY5Odm2HRsbe/M3IeJkIcejGP1XxpFdL3SsysBmQTcf2XWtEV1+5aDlM9DoAS1bISK3NaePArNYLBm209LSbvo3VnuPSUtLY9CgQZw9e5Z169bd8LyjR49m5MiRmahcxHkOR1hHdv2998rIrqFtKvF4WztGdp3da33M9e8RXSVrQasXoE4fcLNzZJiISB7mtABUpkwZAM6ePZthf0REhO21WzkmPT2dIUOGsHnzZlatWkW5cuVuWM/w4cMZNmyYbTs2NpbAwED73oyIg0TEJfHp0kPM3Hxlza4BTQN5sVM1SvndoHPz5RFd6z671Kn5kgptrMGnSid1ahaRfMVpAahw4cLUqVOHZcuW0a9fP8B6Z2f58uU8/vjjtnaJiYmkpaXh6+tr9zGXw8/69etZuXIlFStWvGk9Xl5eeHl5ZfO7FMke8clpfLP6KN+sOUrCpTW7OtW0rtlVtdQNHlVZ0q3rdK37DMJDLu10gVr3wB0vQLnGOV+8iEgu5NRHYG+++SYPP/wwbdq0oWXLlowdO5bk5GSeeuopW5vnnnuOjRs3snv3bruOsVgsPPTQQyxfvpy//vqLokWLEh0dDYC3tzeenp4Of58iWZWabuGXzWF8tvQg5+NTAKgfWJg3u9eg+Y1GdqUmwY4Z1kddUUes+9y8oOFgaPmsRnSJSL7n1AA0cOBAEhMTGTNmDGfPnqVu3bosX76cgIAAWxtvb+8Mw9hudkx0dDTz588HoEOHDhmuN2HCBB544AEHvDORW2Md2XWGjxYdsI3sqlDMm9e61aB7nRuM7LrmiK7C0GwoNHtcI7pERC5x6jxAuZnmARJn2Xw8itEL97H1RDQAxXw8eaGTdWSXh9t1RnbFnISNX15nRNeDWqBURPKNXD8PkIhkdDginjGL9rPk0siugh5uBLepeOORXWf3wvrPYdev/xrRVfvSiK7eGtElInIdCkAiThYRm8T4pYeYFfLvkV1BvNSpKiWvNbLLGAhdd2lE199X9ldoA61ehCodNaJLROQmFIBEnOTg2Thmbg5j+qYTJKZaR3Z1rlWK17tVp0rJa4zssqTD/vmXRnRtubRTI7pERLJCAUjEgeKSUvlzx2lmhoSxIyzatr9BYGHe7FGTZhWLXn2QRnSJiGQ7BSCRHGaM4Z9jUcwMCWPhrtMkpVpnMnd3daFjzZLc3zSIdtVLXD2yK/ECbJ4Cm76Ci+es+zSiS0QkWygAieSQMzFJ/Lb1JL+GhHE8MsG2v0rJQgxoEkivRmUpXugak29Gh10Z0ZVqHQKPf6B1RFfDBzSiS0QkGygAiWSjlDQLy/dHMCskjJUHIrBcmmTCx9ONu+uXoX/TQBoGFr72PD5n98C6z2H3bI3oEhHJYQpAItng0Nk4ZoWE8fvWcCIvptj2N61QhP5NArmrXgDentf43+3yiK61n8LhJVf2a0SXiEiOUgASyaK4pFQW7LR2aN52adJCgBK+XvRpVI7+TcpRqcQ1HlcZA+FbrSO69s+H8wet+11coeY90Op5KKsRXSIiOUkBSCQTjDFsPn6BWSFhLNh52jZ83c3VhQ41SjKgSSDtqpfA/b8zNqenWu/07JtvXZw07tSV1zSiS0TE4RSAROwQEZvE7K0n+TXkJMcurc0FUKmEj61Dc0nf/0xamJIAR5ZZQ8/BRZAUfeU1Dx+o2hlq3m39ZwF/x7wREREBFIBEris13dqh+deQMFYcOEf6pR7N3p5u9KwXwICmgTQKKpKxQ3NCFBxcbH20dXgZpCVeec27GFTvDjXuhkrtwOMaszyLiIhDKACJ/MfhiPhLHZpPcj7+SofmJuWvdGj28frX/zox4dbHWvvnw/G1YNKvvOYfBDV7Qo2eENgc3PS/nIhIbqA/jUWA+OQ0Fuw8xayQk2wJvWDbX7yQJ30alaNfk0CqlPxXh+ZzB2H/n9bHW6e2ZjxZydpQ4y5r8CldT6O4RERyIQUgybeMMWwJvcDMzWEs2HWahJQrHZrbVy9B/yaBtK9REg83V+vIrZNbrh65BYALBDaz3uWpcZc6MouI5AEKQJLvRMQl8fvWcGaFhHH03L86NBf3oV+TQPo0KmtdhT09FUJXX3vklqsHVGxrvctT/S7wLeWEdyIiIlmlACT5Qmq6hZUHzjFzcxgrDkTYOjQX9HDjrksdmpuUL4JLaiIcWQJLNXJLROR2pgAkt7Uj5+JtMzSfi0u27W8UVJj+TQLpWb8MhdJjrSO3NmrklohIfqEAJLedi8lpLNh1mlmbwwj5V4fmYj6e9G5Ulv5NAqlaINb6WOsXjdwSEcmP9Ce73BZS0y1sD4tmdshJ5u88xcVLHZpdXaBd9ZL0bxJIh+LReB5aAHM1cktEJL9TAJI8KTohha0nLrAl9AIhxy+w42Q0SakW2+sVinnTr3E57i97jmJhC2GlRm6JiMgVCkCS6xljOHb+IiGhF9gaeoGQ0Ascjoi/qp1/QQ861yjKY+VOUSN6AS7bFsBqjdwSEZGrKQBJrpOUms6u8BhCjlvv8Gw9cYGoiylXtatU3IdW5dxp53+Weu4nKB67F5dDf8O+6CuNNHJLRESuQQFInC4iLomtoZceZ4VeYHd4DKnpJkMbT3cXOgSk0qlIBA09TlAu5TBe5/bA/tCrT6iRWyIichMKQOJQ6RbDoYg4Qo5feZx1IiohQxs30mnuc56uxSJo4nWSCmlH8I3eh8u5C3DuGif1D4LSda0/FdtAYAuN3BIRkRvSt4TkqIvJaWwPi7bd3dkWeoG45DTb694k0dj1BO39z9C8YDhVLEcpHHcYl/RkiPjPyVzdoUSNK2Hn8k/BIo59UyIikucpAEm2McZwKiaJkONRtrs7+07HcmnSZUoQTWPX49T3PEFLn1NUN8cpnBSGCwYSsf5c5ukLpetcCjn1rP8sUUOPs0REJFsoAEmWpaZb2Hc61tpZ+cQFthy/wJnYJFyxUMHlDLVcQunpdpyGniep5XIcv/QrkxJmCDu+AVdCTum6EFAPClcAV1dHvyUREcknFIDEbjEJqVfm3gmNYkdYDJbURGq4nKCWayjPuIRS2zOUWq4nKMCVZSe4PD2PiysUq5ox6JSqC4VKOOX9iIhI/qUAJNdkjOF4ZIL1cdYJ62SD5yNOUcs1lFouodzvepz3XEKpXOAUbpirT+BeEErVtoacy4+xStYCT2/HvxkREZH/UADK54wxnItL5vC5eI6cu8iRiHiOnYvjQvhhyiQdopbrcTq6hPK8aygBBaKufRLv4hmDTul61pmVXd0c+2ZERETs5PQAtGLFCiZOnMjZs2epW7cub7/9NmXLlr3lY7Jy3tuVMYaYxFRORCVwIiqBYxHxnD17iqSII7hEh1Ii7TTlXM5R3uU8rVzOUdblPF4uaeB5jZMVrfSv/jqX/ulbWmtniYhInuJijLnG8wvHWLZsGd26deOtt96iZcuWfP755+zZs4edO3fi5+eX5WOyct7/io2Nxd/fn5iYGLuPcRaLxRB5MYUzMUmEX7hI5Nlw4iPDSL5wGhN7Go+E0xRJiyTAJYrSLlGUdTmPr0vijc/p6gmlauF6OegE1LM+0vLyddC7EhERyTx7v7+dGoDuuOMOKlSowPTp0wFITEwkICCAt956i1dffTXLx2TlvP+VUwFo2sZQXF1cqBHgS/VSvvh4XfsmnDGGuOQ0ouKSiL4QSXz0OS5GR5Acc47U+POYi+dxTYjCI/k8vqmRFCOaEi4xFCcGdxfLNc/5X0kFS2EKV8CzeEXcilaAwkFXfvzKajJBERHJc3J9ALp48SK+vr789NNPDB482La/T58+XLx4kUWLFmXpmKyc91pyKgC98v4Y0hMu4OOShDdJBBS0UMbbQkFzEY+UWLzS4/BKv4iPJR5/4vHjIm4umftXZMGFBI8ipBQogaVQKTyKBOJdLBCPIuXArwz4l4PC5TWnjoiI3Hbs/f522l/xT548iTGGMmXKZNhfpkwZli1bluVjsnJegOTkZJKTrwzdjo2NzdT7sYfFYnjX5Rt8Pf+1nkMacK1L/adLTRJeXHTzI8mjMKleRbEULIqrTzE8/APwKRpAoeJlcPcrDYVK4epTkkK6eyMiInJdTvuWTE1NBcDLyyvD/oIFC9pey8oxWTkvwOjRoxk5cmQm3kHmubq64FutDSRFg6cPSS4FiU7zIDLFnVQPX9y9i+DpUxivQkUo6FcUvyIlKeBXHAoWpoC7F7pfIyIikj2cFoCKFSsGQGRkZIb958+ft72WlWOycl6A4cOHM2zYMNt2bGwsgYGB9ryVzOk31fZrAaD0pR8RERFxHKetNRAQEEBAQACbN2/OsH/Tpk00atQoy8dk5bxgvWPk5+eX4UdERERuT05dbOmxxx7j22+/JSwsDICZM2eyb98+HnvsMVub999/n/vvvz9Tx9jTRkRERPIvp/aUHTFiBEeOHKFq1aqUKVOGiIgIvvrqKxo3bmxrc/z4cXbv3p2pY+xpIyIiIvmXU+cBuuzs2bNERERQuXJlvL0zrhUVGhpKfHw8tWvXtvuYzLS5nrw0EaKIiIhY5fp5gHI7BSAREZG8x97vb6f2ARIRERFxBgUgERERyXcUgERERCTfUQASERGRfEcBSERERPIdBSARERHJdxSAREREJN9RABIREZF8x6lLYeRml+eHjI2NdXIlIiIiYq/L39s3m+dZAeg64uLiAAgMDHRyJSIiIpJZcXFx+Pv7X/d1LYVxHRaLhVOnTuHr64uLi0uWzxMbG0tgYCBhYWFaUiOH6bN2HH3WjqPP2nH0WTtOTn7Wxhji4uIoU6YMrq7X7+mjO0DX4erqSrly5bLtfH5+fvofykH0WTuOPmvH0WftOPqsHSenPusb3fm5TJ2gRUREJN9RABIREZF8RwEoh3l5efHuu+/i5eXl7FJue/qsHUeftePos3YcfdaOkxs+a3WCFhERkXxHd4BEREQk31EAEhERkXxHAUhERETyHQWgHBQZGcnmzZs5c+aMs0vJ08LDw9mxYwfx8fHXbRMTE0NISAhhYWG31EastmzZwvr166/52sWLF9myZQtHjx697vH2tBGIiIhg69atJCQkXPP15ORktm7dyoEDB657Dnva5Hfx8fHs3LmTvXv3kpSUdM02aWlpbN++nb179153CQV72uQ3MTExrFu3jtOnT1+3zblz59i8eTMRERE53iZTjOSId955x3h5eZlatWoZLy8v89hjj5n09HRnl5Wn/PXXX6Z+/fqmTJkypl69esbb29u88cYbV7X7/PPPTcGCBU3NmjVNwYIFTe/evU1SUlKm24jV3Llzjaurq/Hy8rrqtZ9//tn4+vqaatWqGV9fX9O+fXsTHR2d6Tb5XXR0tOnTp4/x8fExTZo0MUFBQebHH3/M0GbhwoWmWLFiplKlSqZIkSKmcePG5tSpU5luk9+9//77xsfHx9StW9dUqVLFFC1a1Pz0008Z2qxdu9YEBASYoKAgU6JECVOrVi1z+PDhTLfJT44dO2aGDh1qSpcubdzc3MyECROu2e6VV17J8F343HPPGYvFkiNtMksBKAfMmTPHeHh4mHXr1hljjNm/f7/x9/c3n332mZMry1u++OILs2PHDtv2hg0bjJeXl/nhhx9s+zZu3GhcXFzMvHnzjDHGhIeHmzJlypjhw4dnqo1YhYWFmXLlypnnnnvuqgB06NAh4+HhYb7++mtjjDEXLlww1atXN4888kim2ogxnTp1Mo0aNTLnzp0zxhhz8eJFM3XqVNvr586dM76+vua9994zxhiTmJhoWrRoYbp3756pNvnd1q1bDWD++OMP277333/fuLu7m9jYWGOMMfHx8aZ06dLm+eefN8YYk5aWZrp27WqaNm1qO8aeNvnNokWLzOTJk01cXJzx9/e/ZgCaNm2aKViwoNmyZYsxxpgdO3YYb29vM2XKlGxvkxUKQDngnnvuMd26dcuwLzg42NSvX985Bd1GWrRoYYYOHWrbfvzxx02DBg0ytHn77bdNqVKlMtVGrH+ot23b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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.plot(sizeofarray, timings)\n", + "plt.xlabel(\"Size of array\")\n", + "plt.ylabel(\"Time(s)\")\n", + "plt.legend([\"Python\", \"Rust\"])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "b6S8vzFipT5w" + }, + "source": [ + "# Part 3: Patch Predictions As QuPath\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Patch predictions as qupath written fully in python\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:00:53.390168Z", + "iopub.status.busy": "2026-09-02T16:00:53.390086Z", + "iopub.status.idle": "2026-09-02T16:00:53.393091Z", + "shell.execute_reply": "2026-09-02T16:00:53.392722Z" + } + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "from shapely.geometry import mapping\n", + "\n", + "\n", + "def py_patch_predictions_as_qupath_json(\n", + " preds: list | np.ndarray,\n", + " class_dict: dict,\n", + " patch_coords: list | np.ndarray,\n", + " *,\n", + " verbose: bool = True,\n", + ") -> dict:\n", + " \"\"\"Helper function to generate QuPath JSON per patch predictions.\"\"\"\n", + " features = []\n", + " # pick a color for each class based on the class index, using a colormap\n", + " num_classes = len(class_dict)\n", + " cmap = plt.colormaps[\"tab20\"].resampled(num_classes)\n", + " class_colours = {\n", + " class_idx: [\n", + " int(cmap(class_idx)[0] * 255),\n", + " int(cmap(class_idx)[1] * 255),\n", + " int(cmap(class_idx)[2] * 255),\n", + " ]\n", + " for class_idx in class_dict\n", + " }\n", + "\n", + " tqdm_loop = tqdm(\n", + " range(np.asarray(patch_coords).shape[0]),\n", + " leave=False,\n", + " desc=\"Converting outputs to QuPath JSON.\",\n", + " disable=not verbose,\n", + " )\n", + "\n", + " for i in tqdm_loop:\n", + " class_idx = int(preds[i])\n", + " class_name = class_dict[class_idx]\n", + " polygon_geo = Polygon.from_bounds(*patch_coords[i])\n", + " polygon_feat = mapping(polygon_geo)\n", + "\n", + " feature = {\n", + " \"type\": \"Feature\",\n", + " \"id\": f\"patch_{i}\",\n", + " \"geometry\": polygon_feat,\n", + " \"properties\": {\n", + " \"classification\": {\n", + " \"name\": class_name,\n", + " \"color\": class_colours[class_idx],\n", + " }\n", + " },\n", + " \"objectType\": \"annotation\",\n", + " \"name\": class_name,\n", + " \"class_value\": class_idx,\n", + " }\n", + "\n", + " features.append(feature)\n", + "\n", + " return {\"type\": \"FeatureCollection\", \"features\": features}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Patch Predictions As QuPath Json with some code written in rust\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:00:53.393837Z", + "iopub.status.busy": "2026-09-02T16:00:53.393760Z", + "iopub.status.idle": "2026-09-02T16:00:53.395950Z", + "shell.execute_reply": "2026-09-02T16:00:53.395555Z" + } + }, + "outputs": [], + "source": [ + "def rust_patch_predictions_as_qupath_json(\n", + " preds: list | np.ndarray,\n", + " class_dict: dict,\n", + " patch_coords: list | np.ndarray,\n", + ") -> dict:\n", + " \"\"\"Helper function to generate QuPath JSON per patch predictions.\"\"\"\n", + " num_classes = len(class_dict)\n", + " cmap = plt.colormaps[\"tab20\"].resampled(num_classes)\n", + " class_colours = {\n", + " class_idx: [\n", + " int(cmap(class_idx)[0] * 255),\n", + " int(cmap(class_idx)[1] * 255),\n", + " int(cmap(class_idx)[2] * 255),\n", + " ]\n", + " for class_idx in class_dict\n", + " }\n", + "\n", + " features = rmisc.patch_predictions_as_qupath_json(\n", + " class_colours,\n", + " np.array(preds).astype(\"float\"),\n", + " class_dict,\n", + " np.array(patch_coords).astype(\"float\"),\n", + " )\n", + " return {\"type\": \"FeatureCollection\", \"features\": features}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Comparison of speed it takes to run code in rust vs python\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:00:53.396686Z", + "iopub.status.busy": "2026-09-02T16:00:53.396612Z", + "iopub.status.idle": "2026-09-02T16:00:56.775887Z", + "shell.execute_reply": "2026-09-02T16:00:56.775291Z" + } + }, + "outputs": [], + "source": [ + "import time\n", + "\n", + "import matplotlib.pyplot as plt\n", + "\n", + "sizeofarray = []\n", + "timings = []\n", + "timings = []\n", + "num_patches = 10\n", + "num_classes = 10\n", + "max_patches = 1000\n", + "while num_patches <= max_patches:\n", + " python_times = np.empty(0)\n", + " rust_times = np.empty(0)\n", + " for _j in range(10):\n", + " rng = np.random.default_rng(42)\n", + " class_probs = rng.random(\n", + " (num_patches, num_classes),\n", + " dtype=np.float64,\n", + " )\n", + " class_probs /= class_probs.sum(axis=1, keepdims=True)\n", + " preds = np.argmax(class_probs, axis=1).astype(np.float64).tolist()\n", + " x = np.arange(num_patches, dtype=np.float64) * 10\n", + " y = np.zeros(num_patches, dtype=np.float64)\n", + " patch_coords = np.column_stack((x, y, x + 10, y + 10))\n", + " class_dict = {index: f\"class_{index}\" for index in range(num_classes)}\n", + " classes_predicted = list(range(num_classes))\n", + " verbose: bool = False\n", + " start_time = time.time()\n", + " python_object = py_patch_predictions_as_qupath_json(\n", + " preds,\n", + " class_dict,\n", + " patch_coords,\n", + " verbose=False,\n", + " )\n", + " python_end_time = time.time() - start_time\n", + " python_times = np.append(python_times, python_end_time)\n", + " start_time = time.time()\n", + " rust_object = rust_patch_predictions_as_qupath_json(\n", + " preds, class_dict, patch_coords\n", + " )\n", + " rust_end_time = time.time() - start_time\n", + " rust_times = np.append(rust_times, rust_end_time)\n", + " if python_object != rust_object:\n", + " print(\"Incorrect result\")\n", + " sizeofarray.append(num_patches)\n", + " timings.append([np.average(python_times), np.average(rust_times)])\n", + " if num_patches < step1:\n", + " num_patches += 10\n", + " num_classes += 10\n", + " else:\n", + " num_patches += 100\n", + " num_classes += 100" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:00:56.777360Z", + "iopub.status.busy": "2026-09-02T16:00:56.777267Z", + "iopub.status.idle": "2026-09-02T16:00:56.821473Z", + "shell.execute_reply": "2026-09-02T16:00:56.821077Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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J27/maenJ7fffjuff/45CQkJNGrUiBEjRtj2V+Qf9Nn3MC4uzi7YxsXFlTmfTERE6oblUUlMm7+H07lFuLs689TwTkwc2AZn55qxELBpISkkJIQGDRqwf/9+rrnmGtv2/fv307Vr1wr3GTBggN0dVQAeHh40bNiQzp074+TkVKFznz2Oh4dHhV6vk5NTuS551WT33nsvvXr14uDBg9x11112l78aNWrEqVOnynW8xo0bc8UVV/D+++9z2WWX4ezszP79+1m6dClz5syp7PJFRMRkmflFTF+8jx92WKdLdG3ux3u39KBjU98L9Kxepn1qOzs7M27cOP7zn/9w33334eXlxa5du9i0aRNPPfWUrd0333xDbGwszzzzjEN9wsLCCAsLszvXp59+SkREhG1ui5OTk0PnlrKFh4fTs2dPtm3bxj333GO3b9SoUdx+++0UFhbSoEGDcwLr+Xz88ccMGzaMXr160b59e1auXMmECRMYPXp0VbwEERExyZajaTwxdzcJ6Xk4O8F9g9rx2NUdcXc1fenGc5g6tDFz5kwGDx5M79696dGjB8uXL+fuu+/m+uuvt7VZvXo1W7Zs4ZlnnnG4T2Wduz6aOHEiWVlZF2zXs2dPPD096dixo932m266iW3btrF7925ycnLw8vLiiSeeOGe+0W233UZOTo7t+27dunH48GFWr17N6dOnef7554mIiLDr48hxRESkZiooLuHtnw/x7/VHMQwIaeTNO+Mj6BPayOzSzsvJMAzDzAIKCgpYsWIFKSkphIWF0a9fP7v9v/76K8nJyXZ3Pl2oz5999913tGzZkssuu6xc576QzMxM/P39ycjIOGcuU35+PjExMbRp0wZPT89yHbemy8zMpHXr1nz00UdMmDDB7HL+Ul3+exARqS32J2Xy+He7OJBs/SX8lkuCee66rjTwMGes5q8+v//I9JBUm9XHkPTkk0/yyy+/4OLiwtatW3F1rdnzrOrq34OISG1QYjH4dP1R3v75EIUlFgJ93Jk5JpyhXZuaWpejIalmf8JJjdOrVy/69u3LiBEjanxAEhER88SfyuWJubv5LdZ6M8/VXZoyc0wYQQ0qdgOUGfQpJ+Xyx8ueIiIif2YYBvO2H2f6j/vILijGx92FF6/vxrg+rUxf96i8FJJERESkUqRlF/DMgj2s2GtdCLhP64a8M74HIYHeJldW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2mzYsMFo3ry5ERISYjRu3Njo2rWrceTIkXK3qU9iYmKMe++912jWrJnh4uJizJ49u8x2U6ZMsfssfPjhhw2LxVIlbcpLIckkCxcuNNzc3IyNGzcahmEYBw4cMPz9/Y3333/f5Mpql48++sjYvXu37fvNmzcbHh4exn//+1/bti1bthhOTk7G4sWLDcMwjISEBKNFixbGtGnTytVGrOLj441WrVoZDz/88Dkh6fDhw4abm5vxr3/9yzAMwzh9+rTRqVMn45577ilXGzGMq6++2ujVq5eRmppqGIZh5OTkGF988YVtf2pqquHr62u8/PLLhmEYRl5entGvXz9jxIgR5WpT3+3YscMAjAULFti2vfrqq4arq6uRmZlpGIZhZGdnG82aNTMeeeQRwzAMo7i42Bg+fLhxySWX2Po40qa+Wb58ufHPf/7TyMrKMvz9/csMSf/73/8MLy8vY/v27YZhGMbu3bsNb29v47PPPqv0NhWhkGSSG264wbjmmmvstk2aNMmIiIgwp6A6pF+/fsa9995r+/7vf/+70aNHD7s2zz33nNG0adNytRHrD/4rrrjC+PDDD41PPvnknJD0wgsvGM2bN7f77e3DDz80PD09jdzcXIfb1Hdr1641AGPTpk3nbfPxxx8b3t7eRk5Ojm3bvHnzDCcnJ9tIkSNt6rsVK1YYgJGcnGzb9uuvvxqAERcXZxiGYcydO9dwdnY2UlJSbG3WrFljAMaePXscblOfnS8kXXnllcbYsWPttt1yyy3GwIEDK71NRWhOkkl27txJ79697bb17duXqKgoioqKTKqq9svKyuLgwYO0b9/etu1873VKSortGrkjbQRefvllGjRowIMPPljm/p07d9KrVy+7Bz737duX/Px8Dhw44HCb+m7VqlUEBgbSv39/Dh06RFRU1DnzZHbu3EmXLl3w9va2bevbty+GYbBr1y6H29R3V155JcOHD2fixIksW7aMBQsW8MQTT/Dwww8TEhICWN/H4OBgmjRpYuvXt29f2z5H28i5zvez94/vWWW1qQiFJJOcOnWKwMBAu22BgYGUlJSQmZlpUlW13/3334+npyd/+9vfbNvO916f3edom/pu7dq1/Pvf/+bzzz8/bxu915UjMTGRxo0bc+211zJy5EjGjBlD8+bN+fLLL21t9F5XDldXVx566CEiIyN58sknefLJJykq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X36Z4uJiEhIS6NatG/3792fw4MHs3LmT1atXA9YHLm/fvp1PPvmE22+/HbCOxF1//fUkJCQQFBRkO88999zDsGHDFJJEKpshIlJNHnzwQSMgIMD44osvjJSUlDLbvPnmm0ZERESZ+/bs2WM0aNDAmDVrlmEYhvH6668bPXr0MDIzM21tHnvsMWPgwIHnreGll14yQkJCbOdPTU01QkNDjWnTptnarF+/3gCMvLw8h19bXFyc4e/vb6xZs8a27cUXXzQA48cff7RrO2jQICMgIMCIj4//y2MuWrTI8PPzs70+i8VitG3b1nj33XdtbXbu3GkAxoEDBxyuVUQco7vbRKTazJw5kzvuuIPJkyfTtGlT2rZty0MPPURycvIF+546dYpRo0YxatQonnzySQC++OILIiIiWLFiBd9//z1z584lMDCQzZs3k5+fX+Zx5syZw6RJk2jSpAlgHcm67777yrysdyH5+fls3LiRefPmsWnTJlq0aMFvv/1m16ZNmzZcd9115/QdPXo0rVq1Omf7yZMnWb16NXPnziU7O5vs7GwOHDgAgJOTExMnTuSLL76wtf/ss88YOHAgnTp1Knf9IvLXdLlNRKpNgwYN+OCDD3j33XfZs2cP69at46233mLJkiXs2bOHBg0alNmvuLiY8ePH06hRIz799FPb9tjYWIKCgpg3b55d+3HjxpGbm3vOJTKwziVq27at3bZ27dpx7NgxDMPAycnJodeyceNGbrrpJoKCgmjXrh3e3t6cPn2aEydO2LU738TvsrbPnj2badOmER4eTvPmzW1zs/54zHvuuYcXX3yRbdu2ERYWxjfffMObb77pUM0iUj4KSSJS7VxcXOjRowc9evTg0ksvpV+/fmzatOmcCclnPfHEE+zdu5dt27bZBR8/Pz9uvPFGnnrqKYfPHRQUxKlTp+y2nTp1isDAQIcDEsCTTz7J7bffzttvv23b1qdPHwzDsGt3vmP+eXtubi6PP/44CxYs4PrrrwcgOzub7777zu6YLVq04Nprr+Xzzz9n0KBBFBYW2k1iF5HKo8ttIlJtYmJiztl29rJYQEBAmX2++OIL/vnPf7JgwQJatmxpt++aa67h888/p7Cw0G57QkLCeWu47LLLmD9/vt22efPmcdlllznyEmySk5PtLnEdPnyYyMjIch3jj06ePElJSYndMf88QnbWpEmT+Pbbb/nkk08YP378eUfgROTiaCRJRKrN008/zYkTJ7jqqqsICQkhLi6OTz75hGuuuYbevXuf0z4pKYn777+fa6+9ltjYWGJjY4HSJQDeeOMNLr/8ci699FLuuusuXF1d2bBhA3l5eSxatKjMGl555RUuueQSxowZwzXXXMMvv/zC1q1b2bp1a7ley4033sj06dMpKCigqKiId999F29v73K/J2cFBwfTq1cv7rrrLiZNmsSRI0f47LPPcHY+93fZkSNH4u3tzdq1a3nttdcqfE4R+WsKSSJSbebOncvGjRv5+eef+fXXXwkKCuLjjz/mhhtuwMXFBbBfTNIwDG688UbAfikAFxcXxo8fT8uWLdm9ezdffvkl27dvx9fXlzFjxjBmzJjz1tCuXTt27drFv//9b9avX0+HDh144403aNOmja1N48aNufnmm201lWXWrFl06tSJrVu34uPjw1dffcWWLVsIDg62tenevXuZfa+88ko6d+5st83JyYlffvmFDz/8kLVr19KyZUs2bdrEyy+/fM4ImouLC9dddx1r165l4MCB561RRC6Ok/HnC+giIlKjWSwW2rVrx4MPPsiUKVPMLkekztJIkohILbJw4UKWLFlCbm4uf//7380uR6RO08RtEZFaZPny5bi4uPDzzz/j5+dndjkidZout4mIiIiUQSNJIiIiImVQSBIREREpg0KSiIiISBkUkkRERETKoJAkIiIiUgaFJBEREZEyKCSJiIiIlEEhSURERKQMCkkiIiIiZfh/N4G047/TOqEAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.plot(sizeofarray, timings)\n", + "plt.xlabel(\"Size of array\")\n", + "plt.ylabel(\"Time(s)\")\n", + "plt.legend([\"Python\", \"Rust\"])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Part 4: Semantic Segmentations As QuPath Json\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:00:56.822408Z", + "iopub.status.busy": "2026-09-02T16:00:56.822324Z", + "iopub.status.idle": "2026-09-02T16:01:00.075588Z", + "shell.execute_reply": "2026-09-02T16:01:00.075063Z" + } + }, + "outputs": [], + "source": [ + "from pathlib import Path\n", + "\n", + "from tiatoolbox.utils.misc import make_valid_poly, save_qupath_json" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:01:00.077332Z", + "iopub.status.busy": "2026-09-02T16:01:00.077131Z", + "iopub.status.idle": "2026-09-02T16:01:00.079081Z", + "shell.execute_reply": "2026-09-02T16:01:00.078740Z" + } + }, + "outputs": [], + "source": [ + "def poly_geo_func(coords: list) -> list:\n", + " \"\"\"Used solely for function semantic_segmentation_as_qupath_json.\"\"\"\n", + " geom = make_valid_poly(\n", + " feature2geometry(\n", + " {\n", + " \"type\": \"Polygon\",\n", + " \"coordinates\": coords,\n", + " }\n", + " ),\n", + " (0, 0),\n", + " )\n", + " return mapping(geom)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:01:00.079889Z", + "iopub.status.busy": "2026-09-02T16:01:00.079810Z", + "iopub.status.idle": "2026-09-02T16:01:00.083258Z", + "shell.execute_reply": "2026-09-02T16:01:00.082943Z" + } + }, + "outputs": [], + "source": [ + "from pathlib import Path\n", + "\n", + "import dask.array as da\n", + "\n", + "\n", + "def py_semantic_segmentations_as_qupath_json(\n", + " layer_list: list,\n", + " preds: da.Array,\n", + " scale_factor: tuple[float, float],\n", + " class_dict: dict,\n", + " save_path: Path | None = None,\n", + " *,\n", + " verbose: bool = True,\n", + ") -> dict | Path:\n", + " \"\"\"Helper function to save semantic segmentation as QuPath json.\"\"\"\n", + " features: list = []\n", + "\n", + " # color map for classes\n", + " num_classes = len(class_dict)\n", + " cmap = plt.colormaps[\"tab20\"].resampled(num_classes)\n", + " class_colours = {\n", + " class_idx: [\n", + " int(cmap(class_idx)[0] * 255),\n", + " int(cmap(class_idx)[1] * 255),\n", + " int(cmap(class_idx)[2] * 255),\n", + " ]\n", + " for class_idx in class_dict\n", + " }\n", + "\n", + " tqdm_loop = tqdm(\n", + " layer_list,\n", + " leave=False,\n", + " desc=\"Converting outputs to QuPath JSON.\",\n", + " disable=not verbose,\n", + " )\n", + "\n", + " for type_class in tqdm_loop:\n", + " class_id = int(type_class)\n", + " class_label = class_dict[class_id]\n", + "\n", + " # binary mask for this class\n", + " layer = da.where(preds == type_class, 1, 0).astype(\"uint8\").compute()\n", + "\n", + " contours, _ = cv2.findContours(layer, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_NONE)\n", + "\n", + " contours = cast(\"list[np.ndarray]\", contours)\n", + "\n", + " # Convert contours to polygons\n", + " for cnt in contours:\n", + " if cnt.shape[0] < 3: # noqa: PLR2004\n", + " continue\n", + "\n", + " # scale coordinates\n", + " cnt_scaled: np.ndarray = cnt.squeeze(1).astype(float)\n", + "\n", + " geom = make_valid_poly(\n", + " feature2geometry(\n", + " {\n", + " \"type\": \"Polygon\",\n", + " \"coordinates\": scale_factor * np.array([cnt_scaled]),\n", + " }\n", + " ),\n", + " (0, 0),\n", + " )\n", + " poly_geo = mapping(geom)\n", + "\n", + " feature = {\n", + " \"type\": \"Feature\",\n", + " \"geometry\": poly_geo,\n", + " \"id\": f\"class_{class_id}_{len(features)}\",\n", + " \"properties\": {\n", + " \"classification\": {\n", + " \"name\": class_label,\n", + " \"color\": class_colours[class_id],\n", + " }\n", + " },\n", + " \"objectType\": \"annotation\",\n", + " \"name\": class_label,\n", + " \"class_value\": class_id,\n", + " }\n", + "\n", + " features.append(feature)\n", + "\n", + " qupath_json = {\"type\": \"FeatureCollection\", \"features\": features}\n", + "\n", + " # if a save directory is provided, then dump JSON into a file\n", + " if save_path:\n", + " return save_qupath_json(save_path=save_path, qupath_json=qupath_json)\n", + "\n", + " return qupath_json" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:01:00.084032Z", + "iopub.status.busy": "2026-09-02T16:01:00.083953Z", + "iopub.status.idle": "2026-09-02T16:01:00.086135Z", + "shell.execute_reply": "2026-09-02T16:01:00.085836Z" + } + }, + "outputs": [], + "source": [ + "def rust_semantic_segmentations_as_qupath_json(\n", + " layer_list: list,\n", + " preds: da.Array,\n", + " scale_factor: tuple[float, float],\n", + " class_dict: dict,\n", + " save_path: Path | None = None,\n", + " *,\n", + " verbose: bool = True,\n", + ") -> dict | Path:\n", + " \"\"\"Helper function to save semantic segmentation as QuPath json.\"\"\"\n", + " _ = verbose\n", + " num_classes = len(class_dict)\n", + " cmap = plt.colormaps[\"tab20\"].resampled(num_classes)\n", + " class_colours = {\n", + " class_idx: [\n", + " int(cmap(class_idx)[0] * 255),\n", + " int(cmap(class_idx)[1] * 255),\n", + " int(cmap(class_idx)[2] * 255),\n", + " ]\n", + " for class_idx in class_dict\n", + " }\n", + "\n", + " features = rmisc.semantic_segmentations_as_qupath_json(\n", + " layer_list, preds, scale_factor, class_dict, class_colours, cv2, poly_geo_func\n", + " )\n", + "\n", + " qupath_json = {\"type\": \"FeatureCollection\", \"features\": features}\n", + "\n", + " # if a save directory is provided, then dump JSON into a file\n", + " if save_path:\n", + " return save_qupath_json(save_path=save_path, qupath_json=qupath_json)\n", + "\n", + " return qupath_json" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:01:00.086919Z", + "iopub.status.busy": "2026-09-02T16:01:00.086841Z", + "iopub.status.idle": "2026-09-02T16:03:42.374752Z", + "shell.execute_reply": "2026-09-02T16:03:42.374244Z" + } + }, + "outputs": [], + "source": [ + "import time\n", + "from typing import cast\n", + "\n", + "import cv2\n", + "import dask.array as da\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from shapely.geometry import shape as feature2geometry\n", + "\n", + "sizeofarray = []\n", + "timings = []\n", + "timings = []\n", + "num_patches = 10\n", + "num_classes = 10\n", + "max_patches = 1000\n", + "while num_patches <= max_patches:\n", + " python_times = np.empty(0)\n", + " rust_times = np.empty(0)\n", + " for _j in range(5):\n", + " rng = np.random.default_rng(42)\n", + "\n", + " # Exclude background\n", + " layer_list = list(range(1, num_classes))\n", + "\n", + " # Make the image reasonably large compared with number of patches\n", + " height = 64\n", + " width = 64\n", + "\n", + " # Start entirely as background\n", + " preds_np = np.zeros((height, width), dtype=np.int32)\n", + "\n", + " for _ in range(num_patches):\n", + " class_id = int(rng.integers(1, num_classes))\n", + "\n", + " # Rectangle dimensions, at least 3x3\n", + " rect_h = int(rng.integers(3, 10))\n", + " rect_w = int(rng.integers(3, 10))\n", + "\n", + " y = int(rng.integers(1, height - rect_h - 1))\n", + " x = int(rng.integers(1, width - rect_w - 1))\n", + "\n", + " # Only place the rectangle if the surrounding region is empty.\n", + " # The extra 1-pixel margin prevents polygons from touching.\n", + " region = preds_np[\n", + " y - 1 : y + rect_h + 1,\n", + " x - 1 : x + rect_w + 1,\n", + " ]\n", + "\n", + " if np.all(region == 0):\n", + " preds_np[\n", + " y : y + rect_h,\n", + " x : x + rect_w,\n", + " ] = class_id\n", + "\n", + " preds = da.from_array(\n", + " preds_np,\n", + " chunks=(32, 32),\n", + " )\n", + "\n", + " scale_factor = (0.5, 0.5)\n", + "\n", + " class_dict = {\n", + " 0: \"background\",\n", + " **{class_id: f\"class_{class_id}\" for class_id in range(1, num_classes)},\n", + " }\n", + " start_time = time.time()\n", + " python_object = py_semantic_segmentations_as_qupath_json(\n", + " layer_list, preds, scale_factor, class_dict, None, verbose=False\n", + " )\n", + " python_end_time = time.time() - start_time\n", + " python_times = np.append(python_times, python_end_time)\n", + " start_time = time.time()\n", + " rust_object = rust_semantic_segmentations_as_qupath_json(\n", + " layer_list, preds, scale_factor, class_dict, None, verbose=False\n", + " )\n", + " rust_end_time = time.time() - start_time\n", + " rust_times = np.append(rust_times, rust_end_time)\n", + " if python_object != rust_object:\n", + " print(\"Incorrect result\")\n", + " sizeofarray.append(num_patches)\n", + " timings.append([np.average(python_times), np.average(rust_times)])\n", + " if num_patches < step1:\n", + " num_patches += 10\n", + " num_classes += 10\n", + " else:\n", + " num_patches += 100\n", + " num_classes += 100" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:03:42.376539Z", + "iopub.status.busy": "2026-09-02T16:03:42.376438Z", + "iopub.status.idle": "2026-09-02T16:03:42.417059Z", + "shell.execute_reply": "2026-09-02T16:03:42.416702Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.plot(sizeofarray, timings)\n", + "plt.xlabel(\"Size of array\")\n", + "plt.ylabel(\"Time(s)\")\n", + "plt.legend([\"Python\", \"Rust\"])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Part 5: Semantic Segmentations As Annotations\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:03:42.418023Z", + "iopub.status.busy": "2026-09-02T16:03:42.417940Z", + "iopub.status.idle": "2026-09-02T16:03:42.419436Z", + "shell.execute_reply": "2026-09-02T16:03:42.419142Z" + } + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "from tiatoolbox.annotation.storage import AnnotationStore, SQLiteStore\n", + "from tiatoolbox.utils.misc import process_contours, save_annotations" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:03:42.420167Z", + "iopub.status.busy": "2026-09-02T16:03:42.420094Z", + "iopub.status.idle": "2026-09-02T16:03:42.422788Z", + "shell.execute_reply": "2026-09-02T16:03:42.422491Z" + } + }, + "outputs": [], + "source": [ + "def py_semantic_segmentations_as_annotations(\n", + " layer_list: list,\n", + " preds: da.Array,\n", + " scale_factor: tuple[float, float],\n", + " class_dict: dict,\n", + " save_path: Path | None = None,\n", + " offset: np.ndarray | None = None,\n", + " *,\n", + " verbose: bool = True,\n", + ") -> AnnotationStore | Path:\n", + " \"\"\"Helper function to save semantic segmentation as annotations.\"\"\"\n", + " store = SQLiteStore()\n", + " annotations_list: list[Annotation] = []\n", + "\n", + " tqdm_loop = tqdm(\n", + " layer_list,\n", + " leave=False,\n", + " desc=\"Converting outputs to AnnotationStore.\",\n", + " disable=not verbose,\n", + " )\n", + "\n", + " for type_class in tqdm_loop:\n", + " class_id = int(type_class)\n", + " class_label = class_dict.get(class_id, class_id)\n", + " layer = da.where(preds == type_class, 1, 0).astype(\"uint8\").compute()\n", + " contours, hierarchy = cv2.findContours(\n", + " layer,\n", + " cv2.RETR_CCOMP,\n", + " cv2.CHAIN_APPROX_NONE,\n", + " )\n", + "\n", + " contours = cast(\"list[np.ndarray]\", contours)\n", + "\n", + " annotations_list_ = process_contours(\n", + " contours=contours,\n", + " hierarchy=hierarchy,\n", + " scale_factor=scale_factor,\n", + " offset=offset,\n", + " properties={\"type\": class_label, \"class\": class_id},\n", + " )\n", + " annotations_list.extend(annotations_list_)\n", + "\n", + " _ = store.append_many(\n", + " annotations_list, [str(i) for i in range(len(annotations_list))]\n", + " )\n", + "\n", + " # # if a save directory is provided, then dump store into a file\n", + " if save_path:\n", + " return save_annotations(\n", + " save_path=save_path,\n", + " store=store,\n", + " )\n", + "\n", + " return store" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:03:42.423504Z", + "iopub.status.busy": "2026-09-02T16:03:42.423424Z", + "iopub.status.idle": "2026-09-02T16:03:42.425551Z", + "shell.execute_reply": "2026-09-02T16:03:42.425264Z" + } + }, + "outputs": [], + "source": [ + "from pathlib import Path\n", + "\n", + "import dask.array as da\n", + "import numpy as np\n", + "\n", + "\n", + "def rust_semantic_segmentations_as_annotations(\n", + " layer_list: list,\n", + " preds: da.Array,\n", + " scale_factor: tuple[float, float],\n", + " class_dict: dict,\n", + " save_path: Path | None = None,\n", + " offset: np.ndarray | None = None,\n", + " *,\n", + " verbose: bool = True,\n", + ") -> AnnotationStore | Path:\n", + " \"\"\"Helper function to save semantic segmentation as annotations.\"\"\"\n", + " _ = verbose\n", + " store = SQLiteStore()\n", + " annotations_list: list[Annotation] = rmisc.semantic_segmentations_as_annotations(\n", + " layer_list, preds, scale_factor, class_dict, offset, cv2, process_contours\n", + " )\n", + "\n", + " _ = store.append_many(\n", + " annotations_list, [str(i) for i in range(len(annotations_list))]\n", + " )\n", + "\n", + " # # if a save directory is provided, then dump store into a file\n", + " if save_path:\n", + " return save_annotations(\n", + " save_path=save_path,\n", + " store=store,\n", + " )\n", + "\n", + " return store" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:03:42.426289Z", + "iopub.status.busy": "2026-09-02T16:03:42.426214Z", + "iopub.status.idle": "2026-09-02T16:04:47.111988Z", + "shell.execute_reply": "2026-09-02T16:04:47.111505Z" + } + }, + "outputs": [], + "source": [ + "import time\n", + "\n", + "import dask.array as da\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "from tiatoolbox import rmisc\n", + "\n", + "sizeofarray = []\n", + "timings = []\n", + "timings = []\n", + "num_patches = 10\n", + "num_classes = 10\n", + "max_patches = 1000\n", + "while num_patches <= max_patches:\n", + " python_times = np.empty(0)\n", + " rust_times = np.empty(0)\n", + " for _j in range(2):\n", + " rng = np.random.default_rng(42)\n", + "\n", + " # Exclude background\n", + " layer_list = list(range(1, num_classes))\n", + "\n", + " # Make the image reasonably large compared with number of patches\n", + " height = 64\n", + " width = 64\n", + "\n", + " # Start entirely as background\n", + " preds_np = np.zeros((height, width), dtype=np.int32)\n", + "\n", + " for _ in range(num_patches):\n", + " class_id = int(rng.integers(1, num_classes))\n", + "\n", + " # Rectangle dimensions, at least 3x3\n", + " rect_h = int(rng.integers(3, 10))\n", + " rect_w = int(rng.integers(3, 10))\n", + "\n", + " y = int(rng.integers(1, height - rect_h - 1))\n", + " x = int(rng.integers(1, width - rect_w - 1))\n", + "\n", + " # Only place the rectangle if the surrounding region is empty.\n", + " # The extra 1-pixel margin prevents polygons from touching.\n", + " region = preds_np[\n", + " y - 1 : y + rect_h + 1,\n", + " x - 1 : x + rect_w + 1,\n", + " ]\n", + "\n", + " if np.all(region == 0):\n", + " preds_np[\n", + " y : y + rect_h,\n", + " x : x + rect_w,\n", + " ] = class_id\n", + "\n", + " preds = da.from_array(\n", + " preds_np,\n", + " chunks=(32, 32),\n", + " )\n", + "\n", + " scale_factor = (0.5, 0.5)\n", + "\n", + " class_dict = {\n", + " 0: \"background\",\n", + " **{class_id: f\"class_{class_id}\" for class_id in range(1, num_classes)},\n", + " }\n", + " start_time = time.time()\n", + " python_object = py_semantic_segmentations_as_annotations(\n", + " layer_list, preds, scale_factor, class_dict, None, None, verbose=False\n", + " )\n", + " python_end_time = time.time() - start_time\n", + " python_times = np.append(python_times, python_end_time)\n", + " start_time = time.time()\n", + " rust_object = rust_semantic_segmentations_as_annotations(\n", + " layer_list, preds, scale_factor, class_dict, None, None, verbose=False\n", + " )\n", + " rust_end_time = time.time() - start_time\n", + " rust_times = np.append(rust_times, rust_end_time)\n", + " if python_object != rust_object:\n", + " print(\"Incorrect result\")\n", + " sizeofarray.append(num_patches)\n", + " timings.append([np.average(python_times), np.average(rust_times)])\n", + " if num_patches < step1:\n", + " num_patches += 10\n", + " num_classes += 10\n", + " else:\n", + " num_patches += 100\n", + " num_classes += 100" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:04:47.113564Z", + "iopub.status.busy": "2026-09-02T16:04:47.113461Z", + "iopub.status.idle": "2026-09-02T16:04:47.154285Z", + "shell.execute_reply": "2026-09-02T16:04:47.153910Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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+0yePNlo3rz5ZV/bs2eP4e3tbUyaNMkwDMN46623jBYtWhjx8fHZfZ566imjc+fOudbwyiuvGNWrV89+/zNnzhghISHG+PHjs/usWbPGAIyUlJQ8/2zh4eGGn5+fsWrVquy2l19+2QCM3377LUffbt26Gf7+/sbJkyeveM358+cbvr6+2T+fzWYzatWqZbz33nvZfXbs2GEAxoEDB/Jcq4jkjWZLichVvf322wwbNowxY8ZQqVIlatWqxeOPP87p06eveu758+e57bbbuO222xg3bhwAM2fOpHnz5ixZsoQff/yRuXPnUqFCBTZs2EBqauplr/PDDz8wcuRIKlasCJh3jh5++OHLPv66mtTUVNatW8e8efNYv349VapUYfPmzTn61KxZk5tvvvmSc++44w6qVat2SfvZs2dZsWIFc+fOJTExkcTERA4cOACAg4MD999/PzNnzszu/+WXX9K5c2fq16+f7/pF5Mr0WEpErsrb25tp06bx3nvvsWfPHv766y+mTJnCwoUL2bNnD97e3pc9LzMzk8GDB1O+fHm++OKL7Pbjx48TEBDAvHnzcvQfNGgQycnJlzxKAnOsTK1atXK01a5dmxMnTmAYBg4ODnn6WdatW0f//v0JCAigdu3aeHp6cuHCBWJiYnL0y21A8uXaP/jgA8aPH0+zZs0ICgrKHnv072uOGDGCl19+ma1bt9K0aVO+++47Jk+enKeaRSR/FG5EJM+cnJxo0aIFLVq0oH379nTo0IH169dfMlD2b2PHjmXv3r1s3bo1R2Dx9fXl9ttv59lnn83zewcEBHD+/PkcbefPn6dChQp5DjYA48aNY+jQobzzzjvZbW3atMEwjBz9crvmf9uTk5N5+umn+eWXX7jlllsASExMZM6cOTmuWaVKFfr168eMGTPo1q0b6enpOQZXi0jh0WMpEbmqY8eOXdL29+Mjf3//y54zc+ZMPv30U3755ReqVq2a47U+ffowY8YM0tPTc7RHRETkWkOXLl34+eefc7TNmzePLl265OVHyHb69Okcj4IOHTrE7t2783WNfzt79ixZWVk5rvnfO1J/GzlyJN9//z3Tp09n8ODBud7xEpFrozs3InJVzz33HDExMdxwww1Ur16d8PBwpk+fTp8+fWjduvUl/aOionjkkUfo168fx48f5/jx48A/U8EnTpxI165dad++PcOHD8fZ2Zm1a9eSkpLC/PnzL1vD66+/Ttu2bRkwYAB9+vRh6dKlbNq0iU2bNuXrZ7n99tt59dVXSUtLIyMjg/feew9PT898fyZ/Cw4OplWrVgwfPpyRI0dy+PBhvvzySxwdL/2340033YSnpyerV6/mzTffLPB7isiVKdyIyFXNnTuXdevW8eeff7Jy5UoCAgL4+OOPufXWW3FycgJyLuJnGAa33347kHNKuJOTE4MHD6Zq1ars2rWLWbNmsW3bNnx8fBgwYAADBgzItYbatWuzc+dOPv/8c9asWUPdunWZOHEiNWvWzO4TGBjInXfemV3T5UyaNIn69euzadMmvLy8mD17Nhs3biQ4ODi7T5MmTS577vXXX0+DBg1ytDk4OLB06VI+/PBDVq9eTdWqVVm/fj2vvfbaJXesnJycuPnmm1m9ejWdO3fOtUYRuTYOxn8fNIuISJGw2WzUrl2bxx57jGeeecbqckRKLd25EREpBr/++isLFy4kOTmZBx980OpyREo1DSgWESkGixcvxsnJiT///BNfX1+ryxEp1fRYSkREREoV3bkRERGRUkXhRkREREoVhRsREREpVRRuREREpFRRuBEREZFSReFGREREShWFGxERESlVFG5ERESkVFG4ERERkVLl/wGovfFWQoN8WQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.plot(sizeofarray, timings)\n", + "plt.xlabel(\"Size of array\")\n", + "plt.ylabel(\"Time(s)\")\n", + "plt.legend([\"Python\", \"Rust\"])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "b6S8vzFipT5w" + }, + "source": [ + "# Part 6: Contrast Enhancer\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contrast Enhancer with some code written in rust\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:04:47.155283Z", + "iopub.status.busy": "2026-09-02T16:04:47.155195Z", + "iopub.status.idle": "2026-09-02T16:04:47.157789Z", + "shell.execute_reply": "2026-09-02T16:04:47.157491Z" + } + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "from skimage import exposure\n", + "\n", + "from tiatoolbox import rmisc\n", + "\n", + "\n", + "def rust_contrast_enhancer(\n", + " img: np.ndarray, low_p: int = 2, high_p: int = 98\n", + ") -> np.ndarray:\n", + " \"\"\"Enhance contrast of the input image using intensity adjustment.\n", + "\n", + " This method uses both image low and high percentiles.\n", + "\n", + " Args:\n", + " img (:class:`numpy.ndarray`): input image used to obtain tissue mask.\n", + " Image should be uint8.\n", + " low_p (scalar): low percentile of image values to be saturated to 0.\n", + " high_p (scalar): high percentile of image values to be saturated to 255.\n", + " high_p should always be greater than low_p.\n", + "\n", + " Returns:\n", + " img (:class:`numpy.ndarray`):\n", + " Image (uint8) with contrast enhanced.\n", + "\n", + " Raises:\n", + " AssertionError: Internal errors due to invalid img type.\n", + "\n", + " Examples:\n", + " >>> from tiatoolbox import utils\n", + " >>> img = utils.misc.contrast_enhancer(img, low_p=2, high_p=98)\n", + "\n", + " \"\"\"\n", + " # check if image is not uint8\n", + " # check if image is not uint8\n", + " dimension_for_rust = 3\n", + "\n", + " if img.dtype != np.uint8:\n", + " msg = \"Image should be uint8.\"\n", + " raise AssertionError(msg)\n", + " if img.ndim == dimension_for_rust:\n", + " return rmisc.contrast_enhancer(img, low_p, high_p)\n", + " img_out = img.copy()\n", + " percentiles = np.array(np.percentile(img_out, (low_p, high_p)))\n", + " p_low, p_high = percentiles[0], percentiles[1]\n", + " if p_low >= p_high:\n", + " p_low, p_high = np.min(img_out), np.max(img_out)\n", + " if p_high > p_low:\n", + " img_out = exposure.rescale_intensity(\n", + " img_out,\n", + " in_range=(p_low, p_high),\n", + " out_range=(0.0, 255.0),\n", + " )\n", + " return img_out.astype(np.uint8)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contrast Enhancer written fully in python\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:04:47.158622Z", + "iopub.status.busy": "2026-09-02T16:04:47.158543Z", + "iopub.status.idle": "2026-09-02T16:04:47.160711Z", + "shell.execute_reply": "2026-09-02T16:04:47.160415Z" + } + }, + "outputs": [], + "source": [ + "def py_contrast_enhancer(\n", + " img: np.ndarray, low_p: int = 2, high_p: int = 98\n", + ") -> np.ndarray:\n", + " \"\"\"Enhance contrast of the input image using intensity adjustment.\n", + "\n", + " This method uses both image low and high percentiles.\n", + "\n", + " Args:\n", + " img (:class:`numpy.ndarray`): input image used to obtain tissue mask.\n", + " Image should be uint8.\n", + " low_p (scalar): low percentile of image values to be saturated to 0.\n", + " high_p (scalar): high percentile of image values to be saturated to 255.\n", + " high_p should always be greater than low_p.\n", + "\n", + " Returns:\n", + " img (:class:`numpy.ndarray`):\n", + " Image (uint8) with contrast enhanced.\n", + "\n", + " Raises:\n", + " AssertionError: Internal errors due to invalid img type.\n", + "\n", + " Examples:\n", + " >>> from tiatoolbox import utils\n", + " >>> img = utils.misc.contrast_enhancer(img, low_p=2, high_p=98)\n", + "\n", + " \"\"\"\n", + " # check if image is not uint8\n", + " if img.dtype != np.uint8:\n", + " msg = \"Image should be uint8.\"\n", + " raise AssertionError(msg)\n", + " img_out = img.copy()\n", + " percentiles = np.array(np.percentile(img_out, (low_p, high_p)))\n", + " p_low, p_high = percentiles[0], percentiles[1]\n", + " if p_low >= p_high:\n", + " p_low, p_high = np.min(img_out), np.max(img_out)\n", + " if p_high > p_low:\n", + " img_out = exposure.rescale_intensity(\n", + " img_out,\n", + " in_range=(p_low, p_high),\n", + " out_range=(0.0, 255.0),\n", + " )\n", + " return img_out.astype(np.uint8)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Comparison of speed it takes to run code in rust vs python\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:04:47.161489Z", + "iopub.status.busy": "2026-09-02T16:04:47.161408Z", + "iopub.status.idle": "2026-09-02T16:06:50.802025Z", + "shell.execute_reply": "2026-09-02T16:06:50.801325Z" + }, + "id": "DZBiw_EepT5x" + }, + "outputs": [], + "source": [ + "import time\n", + "\n", + "sizeofarray = []\n", + "timings = []\n", + "i = 10\n", + "maxarraysize = 10000\n", + "while i <= maxarraysize:\n", + " python_times = np.empty(0)\n", + " rust_times = np.empty(0)\n", + " for _j in range(5):\n", + " rng = np.random.default_rng()\n", + " temp = rng.uniform(0, 255, size=(i, i, 3)).astype(np.uint8)\n", + " start_time = time.time()\n", + " python_result = py_contrast_enhancer(temp, 2, 96)\n", + " python_end_time = time.time() - start_time\n", + " python_times = np.append(python_times, python_end_time)\n", + " start_time = time.time()\n", + " rust_result = rust_contrast_enhancer(temp, 2, 96)\n", + " rust_end_time = time.time() - start_time\n", + " rust_times = np.append(rust_times, rust_end_time)\n", + " if not np.allclose(python_result, rust_result, atol=1):\n", + " print(\"Incorrect result\")\n", + " sizeofarray.append(i)\n", + " timings.append([np.average(python_times), np.average(rust_times)])\n", + " if i < step1:\n", + " i += 10\n", + " elif i < step2:\n", + " i += 100\n", + " else:\n", + " i += 1000" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-02T16:06:50.803595Z", + "iopub.status.busy": "2026-09-02T16:06:50.803493Z", + "iopub.status.idle": "2026-09-02T16:06:50.844447Z", + "shell.execute_reply": "2026-09-02T16:06:50.844028Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAGxCAYAAACeKZf2AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvctoD+AAAAAlwSFlzAAAPYQAAD2EBqD+naQAAZbZJREFUeJzt3XmcjeX/x/HX7IvZMGYMxr6OfUlEtkpEpKJSWlVKq1bfVn0rSaV9L7+vNiGhiMhOCGMZu6wzZsEw+3bOuX9/3BxNBoOZuc+ceT8fj3nkXOe6z3zmGDPvrvtaPAzDMBARERFxE55WFyAiIiJSkhRuRERExK0o3IiIiIhbUbgRERERt6JwIyIiIm5F4UZERETcisKNiIiIuBWFGxEREXEr3lYXYAWHw8GhQ4cIDg7Gw8PD6nJERESkGAzDICMjgxo1auDpeebxmQoZbg4dOkR0dLTVZYiIiMgFOHjwILVq1Trj8xUy3AQHBwPmmxMSEmJxNSIiIlIc6enpREdHO3+Pn0mFDDcnb0WFhIQo3IiIiJQz55pSognFIiIi4lYUbkRERMStKNyIiIiIW6mQc26Kw+FwkJ+fb3UZFZKPjw9eXl5WlyEiIuWUwk0R8vPz2bt3Lw6Hw+pSKqywsDCqV6+ufYhEROS8Kdz8i2EYJCYm4uXlRXR09Fk3CZKSZxgG2dnZpKSkABAVFWVxRSIiUt4o3PyLzWYjOzubGjVqEBgYaHU5FVJAQAAAKSkpRERE6BaViIicFw1L/IvdbgfA19fX4koqtpPBsqCgwOJKRESkvFG4OQPN9bCW3n8REblQCjdyRu+88w7Tp0+3ugwREZHzojk3bmLixImsWLECMJdSR0dHM2jQIJo1a1as6z/44AMiIiK46aabnG1z5syhQ4cOXH/99aVSs4iISGnQyI2bWLJkCcuWLaNTp060atWKuLg4WrZsyc8//1ys6+fNm8eff/5ZylWKiIiUPo3cuJGoqCiGDx8OwAMPPEBmZiavvPIKgYGBLFmyhNdff71Q/++++46EhASqVavGpk2b2Ldvn/P6V1991dlv8eLFLFiwALvdzuDBg2nXrl2h14mLi+PHH38kNTWVVq1acfvttztXPIF5e6tu3bpUqVLlrK8jIiLl3y8bDxEW6MPljapZVoNGbtxYixYtOHjwIPXr12fs2LHExcU5n3M4HIwePRpvb28aNGhA5cqViYqKolOnTnTq1MkZTr799ltefvllqlatytGjR+nUqRPr1693vs5vv/1Gu3btSExMpG7dunz44Yd07dq10O7Oc+bM4ZFHHjnr64iISPmXlJbLf6ZvZthXa1iy87BldVg6cnPw4EHGjh3LvHnzyMzMpHnz5jz33HNcccUVZ73u448/5r333iM5OZmWLVvy9ttv07Fjx1Kp0TAMcgrspfLa5xLg43XBq4bsdjt//PEHLVq0oFGjRnTr1o2vv/6ad955B4D58+eTlJTEsGHDqFatGtHR0TRs2NA5cnNSlSpV+OOPP5x7zezevZv//e9/tGvXDsMweOSRR3jkkUd46623ALj33nupV68en3/+OQ899FCxXkdERMo/wzB4YWYcGXk22kSH0bVhuGW1WBpuXnvtNTp16uQcQfj444/p27cv69evp0WLFkVeM2nSJEaNGsW3335L586defPNN7nqqqvYunUrNWvWLPEacwrsxLw4r8Rftzi2vnI1gb7F/yvasWMHw4cPx2azsWrVKtLS0pg9ezZgho5Ro0Yxbtw4fHx8+Prrr+nfvz/Vqp192LBnz56FNtFr0qQJ8fHxACQkJLB7925uueUW5/NhYWH069ePJUuWFAo3Z3sdEREp/+ZsTmL+1mR8vDx488ZWeHlat6WHpbelPv30U+68806io6OJiopizJgxGIbB6tWrz3jNuHHjuOeee7jxxhupWbMmEyZMoFKlSnz88cdlWLlrCgkJoVOnTvTs2ZOPPvqIPXv2OEdGbrzxRgoKCvjll19ITU1l5syZ3H333ed8zX/OnQHw8vJybnR48oiE8PDC6Tw8PJzk5ORiv46IiJRvx7PzeWmWOfXhgR4NaRwZbGk9LjOhOC8vj88//5yAgAB69uxZZJ9jx46xdetWxowZ42zz9PSkZ8+ezmXQJS3Ax4utr1xdKq9dnM99Pv45ofjf/P39ue222/j6669JSEigSpUq9O3b1/n8hdz+io6OBmD//v3UqVPH2b5//35q16593q8nIiLl02uzt3EkM5+GEUGM7NnA6nKsDzfz58/n2muvJT8/n9DQUKZNm0b9+vWL7JuYmAhAREREofaIiAjWrVt3xs+Rl5dHXl6e83F6enqx6/Pw8DivW0Ou7N5776Vdu3bs2LGDO+64o9BtoipVqpCamnper1etWjW6devGe++9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Bw9aXUq5YBgGu3btYvv27eTn55+xX1JSEn/99RdHjx4t9T7u7q+//mL16tVFPpeRkcHatWvZt2/fGa8vqT7u7Pjx46xbt460tLQin7fb7WzatInNmzfjcDhKtY+7stvt7Nq1i/Xr15OamnrGfnv27GHdunVkZWWVeh93sXnz5jP+jABzA9zNmzezadMm7Ha75X3OypCL9v777xsBAQFGs2bNjICAAOP66683cnNzrS7LZX344YdGdHS00ahRI6NRo0ZGeHi4MWnSpEJ9bDabcc899xj+/v5GTEyM4efnZ7z44oul0qci+P777w1PT0+jatWqpz33xRdfGIGBgUaTJk2MSpUqGX379jUyMzNLpY+7ys/PNx588EEjICDAaNeunREdHW289tprhfqsX7/eqFOnjlGzZk2jevXqRoMGDYzNmzeXSh93tXTpUqNu3bpGrVq1jLZt2xoBAQHG3XffbdhsNmef48ePGz179jSCg4ONxo0bG8HBwcZ3331X6HVKqo+7+Prrr402bdoYlStXLvJnhGEYxqZNm4wGDRoYUVFRRs2aNY06deoY69evt6zPuSjcXKRVq1YZHh4exqxZswzDMIyEhASjRo0axujRoy2uzHW9/PLLRkJCgvPxJ598Ynh5eRlbtmxxtr377rtGWFiYsWPHDsMwDGPZsmWGt7e3MXPmzBLv4+52795t1KxZ03jggQdO+8G1adMmw9PT0/j+++8NwzCMlJQUo27dusbDDz9c4n3c2YgRI4zo6Ghj9+7dhmGYofrTTz91Pp+fn2/Ur1/fuOOOOwzDMAyHw2EMHjzYaNq0qWG320u0jzurX7++MWzYMOfXunnzZsPb29v45ptvnH3uvPNOIyYmxjh+/LhhGObPFx8fH+ffTUn2cRfPPvussW7dOmPChAlFhhu73W40bdrUuOmmmwyHw2EYhmHcdtttRv369Y2CgoIy71McCjcX6b777jPatGlTqO355583IiMjLaqo/LHZbIaXl5fx1VdfOdtatWpljBgxolC/K6+80hg4cGCJ93FneXl5RocOHYz/+7//M8aPH3/aD65Ro0YZDRs2LNT2xhtvGKGhoc7/Gy6pPu7qwIEDhqen52mjj//0+++/G0ChX4wbNmwwAGPZsmUl2sedBQcHGx9++GGhtvDwcOOdd94xDMMwsrOzDX9//0LB0m63G5GRkcZLL71Uon3c0ZnCzdKlSw3AiIuLc7bt2LHDAIz58+eXeZ/i0JybixQbG0v79u0LtXXs2JHk5GQSExMtqqp8iY2NxW6307BhQwAKCgrYsmVLke9rbGxsifZxd6NHj6ZevXrccccdRT5/pu/ftLQ09uzZU6J93NXixYtxOBz079+fAwcOsGHDBjIzMwv1iY2NJTQ0lAYNGjjbWrduja+vr/N7saT6uLPXX3+dt99+m2+//Zb58+dz3333ERUVxe233w7Atm3byM3NLfS96OnpSfv27Z3vT0n1qUhiY2Px8/OjefPmzrbGjRsTEhJS6HuzrPoUh8LNRUpNTaVq1aqF2k4+PttkNzFlZWUxfPhwunfvzuWXXw6Yk7PtdnuR7+vJ97Sk+riz3377jalTp/LZZ5+dsU9xvn9Lqo+7OnToECEhITz11FN06dKFYcOGERERwdixY519inp/oPD3Ykn1cWf9+/enfv36PPPMMzz11FP89NNPjBw58rTvtbP9my+pPhVJWX7/ltT3eIU8Fbwk+fj4kJubW6gtJycHAF9fXytKKjdyc3O57rrryM/PZ8qUKXh4eADme3ry+X/Kyclxvqcl1cdd5eXlcccdd/Dwww+zZcsWAPbt24fNZmP58uU0btyYiIiIYn3/llQfd+Xj40N6ejo+Pj7s378fT09P5syZQ//+/enYsSNXXHFFke8PnP79WhJ93FVeXh49e/akd+/ezJs3Dy8vL7Zu3UqnTp3w8vJi+PDh+tlRSsry+7ekvsc1cnOR6tSpQ0JCQqG2hIQEPD09qVWrlkVVub68vDyuu+46Dh48yMKFC4mIiHA+FxoaSlhYWJHva+3atUu0j7sqKCigcePGzJs3j2effZZnn32W2bNnk5WVxbPPPsu6deuAM3//As73qKT6uKu6desCcN999+Hpaf5Iveaaa4iOjmbZsmWA+f4cOXKk0LYHWVlZpKWlFXoPS6KPu4qLi2Pfvn2MGDECLy8vAGJiYujZsyezZs0CzPcHOOu/+ZLqU5HUqVOHY8eOkZ2d7WzLy8vj6NGjhd6zsupTHAo3F+mqq65iwYIFhf4iZs6cSZcuXQgICLCwMtd1Mtjs27ePRYsWUb169dP6XHnllfzyyy/OxzabjdmzZ3PVVVeVeB93FBQUxPLlywt9jBw5ktDQUJYvX07fvn0B8/t36dKlhfZlmTlzJm3btnUODZdUH3fVo0cPfH19C/0izM7O5tixY1SrVg2AK664goKCAubOnevsM2vWLDw9PenVq1eJ9nFXJ9/L+Pj4Qu3x8fHO5+rWrUvDhg2dYQcgMTGRNWvWOP/Nl1SfiqRXr154enry66+/OtvmzJmDzWbjiiuuKPM+xVLsqcdSpPT0dKN+/fpG7969jZkzZxrPPPOM4e3tbSxZssTq0lzWtddeawQHBxtTp041li1b5vw4cOCAs8+mTZuMwMBAY8SIEcasWbOMG264wYiIiDASExNLvE9FUdRqqZycHCMmJsbo1q2bMWPGDOPFF180vLy8jN9++63E+7izMWPGGHXq1DEmTZpk/Prrr0bfvn2N6Oho4+jRo84+DzzwgFG9enVj0qRJxsSJE42qVasao0aNKvQ6JdXHXQ0cONCIjo42Jk6caPz222/GPffcY3h7extr1qxx9pk2bZrh7e1tvPbaa8b06dONjh07Gu3atSu0jLik+riLLVu2GMuWLTMeeeQRIzQ01PkzOSsry9nn8ccfN8LDw42JEycakyZNMiIjI40HH3yw0OuUZZ9z0angJSApKYk33niDzZs3ExkZyciRI+nSpYvVZbmsHj16YLPZTmu/7777nKseADZu3MiECRM4cOAATZo04emnn6ZevXqFrimpPhXB5MmT+fbbbwv9HxHAkSNHGDduHLGxsVStWpURI0bQs2fPUunjzr799lumTp1KQUEBrVu3ZtSoUc4RBTB31v3kk0+YPXs2Hh4eDBgwoNCtrJLs467y8/P5/PPPWbJkCenp6TRo0IAHHniAli1bFuo3b948vvzyS44dO8Yll1zCM888Q1hYWKn0cQfPPPMMK1asOK39m2++cf6sdDgcfP7558yaNQvDMOjXrx8PPPCA8xZhWfc5F4UbERERcSvuH/VFRESkQlG4EREREbeicCMiIiJuReFGRERE3IrCjYiIiLgVhRsRERFxKwo3IiIi4lYUbkSkROzYsYN58+ZZXQZ2u51ly5YxZcoUdu7caXU5ImIBnQouIsW2efNm9u3bR2RkJK1bt8bPz8/53C+//MK3337L1VdfbVl9hmFw5ZVXkpycTKtWrQgODqZx48aW1SMi1lC4EZFzSklJYcCAAezdu5dLLrmEY8eOcejQIV544QXuvvtuAJo2bUqfPn0srXPnzp0sXryYQ4cOERUVZWktImIdhRsROaenn36anJwc9u3b5zzt/siRIyxYsMDZp1GjRvj4+DgfT548+bTX8fT0ZMiQIc7Hu3fvJi4ujsjISNq1a1doJOhM1q1bx/79+4mOjuaSSy5xtu/cudP5ORcsWICPjw/XXXcd/v7+ha7fv38/f/75JwCVKlUiJiaGBg0aFOoTFxdHcnIyXbt2ZeXKlRw5coTBgwezcOFCqlWrRo0aNVi9ejWBgYH06NGDv/76i7///huA8PBwWrduXehcqU2bNpGUlETv3r0LfZ4NGzZw+PDhCnnStEhpUrgRkXOKi4ujc+fOzmAD5i/xm2++2fn437elZsyYUeg11q9fz/79+xkyZAg2m43hw4czZ84cLr30UuLj48nKymLmzJk0a9asyBqys7MZMGAAmzZtokOHDqxfv56mTZvyyy+/EBwczN9//82yZcuctXh6etK3b9/Tws3BgwedtWVkZLBs2TLuuOMOPvjgA2efadOm8c0331CpUiWqVatG9erVGTx4MK+88go2m42EhASaN29O586d6dGjB7GxsSxcuBAwD9Jdt24dn3zyCbfddhtgjnxde+21JCQkEB4e7vw8d911F71791a4ESlp53WGuIhUSCNHjjTCwsKMiRMnGsnJyUX2GT9+vNG6desin9u8ebMRFBRkvPnmm4ZhGMbrr79utGnTxkhPT3f2eeyxx4wuXbqcsYaXX37ZqF27tvPzHz582Khbt64xevRoZ59ly5YZgJGTk1Psr23//v1GaGiosXjxYmfbSy+9ZADGL7/8Uqhv9+7djbCwMOPgwYNnfc2ZM2caISEhzq/P4XAY9evXNyZMmODsExsbawDG9u3bi12riBSPVkuJyDm98cYbDBs2jFGjRhEZGUn9+vV56KGHSEpKOue1qampDBw4kIEDB/LUU08BMHHiRFq3bs28efOYOnUqU6ZMoWrVqvz555/k5uYW+TqTJ09m+PDhREREAObI0YgRI4q8/XUuubm5rFixgmnTprFy5Upq1KjBmjVrCvWpV68e/fv3P+3aQYMGUatWrdPajxw5wsKFC5kyZQqZmZlkZmayfft2ADw8PLj77ruZOHGis/9XX31Fly5daNKkyXnXLyJnp9tSInJOQUFBvP/++0yYMIHNmzezdOlS3nrrLWbPns3mzZsJCgoq8jqbzcaQIUOoUqUKX375pbN93759hIeHM23atEL9Bw8eTHZ29mm3ksCcK1O/fv1CbQ0aNODAgQMYhoGHh0exvpYVK1Zw/fXXEx4eToMGDQgMDOTYsWOkpKQU6nemCclFtX/wwQeMHj2aVq1aERUV5Zx79M/XvOuuu3jppZdYu3YtLVu25Pvvv2f8+PHFqllEzo/CjYgUm5eXF23atKFNmzZceumldOrUiZUrV542UfakJ554gi1btrB27dpCgSUkJITrrruOp59+utifOzw8nNTU1EJtqampVK1atdjBBuCpp57itttu4+2333a2dejQAcMwCvU702v+uz07O5vHH3+cn3/+mWuvvRaAzMxMfvzxx0KvWaNGDa655hq+/vprunfvTn5+fqHJ1SJScnRbSkTOae/evae1nbx9FBYWVuQ1EydO5LPPPuPnn3+mZs2ahZ7r06cPX3/9Nfn5+YXaExISzlhD165dmT59eqG2adOm0bVr1+J8CU5JSUmFbgXt2rWLTZs2nddr/NORI0ew2+2FXvPfI1InDR8+nB9++IFPPvmEIUOGnHHES0QujkZuROScnnnmGVJSUrjiiiuoXbs2+/fv55NPPqFPnz60b9/+tP6JiYk88MADXHPNNezbt499+/YBp5aCjxs3jssvv5xLL72UO+64A29vb5YvX05OTg4zZ84ssob//ve/XHLJJdxwww306dOH+fPns3r1alavXn1eX8t1113HmDFjyMvLo6CggAkTJhAYGHje78lJ0dHRtGvXjjvuuIPhw4eze/duvvrqKzw9T/9/x379+hEYGMiSJUt47bXXLvhzisjZKdyIyDlNmTKFFStW8Pvvv7No0SLCw8P5+OOPGTBgAF5eXkDhTfwMw+C6664DCi8J9/LyYsiQIdSsWZONGzcyadIk1q1bR3BwMDfccAM33HDDGWto0KABGzZs4IsvvmDZsmU0atSIcePGUa9ePWefatWqcdNNNzlrKsqbb75JkyZNWL16NZUqVeKbb75h1apVREdHO/u0aNGiyGt79epF06ZNC7V5eHgwf/58PvzwQ5YsWULNmjVZuXIlr7zyymkjVl5eXvTv358lS5bQpUuXM9YoIhfHw/j3jWYRESkVDoeDBg0aMHLkSJ588kmryxFxWxq5EREpAzNmzGD27NlkZ2dz3333WV2OiFvThGIRkTIwd+5cvLy8+P333wkJCbG6HBG3pttSIiIi4lY0ciMiIiJuReFGRERE3IrCjYiIiLgVhRsRERFxKwo3IiIi4lYUbkRERMStKNyIiIiIW1G4EREREbeicCMiIiJu5f8Bu7GwOhy2u+IAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.plot(sizeofarray, timings)\n", + "plt.xlabel(\"Size of array\")\n", + "plt.ylabel(\"Time(s)\")\n", + "plt.legend([\"Python\", \"Rust\"])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Caution - The rust version differs from the python version by max 1\n", + "\n" + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "interpreter": { + "hash": "a3ed8fb525a8bde66cc7655a5df08d8d0f8699a69b9eb5ccab28dc0a7837eec6" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.13" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "state": { + "00018d66c6ba4416a89b82dfff6b4ce7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_9a819b15c93f48f1ace585cd53454e4d", + "IPY_MODEL_49ddcabcc7e74ea183ef91cdd04f4930", + "IPY_MODEL_b3debfbb74194023aa76ad471799c958" + ], + "layout": "IPY_MODEL_386c2cefc93c4946a14038f8ef5e9365", + "tabbable": null, + "tooltip": null + } + }, + "0014f231b32443b8bfab117ab121d886": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_b025dc1794eb469185ae0f899cddd156", + "max": 299, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f6bb84427fc1406bb599d3c13980a0f7", + "tabbable": null, + "tooltip": null, + "value": 299 + } + }, + "006018e1b5ee4779be2bf67464c6cba1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "00ab537bb0dd4bb2aec926f542d533f7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_1863824d3efd4c0499f8f9d76002f1fa", + "placeholder": "​", + "style": "IPY_MODEL_95e384cd1d254baeb3afbcef94dce794", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  52%" + } + }, + "00c26a01e7784379a19b061b60bd2c74": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_944a3d36f7aa4379b2a983bc7ac55016", + "max": 19, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_513d7d38f80149eb9b668d4dca8b9d40", + "tabbable": null, + "tooltip": null, + "value": 19 + } + }, + "00ddcba768f2455bbd3f6d393cf0e659": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_aa8f243213e14ddb879fc3cfe6c10b03", + "placeholder": "​", + "style": "IPY_MODEL_b4ffb2e0fd1241a0975082f6b1152276", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  76%" + } + }, + "00face300426462b818c3096297f250e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_7fa96e9bc18a4cabbba007218253de43", + "placeholder": "​", + "style": "IPY_MODEL_e5eebb51cad54655ac58f2f9dd88f6b1", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  99%" + } + }, + "01256c047da4493da14ae32a9a0fafb4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "014a73554b5c42c1bea738f40927d8a6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_facca1af79104c58abe31cecbae54578", + "IPY_MODEL_b8f17ab6d50745839aae7f0fd65d6c49", + "IPY_MODEL_3a41e9261135449a83c8c44210e1a03f" + ], + "layout": "IPY_MODEL_a516d3458e0948b3940132c58a0f1f2a", + "tabbable": null, + "tooltip": null + } + }, + "019811250c8c4265a15441274b93401d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_89e0bbabedc847349b39bc75c88c9736", + "max": 699, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_9dee15171132423785e164874c7ef163", + "tabbable": null, + "tooltip": null, + "value": 699 + } + }, + "01ab757ca5da461e8b768a1fa474ffb7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_96d4ed7b866a43998b0fba08c9272608", + "IPY_MODEL_2a307835b23b41eda95384f01f436666", + "IPY_MODEL_854ec3a8d681477bba97f3a245f61b66" + ], + "layout": "IPY_MODEL_900cef3116ac40dbab13f4199ecda0ec", + "tabbable": null, + "tooltip": null + } + }, + "01b7401a95654327b9d2d49a0586cbda": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "01e4f1bc2f974d9ea6fb9184094f7764": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_0f9a16a5e2274dbf99d779537f7746fb", + "IPY_MODEL_77ebf88552fc41d5a5f0c5e1221ae215", + "IPY_MODEL_a2e7b50d04404434a1401dc255ea0d5b" + ], + "layout": "IPY_MODEL_3b9f60b3b1dc4564816deb44b0bffb54", + "tabbable": null, + "tooltip": null + } + }, + "01fecabcf5764c239f2c1da85d1352a2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_4b7a7a6080cd4f03a858101abd7c712e", + "placeholder": "​", + "style": "IPY_MODEL_7d5ea3d0cbb34492b8f76b05274a8590", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:   0%" + } + }, + "0210fd179f4447ebaec52a81b5edbe1a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "0216c0cbb3ac48809a3f7b28b2a3e541": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "0220b9c42e2b448ea030289b9f44cd72": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "02427ba1c88340928ae2a9221dc3bf78": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "02597743ea5f499a8259286469b67915": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "028d57ef98eb42179a81de20d24fd468": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_c0273c527f2342e48179c73f1fb9f7dd", + "placeholder": "​", + "style": "IPY_MODEL_7112463e81b045839ebfbb1667af164e", + "tabbable": null, + "tooltip": null, + "value": " 73/99 [00:00<00:00, 356.74it/s]" + } + }, + "02c59e8839a547448182ebe6c3d275a2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_09871af2e8664e43bfc668ac25809fcb", + "IPY_MODEL_1db0bd5d1b1f464ab79e0c100926b1bd", + "IPY_MODEL_ca4ac9a2f5c643d2b16f01cba836bb86" + ], + "layout": "IPY_MODEL_ee2a530b7e5042b4ad01b4b832eb4e01", + "tabbable": null, + "tooltip": null + } + }, + "02ec68869d9948b58ec365abbc9f4dbc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_be08a34588634a7cbe7e8f9ccd7e921f", + "IPY_MODEL_4a6371bc526b41a78fb0f2e045a8b04a", + "IPY_MODEL_119cd69811a54adb8eeb481810efce1e" + ], + "layout": "IPY_MODEL_aa302e7632234a9a8d3236e54be0fca9", + "tabbable": null, + "tooltip": null + } + }, + "02f3a258b1134729b738ef9faa00f48b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "0308c1dd813b47ddb96246a6136efaec": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "033e9d6c632d49a89dfaab95604e100a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "03665d92883945c1813c348ad9c23bc9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_083726dd0792422e9e148a1fe4d294b7", + "placeholder": "​", + "style": "IPY_MODEL_df35e0940f1649aaa22c9ef23f9f5013", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:   0%" + } + }, + "0370bd03504c4ceb855170abe09521a3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "0372cb8ec37947449d5bd44c977d44a6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "03bf9748f94e40ec90195f6644bca4fa": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "04053217f8dd4271b0d7a7aac21cddde": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "04a8b7dd821745fc914e50f13b873036": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "04bbb697ff2a46c299d60c00158249e0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "04ee0f633cf4430b86644f5e48d8128c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "058433b8a9be48a4a53a01d3d95f4565": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "0585bd3ba4114cd0ba5973af673efc7b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_0f53be30de084c4fa7493e9f5a7077b4", + "placeholder": "​", + "style": "IPY_MODEL_5eacec1c81b5411e8bb2a18375a08d6e", + "tabbable": null, + "tooltip": null, + "value": " 35/69 [00:00<00:00, 346.41it/s]" + } + }, + "05c83253a4cc42c4a26d1fea75412c9f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "05e638b0a4d24f09add74e870206463b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "05f173a45ab24d17b481680442e99912": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "06066fd514d846019d9646ede8235db6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "060c4d711a4a4a2089a8762d28cf28a1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_65d49a6340524bed856032b498447954", + "IPY_MODEL_a02ef4c3d2e543339d9cb7ac47356b0b", + "IPY_MODEL_5da1cbae882749029baaa4c0b450234f" + ], + "layout": "IPY_MODEL_eabd5e7ec89241859936896cdc5169d4", + "tabbable": null, + "tooltip": null + } + }, + "0622939b090f45c3970397baf7a64815": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_369cd22c94c4439db53d36b8b9887e32", + "IPY_MODEL_42413899df1b4546a738aadc58d3e98e", + "IPY_MODEL_8e8859e575224fa8b8c7b6dbc23bc628" + ], + "layout": "IPY_MODEL_b9ecaf3c140c4f9ba60c54de797c8773", + "tabbable": null, + "tooltip": null + } + }, + "063ac2284c704b9280d8c4dba8410e8f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0643c852f8164b8a950b8438a28531bc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "06c542b4f87b407499fa3333e2de571b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_825c17e5f75f469aa183d288ff12b41f", + "placeholder": "​", + "style": "IPY_MODEL_1f293337097945b8b6d9af42553f4171", + "tabbable": null, + "tooltip": null, + "value": " 36/69 [00:00<00:00, 351.14it/s]" + } + }, + "06e0d6c5ba154c32b21d3708c8e41a89": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "078d63a64ec741818647072cca339641": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "07ce408250e744bd89d3fe9ca3d2da11": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "07f5cda023544b3bbaa36c10d7e3c242": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "07fb3573ab054b70832e2fc617b70e32": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "083726dd0792422e9e148a1fe4d294b7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "083d597e30d34df1ad26947634d26f64": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_ca63e6ec056c4aa481e9895ffec8aece", + "placeholder": "​", + "style": "IPY_MODEL_269418aec0564953b87e2a3737815ff3", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  74%" + } + }, + "0871d638a80a48bfae0a624154af9132": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_e1df6f2066f34e3587170990416186bc", + "placeholder": "​", + "style": "IPY_MODEL_4d2ac87224c845d2b404995d80615a9c", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  73%" + } + }, + "087f9233505e4f38b5e276a8fb744d62": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "0887380ca11d47c5bd346ff600ae5ba9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "08b73cfbb8b243a9aee3c9543daa634d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_05c83253a4cc42c4a26d1fea75412c9f", + "max": 399, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_63e0cc98313a4238a7b905ab4956df34", + "tabbable": null, + "tooltip": null, + "value": 399 + } + }, + "08b77c7e63524316b42c0781a8840904": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "08d49b42f5ad4d9591b07f2edfbc7609": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_17d1b2af161546078819bbf8dba745ed", + "placeholder": "​", + "style": "IPY_MODEL_3f44772075a84396b50d6f348e95da0f", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  91%" + } + }, + "08f2eb43ec5744e4a0cf47e083e8d02c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "093ef839989f4971a4fbf57157b4144c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_9c0e7ff131724b9ab99421ec5b86189f", + "placeholder": "​", + "style": "IPY_MODEL_b3c49f7322214952855810016b5872bd", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  98%" + } + }, + "09871af2e8664e43bfc668ac25809fcb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_694b01eb169b48dab92ee4b39d34f7e4", + "placeholder": "​", + "style": "IPY_MODEL_a6945edce8d140bfa82de7cfa227ae82", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:   0%" + } + }, + "09bc7553943a451db3d1e7c4c0167763": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "09ee7ad2811c4a4e9cb196d391cb0748": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0a21bf172fa84989a24711c9887c8560": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_bac21c5ee3234e99b8741d14d56a2b36", + "placeholder": "​", + "style": "IPY_MODEL_3d49d623fdf94fb59e5779765eeb932a", + "tabbable": null, + "tooltip": null, + "value": " 35/69 [00:00<00:00, 349.65it/s]" + } + }, + "0a31f5c3e3b94f26a9bdd7f05f3a0b4d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "0b115d600d7f42c3ad2ceb02cfa2ab0d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_3b0c9b2f34fa46bc8f98a35807f852f3", + "max": 9, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_64ca28fa8b57488d87517b5275f838ff", + "tabbable": null, + "tooltip": null, + "value": 9 + } + }, + "0b13a5d3a66f497a8f64b903a3d6dcf1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0b3645ef51674ceeb20cb60cfb3687c4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "0b7ab4273a604b0d9948178b5eed6864": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_d772f36f1ef44ba9953b55f6e134c017", + "placeholder": "​", + "style": "IPY_MODEL_c22eb2b7dc84430ca844699b9b3bec57", + "tabbable": null, + "tooltip": null, + "value": " 295/299 [00:00<00:00, 348.60it/s]" + } + }, + "0b7d4ed5765e4aca8bb6141cc943eed9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f4cff59a64ea49b0ba529be7751669f5", + "placeholder": "​", + "style": "IPY_MODEL_8100c3c3f3e549d39c669afdf6656465", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  99%" + } + }, + "0b80afcbf3674e3a9ea902a7c2d8f1c9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "0bae579ff56d432485df4d966054ba63": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0c8f156a0dee46a0aee4dda2988cc23a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_603a889473154bf0be31c2f6252c5ad3", + "max": 799, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_75122864ec6847fd9247373a01af451f", + "tabbable": null, + "tooltip": null, + "value": 799 + } + }, + "0cf89b4042ee44f89d3e53c4e6671756": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_9366946ef7e14c51ba46def7c98e074d", + "max": 79, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_7285f3cbf7c84a0986d0d5a459ada8c2", + "tabbable": null, + "tooltip": null, + "value": 79 + } + }, + "0d0413dff8834c16882a4ff65642f2f8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0d450d0fcddf475eb9a4055a9e08ae1a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_b5e89d421ae34cc6902ea09438556b0d", + "max": 699, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_76d9e0ea8bd14332802ebb8ba9f2067b", + "tabbable": null, + "tooltip": null, + "value": 699 + } + }, + "0d5f5140a82642bda3459bcff9480776": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "0d6c5c8a761b4d42896494df7083ed51": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_e3f58d2864e64688a129cd315423e642", + "IPY_MODEL_a9e9d589b357412aa16caf06badfd984", + "IPY_MODEL_328695d425cb424993c5f98bb01264cb" + ], + "layout": "IPY_MODEL_62b49871b3f344e09b874af7c381742e", + "tabbable": null, + "tooltip": null + } + }, + "0d753255846948a2bb93aec74c8bc444": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_587990fb11284746920ea8fe9badca6b", + "max": 199, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_04053217f8dd4271b0d7a7aac21cddde", + "tabbable": null, + "tooltip": null, + "value": 199 + } + }, + "0d8c517392054f02957a8e34aa46ef46": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0dd68639fb61466d8c4e4dd16f34d07c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0e06f27415cb455ab610931fd9497cf7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_b0fee13778044f908c58f4c29db9ddb6", + "placeholder": "​", + "style": "IPY_MODEL_5fbbefe59a684a8f9bf4da79f03fdb37", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  92%" + } + }, + "0e418415487743fc92d75f83c3f16a4b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0ef57969f17642eeb71d761870343c1b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0f53be30de084c4fa7493e9f5a7077b4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0f638ebe107040cf9a64cbf06516ace7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_c19be2c73b2549bf83276ad2f7fa21df", + "placeholder": "​", + "style": "IPY_MODEL_47d9d90e096b4c29b6a037e99b439f1f", + "tabbable": null, + "tooltip": null, + "value": " 368/399 [00:01<00:00, 360.80it/s]" + } + }, + "0f695329870540f3bcf2fb1cb665d34d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "0f7eb2d470e9485da4f1115acc2f2fab": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_9f2d1b1364024a939cea0045a8e558d3", + "placeholder": "​", + "style": "IPY_MODEL_d826a2c7e5b04783ba7fb089403f8ddb", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:   0%" + } + }, + "0f80f42d60484e3f8df239c941ebf463": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0f9a16a5e2274dbf99d779537f7746fb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_5fd81d37c8c148f4a1b85b04c508a3e3", + "placeholder": "​", + "style": "IPY_MODEL_ded69506bd014ce6a228da04832b18bd", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  90%" + } + }, + "0fb58817bee248f2887227e04a10e2c5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "100854f2e558489b8c0777e930f1aa82": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "1008e4d62ad6437589931a2f33acb1b3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "103a7a1aa9094d1bb78c6b9ec7ade33c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f7ae1100dbdc4027a186f8e8e97f9732", + "max": 999, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_0372cb8ec37947449d5bd44c977d44a6", + "tabbable": null, + "tooltip": null, + "value": 999 + } + }, + "10599ad6cce34f23abe77b6a4d3056d9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1078e72727fb40578ac947e90578782d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "10a5b7dd74c843199aabd953adc53c8a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "1109ba3c8a164801a60f1d6eef1f9f56": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "1136f9c98e2e4cd4820cb10e0b0e5757": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "11448f49a2b14f7fad4a569ab23b2225": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "1149599e5af94bd5811ba75eb36bec30": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_cbd01f9e92e04f2fa3a0add1d4474ff9", + "placeholder": "​", + "style": "IPY_MODEL_fcf1eaa6c2e546b4a57fa17a69a60847", + "tabbable": null, + "tooltip": null, + "value": " 36/39 [00:00<00:00, 351.59it/s]" + } + }, + "1151fb176277438b91d2e5b44a2ac6ba": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_2e602e5c4b1f4d32aa4dfce94be855f8", + "placeholder": "​", + "style": "IPY_MODEL_c43f7932862a44eabb362bb93a935920", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  99%" + } + }, + "119cd69811a54adb8eeb481810efce1e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f4dc3d9672c44f58bd984593ad00e3fc", + "placeholder": "​", + "style": "IPY_MODEL_75a22ce6730e4173bd312b9fb01aeff5", + "tabbable": null, + "tooltip": null, + "value": " 36/49 [00:00<00:00, 356.60it/s]" + } + }, + "11f5024b723e44f3b8adceb04984fae2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "1202fd5ef10741d4930d50263089b513": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "120dcd4a339f4a129d800208a181a8c1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "121d5315dfbd4cb98ca39735e43db5eb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_8c00761acac24a84ac935fbb4403bb1e", + "IPY_MODEL_ca46d5b4b9f54df79bcb2845bed3aca8", + "IPY_MODEL_3f15d96b41f544c483655ee1e4a3220c" + ], + "layout": "IPY_MODEL_39fe1afbc84a42879db56c483fe4d8a1", + "tabbable": null, + "tooltip": null + } + }, + "1247e21db9ee46fe8068f9480678cf77": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_d3898e3187bf4657b9e4fd9afa7ccc5a", + "max": 199, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f4857f5d0e7a4fbfb835cce2051fdd90", + "tabbable": null, + "tooltip": null, + "value": 199 + } + }, + "1284815ffa324bd9b5876b59a86c67f4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_078d63a64ec741818647072cca339641", + "placeholder": "​", + "style": "IPY_MODEL_2d0079086968463384aa65ecaa9ca32d", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:   0%" + } + }, + "12a8f7431a7b4a1884f2f8afce587b78": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_601a678eabc2447a810126d2ff6af171", + "placeholder": "​", + "style": "IPY_MODEL_a953a66662c24f4aab5308e30a2e8dcc", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  95%" + } + }, + "12ae94c01a8d4871b23d5b6cba01d4e6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "12f1a26e3cd74367809e13eb5c659826": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "130eecf034c249e6a7fd2db05201896b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "13841302755946aa9b5b624933344cae": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_9b23c6d7cc324d56a100a882f6266c82", + "placeholder": "​", + "style": "IPY_MODEL_aa0eaa941c64493e84fa94ad7ce9aaf1", + "tabbable": null, + "tooltip": null, + "value": " 35/49 [00:00<00:00, 347.53it/s]" + } + }, + "13a0882ac5144028a742e6525c0d687e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_797d8fb72ab043e4a8939caa006de9e2", + "max": 899, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_47192803c7964534a1f1018460fbd86a", + "tabbable": null, + "tooltip": null, + "value": 899 + } + }, + "13bd90422b144d9bb98ecbb8629e43eb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "13c1e395326b4b698d4f4b465da7c537": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "13e40c06735540a48095222abd7a3f8e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "13f2f6e445544699b81eefc61eadc7b9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "1413473634414eb9b9fded83b8e3f594": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "14143480bc66483c9a574f4f2985b558": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_1bbdf8435d114a389e8795dd05e5a681", + "IPY_MODEL_48fa604014a34a80a66f1f961d5956e8", + "IPY_MODEL_38ca9c8f2c3c4b4e97985bdaaa98446c" + ], + "layout": "IPY_MODEL_583ae5fa865e44e58095f6d1e0653cda", + "tabbable": null, + "tooltip": null + } + }, + "1465ca55900843ceb59658b2b6f733a6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "146dde9d95b847e68de4240f3d95b4f2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "14b540bbd78845488fdca7e097b222b5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_7607e3b62c5e46fb961ae68e2cc7996c", + "placeholder": "​", + "style": "IPY_MODEL_62d9f795efd74b41a79a9ea08c8d6127", + "tabbable": null, + "tooltip": null, + "value": " 589/599 [00:01<00:00, 360.32it/s]" + } + }, + "14cff2d7cb764a50bdf85f175e99979f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "14d42043c88d4a739d89132f9e39200e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "14d7440977dd4a0a8f665aa4c814c013": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "152447a4782f46e8be1641ffe1780f49": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "1524e9bdcbc74c67a7d05275006c5905": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_b06bf1c41d6b425e9a6c284a9e470709", + "IPY_MODEL_2858402c291b4798b91377159ad05e62", + "IPY_MODEL_586d1116b5504762aae83152ed41c17d" + ], + "layout": "IPY_MODEL_232a5631630040eb9f978f62f07181cb", + "tabbable": null, + "tooltip": null + } + }, + "1526d902ee03455a9c0474791ac1f234": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_6fd53aa9c116481289bbac5e00168f12", + "placeholder": "​", + "style": "IPY_MODEL_58e56b80b55a47dfa5df724a1b285c99", + "tabbable": null, + "tooltip": null, + "value": " 694/699 [00:01<00:00, 359.83it/s]" + } + }, + "15345c59a009437c88d924df885b75bf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_4a3426a7691b4e89ad7d104a9614e345", + "IPY_MODEL_68578e172c194160a613d16c6a6b5eaf", + "IPY_MODEL_fdf507c4776e4a4c95efa21a8b0d0eeb" + ], + "layout": "IPY_MODEL_e11011e3cbcd44cb98785d093cfc181a", + "tabbable": null, + "tooltip": null + } + }, + "1546f73e54af4e55a1d94bd8dfeb9976": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1557d81245854706ae3e7d470f0d33d1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_76c042875c5b4193a77e8e56bb65e422", + "placeholder": "​", + "style": "IPY_MODEL_26d069772291427cba877d124b98e4bb", + "tabbable": null, + "tooltip": null, + "value": " 73/99 [00:00<00:00, 362.58it/s]" + } + }, + "15cfc79fc9d94459bdd5e1ce0c72415e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "15d20b7f73704e788ca23d835b6e4d8f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_7e56697f340e4fa4bd204f3e7b3f8ff2", + "placeholder": "​", + "style": "IPY_MODEL_7b78816f860644e8b4460f40366e8b8d", + "tabbable": null, + "tooltip": null, + "value": " 699/699 [00:01<00:00, 359.25it/s]" + } + }, + "15f3688de22c4a81b5e4da26b0174867": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "16023c7981a4428e97185e80eb5137a6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_3c5c0356f3554558ba8674e036be7ea6", + "placeholder": "​", + "style": "IPY_MODEL_92c59c6ccfbe445392b1c5134017e1f7", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  92%" + } + }, + "16096e81cf354cf58b0cd9e80a944d70": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_cba998b96e4f48468e6eea4fcae8c1ad", + "max": 499, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_a5c0f436502a48e9b890fbb59edd5a27", + "tabbable": null, + "tooltip": null, + "value": 499 + } + }, + "1617bbb5fdc14bd1ab4eaaeb4484e623": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "166610b9a0504e9bbd32e9a1554c15da": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "169b4846cd464296a25a2352c438bfa1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "16b8d3a44e474e1b8757f409b2a31546": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "1730ffb71cfa42f0a45291929d0e52f7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "174dffa815ff4073a25e33329bc66d36": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_8f4e91bbf0bb4777ab17b2e196806154", + "placeholder": "​", + "style": "IPY_MODEL_7fb78a276ec649c3ab4fb1157baa8da0", + "tabbable": null, + "tooltip": null, + "value": " 272/299 [00:00<00:00, 356.44it/s]" + } + }, + "1755084894eb4a85aff831213eda8f12": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "17b7aae4d6944625be91605250dc7176": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_c20c394b7972432099e1ac5f2c67b11a", + "placeholder": "​", + "style": "IPY_MODEL_ad9d483153824272b416be214c50d020", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  92%" + } + }, + "17c0e221ace64612a2cdaf899887c83d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_39997fa549ce462cbf90e4790babef6b", + "placeholder": "​", + "style": "IPY_MODEL_30732c8f35de4e359349cbed4fe2c042", + "tabbable": null, + "tooltip": null, + "value": " 481/499 [00:01<00:00, 365.94it/s]" + } + }, + "17d1b2af161546078819bbf8dba745ed": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "182311da489b4aeab46ef8374b1972cd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "183eb543201c45c3990047737f88b3b3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_a6f796ff46704ebb9ff313c51baa4d61", + "placeholder": "​", + "style": "IPY_MODEL_a60d6a4d11ce4e638dbda3cb0668d5f7", + "tabbable": null, + "tooltip": null, + "value": " 294/299 [00:00<00:00, 362.74it/s]" + } + }, + "1863824d3efd4c0499f8f9d76002f1fa": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "188027fdf4ed4ef09dad099b06c01ae6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "189893f87cfe49ff801a805a0ae06f07": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "19106aef732d420bad5cb5905590fd70": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1988658a4be743acae0c7010c4ccb6b9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "19956e1d85644868acd194f5b2b35523": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_3476d657b64243438e5c3e4c93524896", + "IPY_MODEL_4f06e14bc60d4262b4cd806c6a30ef5c", + "IPY_MODEL_71cecd7b751d43969aca71d9db9b5767" + ], + "layout": "IPY_MODEL_4fa0161d047048f7b95ed7972a2892af", + "tabbable": null, + "tooltip": null + } + }, + "19e460311904475d8fe577824b5c9f6b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_3af546af79cc471b890ac3d935300b94", + "max": 39, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_859646c302f64c5cb7fb6d9479b0f0e3", + "tabbable": null, + "tooltip": null, + "value": 39 + } + }, + "1a42b6e31ef940d6af68a8240c3ecadc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "1a4e03a2097f45d49dc3cfacffdcdcc9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "1a9864ef79c246aab32ef7d3d2fe38ef": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_9a862b46ccd640bf8256c253221cfda2", + "max": 799, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_e4401709c0c347a3881f5199c38186a9", + "tabbable": null, + "tooltip": null, + "value": 799 + } + }, + "1abd526f7a964f82b5169926d97b7128": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "1ad4976a6a3545328728e43198f3c4d4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1b03481b32e143f6b7020925f5c4ff8f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1b15cd7aafa8471d922c367abaad9d55": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1b2a4aeb9f9a427a800dbdcfde9d35f2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "1b4ec66b20774352bdff7b2005092546": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1b532744185242edb76ed6f27d13a381": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "1b8d05386e7942a9beec9e6f906f538d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1b92b86db8634e28ac634759ce47d41f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_c8ff767e6a6d4b9cb1e2117558a1c911", + "IPY_MODEL_c28aac1883074095bcd1a4116cf4497e", + "IPY_MODEL_81da6dc3eb504ee29431dced068f667f" + ], + "layout": "IPY_MODEL_d0b41e8c5b6a4f23b6c104c307736114", + "tabbable": null, + "tooltip": null + } + }, + "1babe0b8e7e34e458bb5ab7df6d0d96f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "1bac9679c59f4c75b75f4a200f495d0a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_b77b87c613dd4902b32d29daa1d1bdde", + "placeholder": "​", + "style": "IPY_MODEL_2583e07b174248cda40e6597533468cf", + "tabbable": null, + "tooltip": null, + "value": " 73/99 [00:00<00:00, 359.61it/s]" + } + }, + "1bbdf8435d114a389e8795dd05e5a681": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_8aa5c35d34274ec887dc7cec48e11e23", + "placeholder": "​", + "style": "IPY_MODEL_15cfc79fc9d94459bdd5e1ce0c72415e", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  73%" + } + }, + "1bc3b9a7b7c54a349760b5fecf20019c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "1bd4c0a21e4b4f1aab5c09636e30c61a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1c05050d1bc64b3a96c8e0270d11911c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_bdade6cbc64c40968082e0174e5efa1c", + "placeholder": "​", + "style": "IPY_MODEL_8aedc79dce4e45da9ce07692a4a5cec8", + "tabbable": null, + "tooltip": null, + "value": " 663/699 [00:01<00:00, 314.26it/s]" + } + }, + "1c12006a3dc14f73b4cc0284d4e1a902": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "1c89e4f87a5b4c1f8bf5d5e6f2dbd31a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1c9cd3297f6e48dfb0dce6261805b40d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_e8f243a6103b46e3b7a8bd38428abc7d", + "IPY_MODEL_bcdd6c3d31de4273ae026df54e0c5291", + "IPY_MODEL_b7542732ee5545e09341723cdbeda907" + ], + "layout": "IPY_MODEL_db6e25f9010d4810ae6fd7e7e919c5eb", + "tabbable": null, + "tooltip": null + } + }, + "1c9d3fe672cd44f2b68eb053d2f69ace": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_4a23ccd933d34b8ba087596923059706", + "max": 699, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_69f4350a7c844c6a82b533745ee31e8a", + "tabbable": null, + "tooltip": null, + "value": 699 + } + }, + "1ce013f55b0d45d78b3293578964e2de": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1d3d8307b76c40da956fb3eb6d0b20c3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "1db0bd5d1b1f464ab79e0c100926b1bd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_83bf380dc89945bdb86fd7e917d3f7c5", + "max": 19, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_3edb1763c62046b581289258d59fc1f4", + "tabbable": null, + "tooltip": null, + "value": 19 + } + }, + "1db4a1ec464b474882ea4462a65a0207": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "1e37aafd22f6451b886162c9c47f6df1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_84a197ce9f1448f8a167692036264ff0", + "IPY_MODEL_cc84ab39a0134034830163b78cf9dff0", + "IPY_MODEL_5023d09e48bd4a68aca352e9900ccfcc" + ], + "layout": "IPY_MODEL_c616b7e586454f82b9b2be849f4e26dd", + "tabbable": null, + "tooltip": null + } + }, + "1e765df6b20b49f3a8c15b4f31214cb1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_1f7783ae7e1c432a8e7fa5b48fccfc20", + "placeholder": "​", + "style": "IPY_MODEL_afcb4005b3784a9e8adfeae0c6685e8d", + "tabbable": null, + "tooltip": null, + "value": " 884/899 [00:02<00:00, 359.85it/s]" + } + }, + "1e8a516b8ab148e9af3de02174149338": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_b7fb937234034362b0c0a03c1f3a3bd1", + "placeholder": "​", + "style": "IPY_MODEL_db0ef9660b694b2aab5c9bcb64831229", + "tabbable": null, + "tooltip": null, + "value": " 768/799 [00:02<00:00, 357.98it/s]" + } + }, + "1eae0ebf45054ef199fc5305f17f07a4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "1eb25e3cd76747948288dbd807bf831e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "1f293337097945b8b6d9af42553f4171": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "1f75704140cc422bb31491822c43c016": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_09ee7ad2811c4a4e9cb196d391cb0748", + "max": 99, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_af653c02ca594f969765d485cc49e0c8", + "tabbable": null, + "tooltip": null, + "value": 99 + } + }, + "1f7783ae7e1c432a8e7fa5b48fccfc20": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1f94c34da1234a3796318665b1a050ed": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f2ad6c21a37541efbd32362e2ac7397a", + "placeholder": "​", + "style": "IPY_MODEL_4c39db267de8446ba596c8f802013a4c", + "tabbable": null, + "tooltip": null, + "value": " 295/299 [00:00<00:00, 361.65it/s]" + } + }, + "1fbf5a76528d4ab5b928e74966a5da23": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "203279656d204c4d8ba4fd094ac4b3f4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "204a680037754d4aa072f9cce0bc132a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_9f9c5e57870b401995bea4fff59d0188", + "placeholder": "​", + "style": "IPY_MODEL_2ea75374289e4366bc7bff5292d23841", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  71%" + } + }, + "20c91c903fe347b2a9ca629d5ca99183": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "20d78db71ee24fa79cd681ddc67f28c3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "20f126d0e20f4d94b8112e0b5e42fba8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_af62ea5119c54f51920c5598dfa83ebd", + "max": 29, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_1eb25e3cd76747948288dbd807bf831e", + "tabbable": null, + "tooltip": null, + "value": 29 + } + }, + "2165df5337e048db8b0324b7733fa418": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "21e65a968512456b825ba37edbb11d35": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "226a3cbecb0542a3b5d7d303b519b29b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "231757bf988b424d9cbfe5d97da99630": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "232a5631630040eb9f978f62f07181cb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "233985b5ee4d4e259db25ea8b2965a79": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_5ce7b8aa000543458fa61abbcb29ff3f", + "max": 599, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_54cb0d0cf7664fdcbc4fa0bf2525e342", + "tabbable": null, + "tooltip": null, + "value": 599 + } + }, + "238223f9e57145a8bf37fb06676869b8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "2387eb6414e042ec94b6d8456cb0661b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "23a2aff8404b494d91b1de589f488d3d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_006018e1b5ee4779be2bf67464c6cba1", + "max": 89, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_2e0177472a82483bbd5cc06041c2f822", + "tabbable": null, + "tooltip": null, + "value": 89 + } + }, + "23af2efd63c34545bff4f28479e9ddf9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "23b47b57d93947fd8c2644f14c39645b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "23b7b638353145eeb23230747a0e18c9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "23bcddffb1a64b519dcf42fde50772fa": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "23cb62817a984f6bbecbbb6157871411": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_14cff2d7cb764a50bdf85f175e99979f", + "placeholder": "​", + "style": "IPY_MODEL_df73d65092e140f29f7d202808ae0960", + "tabbable": null, + "tooltip": null, + "value": " 35/59 [00:00<00:00, 349.19it/s]" + } + }, + "23cc90104e2649a0986b899e3974e9bc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "2440e333c75041c1b28a9ad90238cca4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "244d80f7d02b4ffabfbe6199ecb7f500": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "245183e44125490ea7b8b868149793b9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "246331bf94644fb7a7bcffac32433bbb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "24d6ba13377444a3bafa63f99d322c2f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f6ccac5711bf49f3983e35d3b4814e87", + "placeholder": "​", + "style": "IPY_MODEL_1eae0ebf45054ef199fc5305f17f07a4", + "tabbable": null, + "tooltip": null, + "value": " 73/99 [00:00<00:00, 359.33it/s]" + } + }, + "25177168c13e4aa69af0438a4072f66d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "253847aa90ac489a9871939127d1d593": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "2583e07b174248cda40e6597533468cf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "2647cebcc2fb41369c60271f6d492e2b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "269418aec0564953b87e2a3737815ff3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "26d069772291427cba877d124b98e4bb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "26f5d57c9ab449f19e9c06d29906ef76": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "274d5383ac43426bb2a3ad46a6143774": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "275a557e774148eea3ebb9a83d8df3d2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "27632bd107564e7d9ed4a16a3855b61c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "276d413b7cb74825a4e97ab60cce062d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_fae700a28be54601897911ae558e203c", + "placeholder": "​", + "style": "IPY_MODEL_cb8319dbbdda4d9b87ca200f04c8831c", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  96%" + } + }, + "2786fcf242d247699682b01adce9c3d6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "278a6ffa1b8c4cf386e19e0bddb382ff": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_1284815ffa324bd9b5876b59a86c67f4", + "IPY_MODEL_b2eca7b5574a4b3db78272c2c6b6cc04", + "IPY_MODEL_aa323f9226bb44f991ad2e5c97ce70cf" + ], + "layout": "IPY_MODEL_152447a4782f46e8be1641ffe1780f49", + "tabbable": null, + "tooltip": null + } + }, + "27a5f87081fb426db2eabef1c274afad": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "27b727ac94344198b60b6c8f35f71a94": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f941248bd1ef4a09a9452d3c876b400f", + "max": 399, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_1babe0b8e7e34e458bb5ab7df6d0d96f", + "tabbable": null, + "tooltip": null, + "value": 399 + } + }, + "2846bfb4a0a24a8b9693f1e4234d68a7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "284d8701b3b94d8e80ffedc6b3956dba": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "2858402c291b4798b91377159ad05e62": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_bee09ea681244bfdb1e17964fd86ce3b", + "max": 29, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_7fa232374d634f96b82babb9aa41da4a", + "tabbable": null, + "tooltip": null, + "value": 29 + } + }, + "28890c573bec4fe0b2c62b7144211780": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "290011cbdf5b497ab3ab81d503689bdf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_6eef21ee72594bdfaadb724457930c01", + "placeholder": "​", + "style": "IPY_MODEL_3bd192336448457b84577abb5a13a391", + "tabbable": null, + "tooltip": null, + "value": " 73/79 [00:00<00:00, 358.49it/s]" + } + }, + "2911b334e7c44fce9a54641247b46423": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "2959fc1bb680465ea20c81966066de34": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_e91a10aca0704569bb19ef67cec91fa5", + "max": 59, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_3a38659984e64a7abf6716e2c89ffc09", + "tabbable": null, + "tooltip": null, + "value": 59 + } + }, + "295c626c6e4347e8b91c309531cb9b91": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "295c6767a5784dc29346fe8d13a65c5d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "298efbdb99d44d269ef573678898bc84": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_41a366de5d25442993f37793a3ebd386", + "placeholder": "​", + "style": "IPY_MODEL_7072d198ccfc44eca813f458a163c6ec", + "tabbable": null, + "tooltip": null, + "value": " 0/19 [00:00<?, ?it/s]" + } + }, + "29e24014d7fe4d3197d1c0a9ff16eb6b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_69e8bd2b865545d0b5b015c4d2eb5f01", + "IPY_MODEL_79db4b3171064ff3978cfe64d3d2fa37", + "IPY_MODEL_94d3ef450eb546e1a20802055ca484a4" + ], + "layout": "IPY_MODEL_e1058597caa7456f91b9a0374fbcbb9f", + "tabbable": null, + "tooltip": null + } + }, + "2a2a9e9125f0428b93fbd2b8de7774a3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "2a307835b23b41eda95384f01f436666": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_7ceb7f50be444f489587261eccc85900", + "max": 999, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_edece67fcf5d4de686a9eca080f9db0e", + "tabbable": null, + "tooltip": null, + "value": 999 + } + }, + "2af39222078242b4b6f1f65b0fd6dd38": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "2bc60aaa3620476ea0f5690bb12dbee5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "2bf53299cd6148dcbfbeec2fe341b2f2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2c04fe33220c4c43b72455c79f25c61a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_5f626046347e4560bd0b2c7d2b12b80d", + "IPY_MODEL_ff8f54328c1644e3809a1284e38aa37a", + "IPY_MODEL_47fdcd00aca04f539b5744cfbceafde6" + ], + "layout": "IPY_MODEL_c095ede63d58457b832ab2769da77fd3", + "tabbable": null, + "tooltip": null + } + }, + "2c3efed89a724685b68bd2de27ed7c5f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_acb325923fac40dab9ad6e4ba696e3bb", + "placeholder": "​", + "style": "IPY_MODEL_7c3d29e225e24d408c436977640994a3", + "tabbable": null, + "tooltip": null, + "value": " 478/499 [00:01<00:00, 362.15it/s]" + } + }, + "2c4042132ebe4f18b90cc76d94ebb5d6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_b9f591c574624533858c0a2ac3c595bc", + "placeholder": "​", + "style": "IPY_MODEL_fb0537663fb14f6880ada7ecb8c32661", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:   0%" + } + }, + "2c57f3d785fa486588b9afc05eebbcb1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f12fad9e7f9d4bc5b1a5ce563e159fd6", + "placeholder": "​", + "style": "IPY_MODEL_eafc334345514b188ef19bc19745ad65", + "tabbable": null, + "tooltip": null, + "value": " 73/79 [00:00<00:00, 358.31it/s]" + } + }, + "2c9cc2fafd414443a493cc1e79d7fa22": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2cd3ec7ecf5e4e54a8c3b766efd4d32d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "2d0079086968463384aa65ecaa9ca32d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "2d39479f14544b8c96076af536cce951": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "2d4107fde9bb45f8899567b6ce72c654": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_f318ac7b52f142da9224ad61eca47a08", + "IPY_MODEL_94bf5dfb8af74d4daa2c9bee5d7c3d5e", + "IPY_MODEL_4fd9a0546547485c9d1da2d4db011130" + ], + "layout": "IPY_MODEL_5e2bad298cf94edebfcee17f9ae175b5", + "tabbable": null, + "tooltip": null + } + }, + "2d8cc8de11c8466f825698ae268bf35d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "2dbfe8df36f940e6a71e17fa76d83bdb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "2dc876b11d8a48388110a94a30f05ae9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_55fcb49df3464631beee1d02c538bf09", + "max": 499, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_25177168c13e4aa69af0438a4072f66d", + "tabbable": null, + "tooltip": null, + "value": 499 + } + }, + "2dd25c677b4a4b7c9e28fb07ac22afa8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2de6d80caf2743c3869b7f67608fe533": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "2e0177472a82483bbd5cc06041c2f822": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "2e2b910756ec4e7780d4c7a09d3c699c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2e2ea624b9754e9eab65970f6234780b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_fd34101632d74ecfa8afefeb68ddd5e0", + "placeholder": "​", + "style": "IPY_MODEL_c428c7b2a924486191a6fdf6df696810", + "tabbable": null, + "tooltip": null, + "value": " 37/49 [00:00<00:00, 360.86it/s]" + } + }, + "2e602e5c4b1f4d32aa4dfce94be855f8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2e70285b0b414daea22e70b78302017d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "2e731324be0b4d16b8b6b4f9ebf21650": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_7a64f216006e44bc9f30528179470a56", + "placeholder": "​", + "style": "IPY_MODEL_15f3688de22c4a81b5e4da26b0174867", + "tabbable": null, + "tooltip": null, + "value": " 0/9 [00:00<?, ?it/s]" + } + }, + "2e9c800b2f9a45bcbf61734fea27fc71": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_cb0f6075ac614de19e87d0c4d55a5ecb", + "max": 899, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_3547876e9b2443b1870291380914aa94", + "tabbable": null, + "tooltip": null, + "value": 899 + } + }, + "2ea75374289e4366bc7bff5292d23841": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "2eb17b69ff5e47ebae91df68518a54d9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2ef2712eb11743d79fd85dbb0964bc3d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "2f2bbd8357da451091dbc30a78476caa": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2f9b9ec5691342d0a22d0458ff734240": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "2fd359be9a0342a4afc668ed1fc7fe14": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2fec5a0c7de7499b96b252c7429cce70": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "3003cebab11f4fe98273b3abf4e2fec8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "301771feabe84c3d911acccbcd74f07f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "301b81d03e37420d8a1d12568eceb284": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_063ac2284c704b9280d8c4dba8410e8f", + "placeholder": "​", + "style": "IPY_MODEL_4e09c6f855624f92a7b49369ae31bbf8", + "tabbable": null, + "tooltip": null, + "value": " 0/9 [00:00<?, ?it/s]" + } + }, + "303cad02f2c8469e95efd4070437e40e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_c677aa821c394a3da2c9a8d555633c37", + "IPY_MODEL_7291352398564cb89a8fa097aa96e49e", + "IPY_MODEL_ff9c06f0a705471185d1649383026c93" + ], + "layout": "IPY_MODEL_36d775385a074e3881ef559d1a73b8f9", + "tabbable": null, + "tooltip": null + } + }, + "30732c8f35de4e359349cbed4fe2c042": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "3073387c75ca4ddea20a8563bdcb897d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "307bd8d7a31549ff8cff744c616079df": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_ebaf078a9cd844d6aae78de6910bb6be", + "placeholder": "​", + "style": "IPY_MODEL_a7c49a2242de43b08eb9b76b6853d5f4", + "tabbable": null, + "tooltip": null, + "value": " 478/499 [00:01<00:00, 363.79it/s]" + } + }, + "3095c57304ab4f2f9d96c2870893365b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_2eb17b69ff5e47ebae91df68518a54d9", + "placeholder": "​", + "style": "IPY_MODEL_71668fd6d677488fbbeea29f7c9a2a0a", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  98%" + } + }, + "30ad7c40e4624ac2b5087aafdad39c2b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_0e06f27415cb455ab610931fd9497cf7", + "IPY_MODEL_19e460311904475d8fe577824b5c9f6b", + "IPY_MODEL_4a79545a2a81460ca04491a89f125f60" + ], + "layout": "IPY_MODEL_d66f792529a1444199f52bc3c124b78a", + "tabbable": null, + "tooltip": null + } + }, + "30d0d73e82724d95a9eabfefd74e7913": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "30e266582f974a3e930f9e56f2395317": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_3fa0aa3d2e9045d49bd56fd7a68fd3ab", + "placeholder": "​", + "style": "IPY_MODEL_a4a2064e1ee043889936721ea0d74506", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  73%" + } + }, + "30ea34fec1184bf19aeae46cdffcca29": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "3128c3ace7154a1e82478caee8ed4ec1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "3159a15269e34291a3134c2c21bb5739": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_d77ee350aa984be6a497883e1f64a501", + "IPY_MODEL_9231cb74058044aa96c81eb63b651ac2", + "IPY_MODEL_1526d902ee03455a9c0474791ac1f234" + ], + "layout": "IPY_MODEL_cffaceef4a504348bc269dfe245819e2", + "tabbable": null, + "tooltip": null + } + }, + "317595359d6840338f3cae4eabb6a127": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "317fa0351c114464946bd2ad8126dbd8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_3a0c5e377d5f455fbbbae00e4d7ab3a1", + "max": 999, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_1bc3b9a7b7c54a349760b5fecf20019c", + "tabbable": null, + "tooltip": null, + "value": 999 + } + }, + "31a26de69a16468ea16307c6876edada": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "32178b86f0774284b5dbc8f31e479242": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "326208c18c2748689eca14d506118164": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_07ce408250e744bd89d3fe9ca3d2da11", + "max": 399, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_3fd78dde37ea4c8ea9c6b9ab3a428711", + "tabbable": null, + "tooltip": null, + "value": 399 + } + }, + "328695d425cb424993c5f98bb01264cb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_6a112e2eae2e4a049d1c7d5c8363d06e", + "placeholder": "​", + "style": "IPY_MODEL_20c91c903fe347b2a9ca629d5ca99183", + "tabbable": null, + "tooltip": null, + "value": " 72/89 [00:00<00:00, 355.80it/s]" + } + }, + "32a71e4cc23c4214b4936dc058f957c4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "32aa36340c2241b590dc3693552d1319": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "32c2452decb440bc843401b38110ecce": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_54e999fa6aaa45fe91577de2013491ea", + "IPY_MODEL_462d36d49519496a943435368f0a600e", + "IPY_MODEL_0a21bf172fa84989a24711c9887c8560" + ], + "layout": "IPY_MODEL_10a5b7dd74c843199aabd953adc53c8a", + "tabbable": null, + "tooltip": null + } + }, + "32d1aa79e800431591903cdee0b4c3e9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "331052cac0b042958e63dbc99fab3188": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_c8ef1c6dcee744ad84c94c48775e95f7", + "IPY_MODEL_00c26a01e7784379a19b061b60bd2c74", + "IPY_MODEL_298efbdb99d44d269ef573678898bc84" + ], + "layout": "IPY_MODEL_866a90a0cf0c4e93a1928109d3ab9cde", + "tabbable": null, + "tooltip": null + } + }, + "33192a22bcef471db8f96fe4b26c47bd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "332a709915b74f3f834b9bb307d429d7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "33907522e43748b5a2b6b28dfb6748e1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_60047e8d7d6c45b4a948caff74f56772", + "IPY_MODEL_93205096546342df899e6bd0dd1ae80d", + "IPY_MODEL_ae758b3b9cae474ea6476f2d3d63c5d1" + ], + "layout": "IPY_MODEL_8dcf181c55b7482f8ee16666dc8b8676", + "tabbable": null, + "tooltip": null + } + }, + "33943fd46bbb4eb89e232842e54cdb49": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "33aeabc350da4651bec79df8ff64562f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "33e136242f184bf288b3b4914f89832b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "33e8a76effcf4002ab4aa1eed232c291": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_d9fac7fca87c4d339e4b3c5a0cfc89cb", + "placeholder": "​", + "style": "IPY_MODEL_e7969cf6d54747829e4ba25c13bdcb47", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  61%" + } + }, + "33fb64d45f4346d3b3cc7ffc662f021b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "341d2ca9b411414bbd31cb92e5891109": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "342cf62186f34af0aff6b7b096df814d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "3476d657b64243438e5c3e4c93524896": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_6081336c79e240d0b02143376a50c039", + "placeholder": "​", + "style": "IPY_MODEL_37f3983f50bf47139990c036677b17e4", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  59%" + } + }, + "34bee3d9d0814334a03cf2e76dd54669": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "3523e2269a9f4e819e0a8aef0f26671b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_cec5af9fa80247e98501b47d2c827981", + "IPY_MODEL_5c8567bb647444c5ad7ac0fe3a82f5a1", + "IPY_MODEL_f277a039789f4baa95d14e8bdb1f3cea" + ], + "layout": "IPY_MODEL_faf3df790e944e92a904c6def6017ca5", + "tabbable": null, + "tooltip": null + } + }, + "3547876e9b2443b1870291380914aa94": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "354921b909f34c399e4630cc798e2fea": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "356ac359c0ac45cfafbe202592794b2b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "35adcf7acf6d49dea6a705d97859cf37": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3620d2774665429a9fa8a6b510f7c6c2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "363d0b757e094298be6c6a40eb0b4c83": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "367bf374a704422b969b4918aa1ce3e5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "368b0548bd9647f28b2f3d5c7399f865": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_1b03481b32e143f6b7020925f5c4ff8f", + "max": 59, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_e5cf868570664eb9aa2051b4e84ce23f", + "tabbable": null, + "tooltip": null, + "value": 59 + } + }, + "369cd22c94c4439db53d36b8b9887e32": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_8a5f6b005cb1496b95a103356e3dc285", + "placeholder": "​", + "style": "IPY_MODEL_32178b86f0774284b5dbc8f31e479242", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  92%" + } + }, + "36bc4c06ad2a41488b65c86f172fd797": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "36d162ea214f42e48ca91c237defbfc6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "36d30ce8ff704452936a6febd795ce2f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "36d775385a074e3881ef559d1a73b8f9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "36e2820acb6c44f0b3fe0578c6b2f4bf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "36e9ce0a1e994176b65a71967728d8aa": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "3737209cc1bc46959ba770bc0052752a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "37978aa28d9f40289314991befcdaf25": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_81596e2291ac4d60bffed4acc03b4eec", + "IPY_MODEL_4b34f494fe774c2c88127ff1c8e44031", + "IPY_MODEL_fb1628a7e1d54607a7ba57b21361aeb6" + ], + "layout": "IPY_MODEL_f595a18f4bc0439d9227fa120fb7ec8e", + "tabbable": null, + "tooltip": null + } + }, + "37c799e1455849f391c1dbec1e9b9911": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "37e8311759794f6387f91a98050e7b00": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_579c8cae74bc47479051e3450d2e53ee", + "max": 999, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_e1785606f8534b599f40b8e0e66e210c", + "tabbable": null, + "tooltip": null, + "value": 999 + } + }, + "37f3983f50bf47139990c036677b17e4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "3856e715193944f693e416f05c24d2c8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_2c9cc2fafd414443a493cc1e79d7fa22", + "placeholder": "​", + "style": "IPY_MODEL_be4bc91059944c03a353dbbf9fe83aeb", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  59%" + } + }, + "386c2cefc93c4946a14038f8ef5e9365": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "38c23be1adc94a149d3d9492d7969f04": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "38ca9c8f2c3c4b4e97985bdaaa98446c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_20d78db71ee24fa79cd681ddc67f28c3", + "placeholder": "​", + "style": "IPY_MODEL_ed3eedcbbbd04e33a88bc55959e4e30a", + "tabbable": null, + "tooltip": null, + "value": " 36/49 [00:00<00:00, 351.26it/s]" + } + }, + "38d7231626294235bb8cd302a79227d3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "393b20bcedb34a32bd150d6249707bdc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_c524e8e8d009453b82883312c7f6db7a", + "placeholder": "​", + "style": "IPY_MODEL_cc9dd0c316dc4fe983eddd4dbef18729", + "tabbable": null, + "tooltip": null, + "value": " 72/89 [00:00<00:00, 355.52it/s]" + } + }, + "396fde55ae5049598649c8ae2bddc37f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "39997fa549ce462cbf90e4790babef6b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "39a90639d94446d18d9b2080c488c55e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_75f6bf0cd9b94e139a480b13cdb7629b", + "max": 29, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_8077bde4ce534c39a5d0b2837d3e44d4", + "tabbable": null, + "tooltip": null, + "value": 29 + } + }, + "39c0b5bf6a7e49eab47960056b854725": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "39fe1afbc84a42879db56c483fe4d8a1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "3a0c5e377d5f455fbbbae00e4d7ab3a1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3a30ae75d03a42db87db7ea2a98555ef": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_6f7286e663514b54bec3b1b538d72338", + "placeholder": "​", + "style": "IPY_MODEL_3e70a4d4343f47bdb6656a111507a4da", + "tabbable": null, + "tooltip": null, + "value": " 72/79 [00:00<00:00, 354.13it/s]" + } + }, + "3a37645b000a4c53af10590124714c55": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "3a38659984e64a7abf6716e2c89ffc09": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "3a41e9261135449a83c8c44210e1a03f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_21e65a968512456b825ba37edbb11d35", + "placeholder": "​", + "style": "IPY_MODEL_9ea01d0c079a4dbba87e3421b2e9ab4c", + "tabbable": null, + "tooltip": null, + "value": " 36/39 [00:00<00:00, 357.26it/s]" + } + }, + "3a73a963e2ea4d8182e2bd86827e56e6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_eb2a516af8ea4ed590acf13eb1395368", + "placeholder": "​", + "style": "IPY_MODEL_8cd777158a9f4b80ac84da6c3ccd0f93", + "tabbable": null, + "tooltip": null, + "value": " 665/699 [00:01<00:00, 354.40it/s]" + } + }, + "3aa6ce9d278546aba93e681f40310af2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_e10498b5f963419e94298780644cae20", + "placeholder": "​", + "style": "IPY_MODEL_45a6d748e7b241c8be9144fdcbd60aca", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  92%" + } + }, + "3af546af79cc471b890ac3d935300b94": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3b0c9b2f34fa46bc8f98a35807f852f3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3b272a1d7e334f4188d3358c3347ea0a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "3b9f60b3b1dc4564816deb44b0bffb54": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "3ba2b12f61484c80b4e340ec57482816": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3bc7f7abb024459caf0091216f325977": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_bd4fa9023e224822b3917bfab3443d16", + "IPY_MODEL_700a163adba84e838c7b256c5bdd96e9", + "IPY_MODEL_290011cbdf5b497ab3ab81d503689bdf" + ], + "layout": "IPY_MODEL_dc83120dbdfd431a98a34c91e0ac4e1f", + "tabbable": null, + "tooltip": null + } + }, + "3bcedaf0d88e430681282dab48bc18c2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3bd192336448457b84577abb5a13a391": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "3bf4dc137f0b47d38f18abda273237c7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "3c5c0356f3554558ba8674e036be7ea6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3c6a677e69ec4cb59ef9ed18ddb27cbb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_169b4846cd464296a25a2352c438bfa1", + "placeholder": "​", + "style": "IPY_MODEL_1008e4d62ad6437589931a2f33acb1b3", + "tabbable": null, + "tooltip": null, + "value": " 0/19 [00:00<?, ?it/s]" + } + }, + "3c7d2f074a744b5abed0237d4d1a2a96": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "3ca7bc0a6a654d979b4531e9e7054a9b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "3ccc5911d21d413cbc20897f0c8c1620": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3cdeacc78c024e93b82b64fade202e8e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3ce0c2d6634e45dba31093ccdfba7606": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "3ced3acac8dc465d96dcef2331bc1229": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_9729768eb1444460bec18b68f8f70ff0", + "max": 899, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_74ebc23a78ac49869b504d3ce0f319b5", + "tabbable": null, + "tooltip": null, + "value": 899 + } + }, + "3d183ba506914a43a5251340be95b25a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_5ca3b37a9c15400487bdc13af71fa28d", + "IPY_MODEL_8f0f556f01794e1eb87769c2fd1213e6", + "IPY_MODEL_b9b500b1c03b4c2b95f03273d5a64287" + ], + "layout": "IPY_MODEL_2af39222078242b4b6f1f65b0fd6dd38", + "tabbable": null, + "tooltip": null + } + }, + "3d268026f4a44750a9fe0750aa5b9354": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "3d49d623fdf94fb59e5779765eeb932a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "3dc07c6aa8094e5b8a7d6ebbcbbbab16": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_3856e715193944f693e416f05c24d2c8", + "IPY_MODEL_aeada5ef1208471980d98b1c7608fcd7", + "IPY_MODEL_23cb62817a984f6bbecbbb6157871411" + ], + "layout": "IPY_MODEL_e7b42f30113e493e8d7209a7ac32fbdd", + "tabbable": null, + "tooltip": null + } + }, + "3e4cb3b7815d4ff5a31c91d9b895e667": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3e70a4d4343f47bdb6656a111507a4da": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "3e74d3ad3edb458e95f869031ef2ec71": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_3fb2c062063e4cb18da5f89bcaa89764", + "IPY_MODEL_8cc3d6685a8a4516b8bf1773001baae0", + "IPY_MODEL_ac31071afd7a4490b17598491302bc19" + ], + "layout": "IPY_MODEL_d50e3513bd4747178debc94d4cf7541f", + "tabbable": null, + "tooltip": null + } + }, + "3ed4f845edd04920a97d7dfee473c46f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "3edb1763c62046b581289258d59fc1f4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "3f15d96b41f544c483655ee1e4a3220c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_9411cd45d672462f9e65c3c6316c61ab", + "placeholder": "​", + "style": "IPY_MODEL_36e9ce0a1e994176b65a71967728d8aa", + "tabbable": null, + "tooltip": null, + "value": " 0/29 [00:00<?, ?it/s]" + } + }, + "3f44772075a84396b50d6f348e95da0f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "3f936240f6204290b5439eabc4309d1b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "3fa0aa3d2e9045d49bd56fd7a68fd3ab": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3fb2c062063e4cb18da5f89bcaa89764": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_19106aef732d420bad5cb5905590fd70", + "placeholder": "​", + "style": "IPY_MODEL_b8ec6ce75bd64634b84709a7aad28a6c", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  98%" + } + }, + "3fbaec84487441158fbb5aae8c259403": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_7347e2d2b17342ef84da80cc00a6b36d", + "IPY_MODEL_e0e97cf252534880ac8984e3e97deb16", + "IPY_MODEL_5ab321996f164198950cc5e6c1cd7d5c" + ], + "layout": "IPY_MODEL_e1ce9b0a0e714b80aedbdd4895c22503", + "tabbable": null, + "tooltip": null + } + }, + "3fbcc97d7f8e41209df81fd5feed8fcc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "3fc42343701e4e0eae1c80b9f981ded0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "3fd78dde37ea4c8ea9c6b9ab3a428711": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "3fd7b789706d482c8684f49b74e26645": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "3fdbc5a11b1245979b23f1f3aa56f5c1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_3095c57304ab4f2f9d96c2870893365b", + "IPY_MODEL_5e0a8b6ef9884cbcbfbe1aa47e7e5ff7", + "IPY_MODEL_665f34d6313244cb924a3be99f22e9f3" + ], + "layout": "IPY_MODEL_12f1a26e3cd74367809e13eb5c659826", + "tabbable": null, + "tooltip": null + } + }, + "4012b26debef4b6fbf72c4f6b5efb406": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "405147a851c74bbfba69eaa3877c64c6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "40622752c6ce4805b010ef38c70ac776": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "406927b85b3048159b0df61910f254b3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4093bcd4c7dd4e1a9e0bc440a932014e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "40a8d9c0248b4e449b75f4a8b63bd10e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "40ba86d0e11a4a32b5fb7b68ce0815ad": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_4df55e80a64e4910bada161c2819b348", + "IPY_MODEL_6646dde21238489783319a5484ca093b", + "IPY_MODEL_5082541b756a432bae71f948f35cfa20" + ], + "layout": "IPY_MODEL_6c0e6203ee3d4ff5aad83f5faa85a1ce", + "tabbable": null, + "tooltip": null + } + }, + "416d33f49b174a6897d564b364dfaf41": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "41a22da4a8194952909f11f93c0e4ca2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "41a366de5d25442993f37793a3ebd386": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4202fdad659042e0a289d7772f42140d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "420b82723a9f4f2f8cafcb441f856a20": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_df54fd77f4194ba988ce5fc11d25d071", + "IPY_MODEL_37e8311759794f6387f91a98050e7b00", + "IPY_MODEL_fa6c21d777f942f7b55058e3fbeb23dd" + ], + "layout": "IPY_MODEL_dfd5a036491646359ec43a7b5530eec9", + "tabbable": null, + "tooltip": null + } + }, + "42413899df1b4546a738aadc58d3e98e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_6b5b2b4eb097432e996ebccfbc269567", + "max": 79, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_dac229b9174046319fd89cce825d168e", + "tabbable": null, + "tooltip": null, + "value": 79 + } + }, + "4281e037c1be4a04a5c0586fbe23d27a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_618df38eafab424fb4e0c1c1910e9d72", + "max": 9, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_e418c289c55d4e5682b19f61757f4965", + "tabbable": null, + "tooltip": null, + "value": 9 + } + }, + "42a07055564948abacbcff5422ccc5c1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "42ca03e38d9c4653b1454dcfa8bc6188": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "42ccc5e639b546b9bb7299dadb9ae7ad": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "42eba7a883954c9398f6234bd2c34728": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_c3016b73acfa47978d29e3a91615efac", + "placeholder": "​", + "style": "IPY_MODEL_9696fb40fe7c4862b76e8a98998984b1", + "tabbable": null, + "tooltip": null, + "value": " 36/59 [00:00<00:00, 353.71it/s]" + } + }, + "42f6bd9a8f63422d885de865327c8519": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_66ec50bb59e949e7adc908a4c6fd593a", + "IPY_MODEL_d0053b1b867b45e7bf082a6805e26b93", + "IPY_MODEL_c4739e4f68a64bed90b7aa8b4a7295c8" + ], + "layout": "IPY_MODEL_c65a35fa56134366aa5d0222a2cb839c", + "tabbable": null, + "tooltip": null + } + }, + "43338b6762d44123a270dc7e672607e0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_41a22da4a8194952909f11f93c0e4ca2", + "placeholder": "​", + "style": "IPY_MODEL_52851c4e14e14547bb6fefef318778b9", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  51%" + } + }, + "4385eac2a71c42dd89450f825481c940": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_cc00eab9c91e4f519f399f6444bc3813", + "placeholder": "​", + "style": "IPY_MODEL_356ac359c0ac45cfafbe202592794b2b", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  97%" + } + }, + "43ce248145864a488a9da7e7eae10de5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "43e142d27a804525ac6025af8eb4167b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "444db4142ebe469f97542f252451bd1a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_5323436a5d484722abe36b4592c465a5", + "max": 99, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_07fb3573ab054b70832e2fc617b70e32", + "tabbable": null, + "tooltip": null, + "value": 99 + } + }, + "450dde43f144464abaa0338b90ed6286": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "451a5849551e42be8209cdfa1cfc72bd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "452cb84b26dd4ba3a19725711abbc353": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_27632bd107564e7d9ed4a16a3855b61c", + "placeholder": "​", + "style": "IPY_MODEL_d01b9c6e22564874b055dcf22995909b", + "tabbable": null, + "tooltip": null, + "value": " 73/79 [00:00<00:00, 358.74it/s]" + } + }, + "453120223be94b3ca1d08fcfcce7a595": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_ba5c0aeadc0b49cb983b3c91613db4cf", + "max": 89, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_405147a851c74bbfba69eaa3877c64c6", + "tabbable": null, + "tooltip": null, + "value": 89 + } + }, + "45575c5868ea4ed2955c02f24b57dceb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "4561344306f743fa84bfcd4ca3faad81": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "458130e0e4ce453380f6671d58cb0610": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_10599ad6cce34f23abe77b6a4d3056d9", + "max": 599, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_0887380ca11d47c5bd346ff600ae5ba9", + "tabbable": null, + "tooltip": null, + "value": 599 + } + }, + "45a6d748e7b241c8be9144fdcbd60aca": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "45cef1a785544e2aaa16bc70ad5a2c11": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "462d36d49519496a943435368f0a600e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_8450550fc6024610a6bc525fad7664d0", + "max": 69, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_ec2ac49e2bf84fceace13542de95a3a9", + "tabbable": null, + "tooltip": null, + "value": 69 + } + }, + "4693bb0c040b4ec58d73e51b0b12a377": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "46ab2b12d12c47cb91ee6f885560206a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "46bf5dbb99ea494d8501a099615ef7a2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "46f21dd1f9c244bf95057e462ce3acd0": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "47192803c7964534a1f1018460fbd86a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "4763448e0e8b498fa37cb1bedd8b6b39": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "4785898402dd496ab26e7bf263668dc8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "47966c62f9a0427ead6a81d32aef4ffb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "47d9d90e096b4c29b6a037e99b439f1f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "47ecda5260d64c2db5b6eb2e88d3d5cb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "47fdcd00aca04f539b5744cfbceafde6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_e4fe52a54a7243a7b6ba9ae5cba42f83", + "placeholder": "​", + "style": "IPY_MODEL_0370bd03504c4ceb855170abe09521a3", + "tabbable": null, + "tooltip": null, + "value": " 480/499 [00:01<00:00, 365.08it/s]" + } + }, + "480285c93775454b81ffb69463b191f3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_c495d0dedb764061a90da24cc6f0c550", + "IPY_MODEL_1a9864ef79c246aab32ef7d3d2fe38ef", + "IPY_MODEL_a874714e44a64c869a3ef23395cf3e4c" + ], + "layout": "IPY_MODEL_9759a4eac7dc4873ac30d755c457544a", + "tabbable": null, + "tooltip": null + } + }, + "48a1923f3c7c4e8b802d136a551598fc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "48a25f680c724bb7826a6721f61a118b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "48c392144bb8446eb9ae1cb4a34fef3f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "48eefbd8bed542dc8d598b294fb4e40b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "48fa604014a34a80a66f1f961d5956e8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_1b4ec66b20774352bdff7b2005092546", + "max": 49, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_5651796cf880443586257ab54603009d", + "tabbable": null, + "tooltip": null, + "value": 49 + } + }, + "490d5179c19b4e558ab83a345562cc26": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4944d3da1b524f949fe4e557659629e5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "49d208dff05741d0a68402663c5aa060": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "49ddcabcc7e74ea183ef91cdd04f4930": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_d18f6ac289ef4feaa12e9a15b078f60c", + "max": 59, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_c98457e46a5d4643b0a8452123210f52", + "tabbable": null, + "tooltip": null, + "value": 59 + } + }, + "49e60d33553b4869bf8c77565aff4acc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_4f56ae1a73f740459b03e4e6bc403452", + "placeholder": "​", + "style": "IPY_MODEL_b3f67d994be040b582ce06c5fd29f403", + "tabbable": null, + "tooltip": null, + "value": " 480/499 [00:01<00:00, 327.79it/s]" + } + }, + "4a23ccd933d34b8ba087596923059706": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4a3426a7691b4e89ad7d104a9614e345": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_451a5849551e42be8209cdfa1cfc72bd", + "placeholder": "​", + "style": "IPY_MODEL_74a381d409c04c7d9feaf6039f551c18", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  95%" + } + }, + "4a38d27a221040da80dc660607276854": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4a6371bc526b41a78fb0f2e045a8b04a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_ad4b6513b15b41039ea448b804082eb6", + "max": 49, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_80c480500d96438c87e22ff10b5b16e0", + "tabbable": null, + "tooltip": null, + "value": 49 + } + }, + "4a79545a2a81460ca04491a89f125f60": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_fc641f37c79947199726203ca5d8c7f6", + "placeholder": "​", + "style": "IPY_MODEL_0b80afcbf3674e3a9ea902a7c2d8f1c9", + "tabbable": null, + "tooltip": null, + "value": " 36/39 [00:00<00:00, 352.85it/s]" + } + }, + "4af96f228e5042ef944d84ba3749afc1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_7687b4c8364a4963abe985780792c7c2", + "max": 79, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_86801af0b1724e8a99011d85936dd519", + "tabbable": null, + "tooltip": null, + "value": 79 + } + }, + "4afe69415fce46a08b67c509d8c9bf79": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_7e26015500fe4f5a82b07bcf92f328d1", + "placeholder": "​", + "style": "IPY_MODEL_e3ae51175f9a49e2ba0985a8ee8d19b4", + "tabbable": null, + "tooltip": null, + "value": " 294/299 [00:00<00:00, 361.71it/s]" + } + }, + "4b34f494fe774c2c88127ff1c8e44031": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_67f87618a5944bae9c3875356563f61b", + "max": 39, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_1617bbb5fdc14bd1ab4eaaeb4484e623", + "tabbable": null, + "tooltip": null, + "value": 39 + } + }, + "4b7a7a6080cd4f03a858101abd7c712e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4c26738c84a245a8ab72b75d5a5782c0": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4c39db267de8446ba596c8f802013a4c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "4c4dc3c884884a8fa3719a3cb160b6ea": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_52f9cdf2eca14e60ac1bb8dbc7fa9406", + "IPY_MODEL_c27ca95f366d4cea8bf408874a5d711b", + "IPY_MODEL_a87e0af40efd46fa832b40f3621a26b7" + ], + "layout": "IPY_MODEL_fdfa0c935dd643df84b958d6dfd75629", + "tabbable": null, + "tooltip": null + } + }, + "4c566f260cd74358803899641e909308": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_50d109b7a6e34e758fbadc3fc68953a3", + "placeholder": "​", + "style": "IPY_MODEL_c10acf6386a34a8e8e75772d75686113", + "tabbable": null, + "tooltip": null, + "value": " 184/199 [00:00<00:00, 359.38it/s]" + } + }, + "4c996d7d8ef547c6af0c85f1ad392170": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "4d2ac87224c845d2b404995d80615a9c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "4d37f011910d469a913ee85b040efbae": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "4dab31ace5474d6795dcabf8775e6dc7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "4df55e80a64e4910bada161c2819b348": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_8a8e180fa3b34b89891ca51d5695aea6", + "placeholder": "​", + "style": "IPY_MODEL_99016dbb40fd40a89cb69604e5c18987", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  97%" + } + }, + "4e09c6f855624f92a7b49369ae31bbf8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "4e2da43f92c34074851aa86f5cb9f44c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_9229831101224676a7dbea9ee203b3ef", + "IPY_MODEL_ee6398d3aa9746cd81bf9b1b8cd48dad", + "IPY_MODEL_67f42ad129054bf18b1b3bfafc1b8dab" + ], + "layout": "IPY_MODEL_6fbe79bc11584675902b3edc7cc44782", + "tabbable": null, + "tooltip": null + } + }, + "4e83d49d219c43a79128cc2fba1ac885": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "4ea6e90d0e034f8fbbeec3ae469195d8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_8127c0f2b5a5487a95ab2e81eadb18d2", + "IPY_MODEL_3ced3acac8dc465d96dcef2331bc1229", + "IPY_MODEL_ea4aaf1ab21d49d6903a112e51e8c606" + ], + "layout": "IPY_MODEL_28890c573bec4fe0b2c62b7144211780", + "tabbable": null, + "tooltip": null + } + }, + "4f06e14bc60d4262b4cd806c6a30ef5c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_9b3145839b5740b9b6c3805c2e1f588f", + "max": 29, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_3737209cc1bc46959ba770bc0052752a", + "tabbable": null, + "tooltip": null, + "value": 29 + } + }, + "4f30ef2766674efabca40e7456344b11": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4f519f6a766540369cfe7213bb71f585": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_17b7aae4d6944625be91605250dc7176", + "IPY_MODEL_0d753255846948a2bb93aec74c8bc444", + "IPY_MODEL_e575291ad7e9474db23155ec302dc218" + ], + "layout": "IPY_MODEL_4693bb0c040b4ec58d73e51b0b12a377", + "tabbable": null, + "tooltip": null + } + }, + "4f56ae1a73f740459b03e4e6bc403452": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4f6c16aa09404df492a21cf05e3bc7fb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4f6c9974b1bc4cc0b386aace834b9fbc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4fa0161d047048f7b95ed7972a2892af": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "4fc6fbe0a5764a91bba7fa27bedd1bc6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_bd5616ad3f014c9cb608018b80a98502", + "max": 999, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_e72b9468b28f453abe0184fb63e223b2", + "tabbable": null, + "tooltip": null, + "value": 999 + } + }, + "4fce76ee3b3e4d64bde923d782c9263e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_a8518783677c4086bb0208a8fa09cc4b", + "IPY_MODEL_89cc589a882048f7bfdeae7711ded275", + "IPY_MODEL_7b7d3016f75342c280b55daaa55796a2" + ], + "layout": "IPY_MODEL_e6a774658f844c45bac440678d5c11a7", + "tabbable": null, + "tooltip": null + } + }, + "4fd9a0546547485c9d1da2d4db011130": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_62c3cc61ede94dcaa49ec6e974997504", + "placeholder": "​", + "style": "IPY_MODEL_89d7a96904334316b82982840d76a401", + "tabbable": null, + "tooltip": null, + "value": " 72/89 [00:00<00:00, 357.10it/s]" + } + }, + "4ff9e589864a422189a7f4852d707302": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_58bcfddd8209409eb30369b138eddd88", + "IPY_MODEL_8d8a81ffd06a4e26a6526391c8e75466", + "IPY_MODEL_174dffa815ff4073a25e33329bc66d36" + ], + "layout": "IPY_MODEL_ca93f86926934301974942581dc5a8f7", + "tabbable": null, + "tooltip": null + } + }, + "5011809e608743cdae38ec46ae1007ae": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5023d09e48bd4a68aca352e9900ccfcc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_7c193ad6cd9c42d9befc3e39bb4745f9", + "placeholder": "​", + "style": "IPY_MODEL_31a26de69a16468ea16307c6876edada", + "tabbable": null, + "tooltip": null, + "value": " 0/19 [00:00<?, ?it/s]" + } + }, + "5082541b756a432bae71f948f35cfa20": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_e9729f9de3d0485a9f428bdecac3e89d", + "placeholder": "​", + "style": "IPY_MODEL_70b54da7dd874fe5ae6f400a47b0f781", + "tabbable": null, + "tooltip": null, + "value": " 775/799 [00:02<00:00, 368.21it/s]" + } + }, + "50a8d7b46f2e4a4fa0312c24edd5b9b6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "50aecebdcb3a4071850937a19d4d5f4e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "50d109b7a6e34e758fbadc3fc68953a3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "50d72866770d4e48819b115a032d3f72": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_e1196b89ce0443179a86528ce26e7798", + "IPY_MODEL_23a2aff8404b494d91b1de589f488d3d", + "IPY_MODEL_800ad6baefba4d41a5d29048d1d3d9b9" + ], + "layout": "IPY_MODEL_6bcaabafd9ed43cabf6de9ab858a73fd", + "tabbable": null, + "tooltip": null + } + }, + "50d86d5c91b340d49cbc965b0f34f11d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "50df0e34fdf74026ad91c9fbd72a01f2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "51026c4262f44fe8ac18df399729f0f2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "513cb9319a4f41d9a5feb1fc5fde6479": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_2647cebcc2fb41369c60271f6d492e2b", + "placeholder": "​", + "style": "IPY_MODEL_6fd5746a6d5e4c7f8e026fbe22333b3e", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:   0%" + } + }, + "513d7d38f80149eb9b668d4dca8b9d40": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "51a794dba05346298151e9c08b769765": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_6af1b8be0fae4ea8b49862a4698469ab", + "placeholder": "​", + "style": "IPY_MODEL_36e2820acb6c44f0b3fe0578c6b2f4bf", + "tabbable": null, + "tooltip": null, + "value": " 182/199 [00:00<00:00, 361.08it/s]" + } + }, + "523ddd1d3ad643ff95bcc2ccc43addfb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_e56ce3624ce042a2a5b44218a8b7e609", + "placeholder": "​", + "style": "IPY_MODEL_238223f9e57145a8bf37fb06676869b8", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  61%" + } + }, + "52851c4e14e14547bb6fefef318778b9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "529b1ec4105944cc99989d87eb5a16d2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "52c897b0db6d425a8857f14deb51c249": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "52d74280b7ee46a0ac2a92833aa91683": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "52f9cdf2eca14e60ac1bb8dbc7fa9406": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_a83320d78dba4e00bb9066a779653553", + "placeholder": "​", + "style": "IPY_MODEL_3fbcc97d7f8e41209df81fd5feed8fcc", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  52%" + } + }, + "53193d5f8669482bafe580800acfad9d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "5323436a5d484722abe36b4592c465a5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5379c9731539432eac2f83387c106c4c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "53973fb0e574496bb0e7dd9cf87732bd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "53cb05b20b374b00a98c1755ba735806": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_ad98fcd3b45848088325663f3bac9d6e", + "IPY_MODEL_ce6542c58d6443049406b95884863a2a", + "IPY_MODEL_d7760ab9078e42f0b6da1798ac958216" + ], + "layout": "IPY_MODEL_95eeaf0ccae44001b3c0d3fd04e753d3", + "tabbable": null, + "tooltip": null + } + }, + "53daf9a1d1064e99a505f18a271746e4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "543e8a4b06ec47a199fe311302e6fdba": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "54548d8157b042bfa61ad88de710ee77": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "54890dcac06444998ce00fd1824c5b35": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "54cb0d0cf7664fdcbc4fa0bf2525e342": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "54e999fa6aaa45fe91577de2013491ea": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_14d42043c88d4a739d89132f9e39200e", + "placeholder": "​", + "style": "IPY_MODEL_57f34b0020e14b6cbe4da252dc53c001", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  51%" + } + }, + "550dfcb586d24a81937f730e4e75a39a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_6441223389b5498caa51016546e2553e", + "placeholder": "​", + "style": "IPY_MODEL_2fec5a0c7de7499b96b252c7429cce70", + "tabbable": null, + "tooltip": null, + "value": " 570/599 [00:01<00:00, 367.13it/s]" + } + }, + "552e637432da49fe91cfc854e17dfe05": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5570957f2a6c497fbd40283a3c0f5496": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "55aa4fa946134f3ebb81e891214006f2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "55fcb49df3464631beee1d02c538bf09": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "562b45528e364dcdbfa0e4c4219c4ede": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "5645cdf3b34b4392a1d35079df931019": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_6a5a422ef8714d379be8c6c8d2fef118", + "placeholder": "​", + "style": "IPY_MODEL_ce327262338e4a7aa9c1ccd0ff047916", + "tabbable": null, + "tooltip": null, + "value": " 72/99 [00:00<00:00, 357.18it/s]" + } + }, + "5651796cf880443586257ab54603009d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "566158b97fb646ba95f4b92c174c8e36": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "56b164d2c3c441f4ab03fb13397543cc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "56c21fff30bd4f40bb1c8364cc8dc203": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "56c4b383adf44a5198e04adf9a4c072c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_0f7eb2d470e9485da4f1115acc2f2fab", + "IPY_MODEL_a3ae402e09d546b1a0aceabf5baa7ba9", + "IPY_MODEL_b4015293f3ac4a16ac4ba21218c0f70d" + ], + "layout": "IPY_MODEL_b6da4af56e5d4d82ac18a5ab30ceba0e", + "tabbable": null, + "tooltip": null + } + }, + "5750ede9a4e24865b3dcbbb56dec8c5a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_e7e85c069ce349e3828dd145557a811d", + "max": 89, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_e901e93125bb4f24b4df6099a964dabb", + "tabbable": null, + "tooltip": null, + "value": 89 + } + }, + "576848cb3f21455ca2101929d6aa2d78": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_77f4031b11cf4221a822f828ae77486e", + "IPY_MODEL_5750ede9a4e24865b3dcbbb56dec8c5a", + "IPY_MODEL_a25ef53382594eab84ce4066db6e1acb" + ], + "layout": "IPY_MODEL_0d5f5140a82642bda3459bcff9480776", + "tabbable": null, + "tooltip": null + } + }, + "576f97c76d8d4f20af179e45c8ac60c7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "577cf572db044d8ab80fa0852365222f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "579c8cae74bc47479051e3450d2e53ee": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "57f34b0020e14b6cbe4da252dc53c001": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "58044bf7b14f4d168f1a061775f28157": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "58175a1777af4c3086919ae6c696130e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_083d597e30d34df1ad26947634d26f64", + "IPY_MODEL_a2e7cfaf2a544c5a81e82c7745dbf1a2", + "IPY_MODEL_028d57ef98eb42179a81de20d24fd468" + ], + "layout": "IPY_MODEL_52c897b0db6d425a8857f14deb51c249", + "tabbable": null, + "tooltip": null + } + }, + "583ae5fa865e44e58095f6d1e0653cda": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "584e89b065ce458fa98822891356173f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_b069858f0a4b46258f3fa506dad56313", + "placeholder": "​", + "style": "IPY_MODEL_36d30ce8ff704452936a6febd795ce2f", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  92%" + } + }, + "5854d51b6471462c86ee1f2546501e4a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "586d1116b5504762aae83152ed41c17d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_13bd90422b144d9bb98ecbb8629e43eb", + "placeholder": "​", + "style": "IPY_MODEL_100854f2e558489b8c0777e930f1aa82", + "tabbable": null, + "tooltip": null, + "value": " 0/29 [00:00<?, ?it/s]" + } + }, + "587990fb11284746920ea8fe9badca6b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "589d9bbe63864dc2842500b779ddccda": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "58bcfddd8209409eb30369b138eddd88": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_1fbf5a76528d4ab5b928e74966a5da23", + "placeholder": "​", + "style": "IPY_MODEL_1755084894eb4a85aff831213eda8f12", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  91%" + } + }, + "58e56b80b55a47dfa5df724a1b285c99": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "5942ac1fd4c34a7c8af80120b7e098bc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "5995d5053ad542c8ae8563a31bf0f18b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "59fc372b0c7d47c6a1ad2bb5aafda9e5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5a3e51c824244c7badf019718c49e776": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "5a434a2eae7641ed849fa331173444e6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "5a9efa63bd7744b4a8933e5127d207ec": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_08d49b42f5ad4d9591b07f2edfbc7609", + "IPY_MODEL_1247e21db9ee46fe8068f9480678cf77", + "IPY_MODEL_8058a1b3d13a4daeaee5357c6551e564" + ], + "layout": "IPY_MODEL_f9d47283878e43719a8a3c6404e8a2a9", + "tabbable": null, + "tooltip": null + } + }, + "5ab321996f164198950cc5e6c1cd7d5c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_828fae556e4a4ed1b464a3195cba6806", + "placeholder": "​", + "style": "IPY_MODEL_c38b8462ba7b443ea92227e7328df0fd", + "tabbable": null, + "tooltip": null, + "value": " 891/899 [00:02<00:00, 364.72it/s]" + } + }, + "5ab60d8ad9ad4f6d91faddabce829f0f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5c01fc665d164c62ab8450dcfbd10bb9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5c1e982f72074c59953900c818a5a2d9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "5c8567bb647444c5ad7ac0fe3a82f5a1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_566158b97fb646ba95f4b92c174c8e36", + "max": 399, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_868a9a012091425bb57ca05d007774fb", + "tabbable": null, + "tooltip": null, + "value": 399 + } + }, + "5ca3b37a9c15400487bdc13af71fa28d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_06066fd514d846019d9646ede8235db6", + "placeholder": "​", + "style": "IPY_MODEL_01b7401a95654327b9d2d49a0586cbda", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  98%" + } + }, + "5ce50900ba6b4afe819c98739d371acd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_801ae2f2aeff464485df714ee32b091b", + "IPY_MODEL_b58c3219b8da4565bd0396e7253468f4", + "IPY_MODEL_99a080898a97498e97dae48489894b53" + ], + "layout": "IPY_MODEL_4e83d49d219c43a79128cc2fba1ac885", + "tabbable": null, + "tooltip": null + } + }, + "5ce7b8aa000543458fa61abbcb29ff3f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5cf654eb85634875b8929bac771308ee": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_5ab60d8ad9ad4f6d91faddabce829f0f", + "placeholder": "​", + "style": "IPY_MODEL_0210fd179f4447ebaec52a81b5edbe1a", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  92%" + } + }, + "5d31df8b004f4055b0788dfaecc2f094": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5da1cbae882749029baaa4c0b450234f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_e5997fd3333440b7a99fbce974f2da06", + "placeholder": "​", + "style": "IPY_MODEL_875174c479bb47f79e5cf2c7d6cc0835", + "tabbable": null, + "tooltip": null, + "value": " 0/19 [00:00<?, ?it/s]" + } + }, + "5e0a8b6ef9884cbcbfbe1aa47e7e5ff7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_c657a9b6ef2143e88e2882cfa7cfcd8c", + "max": 299, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_0308c1dd813b47ddb96246a6136efaec", + "tabbable": null, + "tooltip": null, + "value": 299 + } + }, + "5e2bad298cf94edebfcee17f9ae175b5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "5e6bc7eea5794a1885339cc12a01bb4d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_c7ea9135f6c843089e877d5afb5cccc8", + "IPY_MODEL_2959fc1bb680465ea20c81966066de34", + "IPY_MODEL_ba9bf089f6844a3bb304e0dfa291ecc7" + ], + "layout": "IPY_MODEL_b08c46c588e34e3a83348c4cdaa29caa", + "tabbable": null, + "tooltip": null + } + }, + "5e9ce21abde14e9ea85ae05639813bee": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_00face300426462b818c3096297f250e", + "IPY_MODEL_2e9c800b2f9a45bcbf61734fea27fc71", + "IPY_MODEL_70c60ea1aa114e7584609188edf06256" + ], + "layout": "IPY_MODEL_11448f49a2b14f7fad4a569ab23b2225", + "tabbable": null, + "tooltip": null + } + }, + "5eacec1c81b5411e8bb2a18375a08d6e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "5f10baf4878c4921b828d169f62a07a9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5f626046347e4560bd0b2c7d2b12b80d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_70c55b604a37448cac0043695794e1d1", + "placeholder": "​", + "style": "IPY_MODEL_9651d16bc4d94fe3b691d21de516b98a", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  96%" + } + }, + "5f7100c8becf41f7ba530467ce4dbd5d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5fbbefe59a684a8f9bf4da79f03fdb37": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "5fd81d37c8c148f4a1b85b04c508a3e3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5ff96f4a3a5444bb9b543597d2b7519c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_4012b26debef4b6fbf72c4f6b5efb406", + "max": 99, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_1b2a4aeb9f9a427a800dbdcfde9d35f2", + "tabbable": null, + "tooltip": null, + "value": 99 + } + }, + "60047e8d7d6c45b4a948caff74f56772": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f140bb901d594523a9a19f0d44efbe63", + "placeholder": "​", + "style": "IPY_MODEL_e03f4b993d48472d96009e70eabd38cd", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  92%" + } + }, + "601a678eabc2447a810126d2ff6af171": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6022557a45bb432aa79b3767d6cd46d8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_c72775ada44b461ab7fa9565fdc6df95", + "placeholder": "​", + "style": "IPY_MODEL_23bcddffb1a64b519dcf42fde50772fa", + "tabbable": null, + "tooltip": null, + "value": " 776/799 [00:02<00:00, 361.31it/s]" + } + }, + "603a889473154bf0be31c2f6252c5ad3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6047b24816e74fe68f408dd740ee8bb6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_d8d70da08bd74e428dadb0f8336edf87", + "placeholder": "​", + "style": "IPY_MODEL_367bf374a704422b969b4918aa1ce3e5", + "tabbable": null, + "tooltip": null, + "value": " 588/599 [00:01<00:00, 363.41it/s]" + } + }, + "6081336c79e240d0b02143376a50c039": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "609e0079f5de4169bb61f0ddd99c843a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_7b6f284007e347749f3254cc1cd352e2", + "IPY_MODEL_8bb8d988e8734e4c8d6b65a113db005e", + "IPY_MODEL_70aeb88f2d7c4c068ea3d2b725c4f753" + ], + "layout": "IPY_MODEL_e8a497971a7e4b718250060bfd7b4ed9", + "tabbable": null, + "tooltip": null + } + }, + "60b4ef84a55249f78ea86d1b61171fff": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "611a93bc2af04c36b77c8f99abdba83f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6127ce0fc57c466990db3e1e0c0b7b4c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "618df38eafab424fb4e0c1c1910e9d72": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "61c54d536b7e4141a7ae00384cec20e0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "620730f846fe450790fc483ceded86b7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "6231e3194f02432ca94921954887e9d2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "626995cf5ec54c99bb689141ce31dc21": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "629f25a30f104f4eadc2694bcd5fd9c2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "62b49871b3f344e09b874af7c381742e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "62c3cc61ede94dcaa49ec6e974997504": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "62d9f795efd74b41a79a9ea08c8d6127": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "6368753371f24353b2c70e7c3b70f350": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "6384b8016185409587f1011522ed5683": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_3aa6ce9d278546aba93e681f40310af2", + "IPY_MODEL_08b73cfbb8b243a9aee3c9543daa634d", + "IPY_MODEL_69ba337a363f43a8a48c0388e954c14b" + ], + "layout": "IPY_MODEL_96d772ab6af6456cafc8478adbb51fc5", + "tabbable": null, + "tooltip": null + } + }, + "63a39158402f47afb50aceaa9c4599f7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_e3b07a7b99774f01a19bc7a3b8af11ac", + "IPY_MODEL_0b115d600d7f42c3ad2ceb02cfa2ab0d", + "IPY_MODEL_ddbe56278c5149c0b22a3a7ab874ece7" + ], + "layout": "IPY_MODEL_e2d52439f8e74571bfdb9117a6deaeb8", + "tabbable": null, + "tooltip": null + } + }, + "63b460c9ff13425db7615334360dd916": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_dc2609d48bbd4286a3bddb732b5e7b5b", + "placeholder": "​", + "style": "IPY_MODEL_01256c047da4493da14ae32a9a0fafb4", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.: 100%" + } + }, + "63cf240a664144609b570f6bac45f597": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_01fecabcf5764c239f2c1da85d1352a2", + "IPY_MODEL_83eca6f29d034bc0ba02a5efeaa0a0a9", + "IPY_MODEL_6c24396932714be29a4bb20c321da514" + ], + "layout": "IPY_MODEL_2e70285b0b414daea22e70b78302017d", + "tabbable": null, + "tooltip": null + } + }, + "63e0cc98313a4238a7b905ab4956df34": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "63e1db7c3ccd40638c87013ae59c31ed": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "6441223389b5498caa51016546e2553e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "646d6c110e8a4247bc42de6c14671658": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "64914986996b4154912c4369fe1f56c5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6495b65e6e714f148a39632ce70a5b36": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "649ab3fedc924c3fa7f20fbf096d82b7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "64ca28fa8b57488d87517b5275f838ff": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "64fb14e7d9c44b9d94db8a1b6fa88f36": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "650c7e7e1b4749e983db4e2c41231969": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "655e863c62474a34aa8dea4c37157b37": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "65bb7e5fc4844c28a454f6e5c5abffa3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "65d49a6340524bed856032b498447954": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_c52f5fd51c52437ba271b3c4a7c66eef", + "placeholder": "​", + "style": "IPY_MODEL_3ed4f845edd04920a97d7dfee473c46f", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:   0%" + } + }, + "6603f689299e476cb632d4be04ef0141": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "6646dde21238489783319a5484ca093b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_d33a4ea743e547aaa576bc4042d73bd2", + "max": 799, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_2a2a9e9125f0428b93fbd2b8de7774a3", + "tabbable": null, + "tooltip": null, + "value": 799 + } + }, + "665f34d6313244cb924a3be99f22e9f3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_caf0796924964acb90582ae00f5c08a5", + "placeholder": "​", + "style": "IPY_MODEL_146dde9d95b847e68de4240f3d95b4f2", + "tabbable": null, + "tooltip": null, + "value": " 293/299 [00:00<00:00, 359.97it/s]" + } + }, + "66c2958f021542c4a54053e022d2d173": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_27a5f87081fb426db2eabef1c274afad", + "placeholder": "​", + "style": "IPY_MODEL_576f97c76d8d4f20af179e45c8ac60c7", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  99%" + } + }, + "66ebc0ee6f6f4facad2e53077e32c199": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "66ec50bb59e949e7adc908a4c6fd593a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_6704c7d23b214cbd92ac6886cb59116a", + "placeholder": "​", + "style": "IPY_MODEL_3128c3ace7154a1e82478caee8ed4ec1", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:   0%" + } + }, + "6704c7d23b214cbd92ac6886cb59116a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6715d57bc74a413a8b3eaa2ef2b87dba": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "673588c2b2b648c29c0166c3b671cbbb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "674a2712d76f44bb94bd695d018caa0c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_c1bf003b98ea4ee8ada5e5f4a348ebda", + "IPY_MODEL_ff067a33c7cd419783bba777c39763d1", + "IPY_MODEL_aca3140cd99140feb31535c0ad1e63f0" + ], + "layout": "IPY_MODEL_2165df5337e048db8b0324b7733fa418", + "tabbable": null, + "tooltip": null + } + }, + "67d4602d36d5415e9618ca500f54744b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "67f42ad129054bf18b1b3bfafc1b8dab": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f1eabed15865477c9ad9707b022376cb", + "placeholder": "​", + "style": "IPY_MODEL_7aee4d2038e5490bb8f45d3538ae1df1", + "tabbable": null, + "tooltip": null, + "value": " 591/599 [00:01<00:00, 362.74it/s]" + } + }, + "67f6d304a779470da994d819a825d1e9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "67f87618a5944bae9c3875356563f61b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6801dff3175545f69d35d3219e3d7fcd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_9dd43b56b85d4581873c1376cdf6cbd4", + "IPY_MODEL_bdc789dda4db4007949298732bcfaf17", + "IPY_MODEL_eac431f7c30346d2a14ca7e19ef1c49f" + ], + "layout": "IPY_MODEL_2387eb6414e042ec94b6d8456cb0661b", + "tabbable": null, + "tooltip": null + } + }, + "680bb1809d75429b864a887ac5295f87": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_6b4aafd2d56b493eb5ec448c11853175", + "placeholder": "​", + "style": "IPY_MODEL_52d74280b7ee46a0ac2a92833aa91683", + "tabbable": null, + "tooltip": null, + "value": " 367/399 [00:01<00:00, 354.81it/s]" + } + }, + "684dc2d3caa84db0964a014a338efaa3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_86221ceb3bb143909d134730daa1f688", + "IPY_MODEL_f862a37fdccb4249b59851554d9d90c2", + "IPY_MODEL_7c2fd7cd242c45ec816277879529d441" + ], + "layout": "IPY_MODEL_cfb39d3fa8bd4f38aea2de288a4d93fc", + "tabbable": null, + "tooltip": null + } + }, + "68578e172c194160a613d16c6a6b5eaf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_ae11e88505c8462881be1d3cec128043", + "max": 499, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_3d268026f4a44750a9fe0750aa5b9354", + "tabbable": null, + "tooltip": null, + "value": 499 + } + }, + "68afcc9f2dbe4030982ece5bc7294ce3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_7b7cad16e2e24ecb8715a6d5b29eb469", + "IPY_MODEL_bb91ef8684f14e92a7d33b9db78e6522", + "IPY_MODEL_06c542b4f87b407499fa3333e2de571b" + ], + "layout": "IPY_MODEL_42a07055564948abacbcff5422ccc5c1", + "tabbable": null, + "tooltip": null + } + }, + "68bef75b3c654d27bc2c65bc0a29d940": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "68eb60fc9da1475592a83cd04a5031f9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6932fdc9d9184aab96f40553cd268888": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6942e119616440c5ae04c4009659fdf6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_5570957f2a6c497fbd40283a3c0f5496", + "max": 49, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_ba62cfdfe1dc4e4da6f225330f050eb6", + "tabbable": null, + "tooltip": null, + "value": 49 + } + }, + "694b01eb169b48dab92ee4b39d34f7e4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6950a2e5bdc040a6a33bd80d60cc9b34": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "695cee95d751499db8f64b7eca530791": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "69a5808d20fa456988d9b6f59f947684": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "69ba337a363f43a8a48c0388e954c14b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_d0f1dc6dd7874991a453cfb2cb76e508", + "placeholder": "​", + "style": "IPY_MODEL_f46eca7df02f4203bc30550cccb05692", + "tabbable": null, + "tooltip": null, + "value": " 369/399 [00:01<00:00, 364.66it/s]" + } + }, + "69e8bd2b865545d0b5b015c4d2eb5f01": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_b2cde72def81416db0b9c3c47530cc38", + "placeholder": "​", + "style": "IPY_MODEL_9679d122977449e89c61e767f362be84", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  97%" + } + }, + "69f4350a7c844c6a82b533745ee31e8a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "6a112e2eae2e4a049d1c7d5c8363d06e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6a42e66e95064a438ebe8f6cd78151c7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_c8d5ef092d1d4603bda06b82071593ca", + "placeholder": "​", + "style": "IPY_MODEL_5942ac1fd4c34a7c8af80120b7e098bc", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:   0%" + } + }, + "6a537fd1a1c249d88bc22d4690a76b75": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_33e8a76effcf4002ab4aa1eed232c291", + "IPY_MODEL_edf283d5063c494d8de6170bb093172f", + "IPY_MODEL_c12b307bc25c4cc4a2855bffc9c5e490" + ], + "layout": "IPY_MODEL_4c996d7d8ef547c6af0c85f1ad392170", + "tabbable": null, + "tooltip": null + } + }, + "6a5a422ef8714d379be8c6c8d2fef118": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6a70333c3dcc49e588b2d7ca2fe69ccd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6a71b93217e4456687188de66e6ef93e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6a8578ea1efc448f99a3c6bb34fe5335": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "6af1b8be0fae4ea8b49862a4698469ab": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6b1ed5d530bf4ba99034fd68289dac13": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "6b4aafd2d56b493eb5ec448c11853175": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6b5b2b4eb097432e996ebccfbc269567": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6b87a941d4fc4135b2bfc1268da08483": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_b408e6a7be504c48a10b39d1d6754bb1", + "max": 499, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_97ed54b6cbb34c45bdb68c20962da6a0", + "tabbable": null, + "tooltip": null, + "value": 499 + } + }, + "6bcaabafd9ed43cabf6de9ab858a73fd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "6c0e6203ee3d4ff5aad83f5faa85a1ce": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "6c24396932714be29a4bb20c321da514": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_2f2bbd8357da451091dbc30a78476caa", + "placeholder": "​", + "style": "IPY_MODEL_58044bf7b14f4d168f1a061775f28157", + "tabbable": null, + "tooltip": null, + "value": " 0/19 [00:00<?, ?it/s]" + } + }, + "6c24fcf5223645afb8d7245f88f1036b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_b1fd6d5f8bd14bfe8b17cd9d0365dbe0", + "IPY_MODEL_d3635dfaf62b4a8c9e57873ff9288933", + "IPY_MODEL_1149599e5af94bd5811ba75eb36bec30" + ], + "layout": "IPY_MODEL_a43bb73a03c94f809f6bfbcbe348dcff", + "tabbable": null, + "tooltip": null + } + }, + "6c3a197e403e49c098636b5be9572818": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_00ddcba768f2455bbd3f6d393cf0e659", + "IPY_MODEL_6942e119616440c5ae04c4009659fdf6", + "IPY_MODEL_2e2ea624b9754e9eab65970f6234780b" + ], + "layout": "IPY_MODEL_e1d73b3a193a4f31a2b6ce3a9d8de812", + "tabbable": null, + "tooltip": null + } + }, + "6cad2e859a37425092ddac5942f613e2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "6cbd64db129f4f0bb4a38afe64ab9fbc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6d199f3efbc34732a23ce1ff7c9270c8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "6d2bae6b665a48d4901b783a4c65ab30": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6da5553a89574b298e471285c26b2a3b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6db9de00a119405a8a5e66846bdf8128": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_868d200984f34b76bc3e2d7325f6f782", + "IPY_MODEL_84995f93cf78464a95c941fcdf734415", + "IPY_MODEL_790fc8a8db48481b905baad049a8a3cf" + ], + "layout": "IPY_MODEL_e46cd31731cd4b8e9e584c6cac759d68", + "tabbable": null, + "tooltip": null + } + }, + "6dc8bde88e28418d986b723dd962e76f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6de7f42dafb741e5a8402de2b4b91feb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_6a71b93217e4456687188de66e6ef93e", + "placeholder": "​", + "style": "IPY_MODEL_d39418e9914e4a8fa76cd325562fcf83", + "tabbable": null, + "tooltip": null, + "value": " 969/999 [00:02<00:00, 360.56it/s]" + } + }, + "6ed6e46243f3408ea9d7bfa6037d2e7b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_523ddd1d3ad643ff95bcc2ccc43addfb", + "IPY_MODEL_368b0548bd9647f28b2f3d5c7399f865", + "IPY_MODEL_42eba7a883954c9398f6234bd2c34728" + ], + "layout": "IPY_MODEL_9b206ad6aaec4773b8b3a8388d67c323", + "tabbable": null, + "tooltip": null + } + }, + "6eef21ee72594bdfaadb724457930c01": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6f692c43749f4f899eac406bc3132a1d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6f7286e663514b54bec3b1b538d72338": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6fbe79bc11584675902b3edc7cc44782": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "6fd53aa9c116481289bbac5e00168f12": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6fd5746a6d5e4c7f8e026fbe22333b3e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "6fe8246e8d594706b86c84d7a62ee7f5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "6feac2f64e5d47c2a83d74c8e0dcc539": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_1465ca55900843ceb59658b2b6f733a6", + "placeholder": "​", + "style": "IPY_MODEL_f121f860b8db4236b9c00f3c5523e048", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  91%" + } + }, + "6ffc473f5ec445f1b9f2bc8251ba5dee": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "700a163adba84e838c7b256c5bdd96e9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_d958316f5210497daf8211068f41e12f", + "max": 79, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_2dbfe8df36f940e6a71e17fa76d83bdb", + "tabbable": null, + "tooltip": null, + "value": 79 + } + }, + "703f96c620f6473ba611f6a1738d45a8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "70547f4edb4a4dd5b87db110c89d13b9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "7072d198ccfc44eca813f458a163c6ec": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "70aeb88f2d7c4c068ea3d2b725c4f753": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_77a6c0f75fd24cb4b5f0085f43dcdeeb", + "placeholder": "​", + "style": "IPY_MODEL_32d1aa79e800431591903cdee0b4c3e9", + "tabbable": null, + "tooltip": null, + "value": " 776/799 [00:02<00:00, 338.16it/s]" + } + }, + "70b54da7dd874fe5ae6f400a47b0f781": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "70c55b604a37448cac0043695794e1d1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "70c60ea1aa114e7584609188edf06256": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_3073387c75ca4ddea20a8563bdcb897d", + "placeholder": "​", + "style": "IPY_MODEL_64fb14e7d9c44b9d94db8a1b6fa88f36", + "tabbable": null, + "tooltip": null, + "value": " 887/899 [00:02<00:00, 363.76it/s]" + } + }, + "70cbcc2a16864e45ad9ea55fefb77f48": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_e44b30a72b774bc5905ff7bc4ab17629", + "max": 799, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_5379c9731539432eac2f83387c106c4c", + "tabbable": null, + "tooltip": null, + "value": 799 + } + }, + "70df042231194fbe82ead72f6b9f2e60": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "7112463e81b045839ebfbb1667af164e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "71668fd6d677488fbbeea29f7c9a2a0a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "717487e4c2c14329a81d3d95f13dfd64": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_cc6f4ec9dd164fc7bdb8b702cb8de8ba", + "IPY_MODEL_458130e0e4ce453380f6671d58cb0610", + "IPY_MODEL_9e03ee6506ee4c4db8f1897fbe116601" + ], + "layout": "IPY_MODEL_087f9233505e4f38b5e276a8fb744d62", + "tabbable": null, + "tooltip": null + } + }, + "71cecd7b751d43969aca71d9db9b5767": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_4c26738c84a245a8ab72b75d5a5782c0", + "placeholder": "​", + "style": "IPY_MODEL_e1165605afa542aca4d73fe573eb7702", + "tabbable": null, + "tooltip": null, + "value": " 17/29 [00:00<00:00, 169.12it/s]" + } + }, + "723e0d886f394340a4af62a692898f32": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "7285f3cbf7c84a0986d0d5a459ada8c2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "7291352398564cb89a8fa097aa96e49e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_1078e72727fb40578ac947e90578782d", + "max": 59, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_61c54d536b7e4141a7ae00384cec20e0", + "tabbable": null, + "tooltip": null, + "value": 59 + } + }, + "72fa5be009b1428681afd6ea2d3aa600": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7347e2d2b17342ef84da80cc00a6b36d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_9afb98d7126747b5b80672d25bf0893c", + "placeholder": "​", + "style": "IPY_MODEL_dd9ac98c3fe144c6bacd968b4eee5976", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  99%" + } + }, + "7353f29152ef4e619142ca03867eb216": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_1b8d05386e7942a9beec9e6f906f538d", + "placeholder": "​", + "style": "IPY_MODEL_1109ba3c8a164801a60f1d6eef1f9f56", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  91%" + } + }, + "73a8e1e7285d4478928bba34cda0c13d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "73e09763d0a94859a5156960d0be26eb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_4944d3da1b524f949fe4e557659629e5", + "max": 999, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_b7f5534d78924cc6940b0d413abfd820", + "tabbable": null, + "tooltip": null, + "value": 999 + } + }, + "7421c9b289f74f3d9420ad30d50b0f6f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "742edab5440f46f2ad4ea31bf7c82326": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "74a381d409c04c7d9feaf6039f551c18": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "74d2e8bc8f89480da859936e7cc65085": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "74ebc23a78ac49869b504d3ce0f319b5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "75122864ec6847fd9247373a01af451f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "7526d925e31d40f680e88fe17803ac2b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "756dbf15767f4d0598abcc9cb70f4b75": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "75786ef0047e4daabf4ad9c2b42786c0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "75a22ce6730e4173bd312b9fb01aeff5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "75c87d59d5fd45bb8890383755e748b8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_00ab537bb0dd4bb2aec926f542d533f7", + "IPY_MODEL_7bb3dd6db19a4f3ebfd541c7a1084565", + "IPY_MODEL_8d547599e9e1444fa43ffd89d8db9450" + ], + "layout": "IPY_MODEL_42ca03e38d9c4653b1454dcfa8bc6188", + "tabbable": null, + "tooltip": null + } + }, + "75f6bf0cd9b94e139a480b13cdb7629b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "75f7c3a2ad1b4c66af6bdbc7569dd562": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "7607e3b62c5e46fb961ae68e2cc7996c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "762ed4b07e8c4367bea77d1e57740c1d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "76730fc61384421da65d47ea3758d466": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "7687b4c8364a4963abe985780792c7c2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "768a28368c5340ad93e460b279359387": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_a187df2ebeb44b62813b0559b2e3b406", + "placeholder": "​", + "style": "IPY_MODEL_fb2d4e6ff12443fda45af43367604f1a", + "tabbable": null, + "tooltip": null, + "value": " 72/89 [00:00<00:00, 357.49it/s]" + } + }, + "76c042875c5b4193a77e8e56bb65e422": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "76d9e0ea8bd14332802ebb8ba9f2067b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "76dc82edf3544e2389b85f42f4264905": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_09bc7553943a451db3d1e7c4c0167763", + "placeholder": "​", + "style": "IPY_MODEL_8d8d4a581f804131ac5851cbceb23f09", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  92%" + } + }, + "77a6c0f75fd24cb4b5f0085f43dcdeeb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "77ebf88552fc41d5a5f0c5e1221ae215": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_42ccc5e639b546b9bb7299dadb9ae7ad", + "max": 39, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_1d3d8307b76c40da956fb3eb6d0b20c3", + "tabbable": null, + "tooltip": null, + "value": 39 + } + }, + "77f4031b11cf4221a822f828ae77486e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_5c01fc665d164c62ab8450dcfbd10bb9", + "placeholder": "​", + "style": "IPY_MODEL_cc83b4ec96674f2b8af46552fcedd93a", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  82%" + } + }, + "78919eaaede04982b64631c67dc473b0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_d9a4a04c80cb45c1b73fc55737f96e2f", + "max": 299, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_bb49305c3af74a308e33f574fa5484cd", + "tabbable": null, + "tooltip": null, + "value": 299 + } + }, + "78a1c9ce03b247e29bde5cf2cd868efc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_4561344306f743fa84bfcd4ca3faad81", + "placeholder": "​", + "style": "IPY_MODEL_940b71325dd74ef1a6ce72503443b3be", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  74%" + } + }, + "78b3e207ee2045ea9510bba15b2873b5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "7909d6ca3f5944a9bf46cf8319aa6da9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "790fc8a8db48481b905baad049a8a3cf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_c8f528ad011b4bceb1af3db800487ba3", + "placeholder": "​", + "style": "IPY_MODEL_e14297571c0e4af8a43b9c98f1e9628a", + "tabbable": null, + "tooltip": null, + "value": " 696/699 [00:01<00:00, 363.06it/s]" + } + }, + "79130a2cb7014a19b946d2b50db39108": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7965c2da37514e1b860aef0e35d81843": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "796bc589404642bb951496bd95004ee1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "797d8fb72ab043e4a8939caa006de9e2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "798f0ea056f8403ca07fb0e4162571f8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_406927b85b3048159b0df61910f254b3", + "max": 79, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_db2b379d38a74a7996a712bb339ba6c4", + "tabbable": null, + "tooltip": null, + "value": 79 + } + }, + "79952c9a9ca64892b392cb29335ba17a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "79a40931a67a41399ce56fc2a2b7ac89": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "79db4b3171064ff3978cfe64d3d2fa37": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_188027fdf4ed4ef09dad099b06c01ae6", + "max": 799, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_49d208dff05741d0a68402663c5aa060", + "tabbable": null, + "tooltip": null, + "value": 799 + } + }, + "7a0d9f508cc64ea585f7b96d6cafdf7f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7a64f216006e44bc9f30528179470a56": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7a829f82d7c1421cbb720a434f9151b5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "7ab05e2a4cdd4bfd883167f38ef76a13": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_d2ddb887eed049ebb0ab1affe12ea42e", + "IPY_MODEL_8cbb58f7a5cc46e8b529786e5c447edd", + "IPY_MODEL_c4b6b898846b4fdbbdf55c1d23641015" + ], + "layout": "IPY_MODEL_46bf5dbb99ea494d8501a099615ef7a2", + "tabbable": null, + "tooltip": null + } + }, + "7ae345151c5a46afad1a453ade8be695": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_2c4042132ebe4f18b90cc76d94ebb5d6", + "IPY_MODEL_fb1c7afda849493986881acee2b7fda7", + "IPY_MODEL_fa8d2922585e47989ae328b3db783c96" + ], + "layout": "IPY_MODEL_7de82fa1c1504f1d9164a8b8225badb1", + "tabbable": null, + "tooltip": null + } + }, + "7aee4d2038e5490bb8f45d3538ae1df1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "7b6f284007e347749f3254cc1cd352e2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_7ebfa11b72e94f809cb4bdfc1841e2a7", + "placeholder": "​", + "style": "IPY_MODEL_d4a59925d41f4714afe016dec372cae4", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  97%" + } + }, + "7b78816f860644e8b4460f40366e8b8d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "7b7cad16e2e24ecb8715a6d5b29eb469": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_0d8c517392054f02957a8e34aa46ef46", + "placeholder": "​", + "style": "IPY_MODEL_c6f29e89b2e745199cd9425ebcbbe3cd", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  52%" + } + }, + "7b7d3016f75342c280b55daaa55796a2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_df381c6c534249e0b0cc286ccfa871a9", + "placeholder": "​", + "style": "IPY_MODEL_f0312c9d3c4149bb89f8d2e02ad458cd", + "tabbable": null, + "tooltip": null, + "value": " 295/299 [00:00<00:00, 362.85it/s]" + } + }, + "7ba32272fc624659919e5f44086fe82e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_244d80f7d02b4ffabfbe6199ecb7f500", + "placeholder": "​", + "style": "IPY_MODEL_02f3a258b1134729b738ef9faa00f48b", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:   0%" + } + }, + "7bb3dd6db19a4f3ebfd541c7a1084565": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_879e145889dc4b978d8562faa92ec229", + "max": 69, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_94558855c7724c06a1bab49b38b4df07", + "tabbable": null, + "tooltip": null, + "value": 69 + } + }, + "7bbec7ea432340de99f675f9d9c64d7f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "7c15bc4381674e079c404cc42c8c7b8f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "7c193ad6cd9c42d9befc3e39bb4745f9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7c2fd7cd242c45ec816277879529d441": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_6d2bae6b665a48d4901b783a4c65ab30", + "placeholder": "​", + "style": "IPY_MODEL_317595359d6840338f3cae4eabb6a127", + "tabbable": null, + "tooltip": null, + "value": " 72/89 [00:00<00:00, 358.01it/s]" + } + }, + "7c3959e149ab462ba6ea4f2630db92c2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_c31b7e861d8d434c942059cbc3aa8c46", + "placeholder": "​", + "style": "IPY_MODEL_7c15bc4381674e079c404cc42c8c7b8f", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  99%" + } + }, + "7c3d29e225e24d408c436977640994a3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "7ceb7f50be444f489587261eccc85900": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7d5ea3d0cbb34492b8f76b05274a8590": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "7d7fbe0cffde42a08acfd14d5278929a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_c53b12a5e77e42fe9ecfceb69fd60ce3", + "max": 69, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_947843a5d882496c8e34cc12356dafbe", + "tabbable": null, + "tooltip": null, + "value": 69 + } + }, + "7de82fa1c1504f1d9164a8b8225badb1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "7df84bda0ac74b1b8e9dd64bda80210d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7e26015500fe4f5a82b07bcf92f328d1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7e56697f340e4fa4bd204f3e7b3f8ff2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7e70f9f1e75d4c58a80c10a4c08870d7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "7eb4a998e8fa48d696ee4de69e090856": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_2440e333c75041c1b28a9ad90238cca4", + "placeholder": "​", + "style": "IPY_MODEL_762ed4b07e8c4367bea77d1e57740c1d", + "tabbable": null, + "tooltip": null, + "value": " 0/29 [00:00<?, ?it/s]" + } + }, + "7ebfa11b72e94f809cb4bdfc1841e2a7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7f309413defb45bb966bf925a2d16ef4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7fa232374d634f96b82babb9aa41da4a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "7fa96e9bc18a4cabbba007218253de43": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7fb78a276ec649c3ab4fb1157baa8da0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "800500470f3a4bd9976b0a1605c64c78": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "800ad6baefba4d41a5d29048d1d3d9b9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_99bc652941124363a1eed2abebf849e5", + "placeholder": "​", + "style": "IPY_MODEL_6fe8246e8d594706b86c84d7a62ee7f5", + "tabbable": null, + "tooltip": null, + "value": " 72/89 [00:00<00:00, 255.20it/s]" + } + }, + "801ae2f2aeff464485df714ee32b091b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_69a5808d20fa456988d9b6f59f947684", + "placeholder": "​", + "style": "IPY_MODEL_33aeabc350da4651bec79df8ff64562f", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  99%" + } + }, + "8058a1b3d13a4daeaee5357c6551e564": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_fee27e89bf564c96af3e11528649ab64", + "placeholder": "​", + "style": "IPY_MODEL_ba7b5a0ba38340729c6800c495a82a7a", + "tabbable": null, + "tooltip": null, + "value": " 181/199 [00:00<00:00, 359.53it/s]" + } + }, + "80653a42679243279810a4739f562709": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "8077bde4ce534c39a5d0b2837d3e44d4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "80c480500d96438c87e22ff10b5b16e0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "8100c3c3f3e549d39c669afdf6656465": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "8127c0f2b5a5487a95ab2e81eadb18d2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_47966c62f9a0427ead6a81d32aef4ffb", + "placeholder": "​", + "style": "IPY_MODEL_b9216d527d68471a96f37c9fdf870402", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  99%" + } + }, + "813aede5e317485cb728287ec1b4ee6b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_b5ee8f74d85d46fc83928cf15ec63619", + "IPY_MODEL_70cbcc2a16864e45ad9ea55fefb77f48", + "IPY_MODEL_6022557a45bb432aa79b3767d6cd46d8" + ], + "layout": "IPY_MODEL_955ec825d640487e846b7afc5a14bf01", + "tabbable": null, + "tooltip": null + } + }, + "81596e2291ac4d60bffed4acc03b4eec": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_2e2b910756ec4e7780d4c7a09d3c699c", + "placeholder": "​", + "style": "IPY_MODEL_ae796170aafb41ef9724a108bfbcdf14", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  92%" + } + }, + "81cc56809e4c4d918ac0364257a100fd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "81da6dc3eb504ee29431dced068f667f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_7965c2da37514e1b860aef0e35d81843", + "placeholder": "​", + "style": "IPY_MODEL_80653a42679243279810a4739f562709", + "tabbable": null, + "tooltip": null, + "value": " 36/49 [00:00<00:00, 353.57it/s]" + } + }, + "8205d636cc4b4569beaf4119eaac714a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "822c77d06cb44f02b677facf061164ac": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "822d29863aa94c20ae900523f78273b2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "825c17e5f75f469aa183d288ff12b41f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "828fae556e4a4ed1b464a3195cba6806": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "82b1b162c473485c905ecddb8f3ba9a6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_e98c04a84dd2409bb998dafb2755c106", + "placeholder": "​", + "style": "IPY_MODEL_02427ba1c88340928ae2a9221dc3bf78", + "tabbable": null, + "tooltip": null, + "value": " 963/999 [00:02<00:00, 359.83it/s]" + } + }, + "82e9b6bc286a484fa5d09fc24ef653c1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_3cdeacc78c024e93b82b64fade202e8e", + "max": 399, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_6368753371f24353b2c70e7c3b70f350", + "tabbable": null, + "tooltip": null, + "value": 399 + } + }, + "82f323b0c4d8495bbe8ae0a81fe86e6f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_3ba2b12f61484c80b4e340ec57482816", + "max": 9, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_5854d51b6471462c86ee1f2546501e4a", + "tabbable": null, + "tooltip": null, + "value": 9 + } + }, + "83bf380dc89945bdb86fd7e917d3f7c5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "83eca6f29d034bc0ba02a5efeaa0a0a9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_35adcf7acf6d49dea6a705d97859cf37", + "max": 19, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_4093bcd4c7dd4e1a9e0bc440a932014e", + "tabbable": null, + "tooltip": null, + "value": 19 + } + }, + "8405d160f8b74ad9a34d604323539872": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "843d4058bb49470ab9604abbce518aea": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_95851d1614524ee499bdfd925d3bc5d9", + "placeholder": "​", + "style": "IPY_MODEL_43e142d27a804525ac6025af8eb4167b", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  95%" + } + }, + "8450550fc6024610a6bc525fad7664d0": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "84995f93cf78464a95c941fcdf734415": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_a0189c9fb18c4402923666cdd07a0095", + "max": 699, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_cece0c2c564b45c99a80874f42eb277a", + "tabbable": null, + "tooltip": null, + "value": 699 + } + }, + "84a197ce9f1448f8a167692036264ff0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_36bc4c06ad2a41488b65c86f172fd797", + "placeholder": "​", + "style": "IPY_MODEL_c921c87c7bd443e5becb5d4c0dc16cba", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:   0%" + } + }, + "851ab66845154dd691d6ec663432077f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_aaf496ae361a42b19fd29f4dd9e97cb9", + "IPY_MODEL_cb25640fd0154a4d827daec1dbf7ec27", + "IPY_MODEL_1557d81245854706ae3e7d470f0d33d1" + ], + "layout": "IPY_MODEL_05f173a45ab24d17b481680442e99912", + "tabbable": null, + "tooltip": null + } + }, + "854ec3a8d681477bba97f3a245f61b66": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_0dd68639fb61466d8c4e4dd16f34d07c", + "placeholder": "​", + "style": "IPY_MODEL_12ae94c01a8d4871b23d5b6cba01d4e6", + "tabbable": null, + "tooltip": null, + "value": " 995/999 [00:02<00:00, 336.60it/s]" + } + }, + "8573f92cb07e4628a65c4bcac66b95b9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "859646c302f64c5cb7fb6d9479b0f0e3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "86221ceb3bb143909d134730daa1f688": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_4a38d27a221040da80dc660607276854", + "placeholder": "​", + "style": "IPY_MODEL_0b3645ef51674ceeb20cb60cfb3687c4", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  81%" + } + }, + "8662766e5e3f411e9c6e2ba4e37b4f78": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "866a90a0cf0c4e93a1928109d3ab9cde": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "86801af0b1724e8a99011d85936dd519": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "868a9a012091425bb57ca05d007774fb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "868d200984f34b76bc3e2d7325f6f782": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_79952c9a9ca64892b392cb29335ba17a", + "placeholder": "​", + "style": "IPY_MODEL_f01005a3aff94d30b42e4f404f1eebd1", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.: 100%" + } + }, + "873ffd5da8b949738a6f6bc01a08964c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "875174c479bb47f79e5cf2c7d6cc0835": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "875c68cbdfcc4f289ae2b40519388d4d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_be37ae18be2344cc8f772a2a021d5789", + "IPY_MODEL_c5d432a4377b4c0491e32157f5ede3cb", + "IPY_MODEL_d2b985e214fd43ed815e5c8e5fcbe54d" + ], + "layout": "IPY_MODEL_99a0651c0e834c1d82f906131b355a32", + "tabbable": null, + "tooltip": null + } + }, + "879e145889dc4b978d8562faa92ec229": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "87cbd710527241e9a11d41465c967c0b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "88a30f9aebb84b3fb04956d9a4ca4032": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "897e4bd5aea343d8bd32f50f41889917": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "89b174b280b54c0496387e5f77a70aae": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "89cc589a882048f7bfdeae7711ded275": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_14d7440977dd4a0a8f665aa4c814c013", + "max": 299, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_033e9d6c632d49a89dfaab95604e100a", + "tabbable": null, + "tooltip": null, + "value": 299 + } + }, + "89d7a96904334316b82982840d76a401": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "89e0bbabedc847349b39bc75c88c9736": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8a1c97e6b1be41ed88ab99e243255ce7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "8a5f6b005cb1496b95a103356e3dc285": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8a8e180fa3b34b89891ca51d5695aea6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8aa5c35d34274ec887dc7cec48e11e23": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8aa98fcd15574e298f63640511291eef": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "8aedc79dce4e45da9ce07692a4a5cec8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "8b075f11215b42339e9c86d708a021f9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_c37961812de6410f8f4d1aa6569133e8", + "placeholder": "​", + "style": "IPY_MODEL_97adc707997c4ce8974d921732d27441", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  92%" + } + }, + "8b55a273538645c4bdedb9d5a0faa07b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8bb8d988e8734e4c8d6b65a113db005e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_800500470f3a4bd9976b0a1605c64c78", + "max": 799, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_2bc60aaa3620476ea0f5690bb12dbee5", + "tabbable": null, + "tooltip": null, + "value": 799 + } + }, + "8bc431a1a85449eeae2b277fe85c7b22": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "8c00761acac24a84ac935fbb4403bb1e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_182311da489b4aeab46ef8374b1972cd", + "placeholder": "​", + "style": "IPY_MODEL_30ea34fec1184bf19aeae46cdffcca29", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:   0%" + } + }, + "8c309bc857a1409f896ec3dc6a3988da": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_6a70333c3dcc49e588b2d7ca2fe69ccd", + "max": 599, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_1730ffb71cfa42f0a45291929d0e52f7", + "tabbable": null, + "tooltip": null, + "value": 599 + } + }, + "8cbb58f7a5cc46e8b529786e5c447edd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_0643c852f8164b8a950b8438a28531bc", + "max": 799, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_ad4aaf1410de4c19884a38a61cf2d918", + "tabbable": null, + "tooltip": null, + "value": 799 + } + }, + "8cc3d6685a8a4516b8bf1773001baae0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_922159f64fda4e7a87a28c6ed8949a68", + "max": 599, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_ebebef6d182b40998d4c8cb3482dad65", + "tabbable": null, + "tooltip": null, + "value": 599 + } + }, + "8cd777158a9f4b80ac84da6c3ccd0f93": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "8ce8f7bcbb054863b63a46a3cd231d0a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_eee4f68d4cec4ab99fee05e5a9ecf34a", + "IPY_MODEL_9a9fa94f32a5456d94ee2aa5b5550546", + "IPY_MODEL_9b1b7233ba0c41be86c6e4acbd882349" + ], + "layout": "IPY_MODEL_274d5383ac43426bb2a3ad46a6143774", + "tabbable": null, + "tooltip": null + } + }, + "8cf2b527f4b5458c95a9ebc0c115cdd4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "8d547599e9e1444fa43ffd89d8db9450": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_7909d6ca3f5944a9bf46cf8319aa6da9", + "placeholder": "​", + "style": "IPY_MODEL_32aa36340c2241b590dc3693552d1319", + "tabbable": null, + "tooltip": null, + "value": " 36/69 [00:00<00:00, 354.22it/s]" + } + }, + "8d55a1ae6fbc4bfab18d5625be079373": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "8d650c457b4d42048adda9a925a2e97c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "8d8a81ffd06a4e26a6526391c8e75466": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_40622752c6ce4805b010ef38c70ac776", + "max": 299, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_3620d2774665429a9fa8a6b510f7c6c2", + "tabbable": null, + "tooltip": null, + "value": 299 + } + }, + "8d8d4a581f804131ac5851cbceb23f09": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "8dcf181c55b7482f8ee16666dc8b8676": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "8e8859e575224fa8b8c7b6dbc23bc628": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_48c392144bb8446eb9ae1cb4a34fef3f", + "placeholder": "​", + "style": "IPY_MODEL_c045b41eda0c46abbd020a9e64f17aef", + "tabbable": null, + "tooltip": null, + "value": " 73/79 [00:00<00:00, 356.01it/s]" + } + }, + "8f0f556f01794e1eb87769c2fd1213e6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f2d74cb76e534abc949498140ab6f14f", + "max": 899, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_1202fd5ef10741d4930d50263089b513", + "tabbable": null, + "tooltip": null, + "value": 899 + } + }, + "8f4e91bbf0bb4777ab17b2e196806154": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8fa39122b79f4c2ab144890149bac228": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_6dc8bde88e28418d986b723dd962e76f", + "placeholder": "​", + "style": "IPY_MODEL_78b3e207ee2045ea9510bba15b2873b5", + "tabbable": null, + "tooltip": null, + "value": " 36/39 [00:00<00:00, 355.00it/s]" + } + }, + "9002601ca82340cd832f6c7b0117e3c5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "900cef3116ac40dbab13f4199ecda0ec": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "90df3d1f323346d6bf071601bd83e2e5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_aa996145d23f451586abe23a75e1c846", + "placeholder": "​", + "style": "IPY_MODEL_cb877600828f4dd5ab04c06420361ef1", + "tabbable": null, + "tooltip": null, + "value": " 591/599 [00:01<00:00, 364.50it/s]" + } + }, + "91a21eef705d4fd2b428e47ea6a31022": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "91aaba070560491e88986044a99ee9cd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_de5677865f72474f8ac090ffe895ed78", + "placeholder": "​", + "style": "IPY_MODEL_3fc42343701e4e0eae1c80b9f981ded0", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  96%" + } + }, + "922159f64fda4e7a87a28c6ed8949a68": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9229831101224676a7dbea9ee203b3ef": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f065899c862944ddb82bc77b3352c825", + "placeholder": "​", + "style": "IPY_MODEL_5a434a2eae7641ed849fa331173444e6", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  99%" + } + }, + "9231cb74058044aa96c81eb63b651ac2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_0b13a5d3a66f497a8f64b903a3d6dcf1", + "max": 699, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_68bef75b3c654d27bc2c65bc0a29d940", + "tabbable": null, + "tooltip": null, + "value": 699 + } + }, + "9236d754207b4335a55419b9843478a5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "9252c0846a074377b50045e8bf787f39": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_32a71e4cc23c4214b4936dc058f957c4", + "max": 599, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_47ecda5260d64c2db5b6eb2e88d3d5cb", + "tabbable": null, + "tooltip": null, + "value": 599 + } + }, + "9268c7d1802d4930b5dcd10c57e99466": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "92c59c6ccfbe445392b1c5134017e1f7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "93205096546342df899e6bd0dd1ae80d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_5f7100c8becf41f7ba530467ce4dbd5d", + "max": 399, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_6603f689299e476cb632d4be04ef0141", + "tabbable": null, + "tooltip": null, + "value": 399 + } + }, + "9352b342bdac447181d442f9d6721d34": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "936410a4ed2d41dc880a8d9284a6c7fd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9366946ef7e14c51ba46def7c98e074d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "93dd196c9e1d445ab8ab0de1102fc6fe": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "940b71325dd74ef1a6ce72503443b3be": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "9411cd45d672462f9e65c3c6316c61ab": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "944a3d36f7aa4379b2a983bc7ac55016": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "94558855c7724c06a1bab49b38b4df07": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "94681603c5d04894874724741aaa33bc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "947843a5d882496c8e34cc12356dafbe": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "94bf5dfb8af74d4daa2c9bee5d7c3d5e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_6f692c43749f4f899eac406bc3132a1d", + "max": 89, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_be500d18fc1f4bfa8a572fb137967f31", + "tabbable": null, + "tooltip": null, + "value": 89 + } + }, + "94d3ef450eb546e1a20802055ca484a4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_a81df8077add49b1b70ef2655c07c4e7", + "placeholder": "​", + "style": "IPY_MODEL_3b272a1d7e334f4188d3358c3347ea0a", + "tabbable": null, + "tooltip": null, + "value": " 775/799 [00:02<00:00, 361.28it/s]" + } + }, + "9535f31594da4ab3b63a4833791fd08d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "95398bb076a1440cae2c3217a3b56c95": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "9542360425234377a470cf10f3b02b36": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_584e89b065ce458fa98822891356173f", + "IPY_MODEL_e2f6700c2eb14a6fbdae9951720a03e1", + "IPY_MODEL_680bb1809d75429b864a887ac5295f87" + ], + "layout": "IPY_MODEL_e517229c687345eebf8e21929bf28940", + "tabbable": null, + "tooltip": null + } + }, + "955ec825d640487e846b7afc5a14bf01": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "95851d1614524ee499bdfd925d3bc5d9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "95e384cd1d254baeb3afbcef94dce794": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "95eeaf0ccae44001b3c0d3fd04e753d3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "9622fa15bcf74c7c9643f29b64c6ebd8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "9651d16bc4d94fe3b691d21de516b98a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "9676ed1964754239a89e1d2fa069d79a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9679d122977449e89c61e767f362be84": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "96838a1e0d924d60932338d8c3b54981": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "9696fb40fe7c4862b76e8a98998984b1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "96b70992ca594ea3a9b72e3c98a47a42": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_e3cda54caf9048408cb11ad5e3c6b19c", + "IPY_MODEL_c8d288224f454e9db253a567893fe151", + "IPY_MODEL_1c05050d1bc64b3a96c8e0270d11911c" + ], + "layout": "IPY_MODEL_67d4602d36d5415e9618ca500f54744b", + "tabbable": null, + "tooltip": null + } + }, + "96d4ed7b866a43998b0fba08c9272608": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_66ebc0ee6f6f4facad2e53077e32c199", + "placeholder": "​", + "style": "IPY_MODEL_df68ed583e76420e9be461973fa1a024", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.: 100%" + } + }, + "96d772ab6af6456cafc8478adbb51fc5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "9729768eb1444460bec18b68f8f70ff0": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9759a4eac7dc4873ac30d755c457544a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "9773198c89ef4a28b968888b6b2e380b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "97adc707997c4ce8974d921732d27441": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "97ed54b6cbb34c45bdb68c20962da6a0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "9827aebad82d48bd8b8b880e277572fe": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_cc27f756a8e34122a05dd186ee8f17b4", + "placeholder": "​", + "style": "IPY_MODEL_9535f31594da4ab3b63a4833791fd08d", + "tabbable": null, + "tooltip": null, + "value": " 474/499 [00:01<00:00, 360.32it/s]" + } + }, + "982a7911c5c04321a7c403bb3a7b9f96": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "988ad3fd739e4c34ab91bdacc6268a99": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_a4308b23f79c46d9baa44c7e1d3d8876", + "IPY_MODEL_8c309bc857a1409f896ec3dc6a3988da", + "IPY_MODEL_14b540bbd78845488fdca7e097b222b5" + ], + "layout": "IPY_MODEL_13c1e395326b4b698d4f4b465da7c537", + "tabbable": null, + "tooltip": null + } + }, + "98bdd8aeda3e426bbdd7d1b9093fbdc1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "98c6ea1e637a4ffdae72eb035046ca77": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "98cabba1994245fa8898c1621e7d6472": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_ea70cd5b26e54df29b9a55e658a69e93", + "IPY_MODEL_73e09763d0a94859a5156960d0be26eb", + "IPY_MODEL_82b1b162c473485c905ecddb8f3ba9a6" + ], + "layout": "IPY_MODEL_99c5135e1cdc41999f6e9f56132ac0a0", + "tabbable": null, + "tooltip": null + } + }, + "99016dbb40fd40a89cb69604e5c18987": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "991ee200fcd342c3b1feccbd99b7b3bd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_529b1ec4105944cc99989d87eb5a16d2", + "placeholder": "​", + "style": "IPY_MODEL_822c77d06cb44f02b677facf061164ac", + "tabbable": null, + "tooltip": null, + "value": " 36/49 [00:00<00:00, 358.30it/s]" + } + }, + "9950f5a5e80f4d6eb753c7a7551852d0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "9984f32d9dd64aec962488033710b053": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "9989c56958fd4d68b5be367443a45d6f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "99a0651c0e834c1d82f906131b355a32": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "99a080898a97498e97dae48489894b53": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_de180b912fe24f76a078b152855b9abe", + "placeholder": "​", + "style": "IPY_MODEL_1988658a4be743acae0c7010c4ccb6b9", + "tabbable": null, + "tooltip": null, + "value": " 887/899 [00:02<00:00, 358.81it/s]" + } + }, + "99bc652941124363a1eed2abebf849e5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "99c5135e1cdc41999f6e9f56132ac0a0": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "99e7b7a6cfb14213932fd95633a1a66c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_fa59a1d541c2405284c7296537655c5d", + "placeholder": "​", + "style": "IPY_MODEL_1a42b6e31ef940d6af68a8240c3ecadc", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  98%" + } + }, + "99ecdb24af234e8793f4937602f3665c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "9a819b15c93f48f1ace585cd53454e4d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_4f6c9974b1bc4cc0b386aace834b9fbc", + "placeholder": "​", + "style": "IPY_MODEL_67f6d304a779470da994d819a825d1e9", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  61%" + } + }, + "9a862b46ccd640bf8256c253221cfda2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9a9fa94f32a5456d94ee2aa5b5550546": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_1c89e4f87a5b4c1f8bf5d5e6f2dbd31a", + "max": 19, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_04bbb697ff2a46c299d60c00158249e0", + "tabbable": null, + "tooltip": null, + "value": 19 + } + }, + "9ad24b54d98d4b4ca0783f6464a37307": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9aeb3efbdaa24aadb2577b5738df3118": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "9afb98d7126747b5b80672d25bf0893c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9b1b7233ba0c41be86c6e4acbd882349": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_bcc01b81545c4b4fb6ad752979a00053", + "placeholder": "​", + "style": "IPY_MODEL_45575c5868ea4ed2955c02f24b57dceb", + "tabbable": null, + "tooltip": null, + "value": " 0/19 [00:00<?, ?it/s]" + } + }, + "9b206ad6aaec4773b8b3a8388d67c323": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "9b23c6d7cc324d56a100a882f6266c82": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9b3145839b5740b9b6c3805c2e1f588f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9b5aedfc554849d5a60bf07d7c402c66": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_d3f2c6a8fc8e4a10acb082c97ab84d2f", + "IPY_MODEL_233985b5ee4d4e259db25ea8b2965a79", + "IPY_MODEL_6047b24816e74fe68f408dd740ee8bb6" + ], + "layout": "IPY_MODEL_650c7e7e1b4749e983db4e2c41231969", + "tabbable": null, + "tooltip": null + } + }, + "9b614784a2f74e4bbbd19dfc35699f27": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_bc052344e9ed494db4c6f86527c86ea2", + "placeholder": "​", + "style": "IPY_MODEL_9989c56958fd4d68b5be367443a45d6f", + "tabbable": null, + "tooltip": null, + "value": " 36/59 [00:00<00:00, 350.44it/s]" + } + }, + "9c0e7ff131724b9ab99421ec5b86189f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9c5e42d53769443a8ba2f3b9d9679181": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "9c74ee67c9d044919ab99eee70edbbfe": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_50d86d5c91b340d49cbc965b0f34f11d", + "max": 199, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_9c5e42d53769443a8ba2f3b9d9679181", + "tabbable": null, + "tooltip": null, + "value": 199 + } + }, + "9cab60c6300b46c4a3e94f2258ee54f9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9cc272d377ce408ea3031d099f2a28eb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_33192a22bcef471db8f96fe4b26c47bd", + "placeholder": "​", + "style": "IPY_MODEL_2cd3ec7ecf5e4e54a8c3b766efd4d32d", + "tabbable": null, + "tooltip": null, + "value": " 183/199 [00:00<00:00, 363.99it/s]" + } + }, + "9d92573db7f74978aeff421e3a2205ed": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9dd43b56b85d4581873c1376cdf6cbd4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_c8e922f3f5b641c8bce261d1b6062231", + "placeholder": "​", + "style": "IPY_MODEL_c1a27d0687da4883bec110becf0d1f52", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  91%" + } + }, + "9dee15171132423785e164874c7ef163": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "9dfde71c2f964bd2aba42d0cbe3e422f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9e03ee6506ee4c4db8f1897fbe116601": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_796bc589404642bb951496bd95004ee1", + "placeholder": "​", + "style": "IPY_MODEL_5995d5053ad542c8ae8563a31bf0f18b", + "tabbable": null, + "tooltip": null, + "value": " 589/599 [00:01<00:00, 360.84it/s]" + } + }, + "9e22136d18e448ebb8b804a6439b5fe2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9e6b5a443dea4b588cd7fb348154d4c4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_513cb9319a4f41d9a5feb1fc5fde6479", + "IPY_MODEL_82f323b0c4d8495bbe8ae0a81fe86e6f", + "IPY_MODEL_bfb84208bd294bf0a557053c0241372a" + ], + "layout": "IPY_MODEL_89b174b280b54c0496387e5f77a70aae", + "tabbable": null, + "tooltip": null + } + }, + "9ea01d0c079a4dbba87e3421b2e9ab4c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "9f06a8e3d24c445dae46289e755a463c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f73cdb08a8394132ad51b2a78b945777", + "max": 89, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_55aa4fa946134f3ebb81e891214006f2", + "tabbable": null, + "tooltip": null, + "value": 89 + } + }, + "9f2d1b1364024a939cea0045a8e558d3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9f65b68e5ba34a669072d06e5a3c84d8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_53973fb0e574496bb0e7dd9cf87732bd", + "placeholder": "​", + "style": "IPY_MODEL_1136f9c98e2e4cd4820cb10e0b0e5757", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  92%" + } + }, + "9f93da88675c4b93bd7bd6eb0a3664f6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_46f21dd1f9c244bf95057e462ce3acd0", + "placeholder": "​", + "style": "IPY_MODEL_3bf4dc137f0b47d38f18abda273237c7", + "tabbable": null, + "tooltip": null, + "value": " 183/199 [00:00<00:00, 340.11it/s]" + } + }, + "9f9c5e57870b401995bea4fff59d0188": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9fb9da09528841918133b674f40ae056": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_de8eeab28d654f6ba239e20e24d166e3", + "max": 899, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_bd9fb2df8193443786b308f94bff588b", + "tabbable": null, + "tooltip": null, + "value": 899 + } + }, + "a0189c9fb18c4402923666cdd07a0095": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a02ef4c3d2e543339d9cb7ac47356b0b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f62b2b5027da476ebefa97cea736234e", + "max": 19, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_2911b334e7c44fce9a54641247b46423", + "tabbable": null, + "tooltip": null, + "value": 19 + } + }, + "a0eb39e0dfef4db7856aef0eede98f0a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_0871d638a80a48bfae0a624154af9132", + "IPY_MODEL_c922748953f446f48477412df7b093ae", + "IPY_MODEL_991ee200fcd342c3b1feccbd99b7b3bd" + ], + "layout": "IPY_MODEL_6d199f3efbc34732a23ce1ff7c9270c8", + "tabbable": null, + "tooltip": null + } + }, + "a1685e2f90824976b7d5e61f997edb7b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "a187df2ebeb44b62813b0559b2e3b406": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a2143e05ba7f4a7b97a6eaba83b239cf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_fc2e7719cc4c4c6388d6a49d718df8b3", + "IPY_MODEL_4af96f228e5042ef944d84ba3749afc1", + "IPY_MODEL_2c57f3d785fa486588b9afc05eebbcb1" + ], + "layout": "IPY_MODEL_30d0d73e82724d95a9eabfefd74e7913", + "tabbable": null, + "tooltip": null + } + }, + "a238ec9a71f14a97b5895681d20b1688": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "a24f990ff14f4406ab54f6456289bfea": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a25ef53382594eab84ce4066db6e1acb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_490d5179c19b4e558ab83a345562cc26", + "placeholder": "​", + "style": "IPY_MODEL_2f9b9ec5691342d0a22d0458ff734240", + "tabbable": null, + "tooltip": null, + "value": " 73/89 [00:00<00:00, 358.46it/s]" + } + }, + "a2c82c8c191a4ca196bdafdcfca18bc8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_9e22136d18e448ebb8b804a6439b5fe2", + "placeholder": "​", + "style": "IPY_MODEL_46ab2b12d12c47cb91ee6f885560206a", + "tabbable": null, + "tooltip": null, + "value": " 36/39 [00:00<00:00, 354.11it/s]" + } + }, + "a2dd8cfd816643a19f694ee065601bd8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_bfc2ab40b67347cb907fe38db31080e1", + "IPY_MODEL_9f06a8e3d24c445dae46289e755a463c", + "IPY_MODEL_768a28368c5340ad93e460b279359387" + ], + "layout": "IPY_MODEL_620730f846fe450790fc483ceded86b7", + "tabbable": null, + "tooltip": null + } + }, + "a2e7b50d04404434a1401dc255ea0d5b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_d965f240b86847c9915c050c9bb38e0c", + "placeholder": "​", + "style": "IPY_MODEL_daea84d699c949f89e5c0bda39fb03c4", + "tabbable": null, + "tooltip": null, + "value": " 35/39 [00:00<00:00, 349.08it/s]" + } + }, + "a2e7cfaf2a544c5a81e82c7745dbf1a2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_a9dfb4c542e84aa49fd53a8e65d18c47", + "max": 99, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_60b4ef84a55249f78ea86d1b61171fff", + "tabbable": null, + "tooltip": null, + "value": 99 + } + }, + "a301c1c38aec48d0ba34e3ff572e93f5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "a37698ad3c8046a0b150fe0742c61c02": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a3a1eab2326544f59877d63c7e4732ef": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_589d9bbe63864dc2842500b779ddccda", + "max": 299, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_e49168c656684fa7b8db3751a62edd24", + "tabbable": null, + "tooltip": null, + "value": 299 + } + }, + "a3ad9028956b445b85e67ee30a0ad787": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_93dd196c9e1d445ab8ab0de1102fc6fe", + "placeholder": "​", + "style": "IPY_MODEL_ac10db6b8ead41ecad1cf60ebed0fbcb", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  51%" + } + }, + "a3ae402e09d546b1a0aceabf5baa7ba9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_d74dd6f6eada4adba7d67d89248681d8", + "max": 29, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_2de6d80caf2743c3869b7f67608fe533", + "tabbable": null, + "tooltip": null, + "value": 29 + } + }, + "a3b75fd89b9d4c71b5b62e7e37e0d3ba": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_b349b63c5fc54aee97051210e0c13512", + "IPY_MODEL_ff4920731d62401a944991334e27cb0c", + "IPY_MODEL_3a30ae75d03a42db87db7ea2a98555ef" + ], + "layout": "IPY_MODEL_b3dd93c48166441c90d1eef2cafa4134", + "tabbable": null, + "tooltip": null + } + }, + "a4308b23f79c46d9baa44c7e1d3d8876": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_450dde43f144464abaa0338b90ed6286", + "placeholder": "​", + "style": "IPY_MODEL_6127ce0fc57c466990db3e1e0c0b7b4c", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  98%" + } + }, + "a43bb73a03c94f809f6bfbcbe348dcff": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "a466639fdbd94435a5c10cdfbd0c90cd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_16023c7981a4428e97185e80eb5137a6", + "IPY_MODEL_27b727ac94344198b60b6c8f35f71a94", + "IPY_MODEL_d1d7d6dc779142d7906d8c2537b469c6" + ], + "layout": "IPY_MODEL_822d29863aa94c20ae900523f78273b2", + "tabbable": null, + "tooltip": null + } + }, + "a46c0ff35f684db3b80c1b3c249b2383": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_ce869bac5f45494b879e026a3bd151b4", + "IPY_MODEL_ce55b4346d934300b7e8f21ed5c19d03", + "IPY_MODEL_9b614784a2f74e4bbbd19dfc35699f27" + ], + "layout": "IPY_MODEL_c701fcf1276d48ea97a061a20923965f", + "tabbable": null, + "tooltip": null + } + }, + "a475084b68dc428c9433502ae20d768a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a4a2064e1ee043889936721ea0d74506": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "a4aa8b3328bd493d9f7eb4031638da2b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_e4aaa8cf48074189a13ac527448ed165", + "IPY_MODEL_0c8f156a0dee46a0aee4dda2988cc23a", + "IPY_MODEL_1e8a516b8ab148e9af3de02174149338" + ], + "layout": "IPY_MODEL_1413473634414eb9b9fded83b8e3f594", + "tabbable": null, + "tooltip": null + } + }, + "a4b21b8e95604668b3aa35cc3f8d3cc5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_204a680037754d4aa072f9cce0bc132a", + "IPY_MODEL_a84205a587bd45a6b16bcd0a3af0c101", + "IPY_MODEL_13841302755946aa9b5b624933344cae" + ], + "layout": "IPY_MODEL_245183e44125490ea7b8b868149793b9", + "tabbable": null, + "tooltip": null + } + }, + "a516d3458e0948b3940132c58a0f1f2a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "a51a11dbdc1d4446b3ccbfbb9ab83536": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_43338b6762d44123a270dc7e672607e0", + "IPY_MODEL_a960ec2997ad4ac39153991bd6482464", + "IPY_MODEL_0585bd3ba4114cd0ba5973af673efc7b" + ], + "layout": "IPY_MODEL_73a8e1e7285d4478928bba34cda0c13d", + "tabbable": null, + "tooltip": null + } + }, + "a549d8845ade4a52a6ed2181419d5c65": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "a5b7b301923542088c00c4a38bd01cf4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_66c2958f021542c4a54053e022d2d173", + "IPY_MODEL_9fb9da09528841918133b674f40ae056", + "IPY_MODEL_f617a520ed454e59bfca9162efc0c02b" + ], + "layout": "IPY_MODEL_cfb43e4412694e9eb8a3f79fdf54e909", + "tabbable": null, + "tooltip": null + } + }, + "a5c0f436502a48e9b890fbb59edd5a27": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "a60d6a4d11ce4e638dbda3cb0668d5f7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "a6945edce8d140bfa82de7cfa227ae82": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "a6f796ff46704ebb9ff313c51baa4d61": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a71543e410a5411589b9af9cf97bc349": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_936410a4ed2d41dc880a8d9284a6c7fd", + "placeholder": "​", + "style": "IPY_MODEL_8405d160f8b74ad9a34d604323539872", + "tabbable": null, + "tooltip": null, + "value": " 0/29 [00:00<?, ?it/s]" + } + }, + "a7c49a2242de43b08eb9b76b6853d5f4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "a7c6c848b93e4e12a08e107c2b96df3f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_ced3faa091c2469cbbec4a93c24d75f2", + "placeholder": "​", + "style": "IPY_MODEL_a9c903f2a8a24ef795c75671bfed0ff2", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  99%" + } + }, + "a81df8077add49b1b70ef2655c07c4e7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a83320d78dba4e00bb9066a779653553": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a84205a587bd45a6b16bcd0a3af0c101": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_07f5cda023544b3bbaa36c10d7e3c242", + "max": 49, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_eabd515abc4f4c6b83862bddbdeead45", + "tabbable": null, + "tooltip": null, + "value": 49 + } + }, + "a8501bc2bc9f462aa42e447b3d09e814": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "a8518783677c4086bb0208a8fa09cc4b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_05e638b0a4d24f09add74e870206463b", + "placeholder": "​", + "style": "IPY_MODEL_65bb7e5fc4844c28a454f6e5c5abffa3", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  99%" + } + }, + "a8583d223fe341ebb31b2cff1b581f23": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "a85af86961cc4aebb044f66104761185": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a867ce2e904c489e8640912e779148be": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a874714e44a64c869a3ef23395cf3e4c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_5d31df8b004f4055b0788dfaecc2f094", + "placeholder": "​", + "style": "IPY_MODEL_54548d8157b042bfa61ad88de710ee77", + "tabbable": null, + "tooltip": null, + "value": " 771/799 [00:02<00:00, 363.11it/s]" + } + }, + "a87e0af40efd46fa832b40f3621a26b7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_3ccc5911d21d413cbc20897f0c8c1620", + "placeholder": "​", + "style": "IPY_MODEL_5c1e982f72074c59953900c818a5a2d9", + "tabbable": null, + "tooltip": null, + "value": " 36/69 [00:00<00:00, 359.97it/s]" + } + }, + "a9083826b8b54ed1877eda78417661ab": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_a7c6c848b93e4e12a08e107c2b96df3f", + "IPY_MODEL_1c9d3fe672cd44f2b68eb053d2f69ace", + "IPY_MODEL_df0a219fbdca497f9dd3064e76abfbf9" + ], + "layout": "IPY_MODEL_8bc431a1a85449eeae2b277fe85c7b22", + "tabbable": null, + "tooltip": null + } + }, + "a953a66662c24f4aab5308e30a2e8dcc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "a960ec2997ad4ac39153991bd6482464": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_c842ccf7da0e4030b16b302aef76719c", + "max": 69, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_b4f3808862404ebe94f3fe6787de7451", + "tabbable": null, + "tooltip": null, + "value": 69 + } + }, + "a9c772b8db6849e0917ba5787a1c964c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "a9c903f2a8a24ef795c75671bfed0ff2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "a9dfb4c542e84aa49fd53a8e65d18c47": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a9e9d589b357412aa16caf06badfd984": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_e5e87323eefe48338843e25757748279", + "max": 89, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_673588c2b2b648c29c0166c3b671cbbb", + "tabbable": null, + "tooltip": null, + "value": 89 + } + }, + "aa0eaa941c64493e84fa94ad7ce9aaf1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "aa2070ec1e6c44edb5d9543670cb61c5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "aa302e7632234a9a8d3236e54be0fca9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "aa323f9226bb44f991ad2e5c97ce70cf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_39c0b5bf6a7e49eab47960056b854725", + "placeholder": "​", + "style": "IPY_MODEL_23af2efd63c34545bff4f28479e9ddf9", + "tabbable": null, + "tooltip": null, + "value": " 0/9 [00:00<?, ?it/s]" + } + }, + "aa4533f4b72d4b1684637a977bc435c5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_cfa98cf631fb467fb44af939ea163fa3", + "IPY_MODEL_444db4142ebe469f97542f252451bd1a", + "IPY_MODEL_1bac9679c59f4c75b75f4a200f495d0a" + ], + "layout": "IPY_MODEL_e20c34ef318f4ea181a8b75c41909da9", + "tabbable": null, + "tooltip": null + } + }, + "aa8f243213e14ddb879fc3cfe6c10b03": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "aa996145d23f451586abe23a75e1c846": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "aaf496ae361a42b19fd29f4dd9e97cb9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_2786fcf242d247699682b01adce9c3d6", + "placeholder": "​", + "style": "IPY_MODEL_c1c6a8928bdd4914ad28dd262c1e0e3d", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  74%" + } + }, + "aaf5c3e8883f4c0faf7cf6d1f702f0f4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "aaf9204a0cb84ab68e2c9d5ac08c9c23": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "aafdd9e4fccf4bbba3f79440240716e4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ab273f1e68bd4bf29ddeaa04c57cac59": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ac10db6b8ead41ecad1cf60ebed0fbcb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "ac31071afd7a4490b17598491302bc19": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_b1adcf67f146406da7d12dd676a72613", + "placeholder": "​", + "style": "IPY_MODEL_95398bb076a1440cae2c3217a3b56c95", + "tabbable": null, + "tooltip": null, + "value": " 587/599 [00:01<00:00, 361.92it/s]" + } + }, + "ac5eec4989d844b587b4282facd23096": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_e432b1f158334b06b2fba61305ee70e4", + "placeholder": "​", + "style": "IPY_MODEL_f959e77699564d89a4a6fd64274e51d6", + "tabbable": null, + "tooltip": null, + "value": " 73/99 [00:00<00:00, 358.71it/s]" + } + }, + "aca3140cd99140feb31535c0ad1e63f0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_bdd47076fdec4c59a142712c2580cca9", + "placeholder": "​", + "style": "IPY_MODEL_6950a2e5bdc040a6a33bd80d60cc9b34", + "tabbable": null, + "tooltip": null, + "value": " 90/99 [00:00<00:00, 317.71it/s]" + } + }, + "acb325923fac40dab9ad6e4ba696e3bb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ad09e32a6bc24250a8fd390dbc31d8da": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "ad24b73e4e034dfb8d0723ab0dee29e7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ad3316882f9a4bb2938b634b5eaae4be": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_a475084b68dc428c9433502ae20d768a", + "max": 39, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_53193d5f8669482bafe580800acfad9d", + "tabbable": null, + "tooltip": null, + "value": 39 + } + }, + "ad4aaf1410de4c19884a38a61cf2d918": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "ad4b6513b15b41039ea448b804082eb6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ad6c469b0937450e9b479a6158f1b37f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "ad98fcd3b45848088325663f3bac9d6e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_e92568352b194e9f8501a0e9ef4d85e7", + "placeholder": "​", + "style": "IPY_MODEL_fd8c57e995c54376892a28a89c042405", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  91%" + } + }, + "ad9d483153824272b416be214c50d020": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "adb0ccf8ab734a9fbda3727d2733decc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_c9a9a4ba171741e7bf0cc39b57eabb17", + "IPY_MODEL_c20ea0b88ddb40b4b195d8bf47a759ba", + "IPY_MODEL_3c6a677e69ec4cb59ef9ed18ddb27cbb" + ], + "layout": "IPY_MODEL_b6ad48c2a88445ffa0ab40467979764d", + "tabbable": null, + "tooltip": null + } + }, + "adb8302d715242ae99ac7a9cf0e8d4db": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "adbb08f0f45c4394ba8fe7f00e9d9a70": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "ae11e88505c8462881be1d3cec128043": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ae411931c684402d961cf461eec8c4c2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_1546f73e54af4e55a1d94bd8dfeb9976", + "placeholder": "​", + "style": "IPY_MODEL_3f936240f6204290b5439eabc4309d1b", + "tabbable": null, + "tooltip": null, + "value": " 36/49 [00:00<00:00, 357.74it/s]" + } + }, + "ae6719d3bae74c73b76f93727125029c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "ae758b3b9cae474ea6476f2d3d63c5d1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_a37698ad3c8046a0b150fe0742c61c02", + "placeholder": "​", + "style": "IPY_MODEL_dafc978020bc4609b21e5c6c0263d4ff", + "tabbable": null, + "tooltip": null, + "value": " 369/399 [00:01<00:00, 313.05it/s]" + } + }, + "ae796170aafb41ef9724a108bfbcdf14": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "aeada5ef1208471980d98b1c7608fcd7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_48a1923f3c7c4e8b802d136a551598fc", + "max": 59, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_81cc56809e4c4d918ac0364257a100fd", + "tabbable": null, + "tooltip": null, + "value": 59 + } + }, + "aec00a07c9ae451aaa35345da3858731": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f96bca2f8e51474f8a81270510141c4a", + "max": 49, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_695cee95d751499db8f64b7eca530791", + "tabbable": null, + "tooltip": null, + "value": 49 + } + }, + "af5369c6c54940b0874511dd412f6668": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "af62ea5119c54f51920c5598dfa83ebd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "af653c02ca594f969765d485cc49e0c8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "af746d2e44ac4f3e85da91000e5637d4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "afbadadb9c7040e583e17e3de4cc4d84": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_e8ed18d0e06d4908807807175a91e75d", + "placeholder": "​", + "style": "IPY_MODEL_13e40c06735540a48095222abd7a3f8e", + "tabbable": null, + "tooltip": null, + "value": " 72/79 [00:00<00:00, 358.97it/s]" + } + }, + "afcb4005b3784a9e8adfeae0c6685e8d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "aff1ade3723842db845738d1e3bac7fc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_baecf6899e1842e7ad849879947a936c", + "max": 9, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_416d33f49b174a6897d564b364dfaf41", + "tabbable": null, + "tooltip": null, + "value": 9 + } + }, + "b025dc1794eb469185ae0f899cddd156": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b069858f0a4b46258f3fa506dad56313": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b06bf1c41d6b425e9a6c284a9e470709": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_c2e97b1b1d7047ca983c77663f99da42", + "placeholder": "​", + "style": "IPY_MODEL_301771feabe84c3d911acccbcd74f07f", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:   0%" + } + }, + "b072f1110efe447c90112dc0a98a55cb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_9ad24b54d98d4b4ca0783f6464a37307", + "placeholder": "​", + "style": "IPY_MODEL_562b45528e364dcdbfa0e4c4219c4ede", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  74%" + } + }, + "b08c46c588e34e3a83348c4cdaa29caa": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "b0fee13778044f908c58f4c29db9ddb6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b19509231b4f404e99b700fa4222d73a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "b19f60f6b4a94cf0b18f3f534c44a4af": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_6feac2f64e5d47c2a83d74c8e0dcc539", + "IPY_MODEL_9c74ee67c9d044919ab99eee70edbbfe", + "IPY_MODEL_51a794dba05346298151e9c08b769765" + ], + "layout": "IPY_MODEL_38d7231626294235bb8cd302a79227d3", + "tabbable": null, + "tooltip": null + } + }, + "b1adcf67f146406da7d12dd676a72613": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b1fd6d5f8bd14bfe8b17cd9d0365dbe0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_fb9e66c1eb244ec19b447e0261510d1e", + "placeholder": "​", + "style": "IPY_MODEL_a8501bc2bc9f462aa42e447b3d09e814", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  92%" + } + }, + "b2cde72def81416db0b9c3c47530cc38": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b2cf2528a6f747378071157f32031170": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_99e7b7a6cfb14213932fd95633a1a66c", + "IPY_MODEL_0014f231b32443b8bfab117ab121d886", + "IPY_MODEL_183eb543201c45c3990047737f88b3b3" + ], + "layout": "IPY_MODEL_723e0d886f394340a4af62a692898f32", + "tabbable": null, + "tooltip": null + } + }, + "b2eca7b5574a4b3db78272c2c6b6cc04": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_a867ce2e904c489e8640912e779148be", + "max": 9, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_70547f4edb4a4dd5b87db110c89d13b9", + "tabbable": null, + "tooltip": null, + "value": 9 + } + }, + "b2fd804650fe41eaa214942cc13f595c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_cbe03234c932448e8af72c157bfe2670", + "IPY_MODEL_82e9b6bc286a484fa5d09fc24ef653c1", + "IPY_MODEL_0f638ebe107040cf9a64cbf06516ace7" + ], + "layout": "IPY_MODEL_2ef2712eb11743d79fd85dbb0964bc3d", + "tabbable": null, + "tooltip": null + } + }, + "b2fe64d58aa044118a38cebcbaddd29c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_6a42e66e95064a438ebe8f6cd78151c7", + "IPY_MODEL_4281e037c1be4a04a5c0586fbe23d27a", + "IPY_MODEL_301b81d03e37420d8a1d12568eceb284" + ], + "layout": "IPY_MODEL_c4e6a3d86d3e472eae5dde2c7d5c33e3", + "tabbable": null, + "tooltip": null + } + }, + "b31e3578fa894e8e904e1157619b8f9f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b32093fb46334dfe899ce0f1b29053b3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_1bd4c0a21e4b4f1aab5c09636e30c61a", + "placeholder": "​", + "style": "IPY_MODEL_2d8cc8de11c8466f825698ae268bf35d", + "tabbable": null, + "tooltip": null, + "value": " 996/999 [00:02<00:00, 359.38it/s]" + } + }, + "b349b63c5fc54aee97051210e0c13512": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_655e863c62474a34aa8dea4c37157b37", + "placeholder": "​", + "style": "IPY_MODEL_33e136242f184bf288b3b4914f89832b", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  91%" + } + }, + "b3c49f7322214952855810016b5872bd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "b3dd93c48166441c90d1eef2cafa4134": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "b3debfbb74194023aa76ad471799c958": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_64914986996b4154912c4369fe1f56c5", + "placeholder": "​", + "style": "IPY_MODEL_703f96c620f6473ba611f6a1738d45a8", + "tabbable": null, + "tooltip": null, + "value": " 36/59 [00:00<00:00, 355.90it/s]" + } + }, + "b3f67d994be040b582ce06c5fd29f403": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "b4015293f3ac4a16ac4ba21218c0f70d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_4f6c16aa09404df492a21cf05e3bc7fb", + "placeholder": "​", + "style": "IPY_MODEL_0a31f5c3e3b94f26a9bdd7f05f3a0b4d", + "tabbable": null, + "tooltip": null, + "value": " 0/29 [00:00<?, ?it/s]" + } + }, + "b408e6a7be504c48a10b39d1d6754bb1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b4aa2ca5638b4c19b45abc9c5fc14fda": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "b4f3808862404ebe94f3fe6787de7451": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "b4ffb2e0fd1241a0975082f6b1152276": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "b58c3219b8da4565bd0396e7253468f4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_e0514e0deae14410a629b153d324211d", + "max": 899, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_4785898402dd496ab26e7bf263668dc8", + "tabbable": null, + "tooltip": null, + "value": 899 + } + }, + "b5e89d421ae34cc6902ea09438556b0d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b5ee8f74d85d46fc83928cf15ec63619": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f343fc0ebf394065a3713794fbbca812", + "placeholder": "​", + "style": "IPY_MODEL_626995cf5ec54c99bb689141ce31dc21", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  97%" + } + }, + "b65f8956fffc4557be6416270b68e2ef": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_78a1c9ce03b247e29bde5cf2cd868efc", + "IPY_MODEL_bd18e9c3c8ac482aa51ded548e02763a", + "IPY_MODEL_ac5eec4989d844b587b4282facd23096" + ], + "layout": "IPY_MODEL_9773198c89ef4a28b968888b6b2e380b", + "tabbable": null, + "tooltip": null + } + }, + "b6ad48c2a88445ffa0ab40467979764d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "b6da4af56e5d4d82ac18a5ab30ceba0e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "b6e6896f050b4ab0b73041502a4bc634": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_aa2070ec1e6c44edb5d9543670cb61c5", + "max": 199, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_4202fdad659042e0a289d7772f42140d", + "tabbable": null, + "tooltip": null, + "value": 199 + } + }, + "b703b5b4b1d04219aad63a6d40539eb1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "b7210993339b4e3e8696cc635194bd0e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "b7542732ee5545e09341723cdbeda907": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_1ad4976a6a3545328728e43198f3c4d4", + "placeholder": "​", + "style": "IPY_MODEL_6cad2e859a37425092ddac5942f613e2", + "tabbable": null, + "tooltip": null, + "value": " 996/999 [00:02<00:00, 361.65it/s]" + } + }, + "b77b87c613dd4902b32d29daa1d1bdde": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b7f5534d78924cc6940b0d413abfd820": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "b7fb937234034362b0c0a03c1f3a3bd1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b879ae9000e04638b07a607f0d89ccd0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_c571657ec07346adacaa4c32f1ea4aec", + "IPY_MODEL_2dc876b11d8a48388110a94a30f05ae9", + "IPY_MODEL_307bd8d7a31549ff8cff744c616079df" + ], + "layout": "IPY_MODEL_d01d58d95c064216a7b3770f1da7d1c6", + "tabbable": null, + "tooltip": null + } + }, + "b8ec6ce75bd64634b84709a7aad28a6c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "b8f17ab6d50745839aae7f0fd65d6c49": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_e71d5f6bfbfd4405997fdfb34b886c27", + "max": 39, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_04a8b7dd821745fc914e50f13b873036", + "tabbable": null, + "tooltip": null, + "value": 39 + } + }, + "b9216d527d68471a96f37c9fdf870402": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "b92350319fc34353ae51b0173513add9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "b92c0f1fc2dc426daf7902b55afeb2a9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b9b500b1c03b4c2b95f03273d5a64287": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_9cab60c6300b46c4a3e94f2258ee54f9", + "placeholder": "​", + "style": "IPY_MODEL_577cf572db044d8ab80fa0852365222f", + "tabbable": null, + "tooltip": null, + "value": " 885/899 [00:02<00:00, 364.59it/s]" + } + }, + "b9ecaf3c140c4f9ba60c54de797c8773": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "b9f591c574624533858c0a2ac3c595bc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ba0e5cc96a50429bbe81af86f5331268": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "ba1bd3a71271471b9dafd286189557b5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ba5c0aeadc0b49cb983b3c91613db4cf": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ba62cfdfe1dc4e4da6f225330f050eb6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "ba7b5a0ba38340729c6800c495a82a7a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "ba9158f846de4863bef5b2aced1b8b9c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_203279656d204c4d8ba4fd094ac4b3f4", + "max": 199, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_34bee3d9d0814334a03cf2e76dd54669", + "tabbable": null, + "tooltip": null, + "value": 199 + } + }, + "ba9bf089f6844a3bb304e0dfa291ecc7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_bbceb3366dfd4155bcdbcc3e0dc6c8ea", + "placeholder": "​", + "style": "IPY_MODEL_7e70f9f1e75d4c58a80c10a4c08870d7", + "tabbable": null, + "tooltip": null, + "value": " 36/59 [00:00<00:00, 354.99it/s]" + } + }, + "bac21c5ee3234e99b8741d14d56a2b36": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "baecf6899e1842e7ad849879947a936c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bb49305c3af74a308e33f574fa5484cd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "bb49e18206e14affaa7d5a4d78d3cf4d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "bb91ef8684f14e92a7d33b9db78e6522": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_8662766e5e3f411e9c6e2ba4e37b4f78", + "max": 69, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_5a3e51c824244c7badf019718c49e776", + "tabbable": null, + "tooltip": null, + "value": 69 + } + }, + "bbceb3366dfd4155bcdbcc3e0dc6c8ea": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bc052344e9ed494db4c6f86527c86ea2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bcc01b81545c4b4fb6ad752979a00053": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bcdd6c3d31de4273ae026df54e0c5291": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_0d0413dff8834c16882a4ff65642f2f8", + "max": 999, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_0216c0cbb3ac48809a3f7b28b2a3e541", + "tabbable": null, + "tooltip": null, + "value": 999 + } + }, + "bd18e9c3c8ac482aa51ded548e02763a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_fbe1765e09fb4d30ba000cfe8295e636", + "max": 99, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_8d650c457b4d42048adda9a925a2e97c", + "tabbable": null, + "tooltip": null, + "value": 99 + } + }, + "bd4fa9023e224822b3917bfab3443d16": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_226a3cbecb0542a3b5d7d303b519b29b", + "placeholder": "​", + "style": "IPY_MODEL_ffd39ee9b3474becafdda6a81004543f", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  92%" + } + }, + "bd5616ad3f014c9cb608018b80a98502": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bd9fb2df8193443786b308f94bff588b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "bdade6cbc64c40968082e0174e5efa1c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bdc789dda4db4007949298732bcfaf17": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_cf765084dad944c38c10ce353dce6ccf", + "max": 199, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_9622fa15bcf74c7c9643f29b64c6ebd8", + "tabbable": null, + "tooltip": null, + "value": 199 + } + }, + "bdd47076fdec4c59a142712c2580cca9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "be08a34588634a7cbe7e8f9ccd7e921f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_ebcc786e775344e595d40c2b290d79ea", + "placeholder": "​", + "style": "IPY_MODEL_c25e5c8040bd466783e93e0360d2bf44", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  73%" + } + }, + "be1e5bc6e6034cf39656188cd765c137": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_093ef839989f4971a4fbf57157b4144c", + "IPY_MODEL_13a0882ac5144028a742e6525c0d687e", + "IPY_MODEL_1e765df6b20b49f3a8c15b4f31214cb1" + ], + "layout": "IPY_MODEL_e58d293a7316427682613c97223ac6dc", + "tabbable": null, + "tooltip": null + } + }, + "be37ae18be2344cc8f772a2a021d5789": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_ab273f1e68bd4bf29ddeaa04c57cac59", + "placeholder": "​", + "style": "IPY_MODEL_058433b8a9be48a4a53a01d3d95f4565", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  52%" + } + }, + "be4bc91059944c03a353dbbf9fe83aeb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "be500d18fc1f4bfa8a572fb137967f31": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "bee09ea681244bfdb1e17964fd86ce3b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bf4b4aed943645f993e78639568f1d87": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "bfb84208bd294bf0a557053c0241372a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f02b2d58121f42fbbe6415e8a172f1b5", + "placeholder": "​", + "style": "IPY_MODEL_341d2ca9b411414bbd31cb92e5891109", + "tabbable": null, + "tooltip": null, + "value": " 0/9 [00:00<?, ?it/s]" + } + }, + "bfc2ab40b67347cb907fe38db31080e1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_d2399abf03b447e9990d21beed5e849a", + "placeholder": "​", + "style": "IPY_MODEL_1b532744185242edb76ed6f27d13a381", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  81%" + } + }, + "c0273c527f2342e48179c73f1fb9f7dd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c045b41eda0c46abbd020a9e64f17aef": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "c06795ca8ab947e195f5d4bad6dfee14": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c095ede63d58457b832ab2769da77fd3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "c10acf6386a34a8e8e75772d75686113": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "c10ce057bd5243c6a88fba4b6d44cb1a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_df0380764a3a424cb0625f3f12607ef2", + "placeholder": "​", + "style": "IPY_MODEL_ad6c469b0937450e9b479a6158f1b37f", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  73%" + } + }, + "c12b307bc25c4cc4a2855bffc9c5e490": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_08b77c7e63524316b42c0781a8840904", + "placeholder": "​", + "style": "IPY_MODEL_a9c772b8db6849e0917ba5787a1c964c", + "tabbable": null, + "tooltip": null, + "value": " 36/59 [00:00<00:00, 353.55it/s]" + } + }, + "c19be2c73b2549bf83276ad2f7fa21df": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c1a27d0687da4883bec110becf0d1f52": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "c1bf003b98ea4ee8ada5e5f4a348ebda": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_363d0b757e094298be6c6a40eb0b4c83", + "placeholder": "​", + "style": "IPY_MODEL_ed42279ca7274f0e9c342c5377f30bcb", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  91%" + } + }, + "c1c427152bd44c81acc3d373e40ffbbe": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_cd36700303a042768902ae689e70cfec", + "IPY_MODEL_453120223be94b3ca1d08fcfcce7a595", + "IPY_MODEL_393b20bcedb34a32bd150d6249707bdc" + ], + "layout": "IPY_MODEL_94681603c5d04894874724741aaa33bc", + "tabbable": null, + "tooltip": null + } + }, + "c1c6a8928bdd4914ad28dd262c1e0e3d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "c201ce80042540b4be624d34a14bbf4a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "c203bde17bdb4938a92a704f63e2c1a7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c20c394b7972432099e1ac5f2c67b11a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c20ea0b88ddb40b4b195d8bf47a759ba": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_a85af86961cc4aebb044f66104761185", + "max": 19, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_c973fe5b30d949c483b8928d4df30dae", + "tabbable": null, + "tooltip": null, + "value": 19 + } + }, + "c22eb2b7dc84430ca844699b9b3bec57": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "c25e5c8040bd466783e93e0360d2bf44": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "c27ca95f366d4cea8bf408874a5d711b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_04ee0f633cf4430b86644f5e48d8128c", + "max": 69, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_897e4bd5aea343d8bd32f50f41889917", + "tabbable": null, + "tooltip": null, + "value": 69 + } + }, + "c28aac1883074095bcd1a4116cf4497e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f6c26b1e4cc546bf94af7cfea58e0f9c", + "max": 49, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_8d55a1ae6fbc4bfab18d5625be079373", + "tabbable": null, + "tooltip": null, + "value": 49 + } + }, + "c2e97b1b1d7047ca983c77663f99da42": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c3016b73acfa47978d29e3a91615efac": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c31b7e861d8d434c942059cbc3aa8c46": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c362d1e3e37e4187a2d162b1392ce90d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_eef249c202ee4cbeb7646bce26e0319d", + "IPY_MODEL_ba9158f846de4863bef5b2aced1b8b9c", + "IPY_MODEL_4c566f260cd74358803899641e909308" + ], + "layout": "IPY_MODEL_7a829f82d7c1421cbb720a434f9151b5", + "tabbable": null, + "tooltip": null + } + }, + "c37961812de6410f8f4d1aa6569133e8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c38b8462ba7b443ea92227e7328df0fd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "c3af69049e2e4ed7a62a01913f109e6e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "c428c7b2a924486191a6fdf6df696810": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "c43f7932862a44eabb362bb93a935920": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "c4739e4f68a64bed90b7aa8b4a7295c8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_dbd14503868a425692bfa7a7954d09ba", + "placeholder": "​", + "style": "IPY_MODEL_06e0d6c5ba154c32b21d3708c8e41a89", + "tabbable": null, + "tooltip": null, + "value": " 0/9 [00:00<?, ?it/s]" + } + }, + "c495d0dedb764061a90da24cc6f0c550": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_0f80f42d60484e3f8df239c941ebf463", + "placeholder": "​", + "style": "IPY_MODEL_33fb64d45f4346d3b3cc7ffc662f021b", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  96%" + } + }, + "c4ae7aef6b4344d2a097751d7aa41aae": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_0b7d4ed5765e4aca8bb6141cc943eed9", + "IPY_MODEL_e048452aad634e41a1873392f34e9599", + "IPY_MODEL_1f94c34da1234a3796318665b1a050ed" + ], + "layout": "IPY_MODEL_9984f32d9dd64aec962488033710b053", + "tabbable": null, + "tooltip": null + } + }, + "c4b1311267c547d49a44b43cabca5f8c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c4b6b898846b4fdbbdf55c1d23641015": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_68eb60fc9da1475592a83cd04a5031f9", + "placeholder": "​", + "style": "IPY_MODEL_9002601ca82340cd832f6c7b0117e3c5", + "tabbable": null, + "tooltip": null, + "value": " 771/799 [00:02<00:00, 362.93it/s]" + } + }, + "c4ce70f380c14c1b9c6d133b1a2370d9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_4385eac2a71c42dd89450f825481c940", + "IPY_MODEL_4fc6fbe0a5764a91bba7fa27bedd1bc6", + "IPY_MODEL_6de7f42dafb741e5a8402de2b4b91feb" + ], + "layout": "IPY_MODEL_1db4a1ec464b474882ea4462a65a0207", + "tabbable": null, + "tooltip": null + } + }, + "c4e6a3d86d3e472eae5dde2c7d5c33e3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "c524e8e8d009453b82883312c7f6db7a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c52f5fd51c52437ba271b3c4a7c66eef": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c53b12a5e77e42fe9ecfceb69fd60ce3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c571657ec07346adacaa4c32f1ea4aec": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_ad24b73e4e034dfb8d0723ab0dee29e7", + "placeholder": "​", + "style": "IPY_MODEL_ba0e5cc96a50429bbe81af86f5331268", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  96%" + } + }, + "c59d0110443e4dd393b0e56575c65457": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_9d92573db7f74978aeff421e3a2205ed", + "placeholder": "​", + "style": "IPY_MODEL_e7ac81ff8f8f4e72b521f979fd70caaa", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  95%" + } + }, + "c5d432a4377b4c0491e32157f5ede3cb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_e2a732f2f4f147c591689b6e319fc62e", + "max": 69, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_99ecdb24af234e8793f4937602f3665c", + "tabbable": null, + "tooltip": null, + "value": 69 + } + }, + "c5ecb7909c8d40269c90a9f4fe5b34b6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "c616b7e586454f82b9b2be849f4e26dd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "c657a9b6ef2143e88e2882cfa7cfcd8c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c65a35fa56134366aa5d0222a2cb839c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "c67002c2c2fd4b089cb1486f916ccec9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c677aa821c394a3da2c9a8d555633c37": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_ee39a6894158481b9e62dcae6ebe9b22", + "placeholder": "​", + "style": "IPY_MODEL_91a21eef705d4fd2b428e47ea6a31022", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  61%" + } + }, + "c6f29e89b2e745199cd9425ebcbbe3cd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "c701fcf1276d48ea97a061a20923965f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "c72775ada44b461ab7fa9565fdc6df95": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c76331bbc2b049788ae8560b9fd55e05": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_03665d92883945c1813c348ad9c23bc9", + "IPY_MODEL_20f126d0e20f4d94b8112e0b5e42fba8", + "IPY_MODEL_ce553c3eb99b41b186678afbf983a9fd" + ], + "layout": "IPY_MODEL_03bf9748f94e40ec90195f6644bca4fa", + "tabbable": null, + "tooltip": null + } + }, + "c79c3be719a04acfa77bc4c68e28e613": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_e3a64d4b2cd941ee96f15bbfb55e8c54", + "max": 39, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_982a7911c5c04321a7c403bb3a7b9f96", + "tabbable": null, + "tooltip": null, + "value": 39 + } + }, + "c7ea9135f6c843089e877d5afb5cccc8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_6715d57bc74a413a8b3eaa2ef2b87dba", + "placeholder": "​", + "style": "IPY_MODEL_40a8d9c0248b4e449b75f4a8b63bd10e", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  61%" + } + }, + "c8059fda20914291a75cc4ab842f6406": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c842ccf7da0e4030b16b302aef76719c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c88eee9aa73944b19d561248372b2fc8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "c8d288224f454e9db253a567893fe151": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_23b47b57d93947fd8c2644f14c39645b", + "max": 699, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_756dbf15767f4d0598abcc9cb70f4b75", + "tabbable": null, + "tooltip": null, + "value": 699 + } + }, + "c8d5ef092d1d4603bda06b82071593ca": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c8e922f3f5b641c8bce261d1b6062231": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c8ef1c6dcee744ad84c94c48775e95f7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_396fde55ae5049598649c8ae2bddc37f", + "placeholder": "​", + "style": "IPY_MODEL_b4aa2ca5638b4c19b45abc9c5fc14fda", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:   0%" + } + }, + "c8f528ad011b4bceb1af3db800487ba3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c8ff767e6a6d4b9cb1e2117558a1c911": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_2dd25c677b4a4b7c9e28fb07ac22afa8", + "placeholder": "​", + "style": "IPY_MODEL_aaf5c3e8883f4c0faf7cf6d1f702f0f4", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  73%" + } + }, + "c921c87c7bd443e5becb5d4c0dc16cba": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "c922748953f446f48477412df7b093ae": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_c67002c2c2fd4b089cb1486f916ccec9", + "max": 49, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_6495b65e6e714f148a39632ce70a5b36", + "tabbable": null, + "tooltip": null, + "value": 49 + } + }, + "c973fe5b30d949c483b8928d4df30dae": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "c98457e46a5d4643b0a8452123210f52": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "c9a9a4ba171741e7bf0cc39b57eabb17": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_7f309413defb45bb966bf925a2d16ef4", + "placeholder": "​", + "style": "IPY_MODEL_1abd526f7a964f82b5169926d97b7128", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:   0%" + } + }, + "c9cba4fb0c944f2ca7e6cbea08c85815": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "ca0111b7c36d4e4ca558ce7cc1d3e3e5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_873ffd5da8b949738a6f6bc01a08964c", + "max": 29, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_51026c4262f44fe8ac18df399729f0f2", + "tabbable": null, + "tooltip": null, + "value": 29 + } + }, + "ca46d5b4b9f54df79bcb2845bed3aca8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_1b15cd7aafa8471d922c367abaad9d55", + "max": 29, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_70df042231194fbe82ead72f6b9f2e60", + "tabbable": null, + "tooltip": null, + "value": 29 + } + }, + "ca4ac9a2f5c643d2b16f01cba836bb86": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_611a93bc2af04c36b77c8f99abdba83f", + "placeholder": "​", + "style": "IPY_MODEL_c3af69049e2e4ed7a62a01913f109e6e", + "tabbable": null, + "tooltip": null, + "value": " 0/19 [00:00<?, ?it/s]" + } + }, + "ca63e6ec056c4aa481e9895ffec8aece": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ca93f86926934301974942581dc5a8f7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "ca9af381bfc94c53aa88ca25837197d6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "caf0796924964acb90582ae00f5c08a5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cb0f6075ac614de19e87d0c4d55a5ecb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cb25640fd0154a4d827daec1dbf7ec27": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_af746d2e44ac4f3e85da91000e5637d4", + "max": 99, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_79a40931a67a41399ce56fc2a2b7ac89", + "tabbable": null, + "tooltip": null, + "value": 99 + } + }, + "cb55b181a2ef4d43a46b1ffcb8b4bdbf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "cb6e24d8a07d49b7aa6e4275131dceae": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_e0141f92f21c4f5891f19a9e5038f90b", + "IPY_MODEL_ad3316882f9a4bb2938b634b5eaae4be", + "IPY_MODEL_8fa39122b79f4c2ab144890149bac228" + ], + "layout": "IPY_MODEL_d94f9bfafdc44a45832805c9467bcc90", + "tabbable": null, + "tooltip": null + } + }, + "cb8319dbbdda4d9b87ca200f04c8831c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "cb877600828f4dd5ab04c06420361ef1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "cba998b96e4f48468e6eea4fcae8c1ad": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cbd01f9e92e04f2fa3a0add1d4474ff9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cbe03234c932448e8af72c157bfe2670": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_e025e75bc1424647bbd4fb04e8a5a0c0", + "placeholder": "​", + "style": "IPY_MODEL_3fd7b789706d482c8684f49b74e26645", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  92%" + } + }, + "cbf046394c764635801e3e2d509ffe01": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_f9051fa31e80442c8391fab3d2284a29", + "IPY_MODEL_39a90639d94446d18d9b2080c488c55e", + "IPY_MODEL_7eb4a998e8fa48d696ee4de69e090856" + ], + "layout": "IPY_MODEL_b19509231b4f404e99b700fa4222d73a", + "tabbable": null, + "tooltip": null + } + }, + "cc00eab9c91e4f519f399f6444bc3813": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cc27f756a8e34122a05dd186ee8f17b4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cc6f4ec9dd164fc7bdb8b702cb8de8ba": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_0e418415487743fc92d75f83c3f16a4b", + "placeholder": "​", + "style": "IPY_MODEL_9aeb3efbdaa24aadb2577b5738df3118", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  98%" + } + }, + "cc83b4ec96674f2b8af46552fcedd93a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "cc84ab39a0134034830163b78cf9dff0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_b31e3578fa894e8e904e1157619b8f9f", + "max": 19, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_342cf62186f34af0aff6b7b096df814d", + "tabbable": null, + "tooltip": null, + "value": 19 + } + }, + "cc9dd0c316dc4fe983eddd4dbef18729": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "cd15bcfba3794c6f8fe2dc68d5a4b0dc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_7353f29152ef4e619142ca03867eb216", + "IPY_MODEL_0cf89b4042ee44f89d3e53c4e6671756", + "IPY_MODEL_afbadadb9c7040e583e17e3de4cc4d84" + ], + "layout": "IPY_MODEL_f6dcdd6bb38d4abeaf265f7245b80c41", + "tabbable": null, + "tooltip": null + } + }, + "cd226cc365dd4eccb39f625c8c03326d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_9f65b68e5ba34a669072d06e5a3c84d8", + "IPY_MODEL_b6e6896f050b4ab0b73041502a4bc634", + "IPY_MODEL_9cc272d377ce408ea3031d099f2a28eb" + ], + "layout": "IPY_MODEL_246331bf94644fb7a7bcffac32433bbb", + "tabbable": null, + "tooltip": null + } + }, + "cd36700303a042768902ae689e70cfec": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_6932fdc9d9184aab96f40553cd268888", + "placeholder": "​", + "style": "IPY_MODEL_23cc90104e2649a0986b899e3974e9bc", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  81%" + } + }, + "ce327262338e4a7aa9c1ccd0ff047916": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "ce43d772afb5428db34ae169dd81b13f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_543e8a4b06ec47a199fe311302e6fdba", + "max": 499, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_48eefbd8bed542dc8d598b294fb4e40b", + "tabbable": null, + "tooltip": null, + "value": 499 + } + }, + "ce553c3eb99b41b186678afbf983a9fd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_d08b5666856d464e9eeaf090dff5e640", + "placeholder": "​", + "style": "IPY_MODEL_ffef49a7ff1a41a4b48c5382e0336f04", + "tabbable": null, + "tooltip": null, + "value": " 0/29 [00:00<?, ?it/s]" + } + }, + "ce55b4346d934300b7e8f21ed5c19d03": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_02597743ea5f499a8259286469b67915", + "max": 59, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_166610b9a0504e9bbd32e9a1554c15da", + "tabbable": null, + "tooltip": null, + "value": 59 + } + }, + "ce6542c58d6443049406b95884863a2a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_fdd36602a7484bc7bb923e33c6cd0494", + "max": 79, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_da07ce2dcc304a3f9d15e1c9062db95b", + "tabbable": null, + "tooltip": null, + "value": 79 + } + }, + "ce869bac5f45494b879e026a3bd151b4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_5f10baf4878c4921b828d169f62a07a9", + "placeholder": "​", + "style": "IPY_MODEL_1a4e03a2097f45d49dc3cfacffdcdcc9", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  61%" + } + }, + "cec5af9fa80247e98501b47d2c827981": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_0fb58817bee248f2887227e04a10e2c5", + "placeholder": "​", + "style": "IPY_MODEL_3ca7bc0a6a654d979b4531e9e7054a9b", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  91%" + } + }, + "cece0c2c564b45c99a80874f42eb277a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "ced3faa091c2469cbbec4a93c24d75f2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cf765084dad944c38c10ce353dce6ccf": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cfa98cf631fb467fb44af939ea163fa3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_37c799e1455849f391c1dbec1e9b9911", + "placeholder": "​", + "style": "IPY_MODEL_f8dbf0c04e3d43f6a225dfa66f1cbdb9", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  74%" + } + }, + "cfb39d3fa8bd4f38aea2de288a4d93fc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "cfb43e4412694e9eb8a3f79fdf54e909": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "cfdd5e0d62f042c585b3c8b4ad673755": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_552e637432da49fe91cfc854e17dfe05", + "placeholder": "​", + "style": "IPY_MODEL_75f7c3a2ad1b4c66af6bdbc7569dd562", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  99%" + } + }, + "cffaceef4a504348bc269dfe245819e2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "d0053b1b867b45e7bf082a6805e26b93": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_354921b909f34c399e4630cc798e2fea", + "max": 9, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_50aecebdcb3a4071850937a19d4d5f4e", + "tabbable": null, + "tooltip": null, + "value": 9 + } + }, + "d01b9c6e22564874b055dcf22995909b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "d01d58d95c064216a7b3770f1da7d1c6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "d08b5666856d464e9eeaf090dff5e640": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d094d6862a6a4b32a70369c867dc21a7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "d0b41e8c5b6a4f23b6c104c307736114": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "d0f1dc6dd7874991a453cfb2cb76e508": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d176d26c1dfe4751a1b445e904475864": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d18f6ac289ef4feaa12e9a15b078f60c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d1d7d6dc779142d7906d8c2537b469c6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_295c626c6e4347e8b91c309531cb9b91", + "placeholder": "​", + "style": "IPY_MODEL_8aa98fcd15574e298f63640511291eef", + "tabbable": null, + "tooltip": null, + "value": " 366/399 [00:01<00:00, 359.55it/s]" + } + }, + "d2399abf03b447e9990d21beed5e849a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d2b985e214fd43ed815e5c8e5fcbe54d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_1ce013f55b0d45d78b3293578964e2de", + "placeholder": "​", + "style": "IPY_MODEL_98bdd8aeda3e426bbdd7d1b9093fbdc1", + "tabbable": null, + "tooltip": null, + "value": " 36/69 [00:00<00:00, 350.63it/s]" + } + }, + "d2ddb887eed049ebb0ab1affe12ea42e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_0220b9c42e2b448ea030289b9f44cd72", + "placeholder": "​", + "style": "IPY_MODEL_36d162ea214f42e48ca91c237defbfc6", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  96%" + } + }, + "d327c6ddffaf4d00ba2af3aa0acc0971": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_30e266582f974a3e930f9e56f2395317", + "IPY_MODEL_1f75704140cc422bb31491822c43c016", + "IPY_MODEL_5645cdf3b34b4392a1d35079df931019" + ], + "layout": "IPY_MODEL_08f2eb43ec5744e4a0cf47e083e8d02c", + "tabbable": null, + "tooltip": null + } + }, + "d327eaf2e15f4a298e81d9a7dd514726": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d33a4ea743e547aaa576bc4042d73bd2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d3635dfaf62b4a8c9e57873ff9288933": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_9676ed1964754239a89e1d2fa069d79a", + "max": 39, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f780a85649ec47699f7140baa4652d45", + "tabbable": null, + "tooltip": null, + "value": 39 + } + }, + "d3898e3187bf4657b9e4fd9afa7ccc5a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d39418e9914e4a8fa76cd325562fcf83": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "d3f2c6a8fc8e4a10acb082c97ab84d2f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_59fc372b0c7d47c6a1ad2bb5aafda9e5", + "placeholder": "​", + "style": "IPY_MODEL_231757bf988b424d9cbfe5d97da99630", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  98%" + } + }, + "d40abf57cebd453e97820cfa59293dda": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_b072f1110efe447c90112dc0a98a55cb", + "IPY_MODEL_5ff96f4a3a5444bb9b543597d2b7519c", + "IPY_MODEL_24d6ba13377444a3bafa63f99d322c2f" + ], + "layout": "IPY_MODEL_ca9af381bfc94c53aa88ca25837197d6", + "tabbable": null, + "tooltip": null + } + }, + "d4a59925d41f4714afe016dec372cae4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "d4fc06e666b649b98d1dd2342638a689": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "d50e3513bd4747178debc94d4cf7541f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "d66f792529a1444199f52bc3c124b78a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "d675401634b24c11be48ebdd652ebd85": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d74dd6f6eada4adba7d67d89248681d8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d772f36f1ef44ba9953b55f6e134c017": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d7760ab9078e42f0b6da1798ac958216": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_3bcedaf0d88e430681282dab48bc18c2", + "placeholder": "​", + "style": "IPY_MODEL_1c12006a3dc14f73b4cc0284d4e1a902", + "tabbable": null, + "tooltip": null, + "value": " 72/79 [00:00<00:00, 275.59it/s]" + } + }, + "d77ee350aa984be6a497883e1f64a501": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_c8059fda20914291a75cc4ab842f6406", + "placeholder": "​", + "style": "IPY_MODEL_23b7b638353145eeb23230747a0e18c9", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  99%" + } + }, + "d7f04cbb53ca4475830eea8769609bac": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d826a2c7e5b04783ba7fb089403f8ddb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "d8baba81a7db4e5bb40b757c58935229": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_c59d0110443e4dd393b0e56575c65457", + "IPY_MODEL_ead251cae6bc4301b42ac54b82befdf2", + "IPY_MODEL_550dfcb586d24a81937f730e4e75a39a" + ], + "layout": "IPY_MODEL_4dab31ace5474d6795dcabf8775e6dc7", + "tabbable": null, + "tooltip": null + } + }, + "d8d70da08bd74e428dadb0f8336edf87": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d94f9bfafdc44a45832805c9467bcc90": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "d958316f5210497daf8211068f41e12f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d965f240b86847c9915c050c9bb38e0c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d9a4a04c80cb45c1b73fc55737f96e2f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d9fac7fca87c4d339e4b3c5a0cfc89cb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "da07ce2dcc304a3f9d15e1c9062db95b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "da10211b30a94c14b4b35b2de142b061": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_f34484907c1f4949b2b5b28d88480e48", + "IPY_MODEL_78919eaaede04982b64631c67dc473b0", + "IPY_MODEL_4afe69415fce46a08b67c509d8c9bf79" + ], + "layout": "IPY_MODEL_ad09e32a6bc24250a8fd390dbc31d8da", + "tabbable": null, + "tooltip": null + } + }, + "dac229b9174046319fd89cce825d168e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "daea84d699c949f89e5c0bda39fb03c4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "daf3a28c1ca94ab88a54ec5d9403bd88": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_12a8f7431a7b4a1884f2f8afce587b78", + "IPY_MODEL_e67d7d61741d43d68a4b06d9cbdbd042", + "IPY_MODEL_fc28a032e6c249c1ae6c87400cdbdd21" + ], + "layout": "IPY_MODEL_189893f87cfe49ff801a805a0ae06f07", + "tabbable": null, + "tooltip": null + } + }, + "dafc978020bc4609b21e5c6c0263d4ff": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "db0ef9660b694b2aab5c9bcb64831229": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "db2b379d38a74a7996a712bb339ba6c4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "db6e25f9010d4810ae6fd7e7e919c5eb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "dbafc86815ca45719c9e6a7fe2696045": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_dc7e66f7b4444b9ba6e9c5046abc761a", + "IPY_MODEL_0d450d0fcddf475eb9a4055a9e08ae1a", + "IPY_MODEL_15d20b7f73704e788ca23d835b6e4d8f" + ], + "layout": "IPY_MODEL_0f695329870540f3bcf2fb1cb665d34d", + "tabbable": null, + "tooltip": null + } + }, + "dbd14503868a425692bfa7a7954d09ba": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "dc2609d48bbd4286a3bddb732b5e7b5b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "dc7e66f7b4444b9ba6e9c5046abc761a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_0ef57969f17642eeb71d761870343c1b", + "placeholder": "​", + "style": "IPY_MODEL_c9cba4fb0c944f2ca7e6cbea08c85815", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.: 100%" + } + }, + "dc83120dbdfd431a98a34c91e0ac4e1f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "dd9ac98c3fe144c6bacd968b4eee5976": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "ddbe56278c5149c0b22a3a7ab874ece7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_4f30ef2766674efabca40e7456344b11", + "placeholder": "​", + "style": "IPY_MODEL_af5369c6c54940b0874511dd412f6668", + "tabbable": null, + "tooltip": null, + "value": " 0/9 [00:00<?, ?it/s]" + } + }, + "ddc17f330d344f758cecaf98b60c029c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_b92c0f1fc2dc426daf7902b55afeb2a9", + "max": 499, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_33943fd46bbb4eb89e232842e54cdb49", + "tabbable": null, + "tooltip": null, + "value": 499 + } + }, + "ddf2e8f1d62a47a8892d10936956ee96": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "de180b912fe24f76a078b152855b9abe": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "de1a1c817fbb4acfb3e4678bb3a01159": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_1151fb176277438b91d2e5b44a2ac6ba", + "IPY_MODEL_a3a1eab2326544f59877d63c7e4732ef", + "IPY_MODEL_0b7ab4273a604b0d9948178b5eed6864" + ], + "layout": "IPY_MODEL_253847aa90ac489a9871939127d1d593", + "tabbable": null, + "tooltip": null + } + }, + "de5677865f72474f8ac090ffe895ed78": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "de8eeab28d654f6ba239e20e24d166e3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "decdcdc5b559405889a6a0238bb43484": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_295c6767a5784dc29346fe8d13a65c5d", + "placeholder": "​", + "style": "IPY_MODEL_aaf9204a0cb84ab68e2c9d5ac08c9c23", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:   0%" + } + }, + "ded69506bd014ce6a228da04832b18bd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "df0380764a3a424cb0625f3f12607ef2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "df0a219fbdca497f9dd3064e76abfbf9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_d675401634b24c11be48ebdd652ebd85", + "placeholder": "​", + "style": "IPY_MODEL_3a37645b000a4c53af10590124714c55", + "tabbable": null, + "tooltip": null, + "value": " 693/699 [00:01<00:00, 357.28it/s]" + } + }, + "df35e0940f1649aaa22c9ef23f9f5013": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "df381c6c534249e0b0cc286ccfa871a9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "df54fd77f4194ba988ce5fc11d25d071": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_629f25a30f104f4eadc2694bcd5fd9c2", + "placeholder": "​", + "style": "IPY_MODEL_cb55b181a2ef4d43a46b1ffcb8b4bdbf", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  99%" + } + }, + "df68ed583e76420e9be461973fa1a024": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "df73d65092e140f29f7d202808ae0960": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "df94faa2f36f4bc5a786b833c42f8e6e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "dfd5a036491646359ec43a7b5530eec9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "dfdb2b109c3a413ea87fcc4b2de5260e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_276d413b7cb74825a4e97ab60cce062d", + "IPY_MODEL_ddc17f330d344f758cecaf98b60c029c", + "IPY_MODEL_2c3efed89a724685b68bd2de27ed7c5f" + ], + "layout": "IPY_MODEL_6a8578ea1efc448f99a3c6bb34fe5335", + "tabbable": null, + "tooltip": null + } + }, + "dff76055b38648dbb9a8a1459e130dbd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e0141f92f21c4f5891f19a9e5038f90b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f0b3153b52e143e7896890a92eb9a940", + "placeholder": "​", + "style": "IPY_MODEL_48a25f680c724bb7826a6721f61a118b", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  92%" + } + }, + "e025e75bc1424647bbd4fb04e8a5a0c0": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e03f4b993d48472d96009e70eabd38cd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "e048452aad634e41a1873392f34e9599": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_72fa5be009b1428681afd6ea2d3aa600", + "max": 299, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_646d6c110e8a4247bc42de6c14671658", + "tabbable": null, + "tooltip": null, + "value": 299 + } + }, + "e0514e0deae14410a629b153d324211d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e099c30b6d654a64a71ea81f4920b98c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "e0b7cf37ed1f4a94a6990f8f693bdaeb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e0d4e0babd9f4f328a5c223c8e10d03e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "e0e97cf252534880ac8984e3e97deb16": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_a24f990ff14f4406ab54f6456289bfea", + "max": 899, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_6231e3194f02432ca94921954887e9d2", + "tabbable": null, + "tooltip": null, + "value": 899 + } + }, + "e10498b5f963419e94298780644cae20": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e1058597caa7456f91b9a0374fbcbb9f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "e11011e3cbcd44cb98785d093cfc181a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "e1165605afa542aca4d73fe573eb7702": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "e1196b89ce0443179a86528ce26e7798": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_ba1bd3a71271471b9dafd286189557b5", + "placeholder": "​", + "style": "IPY_MODEL_b92350319fc34353ae51b0173513add9", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  81%" + } + }, + "e14297571c0e4af8a43b9c98f1e9628a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "e1785606f8534b599f40b8e0e66e210c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "e1ce9b0a0e714b80aedbdd4895c22503": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "e1d73b3a193a4f31a2b6ce3a9d8de812": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "e1df6f2066f34e3587170990416186bc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e20c34ef318f4ea181a8b75c41909da9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "e28bf1986bb044b5b1f74c8f7596c174": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_f5c175a07bdd4786a211fc2019885ec8", + "IPY_MODEL_16096e81cf354cf58b0cd9e80a944d70", + "IPY_MODEL_17c0e221ace64612a2cdaf899887c83d" + ], + "layout": "IPY_MODEL_bb49e18206e14affaa7d5a4d78d3cf4d", + "tabbable": null, + "tooltip": null + } + }, + "e2a732f2f4f147c591689b6e319fc62e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e2d52439f8e74571bfdb9117a6deaeb8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "e2f14e49a5ca45e2b73680a3de3dba8b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_63b460c9ff13425db7615334360dd916", + "IPY_MODEL_103a7a1aa9094d1bb78c6b9ec7ade33c", + "IPY_MODEL_b32093fb46334dfe899ce0f1b29053b3" + ], + "layout": "IPY_MODEL_df94faa2f36f4bc5a786b833c42f8e6e", + "tabbable": null, + "tooltip": null + } + }, + "e2f6700c2eb14a6fbdae9951720a03e1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f9b5d4c1e4e444428f03f25c613fbdfd", + "max": 399, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_d094d6862a6a4b32a70369c867dc21a7", + "tabbable": null, + "tooltip": null, + "value": 399 + } + }, + "e3a64d4b2cd941ee96f15bbfb55e8c54": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e3ae51175f9a49e2ba0985a8ee8d19b4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "e3b07a7b99774f01a19bc7a3b8af11ac": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_120dcd4a339f4a129d800208a181a8c1", + "placeholder": "​", + "style": "IPY_MODEL_8cf2b527f4b5458c95a9ebc0c115cdd4", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:   0%" + } + }, + "e3cda54caf9048408cb11ad5e3c6b19c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_d7f04cbb53ca4475830eea8769609bac", + "placeholder": "​", + "style": "IPY_MODEL_2846bfb4a0a24a8b9693f1e4234d68a7", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  95%" + } + }, + "e3f58d2864e64688a129cd315423e642": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_7421c9b289f74f3d9420ad30d50b0f6f", + "placeholder": "​", + "style": "IPY_MODEL_4d37f011910d469a913ee85b040efbae", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  81%" + } + }, + "e418c289c55d4e5682b19f61757f4965": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "e432b1f158334b06b2fba61305ee70e4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e4401709c0c347a3881f5199c38186a9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "e44b30a72b774bc5905ff7bc4ab17629": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e46cd31731cd4b8e9e584c6cac759d68": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "e49168c656684fa7b8db3751a62edd24": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "e4aaa8cf48074189a13ac527448ed165": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_fb6f627f2bcd46ee8e8a8216374feb4a", + "placeholder": "​", + "style": "IPY_MODEL_56b164d2c3c441f4ab03fb13397543cc", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  96%" + } + }, + "e4df00b8a9b14f55abeb6a5e710702c6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_e75ea3d81dec45db9779ecdf9a53af51", + "IPY_MODEL_019811250c8c4265a15441274b93401d", + "IPY_MODEL_3a73a963e2ea4d8182e2bd86827e56e6" + ], + "layout": "IPY_MODEL_56c21fff30bd4f40bb1c8364cc8dc203", + "tabbable": null, + "tooltip": null + } + }, + "e4fe52a54a7243a7b6ba9ae5cba42f83": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e517229c687345eebf8e21929bf28940": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "e56ce3624ce042a2a5b44218a8b7e609": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e575291ad7e9474db23155ec302dc218": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_7a0d9f508cc64ea585f7b96d6cafdf7f", + "placeholder": "​", + "style": "IPY_MODEL_98c6ea1e637a4ffdae72eb035046ca77", + "tabbable": null, + "tooltip": null, + "value": " 184/199 [00:00<00:00, 363.60it/s]" + } + }, + "e58d293a7316427682613c97223ac6dc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "e5997fd3333440b7a99fbce974f2da06": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e5cf868570664eb9aa2051b4e84ce23f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "e5e87323eefe48338843e25757748279": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e5eebb51cad54655ac58f2f9dd88f6b1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "e67d7d61741d43d68a4b06d9cbdbd042": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_d176d26c1dfe4751a1b445e904475864", + "max": 699, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_a238ec9a71f14a97b5895681d20b1688", + "tabbable": null, + "tooltip": null, + "value": 699 + } + }, + "e6a774658f844c45bac440678d5c11a7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "e6c16a3b5ae94f509c3d116e22bee998": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_843d4058bb49470ab9604abbce518aea", + "IPY_MODEL_ce43d772afb5428db34ae169dd81b13f", + "IPY_MODEL_9827aebad82d48bd8b8b880e277572fe" + ], + "layout": "IPY_MODEL_284d8701b3b94d8e80ffedc6b3956dba", + "tabbable": null, + "tooltip": null + } + }, + "e71d5f6bfbfd4405997fdfb34b886c27": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e72b9468b28f453abe0184fb63e223b2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "e75ea3d81dec45db9779ecdf9a53af51": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_54890dcac06444998ce00fd1824c5b35", + "placeholder": "​", + "style": "IPY_MODEL_6ffc473f5ec445f1b9f2bc8251ba5dee", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  95%" + } + }, + "e7969cf6d54747829e4ba25c13bdcb47": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "e7ac81ff8f8f4e72b521f979fd70caaa": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "e7b42f30113e493e8d7209a7ac32fbdd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "e7e85c069ce349e3828dd145557a811d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e8a497971a7e4b718250060bfd7b4ed9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "e8ad65f2e8014f23af1a3743e70624ea": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e8ed18d0e06d4908807807175a91e75d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e8f243a6103b46e3b7a8bd38428abc7d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_adb8302d715242ae99ac7a9cf0e8d4db", + "placeholder": "​", + "style": "IPY_MODEL_7526d925e31d40f680e88fe17803ac2b", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.: 100%" + } + }, + "e8f726c52a5c4f35ad20a65ae1fd7882": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_c203bde17bdb4938a92a704f63e2c1a7", + "placeholder": "​", + "style": "IPY_MODEL_b703b5b4b1d04219aad63a6d40539eb1", + "tabbable": null, + "tooltip": null, + "value": " 35/69 [00:00<00:00, 348.45it/s]" + } + }, + "e901e93125bb4f24b4df6099a964dabb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "e91a10aca0704569bb19ef67cec91fa5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e92568352b194e9f8501a0e9ef4d85e7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e9729f9de3d0485a9f428bdecac3e89d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e98c04a84dd2409bb998dafb2755c106": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ea4aaf1ab21d49d6903a112e51e8c606": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_3003cebab11f4fe98273b3abf4e2fec8", + "placeholder": "​", + "style": "IPY_MODEL_adbb08f0f45c4394ba8fe7f00e9d9a70", + "tabbable": null, + "tooltip": null, + "value": " 887/899 [00:02<00:00, 363.91it/s]" + } + }, + "ea70cd5b26e54df29b9a55e658a69e93": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_e0b7cf37ed1f4a94a6990f8f693bdaeb", + "placeholder": "​", + "style": "IPY_MODEL_742edab5440f46f2ad4ea31bf7c82326", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  96%" + } + }, + "ea8954dcf9cf4fa593726ee10684bcbe": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_c10ce057bd5243c6a88fba4b6d44cb1a", + "IPY_MODEL_aec00a07c9ae451aaa35345da3858731", + "IPY_MODEL_ae411931c684402d961cf461eec8c4c2" + ], + "layout": "IPY_MODEL_3c7d2f074a744b5abed0237d4d1a2a96", + "tabbable": null, + "tooltip": null + } + }, + "eabd515abc4f4c6b83862bddbdeead45": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "eabd5e7ec89241859936896cdc5169d4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "eac431f7c30346d2a14ca7e19ef1c49f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_50df0e34fdf74026ad91c9fbd72a01f2", + "placeholder": "​", + "style": "IPY_MODEL_a8583d223fe341ebb31b2cff1b581f23", + "tabbable": null, + "tooltip": null, + "value": " 181/199 [00:00<00:00, 359.66it/s]" + } + }, + "ead251cae6bc4301b42ac54b82befdf2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_649ab3fedc924c3fa7f20fbf096d82b7", + "max": 599, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_43ce248145864a488a9da7e7eae10de5", + "tabbable": null, + "tooltip": null, + "value": 599 + } + }, + "eafc334345514b188ef19bc19745ad65": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "eb2a516af8ea4ed590acf13eb1395368": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ebaf078a9cd844d6aae78de6910bb6be": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ebcc786e775344e595d40c2b290d79ea": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ebdf08a16ab64e0db85ae8b85538ef20": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_8b075f11215b42339e9c86d708a021f9", + "IPY_MODEL_edb7fc6b7b784b778541481f0509ffd0", + "IPY_MODEL_9f93da88675c4b93bd7bd6eb0a3664f6" + ], + "layout": "IPY_MODEL_87cbd710527241e9a11d41465c967c0b", + "tabbable": null, + "tooltip": null + } + }, + "ebebef6d182b40998d4c8cb3482dad65": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "ec2ac49e2bf84fceace13542de95a3a9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "ecad90018cdc46e0ad507d651eb19f1f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_7ba32272fc624659919e5f44086fe82e", + "IPY_MODEL_aff1ade3723842db845738d1e3bac7fc", + "IPY_MODEL_2e731324be0b4d16b8b6b4f9ebf21650" + ], + "layout": "IPY_MODEL_c88eee9aa73944b19d561248372b2fc8", + "tabbable": null, + "tooltip": null + } + }, + "ed3eedcbbbd04e33a88bc55959e4e30a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "ed42279ca7274f0e9c342c5377f30bcb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "edb7fc6b7b784b778541481f0509ffd0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_79130a2cb7014a19b946d2b50db39108", + "max": 199, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_9268c7d1802d4930b5dcd10c57e99466", + "tabbable": null, + "tooltip": null, + "value": 199 + } + }, + "edece67fcf5d4de686a9eca080f9db0e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "edf283d5063c494d8de6170bb093172f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_8205d636cc4b4569beaf4119eaac714a", + "max": 59, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_b7210993339b4e3e8696cc635194bd0e", + "tabbable": null, + "tooltip": null, + "value": 59 + } + }, + "ee2a530b7e5042b4ad01b4b832eb4e01": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "ee39a6894158481b9e62dcae6ebe9b22": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ee3d8fa788384c6383e9b7c3749b0bc5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_91aaba070560491e88986044a99ee9cd", + "IPY_MODEL_6b87a941d4fc4135b2bfc1268da08483", + "IPY_MODEL_49e60d33553b4869bf8c77565aff4acc" + ], + "layout": "IPY_MODEL_c5ecb7909c8d40269c90a9f4fe5b34b6", + "tabbable": null, + "tooltip": null + } + }, + "ee621c769b2f4e2eb6ac1527bd12c681": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_f68a8452062d43fa9bb52d364d20f142", + "IPY_MODEL_c79c3be719a04acfa77bc4c68e28e613", + "IPY_MODEL_a2c82c8c191a4ca196bdafdcfca18bc8" + ], + "layout": "IPY_MODEL_ae6719d3bae74c73b76f93727125029c", + "tabbable": null, + "tooltip": null + } + }, + "ee6398d3aa9746cd81bf9b1b8cd48dad": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_9dfde71c2f964bd2aba42d0cbe3e422f", + "max": 599, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_9352b342bdac447181d442f9d6721d34", + "tabbable": null, + "tooltip": null, + "value": 599 + } + }, + "eee4f68d4cec4ab99fee05e5a9ecf34a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f0939768625e4498b2138640b0565ba2", + "placeholder": "​", + "style": "IPY_MODEL_a1685e2f90824976b7d5e61f997edb7b", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:   0%" + } + }, + "eef249c202ee4cbeb7646bce26e0319d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_ddf2e8f1d62a47a8892d10936956ee96", + "placeholder": "​", + "style": "IPY_MODEL_a549d8845ade4a52a6ed2181419d5c65", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  92%" + } + }, + "f01005a3aff94d30b42e4f404f1eebd1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "f02b2d58121f42fbbe6415e8a172f1b5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f0312c9d3c4149bb89f8d2e02ad458cd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "f065899c862944ddb82bc77b3352c825": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f0939768625e4498b2138640b0565ba2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f0b3153b52e143e7896890a92eb9a940": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f121f860b8db4236b9c00f3c5523e048": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "f1296249c4714d8792decf672544a3fa": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_7c3959e149ab462ba6ea4f2630db92c2", + "IPY_MODEL_317fa0351c114464946bd2ad8126dbd8", + "IPY_MODEL_fdd22328882549868dc0e1b1ec17e95b" + ], + "layout": "IPY_MODEL_9236d754207b4335a55419b9843478a5", + "tabbable": null, + "tooltip": null + } + }, + "f12fad9e7f9d4bc5b1a5ce563e159fd6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f140bb901d594523a9a19f0d44efbe63": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f1deb6418f914ca48ae1dfe14d2d4bff": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f1eabed15865477c9ad9707b022376cb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f277a039789f4baa95d14e8bdb1f3cea": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_c4b1311267c547d49a44b43cabca5f8c", + "placeholder": "​", + "style": "IPY_MODEL_e099c30b6d654a64a71ea81f4920b98c", + "tabbable": null, + "tooltip": null, + "value": " 365/399 [00:01<00:00, 355.75it/s]" + } + }, + "f2ad6c21a37541efbd32362e2ac7397a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f2d74cb76e534abc949498140ab6f14f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f318ac7b52f142da9224ad61eca47a08": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_8b55a273538645c4bdedb9d5a0faa07b", + "placeholder": "​", + "style": "IPY_MODEL_50a8d7b46f2e4a4fa0312c24edd5b9b6", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  81%" + } + }, + "f343fc0ebf394065a3713794fbbca812": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f34484907c1f4949b2b5b28d88480e48": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f1deb6418f914ca48ae1dfe14d2d4bff", + "placeholder": "​", + "style": "IPY_MODEL_6b1ed5d530bf4ba99034fd68289dac13", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  98%" + } + }, + "f46eca7df02f4203bc30550cccb05692": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "f4857f5d0e7a4fbfb835cce2051fdd90": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "f4cff59a64ea49b0ba529be7751669f5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f4dc3d9672c44f58bd984593ad00e3fc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f595a18f4bc0439d9227fa120fb7ec8e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "f5c175a07bdd4786a211fc2019885ec8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_74d2e8bc8f89480da859936e7cc65085", + "placeholder": "​", + "style": "IPY_MODEL_a301c1c38aec48d0ba34e3ff572e93f5", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to AnnotationStore.:  96%" + } + }, + "f617a520ed454e59bfca9162efc0c02b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_130eecf034c249e6a7fd2db05201896b", + "placeholder": "​", + "style": "IPY_MODEL_3ce0c2d6634e45dba31093ccdfba7606", + "tabbable": null, + "tooltip": null, + "value": " 889/899 [00:02<00:00, 315.93it/s]" + } + }, + "f62b2b5027da476ebefa97cea736234e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f68a8452062d43fa9bb52d364d20f142": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_d327eaf2e15f4a298e81d9a7dd514726", + "placeholder": "​", + "style": "IPY_MODEL_d4fc06e666b649b98d1dd2342638a689", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  92%" + } + }, + "f69c90dfc6394779b94bff937c454df5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_fbeb22546ed74abfa32cabbdfc530502", + "placeholder": "​", + "style": "IPY_MODEL_bf4b4aed943645f993e78639568f1d87", + "tabbable": null, + "tooltip": null, + "value": " 367/399 [00:01<00:00, 361.38it/s]" + } + }, + "f6bb84427fc1406bb599d3c13980a0f7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "f6c26b1e4cc546bf94af7cfea58e0f9c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f6ccac5711bf49f3983e35d3b4814e87": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f6dcdd6bb38d4abeaf265f7245b80c41": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "f73cdb08a8394132ad51b2a78b945777": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f780a85649ec47699f7140baa4652d45": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "f7ae1100dbdc4027a186f8e8e97f9732": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f862a37fdccb4249b59851554d9d90c2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_3e4cb3b7815d4ff5a31c91d9b895e667", + "max": 89, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_c201ce80042540b4be624d34a14bbf4a", + "tabbable": null, + "tooltip": null, + "value": 89 + } + }, + "f887f18477de4d3fa8e1945ce09cbbef": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_a3ad9028956b445b85e67ee30a0ad787", + "IPY_MODEL_7d7fbe0cffde42a08acfd14d5278929a", + "IPY_MODEL_e8f726c52a5c4f35ad20a65ae1fd7882" + ], + "layout": "IPY_MODEL_16b8d3a44e474e1b8757f409b2a31546", + "tabbable": null, + "tooltip": null + } + }, + "f8aaa250159940d3894a21b184cb8131": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f8dbf0c04e3d43f6a225dfa66f1cbdb9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "f9051fa31e80442c8391fab3d2284a29": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_2bf53299cd6148dcbfbeec2fe341b2f2", + "placeholder": "​", + "style": "IPY_MODEL_e0d4e0babd9f4f328a5c223c8e10d03e", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:   0%" + } + }, + "f941248bd1ef4a09a9452d3c876b400f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f959e77699564d89a4a6fd64274e51d6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "f96bca2f8e51474f8a81270510141c4a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f9b5d4c1e4e444428f03f25c613fbdfd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f9d47283878e43719a8a3c6404e8a2a9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "fa59a1d541c2405284c7296537655c5d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fa6c21d777f942f7b55058e3fbeb23dd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_dff76055b38648dbb9a8a1459e130dbd", + "placeholder": "​", + "style": "IPY_MODEL_76730fc61384421da65d47ea3758d466", + "tabbable": null, + "tooltip": null, + "value": " 990/999 [00:02<00:00, 361.38it/s]" + } + }, + "fa8d2922585e47989ae328b3db783c96": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_332a709915b74f3f834b9bb307d429d7", + "placeholder": "​", + "style": "IPY_MODEL_75786ef0047e4daabf4ad9c2b42786c0", + "tabbable": null, + "tooltip": null, + "value": " 0/9 [00:00<?, ?it/s]" + } + }, + "facca1af79104c58abe31cecbae54578": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_c06795ca8ab947e195f5d4bad6dfee14", + "placeholder": "​", + "style": "IPY_MODEL_8a1c97e6b1be41ed88ab99e243255ce7", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  92%" + } + }, + "fae700a28be54601897911ae558e203c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "faf3df790e944e92a904c6def6017ca5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "fb0537663fb14f6880ada7ecb8c32661": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "fb1628a7e1d54607a7ba57b21361aeb6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_8573f92cb07e4628a65c4bcac66b95b9", + "placeholder": "​", + "style": "IPY_MODEL_63e1db7c3ccd40638c87013ae59c31ed", + "tabbable": null, + "tooltip": null, + "value": " 36/39 [00:00<00:00, 354.02it/s]" + } + }, + "fb1c7afda849493986881acee2b7fda7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_0bae579ff56d432485df4d966054ba63", + "max": 9, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_88a30f9aebb84b3fb04956d9a4ca4032", + "tabbable": null, + "tooltip": null, + "value": 9 + } + }, + "fb2d4e6ff12443fda45af43367604f1a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "fb6f627f2bcd46ee8e8a8216374feb4a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fb9e66c1eb244ec19b447e0261510d1e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fbb2934f82554655af4a00d42652960a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_76dc82edf3544e2389b85f42f4264905", + "IPY_MODEL_798f0ea056f8403ca07fb0e4162571f8", + "IPY_MODEL_452cb84b26dd4ba3a19725711abbc353" + ], + "layout": "IPY_MODEL_275a557e774148eea3ebb9a83d8df3d2", + "tabbable": null, + "tooltip": null + } + }, + "fbcbb33574a24095b51d554f0ed7be27": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_5cf654eb85634875b8929bac771308ee", + "IPY_MODEL_326208c18c2748689eca14d506118164", + "IPY_MODEL_f69c90dfc6394779b94bff937c454df5" + ], + "layout": "IPY_MODEL_4763448e0e8b498fa37cb1bedd8b6b39", + "tabbable": null, + "tooltip": null + } + }, + "fbe1765e09fb4d30ba000cfe8295e636": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fbeb22546ed74abfa32cabbdfc530502": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fc28a032e6c249c1ae6c87400cdbdd21": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_6cbd64db129f4f0bb4a38afe64ab9fbc", + "placeholder": "​", + "style": "IPY_MODEL_96838a1e0d924d60932338d8c3b54981", + "tabbable": null, + "tooltip": null, + "value": " 667/699 [00:01<00:00, 341.36it/s]" + } + }, + "fc2e7719cc4c4c6388d6a49d718df8b3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_aafdd9e4fccf4bbba3f79440240716e4", + "placeholder": "​", + "style": "IPY_MODEL_7bbec7ea432340de99f675f9d9c64d7f", + "tabbable": null, + "tooltip": null, + "value": "Converting outputs to QuPath JSON.:  92%" + } + }, + "fc641f37c79947199726203ca5d8c7f6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fcf1eaa6c2e546b4a57fa17a69a60847": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "fd032fa795b84d8db167fb8b963e5917": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_decdcdc5b559405889a6a0238bb43484", + "IPY_MODEL_ca0111b7c36d4e4ca558ce7cc1d3e3e5", + "IPY_MODEL_a71543e410a5411589b9af9cf97bc349" + ], + "layout": "IPY_MODEL_13f2f6e445544699b81eefc61eadc7b9", + "tabbable": null, + "tooltip": null + } + }, + "fd34101632d74ecfa8afefeb68ddd5e0": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fd8c57e995c54376892a28a89c042405": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "fdd22328882549868dc0e1b1ec17e95b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_2fd359be9a0342a4afc668ed1fc7fe14", + "placeholder": "​", + "style": "IPY_MODEL_45cef1a785544e2aaa16bc70ad5a2c11", + "tabbable": null, + "tooltip": null, + "value": " 993/999 [00:02<00:00, 363.23it/s]" + } + }, + "fdd36602a7484bc7bb923e33c6cd0494": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fdf507c4776e4a4c95efa21a8b0d0eeb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f8aaa250159940d3894a21b184cb8131", + "placeholder": "​", + "style": "IPY_MODEL_2d39479f14544b8c96076af536cce951", + "tabbable": null, + "tooltip": null, + "value": " 476/499 [00:01<00:00, 361.96it/s]" + } + }, + "fdfa0c935dd643df84b958d6dfd75629": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "fe821a7c58dd40079ae4d7692425a9c3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_cfdd5e0d62f042c585b3c8b4ad673755", + "IPY_MODEL_9252c0846a074377b50045e8bf787f39", + "IPY_MODEL_90df3d1f323346d6bf071601bd83e2e5" + ], + "layout": "IPY_MODEL_26f5d57c9ab449f19e9c06d29906ef76", + "tabbable": null, + "tooltip": null + } + }, + "fee27e89bf564c96af3e11528649ab64": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ff067a33c7cd419783bba777c39763d1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_5011809e608743cdae38ec46ae1007ae", + "max": 99, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_53daf9a1d1064e99a505f18a271746e4", + "tabbable": null, + "tooltip": null, + "value": 99 + } + }, + "ff4920731d62401a944991334e27cb0c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_e8ad65f2e8014f23af1a3743e70624ea", + "max": 79, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_38c23be1adc94a149d3d9492d7969f04", + "tabbable": null, + "tooltip": null, + "value": 79 + } + }, + "ff8f54328c1644e3809a1284e38aa37a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_7df84bda0ac74b1b8e9dd64bda80210d", + "max": 499, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_11f5024b723e44f3b8adceb04984fae2", + "tabbable": null, + "tooltip": null, + "value": 499 + } + }, + "ff9c06f0a705471185d1649383026c93": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_6da5553a89574b298e471285c26b2a3b", + "placeholder": "​", + "style": "IPY_MODEL_9950f5a5e80f4d6eb753c7a7551852d0", + "tabbable": null, + "tooltip": null, + "value": " 36/59 [00:00<00:00, 359.08it/s]" + } + }, + "ffd39ee9b3474becafdda6a81004543f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "ffef49a7ff1a41a4b48c5382e0336f04": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + } + }, + "version_major": 2, + "version_minor": 0 + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/pyproject.toml b/pyproject.toml index 05c9fd0cba..24ad76d5a1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -133,7 +133,10 @@ torchvision = [ omit = ['tests/*', 'tiatoolbox/__main__.py', '*/utils/env_detection.py', 'tiatoolbox/typing.py'] [build-system] - requires = ["setuptools"] + requires = [ + "setuptools", + "setuptools-rust", + ] build-backend = "setuptools.build_meta" [tool.distutils.bdist_wheel] @@ -298,3 +301,10 @@ ignore_missing_imports = true # Default local target: minimum supported Python (requires-python lower bound). # CI overrides this per job with --python-version for 3.12-3.14. python_version = "3.12" + +[[tool.setuptools-rust.ext-modules]] +target = "tiatoolbox.rust.utils.misc" +path = "tiatoolbox/rust/utils/misc/Cargo.toml" +binding = "PyO3" +#Uncomment below for release +#debug = false diff --git a/tests/rust/__init__.py b/tests/rust/__init__.py new file mode 100644 index 0000000000..a692396c18 --- /dev/null +++ b/tests/rust/__init__.py @@ -0,0 +1 @@ +"""Unit test package for rust code in tiatoolbox.""" diff --git a/tests/rust/test_misc.py b/tests/rust/test_misc.py new file mode 100644 index 0000000000..a77da1a9c2 --- /dev/null +++ b/tests/rust/test_misc.py @@ -0,0 +1,63 @@ +"""Test for rust functionality.""" + +import numpy as np + +from tiatoolbox import utils + + +def test_contrast_enhancer() -> None: + """Test contrast enhancement functionality.""" + input_array = np.array( + [ + [ + [37, 244, 193, 106, 235, 128, 71, 140, 47], + [103, 184, 72, 20, 188, 238, 126, 7, 0], + [137, 195, 204, 32, 203, 170, 101, 77, 133], + ] + ], + dtype=np.uint8, + ) + + # expected output of the contrast_enhancer + result_array = np.array( + [ + [ + [35, 255, 203, 110, 248, 133, 72, 146, 46], + [106, 193, 73, 17, 198, 251, 131, 3, 0], + [143, 205, 215, 30, 214, 178, 104, 78, 139], + ] + ], + dtype=np.uint8, + ) + + # Calculating the contrast enhanced version of input_array + output_array = utils.misc.contrast_enhancer(input_array, low_p=2, high_p=98) + # The out_put array should be equal to expected result_array + assert np.all(result_array == output_array) + input_array = np.array( + [ + [ + [0], + [0], + [0], + ] + ], + dtype=np.uint8, + ) + + # expected output of the contrast_enhancer + result_array = np.array( + [ + [ + [0], + [0], + [0], + ] + ], + dtype=np.uint8, + ) + + # Calculating the contrast enhanced version of input_array + output_array = utils.misc.contrast_enhancer(input_array, low_p=2, high_p=98) + # The out_put array should be equal to expected result_array + assert np.all(result_array == output_array) diff --git a/tests/test_utils.py b/tests/test_utils.py index f27115de5e..efa71b4ed7 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -915,6 +915,41 @@ def test_contrast_enhancer() -> None: output_array = utils.misc.contrast_enhancer(input_array, low_p=2, high_p=98) # The out_put array should be equal to expected result_array assert np.all(result_array == output_array) + # Calculating the contrast enhanced version of input_array + input_array = np.array([0, 255], dtype=np.uint8) + result_array = np.array([0, 255], dtype=np.uint8) + output_array = utils.misc.contrast_enhancer(input_array, low_p=98, high_p=2) + # The out_put array should be equal to expected result_array + assert np.all(result_array == output_array) + input_array = np.array([0, 0], dtype=np.uint8) + result_array = np.array([0, 0], dtype=np.uint8) + output_array = utils.misc.contrast_enhancer(input_array, low_p=98, high_p=2) + # The out_put array should be equal to expected result_array + assert np.all(result_array == output_array) + + input_array = np.array( + [ + [37, 244, 193, 106, 235, 128, 71, 140, 47], + [103, 184, 72, 20, 188, 238, 126, 7, 0], + [137, 195, 204, 32, 203, 170, 101, 77, 133], + ], + dtype=np.uint8, + ) + + # expected output of the contrast_enhancer + result_array = np.array( + [ + [35, 255, 203, 110, 248, 133, 72, 146, 46], + [106, 193, 73, 17, 198, 251, 131, 3, 0], + [143, 205, 215, 30, 214, 178, 104, 78, 139], + ], + dtype=np.uint8, + ) + + # Calculating the contrast enhanced version of input_array + output_array = utils.misc.contrast_enhancer(input_array, low_p=2, high_p=98) + # The out_put array should be equal to expected result_array + assert np.all(result_array == output_array) def test_load_stain_matrix(track_tmp_path: Path) -> None: diff --git a/tiatoolbox/data/visualization/static/openlayers/viewer.css b/tiatoolbox/data/visualization/static/openlayers/viewer.css index 76ac53caa6..127dfa49dd 100644 --- a/tiatoolbox/data/visualization/static/openlayers/viewer.css +++ b/tiatoolbox/data/visualization/static/openlayers/viewer.css @@ -1,2 +1,10 @@ +<<<<<<< Updated upstream +<<<<<<< Updated upstream :root,:host{--ol-background-color:white;--ol-accent-background-color:#f5f5f5;--ol-subtle-background-color:#80808040;--ol-partial-background-color:#ffffffbf;--ol-foreground-color:#333;--ol-subtle-foreground-color:#666;--ol-brand-color:#0af}.ol-box{box-sizing:border-box;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color);border-radius:2px}.ol-mouse-position{position:absolute;top:8px;right:8px}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;padding:2px;position:absolute;bottom:8px;left:8px}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-align:center;will-change:contents, width;border-top:none;margin:1px;font-size:10px;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{background-color:var(--ol-foreground-color);float:right;z-index:10;width:1px;height:15px}.ol-scale-step-text{z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:10px;position:absolute;bottom:-5px}.ol-scale-text{text-align:center;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:12px;position:absolute;bottom:25px}.ol-scale-singlebar{z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color);height:10px;position:relative}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset;overflow:hidden}.ol-viewport{touch-action:pan-x pan-y}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{background-color:var(--ol-subtle-background-color);border-radius:4px;position:absolute}.ol-zoom{top:.5em;left:.5em}.ol-rotate{transition:opacity .25s linear,visibility linear;top:.5em;right:.5em}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{top:.5em;right:.5em}.ol-control button{color:var(--ol-subtle-foreground-color);font-weight:700;font-size:inherit;text-align:center;background-color:var(--ol-background-color);border:none;border-radius:2px;width:1.375em;height:1.375em;margin:1px;padding:0;line-height:.4em;text-decoration:none;display:block}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{will-change:transform;font-weight:400;display:block}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-decoration:none}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;flex-flow:row-reverse;align-items:center;max-width:calc(100% - 1.3em);display:flex;bottom:.5em;right:.5em}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);margin:0;padding:1px .5em;font-size:12px}.ol-attribution li{list-style:none;display:inline}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{border-radius:4px 0 0;bottom:0;right:0}.ol-attribution.ol-uncollapsible img{max-height:1.6em;margin-top:-.2em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{height:200px;top:4.5em;left:.5em}.ol-zoomslider button{height:10px;position:relative}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{bottom:.5em;left:.5em}.ol-overviewmap.ol-uncollapsible{border-radius:0 4px 0 0;bottom:0;left:0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);width:150px;height:150px}.ol-overviewmap:not(.ol-collapsed) button{position:absolute;bottom:0;left:0}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.ol-overviewmap .ol-viewport:hover{cursor:pointer}.ol-control i{cursor:default}.ol-control.ol-bar{white-space:nowrap;min-width:1em;min-height:1em;position:absolute;top:.5em;left:50%;transform:translate(-50%)}.ol-control.ol-toggle .ol-option-bar{display:none}.ol-control.ol-bar .ol-control{vertical-align:middle;background-color:#0000;margin:0;padding:0;display:inline-block;position:relative;inset:auto;transform:none}.ol-control.ol-bar .ol-bar{position:static}.ol-control.ol-bar .ol-control button{outline:none;margin:2px 1px}.ol-control.ol-bar.ol-left{top:50%;left:.5em;transform:translateY(-50%)}.ol-control.ol-bar.ol-left .ol-control{display:block}.ol-control.ol-bar.ol-right{top:50%;left:auto;right:.5em;transform:translateY(-50%)}.ol-control.ol-bar.ol-right .ol-control{display:block}.ol-control.ol-bar.ol-bottom{top:auto;bottom:.5em}.ol-control.ol-bar.ol-top.ol-left,.ol-control.ol-bar.ol-top.ol-right{top:4.5em;transform:none}.ol-touch .ol-control.ol-bar.ol-top.ol-left,.ol-touch .ol-control.ol-bar.ol-top.ol-right{top:5.5em}.ol-control.ol-bar.ol-bottom.ol-left,.ol-control.ol-bar.ol-bottom.ol-right{top:auto;bottom:.5em;transform:none}.ol-control.ol-bar.ol-group{margin:1px 1px 1px 0}.ol-control.ol-bar.ol-right .ol-group,.ol-control.ol-bar.ol-left .ol-group{margin:1px 1px 0}.ol-control.ol-bar.ol-group button{border-radius:0;margin:0 0 0 1px}.ol-control.ol-bar.ol-right.ol-group button,.ol-control.ol-bar.ol-left.ol-group button,.ol-control.ol-bar.ol-right .ol-group button,.ol-control.ol-bar.ol-left .ol-group button{margin:0 0 1px}.ol-control.ol-bar.ol-group .ol-control:first-child>button{border-radius:5px 0 0 5px}.ol-control.ol-bar.ol-group .ol-control:last-child>button{border-radius:0 5px 5px 0}.ol-control.ol-bar.ol-left.ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-right.ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-left .ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-right .ol-group .ol-control:first-child>button{border-radius:5px 5px 0 0}.ol-control.ol-bar.ol-left.ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-right.ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-left .ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-right .ol-group .ol-control:last-child>button{border-radius:0 0 5px 5px}.ol-control.ol-bar .ol-rotate{opacity:1;visibility:visible}.ol-control.ol-bar .ol-rotate button{display:block}.ol-control.ol-bar .ol-toggle.ol-active>button,.ol-control.ol-bar .ol-toggle.ol-active button:hover{color:#fff;background-color:#0af}.ol-control.ol-toggle button:disabled{background-color:#ccc}.ol-control.ol-bar .ol-control.ol-option-bar{background-color:#fffc;border-radius:0;margin:5px 0;display:none;position:absolute;top:100%;left:0;box-shadow:0 0 0 1px #003c8880,1px 1px 2px #00000080}.ol-control.ol-bar .ol-option-bar:before{content:"";pointer-events:none;border:.5em solid #0000;border-bottom-color:#003c8880;position:absolute;bottom:100%;left:.3em}.ol-control.ol-bar .ol-option-bar .ol-control{display:table-cell}.ol-control.ol-bar .ol-control .ol-bar{display:none}.ol-control.ol-bar .ol-control.ol-active>.ol-option-bar{display:block}.ol-control.ol-bar .ol-control.ol-collapsed ul{display:none}.ol-control.ol-bar .ol-control.ol-text-button>div:hover,.ol-control.ol-bar .ol-control.ol-text-button>div{color:#003c8880;background-color:#0000;width:auto;min-width:1.375em;margin:0}.ol-control.ol-bar .ol-control.ol-text-button{border-left:1px solid #003c88cc;border-radius:0;font-size:.9em}.ol-control.ol-bar .ol-control.ol-text-button:first-child{border-left:0}.ol-control.ol-bar .ol-control.ol-text-button>div{padding:.11em .3em;font-family:Arial,Helvetica,sans-serif;font-size:1.14em;font-weight:400}.ol-control.ol-bar .ol-control.ol-text-button div:hover{color:#003c88}.ol-control.ol-bar.ol-bottom .ol-option-bar{top:auto;bottom:100%}.ol-control.ol-bar.ol-bottom .ol-option-bar:before{border-color:#003c8880 #0000 #0000;top:100%;bottom:auto}.ol-control.ol-bar.ol-left .ol-option-bar{margin:0 5px;top:0;bottom:auto;left:100%}.ol-control.ol-bar.ol-left .ol-option-bar:before{border-color:#0000 #003c8880 #0000 #0000;inset:.3em 100% auto auto}.ol-control.ol-bar.ol-right .ol-option-bar{margin:0 5px;inset:0 100% auto auto}.ol-control.ol-bar.ol-right .ol-option-bar:before{border-color:#0000 #0000 #0000 #003c8880;top:.3em;bottom:auto;left:100%}.ol-control.ol-bar.ol-left .ol-option-bar .ol-option-bar,.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar{margin:5px 0;inset:100% auto auto .3em}.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar{left:auto;right:.3em}.ol-control.ol-bar.ol-left .ol-option-bar .ol-option-bar:before,.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar:before{border-color:#0000 #0000 #003c8880;inset:auto auto 100% .3em}.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar:before{left:auto;right:.3em}.ol-control-title{position:absolute;top:0;left:0;right:0}.ol-center-position{background-color:#fffc;padding:.1em 1em;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.ol-compassctrl{display:none;top:1em;left:auto;right:1em}.ol-compassctrl.ol-visible{display:block!important}.ol-ext-dialog{opacity:0;z-index:1000;background-color:#00000080;width:150%;height:100%;transition:opacity .2s,top 0s .2s;position:fixed;top:-100%;left:0;pointer-events:none!important}.ol-ext-dialog.ol-visible{opacity:1;transition:opacity .2s,top;top:0;pointer-events:all!important}.ol-viewport .ol-ext-dialog{position:absolute}.ol-ext-dialog>form>h2{text-overflow:ellipsis;white-space:nowrap;margin:0 .5em .5em 0;display:none;overflow:hidden}.ol-ext-dialog>form.ol-title>h2{display:block}.ol-ext-dialog>form{box-sizing:border-box;background-color:#fff;border:1px solid #333;min-width:5em;max-width:60%;min-height:3em;max-height:100%;padding:1em;transition:top .2s,transform .2s;position:absolute;top:0;left:33.33%;overflow:hidden auto;transform:translate(-50%,-30%);box-shadow:3px 3px 4px #00000080}dialog.ol-ext-dialog>form{width:max-content;max-width:90%;left:50%}.ol-ext-dialog>form.ol-closebox{padding-top:1.5em}.ol-ext-dialog>form.ol-title{padding-top:1em}.ol-ext-dialog>form.ol-button{padding-bottom:.5em}.ol-ext-dialog.ol-zoom>form{top:30%;transform:translate(-50%,-30%)scale(0)}.ol-ext-dialog.ol-visible>form{top:30%}.ol-ext-dialog.ol-zoom.ol-visible>form{transform:translate(-50%,-30%)scale(1)}.ol-ext-dialog>form .ol-content{overflow:hidden auto}.ol-ext-dialog>form .ol-closebox{cursor:pointer;width:1em;height:1em;display:none;position:absolute;top:.5em;right:.5em}.ol-ext-dialog>form.ol-closebox .ol-closebox{display:block}.ol-ext-dialog>form .ol-closebox:before,.ol-ext-dialog>form .ol-closebox:after{content:"";background-color:currentColor;border-radius:.1em;width:1em;height:.1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-ext-dialog>form .ol-closebox:before{transform:translate(-50%,-50%)rotate(-45deg)}.ol-ext-dialog>form .ol-buttons{text-align:right;overflow-x:hidden}.ol-ext-dialog>form .ol-buttons input{color:#003c88;cursor:pointer;background:0 0;border:0;border-radius:.25em;margin-top:.5em;padding:.5em;font-size:1em}.ol-ext-dialog>form .ol-buttons input:hover{background-color:#003c881a}.ol-ext-dialog>form .ol-buttons input[type=submit]{font-weight:700}.ol-ext-dialog .ol-progress-message{text-align:center;padding-bottom:.5em;font-size:.9em}.ol-ext-dialog .ol-progress-bar{border:1px solid #369;width:20em;max-width:100%;height:1em;margin:.5em auto 0;padding:2px;overflow:hidden}.ol-ext-dialog .ol-progress-bar>div{background:#369;width:50%;height:100%;transition:width .3s}.ol-ext-dialog .ol-progress-bar>div.notransition{transition:unset}.ol-ext-dialog.ol-fullscreen-dialog form{text-align:center;max-width:calc(66.6% - 2em);-webkit-box-shadow:none;box-shadow:none;color:#fff;background:0 0;border:none;inset:1em;transform:none}.ol-ext-dialog.ol-fullscreen-dialog form .ol-closebox{font-size:2em;top:0;right:0}.ol-ext-dialog.ol-fullscreen-dialog .ol-closebox:before,.ol-ext-dialog.ol-fullscreen-dialog .ol-closebox:after{border:.1em solid}.ol-ext-dialog.ol-fullscreen-dialog img,.ol-ext-dialog.ol-fullscreen-dialog video{max-width:100%}body>.ol-ext-dialog .ol-content{max-height:calc(100vh - 10em)}body>.ol-ext-dialog>form{overflow:visible}.ol-editbar .ol-button button{box-sizing:border-box;vertical-align:middle;font-style:normal;display:inline-block;position:relative}.ol-editbar .ol-button button:before,.ol-editbar .ol-button button:after{content:"";box-sizing:border-box;background-color:currentColor;border-width:0;position:absolute}.ol-editbar .ol-button button:focus{outline:none}.ol-editbar .ol-selection>button:before{background-color:#0000;border:.25em solid #0000;border-top:0 solid;border-bottom:.65em solid;width:.6em;height:1em;top:.35em;left:.5em;transform:translate(-50%,-50%)rotate(-30deg);box-shadow:0 .6em 0 -.23em}.ol-editbar .ol-selection0>button:after{background-color:#0000;border:.05em solid #0000;border-top:0 solid;border-bottom:.7em solid;width:.28em;height:.6em;top:.5em;left:.7em;transform:rotate(-45deg)}.ol-editbar .ol-delete button:after,.ol-editbar .ol-delete button:before{width:1em;height:.2em;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-editbar .ol-delete button:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-editbar .ol-info button:before{border-radius:.03em;width:.25em;height:.6em;top:.47em;left:50%;transform:translate(-50%)}.ol-editbar .ol-info button:after{border-radius:.03em;width:.25em;height:.2em;top:.12em;left:50%;transform:translate(-50%);box-shadow:-.1em .35em,-.1em .82em,.1em .82em}.ol-editbar .ol-drawpoint button:before{background-color:#0000;border:.15em solid;border-radius:50%;width:.7em;height:.7em;top:.2em;left:50%;transform:translate(-50%)}.ol-editbar .ol-drawpoint button:after{background-color:#0000;border:.2em solid #0000;border-top:.4em solid;border-bottom:0 solid;width:.4em;height:.4em;top:.8em;left:50%;transform:translate(-50%)}.ol-editbar .ol-drawline>button:before,.ol-editbar .ol-drawpolygon>button:before,.ol-editbar .ol-drawhole>button:before{background-color:#0000;border:.13em solid;border-width:.2em .13em .09em;width:.8em;height:.8em;top:.2em;left:.25em;transform:rotate(10deg)perspective(1em)rotateX(40deg)}.ol-editbar .ol-drawline>button:before{border-bottom:0}.ol-editbar .ol-drawline>button:after,.ol-editbar .ol-drawhole>button:after,.ol-editbar .ol-drawpolygon>button:after{width:.3em;height:.3em;top:.2em;left:.25em;box-shadow:-.2em .55em,.6em .1em,.65em .7em}.ol-editbar .ol-drawhole>button:after{box-shadow:-.2em .55em,.6em .1em,.65em .7em,.25em .35em}.ol-editbar .ol-offset>button i,.ol-editbar .ol-transform>button i{width:.9em;height:.9em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-editbar .ol-offset>button i{width:.8em;height:.8em}.ol-editbar .ol-offset>button i:before,.ol-editbar .ol-transform>button i:before,.ol-editbar .ol-transform>button i:after{content:"";background-color:currentColor;width:.1em;height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg);box-shadow:.5em 0 0 .1em,-.5em 0 0 .1em}.ol-editbar .ol-offset>button i:before{box-shadow:.45em 0 0 .1em,-.45em 0 0 .1em}.ol-editbar .ol-transform>button i:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-editbar .ol-split>button:before{border-radius:50%;width:.3em;height:.3em;top:.81em;left:.75em;box-shadow:.1em -.4em,-.15em -.25em}.ol-editbar .ol-split>button:after{background-color:#0000;border:.2em solid;border-width:0 .2em .2em 0;border-radius:.1em;width:.8em;height:.8em;top:.15em;left:-.1em;transform:rotate(20deg)scaleY(.6)rotate(-45deg)}.ol-editbar .ol-drawregular>button:before{background-color:#0000;border:.1em solid;width:.9em;height:.9em;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div{cursor:pointer;vertical-align:text-bottom;border:.5em solid #0000;border-color:#0000 currentColor;display:inline-block}.ol-editbar .ol-drawregular .ol-bar:before,.ol-control.ol-bar.ol-editbar .ol-drawregular .ol-bar{left:50%;transform:translate(-50%)}.ol-editbar .ol-drawregular .ol-bar .ol-text-button{text-align:center;min-width:6em}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div:first-child{border-width:.5em .5em .5em 0;margin:0 .5em 0 0}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div:last-child{border-width:.5em 0 .5em .5em;margin:0 0 0 .5em}.ol-feature-list{position:relative}.ol-control.ol-feature-list{width:100%;position:absolute;bottom:0;left:0}.ol-control.ol-feature-list>button:before{content:"";background-image:linear-gradient(90deg,currentColor,#0000);width:60%;height:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 2.5px}.ol-control.ol-feature-list.ol-collapsed{width:auto;bottom:.5em;left:.5em}.ol-feature-list .ol-content{clear:both;background-color:#f4f6f8}.ol-feature-list.ol-collapsed .ol-content>*{display:none}.ol-feature-list .ol-header{position:relative;overflow:hidden}.ol-feature-list.ol-collapsed .ol-header{display:block}.ol-control.ol-feature-list>button,.ol-control.ol-feature-list.ol-collapsed .ol-content{display:none}.ol-control.ol-feature-list.ol-collapsed>button{display:block}.ol-feature-list .ol-sizer{cursor:row-resize;background-color:#ccc;border:1px solid #f4f6f8;border-width:1px 0;width:100%;height:1px;position:relative}.ol-feature-list.ol-bottom .ol-sizer{position:absolute;bottom:0}.ol-feature-list .ol-sizer:before{content:"";z-index:1;background-color:#ddd;border:3px solid #0000;border-width:3px 1.5em;border-radius:2px;width:1.5em;height:4px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 -1px #aaa,inset 0 1px #aaa}.ol-feature-list .ol-sizer:hover:before{background-color:#ccc}.ol-feature-list .ol-content .ol-header p{vertical-align:middle;white-space:nowrap;text-overflow:ellipsis;width:calc(100% - 2em);margin:.1em .25em;display:inline-block;overflow:hidden}.ol-feature-list .ol-content .ol-header .ol-buttons{position:absolute;top:50%;right:0;transform:translateY(-50%)}.ol-feature-list .ol-content .ol-header button{vertical-align:middle;box-sizing:border-box;background:0 0;border:0;width:1em;height:1em;margin:0 .2em;position:relative}.ol-feature-list .ol-content .ol-header button.ol-closebox:before,.ol-feature-list .ol-content .ol-header button.ol-closebox:after{content:"";background:currentColor;width:.1em;height:1em;font-style:normal;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-feature-list .ol-content .ol-header button.ol-closebox:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox{border:1px solid}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox:before{transform:translate(-50%,-50%)rotate(90deg)}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox:after{display:none}.ol-feature-list .ol-scroll-container{height:10em;min-height:3em;overflow:auto}.ol-feature-list .ol-scroll-container:focus{outline:unset}.ol-feature-list table{border-collapse:collapse;white-space:nowrap;background-color:#fff;position:relative}.ol-feature-list table thead{background-color:#f4f6f8;position:sticky;top:0;overflow:hidden}.ol-feature-list table tr{box-sizing:border-box;height:1.4em}.ol-feature-list table tbody tr:hover{cursor:pointer;background-color:#eee}.ol-feature-list table tbody tr.ol-selected{background-color:#eee}.ol-feature-list table td{border:0 solid #ddd;border-width:0 0 1px 1px;width:100px;overflow:hidden}.ol-feature-list table td.number{text-align:right}.ol-feature-list table td.undefined{text-align:center;background-color:#fafafa}.ol-feature-list table tr:hover td,.ol-feature-list table .ol-selected td{background-color:#0000}.ol-feature-list thead td{position:relative}.ol-feature-list thead td.sort{padding-right:1.5em}.ol-feature-list thead td p{margin:0;display:inline-block}.ol-feature-list table td button{background-color:#0000;border:0;width:1.2em;height:1.4em;margin:.1em 0;padding:0;position:absolute;top:0;right:0}.ol-feature-list thead td button.sort:before{content:"⇅";cursor:pointer;font-size:1em;font-style:normal;font-weight:400;line-height:1em}.ol-feature-list thead td button.sortup:before{content:"↧"}.ol-feature-list thead td button.sortdown:before{content:"↥"}.ol-gauge{background-color:#ffffff80;padding:.1em .5em;top:.5em;left:50%;transform:translate(-50%)}.ol-gauge>*{vertical-align:middle;display:inline-block}.ol-gauge>span{margin:0 .5em 0 0}.ol-gauge>div{border:1px solid #003c8880;border-radius:3px;width:200px;padding:1px;display:inline-block}.ol-gauge button{max-width:100%;height:.8em;margin:0}.ol-control.ol-bookmark{background-color:#ffffff80;top:.5em;left:3em}.ol-control.ol-bookmark button{position:relative}.ol-control.ol-bookmark>button:before{content:"";border:5px solid;border-top-width:10px;border-bottom:4px solid #0000;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-bookmark>div{min-width:5em;display:block}.ol-control.ol-bookmark.ol-collapsed>div{display:none}.ol-control.ol-bookmark input{margin:0 .5em .5em;padding:0 .5em;font-size:.9em}.ol-control.ol-bookmark ul{min-width:10em;margin:0 0 .5em;padding:0;list-style:none}.ol-control.ol-bookmark li{color:#003c88cc;cursor:default;clear:both;padding:0 .2em 0 .5em;font-size:.9em}.ol-control.ol-bookmark li:hover{color:#fff;background-color:#003c8880}.ol-control.ol-bookmark>div button{float:right;cursor:pointer;background-color:#0000;border-radius:0;width:1em;height:.8em}.ol-control.ol-bookmark>div button:before{content:"⨯";color:#936;border-radius:0;font-size:1.2em;line-height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-bookmark ul li button,.ol-bookmark input{display:none}.ol-bookmark.ol-editable ul li button,.ol-bookmark.ol-editable input{display:block}.ol-control.ol-geobt{inset:auto .5em 3em auto}.ol-touch .ol-control.ol-geobt{bottom:3.5em}.ol-control.ol-geobt button:before{content:"";background:0 0;border:.16em solid;border-radius:50%;width:.4em;height:.4em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-geobt button:after{content:"";background:0 0;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.42em 0,-.42em 0,0 .42em,0 -.42em}.ol-control.ol-bar.ol-geobar .ol-control{vertical-align:middle;display:inline-block}.ol-control.ol-bar.ol-geobar .ol-bar{display:none}.ol-bar.ol-geobar.ol-active .ol-bar{display:inline-block}.ol-bar.ol-geobar .geolocBt button:before,.ol-bar.ol-geobar .geolocBt button:after{content:"";border-top:.3em solid;border-bottom:0 solid #0000;border-left:.2em solid #0000;border-right:.8em solid #0000;font-size:1.2em;display:block;position:absolute;top:.45em;left:.15em;transform:rotate(-30deg)}.ol-bar.ol-geobar .geolocBt button:after{border-width:0 .8em .3em .2em;border-color:#0000 #0000 currentColor;transform:rotate(-61deg)}.ol-bar.ol-geobar .startBt button:before{content:"";background-color:#800;border-radius:50%;width:1em;height:1em;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-bar.ol-geobar .pauseBt button:before,.ol-bar.ol-geobar .pauseBt button:after{content:"";background-color:currentColor;width:.25em;height:1em;display:block;position:absolute;top:50%;left:35%;transform:translate(-50%,-50%)}.ol-bar.ol-geobar .pauseBt button:after{left:65%}.ol-control.ol-bar.ol-geobar .centerBt,.ol-control.ol-bar.ol-geobar .pauseBt,.ol-bar.ol-geobar.pauseTrack .startBt,.ol-bar.ol-geobar.centerTrack .startBt,.ol-bar.ol-geobar.centerTrack.pauseTrack .pauseBt,.ol-bar.ol-geobar.centerTrack .pauseBt{display:none}.ol-bar.ol-geobar.pauseTrack .pauseBt,.ol-bar.ol-geobar.centerTrack .centerBt{display:inline-block}.ol-control.ol-globe{opacity:.7;transform-origin:0 100%;border-radius:50%;position:absolute;bottom:.5em;left:.5em;transform:scale(.5)}.ol-control.ol-globe:hover{opacity:.9}.ol-control.ol-globe .panel{cursor:pointer;background-color:#fff;border-radius:50%;width:170px;height:170px;display:block;overflow:hidden;box-shadow:0 0 10px 5px #ffffff80}.ol-control.ol-globe .panel .ol-viewport{border-radius:50%}.ol-control.ol-globe .ol-pointer{z-index:1;background-color:#fff;border:10px solid red;border-radius:50%;width:10px;height:10px;transition:opacity .15s,top,left;display:block;position:absolute;top:50%;left:50%;transform:translate(-15px,-40px)}.ol-control.ol-globe .ol-pointer.hidden{opacity:0;transition:opacity .15s,top 3s,left 5s}.ol-control.ol-globe .ol-pointer:before{content:"";border-radius:50%;width:0;height:0;display:block;position:absolute;top:23px;left:0;box-shadow:6px 6px 10px 5px #000}.ol-control.ol-globe .ol-pointer:after{content:"";border:10px solid #0000;border-top:20px solid red;border-bottom:0 solid red;width:0;height:0;display:block;position:absolute;top:100%;left:-50%}.ol-control.ol-globe .panel:before{content:"";z-index:1;border-radius:50%;width:100%;height:100%;display:block;position:absolute;top:0;left:0;box-shadow:inset -20px -20px 80px 2px #000000b3}.ol-control.ol-globe .panel:after{content:"";z-index:1;border-radius:50%;width:20%;height:0;display:block;position:absolute;top:20%;left:23%;transform:rotate(-40deg);box-shadow:0 0 20px 7px #fff}.ol-control.ol-globe.ol-collapsed .panel{display:none}.ol-control-top.ol-globe{transform-origin:0 0;top:5em;bottom:auto}.ol-control-right.ol-globe{transform-origin:100% 100%;left:auto;right:.5em}.ol-control-right.ol-control-top.ol-globe{transform-origin:100% 0;left:auto;right:.5em}.ol-gridreference{background:#fff;border:1px solid #000;max-height:100%;top:0;right:0;overflow:auto}.ol-gridreference input{width:100%}.ol-gridreference ul{margin:0;padding:0;list-style:none}.ol-gridreference li{cursor:pointer;padding:0 .5em}.ol-gridreference ul li:hover{background-color:#ccc}.ol-gridreference li.ol-title,.ol-gridreference li.ol-title:hover{color:#fff;cursor:default;background:#003c8880}.ol-gridreference ul li .ol-ref{margin-left:.5em}.ol-gridreference ul li .ol-ref:before{content:"("}.ol-gridreference ul li .ol-ref:after{content:")"}.ol-control.ol-imageline{border-radius:0;padding:0;transition:all .3s;bottom:0;left:0;right:0;overflow:visible}.ol-control.ol-imageline.ol-collapsed{transform:translateY(100%)}.ol-imageline>div{white-space:nowrap;scroll-behavior:smooth;width:100%;height:4em;position:relative;overflow:hidden}.ol-imageline>div.ol-move{scroll-behavior:unset}.ol-control.ol-imageline button{margin:.65em;position:absolute;top:-1em;transform:translateY(-100%);box-shadow:0 0 0 .15em #fff6}.ol-control.ol-imageline button:before{content:"";border:.15em solid;border-width:.15em .15em 0 0;width:.4em;height:.4em;position:absolute;top:40%;left:50%;transform:translate(-50%,-50%)rotate(135deg)}.ol-control.ol-imageline.ol-collapsed button:before{top:60%;transform:translate(-50%,-50%)rotate(-45deg)}.ol-imageline,.ol-imageline:hover{background-color:#000000bf}.ol-imageline.ol-arrow:after,.ol-imageline.ol-arrow:before{content:"";z-index:1;opacity:.8;pointer-events:none;border:1em solid #fff;border-left:0 solid #000;border-right:.6em solid #000;position:absolute;top:50%;left:.2em;transform:translateY(-50%);box-shadow:-.6em 0 0 1em #fff}.ol-imageline.ol-arrow:after{border-width:1em 0 1em .6em;left:auto;right:.2em;box-shadow:.6em 0 0 1em #fff}.ol-imageline.ol-scroll0.ol-arrow:before,.ol-imageline.ol-scroll1.ol-arrow:after{display:none}.ol-imageline .ol-image{cursor:pointer;height:100%;display:inline-block;position:relative}.ol-imageline img{box-sizing:border-box;opacity:0;border:.25em solid #0000;max-height:100%;transition:all 1s}.ol-imageline img.ol-loaded{opacity:1}.ol-imageline .ol-image.select{background-color:#fff}.ol-imageline .ol-image span{color:#fff;white-space:normal;text-align:center;background-color:#00000080;width:125%;max-height:2.4em;font-size:.8em;line-height:1.2em;display:none;position:absolute;bottom:0;left:50%;overflow:hidden;transform:translate(-50%)scaleX(.8)}.ol-imageline .ol-image:hover span{display:block}.ol-control.ol-routing.ol-isochrone .ol-method-time,.ol-control.ol-routing.ol-isochrone .ol-method-distance,.ol-control.ol-routing.ol-isochrone>button{position:relative}.ol-control.ol-routing.ol-isochrone .ol-method-time:before,.ol-control.ol-routing.ol-isochrone>button:before{content:"";clip:unset;border:.1em solid;border-radius:50%;width:.8em;height:.8em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 -.5em 0 -.35em,.4em -.35em 0 -.35em}.ol-control.ol-routing.ol-isochrone .ol-method-time:after,.ol-control.ol-routing.ol-isochrone>button:after{content:"";-webkit-box-shadow:none;box-shadow:none;box-sizing:border-box;clip:unset;border:.3em solid #0000;border-right-color:currentColor;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-60deg)}.ol-control.ol-routing.ol-isochrone .ol-method-distance:before{content:"";box-sizing:border-box;border:.1em solid;width:1em;height:.5em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-30deg)}.ol-control.ol-routing.ol-isochrone .ol-method-distance:after{content:"";width:.1em;height:.15em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-30deg);box-shadow:inset 0 -.15em,0 .1em,.25em .1em,-.25em .1em}.ol-control.ol-routing.ol-isochrone .ol-direction-direct:before,.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:before{content:"";box-sizing:border-box;border:.1em solid;border-radius:50%;width:.3em;height:.3em;position:absolute;top:50%;left:30%;transform:translate(-50%,-50%);box-shadow:.25em 0 0 -.05em}.ol-control.ol-routing.ol-isochrone .ol-direction-direct:after,.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:after{content:"";border:.4em solid #0000;border-left-color:currentColor;border-right:0 solid;position:absolute;top:50%;left:70%;transform:translate(-50%,-50%)}.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:after{border-width:.4em .4em .4em 0}.ol-control.ol-isochrone.ol-collapsed .content{display:none}.ol-control.ol-isochrone input[type=number]{text-align:right;width:3em;margin:0 .1em}.ol-control.ol-isochrone .ol-distance input[type=number]{width:5em}.ol-isochrone .ol-time,.ol-isochrone .ol-distance{display:none}.ol-isochrone .ol-time.selected,.ol-isochrone .ol-distance.selected{display:block}.ol-control.ol-layerswitcher-popup{text-align:left;position:absolute;top:3em;right:.5em}.ol-control.ol-layerswitcher-popup .panel{clear:both;background:#fff}.ol-layerswitcher-popup .panel{margin:0;padding:.25em;list-style:none;overflow:hidden}.ol-layerswitcher-popup .panel ul{padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher-popup.ol-collapsed .panel{display:none}.ol-layerswitcher-popup.ol-forceopen .panel{display:block}.ol-layerswitcher-popup button{float:right;background-color:#fff;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACE1BMVEX///8A//8AgICA//8AVVVAQID///8rVVVJtttgv98nTmJ2xNgkW1ttyNsmWWZmzNZYxM4gWGgeU2JmzNNr0N1Rwc0eU2VXxdEhV2JqytQeVmMhVmNoydUfVGUgVGQfVGQfVmVqy9hqy9dWw9AfVWRpydVry9YhVmMgVGNUw9BrytchVWRexdGw294gVWQgVmUhVWPd4N6HoaZsy9cfVmQgVGRrytZsy9cgVWQgVWMgVWRsy9YfVWNsy9YgVWVty9YgVWVry9UgVWRsy9Zsy9UfVWRsy9YgVWVty9YgVWRty9Vsy9aM09sgVWRTws/AzM0gVWRtzNYgVWRuy9Zsy9cgVWRGcHxty9bb5ORbxdEgVWRty9bn6OZTws9mydRfxtLX3Nva5eRix9NFcXxOd4JPeINQeIMiVmVUws9Vws9Vw9BXw9BYxNBaxNBbxNBcxdJexdElWWgmWmhjyNRlx9IqXGtoipNpytVqytVryNNrytZsjZUuX210k5t1y9R2zNR3y9V4lp57zth9zdaAnKOGoaeK0NiNpquV09mesrag1tuitbmj1tuj19uktrqr2d2svcCu2d2xwMO63N+7x8nA3uDC3uDFz9DK4eHL4eLN4eIyYnDX5OM5Z3Tb397e4uDf4uHf5uXi5ePi5+Xj5+Xk5+Xm5+Xm6OY6aHXQ19fT4+NfhI1Ww89gx9Nhx9Nsy9ZWw9Dpj2abAAAAWnRSTlMAAQICAwQEBgcIDQ0ODhQZGiAiIyYpKywvNTs+QklPUlNUWWJjaGt0dnd+hIWFh4mNjZCSm6CpsbW2t7nDzNDT1dje5efr7PHy9PT29/j4+Pn5+vr8/f39/f6DPtKwAAABTklEQVR4Xr3QVWPbMBSAUTVFZmZmhhSXMjNvkhwqMzMzMzPDeD+xASvObKePPa+ffHVl8PlsnE0+qPpBuQjVJjno6pZpSKXYl7/bZyFaQxhf98hHDKEppwdWIW1frFnrxSOWHFfWesSEWC6R/P4zOFrix3TzDFLlXRTR8c0fEEJ1/itpo7SVO9Jdr1DVxZ0USyjZsEY5vZfiiAC0UoTGOrm9PZLuRl8X+Dq1HQtoFbJZbv61i+Poblh/97TC7n0neCcK0ETNUrz1/xPHf+DNAW9Ac6t8O8WH3Vp98f5lCaYKAOFZMLyHL4Y0fe319idMNgMMp+zWVSybUed/+/h7I4wRAG1W6XDy4XmjR9HnzvDRZXUAYDFOhC1S/Hh+fIXxen+eO+AKqbs+wAo30zDTDvDxKoJN88sjUzDFAvBzEUGFsnADoIvAJzoh2BZ8sner+Ke/vwECuQAAAABJRU5ErkJggg==);background-position:50%;background-repeat:no-repeat;width:38px;height:38px}.ol-layerswitcher-popup li{color:#369;cursor:pointer;padding:.25em 1em;font-family:Trebuchet MS,Helvetica,sans-serif}.ol-layerswitcher-popup li.ol-header{display:none}.ol-layerswitcher-popup li.select,.ol-layerswitcher-popup li.ol-visible{color:#fff;background:#003c88b3}.ol-layerswitcher-popup li:hover{color:#fff;background:#003c88e6}.ol-control.ol-layerswitcher.ol-layer-shop{height:calc(100% - 4em);max-height:unset;background-color:#0000;max-width:16em;overflow:visible;pointer-events:none!important}.ol-control.ol-layerswitcher>*{pointer-events:auto}.ol-control.ol-layer-shop>button,.ol-control.ol-layer-shop .panel-container{box-shadow:0 0 0 3px #ffffff80}.ol-control.ol-layerswitcher.ol-layer-shop .panel-container{border:2px solid #369;border-width:2px 0;max-height:calc(100% - 6.5em);padding:0;overflow-y:scroll}.ol-control.ol-layer-shop .panel{box-sizing:border-box;margin:.25em .5em;padding:0}.ol-control.ol-layerswitcher.ol-layer-shop .panel-container.ol-scrolldiv{overflow:hidden}.ol-control.ol-layer-shop .ol-scroll{opacity:.5;background-color:#0000004d}.ol-layerswitcher.ol-layer-shop ul.panel li.ol-header{display:none}.ol-layerswitcher.ol-layer-shop ul.panel li{margin-right:0;padding-right:0}.ol-layerswitcher.ol-layer-shop .layerup{box-sizing:border-box;color:#003c88;background-color:#0000;border-radius:3px;width:1.4em;height:1.5em;margin:0}.ol-layerswitcher.ol-layer-shop .layerup:hover{background-color:#003c884d}.ol-layerswitcher.ol-layer-shop .layerup:before{background-color:currentColor;border:0;width:1em;height:2px;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 -4px,0 4px}.ol-layerswitcher.ol-layer-shop .layerup:after{content:unset}.ol-control.ol-layer-shop .ol-title-bar{box-sizing:border-box;text-overflow:ellipsis;white-space:nowrap;text-align:right;transform-origin:100% 0;background-color:#ffffff80;max-width:14.6em;height:calc(2.8em - 4px);padding:.7em .5em;font-size:.9em;transition:transform .1s,width;overflow:hidden;transform:scaleY(1.1)}.ol-control.ol-layer-shop:hover .ol-title-bar{background-color:#ffffffb3}.ol-control.ol-layer-shop.ol-collapsed .ol-title-bar{max-width:10em;transform:scale(.9,1.1)}.ol-control.ol-layer-shop.ol-forceopen .ol-title-bar{max-width:14.6em;transform:scaleY(1.1)}.ol-control.ol-layer-shop .ol-bar{clear:both;text-align:right;z-index:10;background-color:#fff;height:1.75em;position:relative;box-shadow:0 0 0 3px #ffffff80}.ol-control.ol-layer-shop.ol-collapsed .ol-scroll,.ol-control.ol-layer-shop.ol-collapsed .ol-bar{border-width:2px 0 0;display:none}.ol-control.ol-layer-shop.ol-forceopen .ol-scroll,.ol-control.ol-layer-shop.ol-forceopen .ol-bar{display:block}.ol-control.ol-layer-shop .ol-bar>*{vertical-align:middle;background-color:#0000;margin-top:.25em;font-size:.9em;display:inline-block}.ol-layer-shop .ol-bar .ol-button,.ol-touch .ol-layer-shop .ol-bar .ol-button{top:unset;left:unset;bottom:unset;right:unset;margin:0;position:relative}.ol-layer-shop .ol-bar button{color:#003c88;background-color:#fff}.ol-layer-shop .ol-bar button:hover{background-color:#003c8833}.ol-touch .ol-layerswitcher.ol-layer-shop>button{font-size:1.7em}.ol-touch .ol-layer-shop .ol-bar{height:2em}.ol-touch .ol-layer-shop .ol-control button{font-size:1.4em}.ol-touch .ol-control.ol-layer-shop .panel{max-height:calc(100% - 7em)}.ol-touch .ol-control.ol-layer-shop .panel label{height:1.8em}.ol-touch .ol-control.ol-layer-shop .panel label span{margin-left:.5em;padding-top:.25em}.ol-touch .ol-control.ol-layer-shop .panel label:before,.ol-touch .ol-control.ol-layer-shop .panel label:after{z-index:1;font-size:1.3em}.ol-control.ol-layerswitcher{text-align:left;box-sizing:border-box;max-height:calc(100% - 6em);position:absolute;top:3em;right:.5em;overflow:hidden}.ol-control.ol-layerswitcher .ol-switchertopdiv,.ol-control.ol-layerswitcher .ol-switcherbottomdiv{display:block}.ol-control.ol-layerswitcher.ol-collapsed .ol-switchertopdiv,.ol-control.ol-layerswitcher.ol-collapsed .ol-switcherbottomdiv{display:none}.ol-layerswitcher.ol-forceopen.ol-collapsed .ol-switchertopdiv,.ol-layerswitcher.ol-forceopen.ol-collapsed .ol-switcherbottomdiv{display:block}.ol-control.ol-layerswitcher .ol-switchertopdiv,.ol-control.ol-layerswitcher .ol-switcherbottomdiv{z-index:2;opacity:1;cursor:pointer;box-sizing:border-box;background:#fff;border-top:2px solid #0000;border-bottom:2px solid #369;height:45px;margin:0 2px;position:absolute;top:0;left:0;right:0}.ol-control.ol-layerswitcher .ol-switcherbottomdiv{border-top:2px solid #369;border-bottom:2px solid #0000;height:2em;top:auto;bottom:0}.ol-control.ol-layerswitcher .ol-switchertopdiv:before,.ol-control.ol-layerswitcher .ol-switcherbottomdiv:before{content:"";opacity:.8;border:10px solid #0000;width:0;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-layerswitcher .ol-switchertopdiv:hover:before,.ol-control.ol-layerswitcher .ol-switcherbottomdiv:hover:before{opacity:1}.ol-control.ol-layerswitcher .ol-switchertopdiv:before{border-top:0;border-bottom-color:#369}.ol-control.ol-layerswitcher .ol-switcherbottomdiv:before{border-top-color:#369;border-bottom:0}.ol-control.ol-layerswitcher .panel-container{clear:both;background-color:#fff;border-radius:0 0 2px 2px;padding:.5em .5em 0;display:block}.ol-layerswitcher .panel{margin:0;padding:0;font-family:Tahoma,Geneva,sans-serif;font-size:.9em;list-style:none;transition:top .3s;position:relative;top:0;overflow:hidden}.ol-layerswitcher .panel ul{clear:both;padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher input[type=radio],.ol-layerswitcher input[type=checkbox]{opacity:0;width:0;height:0;position:absolute}.ol-layerswitcher .panel li{-weblit-transition:-webkit-transform .2s linear;clear:both;box-sizing:border-box;border:1px solid #0000;transition:transform .2s linear;display:block}.ol-layerswitcher .panel li.ol-layer-select{background-color:#003c8833;margin:0 -.5em;padding:0 .5em}.ol-layerswitcher .panel li.drag{opacity:.5;transform:scale(.8)}.ol-dragover{opacity:.8;background:#33669980}.ol-layerswitcher .panel li.forbidden,.forbidden .ol-layerswitcher-buttons div,.forbidden .layerswitcher-opacity div{background:#ff000080;color:red!important}.ol-layerswitcher.drag,.ol-layerswitcher.drag *{cursor:not-allowed!important;cursor:no-drop!important}.ol-layerswitcher.drag .panel li.dropover,.ol-layerswitcher.drag .panel li.dropover *{cursor:pointer!important;cursor:n-resize!important;cursor:ns-resize!important;cursor:-webkit-grab!important;cursor:grab!important;cursor:-webkit-grabbing!important;cursor:grabbing!important}.ol-layerswitcher .panel li.dropover{background:#33669980}.ol-layerswitcher .panel li label{white-space:nowrap;text-overflow:ellipsis;max-width:12em;height:1.4em;padding:0 0 0 1.7em;display:inline-block;position:relative;overflow:hidden}.ol-layerswitcher .panel li label span{text-overflow:ellipsis;width:100%;height:100%;padding-right:.2em;display:inline-block;overflow:hidden}.ol-layerswitcher [type=radio]+label:before,.ol-layerswitcher [type=checkbox]+label:before,.ol-layerswitcher [type=radio]:checked+label:after,.ol-layerswitcher [type=checkbox]:checked+label:after{content:"";box-sizing:border-box;background:#fff;border:2px solid #369;width:1.2em;height:1.2em;position:absolute;top:.1em;left:.1em}.ol-layerswitcher li:has(>div.li-content>.ol-visibility:focus){border-color:#369;box-shadow:inset 0 0 0 1px #369}.ol-layerswitcher [type=radio]+label:before,.ol-layerswitcher [type=radio]+label:after{border-radius:50%}.ol-layerswitcher [type=radio]:checked+label:after{background:#369;width:.6em;height:.6em;margin:.3em}.ol-layerswitcher [type=checkbox]:checked+label:after{background:0 0;border:3px solid #369;border-width:0 3px 3px 0;width:.7em;height:1em;top:-.05em;left:.55em;transform:rotate(45deg);box-shadow:1px 0 1px 1px #fff}.ol-layerswitcher .panel li.ol-layer-hidden{opacity:.6}.ol-layerswitcher.ol-collapsed .panel-container{display:none}.ol-layerswitcher.ol-forceopen .panel-container{display:block}.ol-control.ol-layerswitcher .ol-counter{z-index:22;text-align:left;font-size:.65em;line-height:1.5em;display:none;position:absolute;top:0;right:.3em}.ol-control.ol-layerswitcher.ol-counter .ol-counter{display:block}.ol-control.ol-layer-shop .ol-counter{text-align:center;background:#fff;border-radius:50%;width:1.5em;line-height:1.5em;transform:translate(50%,-50%);box-shadow:.5px .5px 2px}.ol-layerswitcher-image>button,.ol-layerswitcher>button{float:right;z-index:10;background-color:#fff;font-size:1.7em;position:relative}.ol-touch .ol-layerswitcher-image>button,.ol-touch .ol-layerswitcher>button{font-size:2.5em}.ol-layerswitcher-image>button:before,.ol-layerswitcher-image>button:after,.ol-layerswitcher>button:before,.ol-layerswitcher>button:after{content:"";border-radius:.15em;width:.75em;height:.75em;position:absolute;transform:scaleY(.8)rotate(45deg)}.ol-layerswitcher-image>button:before,.ol-layerswitcher>button:before{background:#e2e4e1;top:.32em;left:.34em;box-shadow:.1em .1em #325158}.ol-layerswitcher-image>button:after,.ol-layerswitcher>button:after{background:#83bcc5 radial-gradient(circle at .85em .6em,#70b3be 0 .65em,#83bcc5 .65em);top:.22em;left:.34em}.ol-layerswitcher-buttons{float:right;text-align:right;display:block}.ol-layerswitcher-buttons>div{cursor:pointer;text-align:center;vertical-align:middle;color:#fff;background:#369;width:1em;height:1em;margin:2px;line-height:1em;display:inline-block;position:relative}.ol-layerswitcher .panel li>div{display:inline-block;position:relative}.ol-layerswitcher .ol-separator{width:0;height:0;margin:0;padding:0;display:block}.ol-layerswitcher .layerup{float:right;opacity:.5;cursor:move;cursor:ns-resize;background-color:#369;height:2.5em}.ol-layerswitcher .layerup:before,.ol-layerswitcher .layerup:after{content:"";border:.4em solid #0000;border-top-color:#fff;border-bottom:0 solid #fff;width:0;height:0;position:absolute;bottom:3px;left:.1em}.ol-layerswitcher .layerup:after{border-width:0 .4em .4em;top:3px;bottom:auto}.ol-layerswitcher .layerInfo{background:#369;border-radius:100%}.ol-layerswitcher .layerInfo:before{color:#fff;content:"i";text-align:center;width:1.25em;font-size:.8em;font-weight:700;display:block;position:absolute;top:0;left:0}.ol-layerswitcher .layerTrash{background:#369}.ol-layerswitcher .layerTrash:before{color:#fff;content:"×";text-align:center;margin:-.5em 0;font-size:1em;line-height:1em;position:absolute;top:50%;left:0;right:0}.ol-layerswitcher .layerExtent{background:#369}.ol-layerswitcher .layerExtent:before{content:"";border-bottom:1px solid #fff;border-right:1px solid #fff;display:block;position:absolute;inset:6px 2px 3px 6px}.ol-layerswitcher .layerExtent:after{content:"";border-top:1px solid #fff;border-left:1px solid #fff;display:block;position:absolute;inset:3px 6px 6px 2px}.ol-layerswitcher .expend-layers,.ol-layerswitcher .collapse-layers{background-color:#0000;margin:0 2px}.ol-layerswitcher .expend-layers:before,.ol-layerswitcher .collapse-layers:before{content:"";background:#369;width:100%;height:4px;margin-top:-2px;position:absolute;top:50%;left:0}.ol-layerswitcher .expend-layers:after{content:"";background:#369;width:4px;height:100%;margin-left:-2px;position:absolute;top:0;left:50%}.ol-layerswitcher .layerswitcher-opacity{box-sizing:border-box;background:#69c;cursor:pointer;background:linear-gradient(90deg,#003c8800,#003c8899);border:1px solid #369;border-radius:3px;width:120px;height:3px;margin:5px 1em 10px 7px;position:relative;box-shadow:1px 1px 1px #00000080}.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor,.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor:before{z-index:1;background:#003c8880;border-radius:50%;width:20px;height:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor:before{content:"";width:50%;height:50%;position:absolute}.ol-touch .ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor{width:26px;height:26px}.ol-layerswitcher .layerswitcher-opacity-label{font-size:.8em;display:none;position:absolute;bottom:5px;right:-2.5em}.ol-layerswitcher .layerswitcher-opacity-label:after{content:"%"}.ol-layerswitcher .layerswitcher-progress{width:120px;margin:-4px 1em 2px 7px;display:block}.ol-layerswitcher .layerswitcher-progress div{background-color:#369;width:0;height:2px;display:block}.ol-control.ol-layerswitcher-image{text-align:left;transition:all .2s;position:absolute;top:1em;right:.5em}.ol-control.ol-layerswitcher-image.ol-collapsed{transition:none;top:3em}.ol-layerswitcher-image .panel{margin:0;padding:.25em;list-style:none;overflow:hidden}.ol-layerswitcher-image .panel ul{padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher-image.ol-collapsed .panel{display:none}.ol-layerswitcher-image.ol-forceopen .panel{clear:both;display:block}.ol-layerswitcher-image button{float:right;display:none}.ol-layerswitcher-image.ol-collapsed button{display:block;position:relative}.ol-layerswitcher-image li{vertical-align:middle;cursor:pointer;background-color:#fff;border:3px solid #0000;border-radius:4px;width:64px;height:64px;margin:2px;display:inline-block;position:relative;overflow:hidden;box-shadow:1px 1px 4px #00000080}.ol-layerswitcher-image li.ol-layer-hidden{opacity:.5;border-color:#555}.ol-layerswitcher-image li.ol-header{display:none}.ol-layerswitcher-image li img{max-width:100%;position:absolute}.ol-layerswitcher-image li.select,.ol-layerswitcher-image li.ol-visible{border:3px solid red}.ol-layerswitcher-image li p{display:none}.ol-layerswitcher-image li:hover p{color:#fff;text-align:center;background-color:#00000080;height:1.2em;margin:0;font-family:Verdana,Geneva,sans-serif;font-size:.8em;display:block;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.ol-control.ol-legend{z-index:1;background-color:#fff9;max-width:90%;max-height:90%;bottom:.5em;left:.5em;overflow:hidden auto}.ol-control.ol-legend:hover{background-color:#fffc}.ol-control.ol-legend.ol-empty,.ol-control.ol-legend.ol-collapsed{overflow:hidden}.ol-control.ol-legend button{display:none;position:relative}.ol-control.ol-legend.ol-empty button,.ol-control.ol-legend.ol-collapsed button{display:block}.ol-control.ol-legend.ol-uncollapsible button{display:none}.ol-control.ol-legend>ul,.ol-control.ol-legend>canvas{margin:2px}.ol-control.ol-legend button.ol-closebox{cursor:pointer;z-index:1;background:0 0;display:block;position:absolute;top:0;right:0}.ol-control.ol-legend.ol-empty button.ol-closebox,.ol-control.ol-legend.ol-uncollapsible button.ol-closebox,.ol-control.ol-legend.ol-collapsed button.ol-closebox{display:none}.ol-control.ol-legend button.ol-closebox:before{content:"×";color:#003c8880;background:0 0;font-size:1.3em}.ol-control.ol-legend button.ol-closebox:hover:before{color:#003c88}.ol-control.ol-legend .ol-legendImg{display:block}.ol-control.ol-legend.ol-empty .ol-legendImg,.ol-control.ol-legend.ol-collapsed .ol-legendImg{display:none}.ol-control.ol-legend.ol-uncollapsible .ol-legendImg{display:block}.ol-control.ol-legend>button:first-child:before,.ol-control.ol-legend>button:first-child:after{content:"";background-color:currentColor;width:.2em;height:.2em;position:absolute;top:.25em;left:.2em;box-shadow:0 .35em,0 .7em}.ol-control.ol-legend button:first-child:after{width:.6em;height:.15em;top:.27em;left:.55em}ul.ol-legend{width:100%;margin:0;padding:0;list-style:none;position:absolute;top:0;left:0}.ol-control.ol-legend.ol-empty ul,.ol-control.ol-legend.ol-collapsed ul{display:none}.ol-control.ol-legend.ol-uncollapsible ul{display:block}ul.ol-legend li.ol-title{text-align:center;font-weight:700}ul.ol-legend li.ol-title>div:first-child{width:0!important}ul.ol-legend li{white-space:nowrap;padding:0;overflow:hidden}ul.ol-legend li div{vertical-align:top;display:inline-block}.ol-control.ol-legend .ol-legend{display:inline-block}.ol-control.ol-legend.ol-empty .ol-legend,.ol-control.ol-legend.ol-collapsed .ol-legend{display:none}.ol-control.ol-legend.ol-empty button{opacity:.4}.ol-control.ol-mapzone{text-align:left;box-sizing:border-box;max-height:calc(100% - 6em);position:absolute;top:.5em;right:.5em;overflow:hidden}.ol-control.ol-mapzone.ol-collapsed{top:3em}.ol-control.ol-mapzone button{float:right;margin-top:2.5em;position:relative}.ol-touch .ol-control.ol-mapzone button{margin-top:1.67em}.ol-control.ol-mapzone.ol-collapsed button{margin-top:0}.ol-control.ol-mapzone button i{border:.1em solid;border-radius:50%;width:.9em;height:.9em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-control.ol-mapzone button i:before{content:"";background-color:currentColor;border-radius:50%;width:.4em;height:.4em;position:absolute;top:.3em;left:.5em;box-shadow:.05em .3em 0 -.051em,-.05em -.35em 0 -.1em,-.5em -.35em 0 0,-.65em .1em 0 -.03em,-.65em -.05em 0 -.05em}.ol-mapzone>div{width:5em;height:5em;margin:0 .2em 0 0;display:inline-block;position:relative}.ol-mapzone>div:focus{box-shadow:0 0 0 .2em #369}.ol-control.ol-mapzone.ol-collapsed>div{display:none}.ol-mapzone>div p{color:#fff;text-align:center;transform-origin:0 0;cursor:default;width:160%;margin:0;font-family:Lucida Grande,Verdana,Geneva,Lucida,Arial,Helvetica,sans-serif;font-weight:700;position:absolute;bottom:0;overflow:hidden;transform:scaleX(.625)}.ol-notification{background:0 0;border:0;width:150%;margin:0;padding:0;bottom:0}.ol-notification>div,.ol-notification>div:hover{color:#fff;text-align:center;box-sizing:border-box;opacity:1;background-color:#000c;border-radius:4px 4px 0 0;min-width:5em;max-width:calc(66% - 4em);min-height:1em;max-height:5em;padding:.2em .5em;transition:all .3s;position:absolute;bottom:0;left:33.33%;transform:translate(-50%)}.ol-notification.ol-collapsed>div{opacity:0;bottom:-5em}.ol-notification a{color:#9cf;cursor:pointer}.ol-notification .ol-close,.ol-notification .ol-close:hover{padding-right:1.5em}.ol-notification .closeBox{position:absolute;top:0;right:.3em}.ol-notification .closeBox:before{content:"×"}.ol-overlay{color:#fff;box-sizing:border-box;z-index:1;opacity:0;cursor:default;pointer-events:none;z-index:9;background-color:#0006;width:100%;height:100%;padding:1em;transition:all .5s;display:none;position:absolute;top:0;left:0;overflow:hidden}.ol-overlay.slide-up{transform:translateY(100%)}.ol-overlay.slide-down{transform:translateY(-100%)}.ol-overlay.slide-left{transform:translate(-100%)}.ol-overlay.slide-right{transform:translate(100%)}.ol-overlay.zoom{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)}.ol-overlay.zoomout{transform:scale(3)}.ol-overlay.zoomrotate{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)rotate(360deg)}.ol-overlay.stretch{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scaleX(0)}.ol-overlay.stretchy{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scaleY(0)}.ol-overlay.wipe{opacity:1}.ol-overlay.flip{transform:perspective(600px)rotateY(180deg)}.ol-overlay.card{opacity:.5;transform:translate(-80%,100%)rotate(-.5turn)}.ol-overlay.book{transform-origin:10%;transform:perspective(600px)rotateY(-180deg)scaleX(.6)}.ol-overlay.book.visible{transform-origin:10%}.ol-overlay.ol-visible{opacity:1;pointer-events:all;inset:0;transform:none}.ol-overlay .ol-closebox{cursor:pointer;z-index:1;width:1em;height:1em;position:absolute;top:1em;right:1em}.ol-overlay .ol-closebox:before{content:"❌";text-align:center;vertical-align:middle;display:block}.ol-overlay .ol-fullscreen-image{position:absolute;inset:0}.ol-overlay .ol-fullscreen-image img{box-sizing:border-box;max-width:100%;max-height:100%;padding:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlay .ol-fullscreen-image.ol-has-title img{padding-bottom:3em}.ol-overlay .ol-fullscreen-image p{text-align:center;background-color:#00000080;margin:0;padding:.5em;position:absolute;bottom:0;left:0;right:0}.ol-control.ol-overview{text-align:left;position:absolute;bottom:.5em;left:.5em}.ol-control.ol-overview .panel{cursor:pointer;background-color:#fff;border:1px solid #369;width:150px;height:150px;margin:2px;display:block}.ol-overview:not(.ol-collapsed) button{z-index:2;position:absolute;bottom:2px;left:2px}.ol-control.ol-overview.ol-collapsed .panel{display:none}.ol-overview.ol-collapsed button:before{content:"»"}.ol-overview button:before{content:"«"}.ol-control-right.ol-overview{left:auto;right:.5em}.ol-control-right.ol-overview:not(.ol-collapsed) button{left:auto;right:2px}.ol-control-right.ol-overview.ol-collapsed button:before{content:"«"}.ol-control-right.ol-overview button:before{content:"»"}.ol-control-top.ol-overview{top:5em;bottom:auto}.ol-control-top.ol-overview:not(.ol-collapsed) button{top:2px;bottom:auto}.ol-permalink{position:absolute;top:.5em;right:2.5em}.ol-touch .ol-permalink{right:3em}.ol-permalink button i{width:1em;height:1em;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-permalink button i:before{content:"↗";box-sizing:border-box;border:0 solid;border-width:1px 0 0 1px;width:.3em;height:1em;padding:0 .2em;position:absolute;top:0;left:0}.ol-permalink button i:after{content:"";box-sizing:border-box;border:1px solid;border-width:0 1px 1px 0;width:1em;height:.3em;padding:.2em;position:absolute;bottom:0;right:0}.ol-control.ol-print{top:.5em;left:3em}.ol-control.ol-print button:before{content:"";width:.9em;height:.35em;position:absolute;top:50%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 .1em,inset .55em 0,0 .2em 0 -.1em}.ol-control.ol-print button:after{content:"";width:.7em;height:.6em;position:absolute;top:25%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 .15em}.ol-ext-print-dialog{width:100%;height:100%}.ol-ext-print-dialog>form .ol-closebox{z-index:1;color:#999;left:16.5em;right:auto}.ol-ext-print-dialog .ol-content[data-status=printing]{opacity:.5}.ol-ext-print-dialog .ol-content .ol-error{color:#ff0;text-align:center;background:#b00;margin:0 -1em;padding:1em .5em;font-weight:700;display:none}.ol-ext-print-dialog .ol-content[data-status=error] .ol-error{display:block}.ol-ext-print-dialog>form,.ol-ext-print-dialog.ol-visible>form{max-width:100%;max-height:100%;width:unset;background-color:#eee;padding:0;transition:none;inset:1em;transform:none}.ol-ext-print-dialog .ol-print-map{width:calc(100% - 18em);position:absolute;top:0;bottom:0;right:0;overflow:hidden}.ol-ext-print-dialog .ol-print-map .ol-page{box-sizing:border-box;background:#fff;position:absolute;top:50%;left:50%}.ol-ext-print-dialog .ol-print-map .ol-page.margin{box-sizing:content-box}.ol-ext-print-dialog .ol-map{width:100%;height:100%}.ol-ext-print-dialog .ol-print-map .ol-control{display:none!important}.ol-ext-print-dialog .ol-print-param{box-sizing:border-box;background-color:#fff;width:18em;padding:1em;position:absolute;top:0;bottom:0;left:0;overflow-x:hidden}.ol-ext-print-dialog .ol-print-param h2{color:#003c88b3;font-size:1.1em;display:block}.ol-ext-print-dialog .ol-print-param ul{padding:0;list-style:none}.ol-ext-print-dialog .ol-print-param li{margin:.5em 0;font-size:.9em;position:relative}.ol-ext-print-dialog .ol-print-param li.hidden{display:none}.ol-ext-print-dialog .ol-print-param label{vertical-align:middle;width:8em;display:inline-block}.ol-ext-print-dialog select{vertical-align:middle;outline:none}.ol-ext-print-dialog .ol-orientation{text-align:center}.ol-ext-print-dialog .ol-orientation label{cursor:pointer;width:7em;position:relative}.ol-ext-print-dialog .ol-orientation input{opacity:0;width:0;height:0;position:absolute}.ol-ext-print-dialog .ol-orientation span{width:80%;padding:3.5em 0 .2em;display:block;position:relative}.ol-ext-print-dialog .ol-orientation span:before{content:"";color:#333;opacity:.5;background-color:currentColor;border:1px solid;border-radius:0 1em 0 0;width:2em;height:2.6em;position:absolute;bottom:1.5em;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:inset 1.3em -1.91em #ddd}.ol-ext-print-dialog .ol-orientation .landscape span:before{width:2.6em;height:2em;margin:.2em 0;box-shadow:inset 1.91em -1.3em #ddd}.ol-ext-print-dialog .ol-orientation input:checked+span{opacity:1;box-shadow:0 0 .2em #00000080}.ol-ext-print-dialog .ol-ext-toggle-switch span{position:absolute;top:50%;right:-2em;transform:translateY(-50%)}.ol-print-title input[type=text]{width:calc(100% - 6em);margin-top:.5em;margin-left:6em}.ol-ext-print-dialog .ol-size option:first-child{font-style:italic}.ol-ext-print-dialog .ol-saveas,.ol-ext-print-dialog .ol-savelegend{text-align:center}.ol-ext-print-dialog .ol-saveas select,.ol-ext-print-dialog .ol-savelegend select{color:#fff;background-color:#003c88b3;border:0;max-width:12em;margin:1em 0 0;padding:.5em;font-size:1em;font-weight:700}.ol-ext-print-dialog .ol-saveas select option,.ol-ext-print-dialog .ol-savelegend select option{color:#666;background-color:#fff}.ol-ext-print-dialog .ol-savelegend select{margin-top:0}.ol-ext-print-dialog .ol-ext-buttons{text-align:right;border-top:1px solid #ccc;margin:0 -1em;padding:.8em .5em}.ol-ext-print-dialog button{color:#333;background:0 0;border:1px solid #999;margin:0 .2em;padding:.3em 1em;font-size:1em}.ol-ext-print-dialog button[type=submit]{color:#fff;background-color:#003c88b3;font-weight:700}.ol-ext-print-dialog .ol-clipboard-copy{pointer-events:none;color:#fff;opacity:0;background-color:#00000080;border-radius:1em;width:fit-content;padding:.5em 1em;transition:all;position:absolute;top:0;left:50%;transform:translate(-50%)}.ol-ext-print-dialog .ol-clipboard-copy.visible{animation:1s ol-clipboard-copy}.ol-ext-print-dialog .ol-print-map .ol-control.ol-canvas-control,.ol-ext-print-dialog .ol-print-map .ol-control.ol-print-compass{display:block!important}.ol-ext-print-dialog .ol-print-map .ol-control.olext-print-compass{width:60px;height:60px;margin:20px;top:0;right:0}.ol-ext-print-dialog .ol-orientation input:focus-visible+span,.ol-ext-print-dialog select:focus-visible{outline:2px solid #000}@keyframes ol-clipboard-copy{0%{opacity:0;top:0}80%{opacity:1;top:-3em}to{opacity:0;top:-3em}}@media print{body.ol-print-document{margin:0!important;padding:0!important}body.ol-print-document>*{display:none!important}body.ol-print-document>.ol-ext-print-dialog{display:block!important}body.ol-print-document>.ol-ext-print-dialog .ol-content{max-height:unset!important;max-width:unset!important;width:unset!important;height:unset!important}.ol-ext-print-dialog>form,.ol-ext-print-dialog{position:unset;-webkit-box-shadow:none;box-shadow:none;border:0;background:0 0!important}.ol-ext-print-dialog>form>*,.ol-ext-print-dialog .ol-print-param{background:0 0;display:none!important}.ol-ext-print-dialog .ol-content{background:0 0;border:0;display:block!important}.ol-ext-print-dialog .ol-print-map{position:unset;background:0 0;width:auto;overflow:visible}.ol-ext-print-dialog .ol-print-map .ol-page{position:unset;-webkit-box-shadow:none!important;box-shadow:none!important;transform:none!important}}@media (width<=25em){.ol-ext-print-dialog .ol-print-param{width:13em}.ol-ext-print-dialog .ol-print-map{width:calc(100% - 13em)}.ol-ext-print-dialog .ol-print-param .ol-print-title input[type=text]{width:100%;margin:0}}.ol-ext-print-dialog2x .ol-map,.ol-ext-print-dialog2x .ol-map2{width:100%;height:50%}.ol-ext-print-dialog2x[data-orientation=landscape] .ol-map,.ol-ext-print-dialog2x[data-orientation=landscape] .ol-map2{width:50%;height:100%;display:inline-block}.ol-ext-print-dialog2x[data-clip-map] .ol-map,.ol-ext-print-dialog2x[data-swipe-orientation] .ol-map{width:100%!important;height:100%!important}.ol-ext-print-dialog2x[data-clip-map] .ol-map2,.ol-ext-print-dialog2x[data-swipe-orientation] .ol-map2{top:-100%;left:0;width:100%!important;height:100%!important;position:relative!important}.ol-profile{-webkit-user-select:none;user-select:none;position:relative}.ol-control.ol-profile{text-align:right;position:absolute;top:.5em;right:3em;overflow:hidden}.ol-profile .ol-zoom-out{cursor:pointer;border:1px solid #000;border-radius:2px;width:1em;height:1em;padding:0;position:absolute;top:10px;right:10px}.ol-profile .ol-zoom-out:before{content:"";background:currentColor;width:60%;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-profile .ol-inner{padding:.5em;font-size:.8em;position:relative}.ol-control.ol-profile .ol-inner{background-color:#ffffffb3;margin:2.3em 2px 2px;display:block}.ol-control.ol-profile.ol-collapsed .ol-inner{display:none}.ol-profile canvas{display:block}.ol-profile button{display:block;position:absolute;right:0;overflow:hidden}.ol-profile button i{width:1em;height:1em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-profile button i:before,.ol-profile button i:after{content:"";background-color:currentColor;width:1em;height:.9em;display:block;position:absolute;transform:scaleX(.8)translate(-.25em,.5em)rotate(45deg)}.ol-profile button i:after{transform:scaleX(.8)translate(.35em,.7em)rotate(45deg)}.ol-profile.ol-collapsed button{position:static}.ol-profile .ol-profilebar,.ol-profile .ol-profilecursor{pointer-events:none;width:1px;display:none;position:absolute}.ol-profile .ol-profilecursor{width:0;height:0}.ol-profile .ol-profilecursor:before{content:"";pointer-events:none;width:5px;height:5px;margin:-2px;display:block}.ol-profile .ol-profilebar,.ol-profile .ol-profilecursor:before{background:red}.ol-profile table{text-align:center;border-collapse:collapse;width:100%;margin-top:.5em}.ol-profile table tr{border-top:1px solid #00000040;margin:.1em 0}.ol-profile table td{padding:2px}.ol-profile table span{display:block}.ol-profile table span.elevationGain,.ol-profile table span.elevationLoss{display:inline-block}.ol-profilepopup{white-space:nowrap;background-color:#ffffff80;margin:.5em;padding:0 .5em;position:absolute;top:-1em}.ol-profilepopup.ol-left{right:0}.ol-profile table .track-info{display:table-row}.ol-profile table .point-info,.ol-profile .over table .track-info{display:none}.ol-profile .over table .point-info{display:table-row}.ol-profile p{text-align:center;margin:0}.ol-control.ol-progress-bar{background-color:#0000;padding:0;position:absolute;inset:0;pointer-events:none!important}.ol-control.ol-progress-bar>.ol-bar{box-sizing:border-box;background-color:#003c8880;width:0;height:.5em;transition:width .2s;position:absolute;bottom:0;left:0}.ol-progress-bar>.ol-waiting{display:none}.ol-viewport .ol-control.ol-progress-bar>.ol-waiting{color:#fff;font-size:2em;animation:1s linear infinite ol-progress-bar-blink;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes ol-progress-bar-blink{0%,30%{visibility:hidden}to{visibility:visible}}.ol-control.ol-routing{max-height:90%;top:.5em;left:3em;overflow-y:auto}.ol-touch .ol-control.ol-routing{left:3.5em}.ol-control.ol-routing.ol-searching{opacity:.5}.ol-control.ol-routing .ol-car,.ol-control.ol-routing>button{position:relative}.ol-control.ol-routing .ol-car:after,.ol-control.ol-routing>button:after{content:"";clip:rect(0 1em .5em -1em);border-radius:40% 50% 0 0/50% 70% 0 0;width:.78em;height:.6em;position:absolute;top:.35em;left:.4em;box-shadow:inset 0 0 0 .065em,-.35em .14em 0 -.09em,inset 0 -.37em,inset -.14em .005em}.ol-control.ol-routing .ol-car:before,.ol-control.ol-routing>button:before{content:"";border-radius:50%;width:.28em;height:.28em;position:absolute;top:.73em;left:.2em;box-shadow:inset 0 0 0 1em,.65em 0}.ol-control.ol-routing .ol-pedestrian:after{content:"";border-top:.2em solid #0000;width:.3em;height:.4em;position:absolute;top:.25em;left:50%;transform:translate(-50%);box-shadow:inset .3em 0,.1em .5em 0 -.1em,-.1em .5em 0 -.1em,.25em .1em 0 -.1em,-.25em .1em 0 -.1em}.ol-control.ol-routing .ol-pedestrian:before{content:"";background-color:currentColor;border-radius:50%;width:.3em;height:.3em;position:absolute;top:.1em;left:50%;transform:translate(-50%)}.ol-control.ol-routing .content{margin:.5em}.ol-control.ol-routing.ol-collapsed .content,.ol-routing .ol-search.ol-collapsed ul,.ol-routing .ol-search ul .copy{display:none}.ol-routing .content .search-input>div>*{vertical-align:top;display:inline-block}.ol-routing .ol-result ul{list-style:none;display:block}.ol-routing .ol-result li{min-height:1.65em;position:relative}.ol-routing .ol-result li i{font-size:.8em;font-weight:700;display:block}.ol-routing .ol-result li:before{content:"";transform-origin:50% 125%;border:.4em solid #0000;border-top-width:.6em;border-bottom:.6em solid #369;position:absolute;top:-.8em;left:-1.75em;box-shadow:0 .65em 0 -.25em #369}.ol-routing .ol-result li:after{content:"";background:#369;border-radius:.1em;width:.25em;height:.6em;position:absolute;top:.6em;left:-1.5em}.ol-routing .ol-result li.R:before{transform:rotate(90deg)}.ol-routing .ol-result li.FR:before{transform:rotate(45deg)}.ol-routing .ol-result li.L:before{transform:rotate(-90deg)}.ol-routing .ol-result li.FL:before{transform:rotate(-45deg)}.ol-routing .content>i{vertical-align:middle;margin:0 .3em 0 .1em;font-style:normal}.ol-routing .ol-button,.ol-routing .ol-button:focus,.ol-routing .ol-pedestrian,.ol-routing .ol-car{color:#003c88;opacity:.5;vertical-align:middle;cursor:pointer;background-color:#0000;outline:none;width:1.4em;height:1.4em;margin:0 .1em;font-size:1.1em;display:inline-block;position:relative}.ol-routing .ol-constraints{display:block}.ol-routing .ol-button:hover,.ol-routing .ol-button.selected,.ol-routing i.selected{opacity:1;background:0 0}.ol-routing .ol-method{display:block}.ol-control.ol-routing{background-color:#ffffff40}.ol-control.ol-routing:hover{background-color:#ffffffbf}.search-input>div>button:before{content:"±"}.ol-viewport .ol-scale{text-align:center;transform-origin:0 0;background-color:#ffffffbf;bottom:2.5em;left:.5em;transform:scaleX(.8)}.ol-viewport .ol-scale input{text-align:center;background:0 0;border:0;width:8em}.ol-search{top:.5em;left:3em}.ol-touch .ol-search{left:3.5em}.ol-search button{float:left;top:2px;left:2px}.ol-control.ol-search>button:before{content:"";box-sizing:border-box;background-color:#0000;border:.12em solid;border-radius:100%;width:.7em;height:.7em;position:absolute;top:.35em;left:.35em}.ol-control.ol-search>button:after{content:"";background-color:currentColor;border-radius:.05em;width:.45em;height:.15em;position:absolute;top:1.1em;left:.95em;transform:rotate(45deg);box-shadow:-.18em 0 0 -.03em}.ol-search button.ol-revers{float:none;vertical-align:bottom;background-image:none;display:inline-block;position:relative;top:0;left:0}.ol-search.ol-revers button.ol-revers{background-color:#00883c80}.ol-control.ol-search.ol-collapsed button.ol-revers{display:none}.ol-search button.ol-revers:before{content:"";box-sizing:border-box;border:.1em solid;border-radius:50%;width:.55em;height:.55em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-search button.ol-revers:after{content:"";background-color:#0000;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.35em 0,0 .35em,-.35em 0,0 -.35em}.ol-search input{box-sizing:border-box;border:0;height:1.375em;margin:1px 1px 1px 2px;padding-left:.3em;font-size:1.14em;transition:all .1s;display:inline-block}.ol-touch .ol-search input,.ol-touch .ol-search ul{font-size:1.5em}.ol-search.ol-revers>ul,.ol-control.ol-search.ol-collapsed>*{display:none}.ol-control.ol-search.ol-collapsed>button{display:block}.ol-search ul{clear:both;cursor:pointer;z-index:1;background:#fff;max-width:17em;margin:0;padding:0;list-style:none;display:block;overflow-x:hidden}.ol-search ul li{white-space:nowrap;text-overflow:ellipsis;padding:.1em .5em;overflow:hidden}.ol-search ul li.select,.ol-search ul li:hover{color:#fff;background-color:#003c8880}.ol-search ul li img{float:left;max-height:2em}.ol-search li.copy{color:#fff;background:#00000080}.ol-search li.copy a{color:#fff;text-decoration:none}.ol-search.searching:before{content:"";z-index:2;background:red;height:3px;animation:.5s linear infinite alternate ol-pulse;position:absolute;top:1.6em;left:0}@keyframes ol-pulse{0%{left:0;right:95%}50%{left:30%;right:30%}to{left:95%;right:0}}.ol-control.ol-search.IGNF-parcelle{background-color:#ffffffb3;padding-bottom:.2em}.ol-search.IGNF-parcelle input{width:14.5em}.ol-search.IGNF-parcelle input:read-only{opacity:.8;background:#ccc}.ol-search.IGNF-parcelle.ol-collapsed-list>ul.autocomplete{display:none}.ol-search.IGNF-parcelle label{clear:both;display:block}.ol-search.IGNF-parcelle>div input{text-align:right}.ol-search.IGNF-parcelle>div input,.ol-search.IGNF-parcelle>div label{box-sizing:border-box;text-overflow:ellipsis;width:4em;margin:.1em;font-size:1em;display:inline-block;overflow:hidden}.ol-search.IGNF-parcelle>div label{letter-spacing:-.04em}.ol-search.IGNF-parcelle ul.autocomplete-page{text-align:center;width:100%;margin-top:.5em;display:none}.ol-search.IGNF-parcelle.ol-collapsed-list ul.autocomplete-parcelle,.ol-search.IGNF-parcelle.ol-collapsed-list ul.autocomplete-page{display:block}.ol-search.IGNF-parcelle.ol-collapsed ul.autocomplete-page,.ol-search.IGNF-parcelle.ol-collapsed ul.autocomplete-parcelle,.ol-search.IGNF-parcelle ul.autocomplete-parcelle{display:none}.ol-search.IGNF-parcelle ul.autocomplete-page li{color:#fff;background:#003c8880;border-radius:50%;width:1.3em;height:1.3em;margin:0 .1em;padding:.1em;display:inline-block}.ol-search.IGNF-parcelle ul.autocomplete-page li.selected{background:#003c88}.ol-searchgps input.search,.ol-searchcoord input.search{display:none}.ol-control.ol-searchgps>button:first-child,.ol-control.ol-searchcoord>button:first-child{background-image:none}.ol-control.ol-searchgps>button:first-child:before,.ol-control.ol-searchcoord>button:first-child:before{content:"x/y";position:unset;border:unset;border-radius:0;width:auto;height:auto;display:block;transform:scaleX(.8)}.ol-control.ol-searchgps>button:first-child:after,.ol-control.ol-searchcoord>button:first-child:after{content:unset}.ol-control.ol-searchgps .ol-latitude,.ol-control.ol-searchgps .ol-longitude,.ol-control.ol-searchcoord .ol-latitude,.ol-control.ol-searchcoord .ol-longitude{clear:both}.ol-control.ol-searchgps .ol-latitude label,.ol-control.ol-searchgps .ol-longitude label,.ol-control.ol-searchcoord .ol-latitude label,.ol-control.ol-searchcoord .ol-longitude label{text-align:right;transform-origin:0 0;width:5.5em;margin:0 -.8em 0 0;display:inline-block;transform:scaleX(.8)}.ol-control.ol-searchcoord .ol-latitude label,.ol-control.ol-searchcoord .ol-longitude label{width:2em;margin:0}.ol-control.ol-searchgps .ol-latitude input,.ol-control.ol-searchgps .ol-longitude input{max-width:10em}.ol-control.ol-searchgps .ol-ext-toggle-switch{cursor:pointer;float:right;margin:.5em;font-size:.9em}.ol-searchgps .ol-decimal{margin-right:.7em;display:inline-block}.ol-searchgps .ol-dms,.ol-searchgps.ol-dms .ol-decimal{text-align:right;width:3em;display:none}.ol-searchgps.ol-dms .ol-dms{display:inline-block}.ol-searchgps span.ol-dms{text-align:left;width:.5em}.ol-searchgps.ol-control.ol-collapsed button.ol-geoloc,.ol-searchgps.ol-control.ol-collapsed button.ol-centerloc,.ol-searchcoord.ol-control.ol-collapsed button.ol-centerloc,.ol-searchcoord.ol-control.ol-collapsed button.ol-geoloc{display:none}.ol-searchgps button.ol-geoloc,.ol-searchgps button.ol-centerloc,.ol-searchcoord button.ol-centerloc,.ol-searchcoord button.ol-geoloc{float:right;background-image:none;margin-right:3px;position:relative;top:0}.ol-searchgps button.ol-geoloc:before,.ol-searchcoord button.ol-geoloc:before{content:"";border:.1em solid;border-radius:50%;width:.6em;height:.6em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-searchgps button.ol-geoloc:after,.ol-searchcoord button.ol-geoloc:after{content:"";background-color:#0000;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.45em 0,-.45em 0,0 -.45em,0 .45em,.25em 0,-.25em 0,0 -.25em,0 .25em}.ol-searchgps button.ol-centerloc:before,.ol-searchcoord button.ol-centerloc:before{content:"📍";border:0;width:auto;height:auto;padding:0;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-searchgps button.ol-centerloc:after,.ol-searchcoord button.ol-centerloc:after{display:none}.ol-control.ol-select{background-color:#ffffff80;top:.5em;left:3em}.ol-control.ol-select:hover{background-color:#ffffffb3}.ol-touch .ol-control.ol-select{left:3.5em}.ol-control.ol-select>button:before{content:"A";box-sizing:content-box;text-align:center;background-color:#0000;border:.2em solid;border-radius:100%;width:1em;height:1em;font-size:.6em;font-weight:400;line-height:1em;position:absolute;top:.5em;left:.5em}.ol-control.ol-select>button:after{content:"";background-color:currentColor;border-radius:.05em;width:.45em;height:.15em;position:absolute;top:1.15em;left:1em;transform:rotate(45deg);box-shadow:-.18em 0 0 -.03em}.ol-select>div button{float:right;width:auto;height:1.2em;padding:0 .5em;font-weight:400;line-height:1.2em}.ol-select .ol-delete{vertical-align:middle;cursor:pointer;width:1.5em;height:1em;display:inline-block;position:relative}.ol-select .ol-delete:before{content:"×";text-align:center;width:100%;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-select input{font-size:1em}.ol-control.ol-select select{max-width:10em;font-size:1em}.ol-control.ol-select select option.ol-default{color:#999;font-style:italic}.ol-control.ol-select>div{margin:.25em;display:block}.ol-control.ol-select.ol-collapsed>div{display:none}.ol-control.ol-select.ol-select-check{max-width:20em}.ol-control.ol-select label.ol-ext-check{margin-right:1em}.ol-control.ol-select label.ol-ext-toggle-switch span{font-size:1.1em}.ol-select ul{margin:0;padding:0;list-style:none}.ol-control.ol-select input[type=search],.ol-control.ol-select input[type=text]{width:8em}.ol-select .ol-autocomplete{display:inline}.ol-select .ol-autocomplete ul{background:#fff;border:1px solid #999;min-width:10em;font-size:.85em;display:block;position:absolute}.ol-select .ol-autocomplete ul li{padding:0 .5em}.ol-select .ol-autocomplete ul li:hover{color:#fff;background:#003c8880}.ol-select ul.ol-hidden{display:none}.ol-select-multi li>div:hover,.ol-select-multi li>div.ol-control.ol-select{top:unset;left:unset;background:0 0;position:relative}.ol-select-multi li>div>button,.ol-select-multi li>div .ol-ok{display:none}.ol-select-multi li .ol-control.ol-select.ol-collapsed>div,.ol-select-multi li>div>div{display:block}.ol-control.ol-status{color:#fff;box-sizing:border-box;background:#0003;border-radius:0;width:100%;padding:.3em 3em;font-size:.9em;display:none;top:0;left:0;pointer-events:none!important}.ol-control.ol-status.ol-visible{display:initial}.ol-control.ol-status.ol-bottom{top:auto;bottom:0}.ol-control.ol-status.ol-left{width:auto;padding:.3em .5em .3em 3em;top:0;bottom:0}.ol-control.ol-status.ol-right{width:auto;padding:.3em 3em .3em .5em;inset:0 0 0 auto}.ol-control.ol-status.ol-center{top:50%;transform:translateY(-50%)}.ol-control.ol-storymap{background-color:#ffffff80;border-radius:.5em;max-width:35%;height:auto;position:absolute;top:.5em;bottom:.5em;left:.5em}.ol-storymap{height:100%;padding:0;position:relative;overflow:hidden}.ol-storymap>div{scroll-behavior:smooth;-webkit-user-select:none;user-select:none;height:100%;padding:0;position:relative;overflow:hidden}.ol-storymap>div.ol-move{scroll-behavior:unset}.ol-control.ol-storymap .chapter{padding:.5em;position:relative;overflow:hidden}.ol-control.ol-storymap .chapter:last-child{margin-bottom:100%}.ol-storymap .chapter{cursor:pointer;opacity:.4}.ol-storymap .chapter.ol-select{cursor:default;opacity:1;background-color:#fffc}.ol-storymap .ol-scroll-top,.ol-storymap .ol-scroll-next{color:#003c8880;text-align:center;cursor:pointer;min-height:1.7em;position:relative}.ol-storymap .ol-scroll-next span{padding-bottom:1.4em;display:block}.ol-storymap .ol-scroll-top span{padding-top:1.4em;display:block}.ol-storymap .ol-scroll-top:before,.ol-storymap .ol-scroll-next:before{content:"";pointer-events:none;border:.3em solid;border-color:#0000 currentColor currentColor #0000;border-radius:.3em;width:.8em;height:.8em;animation:.35s linear infinite alternate ol-bounce-bottom;display:block;position:absolute;left:50%;transform:translate(-50%)rotate(45deg)}.ol-storymap .ol-scroll-top:before{border-color:currentColor #0000 #0000 currentColor;animation:.35s linear infinite alternate ol-bounce-top}@keyframes ol-bounce-top{0%{top:-.2em}to{top:.5em}}@keyframes ol-bounce-bottom{0%{bottom:-.2em}to{bottom:.5em}}.ol-storymap img[data-title]{cursor:pointer}.ol-storymap.scrollLine,.ol-storymap.scrollBox{background-color:#0000;border-radius:0;max-width:40%;top:0;bottom:0}.ol-storymap.scrollLine .chapter,.ol-storymap.scrollBox .chapter{background-color:#fff;margin:100% 0}.ol-storymap.scrollLine .chapter:first-child,.ol-storymap.scrollBox .chapter:first-child{margin-top:3em}.ol-storymap.scrollLine .chapter.ol-select,.ol-storymap.scrollLine .chapter,.ol-storymap.scrollBox .chapter.ol-select,.ol-storymap.scrollBox .chapter{opacity:1}.ol-storymap.scrollLine .ol-scrolldiv,.ol-storymap.scrollBox .ol-scrolldiv{padding-right:30px}.ol-storymap.scrollLine:before,.ol-storymap.scrollBox:before{content:"";background-color:#fff;width:2px;height:100%;position:absolute;top:0;bottom:0;right:14px}.ol-storymap.scrollLine .ol-scroll,.ol-storymap.scrollBox .ol-scroll{width:1px;padding:0;transition:none;right:15px;overflow:visible;opacity:1!important;display:block!important}.ol-storymap.scrollLine .ol-scroll>div{-webkit-box-shadow:unset;box-shadow:unset;background-color:#0000;left:50%;overflow:visible;transform:translate(-50%)}.ol-storymap.scrollLine .ol-scroll>div:before{content:"";background-color:#0af;border:2px solid #fff;border-radius:50%;width:10px;height:10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-storymap.scrollBox .ol-scroll>div{display:none}.ol-storymap.scrollBox .chapter:after{content:"";box-sizing:border-box;z-index:1;border:5px solid #0000;border-radius:50%;width:20px;height:20px;position:absolute;top:min(30%,5em);right:-24.5px;box-shadow:0 0 0 2px #fff,inset 0 0 0 15px #0af}.ol-swipe{-ms-touch-action:none;touch-action:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-swipe:before{content:"";z-index:-1;background:#fff;width:4px;position:absolute;top:-5000px;bottom:-5000px;left:50%;transform:translate(-2px)}.ol-swipe.horizontal:before{width:auto;height:4px;inset:50% -5000px auto}.ol-swipe,.ol-swipe button{cursor:ew-resize}.ol-swipe.horizontal,.ol-swipe.horizontal button{cursor:ns-resize}.ol-swipe:after,.ol-swipe button:before,.ol-swipe button:after{content:"";background:currentColor;width:2px;position:absolute;top:25%;bottom:25%;left:50%;transform:translate(-1px)}.ol-swipe button:after{transform:translate(4px)}.ol-swipe button:before{transform:translate(-6px)}.ol-control.ol-timeline{background-color:#fff6;transition:all .3s;bottom:0;left:0;right:0}.ol-control.ol-timeline.ol-collapsed{transform:translateY(100%)}.ol-timeline{padding:2px 0 0;overflow:hidden}.ol-timeline .ol-scroll{scroll-behavior:smooth;height:6em;padding:0 50%;line-height:1em;overflow:hidden}.ol-timeline .ol-scroll.ol-move{scroll-behavior:unset}.ol-timeline.ol-hasbutton .ol-scroll{margin-left:1.5em;padding:0 calc(50% - .75em)}.ol-timeline .ol-buttons{z-index:10;background:#ffffff80;width:1.5em;display:none;position:absolute;top:0;bottom:0;left:0}.ol-timeline.ol-hasbutton .ol-buttons{display:block}.ol-timeline .ol-buttons button{margin:1px;font-size:1em;position:relative}.ol-timeline .ol-buttons .ol-zoom-in:before,.ol-timeline .ol-buttons .ol-zoom-out:before{content:"+";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-timeline .ol-buttons .ol-zoom-out:before{content:"−"}.ol-timeline .ol-scroll>div{height:100%;position:relative}.ol-timeline .ol-scroll .ol-times{background:#ffffff80;height:1em;position:absolute;bottom:0;left:-1000px;right:-1000px}.ol-timeline .ol-scroll .ol-time{color:#999;font-size:.7em;position:absolute;bottom:0;transform:translate(-50%)}.ol-timeline .ol-scroll .ol-time.ol-year{color:#666;z-index:1}.ol-timeline .ol-scroll .ol-time:before{content:"";border-left:1px solid;height:500px;position:absolute;bottom:1.2em;left:50%}.ol-timeline .ol-scroll .ol-features{margin:0 0 0 200px;position:absolute;inset:0 -1000px 1em -200px;overflow:hidden}.ol-timeline .ol-scroll .ol-feature{color:#999;cursor:pointer;box-sizing:border-box;background:#fff;border:1px solid #ccc;max-width:3em;min-height:1em;max-height:2.4em;padding:0 .5em 0 0;font-size:.7em;line-height:1.2em;transition:all .3s;position:absolute;top:0;overflow:hidden}.ol-timeline.ol-zoomhover .ol-scroll .ol-feature:hover,.ol-timeline.ol-zoomhover .ol-scroll .ol-feature.ol-select{z-index:1;background:#eee;transform:scale(1.2)}.ol-timeline .ol-center-date{z-index:2;pointer-events:none;opacity:.4;background-color:red;width:2px;height:100%;display:none;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.ol-timeline.ol-hasbutton .ol-center-date{left:calc(50% + .75em)}.ol-timeline.ol-pointer .ol-center-date{display:block}.ol-timeline.ol-pointer .ol-center-date:before,.ol-timeline.ol-pointer .ol-center-date:after{content:"";border:.3em solid #0000;border-width:.3em .25em;position:absolute;left:50%;transform:translate(-50%)}.ol-timeline.ol-pointer .ol-center-date:before{border-top-color:red;top:0}.ol-timeline.ol-pointer .ol-center-date:after{border-bottom-color:red;bottom:0}.ol-timeline.ol-interval .ol-center-date{box-sizing:content-box;opacity:.2;background-color:#0000;border:0 solid #000;border-width:0 10000px;display:block}.ol-control.ol-videorec{white-space:nowrap;top:0;left:50%;transform:translate(-50%)}.ol-control.ol-videorec button{vertical-align:middle;display:inline-block;position:relative}.ol-control.ol-videorec button:before{content:"";background-color:currentColor;width:.8em;height:.8em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-videorec button.ol-start:before{background-color:#c00;border-radius:50%;width:.9em;height:.9em}.ol-control.ol-videorec button.ol-pause:before{background-color:#0000;width:.2em;box-shadow:-.2em 0,.2em 0}.ol-control.ol-videorec button.ol-resume:before{box-sizing:border-box;background:0 0;border:.4em solid #0000;border-left:.6em solid;border-right-width:0;width:auto}.ol-control.ol-videorec button.ol-stop,.ol-control.ol-videorec button.ol-pause,.ol-control.ol-videorec button.ol-resume,.ol-control.ol-videorec[data-state=rec] .ol-start,.ol-control.ol-videorec[data-state=pause] .ol-start{display:none}.ol-control.ol-videorec[data-state=rec] .ol-stop,.ol-control.ol-videorec[data-state=pause] .ol-stop,.ol-control.ol-videorec[data-state=rec] .ol-pause,.ol-control.ol-videorec[data-state=pause] .ol-resume{display:inline-block}.ol-control.ol-wmscapabilities{top:.5em;right:2.5em}.ol-touch .ol-control.ol-wmscapabilities{right:3em}.ol-control.ol-wmscapabilities.ol-hidden{display:none}.ol-control.ol-wmscapabilities button:before{content:"+";position:absolute;top:calc(50% - .35em);left:50%;transform:translate(-50%,-50%)}.ol-control.ol-wmscapabilities button:after{content:"";background:0 0;border:.15em solid #0000;border-width:0 .15em .15em 0;border-radius:.1em 0;width:.75em;height:.75em;position:absolute;top:calc(50% - .05em);left:50%;transform:scaleY(.6)translate(-50%,-50%)rotate(45deg);box-shadow:inset -.18em -.18em,-.4em .1em 0 -.25em,.1em -.35em 0 -.25em,.15em .15em}.ol-wmscapabilities .ol-searching{opacity:.5}.ol-wmscapabilities .ol-searching .ol-url:after{content:"";background-color:currentColor;border-radius:50%;width:.7em;height:.7em;animation:2s linear infinite ol-wmscapabilities-rotate;display:block;position:absolute;top:6em;left:calc(50% - .35em);box-shadow:0 1em,0 -1em,1em 0,-1em 0}@keyframes ol-wmscapabilities-rotate{to{transform:rotate(360deg)}}.ol-wmscapabilities .ol-url input{box-sizing:border-box;width:calc(100% - 10em);min-width:min(100%,20em)}.ol-wmscapabilities .ol-url select{width:2em;height:100%;padding:1px}.ol-wmscapabilities .ol-url button{width:7.5em;margin-left:.5em}.ol-wmscapabilities .ol-result{margin-top:.5em;display:none}.ol-wmscapabilities .ol-result.ol-visible{display:block}.ol-wmscapabilities .ol-select-list{box-sizing:border-box;border:1px solid #369;border-radius:0;width:calc(100% - 120px);max-height:14.5em;font-size:1em;position:relative;overflow-x:hidden}.ol-wmscapabilities .ol-select-list option{cursor:pointer;box-sizing:border-box;text-overflow:ellipsis;width:100%;padding:.1em .5em 0;overflow:hidden}.ol-wmscapabilities .ol-select-list .level-1{padding-left:1em}.ol-wmscapabilities .ol-select-list .level-2{padding-left:1.5em}.ol-wmscapabilities .ol-select-list .level-3{padding-left:2em}.ol-wmscapabilities .ol-select-list .level-4{padding-left:2.5em}.ol-wmscapabilities .ol-select-list .level-5{padding-left:3em}.ol-wmscapabilities .ol-select-list .ol-info{font-style:italic}.ol-wmscapabilities .ol-select-list .ol-title{background-color:#003c881a}.ol-wmscapabilities .ol-select-list option:hover{color:#fff;background-color:#003c8880}.ol-wmscapabilities .ol-select-list .selected{color:#fff;background-color:#003c88b3}.ol-wmscapabilities .ol-preview{float:right;color:#666;text-align:center;background:#003c881a;width:100px;margin-left:10px;padding:0 5px 5px}.ol-wmscapabilities .ol-preview.tainted{float:right;color:#666;text-align:center;background:#88003c1a;width:100px;margin-left:10px;padding:0 5px 5px}.ol-wmscapabilities .ol-preview img{background:#fff;width:100%;display:block}.ol-wmscapabilities .ol-legend{max-width:100%;display:none}.ol-wmscapabilities .ol-legend.visible{display:block}.ol-wmscapabilities .ol-buttons{clear:both;text-align:right}.ol-wmscapabilities .ol-data p{margin:0}.ol-wmscapabilities .ol-data p.ol-title{margin:1em 0 .5em;font-weight:700}.ol-wmscapabilities .ol-error{color:#800}.ol-wmscapabilities ul.ol-wmsform{padding:0;list-style:none;display:none}.ol-wmscapabilities ul.ol-wmsform.visible{display:block}.ol-wmscapabilities .ol-wmsform label{text-align:right;width:calc(40% - .5em);margin-right:.5em;display:inline-block}.ol-wmscapabilities .ol-wmsform input{box-sizing:border-box;width:60%;display:inline-block}.ol-wmscapabilities .ol-wmsform input[type=checkbox]{width:auto}.ol-wmscapabilities .ol-wmsform button{float:right;margin:1em 0}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] input{width:calc(60% - 2em)}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button{vertical-align:middle;color:#444;width:2em;height:1.6em;margin:0;position:relative}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:before,.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:after{content:"";border:.1em solid;width:.25em;height:.9em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)skewY(-15deg)}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:after{transform:translate(.4em)translate(-50%,-50%)skewY(15deg);box-shadow:-.8em .25em}.ol-ext-dialog.ol-wmscapabilities form{width:600px;min-height:15em;top:15%;transform:translate(-50%,-15%)}.ol-ext-dialog.ol-wmscapabilities .ol-content{max-height:calc(100vh - 6em)}.ol-ext-dialog.ol-wmtscapabilities [data-param=map],.ol-ext-dialog [data-param=style]{display:none}.ol-ext-dialog.ol-wmtscapabilities [data-param=style]{display:list-item}.ol-ext-dialog.ol-wmtscapabilities [data-param=proj],.ol-ext-dialog.ol-wmtscapabilities [data-param=version]{opacity:.6;pointer-events:none}.ol-ext-dialog.ol-wmscapabilities button.ol-wmsform{text-align:center;width:1.8em}.ol-ext-dialog.ol-wmscapabilities button.ol-wmsform:before{content:"+"}.ol-ext-dialog.ol-wmscapabilities .ol-form button.ol-wmsform:before{content:"-"}.ol-ext-dialog.ol-wmscapabilities .ol-form button.ol-load,.ol-ext-dialog.ol-wmscapabilities .ol-form .ol-legend{display:none}.ol-ext-dialog.ol-wmscapabilities .ol-form ul.ol-wmsform{clear:both;display:block}.ol-target-overlay .ol-target{border:1px solid #0000;width:0;height:20px;display:block;box-shadow:0 0 1px 1px #fff}.ol-target-overlay .ol-target:after,.ol-target-overlay .ol-target:before{content:"";border:1px solid #369;width:20px;height:0;display:block;position:absolute;top:10px;left:-10px;box-shadow:0 0 1px 1px #fff}.ol-target-overlay .ol-target:after{-webkit-box-shadow:none;box-shadow:none;width:0;height:20px;top:0;left:0}.ol-overlaycontainer .ol-touch-cursor{cursor:pointer;background:#fff6;border-radius:50%;width:56px;height:56px;margin:6px;box-shadow:inset 0 0 0 5px #369}.ol-overlaycontainer .ol-touch-cursor:after{content:"";transform-origin:100% 100%;background:radial-gradient(circle at 100% 100%,#0000,#0000 70%,#369 70%,#369);width:50%;height:50%;position:absolute;top:0;left:0}.ol-overlaycontainer .ol-touch-cursor-center{margin-top:16px;margin-left:-28px}.ol-overlaycontainer .ol-touch-cursor-center:after{transform:rotate(45deg)}.ol-overlaycontainer .ol-touch-cursor-right{margin-left:-62px}.ol-overlaycontainer .ol-touch-cursor-right:after{transform:rotate(90deg)}.ol-overlaycontainer .ol-touch-cursor .ol-button{color:#369;cursor:pointer;background:#fff6;border-radius:50%;width:55%;height:55%;transition:all .5s,opacity,background;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)scale(0);box-shadow:inset 0 0 0 3px}.ol-overlaycontainer .ol-touch-cursor.active.disable .ol-button{opacity:.8;background:#3693}.ol-overlaycontainer .ol-touch-cursor.active .ol-button{transform:translate(-50%,-50%)scale(1)}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-0{top:-18%;left:118%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-1{top:50%;left:140%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-2{top:120%;left:120%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-3{top:140%;left:50%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-4{top:118%;left:-18%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-5{top:50%;left:-40%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-6{top:-18%;left:-18%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-7{top:-40%;left:50%}.ol-overlaycontainer .ol-touch-cursor .ol-button:before{content:"";text-align:center;width:1.5em;height:1em;line-height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-add:before,.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-remove:before{content:"−";font-size:1.375em;font-weight:700;line-height:.95em}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-add:before{content:"+"}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-x:before{content:"×";font-size:1.2em;font-weight:700}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-move:before{content:"✥";font-size:1.2em}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-check:before{content:"✓";font-weight:700}.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-x,.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-remove,.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-check{opacity:.8;background:#3693}.ol-overlaycontainer .ol-touch-cursor .ol-button>div{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlaycontainer .ol-touch-cursor .ol-button-type:before{content:"⇎";font-weight:700}.mapboxgl-canvas:focus{outline:none}.ol-perspective-map{width:200%;height:200%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-perspective-map .ol-layer{z-index:-1!important}.ol-perspective-map .ol-layers{transform:translateY(0)perspective(200px)rotateX(0)scaleY(1)}.ol-perspective-map .ol-overlaycontainer,.ol-perspective-map .ol-overlaycontainer-stopevent{top:50%;left:50%;transform:translate(-50%,-50%);width:50%!important;height:50%!important}.ol-overlay-container .ol-magnify{z-index:0;background:#00000080;border:3px solid #369;border-radius:50%;width:150px;height:150px;position:relative;overflow:hidden;box-shadow:5px 5px 5px #00000080}.ol-overlay-container .ol-magnify:before{content:"";z-index:1;border-radius:50%;width:100%;height:100%;display:block;position:absolute;top:0;left:0;box-shadow:inset 0 0 40px 2px #00000040}.ol-overlay-container .ol-magnify:after{content:"";z-index:1;border-radius:50%;width:20%;height:0;display:block;position:absolute;top:20%;left:23%;transform:rotate(-40deg);box-shadow:0 0 20px 7px #fff}.ol-popup.anim{visibility:hidden}.ol-popup.anim.visible{visibility:visible}.ol-popup.anim.visible>div{visibility:visible;animation:.4s ol-popup_bounce;transform:none}@keyframes ol-popup_bounce{0%{transform:scale(0)}50%{transform:scale(1.1)}80%{transform:scale(.95)}to{transform:scale(1)}}.ol-popup.anim.ol-popup-bottom.ol-popup-left>div{transform-origin:0 100%}.ol-popup.anim.ol-popup-bottom.ol-popup-right>div{transform-origin:100% 100%}.ol-popup.anim.ol-popup-bottom.ol-popup-center>div{transform-origin:50% 100%}.ol-popup.anim.ol-popup-top.ol-popup-left>div{transform-origin:0 0}.ol-popup.anim.ol-popup-top.ol-popup-right>div{transform-origin:100% 0}.ol-popup.anim.ol-popup-top.ol-popup-center>div{transform-origin:50% 0}.ol-popup.anim.ol-popup-middle.ol-popup-left>div{transform-origin:0}.ol-popup.anim.ol-popup-middle.ol-popup-right>div{transform-origin:100%}.ol-popup{-webkit-user-select:none;user-select:none;font-size:.9em}.ol-popup .ol-popup-content{cursor:default;padding:.25em .5em;overflow:hidden}.ol-popup.hasclosebox .ol-popup-content{margin-right:1.7em}.ol-popup .ol-popup-content:after{clear:both;content:"";height:0;font-size:0;display:block}.ol-popup .anchor{pointer-events:none;background:red;width:0;height:0;margin:-11px 22px;display:block;position:absolute}.ol-popup .anchor:after,.ol-popup .anchor:before{position:absolute}.ol-popup-right .anchor:after,.ol-popup-right .anchor:before{right:0}.ol-popup-top .anchor{top:0}.ol-popup-bottom .anchor{bottom:0}.ol-popup-right .anchor{right:0}.ol-popup-left .anchor{left:0}.ol-popup-center .anchor{left:50%;margin-left:0!important}.ol-popup-middle .anchor{top:50%;margin-top:0!important}.ol-popup-center.ol-popup-middle .anchor{display:none}.ol-popup.ol-fixed{margin:0!important;inset:.5em .5em auto auto!important;transform:none!important}.ol-popup.ol-fixed .anchor{display:none}.ol-popup.ol-fixed.anim>div{animation:none}.ol-popup .ol-fix{float:right;cursor:pointer;background:#fff;width:1em;height:.9em;margin:.2em;position:relative}.ol-popup .ol-fix:before{content:"";box-sizing:border-box;border:.1em solid #666;border-right-width:.3em;width:.8em;height:.7em;margin:.1em;display:block}.ol-popup.shadow{box-shadow:2px 2px 2px 2px #00000080}.ol-popup .closeBox{color:#fff;cursor:pointer;float:right;background-color:#003c8880;border:0;border-radius:2px;width:1.4em;height:1.4em;margin:5px 5px 0 0;padding:0;font-size:.9em;font-weight:700;display:none;position:relative}.ol-popup.hasclosebox .closeBox{display:block}.ol-popup .closeBox:hover{background-color:#003c88b3}.ol-popup .closeBox:after{content:"×";text-align:center;width:100%;margin:-.5em 0;font-size:1.5em;line-height:1em;position:absolute;top:50%;left:0;right:0}.ol-popup.modifytouch{background-color:#eee}.ol-popup.modifytouch .ol-popup-content{white-space:nowrap;padding:0 .25em;font-size:.85em}.ol-popup.modifytouch .ol-popup-content a{text-decoration:none}.ol-popup.tooltips{background-color:#ffa}.ol-popup.tooltips .ol-popup-content{white-space:nowrap;padding:0 .25em;font-size:.85em}.ol-popup.default>div{background-color:#fff;border:1px solid #69f;border-radius:5px}.ol-popup.default{margin:-11px 0;transform:translateY(-22px)}.ol-popup-top.ol-popup.default{margin:11px 0;transform:none}.ol-popup-left.default{margin:-11px -22px;transform:translateY(-22px)}.ol-popup-top.ol-popup-left.default{margin:11px -22px;transform:none}.ol-popup-right.default{margin:-11px 22px;transform:translate(44px,-22px)}.ol-popup-top.ol-popup-right.default{margin:11px 22px;transform:translate(44px)}.ol-popup-middle.default{margin:0 10px;transform:none}.ol-popup-middle.ol-popup-right.default{margin:0 -10px;transform:translate(-20px)}.ol-popup.default .anchor{color:#69f}.ol-popup.default .anchor:after,.ol-popup.default .anchor:before{content:"";border:11px solid;border-color:currentColor #0000;margin:0 -11px}.ol-popup.default .anchor:after{border-width:11px;border-color:#fff #0000;margin:2px -11px}.ol-popup-top.default .anchor:before,.ol-popup-top.default .anchor:after{border-top:0;top:0}.ol-popup-bottom.default .anchor:before,.ol-popup-bottom.default .anchor:after{border-bottom:0;bottom:0}.ol-popup-middle.default .anchor:before{border-color:#0000 currentColor;margin:-11px -33px}.ol-popup-middle.default .anchor:after{border-color:#0000 #fff;margin:-11px -31px}.ol-popup-middle.ol-popup-left.default .anchor:before,.ol-popup-middle.ol-popup-left.default .anchor:after{border-left:0}.ol-popup-middle.ol-popup-right.default .anchor:before,.ol-popup-middle.ol-popup-right.default .anchor:after{border-right:0}.ol-popup.placemark{color:#c00;margin:-.65em 0;transform:translateY(-1.3em)}.ol-popup.placemark>div{width:2em;height:2em;min-width:unset;box-sizing:border-box;background-color:#fff;border:0;border-radius:50%;font-size:15px;position:relative;box-shadow:inset 0 0 0 .45em}.ol-popup.placemark .ol-popup-content{cursor:default;text-align:center;width:1em;height:1em;padding:.25em 0;line-height:1em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-popup.placemark .anchor{margin:0}.ol-popup.placemark .anchor:before{content:"";background:0 0;border-radius:50%;width:1em;height:.5em;margin:-.5em;box-shadow:0 1em .5em #00000080}.ol-popup.placemark .anchor:after{content:"";border:.7em solid #0000;border-top:1em solid;border-bottom:0 solid;margin:-.75em -.7em;bottom:0}.ol-popup.placemark.shield>div{border-radius:.2em}.ol-popup.placemark.shield .anchor:after{border-width:.8em 1em 0;margin:-.7em -1em}.ol-popup.placemark.blazon>div{border-radius:.2em}.ol-popup.placemark.pushpin{margin:-2.2em 0;transform:translateY(-4em)}.ol-popup.placemark.pushpin>div{border-radius:0;width:1.1em;box-shadow:inset 2em 0;background:0 0!important}.ol-popup.placemark.pushpin>div:before{content:"";pointer-events:none;border:.5em solid #0000;border-top:.3em solid;border-bottom-color:currentColor;width:1.3em;height:1.5em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-popup.placemark.needle{margin:-2em 0;transform:translateY(-4em)}.ol-popup.placemark.pushpin .anchor,.ol-popup.placemark.needle .anchor{margin:-1.2em}.ol-popup.placemark.pushpin .anchor:after,.ol-popup.placemark.needle .anchor:after{border-style:solid;border-width:2em .15em 0;width:.1em;margin:-.55em -.2em}.ol-popup.placemark.pushpin .anchor:before,.ol-popup.placemark.needle .anchor:before{margin:-.75em -.5em}.ol-popup.placemark.flagv{margin:-2em 1em;transform:translateY(-4em)}.ol-popup.placemark.flagv>div{-webkit-box-shadow:none;box-shadow:none;background-color:#0000;border-radius:0}.ol-popup.placemark.flagv>div:before{content:"";pointer-events:none;border:1em solid #0000;border-left:2em solid;position:absolute}.ol-popup.placemark.flagv .anchor{margin:-1.4em}.ol-popup.placemark.flag{margin:-2em 1em;transform:translateY(-4em)}.ol-popup.placemark.flag>div{border-radius:0;transform-origin:0 150%!important}.ol-popup.placemark.flag .anchor{margin:-1.4em}.ol-popup.placemark.flagv .anchor:after,.ol-popup.placemark.flag .anchor:after{border-style:solid;border-width:2em .15em 0;width:.1em;margin:-.55em -1em}.ol-popup.placemark.flagv .anchor:before,.ol-popup.placemark.flag .anchor:before{margin:-.75em -1.25em}.ol-popup.placemark.flag.finish{margin:-2em 1em}.ol-popup.placemark.flag.finish>div{background-image:linear-gradient(45deg,currentColor 25%,#0000 25% 75%,currentColor 75%,currentColor),linear-gradient(45deg,currentColor 25%,#0000 25% 75%,currentColor 75%,currentColor);background-position:.5em 0,0 .5em;background-size:1em 1em;box-shadow:inset 0 0 0 .25em}.ol-popup.black .closeBox{color:#f80;background-color:#00000080;border-radius:5px}.ol-popup.black .closeBox:hover{color:#da2;background-color:#000000b3}.ol-popup.black{margin:-20px 0;transform:translateY(-40px)}.ol-popup.black>div{color:#fff;background-color:#0009;border-radius:5px}.ol-popup-top.ol-popup.black{margin:20px 0;transform:none}.ol-popup-left.black{margin:-20px -22px;transform:translateY(-40px)}.ol-popup-top.ol-popup-left.black{margin:20px -22px;transform:none}.ol-popup-right.black{margin:-20px 22px;transform:translate(44px,-40px)}.ol-popup-top.ol-popup-right.black{margin:20px 22px;transform:translate(44px)}.ol-popup-middle.black{margin:0 11px;transform:none}.ol-popup-left.ol-popup-middle.black{transform:none}.ol-popup-right.ol-popup-middle.black{margin:0 -11px;transform:translate(-22px)}.ol-popup.black .anchor{color:#0009;margin:-20px 11px}.ol-popup.black .anchor:before{content:"";border:20px solid;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.black .anchor:before{border-top:0;top:0}.ol-popup-bottom.black .anchor:before{border-bottom:0;bottom:0}.ol-popup-middle.black .anchor:before{border-color:#0000 currentColor;margin:-20px -22px}.ol-popup-middle.ol-popup-left.black .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.black .anchor:before{border-right:0}.ol-popup-center.black .anchor:before{margin:0 -10px}.ol-popup.tips .closeBox{color:#fff;background-color:red;border-radius:50%;width:1.2em;height:1.2em}.ol-popup.tips .closeBox:hover{background-color:#f40}.ol-popup.tips{margin:-20px 0;transform:translateY(-40px)}.ol-popup.tips>div{color:#333;background-color:#cea;border:5px solid #ad7;border-radius:5px}.ol-popup-top.ol-popup.tips{margin:20px 0;transform:none}.ol-popup-left.tips{margin:-20px -22px;transform:translateY(-40px)}.ol-popup-top.ol-popup-left.tips{margin:20px -22px;transform:none}.ol-popup-right.tips{margin:-20px 22px;transform:translate(44px,-40px)}.ol-popup-top.ol-popup-right.tips{margin:20px 22px;transform:translate(44px)}.ol-popup-middle.tips{margin:0;transform:none}.ol-popup-left.ol-popup-middle.tips{margin:0 22px;transform:none}.ol-popup-right.ol-popup-middle.tips{margin:0 -22px;transform:translate(-44px)}.ol-popup.tips .anchor{color:#ad7;margin:-18px 22px}.ol-popup.tips .anchor:before{content:"";border:20px solid;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.tips .anchor:before{border-top:0;top:0}.ol-popup-bottom.tips .anchor:before{border-bottom:0;bottom:0}.ol-popup-center.tips .anchor:before{border-width:20px 6px;margin:0 -6px}.ol-popup-left.tips .anchor:before{border-left:0;margin-left:0}.ol-popup-right.tips .anchor:before{border-right:0;margin-right:0}.ol-popup-middle.tips .anchor:before{border-width:6px 20px;border-color:#0000 currentColor;margin:-6px -41px}.ol-popup-middle.ol-popup-left.tips .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.tips .anchor:before{border-right:0}.ol-popup.warning .closeBox{color:#fff;background-color:red;border-radius:50%;font-size:.83em}.ol-popup.warning .closeBox:hover{background-color:#f40}.ol-popup.warning{color:#900;background-color:#fd0;border:4px dashed red;border-radius:3px;margin:-28px 10px;transform:translateY(-56px)}.ol-popup-top.ol-popup.warning{margin:28px 10px;transform:none}.ol-popup-left.warning{margin:-28px -22px;transform:translateY(-56px)}.ol-popup-top.ol-popup-left.warning{margin:28px -22px;transform:none}.ol-popup-right.warning{margin:-28px 22px;transform:translate(44px,-56px)}.ol-popup-top.ol-popup-right.warning{margin:28px 22px;transform:translate(44px)}.ol-popup-middle.warning{margin:0;transform:none}.ol-popup-left.ol-popup-middle.warning{margin:0 22px;transform:none}.ol-popup-right.ol-popup-middle.warning{margin:0 -22px;transform:translate(-44px)}.ol-popup.warning .anchor{margin:-33px 7px}.ol-popup.warning .anchor:before{content:"";border:30px solid red;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.warning .anchor:before{border-top:0;top:0}.ol-popup-bottom.warning .anchor:before{border-bottom:0;bottom:0}.ol-popup-center.warning .anchor:before{margin:0 -21px}.ol-popup-middle.warning .anchor:before{border-width:10px 22px;border-color:#0000 red;margin:-10px -33px}.ol-popup-middle.ol-popup-left.warning .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.warning .anchor:before{border-right:0}.ol-popup .ol-popupfeature table{width:100%}.ol-popup .ol-popupfeature table td{text-overflow:ellipsis;max-width:25em;overflow:hidden}.ol-popup .ol-popupfeature table td img{max-width:100px;max-height:100px}.ol-popup .ol-popupfeature tr:nth-child(odd){background-color:#eee}.ol-popup .ol-popupfeature .ol-zoombt{color:#003c8880;background:0 0;border:0;outline:none;width:2em;height:2em;display:inline-block;position:relative}.ol-popup .ol-popupfeature .ol-zoombt:before{content:"";box-sizing:border-box;background-color:#0000;border:.17em solid;border-radius:100%;width:1em;height:1em;position:absolute;top:.3em;left:.3em}.ol-popup .ol-popupfeature .ol-zoombt:after{content:"";box-sizing:border-box;border-style:solid;border-width:.1em .3em;border-radius:.03em;position:absolute;top:1.35em;left:1.15em;transform:rotate(45deg);box-shadow:-.2em 0 0 -.04em}.ol-popup .ol-popupfeature .ol-count{float:right;margin:.25em 0}.ol-popup .ol-popupfeature .ol-prev,.ol-popup .ol-popupfeature .ol-next{vertical-align:bottom;cursor:pointer;border:.5em solid #0000;border-left-color:#003c8880;border-right:0 solid #003c8880;margin:0 .5em;display:inline-block}.ol-popup .ol-popupfeature .ol-prev{border-width:.5em .5em .5em 0}.ol-popup.tooltips.black{background-color:#0000}.ol-popup.tooltips.black>div{background-color:#00000080;padding:.2em .5em;transform:scaleY(1.3)}.ol-popup-middle.tooltips.black .anchor:before{border-width:5px 10px;margin:-5px -21px}.ol-popup-center.ol-popup-middle,.ol-popup-top.ol-popup-left.ol-fixPopup,.ol-popup-top.ol-popup-right.ol-fixPopup,.ol-popup.ol-fixPopup{margin:0}.ol-miniscroll{position:relative}.ol-miniscroll:hover .ol-scroll{opacity:.5;transition:opacity 1s}.ol-miniscroll .ol-scroll{-ms-touch-action:none;touch-action:none;opacity:0;z-index:1;border-radius:9px;width:9px;height:auto;max-height:100%;transition:opacity 1s .5s;position:absolute;right:0;overflow:hidden}.ol-miniscroll .ol-scroll>div{-ms-touch-action:none;touch-action:none;box-sizing:border-box;cursor:pointer;border:2px solid #0000;border-radius:9px/12px;width:9px;height:9px;position:absolute;top:0;right:0;box-shadow:inset 10px 0}.ol-miniscroll .ol-scroll.ol-100pc{opacity:0}.ol-viewport canvas.ol-fixedoverlay{width:100%;height:100%;position:absolute;top:0;left:0}.ol-ext-toggle-switch{cursor:pointer;position:relative}.ol-ext-toggle-switch input[type=radio],.ol-ext-toggle-switch input[type=checkbox]{opacity:0;width:0;height:0;margin:0;padding:0;display:inline-block}.ol-ext-toggle-switch span{color:#003c8880;cursor:pointer;vertical-align:middle;background-color:#ccc;border-radius:1em;width:1.6em;height:1em;margin:-.15em .2em .15em;font-size:1.3em;transition:all .4s,background-color,border-color,box-shadow;display:inline-block;position:relative}.ol-ext-toggle-switch span:before{content:"";box-sizing:border-box;background-color:#fff;border:2px solid #ccc;border-radius:1em;width:1em;height:1em;transition:all .4s;display:block;position:absolute;top:50%;left:0;transform:translateY(-50%)}.ol-ext-toggle-switch:hover span{background-color:#999}.ol-ext-toggle-switch:hover span:before{border-color:#999}.ol-ext-toggle-switch input:checked+span{background-color:currentColor}.ol-ext-toggle-switch input:checked+span:before{border-color:currentColor;transform:translate(.6em,-50%)}.ol-ext-check{display:inline-block;position:relative}.ol-ext-check input{opacity:0;cursor:pointer;width:0;height:0;margin:0;padding:0;display:inline-block;position:absolute}.ol-ext-check span{color:#003c8880;vertical-align:middle;background-color:#ccc;width:1em;height:1em;margin:-.1em .5em .1em;display:inline-block;position:relative}.ol-ext-check:hover span{background-color:#999}.ol-ext-checkbox input:checked~span{background-color:currentColor}.ol-ext-checkbox input:checked~span:before{content:"";width:.5em;height:.8em;position:absolute;top:50%;left:50%;transform:translateY(-.1em)translate(-50%,-50%)rotate(45deg);box-shadow:inset -.2em -.2em #fff}.ol-ext-radio span{border-radius:50%;width:1.1em;height:1.1em}.ol-ext-radio:hover input:checked~span{background-color:#ccc}.ol-ext-radio input:checked~span:before{content:"";background-color:currentColor;border-radius:50%;width:50%;height:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-ext-toggle-switch input:focus-visible+span,.ol-ext-check input:focus-visible+span{box-shadow:inset 0 0 0 1px #fff,0 0 0 1.8px #000c}.ol-collection-list{margin:0;padding:0;list-style:none}.ol-collection-list li{padding:0 2em 0 1em;position:relative}.ol-collection-list li:hover{background-color:#003c8833}.ol-collection-list li.ol-select{color:#fff;background-color:#003c8880}.ol-collection-list li .ol-order{-ms-touch-action:none;touch-action:none;cursor:n-resize;-webkit-user-select:none;user-select:none;width:2em;height:100%;position:absolute;top:50%;right:0;transform:translateY(-50%)}.ol-collection-list li .ol-order:before{content:"";background-color:currentColor;border-radius:2px;width:18px;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 5px,0 -5px}.ol-collection-list li>input.ol-input-focus{opacity:0;z-index:-1;width:0;height:0;position:absolute}.ol-collection-list li:has(>input.ol-input-focus:focus){outline:2px solid #369}.ol-ext-colorpicker.ol-popup{background-color:#0000;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 -1px,5px 4px;background-size:10px 10px;width:2em;height:1.5em}.ol-ext-colorpicker .ol-tabbar{background-color:#eee;border-bottom:1px solid #999;display:none}.ol-ext-colorpicker.ol-tab .ol-tabbar{display:block}.ol-ext-colorpicker .ol-tabbar>div{cursor:pointer;background-color:#fff;border:1px solid #999;border-radius:2px 2px 0 0;padding:0 .5em;display:inline-block;position:relative;top:1px}.ol-ext-colorpicker .ol-tabbar>div:first-child{border-bottom-color:#fff}.ol-ext-colorpicker.ol-picker-tab .ol-tabbar>div:first-child{border-bottom-color:#999}.ol-ext-colorpicker.ol-picker-tab .ol-tabbar>div:nth-child(2){border-bottom-color:#fff}.ol-ext-colorpicker.ol-popup.ol-tab .ol-popup{width:180px}.ol-ext-colorpicker.ol-tab .ol-palette{margin:0 10px}.ol-ext-colorpicker.ol-tab .ol-container{display:none}.ol-ext-colorpicker.ol-tab.ol-picker-tab .ol-container{display:block}.ol-ext-colorpicker.ol-tab.ol-picker-tab .ol-palette{display:none}.ol-ext-colorpicker.ol-popup .ol-popup{width:340px}.ol-ext-colorpicker.ol-popup .ol-vignet{content:"";pointer-events:none;background-color:currentColor;border:0;width:100%;height:100%;position:absolute;top:0;left:0}.ol-ext-colorpicker .ol-container{vertical-align:top;display:inline-block;position:relative}.ol-ext-colorpicker .ol-cursor{pointer-events:none}.ol-ext-colorpicker .ol-picker{cursor:crosshair;background-color:currentColor;background-image:-webkit-gradient(linear, left top, left bottom, from(0), color-stop(#000), to(transparent)), -webkit-gradient(linear, left top, right top, from(#fff), to(transparent));background-image:linear-gradient(#0000,#000),linear-gradient(90deg,#fff,#0000);border:5px solid #fff;width:150px;height:150px;position:relative}.ol-ext-colorpicker .ol-picker .ol-cursor{border:1px solid #000000b3;border-radius:50%;width:10px;height:10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #ffffffb3}.ol-ext-colorpicker .ol-slider{cursor:crosshair;background-color:#fff;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 -1px,5px 4px;background-size:10px 10px;border:0 solid #fff;border-width:0 5px;width:150px;height:10px;margin:5px 0 10px;position:relative}.ol-ext-colorpicker .ol-slider>div{pointer-events:none;background-image:linear-gradient(45deg,#0000,#fff);width:100%;height:100%}.ol-ext-colorpicker .ol-slider .ol-cursor{background:0 0;border:1px solid #000;width:4px;height:12px;position:absolute;top:50%;left:0;transform:translate(-50%,-50%)}.ol-ext-colorpicker .ol-tint{cursor:crosshair;box-sizing:border-box;background-image:-webkit-gradient(linear, left top, left bottom, from(0), color-stop(red), color-stop(#f0f), color-stop(#00f), color-stop(#0ff), color-stop(#0f0), color-stop(#ff0), to(red));background-image:linear-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red);border:5px solid #fff;border-width:5px 0;width:10px;height:150px;position:absolute;top:0;right:5px}.ol-ext-colorpicker .ol-tint .ol-cursor{border:1px solid #000;width:12px;height:4px;position:absolute;top:0;left:50%;transform:translate(-50%,-50%)}.ol-ext-colorpicker .ol-clear{border:2px solid #999;width:10px;height:10px;position:absolute;top:163px;right:4px}.ol-ext-colorpicker .ol-clear:before,.ol-ext-colorpicker .ol-clear:after{content:"";background-color:#999;width:15px;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-ext-colorpicker .ol-clear:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-ext-colorpicker.ol-nopacity .ol-slider,.ol-ext-colorpicker.ol-nopacity .ol-clear,.ol-ext-colorpicker.ol-nopacity .ol-alpha{display:none}.ol-ext-colorpicker .ol-rgb{width:170px;padding:5px;display:none;position:relative}.ol-ext-colorpicker .ol-rgb input{box-sizing:border-box;border:1px solid #999;border-radius:2px;width:25%;padding:0 0 0 2px;font-size:13px}.ol-ext-colorpicker .ol-rgb input:first-child{background-color:#ff00001a}.ol-ext-colorpicker .ol-rgb input:nth-child(2){background-color:#00ff001a}.ol-ext-colorpicker .ol-rgb input:nth-child(3){background-color:#0000ff1f}.ol-ext-colorpicker button,.ol-ext-colorpicker .ol-txt-color{text-align:center;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:170px;margin:0 5px 5px;padding:0;font-size:13px;display:block}.ol-ext-colorpicker .ol-txtcolor{width:170px;margin:0 5px}.ol-ext-colorpicker .ol-txtcolor input.ol-txt-color{width:100%;margin:0}.ol-ext-colorpicker.eyedropper .ol-txtcolor input.ol-txt-color{width:calc(100% - 2em);height:2em;margin:0;display:inline-block}.ol-ext-colorpicker button{background-color:#eee}.ol-ext-colorpicker button:hover{background-color:#e9e9e9}.ol-ext-colorpicker button.ol-eyedropper{vertical-align:middle;width:2em;height:2em;margin:0;display:inline-block;position:relative}.ol-ext-colorpicker button.ol-eyedropper:before{content:"";background-color:#999;width:100%;height:100%;position:absolute;top:0;left:0;-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20width='24'%20height='24'%3e%3cpath%20d='m18.203%203.676%202.121%202.121a1%201%200%200%201%200%201.414l-2.828%202.829%201.767%201.768-1.414%201.414-1.414-1.414L7.243%2021H3v-4.243l9.192-9.192-1.414-1.414%201.414-1.414%201.768%201.767%202.829-2.828a1%201%200%200%201%201.414%200Zm-4.596%205.303-8.564%208.564%201.414%201.414%208.564-8.564-1.414-1.414Z'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20width='24'%20height='24'%3e%3cpath%20d='m18.203%203.676%202.121%202.121a1%201%200%200%201%200%201.414l-2.828%202.829%201.767%201.768-1.414%201.414-1.414-1.414L7.243%2021H3v-4.243l9.192-9.192-1.414-1.414%201.414-1.414%201.768%201.767%202.829-2.828a1%201%200%200%201%201.414%200Zm-4.596%205.303-8.564%208.564%201.414%201.414%208.564-8.564-1.414-1.414Z'/%3e%3c/svg%3e");-webkit-mask-size:100% 100%;mask-size:100% 100%}.ol-ext-colorpicker .ol-txt-color.ol-error{background-color:#f003}.ol-ext-colorpicker .ol-palette{width:152px;padding:2px;display:inline-block}.ol-ext-colorpicker .ol-palette>div{cursor:pointer;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 0,5px 5px;background-size:10px 10px;border-radius:1px;width:15px;height:15px;margin:2px;display:inline-block;position:relative;box-shadow:0 0 2px #666}.ol-ext-colorpicker .ol-palette>div:before{content:"";background-color:currentColor;width:100%;height:100%;position:absolute}.ol-ext-colorpicker .ol-palette>div.ol-select:after{content:"";width:6px;height:12px;position:absolute;top:30%;left:50%;transform:translate(-50%,-50%)rotate(45deg);box-shadow:1px 1px #fff,2px 2px #000}.ol-ext-colorpicker .ol-palette>div:hover{box-shadow:0 0 2px 1px #d90}.ol-ext-colorpicker .ol-palette hr{margin:0}.ol-input-hidden{opacity:0;width:0;height:0;margin:0;padding:0;display:block;position:absolute}.ol-input-popup{display:inline-block;position:relative}.ol-input-popup .ol-popup{z-index:1;white-space:nowrap;background-color:#fff;margin:0;padding:0;list-style:none;display:none;position:absolute;left:-5px;box-shadow:1px 1px 3px 1px #999}.ol-input-popup.ol-hover:hover .ol-popup,.ol-input-popup.ol-focus .ol-popup{display:block}.ol-input-popup.ol-right .ol-popup{left:auto;right:-5px}.ol-input-popup.ol-middle .ol-popup{top:50%;transform:translateY(-50%)}.ol-input-popup .ol-popup li{padding:10px 5px;position:relative}.ol-input-popup li:hover,.ol-input-popup li.ol-selected{background-color:#ccc}.ol-input-popup.ol-fixed:hover .ol-popup,.ol-input-popup.ol-fixed .ol-popup{-webkit-box-shadow:unset;box-shadow:unset;vertical-align:middle;background-color:#0000;display:inline-block;position:relative;left:0}.ol-input-popup.ol-fixed.ol-left .ol-popup{float:left}.ol-input-popup>div{vertical-align:middle;border:1px solid #999;border-radius:2px;padding:3px 20px 3px 10px;display:inline-block;position:relative}.ol-input-popup>div:before{content:"";border:5px solid #0000;border-top-color:#999;position:absolute;top:50%;right:5px}.ol-ext-popup-input{vertical-align:top;display:inline-block}.ol-ext-popup-input.ol-popup{box-sizing:content-box;-webkit-user-select:none;user-select:none;vertical-align:middle;border:3px solid #fff;border-right-width:1em;border-radius:2px;width:2em;height:1.5em;display:inline-block;position:relative;box-shadow:0 0 2px 1px #666}.ol-ext-popup-input.ol-popup:after{content:"";pointer-events:none;border:.3em solid #0000;border-top:.5em solid #999;border-bottom:0 solid #999;position:absolute;top:50%;right:-.8em;transform:translateY(-50%)}.ol-ext-popup-input *{box-sizing:content-box}.ol-ext-popup-input.ol-popup .ol-popup{z-index:1;background-color:#fff;min-width:3em;min-height:3em;display:none;position:absolute;top:100%;left:0;box-shadow:1px 1px 3px 1px #999}.ol-ext-popup-input.ol-popup .ol-popup.ol-visible{display:block}.ol-ext-popup-input.ol-popup-fixed .ol-popup{position:fixed;top:auto;left:auto}.ol-input-popup.ol-size li{vertical-align:middle;height:100%;padding:5px;display:table-cell}.ol-input-popup.ol-size li>*{vertical-align:middle;background-color:#369;border-radius:50%;width:1em;height:1em}.ol-input-popup.ol-size li>.ol-option-0{color:#aaa;box-sizing:border-box;background-color:#0000;border:2px solid;width:1em;height:1em;position:relative}.ol-input-popup.ol-size li>:before{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-input-popup.ol-size li>.ol-option-0:before{content:"";background-color:#aaa;width:1em;height:2px;transform:translate(-50%,-50%)rotate(-45deg)}.ol-input-slider{display:inline-block;position:relative}.ol-input-slider .ol-popup{z-index:1;background-color:#fff;display:none;position:absolute;left:-5px;box-shadow:1px 1px 3px 1px #999}.ol-input-slider.ol-right .ol-popup{left:auto;right:-5px}.ol-input-slider.ol-hover:hover .ol-popup,.ol-input-slider.ol-focus .ol-popup{white-space:nowrap;display:block}.ol-input-slider.ol-hover:hover .ol-popup>*,.ol-input-slider.ol-focus .ol-popup>*{vertical-align:middle;display:inline-block}.ol-input-slider.ol-hover:hover .ol-popup>.ol-before,.ol-input-slider.ol-focus .ol-popup>.ol-before{margin-left:10px}.ol-input-slider.ol-hover:hover .ol-popup>.ol-after,.ol-input-slider.ol-focus .ol-popup>.ol-after{margin-right:10px}.ol-input-slider .ol-slider{vertical-align:middle;box-sizing:content-box;cursor:pointer;border:10px solid #0000;border-width:10px 15px;width:100px;height:3px;display:inline-block;position:relative;box-shadow:inset 0 0 0 1px #999}.ol-input-slider .ol-slider>.ol-cursor{pointer-events:none;background-color:#999;width:5px;height:10px;position:absolute;top:50%;transform:translate(-50%,-50%)}.ol-input-range .ol-slider{cursor:default;width:150px}.ol-input-range .ol-slider>.ol-cursor{pointer-events:all;cursor:pointer;background-color:#003c88;border-radius:50%;width:10px}.ol-input-range.ol-moving .ol-slider>.ol-cursor{pointer-events:none}.ol-input-range .ol-slider>.ol-back{pointer-events:none;background-color:#003c88;height:100%;position:absolute;top:50%;left:30%;right:20%;transform:translateY(-50%)}.ol-input-slider.ol-fixed:hover .ol-popup,.ol-input-slider.ol-fixed .ol-popup{-webkit-box-shadow:unset;box-shadow:unset;vertical-align:middle;background-color:#0000;display:inline-block;position:relative;left:0}.ol-input-slider.ol-fixed.ol-left .ol-popup{float:left}.ol-input-slider.ol-size .ol-slider{height:auto;-webkit-box-shadow:none;box-shadow:none}.ol-input-slider.ol-size .ol-slider .ol-back{color:#aaa;pointer-events:none;border-top:0 solid;border-bottom:20px solid;border-left:100px solid #0000;border-right:0 solid #0000;width:0}.ol-input-slider.ol-size .ol-slider>.ol-cursor{border:5px solid red;border-left:3px solid #0000;border-right:3px solid #0000;-o-border-image:initial;border-image:initial;background-color:#0000;width:2px;height:calc(100% + 4px);box-shadow:inset 3px 0 red}.ol-input-popup.ol-width li{padding:5px}.ol-input-popup.ol-width li>*{background-color:#369;width:100px;height:1em}.ol-input-popup.ol-width li>.ol-option-0{background-color:#0000;background-image:linear-gradient(90deg,#aaa 2px,#0000 2px);background-size:4px;height:1px;position:relative}html,body{height:100%;margin:0;padding:0}body{font-family:Calibri,sans-serif}.viewer-app{--viewer-control-background:#111;--viewer-control-surface-background:#222;--viewer-control-hover-background:#333;--viewer-control-pressed-background:#555;--viewer-control-selected-background:#163a59;--viewer-control-selected-hover-background:#1f5278;--viewer-control-selected-pressed-background:#555;--viewer-control-foreground:#fff;--viewer-control-hover-foreground:#fff;--viewer-control-pressed-foreground:#fff;--viewer-control-selected-foreground:#fff;--viewer-control-muted-foreground:#ffffffb3;--viewer-control-subtle-foreground:#ffffff8c;--viewer-control-border:#555c;--viewer-control-focus-border:#787878f2;--viewer-control-foreground-shadow:#000000bf;width:100%;height:100%;position:relative;overflow:hidden}.viewer-app:fullscreen{background:#fff;width:100%;height:100%}.viewer-app:fullscreen{background:#fff;width:100%;height:100%}.map{width:100%;height:100%}.ol-zoom,.ol-rotate,.ol-full-screen,.ol-graticule,.ol-screen-space-graticule,.reset-view-control,.viewer-panel-control,.layer-editor-control,.settings-control{background:var(--viewer-control-background);border-radius:4px;padding:0;overflow:hidden;box-shadow:0 2px 7px #0000004d}.ol-zoom:hover,.ol-rotate:hover,.ol-full-screen:hover,.ol-graticule:hover,.ol-screen-space-graticule:hover,.reset-view-control:hover,.viewer-panel-control:hover,.layer-editor-control:hover,.settings-control:hover{background:var(--viewer-control-background)}.ol-zoom button,.ol-rotate button,.ol-full-screen button,.ol-graticule button,.ol-screen-space-graticule button,.reset-view-control button,.viewer-panel-control button,.layer-editor-control button,.settings-control button{background:var(--viewer-control-background);width:32px;height:32px;color:var(--viewer-control-foreground);cursor:pointer;border:0;margin:0}.ol-zoom button:hover:not(:disabled),.ol-rotate button:hover:not(:disabled),.ol-full-screen button:hover:not(:disabled),.ol-graticule button:hover:not(:disabled),.ol-screen-space-graticule button:hover:not(:disabled),.reset-view-control button:hover:not(:disabled),.viewer-panel-control button:hover:not(:disabled),.layer-editor-control button:hover:not(:disabled),.settings-control button:hover:not(:disabled){background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground);border-radius:4px;outline:none}.ol-zoom button:active:not(:disabled),.ol-rotate button:active:not(:disabled),.ol-full-screen button:active:not(:disabled),.ol-graticule button:active:not(:disabled),.ol-screen-space-graticule button:active:not(:disabled),.reset-view-control button:active:not(:disabled),.viewer-panel-control button:active:not(:disabled),.layer-editor-control button:active:not(:disabled),.settings-control button:active:not(:disabled){background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground);border-radius:4px;outline:none}.ol-zoom{flex-direction:row;display:flex}.ol-zoom.viewer-control-disabled{opacity:.4}.ol-zoom.viewer-control-disabled button:disabled,.ol-zoom.viewer-control-disabled button:disabled:hover,.ol-zoom.viewer-control-disabled button:disabled:active,.ol-zoom.viewer-control-disabled button:disabled:focus{opacity:1;background:0 0}.ol-zoom button{background:0 0;border-radius:0}.ol-zoom .ol-zoom-out{order:1}.ol-zoom .ol-zoom-out,.ol-zoom .ol-zoom-out:hover,.ol-zoom .ol-zoom-out:active,.ol-zoom .ol-zoom-out:focus{border-radius:4px 0 0 4px}.ol-zoom-level{box-sizing:border-box;border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);width:42px;height:24px;color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);text-align:center;appearance:textfield;border-radius:3px;order:2;margin:4px 3px;padding:0 3px;font-family:inherit;font-size:11px;font-weight:600}.ol-zoom-level::-webkit-inner-spin-button{appearance:none;margin:0}.ol-zoom-level::-webkit-outer-spin-button{appearance:none;margin:0}.ol-zoom-level:hover:not(:disabled){border-color:var(--viewer-control-focus-border)}.ol-zoom-level:focus{border-color:var(--viewer-control-focus-border);background:var(--viewer-control-hover-background);outline:none}.ol-zoom-level:disabled{opacity:1;cursor:default;background:0 0}.ol-zoom .ol-zoom-in{order:3}.ol-zoom .ol-zoom-in,.ol-zoom .ol-zoom-in:hover,.ol-zoom .ol-zoom-in:active,.ol-zoom .ol-zoom-in:focus{border-radius:0 4px 4px 0}.settings-control,.settings-control:hover{z-index:1002;background:0 0;top:8px;left:auto;right:8px}.settings-control button,.settings-control button:hover,.settings-control button:active,.settings-control button:focus,.settings-control button.active,.settings-control button.active:hover,.settings-control button.active:active,.settings-control button.active:focus{border-radius:4px}.viewer-tools-group{z-index:1000;border-radius:4px;flex-direction:column;width:32px;display:flex;position:absolute;top:80px;left:8px;overflow:hidden;box-shadow:0 2px 7px #0000004d}.viewer-tools-group .ol-rotate,.viewer-tools-group .ol-graticule,.viewer-tools-group .ol-screen-space-graticule{box-shadow:none;background:0 0;border-radius:0;margin:0;padding:0;position:static;inset:auto}.viewer-tools-group .ol-rotate:hover,.viewer-tools-group .ol-graticule:hover,.viewer-tools-group .ol-screen-space-graticule:hover{background:0 0}.viewer-tools-group button{border-radius:0!important}.reset-view-control{background:0 0;border-radius:4px}.reset-view-control:hover{background:0 0}.ol-full-screen{background:0 0;border-radius:4px}.ol-full-screen:hover{background:0 0}.ol-full-screen button,.ol-full-screen button:hover,.ol-full-screen button:active,.ol-full-screen button:focus,.reset-view-control button,.reset-view-control button:hover,.reset-view-control button:active,.reset-view-control button:focus{border-radius:4px}.ol-full-screen button,.reset-view-control button{justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;display:flex}.bottom-controls-group{z-index:1000;align-items:center;gap:8px;display:flex;position:absolute;bottom:8px;left:50%;transform:translate(-50%)}.bottom-controls-group .reset-view-control,.bottom-controls-group .ol-zoom,.bottom-controls-group .ol-full-screen{margin:0;position:static;inset:auto;transform:none}.ol-scale-line{background:var(--viewer-control-background);border-radius:4px;padding:5px 8px;font-family:Calibri,sans-serif;bottom:8px;left:8px;box-shadow:0 2px 7px #00000040}.ol-scale-line-inner{border:1px solid var(--viewer-control-foreground);color:var(--viewer-control-foreground);border-bottom:0;margin:0;font-size:14px;line-height:1.2}.ol-mouse-position{z-index:100;background:var(--viewer-control-background);color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);border-radius:4px;padding:6px 9px;font-family:Calibri,sans-serif;font-size:12px;position:absolute;inset:auto 8px 8px auto;box-shadow:0 2px 7px #0000004d}.ol-layerswitcher,.ol-control.ol-layerswitcher{display:none}.layer-editor-header,.viewer-panel-header{border-bottom:1px solid var(--viewer-control-border);padding:12px 14px;font-size:13px;font-weight:600}.left-panel-controls{z-index:1000;border-radius:4px;flex-direction:column;width:32px;display:flex;position:absolute;top:8px;left:8px;overflow:hidden;box-shadow:0 2px 7px #0000004d}.left-panel-controls .viewer-panel-control,.left-panel-controls .layer-editor-control{box-shadow:none;background:0 0;border-radius:0;margin:0;position:static;inset:auto}.left-panel-controls .viewer-panel-control:hover,.left-panel-controls .layer-editor-control:hover{background:0 0}.left-panel-controls .viewer-panel-control button,.left-panel-controls .viewer-panel-control button:hover,.left-panel-controls .viewer-panel-control button:active,.left-panel-controls .viewer-panel-control button:focus,.left-panel-controls .viewer-panel-control button.active,.left-panel-controls .viewer-panel-control button.active:hover,.left-panel-controls .viewer-panel-control button.active:active,.left-panel-controls .viewer-panel-control button.active:focus,.left-panel-controls .layer-editor-control button,.left-panel-controls .layer-editor-control button:hover,.left-panel-controls .layer-editor-control button:active,.left-panel-controls .layer-editor-control button:focus,.left-panel-controls .layer-editor-control button.active,.left-panel-controls .layer-editor-control button.active:hover,.left-panel-controls .layer-editor-control button.active:active,.left-panel-controls .layer-editor-control button.active:focus{border-radius:0}.layer-editor{z-index:1000;box-sizing:border-box;background:var(--viewer-control-background);width:240px;color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);border-radius:10px;position:absolute;top:8px;left:48px;overflow:hidden;box-shadow:0 3px 10px #00000059}.layer-editor.hidden{display:none}.layer-editor-list{padding:12px 14px}.layer-editor-empty{color:var(--viewer-control-muted-foreground);font-size:12px}.layer-editor-item{margin-bottom:14px}.layer-editor-item:last-child{margin-bottom:0}.layer-editor-item-header{align-items:center;gap:8px;margin-bottom:8px;display:flex}.layer-editor-visibility{accent-color:var(--viewer-control-selected-background);cursor:pointer;flex-shrink:0;margin:0}.layer-editor-name{min-width:0;color:var(--viewer-control-foreground);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;overflow:hidden}.layer-editor-order{flex-shrink:0;gap:3px;display:flex}.layer-editor-order button{background:var(--viewer-control-surface-background);width:22px;height:22px;color:var(--viewer-control-foreground);cursor:pointer;border:0;border-radius:4px;padding:0;font-size:9px}.layer-editor-order button:hover:not(:disabled){background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground);outline:none}.layer-editor-order button:active:not(:disabled){background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground);outline:none}.layer-editor-order button:focus{color:var(--viewer-control-foreground);outline:none}.layer-editor-order button:disabled{color:var(--viewer-control-subtle-foreground);cursor:default;pointer-events:none;outline:none}.layer-editor-opacity{align-items:center;gap:9px;display:flex}.layer-editor-slider{min-width:0;accent-color:var(--viewer-control-selected-background);cursor:pointer;flex:1;margin:0}.layer-editor-value{width:32px;color:var(--viewer-control-muted-foreground);text-align:right;flex-shrink:0;font-size:11px}.settings-panel{z-index:1100;box-sizing:border-box;background:var(--viewer-control-background);width:720px;max-width:calc(100vw - 80px);height:480px;max-height:calc(100vh - 80px);color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);border-radius:10px;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%);box-shadow:0 4px 18px #00000073}.settings-panel.hidden{display:none}.settings-panel-header{border-bottom:1px solid var(--viewer-control-border);justify-content:space-between;align-items:center;padding:8px 10px 8px 18px;font-size:16px;font-weight:600;display:flex}.settings-close{width:28px;height:28px;color:var(--viewer-control-foreground);cursor:pointer;background:0 0;border:0;border-radius:4px;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:14px;display:flex}.settings-close:hover{background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground)}.settings-close:active{background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground)}.settings-close:focus{outline:none}.settings-tabs{border-bottom:1px solid var(--viewer-control-border);padding:0 18px;display:flex}.settings-tab{color:var(--viewer-control-muted-foreground);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;padding:11px 16px;font-family:inherit;font-size:12px;font-weight:600}.settings-tab:hover{color:var(--viewer-control-hover-foreground);background:var(--viewer-control-hover-background)}.settings-tab.active{border-bottom-color:var(--viewer-control-selected-background);color:var(--viewer-control-selected-foreground);background:var(--viewer-control-selected-background)}.settings-tab:focus{outline:none}.settings-panel-body{height:calc(100% - 83px);overflow-y:auto}.settings-tab-panel{padding:0 20px 20px}.settings-tab-panel.hidden{display:none}.settings-option{border-bottom:1px solid var(--viewer-control-border);justify-content:space-between;align-items:center;gap:24px;padding:16px 0;display:flex}.settings-option:last-child{border-bottom:0}.settings-option-text{min-width:0}.settings-option-label{margin-bottom:3px;font-size:12px;font-weight:600}.settings-option-description{color:var(--viewer-control-muted-foreground);font-size:11px;line-height:1.35}.settings-switch{flex-shrink:0;width:38px;height:20px;position:relative}.settings-switch input{opacity:0;width:0;height:0;position:absolute}.settings-switch-slider{background:var(--viewer-control-surface-background);cursor:pointer;border-radius:10px;transition:background .15s;position:absolute;inset:0}.settings-switch-slider:before{background:var(--viewer-control-foreground);content:"";border-radius:50%;width:14px;height:14px;transition:transform .15s;position:absolute;top:3px;left:3px}.settings-switch input:checked+.settings-switch-slider{background:var(--viewer-control-selected-background)}.settings-switch input:checked+.settings-switch-slider:before{transform:translate(18px)}.settings-switch input:focus-visible+.settings-switch-slider{outline:2px solid var(--viewer-control-focus-border);outline-offset:2px}.settings-colour-input{border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);cursor:pointer;border-radius:4px;flex-shrink:0;width:38px;height:28px;padding:2px}.settings-colour-input::-webkit-color-swatch-wrapper{padding:0}.settings-colour-input::-webkit-color-swatch{border:0;border-radius:2px}.settings-colour-input::-moz-color-swatch{border:0;border-radius:2px}.settings-select{box-sizing:border-box;border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);width:150px;height:30px;color:var(--viewer-control-foreground);cursor:pointer;border-radius:4px;flex-shrink:0;padding:4px 8px;font-family:inherit;font-size:11px}.settings-select:hover{border-color:var(--viewer-control-focus-border)}.settings-select:focus{border-color:var(--viewer-control-focus-border);outline:none}.settings-reset-button{border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);height:30px;color:var(--viewer-control-foreground);cursor:pointer;border-radius:4px;flex-shrink:0;padding:4px 10px;font-family:inherit;font-size:11px}.settings-reset-button:hover{background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground)}.settings-reset-button:active{background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground)}.settings-reset-button:focus{border-color:var(--viewer-control-focus-border);outline:none}.settings-range-control{flex-shrink:0;align-items:center;gap:10px;width:190px;display:flex}.settings-range{min-width:0;accent-color:var(--viewer-control-selected-background);cursor:pointer;flex:1;margin:0}.settings-range-value{width:34px;color:var(--viewer-control-muted-foreground);text-align:right;flex-shrink:0;font-size:11px}.viewer-panel{z-index:1000;box-sizing:border-box;background:var(--viewer-control-background);width:240px;max-height:170px;color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);border-radius:10px;position:absolute;top:8px;left:48px;overflow:visible;box-shadow:0 3px 10px #00000059}.viewer-panel.hidden{display:none}.viewer-panel-section{border-bottom:1px solid var(--viewer-control-border);padding:9px 12px}.viewer-panel-section:last-child{border-bottom:0}.viewer-file-selectors{gap:6px;min-width:0;margin-bottom:6px;display:grid}.viewer-file-select{min-width:0;position:relative}.viewer-file-select-button{box-sizing:border-box;border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);width:100%;min-width:0;max-width:100%;height:30px;color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);text-align:left;cursor:pointer;border-radius:4px;align-items:center;padding:5px 24px 5px 7px;font-family:inherit;font-size:11px;display:flex;position:relative}.viewer-file-select-button:after{border-right:1px solid var(--viewer-control-muted-foreground);border-bottom:1px solid var(--viewer-control-muted-foreground);content:"";width:5px;height:5px;position:absolute;top:10px;right:9px;transform:rotate(45deg)}.viewer-file-select.open .viewer-file-select-button:after{top:13px;transform:rotate(225deg)}.viewer-file-select-button:hover:not(:disabled){background:var(--viewer-control-hover-background)}.viewer-file-select-button:focus{border-color:var(--viewer-control-focus-border);outline:none}.viewer-file-select-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.viewer-file-select.disabled{opacity:.4}.viewer-file-select-button:disabled{cursor:default}.viewer-file-select-menu{z-index:20;box-sizing:border-box;border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);border-radius:4px;width:320px;max-width:calc(100vw - 70px);padding:5px;position:absolute;top:calc(100% + 2px);left:0;box-shadow:0 3px 8px #00000059}.viewer-file-select-search{box-sizing:border-box;border:1px solid var(--viewer-control-border);background:var(--viewer-control-background);width:100%;min-width:0;height:28px;color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);border-radius:3px;padding:5px 7px;font-family:inherit;font-size:11px}.viewer-file-select-search::placeholder{color:var(--viewer-control-subtle-foreground);opacity:1}.viewer-file-select-search:focus{border-color:var(--viewer-control-focus-border);outline:none}.viewer-file-select-options{max-height:220px;margin-top:4px;overflow-y:auto}.viewer-file-select-option{width:100%;min-width:0;color:var(--viewer-control-foreground);text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:3px;padding:6px 7px;font-family:inherit;font-size:11px;display:block;overflow:hidden}.viewer-file-select-option:hover,.viewer-file-select-option.active{background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground)}.viewer-file-select-option.selected{background:var(--viewer-control-selected-background);color:var(--viewer-control-selected-foreground)}.viewer-file-select-option.selected:hover,.viewer-file-select-option.selected.active{background:var(--viewer-control-selected-hover-background);color:var(--viewer-control-selected-foreground)}.viewer-file-select-option:focus{outline:none}.viewer-file-select-empty{color:var(--viewer-control-subtle-foreground);padding:6px 7px;font-size:11px}.viewer-file-actions{grid-template-columns:1fr 1fr;gap:6px;display:grid}.viewer-file-actions button{background:var(--viewer-control-surface-background);min-width:0;height:30px;color:var(--viewer-control-foreground);cursor:pointer;border:0;border-radius:4px;padding:5px 7px;font-size:11px}.viewer-file-actions button:hover:not(:disabled){background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground)}.viewer-file-actions button:active:not(:disabled){background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground)}.viewer-file-actions button:disabled{opacity:.4;cursor:default}.map .ol-custom-overviewmap{--overview-map-width:300px;--overview-map-height:250px;width:var(--overview-map-width);height:calc(var(--overview-map-height) + 42px);background:0 0;border-radius:4px;padding:0;transition:width .18s,height .18s;inset:8px 8px auto auto;overflow:hidden}.map .ol-custom-overviewmap.ol-collapsed{width:72px;height:32px}.map .ol-custom-overviewmap .ol-overviewmap-map,.map .ol-custom-overviewmap.ol-collapsed .ol-overviewmap-map{width:var(--overview-map-width);height:var(--overview-map-height);box-sizing:border-box;border:2px solid var(--viewer-control-border);opacity:1;background:#fff;border-radius:4px;margin:0;transition:opacity .16s,transform .18s;display:block;position:absolute;top:40px;right:0;overflow:hidden;transform:translateY(0)}.map .ol-custom-overviewmap.ol-collapsed .ol-overviewmap-map{opacity:0;pointer-events:none;transform:translateY(-8px)}.map .ol-custom-overviewmap .ol-overviewmap-map .ol-viewport{background:#fff}.map .ol-custom-overviewmap .ol-overviewmap-box{box-sizing:border-box;border:3px dotted #163a59}.map .ol-custom-overviewmap button,.map .ol-custom-overviewmap:not(.ol-collapsed) button{z-index:2;background:var(--viewer-control-background);width:32px;height:32px;color:var(--viewer-control-foreground);cursor:pointer;border:0;border-radius:4px;margin:0;position:absolute;inset:0 40px auto auto}.map .ol-custom-overviewmap button:hover{background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground);outline:none}.map .ol-custom-overviewmap button:active{background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground);outline:none}.map .ol-custom-overviewmap button:focus{color:var(--viewer-control-foreground);outline:none}.overview-toggle-icon{justify-content:center;align-items:center;width:100%;height:100%;font-size:11px;transition:transform .18s;display:flex}.ol-control button:disabled,.ol-control button:disabled:hover,.ol-control button:disabled:active,.ol-control button:disabled:focus,.ol-control.ol-toggle button:disabled,.ol-control.ol-toggle button:disabled:hover,.ol-control.ol-toggle button:disabled:active,.ol-control.ol-toggle button:disabled:focus{background:var(--viewer-control-background);color:var(--viewer-control-foreground);opacity:.4;cursor:default;pointer-events:none;outline:none}.viewer-control-hidden{display:none!important}.ol-zoom button:focus:not(:active):not(:disabled){color:var(--viewer-control-foreground);box-shadow:none;background:0 0;outline:none}.ol-rotate button:focus:not(:active):not(:disabled),.reset-view-control button:focus:not(:active):not(:disabled),.map .ol-custom-overviewmap button:focus:not(:active),.ol-graticule:not(.active) button:focus:not(:active):not(:disabled),.ol-screen-space-graticule:not(.active) button:focus:not(:active):not(:disabled),.ol-full-screen button:not(.ol-full-screen-true):focus:not(:active),.viewer-panel-control button:not(.active):focus:not(:active),.layer-editor-control button:not(.active):focus:not(:active),.settings-control button:not(.active):focus:not(:active){background:var(--viewer-control-background);color:var(--viewer-control-foreground);box-shadow:none;outline:none}.ol-graticule.active button,.ol-screen-space-graticule.active button,.ol-full-screen button.ol-full-screen-true,.viewer-panel-control button.active,.layer-editor-control button.active,.settings-control button.active{background:var(--viewer-control-selected-background);color:var(--viewer-control-selected-foreground)}.ol-graticule.active button:hover,.ol-screen-space-graticule.active button:hover,.ol-full-screen button.ol-full-screen-true:hover,.viewer-panel-control button.active:hover,.layer-editor-control button.active:hover,.settings-control button.active:hover{background:var(--viewer-control-selected-hover-background);color:var(--viewer-control-selected-foreground)}.ol-graticule.active button:active,.ol-screen-space-graticule.active button:active,.ol-full-screen button.ol-full-screen-true:active,.viewer-panel-control button.active:active,.layer-editor-control button.active:active,.settings-control button.active:active{background:var(--viewer-control-selected-pressed-background);color:var(--viewer-control-selected-foreground)} +======= +:root,:host{--ol-background-color:white;--ol-accent-background-color:#f5f5f5;--ol-subtle-background-color:#80808040;--ol-partial-background-color:#ffffffbf;--ol-foreground-color:#333;--ol-subtle-foreground-color:#666;--ol-brand-color:#0af}.ol-box{box-sizing:border-box;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color);border-radius:2px}.ol-mouse-position{position:absolute;top:8px;right:8px}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;padding:2px;position:absolute;bottom:8px;left:8px}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-align:center;will-change:contents, width;border-top:none;margin:1px;font-size:10px;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{background-color:var(--ol-foreground-color);float:right;z-index:10;width:1px;height:15px}.ol-scale-step-text{z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:10px;position:absolute;bottom:-5px}.ol-scale-text{text-align:center;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:12px;position:absolute;bottom:25px}.ol-scale-singlebar{z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color);height:10px;position:relative}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset;overflow:hidden}.ol-viewport{touch-action:pan-x pan-y}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{background-color:var(--ol-subtle-background-color);border-radius:4px;position:absolute}.ol-zoom{top:.5em;left:.5em}.ol-rotate{transition:opacity .25s linear,visibility linear;top:.5em;right:.5em}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{top:.5em;right:.5em}.ol-control button{color:var(--ol-subtle-foreground-color);font-weight:700;font-size:inherit;text-align:center;background-color:var(--ol-background-color);border:none;border-radius:2px;width:1.375em;height:1.375em;margin:1px;padding:0;line-height:.4em;text-decoration:none;display:block}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{will-change:transform;font-weight:400;display:block}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-decoration:none}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;flex-flow:row-reverse;align-items:center;max-width:calc(100% - 1.3em);display:flex;bottom:.5em;right:.5em}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);margin:0;padding:1px .5em;font-size:12px}.ol-attribution li{list-style:none;display:inline}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{border-radius:4px 0 0;bottom:0;right:0}.ol-attribution.ol-uncollapsible img{max-height:1.6em;margin-top:-.2em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{height:200px;top:4.5em;left:.5em}.ol-zoomslider button{height:10px;position:relative}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{bottom:.5em;left:.5em}.ol-overviewmap.ol-uncollapsible{border-radius:0 4px 0 0;bottom:0;left:0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);width:150px;height:150px}.ol-overviewmap:not(.ol-collapsed) button{position:absolute;bottom:0;left:0}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.ol-overviewmap .ol-viewport:hover{cursor:pointer}.ol-control i{cursor:default}.ol-control.ol-bar{white-space:nowrap;min-width:1em;min-height:1em;position:absolute;top:.5em;left:50%;transform:translate(-50%)}.ol-control.ol-toggle .ol-option-bar{display:none}.ol-control.ol-bar .ol-control{vertical-align:middle;background-color:#0000;margin:0;padding:0;display:inline-block;position:relative;inset:auto;transform:none}.ol-control.ol-bar .ol-bar{position:static}.ol-control.ol-bar .ol-control button{outline:none;margin:2px 1px}.ol-control.ol-bar.ol-left{top:50%;left:.5em;transform:translateY(-50%)}.ol-control.ol-bar.ol-left .ol-control{display:block}.ol-control.ol-bar.ol-right{top:50%;left:auto;right:.5em;transform:translateY(-50%)}.ol-control.ol-bar.ol-right .ol-control{display:block}.ol-control.ol-bar.ol-bottom{top:auto;bottom:.5em}.ol-control.ol-bar.ol-top.ol-left,.ol-control.ol-bar.ol-top.ol-right{top:4.5em;transform:none}.ol-touch .ol-control.ol-bar.ol-top.ol-left,.ol-touch .ol-control.ol-bar.ol-top.ol-right{top:5.5em}.ol-control.ol-bar.ol-bottom.ol-left,.ol-control.ol-bar.ol-bottom.ol-right{top:auto;bottom:.5em;transform:none}.ol-control.ol-bar.ol-group{margin:1px 1px 1px 0}.ol-control.ol-bar.ol-right .ol-group,.ol-control.ol-bar.ol-left .ol-group{margin:1px 1px 0}.ol-control.ol-bar.ol-group button{border-radius:0;margin:0 0 0 1px}.ol-control.ol-bar.ol-right.ol-group button,.ol-control.ol-bar.ol-left.ol-group button,.ol-control.ol-bar.ol-right .ol-group button,.ol-control.ol-bar.ol-left .ol-group button{margin:0 0 1px}.ol-control.ol-bar.ol-group .ol-control:first-child>button{border-radius:5px 0 0 5px}.ol-control.ol-bar.ol-group .ol-control:last-child>button{border-radius:0 5px 5px 0}.ol-control.ol-bar.ol-left.ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-right.ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-left .ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-right .ol-group .ol-control:first-child>button{border-radius:5px 5px 0 0}.ol-control.ol-bar.ol-left.ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-right.ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-left .ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-right .ol-group .ol-control:last-child>button{border-radius:0 0 5px 5px}.ol-control.ol-bar .ol-rotate{opacity:1;visibility:visible}.ol-control.ol-bar .ol-rotate button{display:block}.ol-control.ol-bar .ol-toggle.ol-active>button,.ol-control.ol-bar .ol-toggle.ol-active button:hover{color:#fff;background-color:#0af}.ol-control.ol-toggle button:disabled{background-color:#ccc}.ol-control.ol-bar .ol-control.ol-option-bar{background-color:#fffc;border-radius:0;margin:5px 0;display:none;position:absolute;top:100%;left:0;box-shadow:0 0 0 1px #003c8880,1px 1px 2px #00000080}.ol-control.ol-bar .ol-option-bar:before{content:"";pointer-events:none;border:.5em solid #0000;border-bottom-color:#003c8880;position:absolute;bottom:100%;left:.3em}.ol-control.ol-bar .ol-option-bar .ol-control{display:table-cell}.ol-control.ol-bar .ol-control .ol-bar{display:none}.ol-control.ol-bar .ol-control.ol-active>.ol-option-bar{display:block}.ol-control.ol-bar .ol-control.ol-collapsed ul{display:none}.ol-control.ol-bar .ol-control.ol-text-button>div:hover,.ol-control.ol-bar .ol-control.ol-text-button>div{color:#003c8880;background-color:#0000;width:auto;min-width:1.375em;margin:0}.ol-control.ol-bar .ol-control.ol-text-button{border-left:1px solid #003c88cc;border-radius:0;font-size:.9em}.ol-control.ol-bar .ol-control.ol-text-button:first-child{border-left:0}.ol-control.ol-bar .ol-control.ol-text-button>div{padding:.11em .3em;font-family:Arial,Helvetica,sans-serif;font-size:1.14em;font-weight:400}.ol-control.ol-bar .ol-control.ol-text-button div:hover{color:#003c88}.ol-control.ol-bar.ol-bottom .ol-option-bar{top:auto;bottom:100%}.ol-control.ol-bar.ol-bottom .ol-option-bar:before{border-color:#003c8880 #0000 #0000;top:100%;bottom:auto}.ol-control.ol-bar.ol-left .ol-option-bar{margin:0 5px;top:0;bottom:auto;left:100%}.ol-control.ol-bar.ol-left .ol-option-bar:before{border-color:#0000 #003c8880 #0000 #0000;inset:.3em 100% auto auto}.ol-control.ol-bar.ol-right .ol-option-bar{margin:0 5px;inset:0 100% auto auto}.ol-control.ol-bar.ol-right .ol-option-bar:before{border-color:#0000 #0000 #0000 #003c8880;top:.3em;bottom:auto;left:100%}.ol-control.ol-bar.ol-left .ol-option-bar .ol-option-bar,.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar{margin:5px 0;inset:100% auto auto .3em}.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar{left:auto;right:.3em}.ol-control.ol-bar.ol-left .ol-option-bar .ol-option-bar:before,.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar:before{border-color:#0000 #0000 #003c8880;inset:auto auto 100% .3em}.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar:before{left:auto;right:.3em}.ol-control-title{position:absolute;top:0;left:0;right:0}.ol-center-position{background-color:#fffc;padding:.1em 1em;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.ol-compassctrl{display:none;top:1em;left:auto;right:1em}.ol-compassctrl.ol-visible{display:block!important}.ol-ext-dialog{opacity:0;z-index:1000;background-color:#00000080;width:150%;height:100%;transition:opacity .2s,top 0s .2s;position:fixed;top:-100%;left:0;pointer-events:none!important}.ol-ext-dialog.ol-visible{opacity:1;transition:opacity .2s,top;top:0;pointer-events:all!important}.ol-viewport .ol-ext-dialog{position:absolute}.ol-ext-dialog>form>h2{text-overflow:ellipsis;white-space:nowrap;margin:0 .5em .5em 0;display:none;overflow:hidden}.ol-ext-dialog>form.ol-title>h2{display:block}.ol-ext-dialog>form{box-sizing:border-box;background-color:#fff;border:1px solid #333;min-width:5em;max-width:60%;min-height:3em;max-height:100%;padding:1em;transition:top .2s,transform .2s;position:absolute;top:0;left:33.33%;overflow:hidden auto;transform:translate(-50%,-30%);box-shadow:3px 3px 4px #00000080}dialog.ol-ext-dialog>form{width:max-content;max-width:90%;left:50%}.ol-ext-dialog>form.ol-closebox{padding-top:1.5em}.ol-ext-dialog>form.ol-title{padding-top:1em}.ol-ext-dialog>form.ol-button{padding-bottom:.5em}.ol-ext-dialog.ol-zoom>form{top:30%;transform:translate(-50%,-30%)scale(0)}.ol-ext-dialog.ol-visible>form{top:30%}.ol-ext-dialog.ol-zoom.ol-visible>form{transform:translate(-50%,-30%)scale(1)}.ol-ext-dialog>form .ol-content{overflow:hidden auto}.ol-ext-dialog>form .ol-closebox{cursor:pointer;width:1em;height:1em;display:none;position:absolute;top:.5em;right:.5em}.ol-ext-dialog>form.ol-closebox .ol-closebox{display:block}.ol-ext-dialog>form .ol-closebox:before,.ol-ext-dialog>form .ol-closebox:after{content:"";background-color:currentColor;border-radius:.1em;width:1em;height:.1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-ext-dialog>form .ol-closebox:before{transform:translate(-50%,-50%)rotate(-45deg)}.ol-ext-dialog>form .ol-buttons{text-align:right;overflow-x:hidden}.ol-ext-dialog>form .ol-buttons input{color:#003c88;cursor:pointer;background:0 0;border:0;border-radius:.25em;margin-top:.5em;padding:.5em;font-size:1em}.ol-ext-dialog>form .ol-buttons input:hover{background-color:#003c881a}.ol-ext-dialog>form .ol-buttons input[type=submit]{font-weight:700}.ol-ext-dialog .ol-progress-message{text-align:center;padding-bottom:.5em;font-size:.9em}.ol-ext-dialog .ol-progress-bar{border:1px solid #369;width:20em;max-width:100%;height:1em;margin:.5em auto 0;padding:2px;overflow:hidden}.ol-ext-dialog .ol-progress-bar>div{background:#369;width:50%;height:100%;transition:width .3s}.ol-ext-dialog .ol-progress-bar>div.notransition{transition:unset}.ol-ext-dialog.ol-fullscreen-dialog form{text-align:center;max-width:calc(66.6% - 2em);-webkit-box-shadow:none;box-shadow:none;color:#fff;background:0 0;border:none;inset:1em;transform:none}.ol-ext-dialog.ol-fullscreen-dialog form .ol-closebox{font-size:2em;top:0;right:0}.ol-ext-dialog.ol-fullscreen-dialog .ol-closebox:before,.ol-ext-dialog.ol-fullscreen-dialog .ol-closebox:after{border:.1em solid}.ol-ext-dialog.ol-fullscreen-dialog img,.ol-ext-dialog.ol-fullscreen-dialog video{max-width:100%}body>.ol-ext-dialog .ol-content{max-height:calc(100vh - 10em)}body>.ol-ext-dialog>form{overflow:visible}.ol-editbar .ol-button button{box-sizing:border-box;vertical-align:middle;font-style:normal;display:inline-block;position:relative}.ol-editbar .ol-button button:before,.ol-editbar .ol-button button:after{content:"";box-sizing:border-box;background-color:currentColor;border-width:0;position:absolute}.ol-editbar .ol-button button:focus{outline:none}.ol-editbar .ol-selection>button:before{background-color:#0000;border:.25em solid #0000;border-top:0 solid;border-bottom:.65em solid;width:.6em;height:1em;top:.35em;left:.5em;transform:translate(-50%,-50%)rotate(-30deg);box-shadow:0 .6em 0 -.23em}.ol-editbar .ol-selection0>button:after{background-color:#0000;border:.05em solid #0000;border-top:0 solid;border-bottom:.7em solid;width:.28em;height:.6em;top:.5em;left:.7em;transform:rotate(-45deg)}.ol-editbar .ol-delete button:after,.ol-editbar .ol-delete button:before{width:1em;height:.2em;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-editbar .ol-delete button:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-editbar .ol-info button:before{border-radius:.03em;width:.25em;height:.6em;top:.47em;left:50%;transform:translate(-50%)}.ol-editbar .ol-info button:after{border-radius:.03em;width:.25em;height:.2em;top:.12em;left:50%;transform:translate(-50%);box-shadow:-.1em .35em,-.1em .82em,.1em .82em}.ol-editbar .ol-drawpoint button:before{background-color:#0000;border:.15em solid;border-radius:50%;width:.7em;height:.7em;top:.2em;left:50%;transform:translate(-50%)}.ol-editbar .ol-drawpoint button:after{background-color:#0000;border:.2em solid #0000;border-top:.4em solid;border-bottom:0 solid;width:.4em;height:.4em;top:.8em;left:50%;transform:translate(-50%)}.ol-editbar .ol-drawline>button:before,.ol-editbar .ol-drawpolygon>button:before,.ol-editbar .ol-drawhole>button:before{background-color:#0000;border:.13em solid;border-width:.2em .13em .09em;width:.8em;height:.8em;top:.2em;left:.25em;transform:rotate(10deg)perspective(1em)rotateX(40deg)}.ol-editbar .ol-drawline>button:before{border-bottom:0}.ol-editbar .ol-drawline>button:after,.ol-editbar .ol-drawhole>button:after,.ol-editbar .ol-drawpolygon>button:after{width:.3em;height:.3em;top:.2em;left:.25em;box-shadow:-.2em .55em,.6em .1em,.65em .7em}.ol-editbar .ol-drawhole>button:after{box-shadow:-.2em .55em,.6em .1em,.65em .7em,.25em .35em}.ol-editbar .ol-offset>button i,.ol-editbar .ol-transform>button i{width:.9em;height:.9em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-editbar .ol-offset>button i{width:.8em;height:.8em}.ol-editbar .ol-offset>button i:before,.ol-editbar .ol-transform>button i:before,.ol-editbar .ol-transform>button i:after{content:"";background-color:currentColor;width:.1em;height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg);box-shadow:.5em 0 0 .1em,-.5em 0 0 .1em}.ol-editbar .ol-offset>button i:before{box-shadow:.45em 0 0 .1em,-.45em 0 0 .1em}.ol-editbar .ol-transform>button i:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-editbar .ol-split>button:before{border-radius:50%;width:.3em;height:.3em;top:.81em;left:.75em;box-shadow:.1em -.4em,-.15em -.25em}.ol-editbar .ol-split>button:after{background-color:#0000;border:.2em solid;border-width:0 .2em .2em 0;border-radius:.1em;width:.8em;height:.8em;top:.15em;left:-.1em;transform:rotate(20deg)scaleY(.6)rotate(-45deg)}.ol-editbar .ol-drawregular>button:before{background-color:#0000;border:.1em solid;width:.9em;height:.9em;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div{cursor:pointer;vertical-align:text-bottom;border:.5em solid #0000;border-color:#0000 currentColor;display:inline-block}.ol-editbar .ol-drawregular .ol-bar:before,.ol-control.ol-bar.ol-editbar .ol-drawregular .ol-bar{left:50%;transform:translate(-50%)}.ol-editbar .ol-drawregular .ol-bar .ol-text-button{text-align:center;min-width:6em}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div:first-child{border-width:.5em .5em .5em 0;margin:0 .5em 0 0}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div:last-child{border-width:.5em 0 .5em .5em;margin:0 0 0 .5em}.ol-feature-list{position:relative}.ol-control.ol-feature-list{width:100%;position:absolute;bottom:0;left:0}.ol-control.ol-feature-list>button:before{content:"";background-image:linear-gradient(90deg,currentColor,#0000);width:60%;height:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 2.5px}.ol-control.ol-feature-list.ol-collapsed{width:auto;bottom:.5em;left:.5em}.ol-feature-list .ol-content{clear:both;background-color:#f4f6f8}.ol-feature-list.ol-collapsed .ol-content>*{display:none}.ol-feature-list .ol-header{position:relative;overflow:hidden}.ol-feature-list.ol-collapsed .ol-header{display:block}.ol-control.ol-feature-list>button,.ol-control.ol-feature-list.ol-collapsed .ol-content{display:none}.ol-control.ol-feature-list.ol-collapsed>button{display:block}.ol-feature-list .ol-sizer{cursor:row-resize;background-color:#ccc;border:1px solid #f4f6f8;border-width:1px 0;width:100%;height:1px;position:relative}.ol-feature-list.ol-bottom .ol-sizer{position:absolute;bottom:0}.ol-feature-list .ol-sizer:before{content:"";z-index:1;background-color:#ddd;border:3px solid #0000;border-width:3px 1.5em;border-radius:2px;width:1.5em;height:4px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 -1px #aaa,inset 0 1px #aaa}.ol-feature-list .ol-sizer:hover:before{background-color:#ccc}.ol-feature-list .ol-content .ol-header p{vertical-align:middle;white-space:nowrap;text-overflow:ellipsis;width:calc(100% - 2em);margin:.1em .25em;display:inline-block;overflow:hidden}.ol-feature-list .ol-content .ol-header .ol-buttons{position:absolute;top:50%;right:0;transform:translateY(-50%)}.ol-feature-list .ol-content .ol-header button{vertical-align:middle;box-sizing:border-box;background:0 0;border:0;width:1em;height:1em;margin:0 .2em;position:relative}.ol-feature-list .ol-content .ol-header button.ol-closebox:before,.ol-feature-list .ol-content .ol-header button.ol-closebox:after{content:"";background:currentColor;width:.1em;height:1em;font-style:normal;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-feature-list .ol-content .ol-header button.ol-closebox:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox{border:1px solid}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox:before{transform:translate(-50%,-50%)rotate(90deg)}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox:after{display:none}.ol-feature-list .ol-scroll-container{height:10em;min-height:3em;overflow:auto}.ol-feature-list .ol-scroll-container:focus{outline:unset}.ol-feature-list table{border-collapse:collapse;white-space:nowrap;background-color:#fff;position:relative}.ol-feature-list table thead{background-color:#f4f6f8;position:sticky;top:0;overflow:hidden}.ol-feature-list table tr{box-sizing:border-box;height:1.4em}.ol-feature-list table tbody tr:hover{cursor:pointer;background-color:#eee}.ol-feature-list table tbody tr.ol-selected{background-color:#eee}.ol-feature-list table td{border:0 solid #ddd;border-width:0 0 1px 1px;width:100px;overflow:hidden}.ol-feature-list table td.number{text-align:right}.ol-feature-list table td.undefined{text-align:center;background-color:#fafafa}.ol-feature-list table tr:hover td,.ol-feature-list table .ol-selected td{background-color:#0000}.ol-feature-list thead td{position:relative}.ol-feature-list thead td.sort{padding-right:1.5em}.ol-feature-list thead td p{margin:0;display:inline-block}.ol-feature-list table td button{background-color:#0000;border:0;width:1.2em;height:1.4em;margin:.1em 0;padding:0;position:absolute;top:0;right:0}.ol-feature-list thead td button.sort:before{content:"⇅";cursor:pointer;font-size:1em;font-style:normal;font-weight:400;line-height:1em}.ol-feature-list thead td button.sortup:before{content:"↧"}.ol-feature-list thead td button.sortdown:before{content:"↥"}.ol-gauge{background-color:#ffffff80;padding:.1em .5em;top:.5em;left:50%;transform:translate(-50%)}.ol-gauge>*{vertical-align:middle;display:inline-block}.ol-gauge>span{margin:0 .5em 0 0}.ol-gauge>div{border:1px solid #003c8880;border-radius:3px;width:200px;padding:1px;display:inline-block}.ol-gauge button{max-width:100%;height:.8em;margin:0}.ol-control.ol-bookmark{background-color:#ffffff80;top:.5em;left:3em}.ol-control.ol-bookmark button{position:relative}.ol-control.ol-bookmark>button:before{content:"";border:5px solid;border-top-width:10px;border-bottom:4px solid #0000;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-bookmark>div{min-width:5em;display:block}.ol-control.ol-bookmark.ol-collapsed>div{display:none}.ol-control.ol-bookmark input{margin:0 .5em .5em;padding:0 .5em;font-size:.9em}.ol-control.ol-bookmark ul{min-width:10em;margin:0 0 .5em;padding:0;list-style:none}.ol-control.ol-bookmark li{color:#003c88cc;cursor:default;clear:both;padding:0 .2em 0 .5em;font-size:.9em}.ol-control.ol-bookmark li:hover{color:#fff;background-color:#003c8880}.ol-control.ol-bookmark>div button{float:right;cursor:pointer;background-color:#0000;border-radius:0;width:1em;height:.8em}.ol-control.ol-bookmark>div button:before{content:"⨯";color:#936;border-radius:0;font-size:1.2em;line-height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-bookmark ul li button,.ol-bookmark input{display:none}.ol-bookmark.ol-editable ul li button,.ol-bookmark.ol-editable input{display:block}.ol-control.ol-geobt{inset:auto .5em 3em auto}.ol-touch .ol-control.ol-geobt{bottom:3.5em}.ol-control.ol-geobt button:before{content:"";background:0 0;border:.16em solid;border-radius:50%;width:.4em;height:.4em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-geobt button:after{content:"";background:0 0;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.42em 0,-.42em 0,0 .42em,0 -.42em}.ol-control.ol-bar.ol-geobar .ol-control{vertical-align:middle;display:inline-block}.ol-control.ol-bar.ol-geobar .ol-bar{display:none}.ol-bar.ol-geobar.ol-active .ol-bar{display:inline-block}.ol-bar.ol-geobar .geolocBt button:before,.ol-bar.ol-geobar .geolocBt button:after{content:"";border-top:.3em solid;border-bottom:0 solid #0000;border-left:.2em solid #0000;border-right:.8em solid #0000;font-size:1.2em;display:block;position:absolute;top:.45em;left:.15em;transform:rotate(-30deg)}.ol-bar.ol-geobar .geolocBt button:after{border-width:0 .8em .3em .2em;border-color:#0000 #0000 currentColor;transform:rotate(-61deg)}.ol-bar.ol-geobar .startBt button:before{content:"";background-color:#800;border-radius:50%;width:1em;height:1em;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-bar.ol-geobar .pauseBt button:before,.ol-bar.ol-geobar .pauseBt button:after{content:"";background-color:currentColor;width:.25em;height:1em;display:block;position:absolute;top:50%;left:35%;transform:translate(-50%,-50%)}.ol-bar.ol-geobar .pauseBt button:after{left:65%}.ol-control.ol-bar.ol-geobar .centerBt,.ol-control.ol-bar.ol-geobar .pauseBt,.ol-bar.ol-geobar.pauseTrack .startBt,.ol-bar.ol-geobar.centerTrack .startBt,.ol-bar.ol-geobar.centerTrack.pauseTrack .pauseBt,.ol-bar.ol-geobar.centerTrack .pauseBt{display:none}.ol-bar.ol-geobar.pauseTrack .pauseBt,.ol-bar.ol-geobar.centerTrack .centerBt{display:inline-block}.ol-control.ol-globe{opacity:.7;transform-origin:0 100%;border-radius:50%;position:absolute;bottom:.5em;left:.5em;transform:scale(.5)}.ol-control.ol-globe:hover{opacity:.9}.ol-control.ol-globe .panel{cursor:pointer;background-color:#fff;border-radius:50%;width:170px;height:170px;display:block;overflow:hidden;box-shadow:0 0 10px 5px #ffffff80}.ol-control.ol-globe .panel .ol-viewport{border-radius:50%}.ol-control.ol-globe .ol-pointer{z-index:1;background-color:#fff;border:10px solid red;border-radius:50%;width:10px;height:10px;transition:opacity .15s,top,left;display:block;position:absolute;top:50%;left:50%;transform:translate(-15px,-40px)}.ol-control.ol-globe .ol-pointer.hidden{opacity:0;transition:opacity .15s,top 3s,left 5s}.ol-control.ol-globe .ol-pointer:before{content:"";border-radius:50%;width:0;height:0;display:block;position:absolute;top:23px;left:0;box-shadow:6px 6px 10px 5px #000}.ol-control.ol-globe .ol-pointer:after{content:"";border:10px solid #0000;border-top:20px solid red;border-bottom:0 solid red;width:0;height:0;display:block;position:absolute;top:100%;left:-50%}.ol-control.ol-globe .panel:before{content:"";z-index:1;border-radius:50%;width:100%;height:100%;display:block;position:absolute;top:0;left:0;box-shadow:inset -20px -20px 80px 2px #000000b3}.ol-control.ol-globe .panel:after{content:"";z-index:1;border-radius:50%;width:20%;height:0;display:block;position:absolute;top:20%;left:23%;transform:rotate(-40deg);box-shadow:0 0 20px 7px #fff}.ol-control.ol-globe.ol-collapsed .panel{display:none}.ol-control-top.ol-globe{transform-origin:0 0;top:5em;bottom:auto}.ol-control-right.ol-globe{transform-origin:100% 100%;left:auto;right:.5em}.ol-control-right.ol-control-top.ol-globe{transform-origin:100% 0;left:auto;right:.5em}.ol-gridreference{background:#fff;border:1px solid #000;max-height:100%;top:0;right:0;overflow:auto}.ol-gridreference input{width:100%}.ol-gridreference ul{margin:0;padding:0;list-style:none}.ol-gridreference li{cursor:pointer;padding:0 .5em}.ol-gridreference ul li:hover{background-color:#ccc}.ol-gridreference li.ol-title,.ol-gridreference li.ol-title:hover{color:#fff;cursor:default;background:#003c8880}.ol-gridreference ul li .ol-ref{margin-left:.5em}.ol-gridreference ul li .ol-ref:before{content:"("}.ol-gridreference ul li .ol-ref:after{content:")"}.ol-control.ol-imageline{border-radius:0;padding:0;transition:all .3s;bottom:0;left:0;right:0;overflow:visible}.ol-control.ol-imageline.ol-collapsed{transform:translateY(100%)}.ol-imageline>div{white-space:nowrap;scroll-behavior:smooth;width:100%;height:4em;position:relative;overflow:hidden}.ol-imageline>div.ol-move{scroll-behavior:unset}.ol-control.ol-imageline button{margin:.65em;position:absolute;top:-1em;transform:translateY(-100%);box-shadow:0 0 0 .15em #fff6}.ol-control.ol-imageline button:before{content:"";border:.15em solid;border-width:.15em .15em 0 0;width:.4em;height:.4em;position:absolute;top:40%;left:50%;transform:translate(-50%,-50%)rotate(135deg)}.ol-control.ol-imageline.ol-collapsed button:before{top:60%;transform:translate(-50%,-50%)rotate(-45deg)}.ol-imageline,.ol-imageline:hover{background-color:#000000bf}.ol-imageline.ol-arrow:after,.ol-imageline.ol-arrow:before{content:"";z-index:1;opacity:.8;pointer-events:none;border:1em solid #fff;border-left:0 solid #000;border-right:.6em solid #000;position:absolute;top:50%;left:.2em;transform:translateY(-50%);box-shadow:-.6em 0 0 1em #fff}.ol-imageline.ol-arrow:after{border-width:1em 0 1em .6em;left:auto;right:.2em;box-shadow:.6em 0 0 1em #fff}.ol-imageline.ol-scroll0.ol-arrow:before,.ol-imageline.ol-scroll1.ol-arrow:after{display:none}.ol-imageline .ol-image{cursor:pointer;height:100%;display:inline-block;position:relative}.ol-imageline img{box-sizing:border-box;opacity:0;border:.25em solid #0000;max-height:100%;transition:all 1s}.ol-imageline img.ol-loaded{opacity:1}.ol-imageline .ol-image.select{background-color:#fff}.ol-imageline .ol-image span{color:#fff;white-space:normal;text-align:center;background-color:#00000080;width:125%;max-height:2.4em;font-size:.8em;line-height:1.2em;display:none;position:absolute;bottom:0;left:50%;overflow:hidden;transform:translate(-50%)scaleX(.8)}.ol-imageline .ol-image:hover span{display:block}.ol-control.ol-routing.ol-isochrone .ol-method-time,.ol-control.ol-routing.ol-isochrone .ol-method-distance,.ol-control.ol-routing.ol-isochrone>button{position:relative}.ol-control.ol-routing.ol-isochrone .ol-method-time:before,.ol-control.ol-routing.ol-isochrone>button:before{content:"";clip:unset;border:.1em solid;border-radius:50%;width:.8em;height:.8em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 -.5em 0 -.35em,.4em -.35em 0 -.35em}.ol-control.ol-routing.ol-isochrone .ol-method-time:after,.ol-control.ol-routing.ol-isochrone>button:after{content:"";-webkit-box-shadow:none;box-shadow:none;box-sizing:border-box;clip:unset;border:.3em solid #0000;border-right-color:currentColor;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-60deg)}.ol-control.ol-routing.ol-isochrone .ol-method-distance:before{content:"";box-sizing:border-box;border:.1em solid;width:1em;height:.5em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-30deg)}.ol-control.ol-routing.ol-isochrone .ol-method-distance:after{content:"";width:.1em;height:.15em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-30deg);box-shadow:inset 0 -.15em,0 .1em,.25em .1em,-.25em .1em}.ol-control.ol-routing.ol-isochrone .ol-direction-direct:before,.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:before{content:"";box-sizing:border-box;border:.1em solid;border-radius:50%;width:.3em;height:.3em;position:absolute;top:50%;left:30%;transform:translate(-50%,-50%);box-shadow:.25em 0 0 -.05em}.ol-control.ol-routing.ol-isochrone .ol-direction-direct:after,.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:after{content:"";border:.4em solid #0000;border-left-color:currentColor;border-right:0 solid;position:absolute;top:50%;left:70%;transform:translate(-50%,-50%)}.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:after{border-width:.4em .4em .4em 0}.ol-control.ol-isochrone.ol-collapsed .content{display:none}.ol-control.ol-isochrone input[type=number]{text-align:right;width:3em;margin:0 .1em}.ol-control.ol-isochrone .ol-distance input[type=number]{width:5em}.ol-isochrone .ol-time,.ol-isochrone .ol-distance{display:none}.ol-isochrone .ol-time.selected,.ol-isochrone .ol-distance.selected{display:block}.ol-control.ol-layerswitcher-popup{text-align:left;position:absolute;top:3em;right:.5em}.ol-control.ol-layerswitcher-popup .panel{clear:both;background:#fff}.ol-layerswitcher-popup .panel{margin:0;padding:.25em;list-style:none;overflow:hidden}.ol-layerswitcher-popup .panel ul{padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher-popup.ol-collapsed .panel{display:none}.ol-layerswitcher-popup.ol-forceopen .panel{display:block}.ol-layerswitcher-popup button{float:right;background-color:#fff;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACE1BMVEX///8A//8AgICA//8AVVVAQID///8rVVVJtttgv98nTmJ2xNgkW1ttyNsmWWZmzNZYxM4gWGgeU2JmzNNr0N1Rwc0eU2VXxdEhV2JqytQeVmMhVmNoydUfVGUgVGQfVGQfVmVqy9hqy9dWw9AfVWRpydVry9YhVmMgVGNUw9BrytchVWRexdGw294gVWQgVmUhVWPd4N6HoaZsy9cfVmQgVGRrytZsy9cgVWQgVWMgVWRsy9YfVWNsy9YgVWVty9YgVWVry9UgVWRsy9Zsy9UfVWRsy9YgVWVty9YgVWRty9Vsy9aM09sgVWRTws/AzM0gVWRtzNYgVWRuy9Zsy9cgVWRGcHxty9bb5ORbxdEgVWRty9bn6OZTws9mydRfxtLX3Nva5eRix9NFcXxOd4JPeINQeIMiVmVUws9Vws9Vw9BXw9BYxNBaxNBbxNBcxdJexdElWWgmWmhjyNRlx9IqXGtoipNpytVqytVryNNrytZsjZUuX210k5t1y9R2zNR3y9V4lp57zth9zdaAnKOGoaeK0NiNpquV09mesrag1tuitbmj1tuj19uktrqr2d2svcCu2d2xwMO63N+7x8nA3uDC3uDFz9DK4eHL4eLN4eIyYnDX5OM5Z3Tb397e4uDf4uHf5uXi5ePi5+Xj5+Xk5+Xm5+Xm6OY6aHXQ19fT4+NfhI1Ww89gx9Nhx9Nsy9ZWw9Dpj2abAAAAWnRSTlMAAQICAwQEBgcIDQ0ODhQZGiAiIyYpKywvNTs+QklPUlNUWWJjaGt0dnd+hIWFh4mNjZCSm6CpsbW2t7nDzNDT1dje5efr7PHy9PT29/j4+Pn5+vr8/f39/f6DPtKwAAABTklEQVR4Xr3QVWPbMBSAUTVFZmZmhhSXMjNvkhwqMzMzMzPDeD+xASvObKePPa+ffHVl8PlsnE0+qPpBuQjVJjno6pZpSKXYl7/bZyFaQxhf98hHDKEppwdWIW1frFnrxSOWHFfWesSEWC6R/P4zOFrix3TzDFLlXRTR8c0fEEJ1/itpo7SVO9Jdr1DVxZ0USyjZsEY5vZfiiAC0UoTGOrm9PZLuRl8X+Dq1HQtoFbJZbv61i+Poblh/97TC7n0neCcK0ETNUrz1/xPHf+DNAW9Ac6t8O8WH3Vp98f5lCaYKAOFZMLyHL4Y0fe319idMNgMMp+zWVSybUed/+/h7I4wRAG1W6XDy4XmjR9HnzvDRZXUAYDFOhC1S/Hh+fIXxen+eO+AKqbs+wAo30zDTDvDxKoJN88sjUzDFAvBzEUGFsnADoIvAJzoh2BZ8sner+Ke/vwECuQAAAABJRU5ErkJggg==);background-position:50%;background-repeat:no-repeat;width:38px;height:38px}.ol-layerswitcher-popup li{color:#369;cursor:pointer;padding:.25em 1em;font-family:Trebuchet MS,Helvetica,sans-serif}.ol-layerswitcher-popup li.ol-header{display:none}.ol-layerswitcher-popup li.select,.ol-layerswitcher-popup li.ol-visible{color:#fff;background:#003c88b3}.ol-layerswitcher-popup li:hover{color:#fff;background:#003c88e6}.ol-control.ol-layerswitcher.ol-layer-shop{height:calc(100% - 4em);max-height:unset;background-color:#0000;max-width:16em;overflow:visible;pointer-events:none!important}.ol-control.ol-layerswitcher>*{pointer-events:auto}.ol-control.ol-layer-shop>button,.ol-control.ol-layer-shop .panel-container{box-shadow:0 0 0 3px #ffffff80}.ol-control.ol-layerswitcher.ol-layer-shop .panel-container{border:2px solid #369;border-width:2px 0;max-height:calc(100% - 6.5em);padding:0;overflow-y:scroll}.ol-control.ol-layer-shop .panel{box-sizing:border-box;margin:.25em .5em;padding:0}.ol-control.ol-layerswitcher.ol-layer-shop .panel-container.ol-scrolldiv{overflow:hidden}.ol-control.ol-layer-shop .ol-scroll{opacity:.5;background-color:#0000004d}.ol-layerswitcher.ol-layer-shop ul.panel li.ol-header{display:none}.ol-layerswitcher.ol-layer-shop ul.panel li{margin-right:0;padding-right:0}.ol-layerswitcher.ol-layer-shop .layerup{box-sizing:border-box;color:#003c88;background-color:#0000;border-radius:3px;width:1.4em;height:1.5em;margin:0}.ol-layerswitcher.ol-layer-shop .layerup:hover{background-color:#003c884d}.ol-layerswitcher.ol-layer-shop .layerup:before{background-color:currentColor;border:0;width:1em;height:2px;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 -4px,0 4px}.ol-layerswitcher.ol-layer-shop .layerup:after{content:unset}.ol-control.ol-layer-shop .ol-title-bar{box-sizing:border-box;text-overflow:ellipsis;white-space:nowrap;text-align:right;transform-origin:100% 0;background-color:#ffffff80;max-width:14.6em;height:calc(2.8em - 4px);padding:.7em .5em;font-size:.9em;transition:transform .1s,width;overflow:hidden;transform:scaleY(1.1)}.ol-control.ol-layer-shop:hover .ol-title-bar{background-color:#ffffffb3}.ol-control.ol-layer-shop.ol-collapsed .ol-title-bar{max-width:10em;transform:scale(.9,1.1)}.ol-control.ol-layer-shop.ol-forceopen .ol-title-bar{max-width:14.6em;transform:scaleY(1.1)}.ol-control.ol-layer-shop .ol-bar{clear:both;text-align:right;z-index:10;background-color:#fff;height:1.75em;position:relative;box-shadow:0 0 0 3px #ffffff80}.ol-control.ol-layer-shop.ol-collapsed .ol-scroll,.ol-control.ol-layer-shop.ol-collapsed .ol-bar{border-width:2px 0 0;display:none}.ol-control.ol-layer-shop.ol-forceopen .ol-scroll,.ol-control.ol-layer-shop.ol-forceopen .ol-bar{display:block}.ol-control.ol-layer-shop .ol-bar>*{vertical-align:middle;background-color:#0000;margin-top:.25em;font-size:.9em;display:inline-block}.ol-layer-shop .ol-bar .ol-button,.ol-touch .ol-layer-shop .ol-bar .ol-button{top:unset;left:unset;bottom:unset;right:unset;margin:0;position:relative}.ol-layer-shop .ol-bar button{color:#003c88;background-color:#fff}.ol-layer-shop .ol-bar button:hover{background-color:#003c8833}.ol-touch .ol-layerswitcher.ol-layer-shop>button{font-size:1.7em}.ol-touch .ol-layer-shop .ol-bar{height:2em}.ol-touch .ol-layer-shop .ol-control button{font-size:1.4em}.ol-touch .ol-control.ol-layer-shop .panel{max-height:calc(100% - 7em)}.ol-touch .ol-control.ol-layer-shop .panel label{height:1.8em}.ol-touch .ol-control.ol-layer-shop .panel label span{margin-left:.5em;padding-top:.25em}.ol-touch .ol-control.ol-layer-shop .panel label:before,.ol-touch .ol-control.ol-layer-shop .panel label:after{z-index:1;font-size:1.3em}.ol-control.ol-layerswitcher{text-align:left;box-sizing:border-box;max-height:calc(100% - 6em);position:absolute;top:3em;right:.5em;overflow:hidden}.ol-control.ol-layerswitcher .ol-switchertopdiv,.ol-control.ol-layerswitcher .ol-switcherbottomdiv{display:block}.ol-control.ol-layerswitcher.ol-collapsed .ol-switchertopdiv,.ol-control.ol-layerswitcher.ol-collapsed .ol-switcherbottomdiv{display:none}.ol-layerswitcher.ol-forceopen.ol-collapsed .ol-switchertopdiv,.ol-layerswitcher.ol-forceopen.ol-collapsed .ol-switcherbottomdiv{display:block}.ol-control.ol-layerswitcher .ol-switchertopdiv,.ol-control.ol-layerswitcher .ol-switcherbottomdiv{z-index:2;opacity:1;cursor:pointer;box-sizing:border-box;background:#fff;border-top:2px solid #0000;border-bottom:2px solid #369;height:45px;margin:0 2px;position:absolute;top:0;left:0;right:0}.ol-control.ol-layerswitcher .ol-switcherbottomdiv{border-top:2px solid #369;border-bottom:2px solid #0000;height:2em;top:auto;bottom:0}.ol-control.ol-layerswitcher .ol-switchertopdiv:before,.ol-control.ol-layerswitcher .ol-switcherbottomdiv:before{content:"";opacity:.8;border:10px solid #0000;width:0;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-layerswitcher .ol-switchertopdiv:hover:before,.ol-control.ol-layerswitcher .ol-switcherbottomdiv:hover:before{opacity:1}.ol-control.ol-layerswitcher .ol-switchertopdiv:before{border-top:0;border-bottom-color:#369}.ol-control.ol-layerswitcher .ol-switcherbottomdiv:before{border-top-color:#369;border-bottom:0}.ol-control.ol-layerswitcher .panel-container{clear:both;background-color:#fff;border-radius:0 0 2px 2px;padding:.5em .5em 0;display:block}.ol-layerswitcher .panel{margin:0;padding:0;font-family:Tahoma,Geneva,sans-serif;font-size:.9em;list-style:none;transition:top .3s;position:relative;top:0;overflow:hidden}.ol-layerswitcher .panel ul{clear:both;padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher input[type=radio],.ol-layerswitcher input[type=checkbox]{opacity:0;width:0;height:0;position:absolute}.ol-layerswitcher .panel li{-weblit-transition:-webkit-transform .2s linear;clear:both;box-sizing:border-box;border:1px solid #0000;transition:transform .2s linear;display:block}.ol-layerswitcher .panel li.ol-layer-select{background-color:#003c8833;margin:0 -.5em;padding:0 .5em}.ol-layerswitcher .panel li.drag{opacity:.5;transform:scale(.8)}.ol-dragover{opacity:.8;background:#33669980}.ol-layerswitcher .panel li.forbidden,.forbidden .ol-layerswitcher-buttons div,.forbidden .layerswitcher-opacity div{background:#ff000080;color:red!important}.ol-layerswitcher.drag,.ol-layerswitcher.drag *{cursor:not-allowed!important;cursor:no-drop!important}.ol-layerswitcher.drag .panel li.dropover,.ol-layerswitcher.drag .panel li.dropover *{cursor:pointer!important;cursor:n-resize!important;cursor:ns-resize!important;cursor:-webkit-grab!important;cursor:grab!important;cursor:-webkit-grabbing!important;cursor:grabbing!important}.ol-layerswitcher .panel li.dropover{background:#33669980}.ol-layerswitcher .panel li label{white-space:nowrap;text-overflow:ellipsis;max-width:12em;height:1.4em;padding:0 0 0 1.7em;display:inline-block;position:relative;overflow:hidden}.ol-layerswitcher .panel li label span{text-overflow:ellipsis;width:100%;height:100%;padding-right:.2em;display:inline-block;overflow:hidden}.ol-layerswitcher [type=radio]+label:before,.ol-layerswitcher [type=checkbox]+label:before,.ol-layerswitcher [type=radio]:checked+label:after,.ol-layerswitcher [type=checkbox]:checked+label:after{content:"";box-sizing:border-box;background:#fff;border:2px solid #369;width:1.2em;height:1.2em;position:absolute;top:.1em;left:.1em}.ol-layerswitcher li:has(>div.li-content>.ol-visibility:focus){border-color:#369;box-shadow:inset 0 0 0 1px #369}.ol-layerswitcher [type=radio]+label:before,.ol-layerswitcher [type=radio]+label:after{border-radius:50%}.ol-layerswitcher [type=radio]:checked+label:after{background:#369;width:.6em;height:.6em;margin:.3em}.ol-layerswitcher [type=checkbox]:checked+label:after{background:0 0;border:3px solid #369;border-width:0 3px 3px 0;width:.7em;height:1em;top:-.05em;left:.55em;transform:rotate(45deg);box-shadow:1px 0 1px 1px #fff}.ol-layerswitcher .panel li.ol-layer-hidden{opacity:.6}.ol-layerswitcher.ol-collapsed .panel-container{display:none}.ol-layerswitcher.ol-forceopen .panel-container{display:block}.ol-control.ol-layerswitcher .ol-counter{z-index:22;text-align:left;font-size:.65em;line-height:1.5em;display:none;position:absolute;top:0;right:.3em}.ol-control.ol-layerswitcher.ol-counter .ol-counter{display:block}.ol-control.ol-layer-shop .ol-counter{text-align:center;background:#fff;border-radius:50%;width:1.5em;line-height:1.5em;transform:translate(50%,-50%);box-shadow:.5px .5px 2px}.ol-layerswitcher-image>button,.ol-layerswitcher>button{float:right;z-index:10;background-color:#fff;font-size:1.7em;position:relative}.ol-touch .ol-layerswitcher-image>button,.ol-touch .ol-layerswitcher>button{font-size:2.5em}.ol-layerswitcher-image>button:before,.ol-layerswitcher-image>button:after,.ol-layerswitcher>button:before,.ol-layerswitcher>button:after{content:"";border-radius:.15em;width:.75em;height:.75em;position:absolute;transform:scaleY(.8)rotate(45deg)}.ol-layerswitcher-image>button:before,.ol-layerswitcher>button:before{background:#e2e4e1;top:.32em;left:.34em;box-shadow:.1em .1em #325158}.ol-layerswitcher-image>button:after,.ol-layerswitcher>button:after{background:#83bcc5 radial-gradient(circle at .85em .6em,#70b3be 0 .65em,#83bcc5 .65em);top:.22em;left:.34em}.ol-layerswitcher-buttons{float:right;text-align:right;display:block}.ol-layerswitcher-buttons>div{cursor:pointer;text-align:center;vertical-align:middle;color:#fff;background:#369;width:1em;height:1em;margin:2px;line-height:1em;display:inline-block;position:relative}.ol-layerswitcher .panel li>div{display:inline-block;position:relative}.ol-layerswitcher .ol-separator{width:0;height:0;margin:0;padding:0;display:block}.ol-layerswitcher .layerup{float:right;opacity:.5;cursor:move;cursor:ns-resize;background-color:#369;height:2.5em}.ol-layerswitcher .layerup:before,.ol-layerswitcher .layerup:after{content:"";border:.4em solid #0000;border-top-color:#fff;border-bottom:0 solid #fff;width:0;height:0;position:absolute;bottom:3px;left:.1em}.ol-layerswitcher .layerup:after{border-width:0 .4em .4em;top:3px;bottom:auto}.ol-layerswitcher .layerInfo{background:#369;border-radius:100%}.ol-layerswitcher .layerInfo:before{color:#fff;content:"i";text-align:center;width:1.25em;font-size:.8em;font-weight:700;display:block;position:absolute;top:0;left:0}.ol-layerswitcher .layerTrash{background:#369}.ol-layerswitcher .layerTrash:before{color:#fff;content:"×";text-align:center;margin:-.5em 0;font-size:1em;line-height:1em;position:absolute;top:50%;left:0;right:0}.ol-layerswitcher .layerExtent{background:#369}.ol-layerswitcher .layerExtent:before{content:"";border-bottom:1px solid #fff;border-right:1px solid #fff;display:block;position:absolute;inset:6px 2px 3px 6px}.ol-layerswitcher .layerExtent:after{content:"";border-top:1px solid #fff;border-left:1px solid #fff;display:block;position:absolute;inset:3px 6px 6px 2px}.ol-layerswitcher .expend-layers,.ol-layerswitcher .collapse-layers{background-color:#0000;margin:0 2px}.ol-layerswitcher .expend-layers:before,.ol-layerswitcher .collapse-layers:before{content:"";background:#369;width:100%;height:4px;margin-top:-2px;position:absolute;top:50%;left:0}.ol-layerswitcher .expend-layers:after{content:"";background:#369;width:4px;height:100%;margin-left:-2px;position:absolute;top:0;left:50%}.ol-layerswitcher .layerswitcher-opacity{box-sizing:border-box;background:#69c;cursor:pointer;background:linear-gradient(90deg,#003c8800,#003c8899);border:1px solid #369;border-radius:3px;width:120px;height:3px;margin:5px 1em 10px 7px;position:relative;box-shadow:1px 1px 1px #00000080}.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor,.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor:before{z-index:1;background:#003c8880;border-radius:50%;width:20px;height:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor:before{content:"";width:50%;height:50%;position:absolute}.ol-touch .ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor{width:26px;height:26px}.ol-layerswitcher .layerswitcher-opacity-label{font-size:.8em;display:none;position:absolute;bottom:5px;right:-2.5em}.ol-layerswitcher .layerswitcher-opacity-label:after{content:"%"}.ol-layerswitcher .layerswitcher-progress{width:120px;margin:-4px 1em 2px 7px;display:block}.ol-layerswitcher .layerswitcher-progress div{background-color:#369;width:0;height:2px;display:block}.ol-control.ol-layerswitcher-image{text-align:left;transition:all .2s;position:absolute;top:1em;right:.5em}.ol-control.ol-layerswitcher-image.ol-collapsed{transition:none;top:3em}.ol-layerswitcher-image .panel{margin:0;padding:.25em;list-style:none;overflow:hidden}.ol-layerswitcher-image .panel ul{padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher-image.ol-collapsed .panel{display:none}.ol-layerswitcher-image.ol-forceopen .panel{clear:both;display:block}.ol-layerswitcher-image button{float:right;display:none}.ol-layerswitcher-image.ol-collapsed button{display:block;position:relative}.ol-layerswitcher-image li{vertical-align:middle;cursor:pointer;background-color:#fff;border:3px solid #0000;border-radius:4px;width:64px;height:64px;margin:2px;display:inline-block;position:relative;overflow:hidden;box-shadow:1px 1px 4px #00000080}.ol-layerswitcher-image li.ol-layer-hidden{opacity:.5;border-color:#555}.ol-layerswitcher-image li.ol-header{display:none}.ol-layerswitcher-image li img{max-width:100%;position:absolute}.ol-layerswitcher-image li.select,.ol-layerswitcher-image li.ol-visible{border:3px solid red}.ol-layerswitcher-image li p{display:none}.ol-layerswitcher-image li:hover p{color:#fff;text-align:center;background-color:#00000080;height:1.2em;margin:0;font-family:Verdana,Geneva,sans-serif;font-size:.8em;display:block;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.ol-control.ol-legend{z-index:1;background-color:#fff9;max-width:90%;max-height:90%;bottom:.5em;left:.5em;overflow:hidden auto}.ol-control.ol-legend:hover{background-color:#fffc}.ol-control.ol-legend.ol-empty,.ol-control.ol-legend.ol-collapsed{overflow:hidden}.ol-control.ol-legend button{display:none;position:relative}.ol-control.ol-legend.ol-empty button,.ol-control.ol-legend.ol-collapsed button{display:block}.ol-control.ol-legend.ol-uncollapsible button{display:none}.ol-control.ol-legend>ul,.ol-control.ol-legend>canvas{margin:2px}.ol-control.ol-legend button.ol-closebox{cursor:pointer;z-index:1;background:0 0;display:block;position:absolute;top:0;right:0}.ol-control.ol-legend.ol-empty button.ol-closebox,.ol-control.ol-legend.ol-uncollapsible button.ol-closebox,.ol-control.ol-legend.ol-collapsed button.ol-closebox{display:none}.ol-control.ol-legend button.ol-closebox:before{content:"×";color:#003c8880;background:0 0;font-size:1.3em}.ol-control.ol-legend button.ol-closebox:hover:before{color:#003c88}.ol-control.ol-legend .ol-legendImg{display:block}.ol-control.ol-legend.ol-empty .ol-legendImg,.ol-control.ol-legend.ol-collapsed .ol-legendImg{display:none}.ol-control.ol-legend.ol-uncollapsible .ol-legendImg{display:block}.ol-control.ol-legend>button:first-child:before,.ol-control.ol-legend>button:first-child:after{content:"";background-color:currentColor;width:.2em;height:.2em;position:absolute;top:.25em;left:.2em;box-shadow:0 .35em,0 .7em}.ol-control.ol-legend button:first-child:after{width:.6em;height:.15em;top:.27em;left:.55em}ul.ol-legend{width:100%;margin:0;padding:0;list-style:none;position:absolute;top:0;left:0}.ol-control.ol-legend.ol-empty ul,.ol-control.ol-legend.ol-collapsed ul{display:none}.ol-control.ol-legend.ol-uncollapsible ul{display:block}ul.ol-legend li.ol-title{text-align:center;font-weight:700}ul.ol-legend li.ol-title>div:first-child{width:0!important}ul.ol-legend li{white-space:nowrap;padding:0;overflow:hidden}ul.ol-legend li div{vertical-align:top;display:inline-block}.ol-control.ol-legend .ol-legend{display:inline-block}.ol-control.ol-legend.ol-empty .ol-legend,.ol-control.ol-legend.ol-collapsed .ol-legend{display:none}.ol-control.ol-legend.ol-empty button{opacity:.4}.ol-control.ol-mapzone{text-align:left;box-sizing:border-box;max-height:calc(100% - 6em);position:absolute;top:.5em;right:.5em;overflow:hidden}.ol-control.ol-mapzone.ol-collapsed{top:3em}.ol-control.ol-mapzone button{float:right;margin-top:2.5em;position:relative}.ol-touch .ol-control.ol-mapzone button{margin-top:1.67em}.ol-control.ol-mapzone.ol-collapsed button{margin-top:0}.ol-control.ol-mapzone button i{border:.1em solid;border-radius:50%;width:.9em;height:.9em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-control.ol-mapzone button i:before{content:"";background-color:currentColor;border-radius:50%;width:.4em;height:.4em;position:absolute;top:.3em;left:.5em;box-shadow:.05em .3em 0 -.051em,-.05em -.35em 0 -.1em,-.5em -.35em 0 0,-.65em .1em 0 -.03em,-.65em -.05em 0 -.05em}.ol-mapzone>div{width:5em;height:5em;margin:0 .2em 0 0;display:inline-block;position:relative}.ol-mapzone>div:focus{box-shadow:0 0 0 .2em #369}.ol-control.ol-mapzone.ol-collapsed>div{display:none}.ol-mapzone>div p{color:#fff;text-align:center;transform-origin:0 0;cursor:default;width:160%;margin:0;font-family:Lucida Grande,Verdana,Geneva,Lucida,Arial,Helvetica,sans-serif;font-weight:700;position:absolute;bottom:0;overflow:hidden;transform:scaleX(.625)}.ol-notification{background:0 0;border:0;width:150%;margin:0;padding:0;bottom:0}.ol-notification>div,.ol-notification>div:hover{color:#fff;text-align:center;box-sizing:border-box;opacity:1;background-color:#000c;border-radius:4px 4px 0 0;min-width:5em;max-width:calc(66% - 4em);min-height:1em;max-height:5em;padding:.2em .5em;transition:all .3s;position:absolute;bottom:0;left:33.33%;transform:translate(-50%)}.ol-notification.ol-collapsed>div{opacity:0;bottom:-5em}.ol-notification a{color:#9cf;cursor:pointer}.ol-notification .ol-close,.ol-notification .ol-close:hover{padding-right:1.5em}.ol-notification .closeBox{position:absolute;top:0;right:.3em}.ol-notification .closeBox:before{content:"×"}.ol-overlay{color:#fff;box-sizing:border-box;z-index:1;opacity:0;cursor:default;pointer-events:none;z-index:9;background-color:#0006;width:100%;height:100%;padding:1em;transition:all .5s;display:none;position:absolute;top:0;left:0;overflow:hidden}.ol-overlay.slide-up{transform:translateY(100%)}.ol-overlay.slide-down{transform:translateY(-100%)}.ol-overlay.slide-left{transform:translate(-100%)}.ol-overlay.slide-right{transform:translate(100%)}.ol-overlay.zoom{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)}.ol-overlay.zoomout{transform:scale(3)}.ol-overlay.zoomrotate{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)rotate(360deg)}.ol-overlay.stretch{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scaleX(0)}.ol-overlay.stretchy{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scaleY(0)}.ol-overlay.wipe{opacity:1}.ol-overlay.flip{transform:perspective(600px)rotateY(180deg)}.ol-overlay.card{opacity:.5;transform:translate(-80%,100%)rotate(-.5turn)}.ol-overlay.book{transform-origin:10%;transform:perspective(600px)rotateY(-180deg)scaleX(.6)}.ol-overlay.book.visible{transform-origin:10%}.ol-overlay.ol-visible{opacity:1;pointer-events:all;inset:0;transform:none}.ol-overlay .ol-closebox{cursor:pointer;z-index:1;width:1em;height:1em;position:absolute;top:1em;right:1em}.ol-overlay .ol-closebox:before{content:"❌";text-align:center;vertical-align:middle;display:block}.ol-overlay .ol-fullscreen-image{position:absolute;inset:0}.ol-overlay .ol-fullscreen-image img{box-sizing:border-box;max-width:100%;max-height:100%;padding:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlay .ol-fullscreen-image.ol-has-title img{padding-bottom:3em}.ol-overlay .ol-fullscreen-image p{text-align:center;background-color:#00000080;margin:0;padding:.5em;position:absolute;bottom:0;left:0;right:0}.ol-control.ol-overview{text-align:left;position:absolute;bottom:.5em;left:.5em}.ol-control.ol-overview .panel{cursor:pointer;background-color:#fff;border:1px solid #369;width:150px;height:150px;margin:2px;display:block}.ol-overview:not(.ol-collapsed) button{z-index:2;position:absolute;bottom:2px;left:2px}.ol-control.ol-overview.ol-collapsed .panel{display:none}.ol-overview.ol-collapsed button:before{content:"»"}.ol-overview button:before{content:"«"}.ol-control-right.ol-overview{left:auto;right:.5em}.ol-control-right.ol-overview:not(.ol-collapsed) button{left:auto;right:2px}.ol-control-right.ol-overview.ol-collapsed button:before{content:"«"}.ol-control-right.ol-overview button:before{content:"»"}.ol-control-top.ol-overview{top:5em;bottom:auto}.ol-control-top.ol-overview:not(.ol-collapsed) button{top:2px;bottom:auto}.ol-permalink{position:absolute;top:.5em;right:2.5em}.ol-touch .ol-permalink{right:3em}.ol-permalink button i{width:1em;height:1em;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-permalink button i:before{content:"↗";box-sizing:border-box;border:0 solid;border-width:1px 0 0 1px;width:.3em;height:1em;padding:0 .2em;position:absolute;top:0;left:0}.ol-permalink button i:after{content:"";box-sizing:border-box;border:1px solid;border-width:0 1px 1px 0;width:1em;height:.3em;padding:.2em;position:absolute;bottom:0;right:0}.ol-control.ol-print{top:.5em;left:3em}.ol-control.ol-print button:before{content:"";width:.9em;height:.35em;position:absolute;top:50%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 .1em,inset .55em 0,0 .2em 0 -.1em}.ol-control.ol-print button:after{content:"";width:.7em;height:.6em;position:absolute;top:25%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 .15em}.ol-ext-print-dialog{width:100%;height:100%}.ol-ext-print-dialog>form .ol-closebox{z-index:1;color:#999;left:16.5em;right:auto}.ol-ext-print-dialog .ol-content[data-status=printing]{opacity:.5}.ol-ext-print-dialog .ol-content .ol-error{color:#ff0;text-align:center;background:#b00;margin:0 -1em;padding:1em .5em;font-weight:700;display:none}.ol-ext-print-dialog .ol-content[data-status=error] .ol-error{display:block}.ol-ext-print-dialog>form,.ol-ext-print-dialog.ol-visible>form{max-width:100%;max-height:100%;width:unset;background-color:#eee;padding:0;transition:none;inset:1em;transform:none}.ol-ext-print-dialog .ol-print-map{width:calc(100% - 18em);position:absolute;top:0;bottom:0;right:0;overflow:hidden}.ol-ext-print-dialog .ol-print-map .ol-page{box-sizing:border-box;background:#fff;position:absolute;top:50%;left:50%}.ol-ext-print-dialog .ol-print-map .ol-page.margin{box-sizing:content-box}.ol-ext-print-dialog .ol-map{width:100%;height:100%}.ol-ext-print-dialog .ol-print-map .ol-control{display:none!important}.ol-ext-print-dialog .ol-print-param{box-sizing:border-box;background-color:#fff;width:18em;padding:1em;position:absolute;top:0;bottom:0;left:0;overflow-x:hidden}.ol-ext-print-dialog .ol-print-param h2{color:#003c88b3;font-size:1.1em;display:block}.ol-ext-print-dialog .ol-print-param ul{padding:0;list-style:none}.ol-ext-print-dialog .ol-print-param li{margin:.5em 0;font-size:.9em;position:relative}.ol-ext-print-dialog .ol-print-param li.hidden{display:none}.ol-ext-print-dialog .ol-print-param label{vertical-align:middle;width:8em;display:inline-block}.ol-ext-print-dialog select{vertical-align:middle;outline:none}.ol-ext-print-dialog .ol-orientation{text-align:center}.ol-ext-print-dialog .ol-orientation label{cursor:pointer;width:7em;position:relative}.ol-ext-print-dialog .ol-orientation input{opacity:0;width:0;height:0;position:absolute}.ol-ext-print-dialog .ol-orientation span{width:80%;padding:3.5em 0 .2em;display:block;position:relative}.ol-ext-print-dialog .ol-orientation span:before{content:"";color:#333;opacity:.5;background-color:currentColor;border:1px solid;border-radius:0 1em 0 0;width:2em;height:2.6em;position:absolute;bottom:1.5em;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:inset 1.3em -1.91em #ddd}.ol-ext-print-dialog .ol-orientation .landscape span:before{width:2.6em;height:2em;margin:.2em 0;box-shadow:inset 1.91em -1.3em #ddd}.ol-ext-print-dialog .ol-orientation input:checked+span{opacity:1;box-shadow:0 0 .2em #00000080}.ol-ext-print-dialog .ol-ext-toggle-switch span{position:absolute;top:50%;right:-2em;transform:translateY(-50%)}.ol-print-title input[type=text]{width:calc(100% - 6em);margin-top:.5em;margin-left:6em}.ol-ext-print-dialog .ol-size option:first-child{font-style:italic}.ol-ext-print-dialog .ol-saveas,.ol-ext-print-dialog .ol-savelegend{text-align:center}.ol-ext-print-dialog .ol-saveas select,.ol-ext-print-dialog .ol-savelegend select{color:#fff;background-color:#003c88b3;border:0;max-width:12em;margin:1em 0 0;padding:.5em;font-size:1em;font-weight:700}.ol-ext-print-dialog .ol-saveas select option,.ol-ext-print-dialog .ol-savelegend select option{color:#666;background-color:#fff}.ol-ext-print-dialog .ol-savelegend select{margin-top:0}.ol-ext-print-dialog .ol-ext-buttons{text-align:right;border-top:1px solid #ccc;margin:0 -1em;padding:.8em .5em}.ol-ext-print-dialog button{color:#333;background:0 0;border:1px solid #999;margin:0 .2em;padding:.3em 1em;font-size:1em}.ol-ext-print-dialog button[type=submit]{color:#fff;background-color:#003c88b3;font-weight:700}.ol-ext-print-dialog .ol-clipboard-copy{pointer-events:none;color:#fff;opacity:0;background-color:#00000080;border-radius:1em;width:fit-content;padding:.5em 1em;transition:all;position:absolute;top:0;left:50%;transform:translate(-50%)}.ol-ext-print-dialog .ol-clipboard-copy.visible{animation:1s ol-clipboard-copy}.ol-ext-print-dialog .ol-print-map .ol-control.ol-canvas-control,.ol-ext-print-dialog .ol-print-map .ol-control.ol-print-compass{display:block!important}.ol-ext-print-dialog .ol-print-map .ol-control.olext-print-compass{width:60px;height:60px;margin:20px;top:0;right:0}.ol-ext-print-dialog .ol-orientation input:focus-visible+span,.ol-ext-print-dialog select:focus-visible{outline:2px solid #000}@keyframes ol-clipboard-copy{0%{opacity:0;top:0}80%{opacity:1;top:-3em}to{opacity:0;top:-3em}}@media print{body.ol-print-document{margin:0!important;padding:0!important}body.ol-print-document>*{display:none!important}body.ol-print-document>.ol-ext-print-dialog{display:block!important}body.ol-print-document>.ol-ext-print-dialog .ol-content{max-height:unset!important;max-width:unset!important;width:unset!important;height:unset!important}.ol-ext-print-dialog>form,.ol-ext-print-dialog{position:unset;-webkit-box-shadow:none;box-shadow:none;border:0;background:0 0!important}.ol-ext-print-dialog>form>*,.ol-ext-print-dialog .ol-print-param{background:0 0;display:none!important}.ol-ext-print-dialog .ol-content{background:0 0;border:0;display:block!important}.ol-ext-print-dialog .ol-print-map{position:unset;background:0 0;width:auto;overflow:visible}.ol-ext-print-dialog .ol-print-map .ol-page{position:unset;-webkit-box-shadow:none!important;box-shadow:none!important;transform:none!important}}@media (width<=25em){.ol-ext-print-dialog .ol-print-param{width:13em}.ol-ext-print-dialog .ol-print-map{width:calc(100% - 13em)}.ol-ext-print-dialog .ol-print-param .ol-print-title input[type=text]{width:100%;margin:0}}.ol-ext-print-dialog2x .ol-map,.ol-ext-print-dialog2x .ol-map2{width:100%;height:50%}.ol-ext-print-dialog2x[data-orientation=landscape] .ol-map,.ol-ext-print-dialog2x[data-orientation=landscape] .ol-map2{width:50%;height:100%;display:inline-block}.ol-ext-print-dialog2x[data-clip-map] .ol-map,.ol-ext-print-dialog2x[data-swipe-orientation] .ol-map{width:100%!important;height:100%!important}.ol-ext-print-dialog2x[data-clip-map] .ol-map2,.ol-ext-print-dialog2x[data-swipe-orientation] .ol-map2{top:-100%;left:0;width:100%!important;height:100%!important;position:relative!important}.ol-profile{-webkit-user-select:none;user-select:none;position:relative}.ol-control.ol-profile{text-align:right;position:absolute;top:.5em;right:3em;overflow:hidden}.ol-profile .ol-zoom-out{cursor:pointer;border:1px solid #000;border-radius:2px;width:1em;height:1em;padding:0;position:absolute;top:10px;right:10px}.ol-profile .ol-zoom-out:before{content:"";background:currentColor;width:60%;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-profile .ol-inner{padding:.5em;font-size:.8em;position:relative}.ol-control.ol-profile .ol-inner{background-color:#ffffffb3;margin:2.3em 2px 2px;display:block}.ol-control.ol-profile.ol-collapsed .ol-inner{display:none}.ol-profile canvas{display:block}.ol-profile button{display:block;position:absolute;right:0;overflow:hidden}.ol-profile button i{width:1em;height:1em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-profile button i:before,.ol-profile button i:after{content:"";background-color:currentColor;width:1em;height:.9em;display:block;position:absolute;transform:scaleX(.8)translate(-.25em,.5em)rotate(45deg)}.ol-profile button i:after{transform:scaleX(.8)translate(.35em,.7em)rotate(45deg)}.ol-profile.ol-collapsed button{position:static}.ol-profile .ol-profilebar,.ol-profile .ol-profilecursor{pointer-events:none;width:1px;display:none;position:absolute}.ol-profile .ol-profilecursor{width:0;height:0}.ol-profile .ol-profilecursor:before{content:"";pointer-events:none;width:5px;height:5px;margin:-2px;display:block}.ol-profile .ol-profilebar,.ol-profile .ol-profilecursor:before{background:red}.ol-profile table{text-align:center;border-collapse:collapse;width:100%;margin-top:.5em}.ol-profile table tr{border-top:1px solid #00000040;margin:.1em 0}.ol-profile table td{padding:2px}.ol-profile table span{display:block}.ol-profile table span.elevationGain,.ol-profile table span.elevationLoss{display:inline-block}.ol-profilepopup{white-space:nowrap;background-color:#ffffff80;margin:.5em;padding:0 .5em;position:absolute;top:-1em}.ol-profilepopup.ol-left{right:0}.ol-profile table .track-info{display:table-row}.ol-profile table .point-info,.ol-profile .over table .track-info{display:none}.ol-profile .over table .point-info{display:table-row}.ol-profile p{text-align:center;margin:0}.ol-control.ol-progress-bar{background-color:#0000;padding:0;position:absolute;inset:0;pointer-events:none!important}.ol-control.ol-progress-bar>.ol-bar{box-sizing:border-box;background-color:#003c8880;width:0;height:.5em;transition:width .2s;position:absolute;bottom:0;left:0}.ol-progress-bar>.ol-waiting{display:none}.ol-viewport .ol-control.ol-progress-bar>.ol-waiting{color:#fff;font-size:2em;animation:1s linear infinite ol-progress-bar-blink;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes ol-progress-bar-blink{0%,30%{visibility:hidden}to{visibility:visible}}.ol-control.ol-routing{max-height:90%;top:.5em;left:3em;overflow-y:auto}.ol-touch .ol-control.ol-routing{left:3.5em}.ol-control.ol-routing.ol-searching{opacity:.5}.ol-control.ol-routing .ol-car,.ol-control.ol-routing>button{position:relative}.ol-control.ol-routing .ol-car:after,.ol-control.ol-routing>button:after{content:"";clip:rect(0 1em .5em -1em);border-radius:40% 50% 0 0/50% 70% 0 0;width:.78em;height:.6em;position:absolute;top:.35em;left:.4em;box-shadow:inset 0 0 0 .065em,-.35em .14em 0 -.09em,inset 0 -.37em,inset -.14em .005em}.ol-control.ol-routing .ol-car:before,.ol-control.ol-routing>button:before{content:"";border-radius:50%;width:.28em;height:.28em;position:absolute;top:.73em;left:.2em;box-shadow:inset 0 0 0 1em,.65em 0}.ol-control.ol-routing .ol-pedestrian:after{content:"";border-top:.2em solid #0000;width:.3em;height:.4em;position:absolute;top:.25em;left:50%;transform:translate(-50%);box-shadow:inset .3em 0,.1em .5em 0 -.1em,-.1em .5em 0 -.1em,.25em .1em 0 -.1em,-.25em .1em 0 -.1em}.ol-control.ol-routing .ol-pedestrian:before{content:"";background-color:currentColor;border-radius:50%;width:.3em;height:.3em;position:absolute;top:.1em;left:50%;transform:translate(-50%)}.ol-control.ol-routing .content{margin:.5em}.ol-control.ol-routing.ol-collapsed .content,.ol-routing .ol-search.ol-collapsed ul,.ol-routing .ol-search ul .copy{display:none}.ol-routing .content .search-input>div>*{vertical-align:top;display:inline-block}.ol-routing .ol-result ul{list-style:none;display:block}.ol-routing .ol-result li{min-height:1.65em;position:relative}.ol-routing .ol-result li i{font-size:.8em;font-weight:700;display:block}.ol-routing .ol-result li:before{content:"";transform-origin:50% 125%;border:.4em solid #0000;border-top-width:.6em;border-bottom:.6em solid #369;position:absolute;top:-.8em;left:-1.75em;box-shadow:0 .65em 0 -.25em #369}.ol-routing .ol-result li:after{content:"";background:#369;border-radius:.1em;width:.25em;height:.6em;position:absolute;top:.6em;left:-1.5em}.ol-routing .ol-result li.R:before{transform:rotate(90deg)}.ol-routing .ol-result li.FR:before{transform:rotate(45deg)}.ol-routing .ol-result li.L:before{transform:rotate(-90deg)}.ol-routing .ol-result li.FL:before{transform:rotate(-45deg)}.ol-routing .content>i{vertical-align:middle;margin:0 .3em 0 .1em;font-style:normal}.ol-routing .ol-button,.ol-routing .ol-button:focus,.ol-routing .ol-pedestrian,.ol-routing .ol-car{color:#003c88;opacity:.5;vertical-align:middle;cursor:pointer;background-color:#0000;outline:none;width:1.4em;height:1.4em;margin:0 .1em;font-size:1.1em;display:inline-block;position:relative}.ol-routing .ol-constraints{display:block}.ol-routing .ol-button:hover,.ol-routing .ol-button.selected,.ol-routing i.selected{opacity:1;background:0 0}.ol-routing .ol-method{display:block}.ol-control.ol-routing{background-color:#ffffff40}.ol-control.ol-routing:hover{background-color:#ffffffbf}.search-input>div>button:before{content:"±"}.ol-viewport .ol-scale{text-align:center;transform-origin:0 0;background-color:#ffffffbf;bottom:2.5em;left:.5em;transform:scaleX(.8)}.ol-viewport .ol-scale input{text-align:center;background:0 0;border:0;width:8em}.ol-search{top:.5em;left:3em}.ol-touch .ol-search{left:3.5em}.ol-search button{float:left;top:2px;left:2px}.ol-control.ol-search>button:before{content:"";box-sizing:border-box;background-color:#0000;border:.12em solid;border-radius:100%;width:.7em;height:.7em;position:absolute;top:.35em;left:.35em}.ol-control.ol-search>button:after{content:"";background-color:currentColor;border-radius:.05em;width:.45em;height:.15em;position:absolute;top:1.1em;left:.95em;transform:rotate(45deg);box-shadow:-.18em 0 0 -.03em}.ol-search button.ol-revers{float:none;vertical-align:bottom;background-image:none;display:inline-block;position:relative;top:0;left:0}.ol-search.ol-revers button.ol-revers{background-color:#00883c80}.ol-control.ol-search.ol-collapsed button.ol-revers{display:none}.ol-search button.ol-revers:before{content:"";box-sizing:border-box;border:.1em solid;border-radius:50%;width:.55em;height:.55em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-search button.ol-revers:after{content:"";background-color:#0000;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.35em 0,0 .35em,-.35em 0,0 -.35em}.ol-search input{box-sizing:border-box;border:0;height:1.375em;margin:1px 1px 1px 2px;padding-left:.3em;font-size:1.14em;transition:all .1s;display:inline-block}.ol-touch .ol-search input,.ol-touch .ol-search ul{font-size:1.5em}.ol-search.ol-revers>ul,.ol-control.ol-search.ol-collapsed>*{display:none}.ol-control.ol-search.ol-collapsed>button{display:block}.ol-search ul{clear:both;cursor:pointer;z-index:1;background:#fff;max-width:17em;margin:0;padding:0;list-style:none;display:block;overflow-x:hidden}.ol-search ul li{white-space:nowrap;text-overflow:ellipsis;padding:.1em .5em;overflow:hidden}.ol-search ul li.select,.ol-search ul li:hover{color:#fff;background-color:#003c8880}.ol-search ul li img{float:left;max-height:2em}.ol-search li.copy{color:#fff;background:#00000080}.ol-search li.copy a{color:#fff;text-decoration:none}.ol-search.searching:before{content:"";z-index:2;background:red;height:3px;animation:.5s linear infinite alternate ol-pulse;position:absolute;top:1.6em;left:0}@keyframes ol-pulse{0%{left:0;right:95%}50%{left:30%;right:30%}to{left:95%;right:0}}.ol-control.ol-search.IGNF-parcelle{background-color:#ffffffb3;padding-bottom:.2em}.ol-search.IGNF-parcelle input{width:14.5em}.ol-search.IGNF-parcelle input:read-only{opacity:.8;background:#ccc}.ol-search.IGNF-parcelle.ol-collapsed-list>ul.autocomplete{display:none}.ol-search.IGNF-parcelle label{clear:both;display:block}.ol-search.IGNF-parcelle>div input{text-align:right}.ol-search.IGNF-parcelle>div input,.ol-search.IGNF-parcelle>div label{box-sizing:border-box;text-overflow:ellipsis;width:4em;margin:.1em;font-size:1em;display:inline-block;overflow:hidden}.ol-search.IGNF-parcelle>div label{letter-spacing:-.04em}.ol-search.IGNF-parcelle ul.autocomplete-page{text-align:center;width:100%;margin-top:.5em;display:none}.ol-search.IGNF-parcelle.ol-collapsed-list ul.autocomplete-parcelle,.ol-search.IGNF-parcelle.ol-collapsed-list ul.autocomplete-page{display:block}.ol-search.IGNF-parcelle.ol-collapsed ul.autocomplete-page,.ol-search.IGNF-parcelle.ol-collapsed ul.autocomplete-parcelle,.ol-search.IGNF-parcelle ul.autocomplete-parcelle{display:none}.ol-search.IGNF-parcelle ul.autocomplete-page li{color:#fff;background:#003c8880;border-radius:50%;width:1.3em;height:1.3em;margin:0 .1em;padding:.1em;display:inline-block}.ol-search.IGNF-parcelle ul.autocomplete-page li.selected{background:#003c88}.ol-searchgps input.search,.ol-searchcoord input.search{display:none}.ol-control.ol-searchgps>button:first-child,.ol-control.ol-searchcoord>button:first-child{background-image:none}.ol-control.ol-searchgps>button:first-child:before,.ol-control.ol-searchcoord>button:first-child:before{content:"x/y";position:unset;border:unset;border-radius:0;width:auto;height:auto;display:block;transform:scaleX(.8)}.ol-control.ol-searchgps>button:first-child:after,.ol-control.ol-searchcoord>button:first-child:after{content:unset}.ol-control.ol-searchgps .ol-latitude,.ol-control.ol-searchgps .ol-longitude,.ol-control.ol-searchcoord .ol-latitude,.ol-control.ol-searchcoord .ol-longitude{clear:both}.ol-control.ol-searchgps .ol-latitude label,.ol-control.ol-searchgps .ol-longitude label,.ol-control.ol-searchcoord .ol-latitude label,.ol-control.ol-searchcoord .ol-longitude label{text-align:right;transform-origin:0 0;width:5.5em;margin:0 -.8em 0 0;display:inline-block;transform:scaleX(.8)}.ol-control.ol-searchcoord .ol-latitude label,.ol-control.ol-searchcoord .ol-longitude label{width:2em;margin:0}.ol-control.ol-searchgps .ol-latitude input,.ol-control.ol-searchgps .ol-longitude input{max-width:10em}.ol-control.ol-searchgps .ol-ext-toggle-switch{cursor:pointer;float:right;margin:.5em;font-size:.9em}.ol-searchgps .ol-decimal{margin-right:.7em;display:inline-block}.ol-searchgps .ol-dms,.ol-searchgps.ol-dms .ol-decimal{text-align:right;width:3em;display:none}.ol-searchgps.ol-dms .ol-dms{display:inline-block}.ol-searchgps span.ol-dms{text-align:left;width:.5em}.ol-searchgps.ol-control.ol-collapsed button.ol-geoloc,.ol-searchgps.ol-control.ol-collapsed button.ol-centerloc,.ol-searchcoord.ol-control.ol-collapsed button.ol-centerloc,.ol-searchcoord.ol-control.ol-collapsed button.ol-geoloc{display:none}.ol-searchgps button.ol-geoloc,.ol-searchgps button.ol-centerloc,.ol-searchcoord button.ol-centerloc,.ol-searchcoord button.ol-geoloc{float:right;background-image:none;margin-right:3px;position:relative;top:0}.ol-searchgps button.ol-geoloc:before,.ol-searchcoord button.ol-geoloc:before{content:"";border:.1em solid;border-radius:50%;width:.6em;height:.6em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-searchgps button.ol-geoloc:after,.ol-searchcoord button.ol-geoloc:after{content:"";background-color:#0000;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.45em 0,-.45em 0,0 -.45em,0 .45em,.25em 0,-.25em 0,0 -.25em,0 .25em}.ol-searchgps button.ol-centerloc:before,.ol-searchcoord button.ol-centerloc:before{content:"📍";border:0;width:auto;height:auto;padding:0;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-searchgps button.ol-centerloc:after,.ol-searchcoord button.ol-centerloc:after{display:none}.ol-control.ol-select{background-color:#ffffff80;top:.5em;left:3em}.ol-control.ol-select:hover{background-color:#ffffffb3}.ol-touch .ol-control.ol-select{left:3.5em}.ol-control.ol-select>button:before{content:"A";box-sizing:content-box;text-align:center;background-color:#0000;border:.2em solid;border-radius:100%;width:1em;height:1em;font-size:.6em;font-weight:400;line-height:1em;position:absolute;top:.5em;left:.5em}.ol-control.ol-select>button:after{content:"";background-color:currentColor;border-radius:.05em;width:.45em;height:.15em;position:absolute;top:1.15em;left:1em;transform:rotate(45deg);box-shadow:-.18em 0 0 -.03em}.ol-select>div button{float:right;width:auto;height:1.2em;padding:0 .5em;font-weight:400;line-height:1.2em}.ol-select .ol-delete{vertical-align:middle;cursor:pointer;width:1.5em;height:1em;display:inline-block;position:relative}.ol-select .ol-delete:before{content:"×";text-align:center;width:100%;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-select input{font-size:1em}.ol-control.ol-select select{max-width:10em;font-size:1em}.ol-control.ol-select select option.ol-default{color:#999;font-style:italic}.ol-control.ol-select>div{margin:.25em;display:block}.ol-control.ol-select.ol-collapsed>div{display:none}.ol-control.ol-select.ol-select-check{max-width:20em}.ol-control.ol-select label.ol-ext-check{margin-right:1em}.ol-control.ol-select label.ol-ext-toggle-switch span{font-size:1.1em}.ol-select ul{margin:0;padding:0;list-style:none}.ol-control.ol-select input[type=search],.ol-control.ol-select input[type=text]{width:8em}.ol-select .ol-autocomplete{display:inline}.ol-select .ol-autocomplete ul{background:#fff;border:1px solid #999;min-width:10em;font-size:.85em;display:block;position:absolute}.ol-select .ol-autocomplete ul li{padding:0 .5em}.ol-select .ol-autocomplete ul li:hover{color:#fff;background:#003c8880}.ol-select ul.ol-hidden{display:none}.ol-select-multi li>div:hover,.ol-select-multi li>div.ol-control.ol-select{top:unset;left:unset;background:0 0;position:relative}.ol-select-multi li>div>button,.ol-select-multi li>div .ol-ok{display:none}.ol-select-multi li .ol-control.ol-select.ol-collapsed>div,.ol-select-multi li>div>div{display:block}.ol-control.ol-status{color:#fff;box-sizing:border-box;background:#0003;border-radius:0;width:100%;padding:.3em 3em;font-size:.9em;display:none;top:0;left:0;pointer-events:none!important}.ol-control.ol-status.ol-visible{display:initial}.ol-control.ol-status.ol-bottom{top:auto;bottom:0}.ol-control.ol-status.ol-left{width:auto;padding:.3em .5em .3em 3em;top:0;bottom:0}.ol-control.ol-status.ol-right{width:auto;padding:.3em 3em .3em .5em;inset:0 0 0 auto}.ol-control.ol-status.ol-center{top:50%;transform:translateY(-50%)}.ol-control.ol-storymap{background-color:#ffffff80;border-radius:.5em;max-width:35%;height:auto;position:absolute;top:.5em;bottom:.5em;left:.5em}.ol-storymap{height:100%;padding:0;position:relative;overflow:hidden}.ol-storymap>div{scroll-behavior:smooth;-webkit-user-select:none;user-select:none;height:100%;padding:0;position:relative;overflow:hidden}.ol-storymap>div.ol-move{scroll-behavior:unset}.ol-control.ol-storymap .chapter{padding:.5em;position:relative;overflow:hidden}.ol-control.ol-storymap .chapter:last-child{margin-bottom:100%}.ol-storymap .chapter{cursor:pointer;opacity:.4}.ol-storymap .chapter.ol-select{cursor:default;opacity:1;background-color:#fffc}.ol-storymap .ol-scroll-top,.ol-storymap .ol-scroll-next{color:#003c8880;text-align:center;cursor:pointer;min-height:1.7em;position:relative}.ol-storymap .ol-scroll-next span{padding-bottom:1.4em;display:block}.ol-storymap .ol-scroll-top span{padding-top:1.4em;display:block}.ol-storymap .ol-scroll-top:before,.ol-storymap .ol-scroll-next:before{content:"";pointer-events:none;border:.3em solid;border-color:#0000 currentColor currentColor #0000;border-radius:.3em;width:.8em;height:.8em;animation:.35s linear infinite alternate ol-bounce-bottom;display:block;position:absolute;left:50%;transform:translate(-50%)rotate(45deg)}.ol-storymap .ol-scroll-top:before{border-color:currentColor #0000 #0000 currentColor;animation:.35s linear infinite alternate ol-bounce-top}@keyframes ol-bounce-top{0%{top:-.2em}to{top:.5em}}@keyframes ol-bounce-bottom{0%{bottom:-.2em}to{bottom:.5em}}.ol-storymap img[data-title]{cursor:pointer}.ol-storymap.scrollLine,.ol-storymap.scrollBox{background-color:#0000;border-radius:0;max-width:40%;top:0;bottom:0}.ol-storymap.scrollLine .chapter,.ol-storymap.scrollBox .chapter{background-color:#fff;margin:100% 0}.ol-storymap.scrollLine .chapter:first-child,.ol-storymap.scrollBox .chapter:first-child{margin-top:3em}.ol-storymap.scrollLine .chapter.ol-select,.ol-storymap.scrollLine .chapter,.ol-storymap.scrollBox .chapter.ol-select,.ol-storymap.scrollBox .chapter{opacity:1}.ol-storymap.scrollLine .ol-scrolldiv,.ol-storymap.scrollBox .ol-scrolldiv{padding-right:30px}.ol-storymap.scrollLine:before,.ol-storymap.scrollBox:before{content:"";background-color:#fff;width:2px;height:100%;position:absolute;top:0;bottom:0;right:14px}.ol-storymap.scrollLine .ol-scroll,.ol-storymap.scrollBox .ol-scroll{width:1px;padding:0;transition:none;right:15px;overflow:visible;opacity:1!important;display:block!important}.ol-storymap.scrollLine .ol-scroll>div{-webkit-box-shadow:unset;box-shadow:unset;background-color:#0000;left:50%;overflow:visible;transform:translate(-50%)}.ol-storymap.scrollLine .ol-scroll>div:before{content:"";background-color:#0af;border:2px solid #fff;border-radius:50%;width:10px;height:10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-storymap.scrollBox .ol-scroll>div{display:none}.ol-storymap.scrollBox .chapter:after{content:"";box-sizing:border-box;z-index:1;border:5px solid #0000;border-radius:50%;width:20px;height:20px;position:absolute;top:min(30%,5em);right:-24.5px;box-shadow:0 0 0 2px #fff,inset 0 0 0 15px #0af}.ol-swipe{-ms-touch-action:none;touch-action:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-swipe:before{content:"";z-index:-1;background:#fff;width:4px;position:absolute;top:-5000px;bottom:-5000px;left:50%;transform:translate(-2px)}.ol-swipe.horizontal:before{width:auto;height:4px;inset:50% -5000px auto}.ol-swipe,.ol-swipe button{cursor:ew-resize}.ol-swipe.horizontal,.ol-swipe.horizontal button{cursor:ns-resize}.ol-swipe:after,.ol-swipe button:before,.ol-swipe button:after{content:"";background:currentColor;width:2px;position:absolute;top:25%;bottom:25%;left:50%;transform:translate(-1px)}.ol-swipe button:after{transform:translate(4px)}.ol-swipe button:before{transform:translate(-6px)}.ol-control.ol-timeline{background-color:#fff6;transition:all .3s;bottom:0;left:0;right:0}.ol-control.ol-timeline.ol-collapsed{transform:translateY(100%)}.ol-timeline{padding:2px 0 0;overflow:hidden}.ol-timeline .ol-scroll{scroll-behavior:smooth;height:6em;padding:0 50%;line-height:1em;overflow:hidden}.ol-timeline .ol-scroll.ol-move{scroll-behavior:unset}.ol-timeline.ol-hasbutton .ol-scroll{margin-left:1.5em;padding:0 calc(50% - .75em)}.ol-timeline .ol-buttons{z-index:10;background:#ffffff80;width:1.5em;display:none;position:absolute;top:0;bottom:0;left:0}.ol-timeline.ol-hasbutton .ol-buttons{display:block}.ol-timeline .ol-buttons button{margin:1px;font-size:1em;position:relative}.ol-timeline .ol-buttons .ol-zoom-in:before,.ol-timeline .ol-buttons .ol-zoom-out:before{content:"+";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-timeline .ol-buttons .ol-zoom-out:before{content:"−"}.ol-timeline .ol-scroll>div{height:100%;position:relative}.ol-timeline .ol-scroll .ol-times{background:#ffffff80;height:1em;position:absolute;bottom:0;left:-1000px;right:-1000px}.ol-timeline .ol-scroll .ol-time{color:#999;font-size:.7em;position:absolute;bottom:0;transform:translate(-50%)}.ol-timeline .ol-scroll .ol-time.ol-year{color:#666;z-index:1}.ol-timeline .ol-scroll .ol-time:before{content:"";border-left:1px solid;height:500px;position:absolute;bottom:1.2em;left:50%}.ol-timeline .ol-scroll .ol-features{margin:0 0 0 200px;position:absolute;inset:0 -1000px 1em -200px;overflow:hidden}.ol-timeline .ol-scroll .ol-feature{color:#999;cursor:pointer;box-sizing:border-box;background:#fff;border:1px solid #ccc;max-width:3em;min-height:1em;max-height:2.4em;padding:0 .5em 0 0;font-size:.7em;line-height:1.2em;transition:all .3s;position:absolute;top:0;overflow:hidden}.ol-timeline.ol-zoomhover .ol-scroll .ol-feature:hover,.ol-timeline.ol-zoomhover .ol-scroll .ol-feature.ol-select{z-index:1;background:#eee;transform:scale(1.2)}.ol-timeline .ol-center-date{z-index:2;pointer-events:none;opacity:.4;background-color:red;width:2px;height:100%;display:none;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.ol-timeline.ol-hasbutton .ol-center-date{left:calc(50% + .75em)}.ol-timeline.ol-pointer .ol-center-date{display:block}.ol-timeline.ol-pointer .ol-center-date:before,.ol-timeline.ol-pointer .ol-center-date:after{content:"";border:.3em solid #0000;border-width:.3em .25em;position:absolute;left:50%;transform:translate(-50%)}.ol-timeline.ol-pointer .ol-center-date:before{border-top-color:red;top:0}.ol-timeline.ol-pointer .ol-center-date:after{border-bottom-color:red;bottom:0}.ol-timeline.ol-interval .ol-center-date{box-sizing:content-box;opacity:.2;background-color:#0000;border:0 solid #000;border-width:0 10000px;display:block}.ol-control.ol-videorec{white-space:nowrap;top:0;left:50%;transform:translate(-50%)}.ol-control.ol-videorec button{vertical-align:middle;display:inline-block;position:relative}.ol-control.ol-videorec button:before{content:"";background-color:currentColor;width:.8em;height:.8em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-videorec button.ol-start:before{background-color:#c00;border-radius:50%;width:.9em;height:.9em}.ol-control.ol-videorec button.ol-pause:before{background-color:#0000;width:.2em;box-shadow:-.2em 0,.2em 0}.ol-control.ol-videorec button.ol-resume:before{box-sizing:border-box;background:0 0;border:.4em solid #0000;border-left:.6em solid;border-right-width:0;width:auto}.ol-control.ol-videorec button.ol-stop,.ol-control.ol-videorec button.ol-pause,.ol-control.ol-videorec button.ol-resume,.ol-control.ol-videorec[data-state=rec] .ol-start,.ol-control.ol-videorec[data-state=pause] .ol-start{display:none}.ol-control.ol-videorec[data-state=rec] .ol-stop,.ol-control.ol-videorec[data-state=pause] .ol-stop,.ol-control.ol-videorec[data-state=rec] .ol-pause,.ol-control.ol-videorec[data-state=pause] .ol-resume{display:inline-block}.ol-control.ol-wmscapabilities{top:.5em;right:2.5em}.ol-touch .ol-control.ol-wmscapabilities{right:3em}.ol-control.ol-wmscapabilities.ol-hidden{display:none}.ol-control.ol-wmscapabilities button:before{content:"+";position:absolute;top:calc(50% - .35em);left:50%;transform:translate(-50%,-50%)}.ol-control.ol-wmscapabilities button:after{content:"";background:0 0;border:.15em solid #0000;border-width:0 .15em .15em 0;border-radius:.1em 0;width:.75em;height:.75em;position:absolute;top:calc(50% - .05em);left:50%;transform:scaleY(.6)translate(-50%,-50%)rotate(45deg);box-shadow:inset -.18em -.18em,-.4em .1em 0 -.25em,.1em -.35em 0 -.25em,.15em .15em}.ol-wmscapabilities .ol-searching{opacity:.5}.ol-wmscapabilities .ol-searching .ol-url:after{content:"";background-color:currentColor;border-radius:50%;width:.7em;height:.7em;animation:2s linear infinite ol-wmscapabilities-rotate;display:block;position:absolute;top:6em;left:calc(50% - .35em);box-shadow:0 1em,0 -1em,1em 0,-1em 0}@keyframes ol-wmscapabilities-rotate{to{transform:rotate(360deg)}}.ol-wmscapabilities .ol-url input{box-sizing:border-box;width:calc(100% - 10em);min-width:min(100%,20em)}.ol-wmscapabilities .ol-url select{width:2em;height:100%;padding:1px}.ol-wmscapabilities .ol-url button{width:7.5em;margin-left:.5em}.ol-wmscapabilities .ol-result{margin-top:.5em;display:none}.ol-wmscapabilities .ol-result.ol-visible{display:block}.ol-wmscapabilities .ol-select-list{box-sizing:border-box;border:1px solid #369;border-radius:0;width:calc(100% - 120px);max-height:14.5em;font-size:1em;position:relative;overflow-x:hidden}.ol-wmscapabilities .ol-select-list option{cursor:pointer;box-sizing:border-box;text-overflow:ellipsis;width:100%;padding:.1em .5em 0;overflow:hidden}.ol-wmscapabilities .ol-select-list .level-1{padding-left:1em}.ol-wmscapabilities .ol-select-list .level-2{padding-left:1.5em}.ol-wmscapabilities .ol-select-list .level-3{padding-left:2em}.ol-wmscapabilities .ol-select-list .level-4{padding-left:2.5em}.ol-wmscapabilities .ol-select-list .level-5{padding-left:3em}.ol-wmscapabilities .ol-select-list .ol-info{font-style:italic}.ol-wmscapabilities .ol-select-list .ol-title{background-color:#003c881a}.ol-wmscapabilities .ol-select-list option:hover{color:#fff;background-color:#003c8880}.ol-wmscapabilities .ol-select-list .selected{color:#fff;background-color:#003c88b3}.ol-wmscapabilities .ol-preview{float:right;color:#666;text-align:center;background:#003c881a;width:100px;margin-left:10px;padding:0 5px 5px}.ol-wmscapabilities .ol-preview.tainted{float:right;color:#666;text-align:center;background:#88003c1a;width:100px;margin-left:10px;padding:0 5px 5px}.ol-wmscapabilities .ol-preview img{background:#fff;width:100%;display:block}.ol-wmscapabilities .ol-legend{max-width:100%;display:none}.ol-wmscapabilities .ol-legend.visible{display:block}.ol-wmscapabilities .ol-buttons{clear:both;text-align:right}.ol-wmscapabilities .ol-data p{margin:0}.ol-wmscapabilities .ol-data p.ol-title{margin:1em 0 .5em;font-weight:700}.ol-wmscapabilities .ol-error{color:#800}.ol-wmscapabilities ul.ol-wmsform{padding:0;list-style:none;display:none}.ol-wmscapabilities ul.ol-wmsform.visible{display:block}.ol-wmscapabilities .ol-wmsform label{text-align:right;width:calc(40% - .5em);margin-right:.5em;display:inline-block}.ol-wmscapabilities .ol-wmsform input{box-sizing:border-box;width:60%;display:inline-block}.ol-wmscapabilities .ol-wmsform input[type=checkbox]{width:auto}.ol-wmscapabilities .ol-wmsform button{float:right;margin:1em 0}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] input{width:calc(60% - 2em)}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button{vertical-align:middle;color:#444;width:2em;height:1.6em;margin:0;position:relative}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:before,.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:after{content:"";border:.1em solid;width:.25em;height:.9em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)skewY(-15deg)}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:after{transform:translate(.4em)translate(-50%,-50%)skewY(15deg);box-shadow:-.8em .25em}.ol-ext-dialog.ol-wmscapabilities form{width:600px;min-height:15em;top:15%;transform:translate(-50%,-15%)}.ol-ext-dialog.ol-wmscapabilities .ol-content{max-height:calc(100vh - 6em)}.ol-ext-dialog.ol-wmtscapabilities [data-param=map],.ol-ext-dialog [data-param=style]{display:none}.ol-ext-dialog.ol-wmtscapabilities [data-param=style]{display:list-item}.ol-ext-dialog.ol-wmtscapabilities [data-param=proj],.ol-ext-dialog.ol-wmtscapabilities [data-param=version]{opacity:.6;pointer-events:none}.ol-ext-dialog.ol-wmscapabilities button.ol-wmsform{text-align:center;width:1.8em}.ol-ext-dialog.ol-wmscapabilities button.ol-wmsform:before{content:"+"}.ol-ext-dialog.ol-wmscapabilities .ol-form button.ol-wmsform:before{content:"-"}.ol-ext-dialog.ol-wmscapabilities .ol-form button.ol-load,.ol-ext-dialog.ol-wmscapabilities .ol-form .ol-legend{display:none}.ol-ext-dialog.ol-wmscapabilities .ol-form ul.ol-wmsform{clear:both;display:block}.ol-target-overlay .ol-target{border:1px solid #0000;width:0;height:20px;display:block;box-shadow:0 0 1px 1px #fff}.ol-target-overlay .ol-target:after,.ol-target-overlay .ol-target:before{content:"";border:1px solid #369;width:20px;height:0;display:block;position:absolute;top:10px;left:-10px;box-shadow:0 0 1px 1px #fff}.ol-target-overlay .ol-target:after{-webkit-box-shadow:none;box-shadow:none;width:0;height:20px;top:0;left:0}.ol-overlaycontainer .ol-touch-cursor{cursor:pointer;background:#fff6;border-radius:50%;width:56px;height:56px;margin:6px;box-shadow:inset 0 0 0 5px #369}.ol-overlaycontainer .ol-touch-cursor:after{content:"";transform-origin:100% 100%;background:radial-gradient(circle at 100% 100%,#0000,#0000 70%,#369 70%,#369);width:50%;height:50%;position:absolute;top:0;left:0}.ol-overlaycontainer .ol-touch-cursor-center{margin-top:16px;margin-left:-28px}.ol-overlaycontainer .ol-touch-cursor-center:after{transform:rotate(45deg)}.ol-overlaycontainer .ol-touch-cursor-right{margin-left:-62px}.ol-overlaycontainer .ol-touch-cursor-right:after{transform:rotate(90deg)}.ol-overlaycontainer .ol-touch-cursor .ol-button{color:#369;cursor:pointer;background:#fff6;border-radius:50%;width:55%;height:55%;transition:all .5s,opacity,background;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)scale(0);box-shadow:inset 0 0 0 3px}.ol-overlaycontainer .ol-touch-cursor.active.disable .ol-button{opacity:.8;background:#3693}.ol-overlaycontainer .ol-touch-cursor.active .ol-button{transform:translate(-50%,-50%)scale(1)}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-0{top:-18%;left:118%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-1{top:50%;left:140%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-2{top:120%;left:120%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-3{top:140%;left:50%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-4{top:118%;left:-18%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-5{top:50%;left:-40%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-6{top:-18%;left:-18%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-7{top:-40%;left:50%}.ol-overlaycontainer .ol-touch-cursor .ol-button:before{content:"";text-align:center;width:1.5em;height:1em;line-height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-add:before,.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-remove:before{content:"−";font-size:1.375em;font-weight:700;line-height:.95em}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-add:before{content:"+"}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-x:before{content:"×";font-size:1.2em;font-weight:700}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-move:before{content:"✥";font-size:1.2em}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-check:before{content:"✓";font-weight:700}.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-x,.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-remove,.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-check{opacity:.8;background:#3693}.ol-overlaycontainer .ol-touch-cursor .ol-button>div{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlaycontainer .ol-touch-cursor .ol-button-type:before{content:"⇎";font-weight:700}.mapboxgl-canvas:focus{outline:none}.ol-perspective-map{width:200%;height:200%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-perspective-map .ol-layer{z-index:-1!important}.ol-perspective-map .ol-layers{transform:translateY(0)perspective(200px)rotateX(0)scaleY(1)}.ol-perspective-map .ol-overlaycontainer,.ol-perspective-map .ol-overlaycontainer-stopevent{top:50%;left:50%;transform:translate(-50%,-50%);width:50%!important;height:50%!important}.ol-overlay-container .ol-magnify{z-index:0;background:#00000080;border:3px solid #369;border-radius:50%;width:150px;height:150px;position:relative;overflow:hidden;box-shadow:5px 5px 5px #00000080}.ol-overlay-container .ol-magnify:before{content:"";z-index:1;border-radius:50%;width:100%;height:100%;display:block;position:absolute;top:0;left:0;box-shadow:inset 0 0 40px 2px #00000040}.ol-overlay-container .ol-magnify:after{content:"";z-index:1;border-radius:50%;width:20%;height:0;display:block;position:absolute;top:20%;left:23%;transform:rotate(-40deg);box-shadow:0 0 20px 7px #fff}.ol-popup.anim{visibility:hidden}.ol-popup.anim.visible{visibility:visible}.ol-popup.anim.visible>div{visibility:visible;animation:.4s ol-popup_bounce;transform:none}@keyframes ol-popup_bounce{0%{transform:scale(0)}50%{transform:scale(1.1)}80%{transform:scale(.95)}to{transform:scale(1)}}.ol-popup.anim.ol-popup-bottom.ol-popup-left>div{transform-origin:0 100%}.ol-popup.anim.ol-popup-bottom.ol-popup-right>div{transform-origin:100% 100%}.ol-popup.anim.ol-popup-bottom.ol-popup-center>div{transform-origin:50% 100%}.ol-popup.anim.ol-popup-top.ol-popup-left>div{transform-origin:0 0}.ol-popup.anim.ol-popup-top.ol-popup-right>div{transform-origin:100% 0}.ol-popup.anim.ol-popup-top.ol-popup-center>div{transform-origin:50% 0}.ol-popup.anim.ol-popup-middle.ol-popup-left>div{transform-origin:0}.ol-popup.anim.ol-popup-middle.ol-popup-right>div{transform-origin:100%}.ol-popup{-webkit-user-select:none;user-select:none;font-size:.9em}.ol-popup .ol-popup-content{cursor:default;padding:.25em .5em;overflow:hidden}.ol-popup.hasclosebox .ol-popup-content{margin-right:1.7em}.ol-popup .ol-popup-content:after{clear:both;content:"";height:0;font-size:0;display:block}.ol-popup .anchor{pointer-events:none;background:red;width:0;height:0;margin:-11px 22px;display:block;position:absolute}.ol-popup .anchor:after,.ol-popup .anchor:before{position:absolute}.ol-popup-right .anchor:after,.ol-popup-right .anchor:before{right:0}.ol-popup-top .anchor{top:0}.ol-popup-bottom .anchor{bottom:0}.ol-popup-right .anchor{right:0}.ol-popup-left .anchor{left:0}.ol-popup-center .anchor{left:50%;margin-left:0!important}.ol-popup-middle .anchor{top:50%;margin-top:0!important}.ol-popup-center.ol-popup-middle .anchor{display:none}.ol-popup.ol-fixed{margin:0!important;inset:.5em .5em auto auto!important;transform:none!important}.ol-popup.ol-fixed .anchor{display:none}.ol-popup.ol-fixed.anim>div{animation:none}.ol-popup .ol-fix{float:right;cursor:pointer;background:#fff;width:1em;height:.9em;margin:.2em;position:relative}.ol-popup .ol-fix:before{content:"";box-sizing:border-box;border:.1em solid #666;border-right-width:.3em;width:.8em;height:.7em;margin:.1em;display:block}.ol-popup.shadow{box-shadow:2px 2px 2px 2px #00000080}.ol-popup .closeBox{color:#fff;cursor:pointer;float:right;background-color:#003c8880;border:0;border-radius:2px;width:1.4em;height:1.4em;margin:5px 5px 0 0;padding:0;font-size:.9em;font-weight:700;display:none;position:relative}.ol-popup.hasclosebox .closeBox{display:block}.ol-popup .closeBox:hover{background-color:#003c88b3}.ol-popup .closeBox:after{content:"×";text-align:center;width:100%;margin:-.5em 0;font-size:1.5em;line-height:1em;position:absolute;top:50%;left:0;right:0}.ol-popup.modifytouch{background-color:#eee}.ol-popup.modifytouch .ol-popup-content{white-space:nowrap;padding:0 .25em;font-size:.85em}.ol-popup.modifytouch .ol-popup-content a{text-decoration:none}.ol-popup.tooltips{background-color:#ffa}.ol-popup.tooltips .ol-popup-content{white-space:nowrap;padding:0 .25em;font-size:.85em}.ol-popup.default>div{background-color:#fff;border:1px solid #69f;border-radius:5px}.ol-popup.default{margin:-11px 0;transform:translateY(-22px)}.ol-popup-top.ol-popup.default{margin:11px 0;transform:none}.ol-popup-left.default{margin:-11px -22px;transform:translateY(-22px)}.ol-popup-top.ol-popup-left.default{margin:11px -22px;transform:none}.ol-popup-right.default{margin:-11px 22px;transform:translate(44px,-22px)}.ol-popup-top.ol-popup-right.default{margin:11px 22px;transform:translate(44px)}.ol-popup-middle.default{margin:0 10px;transform:none}.ol-popup-middle.ol-popup-right.default{margin:0 -10px;transform:translate(-20px)}.ol-popup.default .anchor{color:#69f}.ol-popup.default .anchor:after,.ol-popup.default .anchor:before{content:"";border:11px solid;border-color:currentColor #0000;margin:0 -11px}.ol-popup.default .anchor:after{border-width:11px;border-color:#fff #0000;margin:2px -11px}.ol-popup-top.default .anchor:before,.ol-popup-top.default .anchor:after{border-top:0;top:0}.ol-popup-bottom.default .anchor:before,.ol-popup-bottom.default .anchor:after{border-bottom:0;bottom:0}.ol-popup-middle.default .anchor:before{border-color:#0000 currentColor;margin:-11px -33px}.ol-popup-middle.default .anchor:after{border-color:#0000 #fff;margin:-11px -31px}.ol-popup-middle.ol-popup-left.default .anchor:before,.ol-popup-middle.ol-popup-left.default .anchor:after{border-left:0}.ol-popup-middle.ol-popup-right.default .anchor:before,.ol-popup-middle.ol-popup-right.default .anchor:after{border-right:0}.ol-popup.placemark{color:#c00;margin:-.65em 0;transform:translateY(-1.3em)}.ol-popup.placemark>div{width:2em;height:2em;min-width:unset;box-sizing:border-box;background-color:#fff;border:0;border-radius:50%;font-size:15px;position:relative;box-shadow:inset 0 0 0 .45em}.ol-popup.placemark .ol-popup-content{cursor:default;text-align:center;width:1em;height:1em;padding:.25em 0;line-height:1em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-popup.placemark .anchor{margin:0}.ol-popup.placemark .anchor:before{content:"";background:0 0;border-radius:50%;width:1em;height:.5em;margin:-.5em;box-shadow:0 1em .5em #00000080}.ol-popup.placemark .anchor:after{content:"";border:.7em solid #0000;border-top:1em solid;border-bottom:0 solid;margin:-.75em -.7em;bottom:0}.ol-popup.placemark.shield>div{border-radius:.2em}.ol-popup.placemark.shield .anchor:after{border-width:.8em 1em 0;margin:-.7em -1em}.ol-popup.placemark.blazon>div{border-radius:.2em}.ol-popup.placemark.pushpin{margin:-2.2em 0;transform:translateY(-4em)}.ol-popup.placemark.pushpin>div{border-radius:0;width:1.1em;box-shadow:inset 2em 0;background:0 0!important}.ol-popup.placemark.pushpin>div:before{content:"";pointer-events:none;border:.5em solid #0000;border-top:.3em solid;border-bottom-color:currentColor;width:1.3em;height:1.5em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-popup.placemark.needle{margin:-2em 0;transform:translateY(-4em)}.ol-popup.placemark.pushpin .anchor,.ol-popup.placemark.needle .anchor{margin:-1.2em}.ol-popup.placemark.pushpin .anchor:after,.ol-popup.placemark.needle .anchor:after{border-style:solid;border-width:2em .15em 0;width:.1em;margin:-.55em -.2em}.ol-popup.placemark.pushpin .anchor:before,.ol-popup.placemark.needle .anchor:before{margin:-.75em -.5em}.ol-popup.placemark.flagv{margin:-2em 1em;transform:translateY(-4em)}.ol-popup.placemark.flagv>div{-webkit-box-shadow:none;box-shadow:none;background-color:#0000;border-radius:0}.ol-popup.placemark.flagv>div:before{content:"";pointer-events:none;border:1em solid #0000;border-left:2em solid;position:absolute}.ol-popup.placemark.flagv .anchor{margin:-1.4em}.ol-popup.placemark.flag{margin:-2em 1em;transform:translateY(-4em)}.ol-popup.placemark.flag>div{border-radius:0;transform-origin:0 150%!important}.ol-popup.placemark.flag .anchor{margin:-1.4em}.ol-popup.placemark.flagv .anchor:after,.ol-popup.placemark.flag .anchor:after{border-style:solid;border-width:2em .15em 0;width:.1em;margin:-.55em -1em}.ol-popup.placemark.flagv .anchor:before,.ol-popup.placemark.flag .anchor:before{margin:-.75em -1.25em}.ol-popup.placemark.flag.finish{margin:-2em 1em}.ol-popup.placemark.flag.finish>div{background-image:linear-gradient(45deg,currentColor 25%,#0000 25% 75%,currentColor 75%,currentColor),linear-gradient(45deg,currentColor 25%,#0000 25% 75%,currentColor 75%,currentColor);background-position:.5em 0,0 .5em;background-size:1em 1em;box-shadow:inset 0 0 0 .25em}.ol-popup.black .closeBox{color:#f80;background-color:#00000080;border-radius:5px}.ol-popup.black .closeBox:hover{color:#da2;background-color:#000000b3}.ol-popup.black{margin:-20px 0;transform:translateY(-40px)}.ol-popup.black>div{color:#fff;background-color:#0009;border-radius:5px}.ol-popup-top.ol-popup.black{margin:20px 0;transform:none}.ol-popup-left.black{margin:-20px -22px;transform:translateY(-40px)}.ol-popup-top.ol-popup-left.black{margin:20px -22px;transform:none}.ol-popup-right.black{margin:-20px 22px;transform:translate(44px,-40px)}.ol-popup-top.ol-popup-right.black{margin:20px 22px;transform:translate(44px)}.ol-popup-middle.black{margin:0 11px;transform:none}.ol-popup-left.ol-popup-middle.black{transform:none}.ol-popup-right.ol-popup-middle.black{margin:0 -11px;transform:translate(-22px)}.ol-popup.black .anchor{color:#0009;margin:-20px 11px}.ol-popup.black .anchor:before{content:"";border:20px solid;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.black .anchor:before{border-top:0;top:0}.ol-popup-bottom.black .anchor:before{border-bottom:0;bottom:0}.ol-popup-middle.black .anchor:before{border-color:#0000 currentColor;margin:-20px -22px}.ol-popup-middle.ol-popup-left.black .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.black .anchor:before{border-right:0}.ol-popup-center.black .anchor:before{margin:0 -10px}.ol-popup.tips .closeBox{color:#fff;background-color:red;border-radius:50%;width:1.2em;height:1.2em}.ol-popup.tips .closeBox:hover{background-color:#f40}.ol-popup.tips{margin:-20px 0;transform:translateY(-40px)}.ol-popup.tips>div{color:#333;background-color:#cea;border:5px solid #ad7;border-radius:5px}.ol-popup-top.ol-popup.tips{margin:20px 0;transform:none}.ol-popup-left.tips{margin:-20px -22px;transform:translateY(-40px)}.ol-popup-top.ol-popup-left.tips{margin:20px -22px;transform:none}.ol-popup-right.tips{margin:-20px 22px;transform:translate(44px,-40px)}.ol-popup-top.ol-popup-right.tips{margin:20px 22px;transform:translate(44px)}.ol-popup-middle.tips{margin:0;transform:none}.ol-popup-left.ol-popup-middle.tips{margin:0 22px;transform:none}.ol-popup-right.ol-popup-middle.tips{margin:0 -22px;transform:translate(-44px)}.ol-popup.tips .anchor{color:#ad7;margin:-18px 22px}.ol-popup.tips .anchor:before{content:"";border:20px solid;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.tips .anchor:before{border-top:0;top:0}.ol-popup-bottom.tips .anchor:before{border-bottom:0;bottom:0}.ol-popup-center.tips .anchor:before{border-width:20px 6px;margin:0 -6px}.ol-popup-left.tips .anchor:before{border-left:0;margin-left:0}.ol-popup-right.tips .anchor:before{border-right:0;margin-right:0}.ol-popup-middle.tips .anchor:before{border-width:6px 20px;border-color:#0000 currentColor;margin:-6px -41px}.ol-popup-middle.ol-popup-left.tips .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.tips .anchor:before{border-right:0}.ol-popup.warning .closeBox{color:#fff;background-color:red;border-radius:50%;font-size:.83em}.ol-popup.warning .closeBox:hover{background-color:#f40}.ol-popup.warning{color:#900;background-color:#fd0;border:4px dashed red;border-radius:3px;margin:-28px 10px;transform:translateY(-56px)}.ol-popup-top.ol-popup.warning{margin:28px 10px;transform:none}.ol-popup-left.warning{margin:-28px -22px;transform:translateY(-56px)}.ol-popup-top.ol-popup-left.warning{margin:28px -22px;transform:none}.ol-popup-right.warning{margin:-28px 22px;transform:translate(44px,-56px)}.ol-popup-top.ol-popup-right.warning{margin:28px 22px;transform:translate(44px)}.ol-popup-middle.warning{margin:0;transform:none}.ol-popup-left.ol-popup-middle.warning{margin:0 22px;transform:none}.ol-popup-right.ol-popup-middle.warning{margin:0 -22px;transform:translate(-44px)}.ol-popup.warning .anchor{margin:-33px 7px}.ol-popup.warning .anchor:before{content:"";border:30px solid red;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.warning .anchor:before{border-top:0;top:0}.ol-popup-bottom.warning .anchor:before{border-bottom:0;bottom:0}.ol-popup-center.warning .anchor:before{margin:0 -21px}.ol-popup-middle.warning .anchor:before{border-width:10px 22px;border-color:#0000 red;margin:-10px -33px}.ol-popup-middle.ol-popup-left.warning .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.warning .anchor:before{border-right:0}.ol-popup .ol-popupfeature table{width:100%}.ol-popup .ol-popupfeature table td{text-overflow:ellipsis;max-width:25em;overflow:hidden}.ol-popup .ol-popupfeature table td img{max-width:100px;max-height:100px}.ol-popup .ol-popupfeature tr:nth-child(odd){background-color:#eee}.ol-popup .ol-popupfeature .ol-zoombt{color:#003c8880;background:0 0;border:0;outline:none;width:2em;height:2em;display:inline-block;position:relative}.ol-popup .ol-popupfeature .ol-zoombt:before{content:"";box-sizing:border-box;background-color:#0000;border:.17em solid;border-radius:100%;width:1em;height:1em;position:absolute;top:.3em;left:.3em}.ol-popup .ol-popupfeature .ol-zoombt:after{content:"";box-sizing:border-box;border-style:solid;border-width:.1em .3em;border-radius:.03em;position:absolute;top:1.35em;left:1.15em;transform:rotate(45deg);box-shadow:-.2em 0 0 -.04em}.ol-popup .ol-popupfeature .ol-count{float:right;margin:.25em 0}.ol-popup .ol-popupfeature .ol-prev,.ol-popup .ol-popupfeature .ol-next{vertical-align:bottom;cursor:pointer;border:.5em solid #0000;border-left-color:#003c8880;border-right:0 solid #003c8880;margin:0 .5em;display:inline-block}.ol-popup .ol-popupfeature .ol-prev{border-width:.5em .5em .5em 0}.ol-popup.tooltips.black{background-color:#0000}.ol-popup.tooltips.black>div{background-color:#00000080;padding:.2em .5em;transform:scaleY(1.3)}.ol-popup-middle.tooltips.black .anchor:before{border-width:5px 10px;margin:-5px -21px}.ol-popup-center.ol-popup-middle,.ol-popup-top.ol-popup-left.ol-fixPopup,.ol-popup-top.ol-popup-right.ol-fixPopup,.ol-popup.ol-fixPopup{margin:0}.ol-miniscroll{position:relative}.ol-miniscroll:hover .ol-scroll{opacity:.5;transition:opacity 1s}.ol-miniscroll .ol-scroll{-ms-touch-action:none;touch-action:none;opacity:0;z-index:1;border-radius:9px;width:9px;height:auto;max-height:100%;transition:opacity 1s .5s;position:absolute;right:0;overflow:hidden}.ol-miniscroll .ol-scroll>div{-ms-touch-action:none;touch-action:none;box-sizing:border-box;cursor:pointer;border:2px solid #0000;border-radius:9px/12px;width:9px;height:9px;position:absolute;top:0;right:0;box-shadow:inset 10px 0}.ol-miniscroll .ol-scroll.ol-100pc{opacity:0}.ol-viewport canvas.ol-fixedoverlay{width:100%;height:100%;position:absolute;top:0;left:0}.ol-ext-toggle-switch{cursor:pointer;position:relative}.ol-ext-toggle-switch input[type=radio],.ol-ext-toggle-switch input[type=checkbox]{opacity:0;width:0;height:0;margin:0;padding:0;display:inline-block}.ol-ext-toggle-switch span{color:#003c8880;cursor:pointer;vertical-align:middle;background-color:#ccc;border-radius:1em;width:1.6em;height:1em;margin:-.15em .2em .15em;font-size:1.3em;transition:all .4s,background-color,border-color,box-shadow;display:inline-block;position:relative}.ol-ext-toggle-switch span:before{content:"";box-sizing:border-box;background-color:#fff;border:2px solid #ccc;border-radius:1em;width:1em;height:1em;transition:all .4s;display:block;position:absolute;top:50%;left:0;transform:translateY(-50%)}.ol-ext-toggle-switch:hover span{background-color:#999}.ol-ext-toggle-switch:hover span:before{border-color:#999}.ol-ext-toggle-switch input:checked+span{background-color:currentColor}.ol-ext-toggle-switch input:checked+span:before{border-color:currentColor;transform:translate(.6em,-50%)}.ol-ext-check{display:inline-block;position:relative}.ol-ext-check input{opacity:0;cursor:pointer;width:0;height:0;margin:0;padding:0;display:inline-block;position:absolute}.ol-ext-check span{color:#003c8880;vertical-align:middle;background-color:#ccc;width:1em;height:1em;margin:-.1em .5em .1em;display:inline-block;position:relative}.ol-ext-check:hover span{background-color:#999}.ol-ext-checkbox input:checked~span{background-color:currentColor}.ol-ext-checkbox input:checked~span:before{content:"";width:.5em;height:.8em;position:absolute;top:50%;left:50%;transform:translateY(-.1em)translate(-50%,-50%)rotate(45deg);box-shadow:inset -.2em -.2em #fff}.ol-ext-radio span{border-radius:50%;width:1.1em;height:1.1em}.ol-ext-radio:hover input:checked~span{background-color:#ccc}.ol-ext-radio input:checked~span:before{content:"";background-color:currentColor;border-radius:50%;width:50%;height:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-ext-toggle-switch input:focus-visible+span,.ol-ext-check input:focus-visible+span{box-shadow:inset 0 0 0 1px #fff,0 0 0 1.8px #000c}.ol-collection-list{margin:0;padding:0;list-style:none}.ol-collection-list li{padding:0 2em 0 1em;position:relative}.ol-collection-list li:hover{background-color:#003c8833}.ol-collection-list li.ol-select{color:#fff;background-color:#003c8880}.ol-collection-list li .ol-order{-ms-touch-action:none;touch-action:none;cursor:n-resize;-webkit-user-select:none;user-select:none;width:2em;height:100%;position:absolute;top:50%;right:0;transform:translateY(-50%)}.ol-collection-list li .ol-order:before{content:"";background-color:currentColor;border-radius:2px;width:18px;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 5px,0 -5px}.ol-collection-list li>input.ol-input-focus{opacity:0;z-index:-1;width:0;height:0;position:absolute}.ol-collection-list li:has(>input.ol-input-focus:focus){outline:2px solid #369}.ol-ext-colorpicker.ol-popup{background-color:#0000;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 -1px,5px 4px;background-size:10px 10px;width:2em;height:1.5em}.ol-ext-colorpicker .ol-tabbar{background-color:#eee;border-bottom:1px solid #999;display:none}.ol-ext-colorpicker.ol-tab .ol-tabbar{display:block}.ol-ext-colorpicker .ol-tabbar>div{cursor:pointer;background-color:#fff;border:1px solid #999;border-radius:2px 2px 0 0;padding:0 .5em;display:inline-block;position:relative;top:1px}.ol-ext-colorpicker .ol-tabbar>div:first-child{border-bottom-color:#fff}.ol-ext-colorpicker.ol-picker-tab .ol-tabbar>div:first-child{border-bottom-color:#999}.ol-ext-colorpicker.ol-picker-tab .ol-tabbar>div:nth-child(2){border-bottom-color:#fff}.ol-ext-colorpicker.ol-popup.ol-tab .ol-popup{width:180px}.ol-ext-colorpicker.ol-tab .ol-palette{margin:0 10px}.ol-ext-colorpicker.ol-tab .ol-container{display:none}.ol-ext-colorpicker.ol-tab.ol-picker-tab .ol-container{display:block}.ol-ext-colorpicker.ol-tab.ol-picker-tab .ol-palette{display:none}.ol-ext-colorpicker.ol-popup .ol-popup{width:340px}.ol-ext-colorpicker.ol-popup .ol-vignet{content:"";pointer-events:none;background-color:currentColor;border:0;width:100%;height:100%;position:absolute;top:0;left:0}.ol-ext-colorpicker .ol-container{vertical-align:top;display:inline-block;position:relative}.ol-ext-colorpicker .ol-cursor{pointer-events:none}.ol-ext-colorpicker .ol-picker{cursor:crosshair;background-color:currentColor;background-image:-webkit-gradient(linear, left top, left bottom, from(0), color-stop(#000), to(transparent)), -webkit-gradient(linear, left top, right top, from(#fff), to(transparent));background-image:linear-gradient(#0000,#000),linear-gradient(90deg,#fff,#0000);border:5px solid #fff;width:150px;height:150px;position:relative}.ol-ext-colorpicker .ol-picker .ol-cursor{border:1px solid #000000b3;border-radius:50%;width:10px;height:10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #ffffffb3}.ol-ext-colorpicker .ol-slider{cursor:crosshair;background-color:#fff;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 -1px,5px 4px;background-size:10px 10px;border:0 solid #fff;border-width:0 5px;width:150px;height:10px;margin:5px 0 10px;position:relative}.ol-ext-colorpicker .ol-slider>div{pointer-events:none;background-image:linear-gradient(45deg,#0000,#fff);width:100%;height:100%}.ol-ext-colorpicker .ol-slider .ol-cursor{background:0 0;border:1px solid #000;width:4px;height:12px;position:absolute;top:50%;left:0;transform:translate(-50%,-50%)}.ol-ext-colorpicker .ol-tint{cursor:crosshair;box-sizing:border-box;background-image:-webkit-gradient(linear, left top, left bottom, from(0), color-stop(red), color-stop(#f0f), color-stop(#00f), color-stop(#0ff), color-stop(#0f0), color-stop(#ff0), to(red));background-image:linear-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red);border:5px solid #fff;border-width:5px 0;width:10px;height:150px;position:absolute;top:0;right:5px}.ol-ext-colorpicker .ol-tint .ol-cursor{border:1px solid #000;width:12px;height:4px;position:absolute;top:0;left:50%;transform:translate(-50%,-50%)}.ol-ext-colorpicker .ol-clear{border:2px solid #999;width:10px;height:10px;position:absolute;top:163px;right:4px}.ol-ext-colorpicker .ol-clear:before,.ol-ext-colorpicker .ol-clear:after{content:"";background-color:#999;width:15px;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-ext-colorpicker .ol-clear:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-ext-colorpicker.ol-nopacity .ol-slider,.ol-ext-colorpicker.ol-nopacity .ol-clear,.ol-ext-colorpicker.ol-nopacity .ol-alpha{display:none}.ol-ext-colorpicker .ol-rgb{width:170px;padding:5px;display:none;position:relative}.ol-ext-colorpicker .ol-rgb input{box-sizing:border-box;border:1px solid #999;border-radius:2px;width:25%;padding:0 0 0 2px;font-size:13px}.ol-ext-colorpicker .ol-rgb input:first-child{background-color:#ff00001a}.ol-ext-colorpicker .ol-rgb input:nth-child(2){background-color:#00ff001a}.ol-ext-colorpicker .ol-rgb input:nth-child(3){background-color:#0000ff1f}.ol-ext-colorpicker button,.ol-ext-colorpicker .ol-txt-color{text-align:center;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:170px;margin:0 5px 5px;padding:0;font-size:13px;display:block}.ol-ext-colorpicker .ol-txtcolor{width:170px;margin:0 5px}.ol-ext-colorpicker .ol-txtcolor input.ol-txt-color{width:100%;margin:0}.ol-ext-colorpicker.eyedropper .ol-txtcolor input.ol-txt-color{width:calc(100% - 2em);height:2em;margin:0;display:inline-block}.ol-ext-colorpicker button{background-color:#eee}.ol-ext-colorpicker button:hover{background-color:#e9e9e9}.ol-ext-colorpicker button.ol-eyedropper{vertical-align:middle;width:2em;height:2em;margin:0;display:inline-block;position:relative}.ol-ext-colorpicker button.ol-eyedropper:before{content:"";background-color:#999;width:100%;height:100%;position:absolute;top:0;left:0;-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20width='24'%20height='24'%3e%3cpath%20d='m18.203%203.676%202.121%202.121a1%201%200%200%201%200%201.414l-2.828%202.829%201.767%201.768-1.414%201.414-1.414-1.414L7.243%2021H3v-4.243l9.192-9.192-1.414-1.414%201.414-1.414%201.768%201.767%202.829-2.828a1%201%200%200%201%201.414%200Zm-4.596%205.303-8.564%208.564%201.414%201.414%208.564-8.564-1.414-1.414Z'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20width='24'%20height='24'%3e%3cpath%20d='m18.203%203.676%202.121%202.121a1%201%200%200%201%200%201.414l-2.828%202.829%201.767%201.768-1.414%201.414-1.414-1.414L7.243%2021H3v-4.243l9.192-9.192-1.414-1.414%201.414-1.414%201.768%201.767%202.829-2.828a1%201%200%200%201%201.414%200Zm-4.596%205.303-8.564%208.564%201.414%201.414%208.564-8.564-1.414-1.414Z'/%3e%3c/svg%3e");-webkit-mask-size:100% 100%;mask-size:100% 100%}.ol-ext-colorpicker .ol-txt-color.ol-error{background-color:#f003}.ol-ext-colorpicker .ol-palette{width:152px;padding:2px;display:inline-block}.ol-ext-colorpicker .ol-palette>div{cursor:pointer;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 0,5px 5px;background-size:10px 10px;border-radius:1px;width:15px;height:15px;margin:2px;display:inline-block;position:relative;box-shadow:0 0 2px #666}.ol-ext-colorpicker .ol-palette>div:before{content:"";background-color:currentColor;width:100%;height:100%;position:absolute}.ol-ext-colorpicker .ol-palette>div.ol-select:after{content:"";width:6px;height:12px;position:absolute;top:30%;left:50%;transform:translate(-50%,-50%)rotate(45deg);box-shadow:1px 1px #fff,2px 2px #000}.ol-ext-colorpicker .ol-palette>div:hover{box-shadow:0 0 2px 1px #d90}.ol-ext-colorpicker .ol-palette hr{margin:0}.ol-input-hidden{opacity:0;width:0;height:0;margin:0;padding:0;display:block;position:absolute}.ol-input-popup{display:inline-block;position:relative}.ol-input-popup .ol-popup{z-index:1;white-space:nowrap;background-color:#fff;margin:0;padding:0;list-style:none;display:none;position:absolute;left:-5px;box-shadow:1px 1px 3px 1px #999}.ol-input-popup.ol-hover:hover .ol-popup,.ol-input-popup.ol-focus .ol-popup{display:block}.ol-input-popup.ol-right .ol-popup{left:auto;right:-5px}.ol-input-popup.ol-middle .ol-popup{top:50%;transform:translateY(-50%)}.ol-input-popup .ol-popup li{padding:10px 5px;position:relative}.ol-input-popup li:hover,.ol-input-popup li.ol-selected{background-color:#ccc}.ol-input-popup.ol-fixed:hover .ol-popup,.ol-input-popup.ol-fixed .ol-popup{-webkit-box-shadow:unset;box-shadow:unset;vertical-align:middle;background-color:#0000;display:inline-block;position:relative;left:0}.ol-input-popup.ol-fixed.ol-left .ol-popup{float:left}.ol-input-popup>div{vertical-align:middle;border:1px solid #999;border-radius:2px;padding:3px 20px 3px 10px;display:inline-block;position:relative}.ol-input-popup>div:before{content:"";border:5px solid #0000;border-top-color:#999;position:absolute;top:50%;right:5px}.ol-ext-popup-input{vertical-align:top;display:inline-block}.ol-ext-popup-input.ol-popup{box-sizing:content-box;-webkit-user-select:none;user-select:none;vertical-align:middle;border:3px solid #fff;border-right-width:1em;border-radius:2px;width:2em;height:1.5em;display:inline-block;position:relative;box-shadow:0 0 2px 1px #666}.ol-ext-popup-input.ol-popup:after{content:"";pointer-events:none;border:.3em solid #0000;border-top:.5em solid #999;border-bottom:0 solid #999;position:absolute;top:50%;right:-.8em;transform:translateY(-50%)}.ol-ext-popup-input *{box-sizing:content-box}.ol-ext-popup-input.ol-popup .ol-popup{z-index:1;background-color:#fff;min-width:3em;min-height:3em;display:none;position:absolute;top:100%;left:0;box-shadow:1px 1px 3px 1px #999}.ol-ext-popup-input.ol-popup .ol-popup.ol-visible{display:block}.ol-ext-popup-input.ol-popup-fixed .ol-popup{position:fixed;top:auto;left:auto}.ol-input-popup.ol-size li{vertical-align:middle;height:100%;padding:5px;display:table-cell}.ol-input-popup.ol-size li>*{vertical-align:middle;background-color:#369;border-radius:50%;width:1em;height:1em}.ol-input-popup.ol-size li>.ol-option-0{color:#aaa;box-sizing:border-box;background-color:#0000;border:2px solid;width:1em;height:1em;position:relative}.ol-input-popup.ol-size li>:before{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-input-popup.ol-size li>.ol-option-0:before{content:"";background-color:#aaa;width:1em;height:2px;transform:translate(-50%,-50%)rotate(-45deg)}.ol-input-slider{display:inline-block;position:relative}.ol-input-slider .ol-popup{z-index:1;background-color:#fff;display:none;position:absolute;left:-5px;box-shadow:1px 1px 3px 1px #999}.ol-input-slider.ol-right .ol-popup{left:auto;right:-5px}.ol-input-slider.ol-hover:hover .ol-popup,.ol-input-slider.ol-focus .ol-popup{white-space:nowrap;display:block}.ol-input-slider.ol-hover:hover .ol-popup>*,.ol-input-slider.ol-focus .ol-popup>*{vertical-align:middle;display:inline-block}.ol-input-slider.ol-hover:hover .ol-popup>.ol-before,.ol-input-slider.ol-focus .ol-popup>.ol-before{margin-left:10px}.ol-input-slider.ol-hover:hover .ol-popup>.ol-after,.ol-input-slider.ol-focus .ol-popup>.ol-after{margin-right:10px}.ol-input-slider .ol-slider{vertical-align:middle;box-sizing:content-box;cursor:pointer;border:10px solid #0000;border-width:10px 15px;width:100px;height:3px;display:inline-block;position:relative;box-shadow:inset 0 0 0 1px #999}.ol-input-slider .ol-slider>.ol-cursor{pointer-events:none;background-color:#999;width:5px;height:10px;position:absolute;top:50%;transform:translate(-50%,-50%)}.ol-input-range .ol-slider{cursor:default;width:150px}.ol-input-range .ol-slider>.ol-cursor{pointer-events:all;cursor:pointer;background-color:#003c88;border-radius:50%;width:10px}.ol-input-range.ol-moving .ol-slider>.ol-cursor{pointer-events:none}.ol-input-range .ol-slider>.ol-back{pointer-events:none;background-color:#003c88;height:100%;position:absolute;top:50%;left:30%;right:20%;transform:translateY(-50%)}.ol-input-slider.ol-fixed:hover .ol-popup,.ol-input-slider.ol-fixed .ol-popup{-webkit-box-shadow:unset;box-shadow:unset;vertical-align:middle;background-color:#0000;display:inline-block;position:relative;left:0}.ol-input-slider.ol-fixed.ol-left .ol-popup{float:left}.ol-input-slider.ol-size .ol-slider{height:auto;-webkit-box-shadow:none;box-shadow:none}.ol-input-slider.ol-size .ol-slider .ol-back{color:#aaa;pointer-events:none;border-top:0 solid;border-bottom:20px solid;border-left:100px solid #0000;border-right:0 solid #0000;width:0}.ol-input-slider.ol-size .ol-slider>.ol-cursor{border:5px solid red;border-left:3px solid #0000;border-right:3px solid #0000;-o-border-image:initial;border-image:initial;background-color:#0000;width:2px;height:calc(100% + 4px);box-shadow:inset 3px 0 red}.ol-input-popup.ol-width li{padding:5px}.ol-input-popup.ol-width li>*{background-color:#369;width:100px;height:1em}.ol-input-popup.ol-width li>.ol-option-0{background-color:#0000;background-image:linear-gradient(90deg,#aaa 2px,#0000 2px);background-size:4px;height:1px;position:relative}html,body{height:100%;margin:0;padding:0}body{font-family:Calibri,sans-serif}.viewer-app{width:100%;height:100%;position:relative;overflow:hidden}.viewer-app:fullscreen{width:100%;height:100%}.viewer-app:fullscreen{width:100%;height:100%}.map{width:100%;height:100%}.ol-zoom,.ol-rotate,.ol-full-screen,.ol-graticule,.ol-screen-space-graticule,.viewer-panel-control,.layer-editor-control{background:#111;border-radius:4px;padding:0;overflow:hidden;box-shadow:0 2px 7px #0000004d}.ol-zoom:hover,.ol-rotate:hover,.ol-full-screen:hover,.ol-graticule:hover,.ol-screen-space-graticule:hover,.viewer-panel-control:hover,.layer-editor-control:hover{background:#111}.ol-zoom button,.ol-rotate button,.ol-full-screen button,.ol-graticule button,.ol-screen-space-graticule button,.viewer-panel-control button,.layer-editor-control button{color:#fff;cursor:pointer;background:#111;border:0;width:32px;height:32px;margin:0}.ol-zoom button:hover:not(:disabled),.ol-rotate button:hover:not(:disabled),.ol-full-screen button:hover:not(:disabled),.ol-graticule button:hover:not(:disabled),.ol-screen-space-graticule button:hover:not(:disabled),.viewer-panel-control button:hover:not(:disabled),.layer-editor-control button:hover:not(:disabled){color:#fff;background:#333;border-radius:4px;outline:none}.ol-zoom button:active:not(:disabled),.ol-rotate button:active:not(:disabled),.ol-full-screen button:active:not(:disabled),.ol-graticule button:active:not(:disabled),.ol-screen-space-graticule button:active:not(:disabled),.viewer-panel-control button:active:not(:disabled),.layer-editor-control button:active:not(:disabled){color:#fff;background:#555;border-radius:4px;outline:none}.ol-control button:disabled,.ol-control button:disabled:hover,.ol-control button:disabled:active,.ol-control button:disabled:focus,.ol-control.ol-toggle button:disabled,.ol-control.ol-toggle button:disabled:hover,.ol-control.ol-toggle button:disabled:active,.ol-control.ol-toggle button:disabled:focus{color:#fff;opacity:.4;cursor:default;pointer-events:none;background:#111;outline:none}.viewer-control-hidden{display:none!important}.ol-zoom{flex-direction:column;display:flex;top:8px;left:8px}.ol-zoom button{border-radius:0}.ol-zoom .ol-zoom-in,.ol-zoom .ol-zoom-in:hover,.ol-zoom .ol-zoom-in:active,.ol-zoom .ol-zoom-in:focus{border-radius:4px 4px 0 0}.ol-zoom .ol-zoom-out,.ol-zoom .ol-zoom-out:hover,.ol-zoom .ol-zoom-out:active,.ol-zoom .ol-zoom-out:focus{border-radius:0 0 4px 4px}.ol-zoom-level{box-sizing:border-box;color:#fff;cursor:default;-webkit-user-select:none;user-select:none;background:#111;border-top:1px solid #333;border-bottom:1px solid #333;justify-content:center;align-items:center;width:32px;height:26px;font-size:11px;font-weight:600;display:flex}.layer-editor-control{top:8px;left:50px;right:auto}.layer-editor-control button,.layer-editor-control button:hover,.layer-editor-control button:active,.layer-editor-control button:focus,.layer-editor-control button.active,.layer-editor-control button.active:hover,.layer-editor-control button.active:active,.layer-editor-control button.active:focus{border-radius:4px}.layer-editor{z-index:1000;box-sizing:border-box;color:#fff;background:#111;border-radius:10px;width:230px;position:absolute;top:50px;left:50px;overflow:hidden;box-shadow:0 3px 10px #00000059}.layer-editor.hidden{display:none}.layer-editor-header{border-bottom:1px solid #333;padding:12px 14px;font-size:13px;font-weight:600}.layer-editor-list{padding:12px 14px}.layer-editor-empty{color:#ccc;font-size:12px}.layer-editor-item{margin-bottom:14px}.layer-editor-item:last-child{margin-bottom:0}.layer-editor-item-header{align-items:center;gap:8px;margin-bottom:8px;display:flex}.layer-editor-visibility{accent-color:#1f5278;cursor:pointer;flex-shrink:0;margin:0}.layer-editor-name{color:#fff;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:12px;overflow:hidden}.layer-editor-order{flex-shrink:0;gap:3px;display:flex}.layer-editor-order button{color:#fff;cursor:pointer;background:#222;border:0;border-radius:4px;width:22px;height:22px;padding:0;font-size:9px}.layer-editor-order button:hover:not(:disabled){color:#fff;background:#333;outline:none}.layer-editor-order button:active:not(:disabled){color:#fff;background:#555;outline:none}.layer-editor-order button:focus{color:#fff;outline:none}.layer-editor-order button:disabled{color:#555;cursor:default;pointer-events:none;outline:none}.layer-editor-opacity{align-items:center;gap:9px;display:flex}.layer-editor-slider{accent-color:#1f5278;cursor:pointer;flex:1;min-width:0;margin:0}.layer-editor-value{color:#aaa;text-align:right;flex-shrink:0;width:32px;font-size:11px}.ol-rotate,.ol-full-screen,.ol-graticule,.ol-screen-space-graticule{border-radius:0;left:8px;right:auto}.ol-rotate{border-radius:4px 4px 0 0;top:108px}.ol-full-screen{top:140px}.ol-graticule{top:172px}.ol-screen-space-graticule{border-radius:0 0 4px 4px;top:204px}.ol-rotate button,.ol-full-screen button,.ol-graticule button,.ol-screen-space-graticule button{border-radius:0}.ol-rotate button,.ol-rotate button:hover,.ol-rotate button:active,.ol-rotate button:focus{border-radius:4px 4px 0 0}.ol-full-screen button,.ol-full-screen button:hover,.ol-full-screen button:active,.ol-full-screen button:focus,.ol-graticule button,.ol-graticule button:hover,.ol-graticule button:active,.ol-graticule button:focus{border-radius:0}.ol-screen-space-graticule button,.ol-screen-space-graticule button:hover,.ol-screen-space-graticule button:active,.ol-screen-space-graticule button:focus{border-radius:0 0 4px 4px}.viewer-panel-control{top:246px;left:8px;right:auto}.viewer-panel-control button,.viewer-panel-control button:hover,.viewer-panel-control button:active,.viewer-panel-control button:focus,.viewer-panel-control button.active,.viewer-panel-control button.active:hover,.viewer-panel-control button.active:active,.viewer-panel-control button.active:focus{border-radius:4px}.viewer-panel{z-index:1000;box-sizing:border-box;color:#fff;background:#111;border-radius:10px;width:240px;position:absolute;top:288px;left:8px;overflow:hidden;box-shadow:0 3px 10px #00000059}.viewer-panel.hidden{display:none}.viewer-panel-header{border-bottom:1px solid #333;padding:12px 14px;font-weight:600}.viewer-panel-section{border-bottom:1px solid #333;padding:12px 14px}.viewer-panel-section:last-child{border-bottom:0}.viewer-panel-section h2{color:#fff;margin:0 0 10px;font-size:13px}.current-slide{color:#ccc;overflow-wrap:anywhere;margin-bottom:10px;font-size:12px}.map .ol-custom-overviewmap{background:0 0;border-radius:4px;width:300px;height:284px;padding:0;transition:width .18s,height .18s;inset:8px 8px auto auto;overflow:hidden}.map .ol-custom-overviewmap.ol-collapsed{width:28px;height:28px}.map .ol-custom-overviewmap .ol-overviewmap-map,.map .ol-custom-overviewmap.ol-collapsed .ol-overviewmap-map{box-sizing:border-box;opacity:1;background:#fff;border:2px solid #444;border-radius:4px;width:300px;height:250px;margin:0;transition:opacity .16s,transform .18s;display:block;position:absolute;top:32px;right:0;overflow:hidden;transform:translateY(0)}.map .ol-custom-overviewmap.ol-collapsed .ol-overviewmap-map{opacity:0;pointer-events:none;transform:translateY(-8px)}.map .ol-custom-overviewmap .ol-overviewmap-map .ol-viewport{background:#fff}.map .ol-custom-overviewmap .ol-overviewmap-box{box-sizing:border-box;border:3px dotted #163a59}.map .ol-custom-overviewmap button,.map .ol-custom-overviewmap:not(.ol-collapsed) button{z-index:2;color:#fff;cursor:pointer;background:#111;border:0;border-radius:4px;width:28px;height:28px;margin:0;position:absolute;inset:0 0 auto auto}.map .ol-custom-overviewmap button:hover{color:#fff;background:#333;outline:none}.map .ol-custom-overviewmap button:active{color:#fff;background:#555;outline:none}.map .ol-custom-overviewmap button:focus{color:#fff;outline:none}.overview-toggle-icon{justify-content:center;align-items:center;width:100%;height:100%;font-size:11px;transition:transform .18s;display:flex}.ol-scale-line{background:#1111118c;border-radius:4px;padding:5px 8px;font-family:Calibri,sans-serif;bottom:8px;left:8px;box-shadow:0 2px 7px #00000040}.ol-scale-line-inner{color:#fff;border:1px solid #fff;border-bottom:0;margin:0;font-size:14px;line-height:1.2}.ol-mouse-position{z-index:100;color:#fff;background:#111;border-radius:4px;padding:6px 9px;font-family:Calibri,sans-serif;font-size:12px;position:absolute;inset:auto 8px 8px auto;box-shadow:0 2px 7px #0000004d}.ol-zoom button:focus,.ol-rotate button:focus,.ol-full-screen button:focus,.ol-graticule button:focus,.ol-screen-space-graticule button:focus,.viewer-panel-control button:focus,.layer-editor-control button:focus{color:#fff;outline:none}.ol-graticule.active button,.ol-screen-space-graticule.active button,.ol-full-screen button.ol-full-screen-true,.viewer-panel-control button.active,.layer-editor-control button.active{background:#163a59}.ol-graticule.active button:hover,.ol-screen-space-graticule.active button:hover,.ol-full-screen button.ol-full-screen-true:hover,.viewer-panel-control button.active:hover,.layer-editor-control button.active:hover{background:#1f5278}.ol-graticule.active button:active,.ol-screen-space-graticule.active button:active,.ol-full-screen button.ol-full-screen-true:active,.viewer-panel-control button.active:active,.layer-editor-control button.active:active{background:#555}.ol-layerswitcher,.ol-control.ol-layerswitcher{display:none} +>>>>>>> Stashed changes +======= +:root,:host{--ol-background-color:white;--ol-accent-background-color:#f5f5f5;--ol-subtle-background-color:#80808040;--ol-partial-background-color:#ffffffbf;--ol-foreground-color:#333;--ol-subtle-foreground-color:#666;--ol-brand-color:#0af}.ol-box{box-sizing:border-box;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color);border-radius:2px}.ol-mouse-position{position:absolute;top:8px;right:8px}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;padding:2px;position:absolute;bottom:8px;left:8px}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-align:center;will-change:contents, width;border-top:none;margin:1px;font-size:10px;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{background-color:var(--ol-foreground-color);float:right;z-index:10;width:1px;height:15px}.ol-scale-step-text{z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:10px;position:absolute;bottom:-5px}.ol-scale-text{text-align:center;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:12px;position:absolute;bottom:25px}.ol-scale-singlebar{z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color);height:10px;position:relative}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset;overflow:hidden}.ol-viewport{touch-action:pan-x pan-y}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{background-color:var(--ol-subtle-background-color);border-radius:4px;position:absolute}.ol-zoom{top:.5em;left:.5em}.ol-rotate{transition:opacity .25s linear,visibility linear;top:.5em;right:.5em}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{top:.5em;right:.5em}.ol-control button{color:var(--ol-subtle-foreground-color);font-weight:700;font-size:inherit;text-align:center;background-color:var(--ol-background-color);border:none;border-radius:2px;width:1.375em;height:1.375em;margin:1px;padding:0;line-height:.4em;text-decoration:none;display:block}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{will-change:transform;font-weight:400;display:block}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-decoration:none}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;flex-flow:row-reverse;align-items:center;max-width:calc(100% - 1.3em);display:flex;bottom:.5em;right:.5em}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);margin:0;padding:1px .5em;font-size:12px}.ol-attribution li{list-style:none;display:inline}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{border-radius:4px 0 0;bottom:0;right:0}.ol-attribution.ol-uncollapsible img{max-height:1.6em;margin-top:-.2em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{height:200px;top:4.5em;left:.5em}.ol-zoomslider button{height:10px;position:relative}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{bottom:.5em;left:.5em}.ol-overviewmap.ol-uncollapsible{border-radius:0 4px 0 0;bottom:0;left:0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);width:150px;height:150px}.ol-overviewmap:not(.ol-collapsed) button{position:absolute;bottom:0;left:0}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.ol-overviewmap .ol-viewport:hover{cursor:pointer}.ol-control i{cursor:default}.ol-control.ol-bar{white-space:nowrap;min-width:1em;min-height:1em;position:absolute;top:.5em;left:50%;transform:translate(-50%)}.ol-control.ol-toggle .ol-option-bar{display:none}.ol-control.ol-bar .ol-control{vertical-align:middle;background-color:#0000;margin:0;padding:0;display:inline-block;position:relative;inset:auto;transform:none}.ol-control.ol-bar .ol-bar{position:static}.ol-control.ol-bar .ol-control button{outline:none;margin:2px 1px}.ol-control.ol-bar.ol-left{top:50%;left:.5em;transform:translateY(-50%)}.ol-control.ol-bar.ol-left .ol-control{display:block}.ol-control.ol-bar.ol-right{top:50%;left:auto;right:.5em;transform:translateY(-50%)}.ol-control.ol-bar.ol-right .ol-control{display:block}.ol-control.ol-bar.ol-bottom{top:auto;bottom:.5em}.ol-control.ol-bar.ol-top.ol-left,.ol-control.ol-bar.ol-top.ol-right{top:4.5em;transform:none}.ol-touch .ol-control.ol-bar.ol-top.ol-left,.ol-touch .ol-control.ol-bar.ol-top.ol-right{top:5.5em}.ol-control.ol-bar.ol-bottom.ol-left,.ol-control.ol-bar.ol-bottom.ol-right{top:auto;bottom:.5em;transform:none}.ol-control.ol-bar.ol-group{margin:1px 1px 1px 0}.ol-control.ol-bar.ol-right .ol-group,.ol-control.ol-bar.ol-left .ol-group{margin:1px 1px 0}.ol-control.ol-bar.ol-group button{border-radius:0;margin:0 0 0 1px}.ol-control.ol-bar.ol-right.ol-group button,.ol-control.ol-bar.ol-left.ol-group button,.ol-control.ol-bar.ol-right .ol-group button,.ol-control.ol-bar.ol-left .ol-group button{margin:0 0 1px}.ol-control.ol-bar.ol-group .ol-control:first-child>button{border-radius:5px 0 0 5px}.ol-control.ol-bar.ol-group .ol-control:last-child>button{border-radius:0 5px 5px 0}.ol-control.ol-bar.ol-left.ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-right.ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-left .ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-right .ol-group .ol-control:first-child>button{border-radius:5px 5px 0 0}.ol-control.ol-bar.ol-left.ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-right.ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-left .ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-right .ol-group .ol-control:last-child>button{border-radius:0 0 5px 5px}.ol-control.ol-bar .ol-rotate{opacity:1;visibility:visible}.ol-control.ol-bar .ol-rotate button{display:block}.ol-control.ol-bar .ol-toggle.ol-active>button,.ol-control.ol-bar .ol-toggle.ol-active button:hover{color:#fff;background-color:#0af}.ol-control.ol-toggle button:disabled{background-color:#ccc}.ol-control.ol-bar .ol-control.ol-option-bar{background-color:#fffc;border-radius:0;margin:5px 0;display:none;position:absolute;top:100%;left:0;box-shadow:0 0 0 1px #003c8880,1px 1px 2px #00000080}.ol-control.ol-bar .ol-option-bar:before{content:"";pointer-events:none;border:.5em solid #0000;border-bottom-color:#003c8880;position:absolute;bottom:100%;left:.3em}.ol-control.ol-bar .ol-option-bar .ol-control{display:table-cell}.ol-control.ol-bar .ol-control .ol-bar{display:none}.ol-control.ol-bar .ol-control.ol-active>.ol-option-bar{display:block}.ol-control.ol-bar .ol-control.ol-collapsed ul{display:none}.ol-control.ol-bar .ol-control.ol-text-button>div:hover,.ol-control.ol-bar .ol-control.ol-text-button>div{color:#003c8880;background-color:#0000;width:auto;min-width:1.375em;margin:0}.ol-control.ol-bar .ol-control.ol-text-button{border-left:1px solid #003c88cc;border-radius:0;font-size:.9em}.ol-control.ol-bar .ol-control.ol-text-button:first-child{border-left:0}.ol-control.ol-bar .ol-control.ol-text-button>div{padding:.11em .3em;font-family:Arial,Helvetica,sans-serif;font-size:1.14em;font-weight:400}.ol-control.ol-bar .ol-control.ol-text-button div:hover{color:#003c88}.ol-control.ol-bar.ol-bottom .ol-option-bar{top:auto;bottom:100%}.ol-control.ol-bar.ol-bottom .ol-option-bar:before{border-color:#003c8880 #0000 #0000;top:100%;bottom:auto}.ol-control.ol-bar.ol-left .ol-option-bar{margin:0 5px;top:0;bottom:auto;left:100%}.ol-control.ol-bar.ol-left .ol-option-bar:before{border-color:#0000 #003c8880 #0000 #0000;inset:.3em 100% auto auto}.ol-control.ol-bar.ol-right .ol-option-bar{margin:0 5px;inset:0 100% auto auto}.ol-control.ol-bar.ol-right .ol-option-bar:before{border-color:#0000 #0000 #0000 #003c8880;top:.3em;bottom:auto;left:100%}.ol-control.ol-bar.ol-left .ol-option-bar .ol-option-bar,.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar{margin:5px 0;inset:100% auto auto .3em}.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar{left:auto;right:.3em}.ol-control.ol-bar.ol-left .ol-option-bar .ol-option-bar:before,.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar:before{border-color:#0000 #0000 #003c8880;inset:auto auto 100% .3em}.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar:before{left:auto;right:.3em}.ol-control-title{position:absolute;top:0;left:0;right:0}.ol-center-position{background-color:#fffc;padding:.1em 1em;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.ol-compassctrl{display:none;top:1em;left:auto;right:1em}.ol-compassctrl.ol-visible{display:block!important}.ol-ext-dialog{opacity:0;z-index:1000;background-color:#00000080;width:150%;height:100%;transition:opacity .2s,top 0s .2s;position:fixed;top:-100%;left:0;pointer-events:none!important}.ol-ext-dialog.ol-visible{opacity:1;transition:opacity .2s,top;top:0;pointer-events:all!important}.ol-viewport .ol-ext-dialog{position:absolute}.ol-ext-dialog>form>h2{text-overflow:ellipsis;white-space:nowrap;margin:0 .5em .5em 0;display:none;overflow:hidden}.ol-ext-dialog>form.ol-title>h2{display:block}.ol-ext-dialog>form{box-sizing:border-box;background-color:#fff;border:1px solid #333;min-width:5em;max-width:60%;min-height:3em;max-height:100%;padding:1em;transition:top .2s,transform .2s;position:absolute;top:0;left:33.33%;overflow:hidden auto;transform:translate(-50%,-30%);box-shadow:3px 3px 4px #00000080}dialog.ol-ext-dialog>form{width:max-content;max-width:90%;left:50%}.ol-ext-dialog>form.ol-closebox{padding-top:1.5em}.ol-ext-dialog>form.ol-title{padding-top:1em}.ol-ext-dialog>form.ol-button{padding-bottom:.5em}.ol-ext-dialog.ol-zoom>form{top:30%;transform:translate(-50%,-30%)scale(0)}.ol-ext-dialog.ol-visible>form{top:30%}.ol-ext-dialog.ol-zoom.ol-visible>form{transform:translate(-50%,-30%)scale(1)}.ol-ext-dialog>form .ol-content{overflow:hidden auto}.ol-ext-dialog>form .ol-closebox{cursor:pointer;width:1em;height:1em;display:none;position:absolute;top:.5em;right:.5em}.ol-ext-dialog>form.ol-closebox .ol-closebox{display:block}.ol-ext-dialog>form .ol-closebox:before,.ol-ext-dialog>form .ol-closebox:after{content:"";background-color:currentColor;border-radius:.1em;width:1em;height:.1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-ext-dialog>form .ol-closebox:before{transform:translate(-50%,-50%)rotate(-45deg)}.ol-ext-dialog>form .ol-buttons{text-align:right;overflow-x:hidden}.ol-ext-dialog>form .ol-buttons input{color:#003c88;cursor:pointer;background:0 0;border:0;border-radius:.25em;margin-top:.5em;padding:.5em;font-size:1em}.ol-ext-dialog>form .ol-buttons input:hover{background-color:#003c881a}.ol-ext-dialog>form .ol-buttons input[type=submit]{font-weight:700}.ol-ext-dialog .ol-progress-message{text-align:center;padding-bottom:.5em;font-size:.9em}.ol-ext-dialog .ol-progress-bar{border:1px solid #369;width:20em;max-width:100%;height:1em;margin:.5em auto 0;padding:2px;overflow:hidden}.ol-ext-dialog .ol-progress-bar>div{background:#369;width:50%;height:100%;transition:width .3s}.ol-ext-dialog .ol-progress-bar>div.notransition{transition:unset}.ol-ext-dialog.ol-fullscreen-dialog form{text-align:center;max-width:calc(66.6% - 2em);-webkit-box-shadow:none;box-shadow:none;color:#fff;background:0 0;border:none;inset:1em;transform:none}.ol-ext-dialog.ol-fullscreen-dialog form .ol-closebox{font-size:2em;top:0;right:0}.ol-ext-dialog.ol-fullscreen-dialog .ol-closebox:before,.ol-ext-dialog.ol-fullscreen-dialog .ol-closebox:after{border:.1em solid}.ol-ext-dialog.ol-fullscreen-dialog img,.ol-ext-dialog.ol-fullscreen-dialog video{max-width:100%}body>.ol-ext-dialog .ol-content{max-height:calc(100vh - 10em)}body>.ol-ext-dialog>form{overflow:visible}.ol-editbar .ol-button button{box-sizing:border-box;vertical-align:middle;font-style:normal;display:inline-block;position:relative}.ol-editbar .ol-button button:before,.ol-editbar .ol-button button:after{content:"";box-sizing:border-box;background-color:currentColor;border-width:0;position:absolute}.ol-editbar .ol-button button:focus{outline:none}.ol-editbar .ol-selection>button:before{background-color:#0000;border:.25em solid #0000;border-top:0 solid;border-bottom:.65em solid;width:.6em;height:1em;top:.35em;left:.5em;transform:translate(-50%,-50%)rotate(-30deg);box-shadow:0 .6em 0 -.23em}.ol-editbar .ol-selection0>button:after{background-color:#0000;border:.05em solid #0000;border-top:0 solid;border-bottom:.7em solid;width:.28em;height:.6em;top:.5em;left:.7em;transform:rotate(-45deg)}.ol-editbar .ol-delete button:after,.ol-editbar .ol-delete button:before{width:1em;height:.2em;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-editbar .ol-delete button:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-editbar .ol-info button:before{border-radius:.03em;width:.25em;height:.6em;top:.47em;left:50%;transform:translate(-50%)}.ol-editbar .ol-info button:after{border-radius:.03em;width:.25em;height:.2em;top:.12em;left:50%;transform:translate(-50%);box-shadow:-.1em .35em,-.1em .82em,.1em .82em}.ol-editbar .ol-drawpoint button:before{background-color:#0000;border:.15em solid;border-radius:50%;width:.7em;height:.7em;top:.2em;left:50%;transform:translate(-50%)}.ol-editbar .ol-drawpoint button:after{background-color:#0000;border:.2em solid #0000;border-top:.4em solid;border-bottom:0 solid;width:.4em;height:.4em;top:.8em;left:50%;transform:translate(-50%)}.ol-editbar .ol-drawline>button:before,.ol-editbar .ol-drawpolygon>button:before,.ol-editbar .ol-drawhole>button:before{background-color:#0000;border:.13em solid;border-width:.2em .13em .09em;width:.8em;height:.8em;top:.2em;left:.25em;transform:rotate(10deg)perspective(1em)rotateX(40deg)}.ol-editbar .ol-drawline>button:before{border-bottom:0}.ol-editbar .ol-drawline>button:after,.ol-editbar .ol-drawhole>button:after,.ol-editbar .ol-drawpolygon>button:after{width:.3em;height:.3em;top:.2em;left:.25em;box-shadow:-.2em .55em,.6em .1em,.65em .7em}.ol-editbar .ol-drawhole>button:after{box-shadow:-.2em .55em,.6em .1em,.65em .7em,.25em .35em}.ol-editbar .ol-offset>button i,.ol-editbar .ol-transform>button i{width:.9em;height:.9em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-editbar .ol-offset>button i{width:.8em;height:.8em}.ol-editbar .ol-offset>button i:before,.ol-editbar .ol-transform>button i:before,.ol-editbar .ol-transform>button i:after{content:"";background-color:currentColor;width:.1em;height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg);box-shadow:.5em 0 0 .1em,-.5em 0 0 .1em}.ol-editbar .ol-offset>button i:before{box-shadow:.45em 0 0 .1em,-.45em 0 0 .1em}.ol-editbar .ol-transform>button i:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-editbar .ol-split>button:before{border-radius:50%;width:.3em;height:.3em;top:.81em;left:.75em;box-shadow:.1em -.4em,-.15em -.25em}.ol-editbar .ol-split>button:after{background-color:#0000;border:.2em solid;border-width:0 .2em .2em 0;border-radius:.1em;width:.8em;height:.8em;top:.15em;left:-.1em;transform:rotate(20deg)scaleY(.6)rotate(-45deg)}.ol-editbar .ol-drawregular>button:before{background-color:#0000;border:.1em solid;width:.9em;height:.9em;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div{cursor:pointer;vertical-align:text-bottom;border:.5em solid #0000;border-color:#0000 currentColor;display:inline-block}.ol-editbar .ol-drawregular .ol-bar:before,.ol-control.ol-bar.ol-editbar .ol-drawregular .ol-bar{left:50%;transform:translate(-50%)}.ol-editbar .ol-drawregular .ol-bar .ol-text-button{text-align:center;min-width:6em}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div:first-child{border-width:.5em .5em .5em 0;margin:0 .5em 0 0}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div:last-child{border-width:.5em 0 .5em .5em;margin:0 0 0 .5em}.ol-feature-list{position:relative}.ol-control.ol-feature-list{width:100%;position:absolute;bottom:0;left:0}.ol-control.ol-feature-list>button:before{content:"";background-image:linear-gradient(90deg,currentColor,#0000);width:60%;height:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 2.5px}.ol-control.ol-feature-list.ol-collapsed{width:auto;bottom:.5em;left:.5em}.ol-feature-list .ol-content{clear:both;background-color:#f4f6f8}.ol-feature-list.ol-collapsed .ol-content>*{display:none}.ol-feature-list .ol-header{position:relative;overflow:hidden}.ol-feature-list.ol-collapsed .ol-header{display:block}.ol-control.ol-feature-list>button,.ol-control.ol-feature-list.ol-collapsed .ol-content{display:none}.ol-control.ol-feature-list.ol-collapsed>button{display:block}.ol-feature-list .ol-sizer{cursor:row-resize;background-color:#ccc;border:1px solid #f4f6f8;border-width:1px 0;width:100%;height:1px;position:relative}.ol-feature-list.ol-bottom .ol-sizer{position:absolute;bottom:0}.ol-feature-list .ol-sizer:before{content:"";z-index:1;background-color:#ddd;border:3px solid #0000;border-width:3px 1.5em;border-radius:2px;width:1.5em;height:4px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 -1px #aaa,inset 0 1px #aaa}.ol-feature-list .ol-sizer:hover:before{background-color:#ccc}.ol-feature-list .ol-content .ol-header p{vertical-align:middle;white-space:nowrap;text-overflow:ellipsis;width:calc(100% - 2em);margin:.1em .25em;display:inline-block;overflow:hidden}.ol-feature-list .ol-content .ol-header .ol-buttons{position:absolute;top:50%;right:0;transform:translateY(-50%)}.ol-feature-list .ol-content .ol-header button{vertical-align:middle;box-sizing:border-box;background:0 0;border:0;width:1em;height:1em;margin:0 .2em;position:relative}.ol-feature-list .ol-content .ol-header button.ol-closebox:before,.ol-feature-list .ol-content .ol-header button.ol-closebox:after{content:"";background:currentColor;width:.1em;height:1em;font-style:normal;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-feature-list .ol-content .ol-header button.ol-closebox:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox{border:1px solid}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox:before{transform:translate(-50%,-50%)rotate(90deg)}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox:after{display:none}.ol-feature-list .ol-scroll-container{height:10em;min-height:3em;overflow:auto}.ol-feature-list .ol-scroll-container:focus{outline:unset}.ol-feature-list table{border-collapse:collapse;white-space:nowrap;background-color:#fff;position:relative}.ol-feature-list table thead{background-color:#f4f6f8;position:sticky;top:0;overflow:hidden}.ol-feature-list table tr{box-sizing:border-box;height:1.4em}.ol-feature-list table tbody tr:hover{cursor:pointer;background-color:#eee}.ol-feature-list table tbody tr.ol-selected{background-color:#eee}.ol-feature-list table td{border:0 solid #ddd;border-width:0 0 1px 1px;width:100px;overflow:hidden}.ol-feature-list table td.number{text-align:right}.ol-feature-list table td.undefined{text-align:center;background-color:#fafafa}.ol-feature-list table tr:hover td,.ol-feature-list table .ol-selected td{background-color:#0000}.ol-feature-list thead td{position:relative}.ol-feature-list thead td.sort{padding-right:1.5em}.ol-feature-list thead td p{margin:0;display:inline-block}.ol-feature-list table td button{background-color:#0000;border:0;width:1.2em;height:1.4em;margin:.1em 0;padding:0;position:absolute;top:0;right:0}.ol-feature-list thead td button.sort:before{content:"⇅";cursor:pointer;font-size:1em;font-style:normal;font-weight:400;line-height:1em}.ol-feature-list thead td button.sortup:before{content:"↧"}.ol-feature-list thead td button.sortdown:before{content:"↥"}.ol-gauge{background-color:#ffffff80;padding:.1em .5em;top:.5em;left:50%;transform:translate(-50%)}.ol-gauge>*{vertical-align:middle;display:inline-block}.ol-gauge>span{margin:0 .5em 0 0}.ol-gauge>div{border:1px solid #003c8880;border-radius:3px;width:200px;padding:1px;display:inline-block}.ol-gauge button{max-width:100%;height:.8em;margin:0}.ol-control.ol-bookmark{background-color:#ffffff80;top:.5em;left:3em}.ol-control.ol-bookmark button{position:relative}.ol-control.ol-bookmark>button:before{content:"";border:5px solid;border-top-width:10px;border-bottom:4px solid #0000;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-bookmark>div{min-width:5em;display:block}.ol-control.ol-bookmark.ol-collapsed>div{display:none}.ol-control.ol-bookmark input{margin:0 .5em .5em;padding:0 .5em;font-size:.9em}.ol-control.ol-bookmark ul{min-width:10em;margin:0 0 .5em;padding:0;list-style:none}.ol-control.ol-bookmark li{color:#003c88cc;cursor:default;clear:both;padding:0 .2em 0 .5em;font-size:.9em}.ol-control.ol-bookmark li:hover{color:#fff;background-color:#003c8880}.ol-control.ol-bookmark>div button{float:right;cursor:pointer;background-color:#0000;border-radius:0;width:1em;height:.8em}.ol-control.ol-bookmark>div button:before{content:"⨯";color:#936;border-radius:0;font-size:1.2em;line-height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-bookmark ul li button,.ol-bookmark input{display:none}.ol-bookmark.ol-editable ul li button,.ol-bookmark.ol-editable input{display:block}.ol-control.ol-geobt{inset:auto .5em 3em auto}.ol-touch .ol-control.ol-geobt{bottom:3.5em}.ol-control.ol-geobt button:before{content:"";background:0 0;border:.16em solid;border-radius:50%;width:.4em;height:.4em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-geobt button:after{content:"";background:0 0;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.42em 0,-.42em 0,0 .42em,0 -.42em}.ol-control.ol-bar.ol-geobar .ol-control{vertical-align:middle;display:inline-block}.ol-control.ol-bar.ol-geobar .ol-bar{display:none}.ol-bar.ol-geobar.ol-active .ol-bar{display:inline-block}.ol-bar.ol-geobar .geolocBt button:before,.ol-bar.ol-geobar .geolocBt button:after{content:"";border-top:.3em solid;border-bottom:0 solid #0000;border-left:.2em solid #0000;border-right:.8em solid #0000;font-size:1.2em;display:block;position:absolute;top:.45em;left:.15em;transform:rotate(-30deg)}.ol-bar.ol-geobar .geolocBt button:after{border-width:0 .8em .3em .2em;border-color:#0000 #0000 currentColor;transform:rotate(-61deg)}.ol-bar.ol-geobar .startBt button:before{content:"";background-color:#800;border-radius:50%;width:1em;height:1em;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-bar.ol-geobar .pauseBt button:before,.ol-bar.ol-geobar .pauseBt button:after{content:"";background-color:currentColor;width:.25em;height:1em;display:block;position:absolute;top:50%;left:35%;transform:translate(-50%,-50%)}.ol-bar.ol-geobar .pauseBt button:after{left:65%}.ol-control.ol-bar.ol-geobar .centerBt,.ol-control.ol-bar.ol-geobar .pauseBt,.ol-bar.ol-geobar.pauseTrack .startBt,.ol-bar.ol-geobar.centerTrack .startBt,.ol-bar.ol-geobar.centerTrack.pauseTrack .pauseBt,.ol-bar.ol-geobar.centerTrack .pauseBt{display:none}.ol-bar.ol-geobar.pauseTrack .pauseBt,.ol-bar.ol-geobar.centerTrack .centerBt{display:inline-block}.ol-control.ol-globe{opacity:.7;transform-origin:0 100%;border-radius:50%;position:absolute;bottom:.5em;left:.5em;transform:scale(.5)}.ol-control.ol-globe:hover{opacity:.9}.ol-control.ol-globe .panel{cursor:pointer;background-color:#fff;border-radius:50%;width:170px;height:170px;display:block;overflow:hidden;box-shadow:0 0 10px 5px #ffffff80}.ol-control.ol-globe .panel .ol-viewport{border-radius:50%}.ol-control.ol-globe .ol-pointer{z-index:1;background-color:#fff;border:10px solid red;border-radius:50%;width:10px;height:10px;transition:opacity .15s,top,left;display:block;position:absolute;top:50%;left:50%;transform:translate(-15px,-40px)}.ol-control.ol-globe .ol-pointer.hidden{opacity:0;transition:opacity .15s,top 3s,left 5s}.ol-control.ol-globe .ol-pointer:before{content:"";border-radius:50%;width:0;height:0;display:block;position:absolute;top:23px;left:0;box-shadow:6px 6px 10px 5px #000}.ol-control.ol-globe .ol-pointer:after{content:"";border:10px solid #0000;border-top:20px solid red;border-bottom:0 solid red;width:0;height:0;display:block;position:absolute;top:100%;left:-50%}.ol-control.ol-globe .panel:before{content:"";z-index:1;border-radius:50%;width:100%;height:100%;display:block;position:absolute;top:0;left:0;box-shadow:inset -20px -20px 80px 2px #000000b3}.ol-control.ol-globe .panel:after{content:"";z-index:1;border-radius:50%;width:20%;height:0;display:block;position:absolute;top:20%;left:23%;transform:rotate(-40deg);box-shadow:0 0 20px 7px #fff}.ol-control.ol-globe.ol-collapsed .panel{display:none}.ol-control-top.ol-globe{transform-origin:0 0;top:5em;bottom:auto}.ol-control-right.ol-globe{transform-origin:100% 100%;left:auto;right:.5em}.ol-control-right.ol-control-top.ol-globe{transform-origin:100% 0;left:auto;right:.5em}.ol-gridreference{background:#fff;border:1px solid #000;max-height:100%;top:0;right:0;overflow:auto}.ol-gridreference input{width:100%}.ol-gridreference ul{margin:0;padding:0;list-style:none}.ol-gridreference li{cursor:pointer;padding:0 .5em}.ol-gridreference ul li:hover{background-color:#ccc}.ol-gridreference li.ol-title,.ol-gridreference li.ol-title:hover{color:#fff;cursor:default;background:#003c8880}.ol-gridreference ul li .ol-ref{margin-left:.5em}.ol-gridreference ul li .ol-ref:before{content:"("}.ol-gridreference ul li .ol-ref:after{content:")"}.ol-control.ol-imageline{border-radius:0;padding:0;transition:all .3s;bottom:0;left:0;right:0;overflow:visible}.ol-control.ol-imageline.ol-collapsed{transform:translateY(100%)}.ol-imageline>div{white-space:nowrap;scroll-behavior:smooth;width:100%;height:4em;position:relative;overflow:hidden}.ol-imageline>div.ol-move{scroll-behavior:unset}.ol-control.ol-imageline button{margin:.65em;position:absolute;top:-1em;transform:translateY(-100%);box-shadow:0 0 0 .15em #fff6}.ol-control.ol-imageline button:before{content:"";border:.15em solid;border-width:.15em .15em 0 0;width:.4em;height:.4em;position:absolute;top:40%;left:50%;transform:translate(-50%,-50%)rotate(135deg)}.ol-control.ol-imageline.ol-collapsed button:before{top:60%;transform:translate(-50%,-50%)rotate(-45deg)}.ol-imageline,.ol-imageline:hover{background-color:#000000bf}.ol-imageline.ol-arrow:after,.ol-imageline.ol-arrow:before{content:"";z-index:1;opacity:.8;pointer-events:none;border:1em solid #fff;border-left:0 solid #000;border-right:.6em solid #000;position:absolute;top:50%;left:.2em;transform:translateY(-50%);box-shadow:-.6em 0 0 1em #fff}.ol-imageline.ol-arrow:after{border-width:1em 0 1em .6em;left:auto;right:.2em;box-shadow:.6em 0 0 1em #fff}.ol-imageline.ol-scroll0.ol-arrow:before,.ol-imageline.ol-scroll1.ol-arrow:after{display:none}.ol-imageline .ol-image{cursor:pointer;height:100%;display:inline-block;position:relative}.ol-imageline img{box-sizing:border-box;opacity:0;border:.25em solid #0000;max-height:100%;transition:all 1s}.ol-imageline img.ol-loaded{opacity:1}.ol-imageline .ol-image.select{background-color:#fff}.ol-imageline .ol-image span{color:#fff;white-space:normal;text-align:center;background-color:#00000080;width:125%;max-height:2.4em;font-size:.8em;line-height:1.2em;display:none;position:absolute;bottom:0;left:50%;overflow:hidden;transform:translate(-50%)scaleX(.8)}.ol-imageline .ol-image:hover span{display:block}.ol-control.ol-routing.ol-isochrone .ol-method-time,.ol-control.ol-routing.ol-isochrone .ol-method-distance,.ol-control.ol-routing.ol-isochrone>button{position:relative}.ol-control.ol-routing.ol-isochrone .ol-method-time:before,.ol-control.ol-routing.ol-isochrone>button:before{content:"";clip:unset;border:.1em solid;border-radius:50%;width:.8em;height:.8em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 -.5em 0 -.35em,.4em -.35em 0 -.35em}.ol-control.ol-routing.ol-isochrone .ol-method-time:after,.ol-control.ol-routing.ol-isochrone>button:after{content:"";-webkit-box-shadow:none;box-shadow:none;box-sizing:border-box;clip:unset;border:.3em solid #0000;border-right-color:currentColor;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-60deg)}.ol-control.ol-routing.ol-isochrone .ol-method-distance:before{content:"";box-sizing:border-box;border:.1em solid;width:1em;height:.5em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-30deg)}.ol-control.ol-routing.ol-isochrone .ol-method-distance:after{content:"";width:.1em;height:.15em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-30deg);box-shadow:inset 0 -.15em,0 .1em,.25em .1em,-.25em .1em}.ol-control.ol-routing.ol-isochrone .ol-direction-direct:before,.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:before{content:"";box-sizing:border-box;border:.1em solid;border-radius:50%;width:.3em;height:.3em;position:absolute;top:50%;left:30%;transform:translate(-50%,-50%);box-shadow:.25em 0 0 -.05em}.ol-control.ol-routing.ol-isochrone .ol-direction-direct:after,.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:after{content:"";border:.4em solid #0000;border-left-color:currentColor;border-right:0 solid;position:absolute;top:50%;left:70%;transform:translate(-50%,-50%)}.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:after{border-width:.4em .4em .4em 0}.ol-control.ol-isochrone.ol-collapsed .content{display:none}.ol-control.ol-isochrone input[type=number]{text-align:right;width:3em;margin:0 .1em}.ol-control.ol-isochrone .ol-distance input[type=number]{width:5em}.ol-isochrone .ol-time,.ol-isochrone .ol-distance{display:none}.ol-isochrone .ol-time.selected,.ol-isochrone .ol-distance.selected{display:block}.ol-control.ol-layerswitcher-popup{text-align:left;position:absolute;top:3em;right:.5em}.ol-control.ol-layerswitcher-popup .panel{clear:both;background:#fff}.ol-layerswitcher-popup .panel{margin:0;padding:.25em;list-style:none;overflow:hidden}.ol-layerswitcher-popup .panel ul{padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher-popup.ol-collapsed .panel{display:none}.ol-layerswitcher-popup.ol-forceopen .panel{display:block}.ol-layerswitcher-popup button{float:right;background-color:#fff;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACE1BMVEX///8A//8AgICA//8AVVVAQID///8rVVVJtttgv98nTmJ2xNgkW1ttyNsmWWZmzNZYxM4gWGgeU2JmzNNr0N1Rwc0eU2VXxdEhV2JqytQeVmMhVmNoydUfVGUgVGQfVGQfVmVqy9hqy9dWw9AfVWRpydVry9YhVmMgVGNUw9BrytchVWRexdGw294gVWQgVmUhVWPd4N6HoaZsy9cfVmQgVGRrytZsy9cgVWQgVWMgVWRsy9YfVWNsy9YgVWVty9YgVWVry9UgVWRsy9Zsy9UfVWRsy9YgVWVty9YgVWRty9Vsy9aM09sgVWRTws/AzM0gVWRtzNYgVWRuy9Zsy9cgVWRGcHxty9bb5ORbxdEgVWRty9bn6OZTws9mydRfxtLX3Nva5eRix9NFcXxOd4JPeINQeIMiVmVUws9Vws9Vw9BXw9BYxNBaxNBbxNBcxdJexdElWWgmWmhjyNRlx9IqXGtoipNpytVqytVryNNrytZsjZUuX210k5t1y9R2zNR3y9V4lp57zth9zdaAnKOGoaeK0NiNpquV09mesrag1tuitbmj1tuj19uktrqr2d2svcCu2d2xwMO63N+7x8nA3uDC3uDFz9DK4eHL4eLN4eIyYnDX5OM5Z3Tb397e4uDf4uHf5uXi5ePi5+Xj5+Xk5+Xm5+Xm6OY6aHXQ19fT4+NfhI1Ww89gx9Nhx9Nsy9ZWw9Dpj2abAAAAWnRSTlMAAQICAwQEBgcIDQ0ODhQZGiAiIyYpKywvNTs+QklPUlNUWWJjaGt0dnd+hIWFh4mNjZCSm6CpsbW2t7nDzNDT1dje5efr7PHy9PT29/j4+Pn5+vr8/f39/f6DPtKwAAABTklEQVR4Xr3QVWPbMBSAUTVFZmZmhhSXMjNvkhwqMzMzMzPDeD+xASvObKePPa+ffHVl8PlsnE0+qPpBuQjVJjno6pZpSKXYl7/bZyFaQxhf98hHDKEppwdWIW1frFnrxSOWHFfWesSEWC6R/P4zOFrix3TzDFLlXRTR8c0fEEJ1/itpo7SVO9Jdr1DVxZ0USyjZsEY5vZfiiAC0UoTGOrm9PZLuRl8X+Dq1HQtoFbJZbv61i+Poblh/97TC7n0neCcK0ETNUrz1/xPHf+DNAW9Ac6t8O8WH3Vp98f5lCaYKAOFZMLyHL4Y0fe319idMNgMMp+zWVSybUed/+/h7I4wRAG1W6XDy4XmjR9HnzvDRZXUAYDFOhC1S/Hh+fIXxen+eO+AKqbs+wAo30zDTDvDxKoJN88sjUzDFAvBzEUGFsnADoIvAJzoh2BZ8sner+Ke/vwECuQAAAABJRU5ErkJggg==);background-position:50%;background-repeat:no-repeat;width:38px;height:38px}.ol-layerswitcher-popup li{color:#369;cursor:pointer;padding:.25em 1em;font-family:Trebuchet MS,Helvetica,sans-serif}.ol-layerswitcher-popup li.ol-header{display:none}.ol-layerswitcher-popup li.select,.ol-layerswitcher-popup li.ol-visible{color:#fff;background:#003c88b3}.ol-layerswitcher-popup li:hover{color:#fff;background:#003c88e6}.ol-control.ol-layerswitcher.ol-layer-shop{height:calc(100% - 4em);max-height:unset;background-color:#0000;max-width:16em;overflow:visible;pointer-events:none!important}.ol-control.ol-layerswitcher>*{pointer-events:auto}.ol-control.ol-layer-shop>button,.ol-control.ol-layer-shop .panel-container{box-shadow:0 0 0 3px #ffffff80}.ol-control.ol-layerswitcher.ol-layer-shop .panel-container{border:2px solid #369;border-width:2px 0;max-height:calc(100% - 6.5em);padding:0;overflow-y:scroll}.ol-control.ol-layer-shop .panel{box-sizing:border-box;margin:.25em .5em;padding:0}.ol-control.ol-layerswitcher.ol-layer-shop .panel-container.ol-scrolldiv{overflow:hidden}.ol-control.ol-layer-shop .ol-scroll{opacity:.5;background-color:#0000004d}.ol-layerswitcher.ol-layer-shop ul.panel li.ol-header{display:none}.ol-layerswitcher.ol-layer-shop ul.panel li{margin-right:0;padding-right:0}.ol-layerswitcher.ol-layer-shop .layerup{box-sizing:border-box;color:#003c88;background-color:#0000;border-radius:3px;width:1.4em;height:1.5em;margin:0}.ol-layerswitcher.ol-layer-shop .layerup:hover{background-color:#003c884d}.ol-layerswitcher.ol-layer-shop .layerup:before{background-color:currentColor;border:0;width:1em;height:2px;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 -4px,0 4px}.ol-layerswitcher.ol-layer-shop .layerup:after{content:unset}.ol-control.ol-layer-shop .ol-title-bar{box-sizing:border-box;text-overflow:ellipsis;white-space:nowrap;text-align:right;transform-origin:100% 0;background-color:#ffffff80;max-width:14.6em;height:calc(2.8em - 4px);padding:.7em .5em;font-size:.9em;transition:transform .1s,width;overflow:hidden;transform:scaleY(1.1)}.ol-control.ol-layer-shop:hover .ol-title-bar{background-color:#ffffffb3}.ol-control.ol-layer-shop.ol-collapsed .ol-title-bar{max-width:10em;transform:scale(.9,1.1)}.ol-control.ol-layer-shop.ol-forceopen .ol-title-bar{max-width:14.6em;transform:scaleY(1.1)}.ol-control.ol-layer-shop .ol-bar{clear:both;text-align:right;z-index:10;background-color:#fff;height:1.75em;position:relative;box-shadow:0 0 0 3px #ffffff80}.ol-control.ol-layer-shop.ol-collapsed .ol-scroll,.ol-control.ol-layer-shop.ol-collapsed .ol-bar{border-width:2px 0 0;display:none}.ol-control.ol-layer-shop.ol-forceopen .ol-scroll,.ol-control.ol-layer-shop.ol-forceopen .ol-bar{display:block}.ol-control.ol-layer-shop .ol-bar>*{vertical-align:middle;background-color:#0000;margin-top:.25em;font-size:.9em;display:inline-block}.ol-layer-shop .ol-bar .ol-button,.ol-touch .ol-layer-shop .ol-bar .ol-button{top:unset;left:unset;bottom:unset;right:unset;margin:0;position:relative}.ol-layer-shop .ol-bar button{color:#003c88;background-color:#fff}.ol-layer-shop .ol-bar button:hover{background-color:#003c8833}.ol-touch .ol-layerswitcher.ol-layer-shop>button{font-size:1.7em}.ol-touch .ol-layer-shop .ol-bar{height:2em}.ol-touch .ol-layer-shop .ol-control button{font-size:1.4em}.ol-touch .ol-control.ol-layer-shop .panel{max-height:calc(100% - 7em)}.ol-touch .ol-control.ol-layer-shop .panel label{height:1.8em}.ol-touch .ol-control.ol-layer-shop .panel label span{margin-left:.5em;padding-top:.25em}.ol-touch .ol-control.ol-layer-shop .panel label:before,.ol-touch .ol-control.ol-layer-shop .panel label:after{z-index:1;font-size:1.3em}.ol-control.ol-layerswitcher{text-align:left;box-sizing:border-box;max-height:calc(100% - 6em);position:absolute;top:3em;right:.5em;overflow:hidden}.ol-control.ol-layerswitcher .ol-switchertopdiv,.ol-control.ol-layerswitcher .ol-switcherbottomdiv{display:block}.ol-control.ol-layerswitcher.ol-collapsed .ol-switchertopdiv,.ol-control.ol-layerswitcher.ol-collapsed .ol-switcherbottomdiv{display:none}.ol-layerswitcher.ol-forceopen.ol-collapsed .ol-switchertopdiv,.ol-layerswitcher.ol-forceopen.ol-collapsed .ol-switcherbottomdiv{display:block}.ol-control.ol-layerswitcher .ol-switchertopdiv,.ol-control.ol-layerswitcher .ol-switcherbottomdiv{z-index:2;opacity:1;cursor:pointer;box-sizing:border-box;background:#fff;border-top:2px solid #0000;border-bottom:2px solid #369;height:45px;margin:0 2px;position:absolute;top:0;left:0;right:0}.ol-control.ol-layerswitcher .ol-switcherbottomdiv{border-top:2px solid #369;border-bottom:2px solid #0000;height:2em;top:auto;bottom:0}.ol-control.ol-layerswitcher .ol-switchertopdiv:before,.ol-control.ol-layerswitcher .ol-switcherbottomdiv:before{content:"";opacity:.8;border:10px solid #0000;width:0;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-layerswitcher .ol-switchertopdiv:hover:before,.ol-control.ol-layerswitcher .ol-switcherbottomdiv:hover:before{opacity:1}.ol-control.ol-layerswitcher .ol-switchertopdiv:before{border-top:0;border-bottom-color:#369}.ol-control.ol-layerswitcher .ol-switcherbottomdiv:before{border-top-color:#369;border-bottom:0}.ol-control.ol-layerswitcher .panel-container{clear:both;background-color:#fff;border-radius:0 0 2px 2px;padding:.5em .5em 0;display:block}.ol-layerswitcher .panel{margin:0;padding:0;font-family:Tahoma,Geneva,sans-serif;font-size:.9em;list-style:none;transition:top .3s;position:relative;top:0;overflow:hidden}.ol-layerswitcher .panel ul{clear:both;padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher input[type=radio],.ol-layerswitcher input[type=checkbox]{opacity:0;width:0;height:0;position:absolute}.ol-layerswitcher .panel li{-weblit-transition:-webkit-transform .2s linear;clear:both;box-sizing:border-box;border:1px solid #0000;transition:transform .2s linear;display:block}.ol-layerswitcher .panel li.ol-layer-select{background-color:#003c8833;margin:0 -.5em;padding:0 .5em}.ol-layerswitcher .panel li.drag{opacity:.5;transform:scale(.8)}.ol-dragover{opacity:.8;background:#33669980}.ol-layerswitcher .panel li.forbidden,.forbidden .ol-layerswitcher-buttons div,.forbidden .layerswitcher-opacity div{background:#ff000080;color:red!important}.ol-layerswitcher.drag,.ol-layerswitcher.drag *{cursor:not-allowed!important;cursor:no-drop!important}.ol-layerswitcher.drag .panel li.dropover,.ol-layerswitcher.drag .panel li.dropover *{cursor:pointer!important;cursor:n-resize!important;cursor:ns-resize!important;cursor:-webkit-grab!important;cursor:grab!important;cursor:-webkit-grabbing!important;cursor:grabbing!important}.ol-layerswitcher .panel li.dropover{background:#33669980}.ol-layerswitcher .panel li label{white-space:nowrap;text-overflow:ellipsis;max-width:12em;height:1.4em;padding:0 0 0 1.7em;display:inline-block;position:relative;overflow:hidden}.ol-layerswitcher .panel li label span{text-overflow:ellipsis;width:100%;height:100%;padding-right:.2em;display:inline-block;overflow:hidden}.ol-layerswitcher [type=radio]+label:before,.ol-layerswitcher [type=checkbox]+label:before,.ol-layerswitcher [type=radio]:checked+label:after,.ol-layerswitcher [type=checkbox]:checked+label:after{content:"";box-sizing:border-box;background:#fff;border:2px solid #369;width:1.2em;height:1.2em;position:absolute;top:.1em;left:.1em}.ol-layerswitcher li:has(>div.li-content>.ol-visibility:focus){border-color:#369;box-shadow:inset 0 0 0 1px #369}.ol-layerswitcher [type=radio]+label:before,.ol-layerswitcher [type=radio]+label:after{border-radius:50%}.ol-layerswitcher [type=radio]:checked+label:after{background:#369;width:.6em;height:.6em;margin:.3em}.ol-layerswitcher [type=checkbox]:checked+label:after{background:0 0;border:3px solid #369;border-width:0 3px 3px 0;width:.7em;height:1em;top:-.05em;left:.55em;transform:rotate(45deg);box-shadow:1px 0 1px 1px #fff}.ol-layerswitcher .panel li.ol-layer-hidden{opacity:.6}.ol-layerswitcher.ol-collapsed .panel-container{display:none}.ol-layerswitcher.ol-forceopen .panel-container{display:block}.ol-control.ol-layerswitcher .ol-counter{z-index:22;text-align:left;font-size:.65em;line-height:1.5em;display:none;position:absolute;top:0;right:.3em}.ol-control.ol-layerswitcher.ol-counter .ol-counter{display:block}.ol-control.ol-layer-shop .ol-counter{text-align:center;background:#fff;border-radius:50%;width:1.5em;line-height:1.5em;transform:translate(50%,-50%);box-shadow:.5px .5px 2px}.ol-layerswitcher-image>button,.ol-layerswitcher>button{float:right;z-index:10;background-color:#fff;font-size:1.7em;position:relative}.ol-touch .ol-layerswitcher-image>button,.ol-touch .ol-layerswitcher>button{font-size:2.5em}.ol-layerswitcher-image>button:before,.ol-layerswitcher-image>button:after,.ol-layerswitcher>button:before,.ol-layerswitcher>button:after{content:"";border-radius:.15em;width:.75em;height:.75em;position:absolute;transform:scaleY(.8)rotate(45deg)}.ol-layerswitcher-image>button:before,.ol-layerswitcher>button:before{background:#e2e4e1;top:.32em;left:.34em;box-shadow:.1em .1em #325158}.ol-layerswitcher-image>button:after,.ol-layerswitcher>button:after{background:#83bcc5 radial-gradient(circle at .85em .6em,#70b3be 0 .65em,#83bcc5 .65em);top:.22em;left:.34em}.ol-layerswitcher-buttons{float:right;text-align:right;display:block}.ol-layerswitcher-buttons>div{cursor:pointer;text-align:center;vertical-align:middle;color:#fff;background:#369;width:1em;height:1em;margin:2px;line-height:1em;display:inline-block;position:relative}.ol-layerswitcher .panel li>div{display:inline-block;position:relative}.ol-layerswitcher .ol-separator{width:0;height:0;margin:0;padding:0;display:block}.ol-layerswitcher .layerup{float:right;opacity:.5;cursor:move;cursor:ns-resize;background-color:#369;height:2.5em}.ol-layerswitcher .layerup:before,.ol-layerswitcher .layerup:after{content:"";border:.4em solid #0000;border-top-color:#fff;border-bottom:0 solid #fff;width:0;height:0;position:absolute;bottom:3px;left:.1em}.ol-layerswitcher .layerup:after{border-width:0 .4em .4em;top:3px;bottom:auto}.ol-layerswitcher .layerInfo{background:#369;border-radius:100%}.ol-layerswitcher .layerInfo:before{color:#fff;content:"i";text-align:center;width:1.25em;font-size:.8em;font-weight:700;display:block;position:absolute;top:0;left:0}.ol-layerswitcher .layerTrash{background:#369}.ol-layerswitcher .layerTrash:before{color:#fff;content:"×";text-align:center;margin:-.5em 0;font-size:1em;line-height:1em;position:absolute;top:50%;left:0;right:0}.ol-layerswitcher .layerExtent{background:#369}.ol-layerswitcher .layerExtent:before{content:"";border-bottom:1px solid #fff;border-right:1px solid #fff;display:block;position:absolute;inset:6px 2px 3px 6px}.ol-layerswitcher .layerExtent:after{content:"";border-top:1px solid #fff;border-left:1px solid #fff;display:block;position:absolute;inset:3px 6px 6px 2px}.ol-layerswitcher .expend-layers,.ol-layerswitcher .collapse-layers{background-color:#0000;margin:0 2px}.ol-layerswitcher .expend-layers:before,.ol-layerswitcher .collapse-layers:before{content:"";background:#369;width:100%;height:4px;margin-top:-2px;position:absolute;top:50%;left:0}.ol-layerswitcher .expend-layers:after{content:"";background:#369;width:4px;height:100%;margin-left:-2px;position:absolute;top:0;left:50%}.ol-layerswitcher .layerswitcher-opacity{box-sizing:border-box;background:#69c;cursor:pointer;background:linear-gradient(90deg,#003c8800,#003c8899);border:1px solid #369;border-radius:3px;width:120px;height:3px;margin:5px 1em 10px 7px;position:relative;box-shadow:1px 1px 1px #00000080}.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor,.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor:before{z-index:1;background:#003c8880;border-radius:50%;width:20px;height:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor:before{content:"";width:50%;height:50%;position:absolute}.ol-touch .ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor{width:26px;height:26px}.ol-layerswitcher .layerswitcher-opacity-label{font-size:.8em;display:none;position:absolute;bottom:5px;right:-2.5em}.ol-layerswitcher .layerswitcher-opacity-label:after{content:"%"}.ol-layerswitcher .layerswitcher-progress{width:120px;margin:-4px 1em 2px 7px;display:block}.ol-layerswitcher .layerswitcher-progress div{background-color:#369;width:0;height:2px;display:block}.ol-control.ol-layerswitcher-image{text-align:left;transition:all .2s;position:absolute;top:1em;right:.5em}.ol-control.ol-layerswitcher-image.ol-collapsed{transition:none;top:3em}.ol-layerswitcher-image .panel{margin:0;padding:.25em;list-style:none;overflow:hidden}.ol-layerswitcher-image .panel ul{padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher-image.ol-collapsed .panel{display:none}.ol-layerswitcher-image.ol-forceopen .panel{clear:both;display:block}.ol-layerswitcher-image button{float:right;display:none}.ol-layerswitcher-image.ol-collapsed button{display:block;position:relative}.ol-layerswitcher-image li{vertical-align:middle;cursor:pointer;background-color:#fff;border:3px solid #0000;border-radius:4px;width:64px;height:64px;margin:2px;display:inline-block;position:relative;overflow:hidden;box-shadow:1px 1px 4px #00000080}.ol-layerswitcher-image li.ol-layer-hidden{opacity:.5;border-color:#555}.ol-layerswitcher-image li.ol-header{display:none}.ol-layerswitcher-image li img{max-width:100%;position:absolute}.ol-layerswitcher-image li.select,.ol-layerswitcher-image li.ol-visible{border:3px solid red}.ol-layerswitcher-image li p{display:none}.ol-layerswitcher-image li:hover p{color:#fff;text-align:center;background-color:#00000080;height:1.2em;margin:0;font-family:Verdana,Geneva,sans-serif;font-size:.8em;display:block;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.ol-control.ol-legend{z-index:1;background-color:#fff9;max-width:90%;max-height:90%;bottom:.5em;left:.5em;overflow:hidden auto}.ol-control.ol-legend:hover{background-color:#fffc}.ol-control.ol-legend.ol-empty,.ol-control.ol-legend.ol-collapsed{overflow:hidden}.ol-control.ol-legend button{display:none;position:relative}.ol-control.ol-legend.ol-empty button,.ol-control.ol-legend.ol-collapsed button{display:block}.ol-control.ol-legend.ol-uncollapsible button{display:none}.ol-control.ol-legend>ul,.ol-control.ol-legend>canvas{margin:2px}.ol-control.ol-legend button.ol-closebox{cursor:pointer;z-index:1;background:0 0;display:block;position:absolute;top:0;right:0}.ol-control.ol-legend.ol-empty button.ol-closebox,.ol-control.ol-legend.ol-uncollapsible button.ol-closebox,.ol-control.ol-legend.ol-collapsed button.ol-closebox{display:none}.ol-control.ol-legend button.ol-closebox:before{content:"×";color:#003c8880;background:0 0;font-size:1.3em}.ol-control.ol-legend button.ol-closebox:hover:before{color:#003c88}.ol-control.ol-legend .ol-legendImg{display:block}.ol-control.ol-legend.ol-empty .ol-legendImg,.ol-control.ol-legend.ol-collapsed .ol-legendImg{display:none}.ol-control.ol-legend.ol-uncollapsible .ol-legendImg{display:block}.ol-control.ol-legend>button:first-child:before,.ol-control.ol-legend>button:first-child:after{content:"";background-color:currentColor;width:.2em;height:.2em;position:absolute;top:.25em;left:.2em;box-shadow:0 .35em,0 .7em}.ol-control.ol-legend button:first-child:after{width:.6em;height:.15em;top:.27em;left:.55em}ul.ol-legend{width:100%;margin:0;padding:0;list-style:none;position:absolute;top:0;left:0}.ol-control.ol-legend.ol-empty ul,.ol-control.ol-legend.ol-collapsed ul{display:none}.ol-control.ol-legend.ol-uncollapsible ul{display:block}ul.ol-legend li.ol-title{text-align:center;font-weight:700}ul.ol-legend li.ol-title>div:first-child{width:0!important}ul.ol-legend li{white-space:nowrap;padding:0;overflow:hidden}ul.ol-legend li div{vertical-align:top;display:inline-block}.ol-control.ol-legend .ol-legend{display:inline-block}.ol-control.ol-legend.ol-empty .ol-legend,.ol-control.ol-legend.ol-collapsed .ol-legend{display:none}.ol-control.ol-legend.ol-empty button{opacity:.4}.ol-control.ol-mapzone{text-align:left;box-sizing:border-box;max-height:calc(100% - 6em);position:absolute;top:.5em;right:.5em;overflow:hidden}.ol-control.ol-mapzone.ol-collapsed{top:3em}.ol-control.ol-mapzone button{float:right;margin-top:2.5em;position:relative}.ol-touch .ol-control.ol-mapzone button{margin-top:1.67em}.ol-control.ol-mapzone.ol-collapsed button{margin-top:0}.ol-control.ol-mapzone button i{border:.1em solid;border-radius:50%;width:.9em;height:.9em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-control.ol-mapzone button i:before{content:"";background-color:currentColor;border-radius:50%;width:.4em;height:.4em;position:absolute;top:.3em;left:.5em;box-shadow:.05em .3em 0 -.051em,-.05em -.35em 0 -.1em,-.5em -.35em 0 0,-.65em .1em 0 -.03em,-.65em -.05em 0 -.05em}.ol-mapzone>div{width:5em;height:5em;margin:0 .2em 0 0;display:inline-block;position:relative}.ol-mapzone>div:focus{box-shadow:0 0 0 .2em #369}.ol-control.ol-mapzone.ol-collapsed>div{display:none}.ol-mapzone>div p{color:#fff;text-align:center;transform-origin:0 0;cursor:default;width:160%;margin:0;font-family:Lucida Grande,Verdana,Geneva,Lucida,Arial,Helvetica,sans-serif;font-weight:700;position:absolute;bottom:0;overflow:hidden;transform:scaleX(.625)}.ol-notification{background:0 0;border:0;width:150%;margin:0;padding:0;bottom:0}.ol-notification>div,.ol-notification>div:hover{color:#fff;text-align:center;box-sizing:border-box;opacity:1;background-color:#000c;border-radius:4px 4px 0 0;min-width:5em;max-width:calc(66% - 4em);min-height:1em;max-height:5em;padding:.2em .5em;transition:all .3s;position:absolute;bottom:0;left:33.33%;transform:translate(-50%)}.ol-notification.ol-collapsed>div{opacity:0;bottom:-5em}.ol-notification a{color:#9cf;cursor:pointer}.ol-notification .ol-close,.ol-notification .ol-close:hover{padding-right:1.5em}.ol-notification .closeBox{position:absolute;top:0;right:.3em}.ol-notification .closeBox:before{content:"×"}.ol-overlay{color:#fff;box-sizing:border-box;z-index:1;opacity:0;cursor:default;pointer-events:none;z-index:9;background-color:#0006;width:100%;height:100%;padding:1em;transition:all .5s;display:none;position:absolute;top:0;left:0;overflow:hidden}.ol-overlay.slide-up{transform:translateY(100%)}.ol-overlay.slide-down{transform:translateY(-100%)}.ol-overlay.slide-left{transform:translate(-100%)}.ol-overlay.slide-right{transform:translate(100%)}.ol-overlay.zoom{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)}.ol-overlay.zoomout{transform:scale(3)}.ol-overlay.zoomrotate{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)rotate(360deg)}.ol-overlay.stretch{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scaleX(0)}.ol-overlay.stretchy{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scaleY(0)}.ol-overlay.wipe{opacity:1}.ol-overlay.flip{transform:perspective(600px)rotateY(180deg)}.ol-overlay.card{opacity:.5;transform:translate(-80%,100%)rotate(-.5turn)}.ol-overlay.book{transform-origin:10%;transform:perspective(600px)rotateY(-180deg)scaleX(.6)}.ol-overlay.book.visible{transform-origin:10%}.ol-overlay.ol-visible{opacity:1;pointer-events:all;inset:0;transform:none}.ol-overlay .ol-closebox{cursor:pointer;z-index:1;width:1em;height:1em;position:absolute;top:1em;right:1em}.ol-overlay .ol-closebox:before{content:"❌";text-align:center;vertical-align:middle;display:block}.ol-overlay .ol-fullscreen-image{position:absolute;inset:0}.ol-overlay .ol-fullscreen-image img{box-sizing:border-box;max-width:100%;max-height:100%;padding:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlay .ol-fullscreen-image.ol-has-title img{padding-bottom:3em}.ol-overlay .ol-fullscreen-image p{text-align:center;background-color:#00000080;margin:0;padding:.5em;position:absolute;bottom:0;left:0;right:0}.ol-control.ol-overview{text-align:left;position:absolute;bottom:.5em;left:.5em}.ol-control.ol-overview .panel{cursor:pointer;background-color:#fff;border:1px solid #369;width:150px;height:150px;margin:2px;display:block}.ol-overview:not(.ol-collapsed) button{z-index:2;position:absolute;bottom:2px;left:2px}.ol-control.ol-overview.ol-collapsed .panel{display:none}.ol-overview.ol-collapsed button:before{content:"»"}.ol-overview button:before{content:"«"}.ol-control-right.ol-overview{left:auto;right:.5em}.ol-control-right.ol-overview:not(.ol-collapsed) button{left:auto;right:2px}.ol-control-right.ol-overview.ol-collapsed button:before{content:"«"}.ol-control-right.ol-overview button:before{content:"»"}.ol-control-top.ol-overview{top:5em;bottom:auto}.ol-control-top.ol-overview:not(.ol-collapsed) button{top:2px;bottom:auto}.ol-permalink{position:absolute;top:.5em;right:2.5em}.ol-touch .ol-permalink{right:3em}.ol-permalink button i{width:1em;height:1em;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-permalink button i:before{content:"↗";box-sizing:border-box;border:0 solid;border-width:1px 0 0 1px;width:.3em;height:1em;padding:0 .2em;position:absolute;top:0;left:0}.ol-permalink button i:after{content:"";box-sizing:border-box;border:1px solid;border-width:0 1px 1px 0;width:1em;height:.3em;padding:.2em;position:absolute;bottom:0;right:0}.ol-control.ol-print{top:.5em;left:3em}.ol-control.ol-print button:before{content:"";width:.9em;height:.35em;position:absolute;top:50%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 .1em,inset .55em 0,0 .2em 0 -.1em}.ol-control.ol-print button:after{content:"";width:.7em;height:.6em;position:absolute;top:25%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 .15em}.ol-ext-print-dialog{width:100%;height:100%}.ol-ext-print-dialog>form .ol-closebox{z-index:1;color:#999;left:16.5em;right:auto}.ol-ext-print-dialog .ol-content[data-status=printing]{opacity:.5}.ol-ext-print-dialog .ol-content .ol-error{color:#ff0;text-align:center;background:#b00;margin:0 -1em;padding:1em .5em;font-weight:700;display:none}.ol-ext-print-dialog .ol-content[data-status=error] .ol-error{display:block}.ol-ext-print-dialog>form,.ol-ext-print-dialog.ol-visible>form{max-width:100%;max-height:100%;width:unset;background-color:#eee;padding:0;transition:none;inset:1em;transform:none}.ol-ext-print-dialog .ol-print-map{width:calc(100% - 18em);position:absolute;top:0;bottom:0;right:0;overflow:hidden}.ol-ext-print-dialog .ol-print-map .ol-page{box-sizing:border-box;background:#fff;position:absolute;top:50%;left:50%}.ol-ext-print-dialog .ol-print-map .ol-page.margin{box-sizing:content-box}.ol-ext-print-dialog .ol-map{width:100%;height:100%}.ol-ext-print-dialog .ol-print-map .ol-control{display:none!important}.ol-ext-print-dialog .ol-print-param{box-sizing:border-box;background-color:#fff;width:18em;padding:1em;position:absolute;top:0;bottom:0;left:0;overflow-x:hidden}.ol-ext-print-dialog .ol-print-param h2{color:#003c88b3;font-size:1.1em;display:block}.ol-ext-print-dialog .ol-print-param ul{padding:0;list-style:none}.ol-ext-print-dialog .ol-print-param li{margin:.5em 0;font-size:.9em;position:relative}.ol-ext-print-dialog .ol-print-param li.hidden{display:none}.ol-ext-print-dialog .ol-print-param label{vertical-align:middle;width:8em;display:inline-block}.ol-ext-print-dialog select{vertical-align:middle;outline:none}.ol-ext-print-dialog .ol-orientation{text-align:center}.ol-ext-print-dialog .ol-orientation label{cursor:pointer;width:7em;position:relative}.ol-ext-print-dialog .ol-orientation input{opacity:0;width:0;height:0;position:absolute}.ol-ext-print-dialog .ol-orientation span{width:80%;padding:3.5em 0 .2em;display:block;position:relative}.ol-ext-print-dialog .ol-orientation span:before{content:"";color:#333;opacity:.5;background-color:currentColor;border:1px solid;border-radius:0 1em 0 0;width:2em;height:2.6em;position:absolute;bottom:1.5em;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:inset 1.3em -1.91em #ddd}.ol-ext-print-dialog .ol-orientation .landscape span:before{width:2.6em;height:2em;margin:.2em 0;box-shadow:inset 1.91em -1.3em #ddd}.ol-ext-print-dialog .ol-orientation input:checked+span{opacity:1;box-shadow:0 0 .2em #00000080}.ol-ext-print-dialog .ol-ext-toggle-switch span{position:absolute;top:50%;right:-2em;transform:translateY(-50%)}.ol-print-title input[type=text]{width:calc(100% - 6em);margin-top:.5em;margin-left:6em}.ol-ext-print-dialog .ol-size option:first-child{font-style:italic}.ol-ext-print-dialog .ol-saveas,.ol-ext-print-dialog .ol-savelegend{text-align:center}.ol-ext-print-dialog .ol-saveas select,.ol-ext-print-dialog .ol-savelegend select{color:#fff;background-color:#003c88b3;border:0;max-width:12em;margin:1em 0 0;padding:.5em;font-size:1em;font-weight:700}.ol-ext-print-dialog .ol-saveas select option,.ol-ext-print-dialog .ol-savelegend select option{color:#666;background-color:#fff}.ol-ext-print-dialog .ol-savelegend select{margin-top:0}.ol-ext-print-dialog .ol-ext-buttons{text-align:right;border-top:1px solid #ccc;margin:0 -1em;padding:.8em .5em}.ol-ext-print-dialog button{color:#333;background:0 0;border:1px solid #999;margin:0 .2em;padding:.3em 1em;font-size:1em}.ol-ext-print-dialog button[type=submit]{color:#fff;background-color:#003c88b3;font-weight:700}.ol-ext-print-dialog .ol-clipboard-copy{pointer-events:none;color:#fff;opacity:0;background-color:#00000080;border-radius:1em;width:fit-content;padding:.5em 1em;transition:all;position:absolute;top:0;left:50%;transform:translate(-50%)}.ol-ext-print-dialog .ol-clipboard-copy.visible{animation:1s ol-clipboard-copy}.ol-ext-print-dialog .ol-print-map .ol-control.ol-canvas-control,.ol-ext-print-dialog .ol-print-map .ol-control.ol-print-compass{display:block!important}.ol-ext-print-dialog .ol-print-map .ol-control.olext-print-compass{width:60px;height:60px;margin:20px;top:0;right:0}.ol-ext-print-dialog .ol-orientation input:focus-visible+span,.ol-ext-print-dialog select:focus-visible{outline:2px solid #000}@keyframes ol-clipboard-copy{0%{opacity:0;top:0}80%{opacity:1;top:-3em}to{opacity:0;top:-3em}}@media print{body.ol-print-document{margin:0!important;padding:0!important}body.ol-print-document>*{display:none!important}body.ol-print-document>.ol-ext-print-dialog{display:block!important}body.ol-print-document>.ol-ext-print-dialog .ol-content{max-height:unset!important;max-width:unset!important;width:unset!important;height:unset!important}.ol-ext-print-dialog>form,.ol-ext-print-dialog{position:unset;-webkit-box-shadow:none;box-shadow:none;border:0;background:0 0!important}.ol-ext-print-dialog>form>*,.ol-ext-print-dialog .ol-print-param{background:0 0;display:none!important}.ol-ext-print-dialog .ol-content{background:0 0;border:0;display:block!important}.ol-ext-print-dialog .ol-print-map{position:unset;background:0 0;width:auto;overflow:visible}.ol-ext-print-dialog .ol-print-map .ol-page{position:unset;-webkit-box-shadow:none!important;box-shadow:none!important;transform:none!important}}@media (width<=25em){.ol-ext-print-dialog .ol-print-param{width:13em}.ol-ext-print-dialog .ol-print-map{width:calc(100% - 13em)}.ol-ext-print-dialog .ol-print-param .ol-print-title input[type=text]{width:100%;margin:0}}.ol-ext-print-dialog2x .ol-map,.ol-ext-print-dialog2x .ol-map2{width:100%;height:50%}.ol-ext-print-dialog2x[data-orientation=landscape] .ol-map,.ol-ext-print-dialog2x[data-orientation=landscape] .ol-map2{width:50%;height:100%;display:inline-block}.ol-ext-print-dialog2x[data-clip-map] .ol-map,.ol-ext-print-dialog2x[data-swipe-orientation] .ol-map{width:100%!important;height:100%!important}.ol-ext-print-dialog2x[data-clip-map] .ol-map2,.ol-ext-print-dialog2x[data-swipe-orientation] .ol-map2{top:-100%;left:0;width:100%!important;height:100%!important;position:relative!important}.ol-profile{-webkit-user-select:none;user-select:none;position:relative}.ol-control.ol-profile{text-align:right;position:absolute;top:.5em;right:3em;overflow:hidden}.ol-profile .ol-zoom-out{cursor:pointer;border:1px solid #000;border-radius:2px;width:1em;height:1em;padding:0;position:absolute;top:10px;right:10px}.ol-profile .ol-zoom-out:before{content:"";background:currentColor;width:60%;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-profile .ol-inner{padding:.5em;font-size:.8em;position:relative}.ol-control.ol-profile .ol-inner{background-color:#ffffffb3;margin:2.3em 2px 2px;display:block}.ol-control.ol-profile.ol-collapsed .ol-inner{display:none}.ol-profile canvas{display:block}.ol-profile button{display:block;position:absolute;right:0;overflow:hidden}.ol-profile button i{width:1em;height:1em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-profile button i:before,.ol-profile button i:after{content:"";background-color:currentColor;width:1em;height:.9em;display:block;position:absolute;transform:scaleX(.8)translate(-.25em,.5em)rotate(45deg)}.ol-profile button i:after{transform:scaleX(.8)translate(.35em,.7em)rotate(45deg)}.ol-profile.ol-collapsed button{position:static}.ol-profile .ol-profilebar,.ol-profile .ol-profilecursor{pointer-events:none;width:1px;display:none;position:absolute}.ol-profile .ol-profilecursor{width:0;height:0}.ol-profile .ol-profilecursor:before{content:"";pointer-events:none;width:5px;height:5px;margin:-2px;display:block}.ol-profile .ol-profilebar,.ol-profile .ol-profilecursor:before{background:red}.ol-profile table{text-align:center;border-collapse:collapse;width:100%;margin-top:.5em}.ol-profile table tr{border-top:1px solid #00000040;margin:.1em 0}.ol-profile table td{padding:2px}.ol-profile table span{display:block}.ol-profile table span.elevationGain,.ol-profile table span.elevationLoss{display:inline-block}.ol-profilepopup{white-space:nowrap;background-color:#ffffff80;margin:.5em;padding:0 .5em;position:absolute;top:-1em}.ol-profilepopup.ol-left{right:0}.ol-profile table .track-info{display:table-row}.ol-profile table .point-info,.ol-profile .over table .track-info{display:none}.ol-profile .over table .point-info{display:table-row}.ol-profile p{text-align:center;margin:0}.ol-control.ol-progress-bar{background-color:#0000;padding:0;position:absolute;inset:0;pointer-events:none!important}.ol-control.ol-progress-bar>.ol-bar{box-sizing:border-box;background-color:#003c8880;width:0;height:.5em;transition:width .2s;position:absolute;bottom:0;left:0}.ol-progress-bar>.ol-waiting{display:none}.ol-viewport .ol-control.ol-progress-bar>.ol-waiting{color:#fff;font-size:2em;animation:1s linear infinite ol-progress-bar-blink;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes ol-progress-bar-blink{0%,30%{visibility:hidden}to{visibility:visible}}.ol-control.ol-routing{max-height:90%;top:.5em;left:3em;overflow-y:auto}.ol-touch .ol-control.ol-routing{left:3.5em}.ol-control.ol-routing.ol-searching{opacity:.5}.ol-control.ol-routing .ol-car,.ol-control.ol-routing>button{position:relative}.ol-control.ol-routing .ol-car:after,.ol-control.ol-routing>button:after{content:"";clip:rect(0 1em .5em -1em);border-radius:40% 50% 0 0/50% 70% 0 0;width:.78em;height:.6em;position:absolute;top:.35em;left:.4em;box-shadow:inset 0 0 0 .065em,-.35em .14em 0 -.09em,inset 0 -.37em,inset -.14em .005em}.ol-control.ol-routing .ol-car:before,.ol-control.ol-routing>button:before{content:"";border-radius:50%;width:.28em;height:.28em;position:absolute;top:.73em;left:.2em;box-shadow:inset 0 0 0 1em,.65em 0}.ol-control.ol-routing .ol-pedestrian:after{content:"";border-top:.2em solid #0000;width:.3em;height:.4em;position:absolute;top:.25em;left:50%;transform:translate(-50%);box-shadow:inset .3em 0,.1em .5em 0 -.1em,-.1em .5em 0 -.1em,.25em .1em 0 -.1em,-.25em .1em 0 -.1em}.ol-control.ol-routing .ol-pedestrian:before{content:"";background-color:currentColor;border-radius:50%;width:.3em;height:.3em;position:absolute;top:.1em;left:50%;transform:translate(-50%)}.ol-control.ol-routing .content{margin:.5em}.ol-control.ol-routing.ol-collapsed .content,.ol-routing .ol-search.ol-collapsed ul,.ol-routing .ol-search ul .copy{display:none}.ol-routing .content .search-input>div>*{vertical-align:top;display:inline-block}.ol-routing .ol-result ul{list-style:none;display:block}.ol-routing .ol-result li{min-height:1.65em;position:relative}.ol-routing .ol-result li i{font-size:.8em;font-weight:700;display:block}.ol-routing .ol-result li:before{content:"";transform-origin:50% 125%;border:.4em solid #0000;border-top-width:.6em;border-bottom:.6em solid #369;position:absolute;top:-.8em;left:-1.75em;box-shadow:0 .65em 0 -.25em #369}.ol-routing .ol-result li:after{content:"";background:#369;border-radius:.1em;width:.25em;height:.6em;position:absolute;top:.6em;left:-1.5em}.ol-routing .ol-result li.R:before{transform:rotate(90deg)}.ol-routing .ol-result li.FR:before{transform:rotate(45deg)}.ol-routing .ol-result li.L:before{transform:rotate(-90deg)}.ol-routing .ol-result li.FL:before{transform:rotate(-45deg)}.ol-routing .content>i{vertical-align:middle;margin:0 .3em 0 .1em;font-style:normal}.ol-routing .ol-button,.ol-routing .ol-button:focus,.ol-routing .ol-pedestrian,.ol-routing .ol-car{color:#003c88;opacity:.5;vertical-align:middle;cursor:pointer;background-color:#0000;outline:none;width:1.4em;height:1.4em;margin:0 .1em;font-size:1.1em;display:inline-block;position:relative}.ol-routing .ol-constraints{display:block}.ol-routing .ol-button:hover,.ol-routing .ol-button.selected,.ol-routing i.selected{opacity:1;background:0 0}.ol-routing .ol-method{display:block}.ol-control.ol-routing{background-color:#ffffff40}.ol-control.ol-routing:hover{background-color:#ffffffbf}.search-input>div>button:before{content:"±"}.ol-viewport .ol-scale{text-align:center;transform-origin:0 0;background-color:#ffffffbf;bottom:2.5em;left:.5em;transform:scaleX(.8)}.ol-viewport .ol-scale input{text-align:center;background:0 0;border:0;width:8em}.ol-search{top:.5em;left:3em}.ol-touch .ol-search{left:3.5em}.ol-search button{float:left;top:2px;left:2px}.ol-control.ol-search>button:before{content:"";box-sizing:border-box;background-color:#0000;border:.12em solid;border-radius:100%;width:.7em;height:.7em;position:absolute;top:.35em;left:.35em}.ol-control.ol-search>button:after{content:"";background-color:currentColor;border-radius:.05em;width:.45em;height:.15em;position:absolute;top:1.1em;left:.95em;transform:rotate(45deg);box-shadow:-.18em 0 0 -.03em}.ol-search button.ol-revers{float:none;vertical-align:bottom;background-image:none;display:inline-block;position:relative;top:0;left:0}.ol-search.ol-revers button.ol-revers{background-color:#00883c80}.ol-control.ol-search.ol-collapsed button.ol-revers{display:none}.ol-search button.ol-revers:before{content:"";box-sizing:border-box;border:.1em solid;border-radius:50%;width:.55em;height:.55em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-search button.ol-revers:after{content:"";background-color:#0000;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.35em 0,0 .35em,-.35em 0,0 -.35em}.ol-search input{box-sizing:border-box;border:0;height:1.375em;margin:1px 1px 1px 2px;padding-left:.3em;font-size:1.14em;transition:all .1s;display:inline-block}.ol-touch .ol-search input,.ol-touch .ol-search ul{font-size:1.5em}.ol-search.ol-revers>ul,.ol-control.ol-search.ol-collapsed>*{display:none}.ol-control.ol-search.ol-collapsed>button{display:block}.ol-search ul{clear:both;cursor:pointer;z-index:1;background:#fff;max-width:17em;margin:0;padding:0;list-style:none;display:block;overflow-x:hidden}.ol-search ul li{white-space:nowrap;text-overflow:ellipsis;padding:.1em .5em;overflow:hidden}.ol-search ul li.select,.ol-search ul li:hover{color:#fff;background-color:#003c8880}.ol-search ul li img{float:left;max-height:2em}.ol-search li.copy{color:#fff;background:#00000080}.ol-search li.copy a{color:#fff;text-decoration:none}.ol-search.searching:before{content:"";z-index:2;background:red;height:3px;animation:.5s linear infinite alternate ol-pulse;position:absolute;top:1.6em;left:0}@keyframes ol-pulse{0%{left:0;right:95%}50%{left:30%;right:30%}to{left:95%;right:0}}.ol-control.ol-search.IGNF-parcelle{background-color:#ffffffb3;padding-bottom:.2em}.ol-search.IGNF-parcelle input{width:14.5em}.ol-search.IGNF-parcelle input:read-only{opacity:.8;background:#ccc}.ol-search.IGNF-parcelle.ol-collapsed-list>ul.autocomplete{display:none}.ol-search.IGNF-parcelle label{clear:both;display:block}.ol-search.IGNF-parcelle>div input{text-align:right}.ol-search.IGNF-parcelle>div input,.ol-search.IGNF-parcelle>div label{box-sizing:border-box;text-overflow:ellipsis;width:4em;margin:.1em;font-size:1em;display:inline-block;overflow:hidden}.ol-search.IGNF-parcelle>div label{letter-spacing:-.04em}.ol-search.IGNF-parcelle ul.autocomplete-page{text-align:center;width:100%;margin-top:.5em;display:none}.ol-search.IGNF-parcelle.ol-collapsed-list ul.autocomplete-parcelle,.ol-search.IGNF-parcelle.ol-collapsed-list ul.autocomplete-page{display:block}.ol-search.IGNF-parcelle.ol-collapsed ul.autocomplete-page,.ol-search.IGNF-parcelle.ol-collapsed ul.autocomplete-parcelle,.ol-search.IGNF-parcelle ul.autocomplete-parcelle{display:none}.ol-search.IGNF-parcelle ul.autocomplete-page li{color:#fff;background:#003c8880;border-radius:50%;width:1.3em;height:1.3em;margin:0 .1em;padding:.1em;display:inline-block}.ol-search.IGNF-parcelle ul.autocomplete-page li.selected{background:#003c88}.ol-searchgps input.search,.ol-searchcoord input.search{display:none}.ol-control.ol-searchgps>button:first-child,.ol-control.ol-searchcoord>button:first-child{background-image:none}.ol-control.ol-searchgps>button:first-child:before,.ol-control.ol-searchcoord>button:first-child:before{content:"x/y";position:unset;border:unset;border-radius:0;width:auto;height:auto;display:block;transform:scaleX(.8)}.ol-control.ol-searchgps>button:first-child:after,.ol-control.ol-searchcoord>button:first-child:after{content:unset}.ol-control.ol-searchgps .ol-latitude,.ol-control.ol-searchgps .ol-longitude,.ol-control.ol-searchcoord .ol-latitude,.ol-control.ol-searchcoord .ol-longitude{clear:both}.ol-control.ol-searchgps .ol-latitude label,.ol-control.ol-searchgps .ol-longitude label,.ol-control.ol-searchcoord .ol-latitude label,.ol-control.ol-searchcoord .ol-longitude label{text-align:right;transform-origin:0 0;width:5.5em;margin:0 -.8em 0 0;display:inline-block;transform:scaleX(.8)}.ol-control.ol-searchcoord .ol-latitude label,.ol-control.ol-searchcoord .ol-longitude label{width:2em;margin:0}.ol-control.ol-searchgps .ol-latitude input,.ol-control.ol-searchgps .ol-longitude input{max-width:10em}.ol-control.ol-searchgps .ol-ext-toggle-switch{cursor:pointer;float:right;margin:.5em;font-size:.9em}.ol-searchgps .ol-decimal{margin-right:.7em;display:inline-block}.ol-searchgps .ol-dms,.ol-searchgps.ol-dms .ol-decimal{text-align:right;width:3em;display:none}.ol-searchgps.ol-dms .ol-dms{display:inline-block}.ol-searchgps span.ol-dms{text-align:left;width:.5em}.ol-searchgps.ol-control.ol-collapsed button.ol-geoloc,.ol-searchgps.ol-control.ol-collapsed button.ol-centerloc,.ol-searchcoord.ol-control.ol-collapsed button.ol-centerloc,.ol-searchcoord.ol-control.ol-collapsed button.ol-geoloc{display:none}.ol-searchgps button.ol-geoloc,.ol-searchgps button.ol-centerloc,.ol-searchcoord button.ol-centerloc,.ol-searchcoord button.ol-geoloc{float:right;background-image:none;margin-right:3px;position:relative;top:0}.ol-searchgps button.ol-geoloc:before,.ol-searchcoord button.ol-geoloc:before{content:"";border:.1em solid;border-radius:50%;width:.6em;height:.6em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-searchgps button.ol-geoloc:after,.ol-searchcoord button.ol-geoloc:after{content:"";background-color:#0000;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.45em 0,-.45em 0,0 -.45em,0 .45em,.25em 0,-.25em 0,0 -.25em,0 .25em}.ol-searchgps button.ol-centerloc:before,.ol-searchcoord button.ol-centerloc:before{content:"📍";border:0;width:auto;height:auto;padding:0;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-searchgps button.ol-centerloc:after,.ol-searchcoord button.ol-centerloc:after{display:none}.ol-control.ol-select{background-color:#ffffff80;top:.5em;left:3em}.ol-control.ol-select:hover{background-color:#ffffffb3}.ol-touch .ol-control.ol-select{left:3.5em}.ol-control.ol-select>button:before{content:"A";box-sizing:content-box;text-align:center;background-color:#0000;border:.2em solid;border-radius:100%;width:1em;height:1em;font-size:.6em;font-weight:400;line-height:1em;position:absolute;top:.5em;left:.5em}.ol-control.ol-select>button:after{content:"";background-color:currentColor;border-radius:.05em;width:.45em;height:.15em;position:absolute;top:1.15em;left:1em;transform:rotate(45deg);box-shadow:-.18em 0 0 -.03em}.ol-select>div button{float:right;width:auto;height:1.2em;padding:0 .5em;font-weight:400;line-height:1.2em}.ol-select .ol-delete{vertical-align:middle;cursor:pointer;width:1.5em;height:1em;display:inline-block;position:relative}.ol-select .ol-delete:before{content:"×";text-align:center;width:100%;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-select input{font-size:1em}.ol-control.ol-select select{max-width:10em;font-size:1em}.ol-control.ol-select select option.ol-default{color:#999;font-style:italic}.ol-control.ol-select>div{margin:.25em;display:block}.ol-control.ol-select.ol-collapsed>div{display:none}.ol-control.ol-select.ol-select-check{max-width:20em}.ol-control.ol-select label.ol-ext-check{margin-right:1em}.ol-control.ol-select label.ol-ext-toggle-switch span{font-size:1.1em}.ol-select ul{margin:0;padding:0;list-style:none}.ol-control.ol-select input[type=search],.ol-control.ol-select input[type=text]{width:8em}.ol-select .ol-autocomplete{display:inline}.ol-select .ol-autocomplete ul{background:#fff;border:1px solid #999;min-width:10em;font-size:.85em;display:block;position:absolute}.ol-select .ol-autocomplete ul li{padding:0 .5em}.ol-select .ol-autocomplete ul li:hover{color:#fff;background:#003c8880}.ol-select ul.ol-hidden{display:none}.ol-select-multi li>div:hover,.ol-select-multi li>div.ol-control.ol-select{top:unset;left:unset;background:0 0;position:relative}.ol-select-multi li>div>button,.ol-select-multi li>div .ol-ok{display:none}.ol-select-multi li .ol-control.ol-select.ol-collapsed>div,.ol-select-multi li>div>div{display:block}.ol-control.ol-status{color:#fff;box-sizing:border-box;background:#0003;border-radius:0;width:100%;padding:.3em 3em;font-size:.9em;display:none;top:0;left:0;pointer-events:none!important}.ol-control.ol-status.ol-visible{display:initial}.ol-control.ol-status.ol-bottom{top:auto;bottom:0}.ol-control.ol-status.ol-left{width:auto;padding:.3em .5em .3em 3em;top:0;bottom:0}.ol-control.ol-status.ol-right{width:auto;padding:.3em 3em .3em .5em;inset:0 0 0 auto}.ol-control.ol-status.ol-center{top:50%;transform:translateY(-50%)}.ol-control.ol-storymap{background-color:#ffffff80;border-radius:.5em;max-width:35%;height:auto;position:absolute;top:.5em;bottom:.5em;left:.5em}.ol-storymap{height:100%;padding:0;position:relative;overflow:hidden}.ol-storymap>div{scroll-behavior:smooth;-webkit-user-select:none;user-select:none;height:100%;padding:0;position:relative;overflow:hidden}.ol-storymap>div.ol-move{scroll-behavior:unset}.ol-control.ol-storymap .chapter{padding:.5em;position:relative;overflow:hidden}.ol-control.ol-storymap .chapter:last-child{margin-bottom:100%}.ol-storymap .chapter{cursor:pointer;opacity:.4}.ol-storymap .chapter.ol-select{cursor:default;opacity:1;background-color:#fffc}.ol-storymap .ol-scroll-top,.ol-storymap .ol-scroll-next{color:#003c8880;text-align:center;cursor:pointer;min-height:1.7em;position:relative}.ol-storymap .ol-scroll-next span{padding-bottom:1.4em;display:block}.ol-storymap .ol-scroll-top span{padding-top:1.4em;display:block}.ol-storymap .ol-scroll-top:before,.ol-storymap .ol-scroll-next:before{content:"";pointer-events:none;border:.3em solid;border-color:#0000 currentColor currentColor #0000;border-radius:.3em;width:.8em;height:.8em;animation:.35s linear infinite alternate ol-bounce-bottom;display:block;position:absolute;left:50%;transform:translate(-50%)rotate(45deg)}.ol-storymap .ol-scroll-top:before{border-color:currentColor #0000 #0000 currentColor;animation:.35s linear infinite alternate ol-bounce-top}@keyframes ol-bounce-top{0%{top:-.2em}to{top:.5em}}@keyframes ol-bounce-bottom{0%{bottom:-.2em}to{bottom:.5em}}.ol-storymap img[data-title]{cursor:pointer}.ol-storymap.scrollLine,.ol-storymap.scrollBox{background-color:#0000;border-radius:0;max-width:40%;top:0;bottom:0}.ol-storymap.scrollLine .chapter,.ol-storymap.scrollBox .chapter{background-color:#fff;margin:100% 0}.ol-storymap.scrollLine .chapter:first-child,.ol-storymap.scrollBox .chapter:first-child{margin-top:3em}.ol-storymap.scrollLine .chapter.ol-select,.ol-storymap.scrollLine .chapter,.ol-storymap.scrollBox .chapter.ol-select,.ol-storymap.scrollBox .chapter{opacity:1}.ol-storymap.scrollLine .ol-scrolldiv,.ol-storymap.scrollBox .ol-scrolldiv{padding-right:30px}.ol-storymap.scrollLine:before,.ol-storymap.scrollBox:before{content:"";background-color:#fff;width:2px;height:100%;position:absolute;top:0;bottom:0;right:14px}.ol-storymap.scrollLine .ol-scroll,.ol-storymap.scrollBox .ol-scroll{width:1px;padding:0;transition:none;right:15px;overflow:visible;opacity:1!important;display:block!important}.ol-storymap.scrollLine .ol-scroll>div{-webkit-box-shadow:unset;box-shadow:unset;background-color:#0000;left:50%;overflow:visible;transform:translate(-50%)}.ol-storymap.scrollLine .ol-scroll>div:before{content:"";background-color:#0af;border:2px solid #fff;border-radius:50%;width:10px;height:10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-storymap.scrollBox .ol-scroll>div{display:none}.ol-storymap.scrollBox .chapter:after{content:"";box-sizing:border-box;z-index:1;border:5px solid #0000;border-radius:50%;width:20px;height:20px;position:absolute;top:min(30%,5em);right:-24.5px;box-shadow:0 0 0 2px #fff,inset 0 0 0 15px #0af}.ol-swipe{-ms-touch-action:none;touch-action:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-swipe:before{content:"";z-index:-1;background:#fff;width:4px;position:absolute;top:-5000px;bottom:-5000px;left:50%;transform:translate(-2px)}.ol-swipe.horizontal:before{width:auto;height:4px;inset:50% -5000px auto}.ol-swipe,.ol-swipe button{cursor:ew-resize}.ol-swipe.horizontal,.ol-swipe.horizontal button{cursor:ns-resize}.ol-swipe:after,.ol-swipe button:before,.ol-swipe button:after{content:"";background:currentColor;width:2px;position:absolute;top:25%;bottom:25%;left:50%;transform:translate(-1px)}.ol-swipe button:after{transform:translate(4px)}.ol-swipe button:before{transform:translate(-6px)}.ol-control.ol-timeline{background-color:#fff6;transition:all .3s;bottom:0;left:0;right:0}.ol-control.ol-timeline.ol-collapsed{transform:translateY(100%)}.ol-timeline{padding:2px 0 0;overflow:hidden}.ol-timeline .ol-scroll{scroll-behavior:smooth;height:6em;padding:0 50%;line-height:1em;overflow:hidden}.ol-timeline .ol-scroll.ol-move{scroll-behavior:unset}.ol-timeline.ol-hasbutton .ol-scroll{margin-left:1.5em;padding:0 calc(50% - .75em)}.ol-timeline .ol-buttons{z-index:10;background:#ffffff80;width:1.5em;display:none;position:absolute;top:0;bottom:0;left:0}.ol-timeline.ol-hasbutton .ol-buttons{display:block}.ol-timeline .ol-buttons button{margin:1px;font-size:1em;position:relative}.ol-timeline .ol-buttons .ol-zoom-in:before,.ol-timeline .ol-buttons .ol-zoom-out:before{content:"+";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-timeline .ol-buttons .ol-zoom-out:before{content:"−"}.ol-timeline .ol-scroll>div{height:100%;position:relative}.ol-timeline .ol-scroll .ol-times{background:#ffffff80;height:1em;position:absolute;bottom:0;left:-1000px;right:-1000px}.ol-timeline .ol-scroll .ol-time{color:#999;font-size:.7em;position:absolute;bottom:0;transform:translate(-50%)}.ol-timeline .ol-scroll .ol-time.ol-year{color:#666;z-index:1}.ol-timeline .ol-scroll .ol-time:before{content:"";border-left:1px solid;height:500px;position:absolute;bottom:1.2em;left:50%}.ol-timeline .ol-scroll .ol-features{margin:0 0 0 200px;position:absolute;inset:0 -1000px 1em -200px;overflow:hidden}.ol-timeline .ol-scroll .ol-feature{color:#999;cursor:pointer;box-sizing:border-box;background:#fff;border:1px solid #ccc;max-width:3em;min-height:1em;max-height:2.4em;padding:0 .5em 0 0;font-size:.7em;line-height:1.2em;transition:all .3s;position:absolute;top:0;overflow:hidden}.ol-timeline.ol-zoomhover .ol-scroll .ol-feature:hover,.ol-timeline.ol-zoomhover .ol-scroll .ol-feature.ol-select{z-index:1;background:#eee;transform:scale(1.2)}.ol-timeline .ol-center-date{z-index:2;pointer-events:none;opacity:.4;background-color:red;width:2px;height:100%;display:none;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.ol-timeline.ol-hasbutton .ol-center-date{left:calc(50% + .75em)}.ol-timeline.ol-pointer .ol-center-date{display:block}.ol-timeline.ol-pointer .ol-center-date:before,.ol-timeline.ol-pointer .ol-center-date:after{content:"";border:.3em solid #0000;border-width:.3em .25em;position:absolute;left:50%;transform:translate(-50%)}.ol-timeline.ol-pointer .ol-center-date:before{border-top-color:red;top:0}.ol-timeline.ol-pointer .ol-center-date:after{border-bottom-color:red;bottom:0}.ol-timeline.ol-interval .ol-center-date{box-sizing:content-box;opacity:.2;background-color:#0000;border:0 solid #000;border-width:0 10000px;display:block}.ol-control.ol-videorec{white-space:nowrap;top:0;left:50%;transform:translate(-50%)}.ol-control.ol-videorec button{vertical-align:middle;display:inline-block;position:relative}.ol-control.ol-videorec button:before{content:"";background-color:currentColor;width:.8em;height:.8em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-videorec button.ol-start:before{background-color:#c00;border-radius:50%;width:.9em;height:.9em}.ol-control.ol-videorec button.ol-pause:before{background-color:#0000;width:.2em;box-shadow:-.2em 0,.2em 0}.ol-control.ol-videorec button.ol-resume:before{box-sizing:border-box;background:0 0;border:.4em solid #0000;border-left:.6em solid;border-right-width:0;width:auto}.ol-control.ol-videorec button.ol-stop,.ol-control.ol-videorec button.ol-pause,.ol-control.ol-videorec button.ol-resume,.ol-control.ol-videorec[data-state=rec] .ol-start,.ol-control.ol-videorec[data-state=pause] .ol-start{display:none}.ol-control.ol-videorec[data-state=rec] .ol-stop,.ol-control.ol-videorec[data-state=pause] .ol-stop,.ol-control.ol-videorec[data-state=rec] .ol-pause,.ol-control.ol-videorec[data-state=pause] .ol-resume{display:inline-block}.ol-control.ol-wmscapabilities{top:.5em;right:2.5em}.ol-touch .ol-control.ol-wmscapabilities{right:3em}.ol-control.ol-wmscapabilities.ol-hidden{display:none}.ol-control.ol-wmscapabilities button:before{content:"+";position:absolute;top:calc(50% - .35em);left:50%;transform:translate(-50%,-50%)}.ol-control.ol-wmscapabilities button:after{content:"";background:0 0;border:.15em solid #0000;border-width:0 .15em .15em 0;border-radius:.1em 0;width:.75em;height:.75em;position:absolute;top:calc(50% - .05em);left:50%;transform:scaleY(.6)translate(-50%,-50%)rotate(45deg);box-shadow:inset -.18em -.18em,-.4em .1em 0 -.25em,.1em -.35em 0 -.25em,.15em .15em}.ol-wmscapabilities .ol-searching{opacity:.5}.ol-wmscapabilities .ol-searching .ol-url:after{content:"";background-color:currentColor;border-radius:50%;width:.7em;height:.7em;animation:2s linear infinite ol-wmscapabilities-rotate;display:block;position:absolute;top:6em;left:calc(50% - .35em);box-shadow:0 1em,0 -1em,1em 0,-1em 0}@keyframes ol-wmscapabilities-rotate{to{transform:rotate(360deg)}}.ol-wmscapabilities .ol-url input{box-sizing:border-box;width:calc(100% - 10em);min-width:min(100%,20em)}.ol-wmscapabilities .ol-url select{width:2em;height:100%;padding:1px}.ol-wmscapabilities .ol-url button{width:7.5em;margin-left:.5em}.ol-wmscapabilities .ol-result{margin-top:.5em;display:none}.ol-wmscapabilities .ol-result.ol-visible{display:block}.ol-wmscapabilities .ol-select-list{box-sizing:border-box;border:1px solid #369;border-radius:0;width:calc(100% - 120px);max-height:14.5em;font-size:1em;position:relative;overflow-x:hidden}.ol-wmscapabilities .ol-select-list option{cursor:pointer;box-sizing:border-box;text-overflow:ellipsis;width:100%;padding:.1em .5em 0;overflow:hidden}.ol-wmscapabilities .ol-select-list .level-1{padding-left:1em}.ol-wmscapabilities .ol-select-list .level-2{padding-left:1.5em}.ol-wmscapabilities .ol-select-list .level-3{padding-left:2em}.ol-wmscapabilities .ol-select-list .level-4{padding-left:2.5em}.ol-wmscapabilities .ol-select-list .level-5{padding-left:3em}.ol-wmscapabilities .ol-select-list .ol-info{font-style:italic}.ol-wmscapabilities .ol-select-list .ol-title{background-color:#003c881a}.ol-wmscapabilities .ol-select-list option:hover{color:#fff;background-color:#003c8880}.ol-wmscapabilities .ol-select-list .selected{color:#fff;background-color:#003c88b3}.ol-wmscapabilities .ol-preview{float:right;color:#666;text-align:center;background:#003c881a;width:100px;margin-left:10px;padding:0 5px 5px}.ol-wmscapabilities .ol-preview.tainted{float:right;color:#666;text-align:center;background:#88003c1a;width:100px;margin-left:10px;padding:0 5px 5px}.ol-wmscapabilities .ol-preview img{background:#fff;width:100%;display:block}.ol-wmscapabilities .ol-legend{max-width:100%;display:none}.ol-wmscapabilities .ol-legend.visible{display:block}.ol-wmscapabilities .ol-buttons{clear:both;text-align:right}.ol-wmscapabilities .ol-data p{margin:0}.ol-wmscapabilities .ol-data p.ol-title{margin:1em 0 .5em;font-weight:700}.ol-wmscapabilities .ol-error{color:#800}.ol-wmscapabilities ul.ol-wmsform{padding:0;list-style:none;display:none}.ol-wmscapabilities ul.ol-wmsform.visible{display:block}.ol-wmscapabilities .ol-wmsform label{text-align:right;width:calc(40% - .5em);margin-right:.5em;display:inline-block}.ol-wmscapabilities .ol-wmsform input{box-sizing:border-box;width:60%;display:inline-block}.ol-wmscapabilities .ol-wmsform input[type=checkbox]{width:auto}.ol-wmscapabilities .ol-wmsform button{float:right;margin:1em 0}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] input{width:calc(60% - 2em)}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button{vertical-align:middle;color:#444;width:2em;height:1.6em;margin:0;position:relative}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:before,.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:after{content:"";border:.1em solid;width:.25em;height:.9em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)skewY(-15deg)}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:after{transform:translate(.4em)translate(-50%,-50%)skewY(15deg);box-shadow:-.8em .25em}.ol-ext-dialog.ol-wmscapabilities form{width:600px;min-height:15em;top:15%;transform:translate(-50%,-15%)}.ol-ext-dialog.ol-wmscapabilities .ol-content{max-height:calc(100vh - 6em)}.ol-ext-dialog.ol-wmtscapabilities [data-param=map],.ol-ext-dialog [data-param=style]{display:none}.ol-ext-dialog.ol-wmtscapabilities [data-param=style]{display:list-item}.ol-ext-dialog.ol-wmtscapabilities [data-param=proj],.ol-ext-dialog.ol-wmtscapabilities [data-param=version]{opacity:.6;pointer-events:none}.ol-ext-dialog.ol-wmscapabilities button.ol-wmsform{text-align:center;width:1.8em}.ol-ext-dialog.ol-wmscapabilities button.ol-wmsform:before{content:"+"}.ol-ext-dialog.ol-wmscapabilities .ol-form button.ol-wmsform:before{content:"-"}.ol-ext-dialog.ol-wmscapabilities .ol-form button.ol-load,.ol-ext-dialog.ol-wmscapabilities .ol-form .ol-legend{display:none}.ol-ext-dialog.ol-wmscapabilities .ol-form ul.ol-wmsform{clear:both;display:block}.ol-target-overlay .ol-target{border:1px solid #0000;width:0;height:20px;display:block;box-shadow:0 0 1px 1px #fff}.ol-target-overlay .ol-target:after,.ol-target-overlay .ol-target:before{content:"";border:1px solid #369;width:20px;height:0;display:block;position:absolute;top:10px;left:-10px;box-shadow:0 0 1px 1px #fff}.ol-target-overlay .ol-target:after{-webkit-box-shadow:none;box-shadow:none;width:0;height:20px;top:0;left:0}.ol-overlaycontainer .ol-touch-cursor{cursor:pointer;background:#fff6;border-radius:50%;width:56px;height:56px;margin:6px;box-shadow:inset 0 0 0 5px #369}.ol-overlaycontainer .ol-touch-cursor:after{content:"";transform-origin:100% 100%;background:radial-gradient(circle at 100% 100%,#0000,#0000 70%,#369 70%,#369);width:50%;height:50%;position:absolute;top:0;left:0}.ol-overlaycontainer .ol-touch-cursor-center{margin-top:16px;margin-left:-28px}.ol-overlaycontainer .ol-touch-cursor-center:after{transform:rotate(45deg)}.ol-overlaycontainer .ol-touch-cursor-right{margin-left:-62px}.ol-overlaycontainer .ol-touch-cursor-right:after{transform:rotate(90deg)}.ol-overlaycontainer .ol-touch-cursor .ol-button{color:#369;cursor:pointer;background:#fff6;border-radius:50%;width:55%;height:55%;transition:all .5s,opacity,background;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)scale(0);box-shadow:inset 0 0 0 3px}.ol-overlaycontainer .ol-touch-cursor.active.disable .ol-button{opacity:.8;background:#3693}.ol-overlaycontainer .ol-touch-cursor.active .ol-button{transform:translate(-50%,-50%)scale(1)}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-0{top:-18%;left:118%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-1{top:50%;left:140%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-2{top:120%;left:120%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-3{top:140%;left:50%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-4{top:118%;left:-18%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-5{top:50%;left:-40%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-6{top:-18%;left:-18%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-7{top:-40%;left:50%}.ol-overlaycontainer .ol-touch-cursor .ol-button:before{content:"";text-align:center;width:1.5em;height:1em;line-height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-add:before,.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-remove:before{content:"−";font-size:1.375em;font-weight:700;line-height:.95em}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-add:before{content:"+"}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-x:before{content:"×";font-size:1.2em;font-weight:700}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-move:before{content:"✥";font-size:1.2em}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-check:before{content:"✓";font-weight:700}.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-x,.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-remove,.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-check{opacity:.8;background:#3693}.ol-overlaycontainer .ol-touch-cursor .ol-button>div{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlaycontainer .ol-touch-cursor .ol-button-type:before{content:"⇎";font-weight:700}.mapboxgl-canvas:focus{outline:none}.ol-perspective-map{width:200%;height:200%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-perspective-map .ol-layer{z-index:-1!important}.ol-perspective-map .ol-layers{transform:translateY(0)perspective(200px)rotateX(0)scaleY(1)}.ol-perspective-map .ol-overlaycontainer,.ol-perspective-map .ol-overlaycontainer-stopevent{top:50%;left:50%;transform:translate(-50%,-50%);width:50%!important;height:50%!important}.ol-overlay-container .ol-magnify{z-index:0;background:#00000080;border:3px solid #369;border-radius:50%;width:150px;height:150px;position:relative;overflow:hidden;box-shadow:5px 5px 5px #00000080}.ol-overlay-container .ol-magnify:before{content:"";z-index:1;border-radius:50%;width:100%;height:100%;display:block;position:absolute;top:0;left:0;box-shadow:inset 0 0 40px 2px #00000040}.ol-overlay-container .ol-magnify:after{content:"";z-index:1;border-radius:50%;width:20%;height:0;display:block;position:absolute;top:20%;left:23%;transform:rotate(-40deg);box-shadow:0 0 20px 7px #fff}.ol-popup.anim{visibility:hidden}.ol-popup.anim.visible{visibility:visible}.ol-popup.anim.visible>div{visibility:visible;animation:.4s ol-popup_bounce;transform:none}@keyframes ol-popup_bounce{0%{transform:scale(0)}50%{transform:scale(1.1)}80%{transform:scale(.95)}to{transform:scale(1)}}.ol-popup.anim.ol-popup-bottom.ol-popup-left>div{transform-origin:0 100%}.ol-popup.anim.ol-popup-bottom.ol-popup-right>div{transform-origin:100% 100%}.ol-popup.anim.ol-popup-bottom.ol-popup-center>div{transform-origin:50% 100%}.ol-popup.anim.ol-popup-top.ol-popup-left>div{transform-origin:0 0}.ol-popup.anim.ol-popup-top.ol-popup-right>div{transform-origin:100% 0}.ol-popup.anim.ol-popup-top.ol-popup-center>div{transform-origin:50% 0}.ol-popup.anim.ol-popup-middle.ol-popup-left>div{transform-origin:0}.ol-popup.anim.ol-popup-middle.ol-popup-right>div{transform-origin:100%}.ol-popup{-webkit-user-select:none;user-select:none;font-size:.9em}.ol-popup .ol-popup-content{cursor:default;padding:.25em .5em;overflow:hidden}.ol-popup.hasclosebox .ol-popup-content{margin-right:1.7em}.ol-popup .ol-popup-content:after{clear:both;content:"";height:0;font-size:0;display:block}.ol-popup .anchor{pointer-events:none;background:red;width:0;height:0;margin:-11px 22px;display:block;position:absolute}.ol-popup .anchor:after,.ol-popup .anchor:before{position:absolute}.ol-popup-right .anchor:after,.ol-popup-right .anchor:before{right:0}.ol-popup-top .anchor{top:0}.ol-popup-bottom .anchor{bottom:0}.ol-popup-right .anchor{right:0}.ol-popup-left .anchor{left:0}.ol-popup-center .anchor{left:50%;margin-left:0!important}.ol-popup-middle .anchor{top:50%;margin-top:0!important}.ol-popup-center.ol-popup-middle .anchor{display:none}.ol-popup.ol-fixed{margin:0!important;inset:.5em .5em auto auto!important;transform:none!important}.ol-popup.ol-fixed .anchor{display:none}.ol-popup.ol-fixed.anim>div{animation:none}.ol-popup .ol-fix{float:right;cursor:pointer;background:#fff;width:1em;height:.9em;margin:.2em;position:relative}.ol-popup .ol-fix:before{content:"";box-sizing:border-box;border:.1em solid #666;border-right-width:.3em;width:.8em;height:.7em;margin:.1em;display:block}.ol-popup.shadow{box-shadow:2px 2px 2px 2px #00000080}.ol-popup .closeBox{color:#fff;cursor:pointer;float:right;background-color:#003c8880;border:0;border-radius:2px;width:1.4em;height:1.4em;margin:5px 5px 0 0;padding:0;font-size:.9em;font-weight:700;display:none;position:relative}.ol-popup.hasclosebox .closeBox{display:block}.ol-popup .closeBox:hover{background-color:#003c88b3}.ol-popup .closeBox:after{content:"×";text-align:center;width:100%;margin:-.5em 0;font-size:1.5em;line-height:1em;position:absolute;top:50%;left:0;right:0}.ol-popup.modifytouch{background-color:#eee}.ol-popup.modifytouch .ol-popup-content{white-space:nowrap;padding:0 .25em;font-size:.85em}.ol-popup.modifytouch .ol-popup-content a{text-decoration:none}.ol-popup.tooltips{background-color:#ffa}.ol-popup.tooltips .ol-popup-content{white-space:nowrap;padding:0 .25em;font-size:.85em}.ol-popup.default>div{background-color:#fff;border:1px solid #69f;border-radius:5px}.ol-popup.default{margin:-11px 0;transform:translateY(-22px)}.ol-popup-top.ol-popup.default{margin:11px 0;transform:none}.ol-popup-left.default{margin:-11px -22px;transform:translateY(-22px)}.ol-popup-top.ol-popup-left.default{margin:11px -22px;transform:none}.ol-popup-right.default{margin:-11px 22px;transform:translate(44px,-22px)}.ol-popup-top.ol-popup-right.default{margin:11px 22px;transform:translate(44px)}.ol-popup-middle.default{margin:0 10px;transform:none}.ol-popup-middle.ol-popup-right.default{margin:0 -10px;transform:translate(-20px)}.ol-popup.default .anchor{color:#69f}.ol-popup.default .anchor:after,.ol-popup.default .anchor:before{content:"";border:11px solid;border-color:currentColor #0000;margin:0 -11px}.ol-popup.default .anchor:after{border-width:11px;border-color:#fff #0000;margin:2px -11px}.ol-popup-top.default .anchor:before,.ol-popup-top.default .anchor:after{border-top:0;top:0}.ol-popup-bottom.default .anchor:before,.ol-popup-bottom.default .anchor:after{border-bottom:0;bottom:0}.ol-popup-middle.default .anchor:before{border-color:#0000 currentColor;margin:-11px -33px}.ol-popup-middle.default .anchor:after{border-color:#0000 #fff;margin:-11px -31px}.ol-popup-middle.ol-popup-left.default .anchor:before,.ol-popup-middle.ol-popup-left.default .anchor:after{border-left:0}.ol-popup-middle.ol-popup-right.default .anchor:before,.ol-popup-middle.ol-popup-right.default .anchor:after{border-right:0}.ol-popup.placemark{color:#c00;margin:-.65em 0;transform:translateY(-1.3em)}.ol-popup.placemark>div{width:2em;height:2em;min-width:unset;box-sizing:border-box;background-color:#fff;border:0;border-radius:50%;font-size:15px;position:relative;box-shadow:inset 0 0 0 .45em}.ol-popup.placemark .ol-popup-content{cursor:default;text-align:center;width:1em;height:1em;padding:.25em 0;line-height:1em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-popup.placemark .anchor{margin:0}.ol-popup.placemark .anchor:before{content:"";background:0 0;border-radius:50%;width:1em;height:.5em;margin:-.5em;box-shadow:0 1em .5em #00000080}.ol-popup.placemark .anchor:after{content:"";border:.7em solid #0000;border-top:1em solid;border-bottom:0 solid;margin:-.75em -.7em;bottom:0}.ol-popup.placemark.shield>div{border-radius:.2em}.ol-popup.placemark.shield .anchor:after{border-width:.8em 1em 0;margin:-.7em -1em}.ol-popup.placemark.blazon>div{border-radius:.2em}.ol-popup.placemark.pushpin{margin:-2.2em 0;transform:translateY(-4em)}.ol-popup.placemark.pushpin>div{border-radius:0;width:1.1em;box-shadow:inset 2em 0;background:0 0!important}.ol-popup.placemark.pushpin>div:before{content:"";pointer-events:none;border:.5em solid #0000;border-top:.3em solid;border-bottom-color:currentColor;width:1.3em;height:1.5em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-popup.placemark.needle{margin:-2em 0;transform:translateY(-4em)}.ol-popup.placemark.pushpin .anchor,.ol-popup.placemark.needle .anchor{margin:-1.2em}.ol-popup.placemark.pushpin .anchor:after,.ol-popup.placemark.needle .anchor:after{border-style:solid;border-width:2em .15em 0;width:.1em;margin:-.55em -.2em}.ol-popup.placemark.pushpin .anchor:before,.ol-popup.placemark.needle .anchor:before{margin:-.75em -.5em}.ol-popup.placemark.flagv{margin:-2em 1em;transform:translateY(-4em)}.ol-popup.placemark.flagv>div{-webkit-box-shadow:none;box-shadow:none;background-color:#0000;border-radius:0}.ol-popup.placemark.flagv>div:before{content:"";pointer-events:none;border:1em solid #0000;border-left:2em solid;position:absolute}.ol-popup.placemark.flagv .anchor{margin:-1.4em}.ol-popup.placemark.flag{margin:-2em 1em;transform:translateY(-4em)}.ol-popup.placemark.flag>div{border-radius:0;transform-origin:0 150%!important}.ol-popup.placemark.flag .anchor{margin:-1.4em}.ol-popup.placemark.flagv .anchor:after,.ol-popup.placemark.flag .anchor:after{border-style:solid;border-width:2em .15em 0;width:.1em;margin:-.55em -1em}.ol-popup.placemark.flagv .anchor:before,.ol-popup.placemark.flag .anchor:before{margin:-.75em -1.25em}.ol-popup.placemark.flag.finish{margin:-2em 1em}.ol-popup.placemark.flag.finish>div{background-image:linear-gradient(45deg,currentColor 25%,#0000 25% 75%,currentColor 75%,currentColor),linear-gradient(45deg,currentColor 25%,#0000 25% 75%,currentColor 75%,currentColor);background-position:.5em 0,0 .5em;background-size:1em 1em;box-shadow:inset 0 0 0 .25em}.ol-popup.black .closeBox{color:#f80;background-color:#00000080;border-radius:5px}.ol-popup.black .closeBox:hover{color:#da2;background-color:#000000b3}.ol-popup.black{margin:-20px 0;transform:translateY(-40px)}.ol-popup.black>div{color:#fff;background-color:#0009;border-radius:5px}.ol-popup-top.ol-popup.black{margin:20px 0;transform:none}.ol-popup-left.black{margin:-20px -22px;transform:translateY(-40px)}.ol-popup-top.ol-popup-left.black{margin:20px -22px;transform:none}.ol-popup-right.black{margin:-20px 22px;transform:translate(44px,-40px)}.ol-popup-top.ol-popup-right.black{margin:20px 22px;transform:translate(44px)}.ol-popup-middle.black{margin:0 11px;transform:none}.ol-popup-left.ol-popup-middle.black{transform:none}.ol-popup-right.ol-popup-middle.black{margin:0 -11px;transform:translate(-22px)}.ol-popup.black .anchor{color:#0009;margin:-20px 11px}.ol-popup.black .anchor:before{content:"";border:20px solid;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.black .anchor:before{border-top:0;top:0}.ol-popup-bottom.black .anchor:before{border-bottom:0;bottom:0}.ol-popup-middle.black .anchor:before{border-color:#0000 currentColor;margin:-20px -22px}.ol-popup-middle.ol-popup-left.black .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.black .anchor:before{border-right:0}.ol-popup-center.black .anchor:before{margin:0 -10px}.ol-popup.tips .closeBox{color:#fff;background-color:red;border-radius:50%;width:1.2em;height:1.2em}.ol-popup.tips .closeBox:hover{background-color:#f40}.ol-popup.tips{margin:-20px 0;transform:translateY(-40px)}.ol-popup.tips>div{color:#333;background-color:#cea;border:5px solid #ad7;border-radius:5px}.ol-popup-top.ol-popup.tips{margin:20px 0;transform:none}.ol-popup-left.tips{margin:-20px -22px;transform:translateY(-40px)}.ol-popup-top.ol-popup-left.tips{margin:20px -22px;transform:none}.ol-popup-right.tips{margin:-20px 22px;transform:translate(44px,-40px)}.ol-popup-top.ol-popup-right.tips{margin:20px 22px;transform:translate(44px)}.ol-popup-middle.tips{margin:0;transform:none}.ol-popup-left.ol-popup-middle.tips{margin:0 22px;transform:none}.ol-popup-right.ol-popup-middle.tips{margin:0 -22px;transform:translate(-44px)}.ol-popup.tips .anchor{color:#ad7;margin:-18px 22px}.ol-popup.tips .anchor:before{content:"";border:20px solid;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.tips .anchor:before{border-top:0;top:0}.ol-popup-bottom.tips .anchor:before{border-bottom:0;bottom:0}.ol-popup-center.tips .anchor:before{border-width:20px 6px;margin:0 -6px}.ol-popup-left.tips .anchor:before{border-left:0;margin-left:0}.ol-popup-right.tips .anchor:before{border-right:0;margin-right:0}.ol-popup-middle.tips .anchor:before{border-width:6px 20px;border-color:#0000 currentColor;margin:-6px -41px}.ol-popup-middle.ol-popup-left.tips .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.tips .anchor:before{border-right:0}.ol-popup.warning .closeBox{color:#fff;background-color:red;border-radius:50%;font-size:.83em}.ol-popup.warning .closeBox:hover{background-color:#f40}.ol-popup.warning{color:#900;background-color:#fd0;border:4px dashed red;border-radius:3px;margin:-28px 10px;transform:translateY(-56px)}.ol-popup-top.ol-popup.warning{margin:28px 10px;transform:none}.ol-popup-left.warning{margin:-28px -22px;transform:translateY(-56px)}.ol-popup-top.ol-popup-left.warning{margin:28px -22px;transform:none}.ol-popup-right.warning{margin:-28px 22px;transform:translate(44px,-56px)}.ol-popup-top.ol-popup-right.warning{margin:28px 22px;transform:translate(44px)}.ol-popup-middle.warning{margin:0;transform:none}.ol-popup-left.ol-popup-middle.warning{margin:0 22px;transform:none}.ol-popup-right.ol-popup-middle.warning{margin:0 -22px;transform:translate(-44px)}.ol-popup.warning .anchor{margin:-33px 7px}.ol-popup.warning .anchor:before{content:"";border:30px solid red;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.warning .anchor:before{border-top:0;top:0}.ol-popup-bottom.warning .anchor:before{border-bottom:0;bottom:0}.ol-popup-center.warning .anchor:before{margin:0 -21px}.ol-popup-middle.warning .anchor:before{border-width:10px 22px;border-color:#0000 red;margin:-10px -33px}.ol-popup-middle.ol-popup-left.warning .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.warning .anchor:before{border-right:0}.ol-popup .ol-popupfeature table{width:100%}.ol-popup .ol-popupfeature table td{text-overflow:ellipsis;max-width:25em;overflow:hidden}.ol-popup .ol-popupfeature table td img{max-width:100px;max-height:100px}.ol-popup .ol-popupfeature tr:nth-child(odd){background-color:#eee}.ol-popup .ol-popupfeature .ol-zoombt{color:#003c8880;background:0 0;border:0;outline:none;width:2em;height:2em;display:inline-block;position:relative}.ol-popup .ol-popupfeature .ol-zoombt:before{content:"";box-sizing:border-box;background-color:#0000;border:.17em solid;border-radius:100%;width:1em;height:1em;position:absolute;top:.3em;left:.3em}.ol-popup .ol-popupfeature .ol-zoombt:after{content:"";box-sizing:border-box;border-style:solid;border-width:.1em .3em;border-radius:.03em;position:absolute;top:1.35em;left:1.15em;transform:rotate(45deg);box-shadow:-.2em 0 0 -.04em}.ol-popup .ol-popupfeature .ol-count{float:right;margin:.25em 0}.ol-popup .ol-popupfeature .ol-prev,.ol-popup .ol-popupfeature .ol-next{vertical-align:bottom;cursor:pointer;border:.5em solid #0000;border-left-color:#003c8880;border-right:0 solid #003c8880;margin:0 .5em;display:inline-block}.ol-popup .ol-popupfeature .ol-prev{border-width:.5em .5em .5em 0}.ol-popup.tooltips.black{background-color:#0000}.ol-popup.tooltips.black>div{background-color:#00000080;padding:.2em .5em;transform:scaleY(1.3)}.ol-popup-middle.tooltips.black .anchor:before{border-width:5px 10px;margin:-5px -21px}.ol-popup-center.ol-popup-middle,.ol-popup-top.ol-popup-left.ol-fixPopup,.ol-popup-top.ol-popup-right.ol-fixPopup,.ol-popup.ol-fixPopup{margin:0}.ol-miniscroll{position:relative}.ol-miniscroll:hover .ol-scroll{opacity:.5;transition:opacity 1s}.ol-miniscroll .ol-scroll{-ms-touch-action:none;touch-action:none;opacity:0;z-index:1;border-radius:9px;width:9px;height:auto;max-height:100%;transition:opacity 1s .5s;position:absolute;right:0;overflow:hidden}.ol-miniscroll .ol-scroll>div{-ms-touch-action:none;touch-action:none;box-sizing:border-box;cursor:pointer;border:2px solid #0000;border-radius:9px/12px;width:9px;height:9px;position:absolute;top:0;right:0;box-shadow:inset 10px 0}.ol-miniscroll .ol-scroll.ol-100pc{opacity:0}.ol-viewport canvas.ol-fixedoverlay{width:100%;height:100%;position:absolute;top:0;left:0}.ol-ext-toggle-switch{cursor:pointer;position:relative}.ol-ext-toggle-switch input[type=radio],.ol-ext-toggle-switch input[type=checkbox]{opacity:0;width:0;height:0;margin:0;padding:0;display:inline-block}.ol-ext-toggle-switch span{color:#003c8880;cursor:pointer;vertical-align:middle;background-color:#ccc;border-radius:1em;width:1.6em;height:1em;margin:-.15em .2em .15em;font-size:1.3em;transition:all .4s,background-color,border-color,box-shadow;display:inline-block;position:relative}.ol-ext-toggle-switch span:before{content:"";box-sizing:border-box;background-color:#fff;border:2px solid #ccc;border-radius:1em;width:1em;height:1em;transition:all .4s;display:block;position:absolute;top:50%;left:0;transform:translateY(-50%)}.ol-ext-toggle-switch:hover span{background-color:#999}.ol-ext-toggle-switch:hover span:before{border-color:#999}.ol-ext-toggle-switch input:checked+span{background-color:currentColor}.ol-ext-toggle-switch input:checked+span:before{border-color:currentColor;transform:translate(.6em,-50%)}.ol-ext-check{display:inline-block;position:relative}.ol-ext-check input{opacity:0;cursor:pointer;width:0;height:0;margin:0;padding:0;display:inline-block;position:absolute}.ol-ext-check span{color:#003c8880;vertical-align:middle;background-color:#ccc;width:1em;height:1em;margin:-.1em .5em .1em;display:inline-block;position:relative}.ol-ext-check:hover span{background-color:#999}.ol-ext-checkbox input:checked~span{background-color:currentColor}.ol-ext-checkbox input:checked~span:before{content:"";width:.5em;height:.8em;position:absolute;top:50%;left:50%;transform:translateY(-.1em)translate(-50%,-50%)rotate(45deg);box-shadow:inset -.2em -.2em #fff}.ol-ext-radio span{border-radius:50%;width:1.1em;height:1.1em}.ol-ext-radio:hover input:checked~span{background-color:#ccc}.ol-ext-radio input:checked~span:before{content:"";background-color:currentColor;border-radius:50%;width:50%;height:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-ext-toggle-switch input:focus-visible+span,.ol-ext-check input:focus-visible+span{box-shadow:inset 0 0 0 1px #fff,0 0 0 1.8px #000c}.ol-collection-list{margin:0;padding:0;list-style:none}.ol-collection-list li{padding:0 2em 0 1em;position:relative}.ol-collection-list li:hover{background-color:#003c8833}.ol-collection-list li.ol-select{color:#fff;background-color:#003c8880}.ol-collection-list li .ol-order{-ms-touch-action:none;touch-action:none;cursor:n-resize;-webkit-user-select:none;user-select:none;width:2em;height:100%;position:absolute;top:50%;right:0;transform:translateY(-50%)}.ol-collection-list li .ol-order:before{content:"";background-color:currentColor;border-radius:2px;width:18px;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 5px,0 -5px}.ol-collection-list li>input.ol-input-focus{opacity:0;z-index:-1;width:0;height:0;position:absolute}.ol-collection-list li:has(>input.ol-input-focus:focus){outline:2px solid #369}.ol-ext-colorpicker.ol-popup{background-color:#0000;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 -1px,5px 4px;background-size:10px 10px;width:2em;height:1.5em}.ol-ext-colorpicker .ol-tabbar{background-color:#eee;border-bottom:1px solid #999;display:none}.ol-ext-colorpicker.ol-tab .ol-tabbar{display:block}.ol-ext-colorpicker .ol-tabbar>div{cursor:pointer;background-color:#fff;border:1px solid #999;border-radius:2px 2px 0 0;padding:0 .5em;display:inline-block;position:relative;top:1px}.ol-ext-colorpicker .ol-tabbar>div:first-child{border-bottom-color:#fff}.ol-ext-colorpicker.ol-picker-tab .ol-tabbar>div:first-child{border-bottom-color:#999}.ol-ext-colorpicker.ol-picker-tab .ol-tabbar>div:nth-child(2){border-bottom-color:#fff}.ol-ext-colorpicker.ol-popup.ol-tab .ol-popup{width:180px}.ol-ext-colorpicker.ol-tab .ol-palette{margin:0 10px}.ol-ext-colorpicker.ol-tab .ol-container{display:none}.ol-ext-colorpicker.ol-tab.ol-picker-tab .ol-container{display:block}.ol-ext-colorpicker.ol-tab.ol-picker-tab .ol-palette{display:none}.ol-ext-colorpicker.ol-popup .ol-popup{width:340px}.ol-ext-colorpicker.ol-popup .ol-vignet{content:"";pointer-events:none;background-color:currentColor;border:0;width:100%;height:100%;position:absolute;top:0;left:0}.ol-ext-colorpicker .ol-container{vertical-align:top;display:inline-block;position:relative}.ol-ext-colorpicker .ol-cursor{pointer-events:none}.ol-ext-colorpicker .ol-picker{cursor:crosshair;background-color:currentColor;background-image:-webkit-gradient(linear, left top, left bottom, from(0), color-stop(#000), to(transparent)), -webkit-gradient(linear, left top, right top, from(#fff), to(transparent));background-image:linear-gradient(#0000,#000),linear-gradient(90deg,#fff,#0000);border:5px solid #fff;width:150px;height:150px;position:relative}.ol-ext-colorpicker .ol-picker .ol-cursor{border:1px solid #000000b3;border-radius:50%;width:10px;height:10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #ffffffb3}.ol-ext-colorpicker .ol-slider{cursor:crosshair;background-color:#fff;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 -1px,5px 4px;background-size:10px 10px;border:0 solid #fff;border-width:0 5px;width:150px;height:10px;margin:5px 0 10px;position:relative}.ol-ext-colorpicker .ol-slider>div{pointer-events:none;background-image:linear-gradient(45deg,#0000,#fff);width:100%;height:100%}.ol-ext-colorpicker .ol-slider .ol-cursor{background:0 0;border:1px solid #000;width:4px;height:12px;position:absolute;top:50%;left:0;transform:translate(-50%,-50%)}.ol-ext-colorpicker .ol-tint{cursor:crosshair;box-sizing:border-box;background-image:-webkit-gradient(linear, left top, left bottom, from(0), color-stop(red), color-stop(#f0f), color-stop(#00f), color-stop(#0ff), color-stop(#0f0), color-stop(#ff0), to(red));background-image:linear-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red);border:5px solid #fff;border-width:5px 0;width:10px;height:150px;position:absolute;top:0;right:5px}.ol-ext-colorpicker .ol-tint .ol-cursor{border:1px solid #000;width:12px;height:4px;position:absolute;top:0;left:50%;transform:translate(-50%,-50%)}.ol-ext-colorpicker .ol-clear{border:2px solid #999;width:10px;height:10px;position:absolute;top:163px;right:4px}.ol-ext-colorpicker .ol-clear:before,.ol-ext-colorpicker .ol-clear:after{content:"";background-color:#999;width:15px;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-ext-colorpicker .ol-clear:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-ext-colorpicker.ol-nopacity .ol-slider,.ol-ext-colorpicker.ol-nopacity .ol-clear,.ol-ext-colorpicker.ol-nopacity .ol-alpha{display:none}.ol-ext-colorpicker .ol-rgb{width:170px;padding:5px;display:none;position:relative}.ol-ext-colorpicker .ol-rgb input{box-sizing:border-box;border:1px solid #999;border-radius:2px;width:25%;padding:0 0 0 2px;font-size:13px}.ol-ext-colorpicker .ol-rgb input:first-child{background-color:#ff00001a}.ol-ext-colorpicker .ol-rgb input:nth-child(2){background-color:#00ff001a}.ol-ext-colorpicker .ol-rgb input:nth-child(3){background-color:#0000ff1f}.ol-ext-colorpicker button,.ol-ext-colorpicker .ol-txt-color{text-align:center;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:170px;margin:0 5px 5px;padding:0;font-size:13px;display:block}.ol-ext-colorpicker .ol-txtcolor{width:170px;margin:0 5px}.ol-ext-colorpicker .ol-txtcolor input.ol-txt-color{width:100%;margin:0}.ol-ext-colorpicker.eyedropper .ol-txtcolor input.ol-txt-color{width:calc(100% - 2em);height:2em;margin:0;display:inline-block}.ol-ext-colorpicker button{background-color:#eee}.ol-ext-colorpicker button:hover{background-color:#e9e9e9}.ol-ext-colorpicker button.ol-eyedropper{vertical-align:middle;width:2em;height:2em;margin:0;display:inline-block;position:relative}.ol-ext-colorpicker button.ol-eyedropper:before{content:"";background-color:#999;width:100%;height:100%;position:absolute;top:0;left:0;-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20width='24'%20height='24'%3e%3cpath%20d='m18.203%203.676%202.121%202.121a1%201%200%200%201%200%201.414l-2.828%202.829%201.767%201.768-1.414%201.414-1.414-1.414L7.243%2021H3v-4.243l9.192-9.192-1.414-1.414%201.414-1.414%201.768%201.767%202.829-2.828a1%201%200%200%201%201.414%200Zm-4.596%205.303-8.564%208.564%201.414%201.414%208.564-8.564-1.414-1.414Z'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20width='24'%20height='24'%3e%3cpath%20d='m18.203%203.676%202.121%202.121a1%201%200%200%201%200%201.414l-2.828%202.829%201.767%201.768-1.414%201.414-1.414-1.414L7.243%2021H3v-4.243l9.192-9.192-1.414-1.414%201.414-1.414%201.768%201.767%202.829-2.828a1%201%200%200%201%201.414%200Zm-4.596%205.303-8.564%208.564%201.414%201.414%208.564-8.564-1.414-1.414Z'/%3e%3c/svg%3e");-webkit-mask-size:100% 100%;mask-size:100% 100%}.ol-ext-colorpicker .ol-txt-color.ol-error{background-color:#f003}.ol-ext-colorpicker .ol-palette{width:152px;padding:2px;display:inline-block}.ol-ext-colorpicker .ol-palette>div{cursor:pointer;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 0,5px 5px;background-size:10px 10px;border-radius:1px;width:15px;height:15px;margin:2px;display:inline-block;position:relative;box-shadow:0 0 2px #666}.ol-ext-colorpicker .ol-palette>div:before{content:"";background-color:currentColor;width:100%;height:100%;position:absolute}.ol-ext-colorpicker .ol-palette>div.ol-select:after{content:"";width:6px;height:12px;position:absolute;top:30%;left:50%;transform:translate(-50%,-50%)rotate(45deg);box-shadow:1px 1px #fff,2px 2px #000}.ol-ext-colorpicker .ol-palette>div:hover{box-shadow:0 0 2px 1px #d90}.ol-ext-colorpicker .ol-palette hr{margin:0}.ol-input-hidden{opacity:0;width:0;height:0;margin:0;padding:0;display:block;position:absolute}.ol-input-popup{display:inline-block;position:relative}.ol-input-popup .ol-popup{z-index:1;white-space:nowrap;background-color:#fff;margin:0;padding:0;list-style:none;display:none;position:absolute;left:-5px;box-shadow:1px 1px 3px 1px #999}.ol-input-popup.ol-hover:hover .ol-popup,.ol-input-popup.ol-focus .ol-popup{display:block}.ol-input-popup.ol-right .ol-popup{left:auto;right:-5px}.ol-input-popup.ol-middle .ol-popup{top:50%;transform:translateY(-50%)}.ol-input-popup .ol-popup li{padding:10px 5px;position:relative}.ol-input-popup li:hover,.ol-input-popup li.ol-selected{background-color:#ccc}.ol-input-popup.ol-fixed:hover .ol-popup,.ol-input-popup.ol-fixed .ol-popup{-webkit-box-shadow:unset;box-shadow:unset;vertical-align:middle;background-color:#0000;display:inline-block;position:relative;left:0}.ol-input-popup.ol-fixed.ol-left .ol-popup{float:left}.ol-input-popup>div{vertical-align:middle;border:1px solid #999;border-radius:2px;padding:3px 20px 3px 10px;display:inline-block;position:relative}.ol-input-popup>div:before{content:"";border:5px solid #0000;border-top-color:#999;position:absolute;top:50%;right:5px}.ol-ext-popup-input{vertical-align:top;display:inline-block}.ol-ext-popup-input.ol-popup{box-sizing:content-box;-webkit-user-select:none;user-select:none;vertical-align:middle;border:3px solid #fff;border-right-width:1em;border-radius:2px;width:2em;height:1.5em;display:inline-block;position:relative;box-shadow:0 0 2px 1px #666}.ol-ext-popup-input.ol-popup:after{content:"";pointer-events:none;border:.3em solid #0000;border-top:.5em solid #999;border-bottom:0 solid #999;position:absolute;top:50%;right:-.8em;transform:translateY(-50%)}.ol-ext-popup-input *{box-sizing:content-box}.ol-ext-popup-input.ol-popup .ol-popup{z-index:1;background-color:#fff;min-width:3em;min-height:3em;display:none;position:absolute;top:100%;left:0;box-shadow:1px 1px 3px 1px #999}.ol-ext-popup-input.ol-popup .ol-popup.ol-visible{display:block}.ol-ext-popup-input.ol-popup-fixed .ol-popup{position:fixed;top:auto;left:auto}.ol-input-popup.ol-size li{vertical-align:middle;height:100%;padding:5px;display:table-cell}.ol-input-popup.ol-size li>*{vertical-align:middle;background-color:#369;border-radius:50%;width:1em;height:1em}.ol-input-popup.ol-size li>.ol-option-0{color:#aaa;box-sizing:border-box;background-color:#0000;border:2px solid;width:1em;height:1em;position:relative}.ol-input-popup.ol-size li>:before{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-input-popup.ol-size li>.ol-option-0:before{content:"";background-color:#aaa;width:1em;height:2px;transform:translate(-50%,-50%)rotate(-45deg)}.ol-input-slider{display:inline-block;position:relative}.ol-input-slider .ol-popup{z-index:1;background-color:#fff;display:none;position:absolute;left:-5px;box-shadow:1px 1px 3px 1px #999}.ol-input-slider.ol-right .ol-popup{left:auto;right:-5px}.ol-input-slider.ol-hover:hover .ol-popup,.ol-input-slider.ol-focus .ol-popup{white-space:nowrap;display:block}.ol-input-slider.ol-hover:hover .ol-popup>*,.ol-input-slider.ol-focus .ol-popup>*{vertical-align:middle;display:inline-block}.ol-input-slider.ol-hover:hover .ol-popup>.ol-before,.ol-input-slider.ol-focus .ol-popup>.ol-before{margin-left:10px}.ol-input-slider.ol-hover:hover .ol-popup>.ol-after,.ol-input-slider.ol-focus .ol-popup>.ol-after{margin-right:10px}.ol-input-slider .ol-slider{vertical-align:middle;box-sizing:content-box;cursor:pointer;border:10px solid #0000;border-width:10px 15px;width:100px;height:3px;display:inline-block;position:relative;box-shadow:inset 0 0 0 1px #999}.ol-input-slider .ol-slider>.ol-cursor{pointer-events:none;background-color:#999;width:5px;height:10px;position:absolute;top:50%;transform:translate(-50%,-50%)}.ol-input-range .ol-slider{cursor:default;width:150px}.ol-input-range .ol-slider>.ol-cursor{pointer-events:all;cursor:pointer;background-color:#003c88;border-radius:50%;width:10px}.ol-input-range.ol-moving .ol-slider>.ol-cursor{pointer-events:none}.ol-input-range .ol-slider>.ol-back{pointer-events:none;background-color:#003c88;height:100%;position:absolute;top:50%;left:30%;right:20%;transform:translateY(-50%)}.ol-input-slider.ol-fixed:hover .ol-popup,.ol-input-slider.ol-fixed .ol-popup{-webkit-box-shadow:unset;box-shadow:unset;vertical-align:middle;background-color:#0000;display:inline-block;position:relative;left:0}.ol-input-slider.ol-fixed.ol-left .ol-popup{float:left}.ol-input-slider.ol-size .ol-slider{height:auto;-webkit-box-shadow:none;box-shadow:none}.ol-input-slider.ol-size .ol-slider .ol-back{color:#aaa;pointer-events:none;border-top:0 solid;border-bottom:20px solid;border-left:100px solid #0000;border-right:0 solid #0000;width:0}.ol-input-slider.ol-size .ol-slider>.ol-cursor{border:5px solid red;border-left:3px solid #0000;border-right:3px solid #0000;-o-border-image:initial;border-image:initial;background-color:#0000;width:2px;height:calc(100% + 4px);box-shadow:inset 3px 0 red}.ol-input-popup.ol-width li{padding:5px}.ol-input-popup.ol-width li>*{background-color:#369;width:100px;height:1em}.ol-input-popup.ol-width li>.ol-option-0{background-color:#0000;background-image:linear-gradient(90deg,#aaa 2px,#0000 2px);background-size:4px;height:1px;position:relative}html,body{height:100%;margin:0;padding:0}body{font-family:Calibri,sans-serif}.viewer-app{width:100%;height:100%;position:relative;overflow:hidden}.viewer-app:fullscreen{width:100%;height:100%}.viewer-app:fullscreen{width:100%;height:100%}.map{width:100%;height:100%}.ol-zoom,.ol-rotate,.ol-full-screen,.ol-graticule,.ol-screen-space-graticule,.viewer-panel-control,.layer-editor-control{background:#111;border-radius:4px;padding:0;overflow:hidden;box-shadow:0 2px 7px #0000004d}.ol-zoom:hover,.ol-rotate:hover,.ol-full-screen:hover,.ol-graticule:hover,.ol-screen-space-graticule:hover,.viewer-panel-control:hover,.layer-editor-control:hover{background:#111}.ol-zoom button,.ol-rotate button,.ol-full-screen button,.ol-graticule button,.ol-screen-space-graticule button,.viewer-panel-control button,.layer-editor-control button{color:#fff;cursor:pointer;background:#111;border:0;width:32px;height:32px;margin:0}.ol-zoom button:hover:not(:disabled),.ol-rotate button:hover:not(:disabled),.ol-full-screen button:hover:not(:disabled),.ol-graticule button:hover:not(:disabled),.ol-screen-space-graticule button:hover:not(:disabled),.viewer-panel-control button:hover:not(:disabled),.layer-editor-control button:hover:not(:disabled){color:#fff;background:#333;border-radius:4px;outline:none}.ol-zoom button:active:not(:disabled),.ol-rotate button:active:not(:disabled),.ol-full-screen button:active:not(:disabled),.ol-graticule button:active:not(:disabled),.ol-screen-space-graticule button:active:not(:disabled),.viewer-panel-control button:active:not(:disabled),.layer-editor-control button:active:not(:disabled){color:#fff;background:#555;border-radius:4px;outline:none}.ol-control button:disabled,.ol-control button:disabled:hover,.ol-control button:disabled:active,.ol-control button:disabled:focus,.ol-control.ol-toggle button:disabled,.ol-control.ol-toggle button:disabled:hover,.ol-control.ol-toggle button:disabled:active,.ol-control.ol-toggle button:disabled:focus{color:#fff;opacity:.4;cursor:default;pointer-events:none;background:#111;outline:none}.viewer-control-hidden{display:none!important}.ol-zoom{flex-direction:column;display:flex;top:8px;left:8px}.ol-zoom button{border-radius:0}.ol-zoom .ol-zoom-in,.ol-zoom .ol-zoom-in:hover,.ol-zoom .ol-zoom-in:active,.ol-zoom .ol-zoom-in:focus{border-radius:4px 4px 0 0}.ol-zoom .ol-zoom-out,.ol-zoom .ol-zoom-out:hover,.ol-zoom .ol-zoom-out:active,.ol-zoom .ol-zoom-out:focus{border-radius:0 0 4px 4px}.ol-zoom-level{box-sizing:border-box;color:#fff;cursor:default;-webkit-user-select:none;user-select:none;background:#111;border-top:1px solid #333;border-bottom:1px solid #333;justify-content:center;align-items:center;width:32px;height:26px;font-size:11px;font-weight:600;display:flex}.layer-editor-control{top:8px;left:50px;right:auto}.layer-editor-control button,.layer-editor-control button:hover,.layer-editor-control button:active,.layer-editor-control button:focus,.layer-editor-control button.active,.layer-editor-control button.active:hover,.layer-editor-control button.active:active,.layer-editor-control button.active:focus{border-radius:4px}.layer-editor{z-index:1000;box-sizing:border-box;color:#fff;background:#111;border-radius:10px;width:230px;position:absolute;top:50px;left:50px;overflow:hidden;box-shadow:0 3px 10px #00000059}.layer-editor.hidden{display:none}.layer-editor-header{border-bottom:1px solid #333;padding:12px 14px;font-size:13px;font-weight:600}.layer-editor-list{padding:12px 14px}.layer-editor-empty{color:#ccc;font-size:12px}.layer-editor-item{margin-bottom:14px}.layer-editor-item:last-child{margin-bottom:0}.layer-editor-item-header{align-items:center;gap:8px;margin-bottom:8px;display:flex}.layer-editor-visibility{accent-color:#1f5278;cursor:pointer;flex-shrink:0;margin:0}.layer-editor-name{color:#fff;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:12px;overflow:hidden}.layer-editor-order{flex-shrink:0;gap:3px;display:flex}.layer-editor-order button{color:#fff;cursor:pointer;background:#222;border:0;border-radius:4px;width:22px;height:22px;padding:0;font-size:9px}.layer-editor-order button:hover:not(:disabled){color:#fff;background:#333;outline:none}.layer-editor-order button:active:not(:disabled){color:#fff;background:#555;outline:none}.layer-editor-order button:focus{color:#fff;outline:none}.layer-editor-order button:disabled{color:#555;cursor:default;pointer-events:none;outline:none}.layer-editor-opacity{align-items:center;gap:9px;display:flex}.layer-editor-slider{accent-color:#1f5278;cursor:pointer;flex:1;min-width:0;margin:0}.layer-editor-value{color:#aaa;text-align:right;flex-shrink:0;width:32px;font-size:11px}.ol-rotate,.ol-full-screen,.ol-graticule,.ol-screen-space-graticule{border-radius:0;left:8px;right:auto}.ol-rotate{border-radius:4px 4px 0 0;top:108px}.ol-full-screen{top:140px}.ol-graticule{top:172px}.ol-screen-space-graticule{border-radius:0 0 4px 4px;top:204px}.ol-rotate button,.ol-full-screen button,.ol-graticule button,.ol-screen-space-graticule button{border-radius:0}.ol-rotate button,.ol-rotate button:hover,.ol-rotate button:active,.ol-rotate button:focus{border-radius:4px 4px 0 0}.ol-full-screen button,.ol-full-screen button:hover,.ol-full-screen button:active,.ol-full-screen button:focus,.ol-graticule button,.ol-graticule button:hover,.ol-graticule button:active,.ol-graticule button:focus{border-radius:0}.ol-screen-space-graticule button,.ol-screen-space-graticule button:hover,.ol-screen-space-graticule button:active,.ol-screen-space-graticule button:focus{border-radius:0 0 4px 4px}.viewer-panel-control{top:246px;left:8px;right:auto}.viewer-panel-control button,.viewer-panel-control button:hover,.viewer-panel-control button:active,.viewer-panel-control button:focus,.viewer-panel-control button.active,.viewer-panel-control button.active:hover,.viewer-panel-control button.active:active,.viewer-panel-control button.active:focus{border-radius:4px}.viewer-panel{z-index:1000;box-sizing:border-box;color:#fff;background:#111;border-radius:10px;width:240px;position:absolute;top:288px;left:8px;overflow:hidden;box-shadow:0 3px 10px #00000059}.viewer-panel.hidden{display:none}.viewer-panel-header{border-bottom:1px solid #333;padding:12px 14px;font-weight:600}.viewer-panel-section{border-bottom:1px solid #333;padding:12px 14px}.viewer-panel-section:last-child{border-bottom:0}.viewer-panel-section h2{color:#fff;margin:0 0 10px;font-size:13px}.current-slide{color:#ccc;overflow-wrap:anywhere;margin-bottom:10px;font-size:12px}.map .ol-custom-overviewmap{background:0 0;border-radius:4px;width:300px;height:284px;padding:0;transition:width .18s,height .18s;inset:8px 8px auto auto;overflow:hidden}.map .ol-custom-overviewmap.ol-collapsed{width:28px;height:28px}.map .ol-custom-overviewmap .ol-overviewmap-map,.map .ol-custom-overviewmap.ol-collapsed .ol-overviewmap-map{box-sizing:border-box;opacity:1;background:#fff;border:2px solid #444;border-radius:4px;width:300px;height:250px;margin:0;transition:opacity .16s,transform .18s;display:block;position:absolute;top:32px;right:0;overflow:hidden;transform:translateY(0)}.map .ol-custom-overviewmap.ol-collapsed .ol-overviewmap-map{opacity:0;pointer-events:none;transform:translateY(-8px)}.map .ol-custom-overviewmap .ol-overviewmap-map .ol-viewport{background:#fff}.map .ol-custom-overviewmap .ol-overviewmap-box{box-sizing:border-box;border:3px dotted #163a59}.map .ol-custom-overviewmap button,.map .ol-custom-overviewmap:not(.ol-collapsed) button{z-index:2;color:#fff;cursor:pointer;background:#111;border:0;border-radius:4px;width:28px;height:28px;margin:0;position:absolute;inset:0 0 auto auto}.map .ol-custom-overviewmap button:hover{color:#fff;background:#333;outline:none}.map .ol-custom-overviewmap button:active{color:#fff;background:#555;outline:none}.map .ol-custom-overviewmap button:focus{color:#fff;outline:none}.overview-toggle-icon{justify-content:center;align-items:center;width:100%;height:100%;font-size:11px;transition:transform .18s;display:flex}.ol-scale-line{background:#1111118c;border-radius:4px;padding:5px 8px;font-family:Calibri,sans-serif;bottom:8px;left:8px;box-shadow:0 2px 7px #00000040}.ol-scale-line-inner{color:#fff;border:1px solid #fff;border-bottom:0;margin:0;font-size:14px;line-height:1.2}.ol-mouse-position{z-index:100;color:#fff;background:#111;border-radius:4px;padding:6px 9px;font-family:Calibri,sans-serif;font-size:12px;position:absolute;inset:auto 8px 8px auto;box-shadow:0 2px 7px #0000004d}.ol-zoom button:focus,.ol-rotate button:focus,.ol-full-screen button:focus,.ol-graticule button:focus,.ol-screen-space-graticule button:focus,.viewer-panel-control button:focus,.layer-editor-control button:focus{color:#fff;outline:none}.ol-graticule.active button,.ol-screen-space-graticule.active button,.ol-full-screen button.ol-full-screen-true,.viewer-panel-control button.active,.layer-editor-control button.active{background:#163a59}.ol-graticule.active button:hover,.ol-screen-space-graticule.active button:hover,.ol-full-screen button.ol-full-screen-true:hover,.viewer-panel-control button.active:hover,.layer-editor-control button.active:hover{background:#1f5278}.ol-graticule.active button:active,.ol-screen-space-graticule.active button:active,.ol-full-screen button.ol-full-screen-true:active,.viewer-panel-control button.active:active,.layer-editor-control button.active:active{background:#555}.ol-layerswitcher,.ol-control.ol-layerswitcher{display:none} +>>>>>>> Stashed changes /*$vite$:1*/ diff --git a/tiatoolbox/data/visualization/static/openlayers/viewer.js b/tiatoolbox/data/visualization/static/openlayers/viewer.js index 3574433e7f..6a4ffd90a7 100644 --- a/tiatoolbox/data/visualization/static/openlayers/viewer.js +++ b/tiatoolbox/data/visualization/static/openlayers/viewer.js @@ -1793,15 +1793,160 @@ function z(e, t) { if (!e) throw Error(t); } //#endregion +<<<<<<< Updated upstream +======= +//#region node_modules/ol/structs/PriorityQueue.js +var Nr = Infinity, Pr = class { + constructor(e, t) { + this.priorityFunction_ = e, this.keyFunction_ = t, this.elements_ = [], this.priorities_ = [], this.queuedElements_ = {}; + } + clear() { + this.elements_.length = 0, this.priorities_.length = 0, k(this.queuedElements_); + } + dequeue() { + let e = this.elements_, t = this.priorities_, n = e[0]; + e.length == 1 ? (e.length = 0, t.length = 0) : (e[0] = e.pop(), t[0] = t.pop(), this.siftUp_(0)); + let r = this.keyFunction_(n); + return delete this.queuedElements_[r], n; + } + enqueue(e) { + R(!(this.keyFunction_(e) in this.queuedElements_), "Tried to enqueue an `element` that was already added to the queue"); + let t = this.priorityFunction_(e); + return t != Infinity && (this.elements_.push(e), this.priorities_.push(t), this.queuedElements_[this.keyFunction_(e)] = !0, this.siftDown_(0, this.elements_.length - 1), !0); + } + getCount() { + return this.elements_.length; + } + getLeftChildIndex_(e) { + return e * 2 + 1; + } + getRightChildIndex_(e) { + return e * 2 + 2; + } + getParentIndex_(e) { + return e - 1 >> 1; + } + heapify_() { + let e; + for (e = (this.elements_.length >> 1) - 1; e >= 0; e--) this.siftUp_(e); + } + isEmpty() { + return this.elements_.length === 0; + } + isKeyQueued(e) { + return e in this.queuedElements_; + } + isQueued(e) { + return this.isKeyQueued(this.keyFunction_(e)); + } + siftUp_(e) { + let t = this.elements_, n = this.priorities_, r = t.length, i = t[e], a = n[e], o = e; + for (; e < r >> 1;) { + let i = this.getLeftChildIndex_(e), a = this.getRightChildIndex_(e), o = a < r && n[a] < n[i] ? a : i; + t[e] = t[o], n[e] = n[o], e = o; + } + t[e] = i, n[e] = a, this.siftDown_(o, e); + } + siftDown_(e, t) { + let n = this.elements_, r = this.priorities_, i = n[t], a = r[t]; + for (; t > e;) { + let e = this.getParentIndex_(t); + if (r[e] > a) n[t] = n[e], r[t] = r[e], t = e; + else break; + } + n[t] = i, r[t] = a; + } + reprioritize() { + let e = this.priorityFunction_, t = this.elements_, n = this.priorities_, r = 0, i = t.length, a, o, s; + for (o = 0; o < i; ++o) a = t[o], s = e(a), s == Infinity ? delete this.queuedElements_[this.keyFunction_(a)] : (n[r] = s, t[r++] = a); + t.length = r, n.length = r, this.heapify_(); + } +}, Fr = class extends Pr { + constructor(e, t) { + super((t) => e.apply(null, t), (e) => e[0].getKey()), this.boundHandleTileChange_ = this.handleTileChange.bind(this), this.tileChangeCallback_ = t, this.tilesLoading_ = 0, this.tilesLoadingKeys_ = {}; + } + enqueue(e) { + let t = super.enqueue(e); + return t && e[0].addEventListener(M.CHANGE, this.boundHandleTileChange_), t; + } + getTilesLoading() { + return this.tilesLoading_; + } + handleTileChange(e) { + let t = e.target, n = t.getState(); + if (n === L.LOADED || n === L.ERROR || n === L.EMPTY) { + n !== L.ERROR && t.removeEventListener(M.CHANGE, this.boundHandleTileChange_); + let e = t.getKey(); + e in this.tilesLoadingKeys_ && (delete this.tilesLoadingKeys_[e], --this.tilesLoading_), this.tileChangeCallback_(); + } + } + loadMoreTiles(e, t) { + let n = 0; + for (; this.tilesLoading_ < e && n < t && this.getCount() > 0;) { + let e = this.dequeue()[0], t = e.getKey(); + e.getState() === L.IDLE && !(t in this.tilesLoadingKeys_) && (this.tilesLoadingKeys_[t] = !0, ++this.tilesLoading_, ++n, e.load()); + } + } +}; +function Ir(e, t, n, r, i) { + if (!e || !(n in e.wantedTiles) || !e.wantedTiles[n][t.getKey()]) return Nr; + let a = e.viewState.center, o = r[0] - a[0], s = r[1] - a[1]; + return 65536 * Math.log(i) + Math.sqrt(o * o + s * s) / i; +} +//#endregion +//#region node_modules/ol/ViewHint.js +var Lr = { + ANIMATING: 0, + INTERACTING: 1 +}, Rr = { + CENTER: "center", + RESOLUTION: "resolution", + ROTATION: "rotation" +}; +//#endregion +//#region node_modules/ol/centerconstraint.js +function zr(e, t, n) { + return (function(r, i, a, o, s) { + if (!r) return; + if (!i && !t) return r; + let c = t ? 0 : a[0] * i, l = t ? 0 : a[1] * i, u = s ? s[0] : 0, d = s ? s[1] : 0, f = e[0] + c / 2 + u, p = e[2] - c / 2 + u, m = e[1] + l / 2 + d, h = e[3] - l / 2 + d; + f > p && (f = (p + f) / 2, p = f), m > h && (m = (h + m) / 2, h = m); + let g = St(r[0], f, p), _ = St(r[1], m, h); + if (o && n && i) { + let e = 30 * i; + g += -e * Math.log(1 + Math.max(0, f - r[0]) / e) + e * Math.log(1 + Math.max(0, r[0] - p) / e), _ += -e * Math.log(1 + Math.max(0, m - r[1]) / e) + e * Math.log(1 + Math.max(0, r[1] - h) / e); + } + return [g, _]; + }); +} +function Br(e) { + return e; +} +//#endregion +//#region node_modules/ol/easing.js +function Vr(e) { + return e ** 3; +} +function Hr(e) { + return 1 - Vr(1 - e); +} +function Ur(e) { + return 3 * e * e - 2 * e * e * e; +} +function Wr(e) { + return e; +} +//#endregion +>>>>>>> Stashed changes //#region node_modules/ol/transform.js -var Wr = [ +var Gr = [ 1, 0, 0, 1, 0, 0 -], Gr = [ +], Kr = [ , , , @@ -1809,46 +1954,55 @@ var Wr = [ , , ]; -function Kr() { - return Wr.slice(0); +function qr() { + return Gr.slice(0); } -function qr(e) { - return Yr(e, 1, 0, 0, 1, 0, 0); +function Jr(e) { + return Xr(e, 1, 0, 0, 1, 0, 0); } -function Jr(e, t) { +function Yr(e, t) { let n = e[0], r = e[1], i = e[2], a = e[3], o = e[4], s = e[5], c = t[0], l = t[1], u = t[2], d = t[3], f = t[4], p = t[5]; return e[0] = n * c + i * l, e[1] = r * c + a * l, e[2] = n * u + i * d, e[3] = r * u + a * d, e[4] = n * f + i * p + o, e[5] = r * f + a * p + s, e; } -function Yr(e, t, n, r, i, a, o) { +function Xr(e, t, n, r, i, a, o) { return e[0] = t, e[1] = n, e[2] = r, e[3] = i, e[4] = a, e[5] = o, e; } -function Xr(e, t) { +function Zr(e, t) { 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; } -function B(e, t) { +function z(e, t) { let n = t[0], r = t[1]; return t[0] = e[0] * n + e[2] * r + e[4], t[1] = e[1] * n + e[3] * r + e[5], t; } -function Zr(e, t, n) { - return Jr(e, Yr(Gr, t, 0, 0, n, 0, 0)); -} function Qr(e, t, n) { - return Jr(e, Yr(Gr, 1, 0, 0, 1, t, n)); + return Yr(e, Xr(Kr, t, 0, 0, n, 0, 0)); } -function $r(e, t, n, r, i, a, o, s) { +function $r(e, t, n) { + return Yr(e, Xr(Kr, 1, 0, 0, 1, t, n)); +} +function ei(e, t, n, r, i, a, o, s) { let c = Math.sin(a), l = Math.cos(a); return e[0] = r * l, e[1] = i * c, e[2] = -r * c, e[3] = i * l, e[4] = o * r * l - s * r * c + t, e[5] = o * i * c + s * i * l + n, e; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function ei(e, t) { let n = ti(t); z(n !== 0, "Transformation matrix cannot be inverted"); +======= +======= +>>>>>>> Stashed changes +function ti(e, t) { + let n = ni(t); + R(n !== 0, "Transformation matrix cannot be inverted"); +>>>>>>> Stashed changes let r = t[0], i = t[1], a = t[2], o = t[3], s = t[4], c = t[5]; return e[0] = o / n, e[1] = -i / n, e[2] = -a / n, e[3] = r / n, e[4] = (a * c - o * s) / n, e[5] = -(r * c - i * s) / n, e; } -function ti(e) { +function ni(e) { return e[0] * e[3] - e[1] * e[2]; } -var ni = [ +var ri = [ 1e5, 1e5, 1e5, @@ -1856,15 +2010,15 @@ var ni = [ 2, 2 ]; -function ri(e) { +function ii(e) { return "matrix(" + e.join(", ") + ")"; } -function ii(e) { +function ai(e) { return e.substring(7, e.length - 1).split(",").map(parseFloat); } -function ai(e, t) { - let n = ii(e), r = ii(t); - for (let e = 0; e < 6; ++e) if (Math.round((n[e] - r[e]) * ni[e]) !== 0) return !1; +function oi(e, t) { + let n = ai(e), r = ai(t); + for (let e = 0; e < 6; ++e) if (Math.round((n[e] - r[e]) * ri[e]) !== 0) return !1; return !0; } //#endregion @@ -2751,7 +2905,15 @@ function oa(e) { } //#endregion //#region node_modules/ol/geom/flat/transform.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function sa(e, t, n, r, i, a, o) { +======= +function si(e, t, n, r, i, a, o) { +>>>>>>> Stashed changes +======= +function si(e, t, n, r, i, a, o) { +>>>>>>> Stashed changes a ||= [], o ||= 2; let s = 0; for (let c = t; c < n; c += r) { @@ -2761,7 +2923,15 @@ function sa(e, t, n, r, i, a, o) { } return a && a.length != s && (a.length = s), a; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function ca(e, t, n, r, i, a, o) { +======= +function ci(e, t, n, r, i, a, o) { +>>>>>>> Stashed changes +======= +function ci(e, t, n, r, i, a, o) { +>>>>>>> Stashed changes o ||= []; let s = Math.cos(i), c = Math.sin(i), l = a[0], u = a[1], d = 0; for (let i = t; i < n; i += r) { @@ -2771,7 +2941,15 @@ function ca(e, t, n, r, i, a, o) { } return o && o.length != d && (o.length = d), o; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function la(e, t, n, r, i, a, o, s) { +======= +function li(e, t, n, r, i, a, o, s) { +>>>>>>> Stashed changes +======= +function li(e, t, n, r, i, a, o, s) { +>>>>>>> Stashed changes s ||= []; let c = o[0], l = o[1], u = 0; for (let o = t; o < n; o += r) { @@ -2781,7 +2959,15 @@ function la(e, t, n, r, i, a, o, s) { } return s && s.length != u && (s.length = u), s; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function ua(e, t, n, r, i, a, o) { +======= +function ui(e, t, n, r, i, a, o) { +>>>>>>> Stashed changes +======= +function ui(e, t, n, r, i, a, o) { +>>>>>>> Stashed changes o ||= []; let s = 0; for (let c = t; c < n; c += r) { @@ -2792,7 +2978,15 @@ function ua(e, t, n, r, i, a, o) { } //#endregion //#region node_modules/ol/geom/Geometry.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var da = Kr(), fa = [NaN, NaN], pa = class extends A { +======= +var di = qr(), fi = [NaN, NaN], pi = class extends we { +>>>>>>> Stashed changes +======= +var di = qr(), fi = [NaN, NaN], pi = class extends we { +>>>>>>> Stashed changes constructor() { super(), this.extent_ = at(), this.extentRevision_ = -1, this.simplifiedGeometryMaxMinSquaredTolerance = 0, this.simplifiedGeometryRevision = 0, this.simplifyTransformedInternal = b((e, t, n) => { if (!n) return this.getSimplifiedGeometry(t); @@ -2810,7 +3004,15 @@ var da = Kr(), fa = [NaN, NaN], pa = class extends A { return E(); } containsXY(e, t) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return this.closestPointXY(e, t, fa, Number.MIN_VALUE) === 0; +======= + return this.closestPointXY(e, t, fi, Number.MIN_VALUE) === 0; +>>>>>>> Stashed changes +======= + return this.closestPointXY(e, t, fi, Number.MIN_VALUE) === 0; +>>>>>>> Stashed changes } getClosestPoint(e, t) { return t ||= [NaN, NaN], this.closestPointXY(e[0], e[1], t, Infinity), t; @@ -2853,15 +3055,33 @@ var da = Kr(), fa = [NaN, NaN], pa = class extends A { E(); } transform(e, t) { +<<<<<<< Updated upstream let n = gr(e), r = n.getUnits() == "tile-pixels" ? function(e, r, i) { let a = n.getExtent(), o = n.getWorldExtent(), s = Ct(o) / Ct(a); $r(da, o[0], o[3], s, -s, 0, 0, 0); let c = sa(e, 0, e.length, i, da, r), l = Tr(n, t); +======= + let n = nr(e), r = n.getUnits() == "tile-pixels" ? function(e, r, i) { + let a = n.getExtent(), o = n.getWorldExtent(), s = ct(o) / ct(a); + ei(di, o[0], o[3], s, -s, 0, 0, 0); + let c = si(e, 0, e.length, i, di, r), l = dr(n, t); +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes return l ? l(c, c, i) : c; } : Tr(n, t); return this.applyTransform(r), this; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, ma = class extends pa { +======= +}, mi = class extends pi { +>>>>>>> Stashed changes +======= +}, mi = class extends pi { +>>>>>>> Stashed changes constructor() { super(), this.layout = "XY", this.stride = 2, this.flatCoordinates; } @@ -2895,14 +3115,30 @@ var da = Kr(), fa = [NaN, NaN], pa = class extends A { return this.stride; } setFlatCoordinates(e, t) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.stride = ga(e), this.layout = e, this.flatCoordinates = t; +======= + this.stride = gi(e), this.layout = e, this.flatCoordinates = t; +>>>>>>> Stashed changes +======= + this.stride = gi(e), this.layout = e, this.flatCoordinates = t; +>>>>>>> Stashed changes } setCoordinates(e, t) { E(); } setLayout(e, t, n) { let r; +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (e) r = ga(e); +======= + if (e) r = gi(e); +>>>>>>> Stashed changes +======= + if (e) r = gi(e); +>>>>>>> Stashed changes else { for (let e = 0; e < n; ++e) { if (t.length === 0) { @@ -2911,7 +3147,15 @@ var da = Kr(), fa = [NaN, NaN], pa = class extends A { } t = t[0]; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream r = t.length, e = ha(r); +======= + r = t.length, e = hi(r); +>>>>>>> Stashed changes +======= + r = t.length, e = hi(r); +>>>>>>> Stashed changes } this.layout = e, this.stride = r; } @@ -2922,7 +3166,15 @@ var da = Kr(), fa = [NaN, NaN], pa = class extends A { let n = this.getFlatCoordinates(); if (n) { let r = this.getStride(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream ca(n, 0, n.length, r, e, t, n), this.changed(); +======= + ci(n, 0, n.length, r, e, t, n), this.changed(); +>>>>>>> Stashed changes +======= + ci(n, 0, n.length, r, e, t, n), this.changed(); +>>>>>>> Stashed changes } } scale(e, t, n) { @@ -2930,13 +3182,23 @@ var da = Kr(), fa = [NaN, NaN], pa = class extends A { let r = this.getFlatCoordinates(); if (r) { let i = this.getStride(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream la(r, 0, r.length, i, e, t, n, r), this.changed(); +======= + li(r, 0, r.length, i, e, t, n, r), this.changed(); +>>>>>>> Stashed changes +======= + li(r, 0, r.length, i, e, t, n, r), this.changed(); +>>>>>>> Stashed changes } } translate(e, t) { let n = this.getFlatCoordinates(); if (n) { let r = this.getStride(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream ua(n, 0, n.length, r, e, t, n), this.changed(); } } @@ -2958,6 +3220,52 @@ function _a(e, t, n) { //#endregion //#region node_modules/ol/geom/flat/area.js function va(e, t, n, r) { +======= + ui(n, 0, n.length, r, e, t, n), this.changed(); + } + } +}; +function hi(e) { + let t; + return e == 2 ? t = "XY" : e == 3 ? t = "XYZ" : e == 4 && (t = "XYZM"), t; +} +function gi(e) { + let t; + return e == "XY" ? t = 2 : e == "XYZ" || e == "XYM" ? t = 3 : e == "XYZM" && (t = 4), t; +} +function _i(e, t, n) { + let r = e.getFlatCoordinates(); + if (!r) return null; + let i = e.getStride(); + return si(r, 0, r.length, i, t, n); +} +//#endregion +//#region node_modules/ol/geom/flat/area.js +function vi(e, t, n, r) { +>>>>>>> Stashed changes +======= + ui(n, 0, n.length, r, e, t, n), this.changed(); + } + } +}; +function hi(e) { + let t; + return e == 2 ? t = "XY" : e == 3 ? t = "XYZ" : e == 4 && (t = "XYZM"), t; +} +function gi(e) { + let t; + return e == "XY" ? t = 2 : e == "XYZ" || e == "XYM" ? t = 3 : e == "XYZM" && (t = 4), t; +} +function _i(e, t, n) { + let r = e.getFlatCoordinates(); + if (!r) return null; + let i = e.getStride(); + return si(r, 0, r.length, i, t, n); +} +//#endregion +//#region node_modules/ol/geom/flat/area.js +function vi(e, t, n, r) { +>>>>>>> Stashed changes let i = 0, a = e[n - r], o = e[n - r + 1], s = 0, c = 0; for (; t < n; t += r) { let n = e[t] - a, r = e[t + 1] - o; @@ -2965,17 +3273,41 @@ function va(e, t, n, r) { } return i / 2; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function ya(e, t, n, r) { let i = 0; for (let a = 0, o = n.length; a < o; ++a) { let o = n[a]; i += va(e, t, o, r), t = o; +======= +function yi(e, t, n, r) { + let i = 0; + for (let a = 0, o = n.length; a < o; ++a) { + let o = n[a]; + i += vi(e, t, o, r), t = o; +>>>>>>> Stashed changes +======= +function yi(e, t, n, r) { + let i = 0; + for (let a = 0, o = n.length; a < o; ++a) { + let o = n[a]; + i += vi(e, t, o, r), t = o; +>>>>>>> Stashed changes } return i; } //#endregion //#region node_modules/ol/geom/flat/closest.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function ba(e, t, n, r, i, a, o) { +======= +function bi(e, t, n, r, i, a, o) { +>>>>>>> Stashed changes +======= +function bi(e, t, n, r, i, a, o) { +>>>>>>> Stashed changes let s = e[t], c = e[t + 1], l = e[n] - s, u = e[n + 1] - c, d; if (l === 0 && u === 0) d = t; else { @@ -2990,7 +3322,15 @@ function ba(e, t, n, r, i, a, o) { for (let t = 0; t < r; ++t) o[t] = e[d + t]; o.length = r; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function xa(e, t, n, r, i) { +======= +function xi(e, t, n, r, i) { +>>>>>>> Stashed changes +======= +function xi(e, t, n, r, i) { +>>>>>>> Stashed changes let a = e[t], o = e[t + 1]; for (t += r; t < n; t += r) { let n = e[t], r = e[t + 1], s = Ht(a, o, n, r); @@ -2998,6 +3338,8 @@ function xa(e, t, n, r, i) { } return i; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Sa(e, t, n, r, i) { for (let a = 0, o = n.length; a < o; ++a) { let o = n[a]; @@ -3006,6 +3348,26 @@ function Sa(e, t, n, r, i) { return i; } function Ca(e, t, n, r, i, a, o, s, c, l, u) { +======= +function Si(e, t, n, r, i) { + for (let a = 0, o = n.length; a < o; ++a) { + let o = n[a]; + i = xi(e, t, o, r, i), t = o; + } + return i; +} +function Ci(e, t, n, r, i, a, o, s, c, l, u) { +>>>>>>> Stashed changes +======= +function Si(e, t, n, r, i) { + for (let a = 0, o = n.length; a < o; ++a) { + let o = n[a]; + i = xi(e, t, o, r, i), t = o; + } + return i; +} +function Ci(e, t, n, r, i, a, o, s, c, l, u) { +>>>>>>> Stashed changes if (t == n) return l; let d, f; if (i === 0) { @@ -3017,48 +3379,114 @@ function Ca(e, t, n, r, i, a, o, s, c, l, u) { } u ||= [NaN, NaN]; let p = t + r; +<<<<<<< Updated upstream +<<<<<<< Updated upstream for (; p < n;) if (ba(e, p - r, p, r, o, s, u), f = Ht(o, s, u[0], u[1]), f < l) { for (l = f, d = 0; d < r; ++d) c[d] = u[d]; c.length = r, p += r; } else p += r * Math.max((Math.sqrt(f) - Math.sqrt(l)) / i | 0, 1); if (a && (ba(e, n - r, t, r, o, s, u), f = Ht(o, s, u[0], u[1]), f < l)) { +======= + for (; p < n;) if (bi(e, p - r, p, r, o, s, u), f = wt(o, s, u[0], u[1]), f < l) { + for (l = f, d = 0; d < r; ++d) c[d] = u[d]; + c.length = r, p += r; + } else p += r * Math.max((Math.sqrt(f) - Math.sqrt(l)) / i | 0, 1); + if (a && (bi(e, n - r, t, r, o, s, u), f = wt(o, s, u[0], u[1]), f < l)) { +>>>>>>> Stashed changes +======= + for (; p < n;) if (bi(e, p - r, p, r, o, s, u), f = wt(o, s, u[0], u[1]), f < l) { + for (l = f, d = 0; d < r; ++d) c[d] = u[d]; + c.length = r, p += r; + } else p += r * Math.max((Math.sqrt(f) - Math.sqrt(l)) / i | 0, 1); + if (a && (bi(e, n - r, t, r, o, s, u), f = wt(o, s, u[0], u[1]), f < l)) { +>>>>>>> Stashed changes for (l = f, d = 0; d < r; ++d) c[d] = u[d]; c.length = r; } return l; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function wa(e, t, n, r, i, a, o, s, c, l, u) { u ||= [NaN, NaN]; for (let d = 0, f = n.length; d < f; ++d) { let f = n[d]; l = Ca(e, t, f, r, i, a, o, s, c, l, u), t = f; +======= +function wi(e, t, n, r, i, a, o, s, c, l, u) { + u ||= [NaN, NaN]; + for (let d = 0, f = n.length; d < f; ++d) { + let f = n[d]; + l = Ci(e, t, f, r, i, a, o, s, c, l, u), t = f; +>>>>>>> Stashed changes +======= +function wi(e, t, n, r, i, a, o, s, c, l, u) { + u ||= [NaN, NaN]; + for (let d = 0, f = n.length; d < f; ++d) { + let f = n[d]; + l = Ci(e, t, f, r, i, a, o, s, c, l, u), t = f; +>>>>>>> Stashed changes } return l; } //#endregion //#region node_modules/ol/geom/flat/deflate.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Ta(e, t, n, r) { for (let r = 0, i = n.length; r < i; ++r) e[t++] = n[r]; return t; } function Ea(e, t, n, r) { +======= +function Ti(e, t, n, r) { + for (let r = 0, i = n.length; r < i; ++r) e[t++] = n[r]; + return t; +} +function Ei(e, t, n, r) { +>>>>>>> Stashed changes +======= +function Ti(e, t, n, r) { + for (let r = 0, i = n.length; r < i; ++r) e[t++] = n[r]; + return t; +} +function Ei(e, t, n, r) { +>>>>>>> Stashed changes for (let i = 0, a = n.length; i < a; ++i) { let a = n[i]; for (let n = 0; n < r; ++n) e[t++] = a[n]; } return t; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Da(e, t, n, r, i) { i ||= []; let a = 0; for (let o = 0, s = n.length; o < s; ++o) { let s = Ea(e, t, n[o], r); +======= +function Di(e, t, n, r, i) { + i ||= []; + let a = 0; + for (let o = 0, s = n.length; o < s; ++o) { + let s = Ei(e, t, n[o], r); +>>>>>>> Stashed changes +======= +function Di(e, t, n, r, i) { + i ||= []; + let a = 0; + for (let o = 0, s = n.length; o < s; ++o) { + let s = Ei(e, t, n[o], r); +>>>>>>> Stashed changes i[a++] = s, t = s; } return i.length = a, i; } //#endregion //#region node_modules/ol/geom/flat/inflate.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Oa(e, t, n, r, i) { i = i === void 0 ? [] : i; let a = 0; @@ -3072,6 +3500,17 @@ function ka(e, t, n, r, i) { let s = n[o]; i[a++] = Oa(e, t, s, r, i[a]), t = s; } +======= +======= +>>>>>>> Stashed changes +function Oi(e, t, n, r, i) { + i = i === void 0 ? [] : i; + let a = 0; + for (let o = t; o < n; o += r) i[a++] = e.slice(o, o + r); +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes return i.length = a, i; } function Aa(e, t, n, r, i) { @@ -3079,18 +3518,55 @@ function Aa(e, t, n, r, i) { let a = 0; for (let o = 0, s = n.length; o < s; ++o) { let s = n[o]; +<<<<<<< Updated upstream +<<<<<<< Updated upstream i[a++] = s.length === 1 && s[0] === t ? [] : ka(e, t, s, r, i[a]), t = s[s.length - 1]; +======= +======= +>>>>>>> Stashed changes + i[a++] = Oi(e, t, s, r, i[a]), t = s; + } + return i.length = a, i; +} +function Ai(e, t, n, r, i) { + i = i === void 0 ? [] : i; + let a = 0; + for (let o = 0, s = n.length; o < s; ++o) { + let s = n[o]; + i[a++] = s.length === 1 && s[0] === t ? [] : ki(e, t, s, r, i[a]), t = s[s.length - 1]; +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes } return i.length = a, i; } //#endregion //#region node_modules/ol/geom/flat/contains.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function ja(e, t, n, r, i) { return !ht(i, function(i) { return !Ma(e, t, n, r, i[0], i[1]); }); } function Ma(e, t, n, r, i, a) { +======= +function ji(e, t, n, r, i) { + return !et(i, function(i) { + return !Mi(e, t, n, r, i[0], i[1]); + }); +} +function Mi(e, t, n, r, i, a) { +>>>>>>> Stashed changes +======= +function ji(e, t, n, r, i) { + return !et(i, function(i) { + return !Mi(e, t, n, r, i[0], i[1]); + }); +} +function Mi(e, t, n, r, i, a) { +>>>>>>> Stashed changes let o = 0, s = e[n - r], c = e[n - r + 1]; for (; t < n; t += r) { let n = e[t], r = e[t + 1]; @@ -3098,20 +3574,42 @@ function Ma(e, t, n, r, i, a) { } return o !== 0; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Na(e, t, n, r, i, a) { if (n.length === 0 || !Ma(e, t, n[0], r, i, a)) return !1; for (let t = 1, o = n.length; t < o; ++t) if (Ma(e, n[t - 1], n[t], r, i, a)) return !1; +======= +function Ni(e, t, n, r, i, a) { + if (n.length === 0 || !Mi(e, t, n[0], r, i, a)) return !1; + for (let t = 1, o = n.length; t < o; ++t) if (Mi(e, n[t - 1], n[t], r, i, a)) return !1; +>>>>>>> Stashed changes +======= +function Ni(e, t, n, r, i, a) { + if (n.length === 0 || !Mi(e, t, n[0], r, i, a)) return !1; + for (let t = 1, o = n.length; t < o; ++t) if (Mi(e, n[t - 1], n[t], r, i, a)) return !1; +>>>>>>> Stashed changes return !0; } //#endregion //#region node_modules/ol/geom/flat/segments.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Pa(e, t, n, r, i) { +======= +function Pi(e, t, n, r, i) { +>>>>>>> Stashed changes +======= +function Pi(e, t, n, r, i) { +>>>>>>> Stashed changes let a; for (t += r; t < n; t += r) if (a = i(e.slice(t - r, t), e.slice(t, t + r)), a) return a; return !1; } //#endregion //#region node_modules/ol/geom/flat/intersectsextent.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Fa(e, t, n, r, i, a) { return a ??= pt(at(), e, t, n, r), Ot(i, a) ? a[0] >= i[0] && a[2] <= i[2] || a[1] >= i[1] && a[3] <= i[3] || Pa(e, t, n, r, function(e, t) { return Mt(i, e, t); @@ -3124,11 +3622,38 @@ function La(e, t, n, r, i) { if (!Ia(e, t, n[0], r, i)) return !1; if (n.length === 1) return !0; for (let t = 1, a = n.length; t < a; ++t) if (ja(e, n[t - 1], n[t], r, i) && !Fa(e, n[t - 1], n[t], r, i)) return !1; +======= +======= +>>>>>>> Stashed changes +function Fi(e, t, n, r, i, a) { + return a ??= Qe(We(), e, t, n, r), pt(i, a) ? a[0] >= i[0] && a[2] <= i[2] || a[1] >= i[1] && a[3] <= i[3] || Pi(e, t, n, r, function(e, t) { + return _t(i, e, t); + }) : !1; +} +function Ii(e, t, n, r, i) { + return !!(Fi(e, t, n, r, i) || Mi(e, t, n, r, i[0], i[1]) || Mi(e, t, n, r, i[0], i[3]) || Mi(e, t, n, r, i[2], i[1]) || Mi(e, t, n, r, i[2], i[3])); +} +function Li(e, t, n, r, i) { + if (!Ii(e, t, n[0], r, i)) return !1; + if (n.length === 1) return !0; + for (let t = 1, a = n.length; t < a; ++t) if (ji(e, n[t - 1], n[t], r, i) && !Fi(e, n[t - 1], n[t], r, i)) return !1; +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes return !0; } //#endregion //#region node_modules/ol/geom/flat/simplify.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Ra(e, t, n, r, i, a, o) { +======= +function Ri(e, t, n, r, i, a, o) { +>>>>>>> Stashed changes +======= +function Ri(e, t, n, r, i, a, o) { +>>>>>>> Stashed changes let s = (n - t) / r; if (s < 3) { for (; t < n; t += r) a[o++] = e[t], a[o++] = e[t + 1]; @@ -3148,6 +3673,8 @@ function Ra(e, t, n, r, i, a, o) { for (let n = 0; n < s; ++n) c[n] && (a[o++] = e[t + n * r], a[o++] = e[t + n * r + 1]); return o; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function za(e, t, n, r, i, a, o, s) { for (let c = 0, l = n.length; c < l; ++c) { let l = n[c]; @@ -3168,6 +3695,50 @@ function Va(e, t, n, r, i, a, o) { while (l == s && u == c); for (; t < n;) { let n = Ba(e[t], i), d = Ba(e[t + 1], i); +======= +function zi(e, t, n, r, i, a, o, s) { + for (let c = 0, l = n.length; c < l; ++c) { + let l = n[c]; + o = Ri(e, t, l, r, i, a, o), s.push(o), t = l; + } + return o; +} +function Bi(e, t) { + return t * Math.round(e / t); +} +function Vi(e, t, n, r, i, a, o) { + if (t == n) return o; + let s = Bi(e[t], i), c = Bi(e[t + 1], i); + t += r, a[o++] = s, a[o++] = c; + let l, u; + do + if (l = Bi(e[t], i), u = Bi(e[t + 1], i), t += r, t == n) return a[o++] = l, a[o++] = u, o; + while (l == s && u == c); + for (; t < n;) { + let n = Bi(e[t], i), d = Bi(e[t + 1], i); +>>>>>>> Stashed changes +======= +function zi(e, t, n, r, i, a, o, s) { + for (let c = 0, l = n.length; c < l; ++c) { + let l = n[c]; + o = Ri(e, t, l, r, i, a, o), s.push(o), t = l; + } + return o; +} +function Bi(e, t) { + return t * Math.round(e / t); +} +function Vi(e, t, n, r, i, a, o) { + if (t == n) return o; + let s = Bi(e[t], i), c = Bi(e[t + 1], i); + t += r, a[o++] = s, a[o++] = c; + let l, u; + do + if (l = Bi(e[t], i), u = Bi(e[t + 1], i), t += r, t == n) return a[o++] = l, a[o++] = u, o; + while (l == s && u == c); + for (; t < n;) { + let n = Bi(e[t], i), d = Bi(e[t + 1], i); +>>>>>>> Stashed changes if (t += r, n == l && d == u) continue; let f = l - s, p = u - c, m = n - s, h = d - c; if (f * h == p * m && (f < 0 && m < f || f == m || f > 0 && m > f) && (p < 0 && h < p || p == h || p > 0 && h > p)) { @@ -3178,16 +3749,38 @@ function Va(e, t, n, r, i, a, o) { } return a[o++] = l, a[o++] = u, o; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Ha(e, t, n, r, i, a, o, s) { for (let c = 0, l = n.length; c < l; ++c) { let l = n[c]; o = Va(e, t, l, r, i, a, o), s.push(o), t = l; +======= +function Hi(e, t, n, r, i, a, o, s) { + for (let c = 0, l = n.length; c < l; ++c) { + let l = n[c]; + o = Vi(e, t, l, r, i, a, o), s.push(o), t = l; +>>>>>>> Stashed changes +======= +function Hi(e, t, n, r, i, a, o, s) { + for (let c = 0, l = n.length; c < l; ++c) { + let l = n[c]; + o = Vi(e, t, l, r, i, a, o), s.push(o), t = l; +>>>>>>> Stashed changes } return o; } //#endregion //#region node_modules/ol/geom/LinearRing.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var Ua = class e extends ma { +======= +var Ui = class e extends mi { +>>>>>>> Stashed changes +======= +var Ui = class e extends mi { +>>>>>>> Stashed changes constructor(e, t) { super(), this.maxDelta_ = -1, this.maxDeltaRevision_ = -1, t !== void 0 && !Array.isArray(e[0]) ? this.setFlatCoordinates(t, e) : this.setCoordinates(e, t); } @@ -3195,6 +3788,8 @@ var Ua = class e extends ma { return new e(this.flatCoordinates.slice(), this.layout); } closestPointXY(e, t, n, r) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return r < et(this.getExtent(), e, t) ? r : (this.maxDeltaRevision_ != this.getRevision() && (this.maxDelta_ = Math.sqrt(xa(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0)), this.maxDeltaRevision_ = this.getRevision()), Ca(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.maxDelta_, !0, e, t, n, r)); } getArea() { @@ -3206,19 +3801,63 @@ var Ua = class e extends ma { getSimplifiedGeometryInternal(t) { let n = []; return n.length = Ra(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, t, n, 0), new e(n, "XY"); +======= + return r < ze(this.getExtent(), e, t) ? r : (this.maxDeltaRevision_ != this.getRevision() && (this.maxDelta_ = Math.sqrt(xi(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0)), this.maxDeltaRevision_ = this.getRevision()), Ci(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.maxDelta_, !0, e, t, n, r)); } - getType() { - return "LinearRing"; + getArea() { + return vi(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride); } - intersectsExtent(e) { - return Fa(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, e); + getCoordinates() { + return Oi(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride); } - setCoordinates(e, t) { - this.setLayout(t, e, 1), this.flatCoordinates ||= [], this.flatCoordinates.length = Ea(this.flatCoordinates, 0, e, this.stride), this.changed(); + getSimplifiedGeometryInternal(t) { + let n = []; + return n.length = Ri(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, t, n, 0), new e(n, "XY"); +>>>>>>> Stashed changes +======= + return r < ze(this.getExtent(), e, t) ? r : (this.maxDeltaRevision_ != this.getRevision() && (this.maxDelta_ = Math.sqrt(xi(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0)), this.maxDeltaRevision_ = this.getRevision()), Ci(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.maxDelta_, !0, e, t, n, r)); } -}, Wa = class e extends ma { - constructor(e, t) { - super(), this.setCoordinates(e, t); + getArea() { + return vi(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride); + } + getCoordinates() { + return Oi(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride); + } + getSimplifiedGeometryInternal(t) { + let n = []; + return n.length = Ri(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, t, n, 0), new e(n, "XY"); +>>>>>>> Stashed changes + } + getType() { + return "LinearRing"; + } + intersectsExtent(e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream + return Fa(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, e); + } + setCoordinates(e, t) { + this.setLayout(t, e, 1), this.flatCoordinates ||= [], this.flatCoordinates.length = Ea(this.flatCoordinates, 0, e, this.stride), this.changed(); + } +}, Wa = class e extends ma { +======= + return Fi(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, e); + } + setCoordinates(e, t) { + this.setLayout(t, e, 1), this.flatCoordinates ||= [], this.flatCoordinates.length = Ei(this.flatCoordinates, 0, e, this.stride), this.changed(); + } +}, Wi = class e extends mi { +>>>>>>> Stashed changes +======= + return Fi(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, e); + } + setCoordinates(e, t) { + this.setLayout(t, e, 1), this.flatCoordinates ||= [], this.flatCoordinates.length = Ei(this.flatCoordinates, 0, e, this.stride), this.changed(); + } +}, Wi = class e extends mi { +>>>>>>> Stashed changes + constructor(e, t) { + super(), this.setCoordinates(e, t); } clone() { let t = new e(this.flatCoordinates.slice(), this.layout); @@ -3246,22 +3885,49 @@ var Ua = class e extends ma { return rt(e, this.flatCoordinates[0], this.flatCoordinates[1]); } setCoordinates(e, t) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.setLayout(t, e, 0), this.flatCoordinates ||= [], this.flatCoordinates.length = Ta(this.flatCoordinates, 0, e, this.stride), this.changed(); +======= + this.setLayout(t, e, 0), this.flatCoordinates ||= [], this.flatCoordinates.length = Ti(this.flatCoordinates, 0, e, this.stride), this.changed(); +>>>>>>> Stashed changes +======= + this.setLayout(t, e, 0), this.flatCoordinates ||= [], this.flatCoordinates.length = Ti(this.flatCoordinates, 0, e, this.stride), this.changed(); +>>>>>>> Stashed changes } }; //#endregion //#region node_modules/ol/geom/flat/interiorpoint.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Ga(e, t, n, r, i, a, o) { let s, c, l, d, f, p, m, h = i[a + 1], g = []; +======= +======= +>>>>>>> Stashed changes +function Gi(e, t, n, r, i, a, o) { + let s, c, l, u, d, f, p, m = i[a + 1], h = []; +>>>>>>> Stashed changes for (let i = 0, a = n.length; i < a; ++i) { let a = n[i]; for (d = e[a - r], p = e[a - r + 1], s = t; s < a; s += r) f = e[s], m = e[s + 1], (h <= p && m <= h || p <= h && h <= m) && (l = (h - p) / (m - p) * (f - d) + d, g.push(l)), d = f, p = m; } +<<<<<<< Updated upstream let _ = NaN, v = -Infinity; for (g.sort(u), d = g[0], s = 1, c = g.length; s < c; ++s) { f = g[s]; let i = Math.abs(f - d); i > v && (l = (d + f) / 2, Na(e, t, n, r, l, h) && (_ = l, v = i)), d = f; +======= + let g = NaN, _ = -Infinity; + for (h.sort(oe), u = h[0], s = 1, c = h.length; s < c; ++s) { + d = h[s]; + let i = Math.abs(d - u); + i > _ && (l = (u + d) / 2, Ni(e, t, n, r, l, m) && (g = l, _ = i)), u = d; +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes } return isNaN(_) && (_ = i[a]), o ? (o.push(_, h, v), o) : [ _, @@ -3269,17 +3935,41 @@ function Ga(e, t, n, r, i, a, o) { v ]; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Ka(e, t, n, r, i) { let a = []; for (let o = 0, s = n.length; o < s; ++o) { let s = n[o]; a = Ga(e, t, s, r, i, 2 * o, a), t = s[s.length - 1]; +======= +function Ki(e, t, n, r, i) { + let a = []; + for (let o = 0, s = n.length; o < s; ++o) { + let s = n[o]; + a = Gi(e, t, s, r, i, 2 * o, a), t = s[s.length - 1]; +>>>>>>> Stashed changes +======= +function Ki(e, t, n, r, i) { + let a = []; + for (let o = 0, s = n.length; o < s; ++o) { + let s = n[o]; + a = Gi(e, t, s, r, i, 2 * o, a), t = s[s.length - 1]; +>>>>>>> Stashed changes } return a; } //#endregion //#region node_modules/ol/geom/flat/reverse.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function qa(e, t, n, r) { +======= +function qi(e, t, n, r) { +>>>>>>> Stashed changes +======= +function qi(e, t, n, r) { +>>>>>>> Stashed changes for (; t < n - r;) { for (let i = 0; i < r; ++i) { let a = e[t + i]; @@ -3290,7 +3980,15 @@ function qa(e, t, n, r) { } //#endregion //#region node_modules/ol/geom/flat/orient.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Ja(e, t, n, r) { +======= +function Ji(e, t, n, r) { +>>>>>>> Stashed changes +======= +function Ji(e, t, n, r) { +>>>>>>> Stashed changes let i = 0, a = e[n - r], o = e[n - r + 1]; for (; t < n; t += r) { let n = e[t], r = e[t + 1]; @@ -3298,10 +3996,24 @@ function Ja(e, t, n, r) { } return i === 0 ? void 0 : i > 0; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Ya(e, t, n, r, i) { i = i !== void 0 && i; for (let a = 0, o = n.length; a < o; ++a) { let o = n[a], s = Ja(e, t, o, r); +======= +function Yi(e, t, n, r, i) { + i = i !== void 0 && i; + for (let a = 0, o = n.length; a < o; ++a) { + let o = n[a], s = Ji(e, t, o, r); +>>>>>>> Stashed changes +======= +function Yi(e, t, n, r, i) { + i = i !== void 0 && i; + for (let a = 0, o = n.length; a < o; ++a) { + let o = n[a], s = Ji(e, t, o, r); +>>>>>>> Stashed changes if (a === 0) { if (i && s || !i && !s) return !1; } else if (i && !s || !i && s) return !1; @@ -3309,6 +4021,8 @@ function Ya(e, t, n, r, i) { } return !0; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Xa(e, t, n, r, i) { i = i !== void 0 && i; for (let a = 0, o = n.length; a < o; ++a) { @@ -3321,6 +4035,34 @@ function Za(e, t) { let n = [], r = 0, i = 0, a; for (let o = 0, s = t.length; o < s; ++o) { let s = t[o], c = Ja(e, r, s, 2); +======= +function Xi(e, t, n, r, i) { + i = i !== void 0 && i; + for (let a = 0, o = n.length; a < o; ++a) { + let o = n[a], s = Ji(e, t, o, r); + (a === 0 ? i && s || !i && !s : i && !s || !i && s) && qi(e, t, o, r), t = o; + } + return t; +} +function Zi(e, t) { + let n = [], r = 0, i = 0, a; + for (let o = 0, s = t.length; o < s; ++o) { + let s = t[o], c = Ji(e, r, s, 2); +>>>>>>> Stashed changes +======= +function Xi(e, t, n, r, i) { + i = i !== void 0 && i; + for (let a = 0, o = n.length; a < o; ++a) { + let o = n[a], s = Ji(e, t, o, r); + (a === 0 ? i && s || !i && !s : i && !s || !i && s) && qi(e, t, o, r), t = o; + } + return t; +} +function Zi(e, t) { + let n = [], r = 0, i = 0, a; + for (let o = 0, s = t.length; o < s; ++o) { + let s = t[o], c = Ji(e, r, s, 2); +>>>>>>> Stashed changes if (a === void 0 && (a = c), c === a) n.push(t.slice(i, o + 1)); else { if (n.length === 0) continue; @@ -3332,7 +4074,15 @@ function Za(e, t) { } //#endregion //#region node_modules/ol/geom/Polygon.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var Qa = class e extends ma { +======= +var Qi = class e extends mi { +>>>>>>> Stashed changes +======= +var Qi = class e extends mi { +>>>>>>> Stashed changes constructor(e, t, n) { super(), this.ends_ = [], this.flatInteriorPointRevision_ = -1, this.flatInteriorPoint_ = null, this.maxDelta_ = -1, this.maxDeltaRevision_ = -1, this.orientedRevision_ = -1, this.orientedFlatCoordinates_ = null, t !== void 0 && n ? (this.setFlatCoordinates(t, e), this.ends_ = n) : this.setCoordinates(e, t); } @@ -3344,6 +4094,8 @@ var Qa = class e extends ma { return t.applyProperties(this), t; } closestPointXY(e, t, n, r) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return r < et(this.getExtent(), e, t) ? r : (this.maxDeltaRevision_ != this.getRevision() && (this.maxDelta_ = Math.sqrt(Sa(this.flatCoordinates, 0, this.ends_, this.stride, 0)), this.maxDeltaRevision_ = this.getRevision()), wa(this.flatCoordinates, 0, this.ends_, this.stride, this.maxDelta_, !0, e, t, n, r)); } containsXY(e, t) { @@ -3355,30 +4107,88 @@ var Qa = class e extends ma { getCoordinates(e) { let t; return e === void 0 ? t = this.flatCoordinates : (t = this.getOrientedFlatCoordinates().slice(), Xa(t, 0, this.ends_, this.stride, e)), ka(t, 0, this.ends_, this.stride); +======= + return r < ze(this.getExtent(), e, t) ? r : (this.maxDeltaRevision_ != this.getRevision() && (this.maxDelta_ = Math.sqrt(Si(this.flatCoordinates, 0, this.ends_, this.stride, 0)), this.maxDeltaRevision_ = this.getRevision()), wi(this.flatCoordinates, 0, this.ends_, this.stride, this.maxDelta_, !0, e, t, n, r)); + } + containsXY(e, t) { + return Ni(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, e, t); + } + getArea() { + return yi(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride); + } + getCoordinates(e) { + let t; + return e === void 0 ? t = this.flatCoordinates : (t = this.getOrientedFlatCoordinates().slice(), Xi(t, 0, this.ends_, this.stride, e)), ki(t, 0, this.ends_, this.stride); +>>>>>>> Stashed changes +======= + return r < ze(this.getExtent(), e, t) ? r : (this.maxDeltaRevision_ != this.getRevision() && (this.maxDelta_ = Math.sqrt(Si(this.flatCoordinates, 0, this.ends_, this.stride, 0)), this.maxDeltaRevision_ = this.getRevision()), wi(this.flatCoordinates, 0, this.ends_, this.stride, this.maxDelta_, !0, e, t, n, r)); + } + containsXY(e, t) { + return Ni(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, e, t); + } + getArea() { + return yi(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride); + } + getCoordinates(e) { + let t; + return e === void 0 ? t = this.flatCoordinates : (t = this.getOrientedFlatCoordinates().slice(), Xi(t, 0, this.ends_, this.stride, e)), ki(t, 0, this.ends_, this.stride); +>>>>>>> Stashed changes } getEnds() { return this.ends_; } getFlatInteriorPoint() { if (this.flatInteriorPointRevision_ != this.getRevision()) { +<<<<<<< Updated upstream let e = yt(this.getExtent()); this.flatInteriorPoint_ = Ga(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, e, 0), this.flatInteriorPointRevision_ = this.getRevision(); +======= + let e = it(this.getExtent()); + this.flatInteriorPoint_ = Gi(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, e, 0), this.flatInteriorPointRevision_ = this.getRevision(); +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes } return this.flatInteriorPoint_; } getInteriorPoint() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return new Wa(this.getFlatInteriorPoint(), "XYM"); +======= + return new Wi(this.getFlatInteriorPoint(), "XYM"); +>>>>>>> Stashed changes +======= + return new Wi(this.getFlatInteriorPoint(), "XYM"); +>>>>>>> Stashed changes } getLinearRingCount() { return this.ends_.length; } getLinearRing(e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return e < 0 || this.ends_.length <= e ? null : new Ua(this.flatCoordinates.slice(e === 0 ? 0 : this.ends_[e - 1], this.ends_[e]), this.layout); +======= + return e < 0 || this.ends_.length <= e ? null : new Ui(this.flatCoordinates.slice(e === 0 ? 0 : this.ends_[e - 1], this.ends_[e]), this.layout); +>>>>>>> Stashed changes +======= + return e < 0 || this.ends_.length <= e ? null : new Ui(this.flatCoordinates.slice(e === 0 ? 0 : this.ends_[e - 1], this.ends_[e]), this.layout); +>>>>>>> Stashed changes } getLinearRings() { let e = this.layout, t = this.flatCoordinates, n = this.ends_, r = [], i = 0; for (let a = 0, o = n.length; a < o; ++a) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let o = n[a], s = new Ua(t.slice(i, o), e); +======= + let o = n[a], s = new Ui(t.slice(i, o), e); +>>>>>>> Stashed changes +======= + let o = n[a], s = new Ui(t.slice(i, o), e); +>>>>>>> Stashed changes r.push(s), i = o; } return r; @@ -3386,18 +4196,36 @@ var Qa = class e extends ma { getOrientedFlatCoordinates() { if (this.orientedRevision_ != this.getRevision()) { let e = this.flatCoordinates; +<<<<<<< Updated upstream +<<<<<<< Updated upstream Ya(e, 0, this.ends_, this.stride) ? this.orientedFlatCoordinates_ = e : (this.orientedFlatCoordinates_ = e.slice(), this.orientedFlatCoordinates_.length = Xa(this.orientedFlatCoordinates_, 0, this.ends_, this.stride)), this.orientedRevision_ = this.getRevision(); +======= + Yi(e, 0, this.ends_, this.stride) ? this.orientedFlatCoordinates_ = e : (this.orientedFlatCoordinates_ = e.slice(), this.orientedFlatCoordinates_.length = Xi(this.orientedFlatCoordinates_, 0, this.ends_, this.stride)), this.orientedRevision_ = this.getRevision(); +>>>>>>> Stashed changes +======= + Yi(e, 0, this.ends_, this.stride) ? this.orientedFlatCoordinates_ = e : (this.orientedFlatCoordinates_ = e.slice(), this.orientedFlatCoordinates_.length = Xi(this.orientedFlatCoordinates_, 0, this.ends_, this.stride)), this.orientedRevision_ = this.getRevision(); +>>>>>>> Stashed changes } return this.orientedFlatCoordinates_; } getSimplifiedGeometryInternal(t) { let n = [], r = []; +<<<<<<< Updated upstream +<<<<<<< Updated upstream return n.length = Ha(this.flatCoordinates, 0, this.ends_, this.stride, Math.sqrt(t), n, 0, r), new e(n, "XY", r); +======= + return n.length = Hi(this.flatCoordinates, 0, this.ends_, this.stride, Math.sqrt(t), n, 0, r), new e(n, "XY", r); +>>>>>>> Stashed changes +======= + return n.length = Hi(this.flatCoordinates, 0, this.ends_, this.stride, Math.sqrt(t), n, 0, r), new e(n, "XY", r); +>>>>>>> Stashed changes } getType() { return "Polygon"; } intersectsExtent(e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return La(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, e); } setCoordinates(e, t) { @@ -3408,6 +4236,28 @@ var Qa = class e extends ma { }; function $a(e) { if (kt(e)) throw Error("Cannot create polygon from empty extent"); +======= + return Li(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, e); + } + setCoordinates(e, t) { + this.setLayout(t, e, 2), this.flatCoordinates ||= []; + let n = Di(this.flatCoordinates, 0, e, this.stride, this.ends_); + this.flatCoordinates.length = n.length === 0 ? 0 : n[n.length - 1], this.changed(); + } +}; +======= + return Li(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, e); + } + setCoordinates(e, t) { + this.setLayout(t, e, 2), this.flatCoordinates ||= []; + let n = Di(this.flatCoordinates, 0, e, this.stride, this.ends_); + this.flatCoordinates.length = n.length === 0 ? 0 : n[n.length - 1], this.changed(); + } +}; +>>>>>>> Stashed changes +function $i(e) { + if (mt(e)) throw Error("Cannot create polygon from empty extent"); +>>>>>>> Stashed changes let t = e[0], n = e[1], r = e[2], i = e[3], a = [ t, n, @@ -3420,6 +4270,8 @@ function $a(e) { t, n ]; +<<<<<<< Updated upstream +<<<<<<< Updated upstream return new Qa(a, "XY", [a.length]); } //#endregion @@ -3429,39 +4281,108 @@ function eo(e, t, n, r) { return r ? Math.min(e, Math.max(i, a)) : Math.min(e, Math.min(i, a)); } function to(e, t, n) { +======= + return new Qi(a, "XY", [a.length]); +} +//#endregion +//#region node_modules/ol/resolutionconstraint.js +======= + return new Qi(a, "XY", [a.length]); +} +//#endregion +//#region node_modules/ol/resolutionconstraint.js +>>>>>>> Stashed changes +function ea(e, t, n, r) { + let i = I(t) / n[0], a = ct(t) / n[1]; + return r ? Math.min(e, Math.max(i, a)) : Math.min(e, Math.min(i, a)); +} +function ta(e, t, n) { +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes let r = Math.min(e, t); return r *= Math.log(1 + 50 * Math.max(0, e / t - 1)) / 50 + 1, n && (r = Math.max(r, n), r /= Math.log(1 + 50 * Math.max(0, n / e - 1)) / 50 + 1), Bt(r, n / 2, t * 2); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function no(e, t, n, r) { return t = t === void 0 || t, (function(i, a, o, s) { if (i !== void 0) { let c = e[0], l = e[e.length - 1], u = n ? eo(c, n, o, r) : c; if (s) return t ? to(i, u, l) : Bt(i, l, u); let d = Math.floor(f(e, Math.min(u, i), a)); +======= +function na(e, t, n, r) { + return t = t === void 0 || t, (function(i, a, o, s) { + if (i !== void 0) { +======= +function na(e, t, n, r) { + return t = t === void 0 || t, (function(i, a, o, s) { + if (i !== void 0) { +>>>>>>> Stashed changes + let c = e[0], l = e[e.length - 1], u = n ? ea(c, n, o, r) : c; + if (s) return t ? ta(i, u, l) : St(i, l, u); + let d = Math.floor(ce(e, Math.min(u, i), a)); +>>>>>>> Stashed changes return e[d] > u && d < e.length - 1 ? e[d + 1] : e[d]; } }); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function ro(e, t, n, r, i, a) { return r = r === void 0 || r, n = n === void 0 ? 0 : n, (function(o, s, c, l) { if (o !== void 0) { let u = i ? eo(t, i, c, a) : t; if (l) return r ? to(o, u, n) : Bt(o, n, u); +======= +function ra(e, t, n, r, i, a) { + return r = r === void 0 || r, n = n === void 0 ? 0 : n, (function(o, s, c, l) { + if (o !== void 0) { + let u = i ? ea(t, i, c, a) : t; + if (l) return r ? ta(o, u, n) : St(o, n, u); +>>>>>>> Stashed changes +======= +function ra(e, t, n, r, i, a) { + return r = r === void 0 || r, n = n === void 0 ? 0 : n, (function(o, s, c, l) { + if (o !== void 0) { + let u = i ? ea(t, i, c, a) : t; + if (l) return r ? ta(o, u, n) : St(o, n, u); +>>>>>>> Stashed changes let d = Math.ceil(Math.log(t / u) / Math.log(e) - 1e-9), f = -s * .499999999 + .5, p = Math.floor(Math.log(t / Math.min(u, o)) / Math.log(e) + f); return Bt(t / e ** +Math.max(d, p), n, u); } }); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function io(e, t, n, r, i) { return n = n === void 0 || n, (function(a, o, s, c) { if (a !== void 0) { let o = r ? eo(e, r, s, i) : e; return !n || !c ? Bt(a, t, o) : to(a, o, t); +======= +function ia(e, t, n, r, i) { + return n = n === void 0 || n, (function(a, o, s, c) { + if (a !== void 0) { + let o = r ? ea(e, r, s, i) : e; + return !n || !c ? St(a, t, o) : ta(a, o, t); +>>>>>>> Stashed changes +======= +function ia(e, t, n, r, i) { + return n = n === void 0 || n, (function(a, o, s, c) { + if (a !== void 0) { + let o = r ? ea(e, r, s, i) : e; + return !n || !c ? St(a, t, o) : ta(a, o, t); +>>>>>>> Stashed changes } }); } //#endregion //#region node_modules/ol/rotationconstraint.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function ao(e) { if (e !== void 0) return 0; } @@ -3469,31 +4390,81 @@ function oo(e) { if (e !== void 0) return e; } function so(e) { +======= +function aa(e) { + if (e !== void 0) return 0; +} +function oa(e) { + if (e !== void 0) return e; +} +function sa(e) { +>>>>>>> Stashed changes +======= +function aa(e) { + if (e !== void 0) return 0; +} +function oa(e) { + if (e !== void 0) return e; +} +function sa(e) { +>>>>>>> Stashed changes let t = 2 * Math.PI / e; return (function(e, n) { if (n) return e; if (e !== void 0) return e = Math.floor(e / t + .5) * t, e; }); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function co(e) { let t = e === void 0 ? Gt(5) : e; +======= +======= +>>>>>>> Stashed changes +function ca(e) { + let t = e === void 0 ? Dt(5) : e; +>>>>>>> Stashed changes return (function(e, n) { return n || e === void 0 ? e : Math.abs(e) <= t ? 0 : e; }); } //#endregion //#region node_modules/ol/View.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var lo = 0, uo = class extends A { +======= +var la = 0, ua = class extends we { +>>>>>>> Stashed changes +======= +var la = 0, ua = class extends we { +>>>>>>> Stashed changes constructor(e) { super(), this.on, this.once, this.un, e = Object.assign({}, e), this.hints_ = [0, 0], this.animations_ = [], this.updateAnimationKey_, this.projection_ = br(e.projection, "EPSG:3857"), this.viewportSize_ = [100, 100], this.targetCenter_ = null, this.targetResolution_, this.targetRotation_, this.nextCenter_ = null, this.nextResolution_, this.nextRotation_, this.cancelAnchor_ = void 0, e.projection && dr(), e.center && (e.center = jr(e.center, this.projection_)), e.extent && (e.extent = Nr(e.extent, this.projection_)), this.applyOptions_(e); } applyOptions_(e) { let t = Object.assign({}, e); +<<<<<<< Updated upstream +<<<<<<< Updated upstream for (let e in ia) delete t[e]; this.setProperties(t, !0); let n = mo(e); this.maxResolution_ = n.maxResolution, this.minResolution_ = n.minResolution, this.zoomFactor_ = n.zoomFactor, this.resolutions_ = e.resolutions, this.padding_ = e.padding, this.minZoom_ = n.minZoom; let r = po(e), i = n.constraint, a = ho(e); +======= + for (let e in Rr) delete t[e]; + this.setProperties(t, !0); + let n = pa(e); + this.maxResolution_ = n.maxResolution, this.minResolution_ = n.minResolution, this.zoomFactor_ = n.zoomFactor, this.resolutions_ = e.resolutions, this.padding_ = e.padding, this.minZoom_ = n.minZoom; + let r = fa(e), i = n.constraint, a = ma(e); +>>>>>>> Stashed changes +======= + for (let e in Rr) delete t[e]; + this.setProperties(t, !0); + let n = pa(e); + this.maxResolution_ = n.maxResolution, this.minResolution_ = n.minResolution, this.zoomFactor_ = n.zoomFactor, this.resolutions_ = e.resolutions, this.padding_ = e.padding, this.minZoom_ = n.minZoom; + let r = fa(e), i = n.constraint, a = ma(e); +>>>>>>> Stashed changes this.constraints_ = { center: r, resolution: i, @@ -3546,7 +4517,15 @@ var lo = 0, uo = class extends A { e.center && this.setCenterInternal(e.center), e.zoom === void 0 ? e.resolution && this.setResolution(e.resolution) : this.setZoom(e.zoom), e.rotation !== void 0 && this.setRotation(e.rotation); } if (r === t) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream n && fo(n, !0); +======= + n && da(n, !0); +>>>>>>> Stashed changes +======= + n && da(n, !0); +>>>>>>> Stashed changes return; } let i = Date.now(), a = this.targetCenter_.slice(), o = this.targetResolution_, s = this.targetRotation_, c = []; @@ -3556,7 +4535,15 @@ var lo = 0, uo = class extends A { complete: !1, anchor: e.anchor, duration: e.duration === void 0 ? 1e3 : e.duration, +<<<<<<< Updated upstream +<<<<<<< Updated upstream easing: e.easing || Me, +======= + easing: e.easing || Ur, +>>>>>>> Stashed changes +======= + easing: e.easing || Ur, +>>>>>>> Stashed changes callback: n }; if (e.center && (t.sourceCenter = a, t.targetCenter = e.center.slice(), a = t.targetCenter), e.zoom === void 0 ? e.resolution && (t.sourceResolution = o, t.targetResolution = e.resolution, o = t.targetResolution) : (t.sourceResolution = o, t.targetResolution = this.getResolutionForZoom(e.zoom), o = t.targetResolution), e.rotation !== void 0) { @@ -3564,6 +4551,8 @@ var lo = 0, uo = class extends A { let n = Kt(e.rotation - s + Math.PI, 2 * Math.PI) - Math.PI; t.targetRotation = s + n, s = t.targetRotation; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream go(t) ? t.complete = !0 : i += t.duration, c.push(t); } this.animations_.push(c), this.setHint(V.ANIMATING, 1), this.updateAnimations_(); @@ -3580,6 +4569,42 @@ var lo = 0, uo = class extends A { for (let t = 0, n = this.animations_.length; t < n; ++t) { let n = this.animations_[t]; if (n[0].callback && fo(n[0].callback, !1), !e) for (let t = 0, r = n.length; t < r; ++t) { +======= + ha(t) ? t.complete = !0 : i += t.duration, c.push(t); + } + this.animations_.push(c), this.setHint(Lr.ANIMATING, 1), this.updateAnimations_(); + } + getAnimating() { + return this.hints_[Lr.ANIMATING] > 0; + } + getInteracting() { + return this.hints_[Lr.INTERACTING] > 0; + } + cancelAnimations() { + this.setHint(Lr.ANIMATING, -this.hints_[Lr.ANIMATING]); + let e; + for (let t = 0, n = this.animations_.length; t < n; ++t) { + let n = this.animations_[t]; + if (n[0].callback && da(n[0].callback, !1), !e) for (let t = 0, r = n.length; t < r; ++t) { +>>>>>>> Stashed changes +======= + ha(t) ? t.complete = !0 : i += t.duration, c.push(t); + } + this.animations_.push(c), this.setHint(Lr.ANIMATING, 1), this.updateAnimations_(); + } + getAnimating() { + return this.hints_[Lr.ANIMATING] > 0; + } + getInteracting() { + return this.hints_[Lr.INTERACTING] > 0; + } + cancelAnimations() { + this.setHint(Lr.ANIMATING, -this.hints_[Lr.ANIMATING]); + let e; + for (let t = 0, n = this.animations_.length; t < n; ++t) { + let n = this.animations_[t]; + if (n[0].callback && da(n[0].callback, !1), !e) for (let t = 0, r = n.length; t < r; ++t) { +>>>>>>> Stashed changes let r = n[t]; if (!r.complete) { e = r.anchor; @@ -3625,9 +4650,21 @@ var lo = 0, uo = class extends A { if (this.applyTargetState_(!0), t = !0, !a.complete) break; } if (i) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.animations_[n] = null, this.setHint(V.ANIMATING, -1), this.nextCenter_ = null, this.nextResolution_ = NaN, this.nextRotation_ = NaN; let e = r[0].callback; e && fo(e, !0); +======= + this.animations_[n] = null, this.setHint(Lr.ANIMATING, -1), this.nextCenter_ = null, this.nextResolution_ = NaN, this.nextRotation_ = NaN; + let e = r[0].callback; + e && da(e, !0); +>>>>>>> Stashed changes +======= + this.animations_[n] = null, this.setHint(Lr.ANIMATING, -1), this.nextCenter_ = null, this.nextResolution_ = NaN, this.nextRotation_ = NaN; + let e = r[0].callback; + e && da(e, !0); +>>>>>>> Stashed changes } } this.animations_ = this.animations_.filter(Boolean), t && this.updateAnimationKey_ === void 0 && (this.updateAnimationKey_ = requestAnimationFrame(this.updateAnimations_.bind(this))); @@ -3656,7 +4693,15 @@ var lo = 0, uo = class extends A { return e && Ar(e, this.getProjection()); } getCenterInternal() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return this.get(ia.CENTER); +======= + return this.get(Rr.CENTER); +>>>>>>> Stashed changes +======= + return this.get(Rr.CENTER); +>>>>>>> Stashed changes } getConstraints() { return this.constraints_; @@ -3704,7 +4749,15 @@ var lo = 0, uo = class extends A { return this.projection_; } getResolution() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return this.get(ia.RESOLUTION); +======= + return this.get(Rr.RESOLUTION); +>>>>>>> Stashed changes +======= + return this.get(Rr.RESOLUTION); +>>>>>>> Stashed changes } getResolutions() { return this.resolutions_; @@ -3725,7 +4778,15 @@ var lo = 0, uo = class extends A { }); } getRotation() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return this.get(ia.ROTATION); +======= + return this.get(Rr.ROTATION); +>>>>>>> Stashed changes +======= + return this.get(Rr.ROTATION); +>>>>>>> Stashed changes } getValueForResolutionFunction(e) { let t = Math.log(e || 2), n = this.getConstrainedResolution(this.maxResolution_), r = this.minResolution_, i = Math.log(n / r) / t; @@ -3741,7 +4802,15 @@ var lo = 0, uo = class extends A { let e = this.getProjection(), t = this.getResolution(), n = this.getRotation(), r = this.getCenterInternal(), i = this.padding_; if (i) { let e = this.getViewportSizeMinusPadding_(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream r = _o(r, this.getViewportSize_(), [e[0] / 2 + i[3], e[1] / 2 + i[0]], t, n); +======= + r = ga(r, this.getViewportSize_(), [e[0] / 2 + i[3], e[1] / 2 + i[0]], t, n); +>>>>>>> Stashed changes +======= + r = ga(r, this.getViewportSize_(), [e[0] / 2 + i[3], e[1] / 2 + i[0]], t, n); +>>>>>>> Stashed changes } return { center: r.slice(0), @@ -3782,10 +4851,23 @@ var lo = 0, uo = class extends A { } fit(e, t) { let n; +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (z(Array.isArray(e) || typeof e.getSimplifiedGeometry == "function", "Invalid extent or geometry provided as `geometry`"), Array.isArray(e)) z(!kt(e), "Cannot fit empty extent provided as `geometry`"), n = $a(Nr(e, this.getProjection())); else if (e.getType() === "Circle") { let t = Nr(e.getExtent(), this.getProjection()); n = $a(t), n.rotate(this.getRotation(), yt(t)); +======= +======= +>>>>>>> Stashed changes + if (R(Array.isArray(e) || typeof e.getSimplifiedGeometry == "function", "Invalid extent or geometry provided as `geometry`"), Array.isArray(e)) R(!mt(e), "Cannot fit empty extent provided as `geometry`"), n = $i(yr(e, this.getProjection())); + else if (e.getType() === "Circle") { + let t = yr(e.getExtent(), this.getProjection()); + n = $i(t), n.rotate(this.getRotation(), it(t)); +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes } else { let t = kr(); n = t ? e.clone().transform(t, this.getProjection()) : e; @@ -3820,8 +4902,16 @@ var lo = 0, uo = class extends A { s = isNaN(s) ? a : Math.max(s, a), s = this.getConstrainedResolution(s, +!i); let c = this.getRotation(), l = Math.sin(c), u = Math.cos(c), d = yt(o); d[0] += (r[1] - r[3]) / 2 * s, d[1] += (r[0] - r[2]) / 2 * s; +<<<<<<< Updated upstream let f = d[0] * u - d[1] * l, p = d[1] * u + d[0] * l, m = this.getConstrainedCenter([f, p], s), h = t.callback ? t.callback : y; t.duration === void 0 ? (this.targetResolution_ = s, this.targetCenter_ = m, this.applyTargetState_(!1, !0), fo(h, !0)) : this.animateInternal({ +======= + let f = d[0] * u - d[1] * l, p = d[1] * u + d[0] * l, m = this.getConstrainedCenter([f, p], s), h = t.callback ? t.callback : he; + t.duration === void 0 ? (this.targetResolution_ = s, this.targetCenter_ = m, this.applyTargetState_(!1, !0), da(h, !0)) : this.animateInternal({ +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes resolution: s, center: m, duration: t.duration, @@ -3832,12 +4922,28 @@ var lo = 0, uo = class extends A { this.centerOnInternal(jr(e, this.getProjection()), t, n); } centerOnInternal(e, t, n) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.setCenterInternal(_o(e, t, n, this.getResolution(), this.getRotation())); +======= + this.setCenterInternal(ga(e, t, n, this.getResolution(), this.getRotation())); +>>>>>>> Stashed changes +======= + this.setCenterInternal(ga(e, t, n, this.getResolution(), this.getRotation())); +>>>>>>> Stashed changes } calculateCenterShift(e, t, n, r) { let i, a = this.padding_; if (a && e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let o = this.getViewportSizeMinusPadding_(-n), s = _o(e, r, [o[0] / 2 + a[3], o[1] / 2 + a[0]], t, n); +======= + let o = this.getViewportSizeMinusPadding_(-n), s = ga(e, r, [o[0] / 2 + a[3], o[1] / 2 + a[0]], t, n); +>>>>>>> Stashed changes +======= + let o = this.getViewportSizeMinusPadding_(-n), s = ga(e, r, [o[0] / 2 + a[3], o[1] / 2 + a[0]], t, n); +>>>>>>> Stashed changes i = [e[0] - s[0], e[1] - s[1]]; } return i; @@ -3890,7 +4996,15 @@ var lo = 0, uo = class extends A { } applyTargetState_(e, t) { let n = this.getAnimating() || this.getInteracting() || t, r = this.constraints_.rotation(this.targetRotation_, n), i = this.getViewportSize_(r), a = this.constraints_.resolution(this.targetResolution_, 0, i, n), o = this.constraints_.center(this.targetCenter_, a, i, n, this.calculateCenterShift(this.targetCenter_, a, r, i)); +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.get(ia.ROTATION) !== r && this.set(ia.ROTATION, r), this.get(ia.RESOLUTION) !== a && (this.set(ia.RESOLUTION, a), this.set("zoom", this.getZoom(), !0)), (!o || !this.get(ia.CENTER) || !en(this.get(ia.CENTER), o)) && this.set(ia.CENTER, o), this.getAnimating() && !e && this.cancelAnimations(), this.cancelAnchor_ = void 0; +======= + this.get(Rr.ROTATION) !== r && this.set(Rr.ROTATION, r), this.get(Rr.RESOLUTION) !== a && (this.set(Rr.RESOLUTION, a), this.set("zoom", this.getZoom(), !0)), (!o || !this.get(Rr.CENTER) || !It(this.get(Rr.CENTER), o)) && this.set(Rr.CENTER, o), this.getAnimating() && !e && this.cancelAnimations(), this.cancelAnchor_ = void 0; +>>>>>>> Stashed changes +======= + this.get(Rr.ROTATION) !== r && this.set(Rr.ROTATION, r), this.get(Rr.RESOLUTION) !== a && (this.set(Rr.RESOLUTION, a), this.set("zoom", this.getZoom(), !0)), (!o || !this.get(Rr.CENTER) || !It(this.get(Rr.CENTER), o)) && this.set(Rr.CENTER, o), this.getAnimating() && !e && this.cancelAnimations(), this.cancelAnchor_ = void 0; +>>>>>>> Stashed changes } resolveConstraints(e, t, n) { e = e === void 0 ? 200 : e; @@ -3904,18 +5018,42 @@ var lo = 0, uo = class extends A { center: s, resolution: o, duration: e, +<<<<<<< Updated upstream +<<<<<<< Updated upstream easing: je, +======= + easing: Hr, +>>>>>>> Stashed changes +======= + easing: Hr, +>>>>>>> Stashed changes anchor: n })); } beginInteraction() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.resolveConstraints(0), this.setHint(V.INTERACTING, 1); +======= + this.resolveConstraints(0), this.setHint(Lr.INTERACTING, 1); +>>>>>>> Stashed changes +======= + this.resolveConstraints(0), this.setHint(Lr.INTERACTING, 1); +>>>>>>> Stashed changes } endInteraction(e, t, n) { n &&= jr(n, this.getProjection()), this.endInteractionInternal(e, t, n); } endInteractionInternal(e, t, n) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.getInteracting() && (this.setHint(V.INTERACTING, -1), this.resolveConstraints(e, t, n)); +======= + this.getInteracting() && (this.setHint(Lr.INTERACTING, -1), this.resolveConstraints(e, t, n)); +>>>>>>> Stashed changes +======= + this.getInteracting() && (this.setHint(Lr.INTERACTING, -1), this.resolveConstraints(e, t, n)); +>>>>>>> Stashed changes } getConstrainedCenter(e, t) { let n = this.getViewportSize_(this.getRotation()); @@ -3931,19 +5069,43 @@ var lo = 0, uo = class extends A { return this.constraints_.resolution(e, t, n); } }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream function fo(e, t) { +======= +function da(e, t) { +>>>>>>> Stashed changes +======= +function da(e, t) { +>>>>>>> Stashed changes setTimeout(function() { e(t); }, 0); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function po(e) { if (e.extent !== void 0) { let t = e.smoothExtentConstraint === void 0 || e.smoothExtentConstraint; return aa(e.extent, e.constrainOnlyCenter, t); +======= +function fa(e) { + if (e.extent !== void 0) { + let t = e.smoothExtentConstraint === void 0 || e.smoothExtentConstraint; + return zr(e.extent, e.constrainOnlyCenter, t); +>>>>>>> Stashed changes +======= +function fa(e) { + if (e.extent !== void 0) { + let t = e.smoothExtentConstraint === void 0 || e.smoothExtentConstraint; + return zr(e.extent, e.constrainOnlyCenter, t); +>>>>>>> Stashed changes } let t = br(e.projection, "EPSG:3857"); if (e.multiWorld !== !0 && t.isGlobal()) { let e = t.getExtent().slice(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream return e[0] = -Infinity, e[2] = Infinity, aa(e, !1, !1); } return oa; @@ -3956,6 +5118,34 @@ function mo(e) { } else { let s = (d ? Math.max(R(d), Ct(d)) : 360 * sn.degrees / u.getMetersPerUnit()) / 256 / 2 ** lo, m = s / 2 ** 28; n = e.maxResolution, n === void 0 ? n = s / o ** +i : i = 0, r = e.minResolution, r === void 0 && (r = e.maxZoom === void 0 ? m : e.maxResolution === void 0 ? s / o ** +a : n / o ** +a), a = i + Math.floor(Math.log(n / r) / Math.log(o)), r = n / o ** +(a - i), t = e.constrainResolution ? ro(o, n, r, c, !f && p, l) : io(n, r, c, !f && p, l); +======= + return e[0] = -Infinity, e[2] = Infinity, zr(e, !1, !1); + } + return Br; +} +function pa(e) { + let t, n, r, i = e.minZoom === void 0 ? la : e.minZoom, a = e.maxZoom === void 0 ? 28 : e.maxZoom, o = e.zoomFactor === void 0 ? 2 : e.zoomFactor, s = e.multiWorld !== void 0 && e.multiWorld, c = e.smoothResolutionConstraint === void 0 || e.smoothResolutionConstraint, l = e.showFullExtent !== void 0 && e.showFullExtent, u = or(e.projection, "EPSG:3857"), d = u.getExtent(), f = e.constrainOnlyCenter, p = e.extent; + if (!s && !p && u.isGlobal() && (f = !1, p = d), e.resolutions !== void 0) { + let o = e.resolutions; + n = o[i], r = o[a] === void 0 ? o[o.length - 1] : o[a], t = e.constrainResolution ? na(o, c, !f && p, l) : ia(n, r, c, !f && p, l); + } else { + let s = (d ? Math.max(I(d), ct(d)) : 360 * Kt.degrees / u.getMetersPerUnit()) / 256 / 2 ** la, m = s / 2 ** 28; + n = e.maxResolution, n === void 0 ? n = s / o ** +i : i = 0, r = e.minResolution, r === void 0 && (r = e.maxZoom === void 0 ? m : e.maxResolution === void 0 ? s / o ** +a : n / o ** +a), a = i + Math.floor(Math.log(n / r) / Math.log(o)), r = n / o ** +(a - i), t = e.constrainResolution ? ra(o, n, r, c, !f && p, l) : ia(n, r, c, !f && p, l); +>>>>>>> Stashed changes +======= + return e[0] = -Infinity, e[2] = Infinity, zr(e, !1, !1); + } + return Br; +} +function pa(e) { + let t, n, r, i = e.minZoom === void 0 ? la : e.minZoom, a = e.maxZoom === void 0 ? 28 : e.maxZoom, o = e.zoomFactor === void 0 ? 2 : e.zoomFactor, s = e.multiWorld !== void 0 && e.multiWorld, c = e.smoothResolutionConstraint === void 0 || e.smoothResolutionConstraint, l = e.showFullExtent !== void 0 && e.showFullExtent, u = or(e.projection, "EPSG:3857"), d = u.getExtent(), f = e.constrainOnlyCenter, p = e.extent; + if (!s && !p && u.isGlobal() && (f = !1, p = d), e.resolutions !== void 0) { + let o = e.resolutions; + n = o[i], r = o[a] === void 0 ? o[o.length - 1] : o[a], t = e.constrainResolution ? na(o, c, !f && p, l) : ia(n, r, c, !f && p, l); + } else { + let s = (d ? Math.max(I(d), ct(d)) : 360 * Kt.degrees / u.getMetersPerUnit()) / 256 / 2 ** la, m = s / 2 ** 28; + n = e.maxResolution, n === void 0 ? n = s / o ** +i : i = 0, r = e.minResolution, r === void 0 && (r = e.maxZoom === void 0 ? m : e.maxResolution === void 0 ? s / o ** +a : n / o ** +a), a = i + Math.floor(Math.log(n / r) / Math.log(o)), r = n / o ** +(a - i), t = e.constrainResolution ? ra(o, n, r, c, !f && p, l) : ia(n, r, c, !f && p, l); +>>>>>>> Stashed changes } return { constraint: t, @@ -3965,6 +5155,8 @@ function mo(e) { zoomFactor: o }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function ho(e) { if (e.enableRotation === void 0 || e.enableRotation) { let t = e.constrainRotation; @@ -3976,10 +5168,36 @@ function go(e) { return !(e.sourceCenter && e.targetCenter && !en(e.sourceCenter, e.targetCenter) || e.sourceResolution !== e.targetResolution || e.sourceRotation !== e.targetRotation); } function _o(e, t, n, r, i) { +======= +function ma(e) { + if (e.enableRotation === void 0 || e.enableRotation) { + let t = e.constrainRotation; + return t === void 0 || t === !0 ? ca() : t === !1 ? oa : typeof t == "number" ? sa(t) : oa; + } + return aa; +} +======= +function ma(e) { + if (e.enableRotation === void 0 || e.enableRotation) { + let t = e.constrainRotation; + return t === void 0 || t === !0 ? ca() : t === !1 ? oa : typeof t == "number" ? sa(t) : oa; + } + return aa; +} +>>>>>>> Stashed changes +function ha(e) { + return !(e.sourceCenter && e.targetCenter && !It(e.sourceCenter, e.targetCenter) || e.sourceResolution !== e.targetResolution || e.sourceRotation !== e.targetRotation); +} +function ga(e, t, n, r, i) { +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes let a = Math.cos(-i), o = Math.sin(-i), s = e[0] * a - e[1] * o, c = e[1] * a + e[0] * o; return s += (t[0] / 2 - n[0]) * r, c += (n[1] - t[1] / 2) * r, o = -o, [s * a - c * o, c * a + s * o]; } //#endregion +<<<<<<< Updated upstream //#region node_modules/ol/layer/Property.js var H = { OPACITY: "opacity", @@ -3993,6 +5211,13 @@ var H = { SOURCE: "source", MAP: "map" }, vo = class extends A { +======= +//#region node_modules/ol/control/Attribution.js +var _a = class extends Te { +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes constructor(e) { super(), this.on, this.once, this.un, this.background_ = e.background; let t = Object.assign({}, e); @@ -4313,22 +5538,103 @@ var xo = { this.dragListenerKeys_.push(i(e, Eo.POINTERMOVE, this.handlePointerMove_, this), i(e, Eo.POINTERUP, this.handlePointerUp_, this), i(this.element_, Eo.POINTERCANCEL, this.handlePointerUp_, this)), this.element_.getRootNode && this.element_.getRootNode() !== e && this.dragListenerKeys_.push(i(this.element_.getRootNode(), Eo.POINTERUP, this.handlePointerUp_, this)); } } +<<<<<<< Updated upstream handlePointerMove_(e) { if (this.isMoving_(e)) { this.updateActivePointers_(e), this.dragging_ = !0; let t = new To(Eo.POINTERDRAG, this.map_, e, this.dragging_, void 0, this.activePointers_); this.dispatchEvent(t); +======= + handleClick_(e) { + e.preventDefault(), this.handleToggle_(), this.userCollapsed_ = this.collapsed_; + } + handleToggle_() { + this.element.classList.toggle(o), this.collapsed_ ? T(this.collapseLabel_, this.label_) : T(this.label_, this.collapseLabel_), this.collapsed_ = !this.collapsed_, this.toggleButton_.setAttribute("aria-expanded", String(!this.collapsed_)); + } + getCollapsible() { + return this.collapsible_; + } + setCollapsible(e) { + this.collapsible_ !== e && (this.collapsible_ = e, this.element.classList.toggle("ol-uncollapsible"), this.userCollapsed_ && this.handleToggle_()); + } + setCollapsed(e) { + this.userCollapsed_ = e, !(!this.collapsible_ || this.collapsed_ === e) && this.handleToggle_(); + } + getCollapsed() { + return this.collapsed_; + } + render(e) { + this.updateElement_(e.frameState); + } +}, va = class extends Te { + constructor(e) { + e ||= {}, super({ + element: document.createElement("div"), + render: e.render, + target: e.target + }); + let n = e.className === void 0 ? "ol-rotate" : e.className, i = e.label === void 0 ? "⇧" : e.label, o = e.compassClassName === void 0 ? "ol-compass" : e.compassClassName; + this.label_ = null, typeof i == "string" ? (this.label_ = document.createElement("span"), this.label_.className = o, this.label_.textContent = i) : (this.label_ = i, this.label_.classList.add(o)); + let s = e.tipLabel ? e.tipLabel : "Reset rotation", c = document.createElement("button"); + c.className = n + "-reset", c.setAttribute("type", "button"), c.title = s, c.appendChild(this.label_), c.addEventListener(M.CLICK, this.handleClick_.bind(this), !1); + let l = n + " " + r + " " + a, u = this.element; + u.className = l, u.appendChild(c), this.callResetNorth_ = e.resetNorth ? e.resetNorth : void 0, this.duration_ = e.duration === void 0 ? 250 : e.duration, this.autoHide_ = e.autoHide === void 0 || e.autoHide, this.rotation_ = void 0, this.autoHide_ && this.element.classList.add(t); + } + handleClick_(e) { + e.preventDefault(), this.callResetNorth_ === void 0 ? this.resetNorth_() : this.callResetNorth_(); + } + resetNorth_() { + let e = this.getMap().getView(); + if (!e) return; + let t = e.getRotation(); + t !== void 0 && (this.duration_ > 0 && t % (2 * Math.PI) != 0 ? e.animate({ + rotation: 0, + duration: this.duration_, + easing: Hr + }) : e.setRotation(0)); + } + render(e) { + let n = e.frameState; + if (!n) return; + let r = n.viewState.rotation; + if (r != this.rotation_) { + let e = "rotate(" + r + "rad)"; + if (this.autoHide_) { + let e = this.element.classList.contains(t); + !e && r === 0 ? this.element.classList.add(t) : e && r !== 0 && this.element.classList.remove(t); + } + this.label_.style.transform = e; +>>>>>>> Stashed changes } } +<<<<<<< Updated upstream +<<<<<<< Updated upstream relayMoveEvent_(e) { this.originalPointerMoveEvent_ = e; let t = !!(this.down_ && this.isMoving_(e)); this.dispatchEvent(new To(Eo.POINTERMOVE, this.map_, e, t)); +======= +======= +>>>>>>> Stashed changes +}, ya = class extends Te { + constructor(e) { + e ||= {}, super({ + element: document.createElement("div"), + target: e.target + }); + let t = e.className === void 0 ? "ol-zoom" : e.className, n = e.delta === void 0 ? 1 : e.delta, i = e.zoomInClassName === void 0 ? t + "-in" : e.zoomInClassName, o = e.zoomOutClassName === void 0 ? t + "-out" : e.zoomOutClassName, s = e.zoomInLabel === void 0 ? "+" : e.zoomInLabel, c = e.zoomOutLabel === void 0 ? "–" : e.zoomOutLabel, l = e.zoomInTipLabel === void 0 ? "Zoom in" : e.zoomInTipLabel, u = e.zoomOutTipLabel === void 0 ? "Zoom out" : e.zoomOutTipLabel, d = document.createElement("button"); + d.className = i, d.setAttribute("type", "button"), d.title = l, d.appendChild(typeof s == "string" ? document.createTextNode(s) : s), d.addEventListener(M.CLICK, this.handleClick_.bind(this, n), !1); + let f = document.createElement("button"); + f.className = o, f.setAttribute("type", "button"), f.title = u, f.appendChild(typeof c == "string" ? document.createTextNode(c) : c), f.addEventListener(M.CLICK, this.handleClick_.bind(this, -n), !1); + let p = t + " " + r + " " + a, m = this.element; + m.className = p, m.appendChild(d), m.appendChild(f), this.duration_ = e.duration === void 0 ? 250 : e.duration; +>>>>>>> Stashed changes } handleTouchMove_(e) { let t = this.originalPointerMoveEvent_; (!t || t.defaultPrevented) && (typeof e.cancelable != "boolean" || e.cancelable === !0) && e.preventDefault(); } +<<<<<<< Updated upstream isMoving_(e) { return this.dragging_ || Math.abs(e.clientX - this.down_.clientX) > this.moveTolerance_ || Math.abs(e.clientY - this.down_.clientY) > this.moveTolerance_; } @@ -4440,6 +5746,35 @@ function No(e, t, n, r, i) { //#endregion //#region node_modules/ol/Kinetic.js var Po = class { +======= + zoomByDelta_(e) { + let t = this.getMap().getView(); + if (!t) return; + let n = t.getZoom(); + if (n !== void 0) { + let r = t.getConstrainedZoom(n + e); + this.duration_ > 0 ? (t.getAnimating() && t.cancelAnimations(), t.animate({ + zoom: r, + duration: this.duration_, + easing: Hr + })) : t.setZoom(r); + } + } +}; +//#endregion +//#region node_modules/ol/control/defaults.js +function ba(e) { + e ||= {}; + let t = new Or(); + return (e.zoom === void 0 || e.zoom) && t.push(new ya(e.zoomOptions)), (e.rotate === void 0 || e.rotate) && t.push(new va(e.rotateOptions)), (e.attribution === void 0 || e.attribution) && t.push(new _a(e.attributionOptions)), t; +} +//#endregion +//#region node_modules/ol/Kinetic.js +var xa = class { +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes constructor(e, t, n) { this.decay_ = e, this.minVelocity_ = t, this.delay_ = n, this.points_ = [], this.angle_ = 0, this.initialVelocity_ = 0; } @@ -4466,12 +5801,28 @@ var Po = class { getAngle() { return this.angle_; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, Fo = { ACTIVE: "active" }, Io = class extends A { +======= +}, Sa = { ACTIVE: "active" }, Ca = class extends we { +>>>>>>> Stashed changes +======= +}, Sa = { ACTIVE: "active" }, Ca = class extends we { +>>>>>>> Stashed changes constructor(e) { super(), this.on, this.once, this.un, e && e.handleEvent && (this.handleEvent = e.handleEvent), this.map_ = null, this.setActive(!0); } getActive() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return this.get(Fo.ACTIVE); +======= + return this.get(Sa.ACTIVE); +>>>>>>> Stashed changes +======= + return this.get(Sa.ACTIVE); +>>>>>>> Stashed changes } getMap() { return this.map_; @@ -4480,24 +5831,56 @@ var Po = class { return !0; } setActive(e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.set(Fo.ACTIVE, e); +======= + this.set(Sa.ACTIVE, e); +>>>>>>> Stashed changes +======= + this.set(Sa.ACTIVE, e); +>>>>>>> Stashed changes } setMap(e) { this.map_ = e; } }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Lo(e, t, n) { +======= +function wa(e, t, n) { +>>>>>>> Stashed changes +======= +function wa(e, t, n) { +>>>>>>> Stashed changes let r = e.getCenterInternal(); if (r) { let i = [r[0] + t[0], r[1] + t[1]]; e.animateInternal({ duration: n === void 0 ? 250 : n, +<<<<<<< Updated upstream +<<<<<<< Updated upstream easing: Ne, +======= + easing: Wr, +>>>>>>> Stashed changes +======= + easing: Wr, +>>>>>>> Stashed changes center: e.getConstrainedCenter(i) }); } } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Ro(e, t, n, r) { +======= +function Ta(e, t, n, r) { +>>>>>>> Stashed changes +======= +function Ta(e, t, n, r) { +>>>>>>> Stashed changes let i = e.getZoom(); if (i === void 0) return; let a = e.getConstrainedZoom(i + t), o = e.getResolutionForZoom(a); @@ -4505,12 +5888,28 @@ function Ro(e, t, n, r) { resolution: o, anchor: n, duration: r === void 0 ? 250 : r, +<<<<<<< Updated upstream +<<<<<<< Updated upstream easing: je +======= + easing: Hr +>>>>>>> Stashed changes +======= + easing: Hr +>>>>>>> Stashed changes }); } //#endregion //#region node_modules/ol/interaction/DoubleClickZoom.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var zo = class extends Io { +======= +var Ea = class extends Ca { +>>>>>>> Stashed changes +======= +var Ea = class extends Ca { +>>>>>>> Stashed changes constructor(e) { super(), e ||= {}, this.delta_ = e.delta ? e.delta : 1, this.duration_ = e.duration === void 0 ? 250 : e.duration; } @@ -4518,14 +5917,30 @@ var zo = class extends Io { let t = !1; if (e.type == Eo.DBLCLICK) { let n = e.originalEvent, r = e.map, i = e.coordinate, a = n.shiftKey ? -this.delta_ : this.delta_; +<<<<<<< Updated upstream +<<<<<<< Updated upstream Ro(r.getView(), a, i, this.duration_), n.preventDefault(), t = !0; +======= + Ta(r.getView(), a, i, this.duration_), n.preventDefault(), t = !0; +>>>>>>> Stashed changes +======= + Ta(r.getView(), a, i, this.duration_), n.preventDefault(), t = !0; +>>>>>>> Stashed changes } return !t; } }; //#endregion //#region node_modules/ol/events/condition.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Bo(e) { +======= +function Da(e) { +>>>>>>> Stashed changes +======= +function Da(e) { +>>>>>>> Stashed changes let t = arguments; return function(e) { let n = !0; @@ -4533,6 +5948,8 @@ function Bo(e) { return n; }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream var Vo = function(e) { let t = e.originalEvent; return t.altKey && !(t.metaKey || t.ctrlKey) && t.shiftKey; @@ -4561,36 +5978,103 @@ var Vo = function(e) { let t = e.originalEvent; return "pointerId" in t && t.pointerType == "mouse"; }, Zo = function(e) { +======= +var Oa = function(e) { let t = e.originalEvent; - return "pointerId" in t && t.isPrimary && t.button === 0; -}, Qo = class extends Io { - constructor(e) { - e ||= {}, super(e), e.handleDownEvent && (this.handleDownEvent = e.handleDownEvent), e.handleDragEvent && (this.handleDragEvent = e.handleDragEvent), e.handleMoveEvent && (this.handleMoveEvent = e.handleMoveEvent), e.handleUpEvent && (this.handleUpEvent = e.handleUpEvent), e.stopDown && (this.stopDown = e.stopDown), this.handlingDownUpSequence = !1, this.targetPointers = []; - } - getPointerCount() { - return this.targetPointers.length; - } - handleDownEvent(e) { - return !1; - } - handleDragEvent(e) {} - handleEvent(e) { - if (!e.originalEvent) return !0; - let t = !1; - if (this.updateTrackedPointers_(e), this.handlingDownUpSequence) { - if (e.type == Eo.POINTERDRAG) this.handleDragEvent(e), e.originalEvent.preventDefault(); - else if (e.type == Eo.POINTERUP) { - let t = this.handleUpEvent(e); - this.handlingDownUpSequence = t && this.targetPointers.length > 0; - } - } else if (e.type == Eo.POINTERDOWN) { - let n = this.handleDownEvent(e); - this.handlingDownUpSequence = n, t = this.stopDown(n); - } else e.type == Eo.POINTERMOVE && this.handleMoveEvent(e); - return !t; - } - handleMoveEvent(e) {} - handleUpEvent(e) { + return t.altKey && !(t.metaKey || t.ctrlKey) && t.shiftKey; +}, ka = function(e) { + let t = e.map.getTargetElement(), n = t.getRootNode(), r = e.map.getOwnerDocument().activeElement; + return n instanceof ShadowRoot ? n.host.contains(r) : t.contains(r); +}, Aa = function(e) { + let t = e.map.getTargetElement(), n = t.getRootNode(); + return !(n instanceof ShadowRoot ? n.host : t).hasAttribute("tabindex") || ka(e); +}, ja = pe, Ma = function(e) { + let t = e.originalEvent; + return "pointerId" in t && t.button == 0 && !(p && m && t.ctrlKey); +}, Na = function(e) { + let t = e.originalEvent; + return !t.altKey && !(t.metaKey || t.ctrlKey) && !t.shiftKey; +}, Pa = function(e) { + let t = e.originalEvent; + return m ? t.metaKey : t.ctrlKey; +}, Fa = function(e) { + let t = e.originalEvent; + return !t.altKey && !(t.metaKey || t.ctrlKey) && t.shiftKey; +}, Ia = function(e) { + let t = e.originalEvent, n = t.target.tagName; + return n !== "INPUT" && n !== "SELECT" && n !== "TEXTAREA" && !t.target.isContentEditable; +======= +var Oa = function(e) { + let t = e.originalEvent; + return t.altKey && !(t.metaKey || t.ctrlKey) && t.shiftKey; +}, ka = function(e) { + let t = e.map.getTargetElement(), n = t.getRootNode(), r = e.map.getOwnerDocument().activeElement; + return n instanceof ShadowRoot ? n.host.contains(r) : t.contains(r); +}, Aa = function(e) { + let t = e.map.getTargetElement(), n = t.getRootNode(); + return !(n instanceof ShadowRoot ? n.host : t).hasAttribute("tabindex") || ka(e); +}, ja = pe, Ma = function(e) { + let t = e.originalEvent; + return "pointerId" in t && t.button == 0 && !(p && m && t.ctrlKey); +}, Na = function(e) { + let t = e.originalEvent; + return !t.altKey && !(t.metaKey || t.ctrlKey) && !t.shiftKey; +}, Pa = function(e) { + let t = e.originalEvent; + return m ? t.metaKey : t.ctrlKey; +}, Fa = function(e) { + let t = e.originalEvent; + return !t.altKey && !(t.metaKey || t.ctrlKey) && t.shiftKey; +}, Ia = function(e) { + let t = e.originalEvent, n = t.target.tagName; + return n !== "INPUT" && n !== "SELECT" && n !== "TEXTAREA" && !t.target.isContentEditable; +>>>>>>> Stashed changes +}, La = function(e) { +>>>>>>> Stashed changes + let t = e.originalEvent; + return "pointerId" in t && t.pointerType == "mouse"; +}, Ra = function(e) { + let t = e.originalEvent; + return "pointerId" in t && t.pointerType == "mouse"; +}, Ra = function(e) { + let t = e.originalEvent; + return "pointerId" in t && t.isPrimary && t.button === 0; +<<<<<<< Updated upstream +<<<<<<< Updated upstream +}, Qo = class extends Io { +======= +}, za = class extends Ca { +>>>>>>> Stashed changes +======= +}, za = class extends Ca { +>>>>>>> Stashed changes + constructor(e) { + e ||= {}, super(e), e.handleDownEvent && (this.handleDownEvent = e.handleDownEvent), e.handleDragEvent && (this.handleDragEvent = e.handleDragEvent), e.handleMoveEvent && (this.handleMoveEvent = e.handleMoveEvent), e.handleUpEvent && (this.handleUpEvent = e.handleUpEvent), e.stopDown && (this.stopDown = e.stopDown), this.handlingDownUpSequence = !1, this.targetPointers = []; + } + getPointerCount() { + return this.targetPointers.length; + } + handleDownEvent(e) { + return !1; + } + handleDragEvent(e) {} + handleEvent(e) { + if (!e.originalEvent) return !0; + let t = !1; + if (this.updateTrackedPointers_(e), this.handlingDownUpSequence) { + if (e.type == Eo.POINTERDRAG) this.handleDragEvent(e), e.originalEvent.preventDefault(); + else if (e.type == Eo.POINTERUP) { + let t = this.handleUpEvent(e); + this.handlingDownUpSequence = t && this.targetPointers.length > 0; + } + } else if (e.type == Eo.POINTERDOWN) { + let n = this.handleDownEvent(e); + this.handlingDownUpSequence = n, t = this.stopDown(n); + } else e.type == Eo.POINTERMOVE && this.handleMoveEvent(e); + return !t; + } + handleMoveEvent(e) {} + handleUpEvent(e) { return !1; } stopDown(e) { @@ -4600,7 +6084,15 @@ var Vo = function(e) { e.activePointers && (this.targetPointers = e.activePointers); } }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream function $o(e) { +======= +function Ba(e) { +>>>>>>> Stashed changes +======= +function Ba(e) { +>>>>>>> Stashed changes let t = e.length, n = 0, r = 0; for (let i = 0; i < t; i++) n += e[i].clientX, r += e[i].clientY; return { @@ -4610,16 +6102,38 @@ function $o(e) { } //#endregion //#region node_modules/ol/interaction/DragPan.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var es = class extends Qo { constructor(e) { super({ stopDown: v }), e ||= {}, this.kinetic_ = e.kinetic, this.lastCentroid = null, this.lastPointersCount_, this.panning_ = !1; let t = e.condition ? e.condition : Bo(Ko, Zo); this.condition_ = e.onFocusOnly ? Bo(Uo, t) : t, this.noKinetic_ = !1; +======= +======= +>>>>>>> Stashed changes +var Va = class extends za { + constructor(e) { + super({ stopDown: me }), e ||= {}, this.kinetic_ = e.kinetic, this.lastCentroid = null, this.lastPointersCount_, this.panning_ = !1; + let t = e.condition ? e.condition : Da(Na, Ra); + this.condition_ = e.onFocusOnly ? Da(Aa, t) : t, this.noKinetic_ = !1; +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes } handleDragEvent(e) { let t = e.map; this.panning_ || (this.panning_ = !0, t.getView().beginInteraction()); +<<<<<<< Updated upstream +<<<<<<< Updated upstream let n = this.targetPointers, r = t.getEventPixel($o(n)); +======= + let n = this.targetPointers, r = t.getEventPixel(Ba(n)); +>>>>>>> Stashed changes +======= + let n = this.targetPointers, r = t.getEventPixel(Ba(n)); +>>>>>>> Stashed changes if (n.length == this.lastPointersCount_) { if (this.kinetic_ && this.kinetic_.update(r[0], r[1]), this.lastCentroid) { let t = [this.lastCentroid[0] - r[0], r[1] - this.lastCentroid[1]], n = e.map.getView(); @@ -4636,7 +6150,15 @@ var es = class extends Qo { n.animateInternal({ center: n.getConstrainedCenter(o), duration: 500, +<<<<<<< Updated upstream +<<<<<<< Updated upstream easing: je +======= + easing: Hr +>>>>>>> Stashed changes +======= + easing: Hr +>>>>>>> Stashed changes }); } return this.panning_ && (this.panning_ = !1, n.endInteraction()), !1; @@ -4650,6 +6172,8 @@ var es = class extends Qo { } return !1; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, ts = class extends Qo { constructor(e) { e ||= {}, super({ stopDown: v }), this.condition_ = e.condition ? e.condition : Vo, this.lastAngle_ = void 0, this.duration_ = e.duration === void 0 ? 250 : e.duration; @@ -4658,6 +6182,26 @@ var es = class extends Qo { if (!Xo(e)) return; let t = e.map, n = t.getView(); if (n.getConstraints().rotation === ao) return; +======= +}, Ha = class extends za { + constructor(e) { + e ||= {}, super({ stopDown: me }), this.condition_ = e.condition ? e.condition : Oa, this.lastAngle_ = void 0, this.duration_ = e.duration === void 0 ? 250 : e.duration; + } + handleDragEvent(e) { + if (!La(e)) return; + let t = e.map, n = t.getView(); + if (n.getConstraints().rotation === aa) return; +>>>>>>> Stashed changes +======= +}, Ha = class extends za { + constructor(e) { + e ||= {}, super({ stopDown: me }), this.condition_ = e.condition ? e.condition : Oa, this.lastAngle_ = void 0, this.duration_ = e.duration === void 0 ? 250 : e.duration; + } + handleDragEvent(e) { + if (!La(e)) return; + let t = e.map, n = t.getView(); + if (n.getConstraints().rotation === aa) return; +>>>>>>> Stashed changes let r = t.getSize(), i = e.pixel, a = Math.atan2(r[1] / 2 - i[1], i[0] - r[0] / 2); if (this.lastAngle_ !== void 0) { let e = a - this.lastAngle_; @@ -4666,12 +6210,30 @@ var es = class extends Qo { this.lastAngle_ = a; } handleUpEvent(e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return !Xo(e) || (e.map.getView().endInteraction(this.duration_), !1); } handleDownEvent(e) { return Xo(e) && Go(e) && this.condition_(e) ? (e.map.getView().beginInteraction(), this.lastAngle_ = void 0, !0) : !1; } }, ns = class extends c { +======= + return !La(e) || (e.map.getView().endInteraction(this.duration_), !1); + } + handleDownEvent(e) { + return La(e) && Ma(e) && this.condition_(e) ? (e.map.getView().beginInteraction(), this.lastAngle_ = void 0, !0) : !1; + } +}, Ua = class extends ie { +>>>>>>> Stashed changes +======= + return !La(e) || (e.map.getView().endInteraction(this.duration_), !1); + } + handleDownEvent(e) { + return La(e) && Ma(e) && this.condition_(e) ? (e.map.getView().beginInteraction(), this.lastAngle_ = void 0, !0) : !1; + } +}, Ua = class extends ie { +>>>>>>> Stashed changes constructor(e) { super(), this.geometry_ = null, this.element_ = document.createElement("div"), this.element_.style.position = "absolute", this.element_.style.pointerEvents = "auto", this.element_.className = "ol-box " + e, this.map_ = null, this.startPixel_ = null, this.endPixel_ = null; } @@ -4701,16 +6263,34 @@ var es = class extends Qo { t, [t[0], e[1]] ].map(this.map_.getCoordinateFromPixelInternal, this.map_); +<<<<<<< Updated upstream +<<<<<<< Updated upstream n[4] = n[0].slice(), this.geometry_ ? this.geometry_.setCoordinates([n]) : this.geometry_ = new Qa([n]); +======= + n[4] = n[0].slice(), this.geometry_ ? this.geometry_.setCoordinates([n]) : this.geometry_ = new Qi([n]); +>>>>>>> Stashed changes +======= + n[4] = n[0].slice(), this.geometry_ ? this.geometry_.setCoordinates([n]) : this.geometry_ = new Qi([n]); +>>>>>>> Stashed changes } getGeometry() { return this.geometry_; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, rs = { +======= +}, Wa = { +>>>>>>> Stashed changes +======= +}, Wa = { +>>>>>>> Stashed changes BOXSTART: "boxstart", BOXDRAG: "boxdrag", BOXEND: "boxend", BOXCANCEL: "boxcancel" +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, is = class extends S { constructor(e, t, n) { super(e), this.coordinate = t, this.mapBrowserEvent = n; @@ -4718,6 +6298,24 @@ var es = class extends Qo { }, as = class extends Qo { constructor(e) { super(), this.on, this.once, this.un, e ??= {}, this.box_ = new ns(e.className || "ol-dragbox"), this.minArea_ = e.minArea ?? 64, e.onBoxEnd && (this.onBoxEnd = e.onBoxEnd), this.startPixel_ = null, this.condition_ = e.condition ?? Go, this.boxEndCondition_ = e.boxEndCondition ?? this.defaultBoxEndCondition; +======= +}, Ga = class extends ve { + constructor(e, t, n) { + super(e), this.coordinate = t, this.mapBrowserEvent = n; + } +}, Ka = class extends za { + constructor(e) { + super(), this.on, this.once, this.un, e ??= {}, this.box_ = new Ua(e.className || "ol-dragbox"), this.minArea_ = e.minArea ?? 64, e.onBoxEnd && (this.onBoxEnd = e.onBoxEnd), this.startPixel_ = null, this.condition_ = e.condition ?? Ma, this.boxEndCondition_ = e.boxEndCondition ?? this.defaultBoxEndCondition; +>>>>>>> Stashed changes +======= +}, Ga = class extends ve { + constructor(e, t, n) { + super(e), this.coordinate = t, this.mapBrowserEvent = n; + } +}, Ka = class extends za { + constructor(e) { + super(), this.on, this.once, this.un, e ??= {}, this.box_ = new Ua(e.className || "ol-dragbox"), this.minArea_ = e.minArea ?? 64, e.onBoxEnd && (this.onBoxEnd = e.onBoxEnd), this.startPixel_ = null, this.condition_ = e.condition ?? Ma, this.boxEndCondition_ = e.boxEndCondition ?? this.defaultBoxEndCondition; +>>>>>>> Stashed changes } defaultBoxEndCondition(e, t, n) { let r = n[0] - t[0], i = n[1] - t[1]; @@ -4727,11 +6325,21 @@ var es = class extends Qo { return this.box_.getGeometry(); } handleDragEvent(e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.startPixel_ && (this.box_.setPixels(this.startPixel_, e.pixel), this.dispatchEvent(new is(rs.BOXDRAG, e.coordinate, e))); +======= + this.startPixel_ && (this.box_.setPixels(this.startPixel_, e.pixel), this.dispatchEvent(new Ga(Wa.BOXDRAG, e.coordinate, e))); +>>>>>>> Stashed changes +======= + this.startPixel_ && (this.box_.setPixels(this.startPixel_, e.pixel), this.dispatchEvent(new Ga(Wa.BOXDRAG, e.coordinate, e))); +>>>>>>> Stashed changes } handleUpEvent(e) { if (!this.startPixel_) return !1; let t = this.boxEndCondition_(e, this.startPixel_, e.pixel); +<<<<<<< Updated upstream +<<<<<<< Updated upstream return t && this.onBoxEnd(e), this.dispatchEvent(new is(t ? rs.BOXEND : rs.BOXCANCEL, e.coordinate, e)), this.box_.setMap(null), this.startPixel_ = null, !1; } handleDownEvent(e) { @@ -4748,6 +6356,42 @@ var es = class extends Qo { constructor(e) { e ||= {}; let t = e.condition ? e.condition : Jo; +======= + return t && this.onBoxEnd(e), this.dispatchEvent(new Ga(t ? Wa.BOXEND : Wa.BOXCANCEL, e.coordinate, e)), this.box_.setMap(null), this.startPixel_ = null, !1; + } + handleDownEvent(e) { + return this.condition_(e) ? (this.startPixel_ = e.pixel, this.box_.setMap(e.map), this.box_.setPixels(this.startPixel_, this.startPixel_), this.dispatchEvent(new Ga(Wa.BOXSTART, e.coordinate, e)), !0) : !1; + } + onBoxEnd(e) {} + setActive(e) { + e || (this.box_.setMap(null), this.startPixel_ &&= (this.dispatchEvent(new Ga(Wa.BOXCANCEL, this.startPixel_, null)), null)), super.setActive(e); + } + setMap(e) { + this.getMap() && (this.box_.setMap(null), this.startPixel_ &&= (this.dispatchEvent(new Ga(Wa.BOXCANCEL, this.startPixel_, null)), null)), super.setMap(e); + } +}, qa = class extends Ka { + constructor(e) { + e ||= {}; + let t = e.condition ? e.condition : Fa; +>>>>>>> Stashed changes +======= + return t && this.onBoxEnd(e), this.dispatchEvent(new Ga(t ? Wa.BOXEND : Wa.BOXCANCEL, e.coordinate, e)), this.box_.setMap(null), this.startPixel_ = null, !1; + } + handleDownEvent(e) { + return this.condition_(e) ? (this.startPixel_ = e.pixel, this.box_.setMap(e.map), this.box_.setPixels(this.startPixel_, this.startPixel_), this.dispatchEvent(new Ga(Wa.BOXSTART, e.coordinate, e)), !0) : !1; + } + onBoxEnd(e) {} + setActive(e) { + e || (this.box_.setMap(null), this.startPixel_ &&= (this.dispatchEvent(new Ga(Wa.BOXCANCEL, this.startPixel_, null)), null)), super.setActive(e); + } + setMap(e) { + this.getMap() && (this.box_.setMap(null), this.startPixel_ &&= (this.dispatchEvent(new Ga(Wa.BOXCANCEL, this.startPixel_, null)), null)), super.setMap(e); + } +}, qa = class extends Ka { + constructor(e) { + e ||= {}; + let t = e.condition ? e.condition : Fa; +>>>>>>> Stashed changes super({ condition: t, className: e.className || "ol-dragzoom", @@ -4762,37 +6406,95 @@ var es = class extends Qo { } t.fitInternal(n, { duration: this.duration_, +<<<<<<< Updated upstream +<<<<<<< Updated upstream easing: je }); } }, ss = { +======= + easing: Hr + }); + } +}, Ja = { +>>>>>>> Stashed changes +======= + easing: Hr + }); + } +}, Ja = { +>>>>>>> Stashed changes LEFT: "ArrowLeft", UP: "ArrowUp", RIGHT: "ArrowRight", DOWN: "ArrowDown" +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, cs = class extends Io { constructor(e) { super(), e ||= {}, this.defaultCondition_ = function(e) { return Ko(e) && Yo(e); +======= +}, Ya = class extends Ca { + constructor(e) { + super(), e ||= {}, this.defaultCondition_ = function(e) { + return Na(e) && Ia(e); +>>>>>>> Stashed changes +======= +}, Ya = class extends Ca { + constructor(e) { + super(), e ||= {}, this.defaultCondition_ = function(e) { + return Na(e) && Ia(e); +>>>>>>> Stashed changes }, this.condition_ = e.condition === void 0 ? this.defaultCondition_ : e.condition, this.duration_ = e.duration === void 0 ? 100 : e.duration, this.pixelDelta_ = e.pixelDelta === void 0 ? 128 : e.pixelDelta; } handleEvent(e) { let t = !1; if (e.type == s.KEYDOWN) { let n = e.originalEvent, r = n.key; +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (this.condition_(e) && (r == ss.DOWN || r == ss.LEFT || r == ss.RIGHT || r == ss.UP)) { let i = e.map.getView(), a = i.getResolution() * this.pixelDelta_, o = 0, s = 0; r == ss.DOWN ? s = -a : r == ss.LEFT ? o = -a : r == ss.RIGHT ? o = a : s = a; let c = [o, s]; tn(c, i.getRotation()), Lo(i, c, this.duration_), n.preventDefault(), t = !0; +======= + if (this.condition_(e) && (r == Ja.DOWN || r == Ja.LEFT || r == Ja.RIGHT || r == Ja.UP)) { + let i = e.map.getView(), a = i.getResolution() * this.pixelDelta_, o = 0, s = 0; + r == Ja.DOWN ? s = -a : r == Ja.LEFT ? o = -a : r == Ja.RIGHT ? o = a : s = a; + let c = [o, s]; + Lt(c, i.getRotation()), wa(i, c, this.duration_), n.preventDefault(), t = !0; +>>>>>>> Stashed changes +======= + if (this.condition_(e) && (r == Ja.DOWN || r == Ja.LEFT || r == Ja.RIGHT || r == Ja.UP)) { + let i = e.map.getView(), a = i.getResolution() * this.pixelDelta_, o = 0, s = 0; + r == Ja.DOWN ? s = -a : r == Ja.LEFT ? o = -a : r == Ja.RIGHT ? o = a : s = a; + let c = [o, s]; + Lt(c, i.getRotation()), wa(i, c, this.duration_), n.preventDefault(), t = !0; +>>>>>>> Stashed changes } } return !t; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, ls = class extends Io { constructor(e) { super(), e ||= {}, this.condition_ = e.condition ? e.condition : function(e) { return !qo(e) && Yo(e); +======= +}, Xa = class extends Ca { + constructor(e) { + super(), e ||= {}, this.condition_ = e.condition ? e.condition : function(e) { + return !Pa(e) && Ia(e); +>>>>>>> Stashed changes +======= +}, Xa = class extends Ca { + constructor(e) { + super(), e ||= {}, this.condition_ = e.condition ? e.condition : function(e) { + return !Pa(e) && Ia(e); +>>>>>>> Stashed changes }, this.delta_ = e.delta ? e.delta : 1, this.duration_ = e.duration === void 0 ? 100 : e.duration; } handleEvent(e) { @@ -4801,16 +6503,40 @@ var es = class extends Qo { let n = e.originalEvent, r = n.key; if (this.condition_(e) && (r === "+" || r === "-")) { let i = e.map, a = r === "+" ? this.delta_ : -this.delta_; +<<<<<<< Updated upstream +<<<<<<< Updated upstream Ro(i.getView(), a, void 0, this.duration_), n.preventDefault(), t = !0; +======= + Ta(i.getView(), a, void 0, this.duration_), n.preventDefault(), t = !0; +>>>>>>> Stashed changes +======= + Ta(i.getView(), a, void 0, this.duration_), n.preventDefault(), t = !0; +>>>>>>> Stashed changes } } return !t; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, us = 40, ds = 300, fs = 3, ps = class extends Io { constructor(e) { e ||= {}, super(e), this.totalDelta_ = 0, this.lastDelta_ = 0, this.maxDelta_ = e.maxDelta === void 0 ? 1 : e.maxDelta, this.duration_ = e.duration === void 0 ? 250 : e.duration, this.timeout_ = e.timeout === void 0 ? 80 : e.timeout, this.useAnchor_ = e.useAnchor === void 0 || e.useAnchor, this.constrainResolution_ = e.constrainResolution !== void 0 && e.constrainResolution; let t = e.condition ? e.condition : Wo; this.condition_ = e.onFocusOnly ? Bo(Uo, t) : t, this.lastAnchor_ = null, this.startTime_ = void 0, this.timeoutId_, this.mode_ = void 0, this.trackpadEventGap_ = 400, this.trackpadTimeoutId_, this.deltaPerZoom_ = 300, this.ctrlKeyPressed_ = !1, this.ctrlKeyListenerKeys_ = []; +======= +}, Za = 40, Qa = 300, $a = 3, eo = class extends Ca { + constructor(e) { + e ||= {}, super(e), this.totalDelta_ = 0, this.lastDelta_ = 0, this.maxDelta_ = e.maxDelta === void 0 ? 1 : e.maxDelta, this.duration_ = e.duration === void 0 ? 250 : e.duration, this.timeout_ = e.timeout === void 0 ? 80 : e.timeout, this.useAnchor_ = e.useAnchor === void 0 || e.useAnchor, this.constrainResolution_ = e.constrainResolution !== void 0 && e.constrainResolution; + let t = e.condition ? e.condition : ja; + this.condition_ = e.onFocusOnly ? Da(Aa, t) : t, this.lastAnchor_ = null, this.startTime_ = void 0, this.timeoutId_, this.mode_ = void 0, this.trackpadEventGap_ = 400, this.trackpadTimeoutId_, this.deltaPerZoom_ = 300, this.ctrlKeyPressed_ = !1, this.ctrlKeyListenerKeys_ = []; +>>>>>>> Stashed changes +======= +}, Za = 40, Qa = 300, $a = 3, eo = class extends Ca { + constructor(e) { + e ||= {}, super(e), this.totalDelta_ = 0, this.lastDelta_ = 0, this.maxDelta_ = e.maxDelta === void 0 ? 1 : e.maxDelta, this.duration_ = e.duration === void 0 ? 250 : e.duration, this.timeout_ = e.timeout === void 0 ? 80 : e.timeout, this.useAnchor_ = e.useAnchor === void 0 || e.useAnchor, this.constrainResolution_ = e.constrainResolution !== void 0 && e.constrainResolution; + let t = e.condition ? e.condition : ja; + this.condition_ = e.onFocusOnly ? Da(Aa, t) : t, this.lastAnchor_ = null, this.startTime_ = void 0, this.timeoutId_, this.mode_ = void 0, this.trackpadEventGap_ = 400, this.trackpadTimeoutId_, this.deltaPerZoom_ = 300, this.ctrlKeyPressed_ = !1, this.ctrlKeyListenerKeys_ = []; +>>>>>>> Stashed changes } setMap(e) { if (this.ctrlKeyListenerKeys_.forEach(o), this.ctrlKeyListenerKeys_.length = 0, this.ctrlKeyPressed_ = !1, super.setMap(e), e) { @@ -4838,16 +6564,36 @@ var es = class extends Qo { let i = n.deltaY; switch (n.deltaMode) { case WheelEvent.DOM_DELTA_LINE: +<<<<<<< Updated upstream +<<<<<<< Updated upstream i *= us; break; case WheelEvent.DOM_DELTA_PAGE: i *= ds; +======= + i *= Za; + break; + case WheelEvent.DOM_DELTA_PAGE: i *= Qa; +>>>>>>> Stashed changes +======= + i *= Za; + break; + case WheelEvent.DOM_DELTA_PAGE: i *= Qa; +>>>>>>> Stashed changes } if (i === 0) return !1; this.lastDelta_ = i; let a = Date.now(); this.startTime_ === void 0 && (this.startTime_ = a), (!this.mode_ || a - this.startTime_ > this.trackpadEventGap_) && (this.mode_ = Math.abs(i) < 4 ? "trackpad" : "wheel"); let o = t.getView(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (this.mode_ === "trackpad") return this.trackpadTimeoutId_ ? clearTimeout(this.trackpadTimeoutId_) : (o.getAnimating() && o.cancelAnimations(), o.beginInteraction()), this.trackpadTimeoutId_ = setTimeout(this.endInteraction_.bind(this), this.timeout_), r && (i *= fs), o.adjustZoom(-i / this.deltaPerZoom_, this.lastAnchor_ ? t.getCoordinateFromPixel(this.lastAnchor_) : null), this.startTime_ = a, !1; +======= + if (this.mode_ === "trackpad") return this.trackpadTimeoutId_ ? clearTimeout(this.trackpadTimeoutId_) : (o.getAnimating() && o.cancelAnimations(), o.beginInteraction()), this.trackpadTimeoutId_ = setTimeout(this.endInteraction_.bind(this), this.timeout_), r && (i *= $a), o.adjustZoom(-i / this.deltaPerZoom_, this.lastAnchor_ ? t.getCoordinateFromPixel(this.lastAnchor_) : null), this.startTime_ = a, !1; +>>>>>>> Stashed changes +======= + if (this.mode_ === "trackpad") return this.trackpadTimeoutId_ ? clearTimeout(this.trackpadTimeoutId_) : (o.getAnimating() && o.cancelAnimations(), o.beginInteraction()), this.trackpadTimeoutId_ = setTimeout(this.endInteraction_.bind(this), this.timeout_), r && (i *= $a), o.adjustZoom(-i / this.deltaPerZoom_, this.lastAnchor_ ? t.getCoordinateFromPixel(this.lastAnchor_) : null), this.startTime_ = a, !1; +>>>>>>> Stashed changes this.totalDelta_ += i; let c = Math.max(this.timeout_ - (a - this.startTime_), 0); return clearTimeout(this.timeoutId_), this.timeoutId_ = setTimeout(this.handleWheelZoom_.bind(this, t), c), !1; @@ -4855,13 +6601,29 @@ var es = class extends Qo { handleWheelZoom_(e) { let t = e.getView(); t.getAnimating() && t.cancelAnimations(); +<<<<<<< Updated upstream let n = -Bt(this.totalDelta_, -this.maxDelta_ * this.deltaPerZoom_, this.maxDelta_ * this.deltaPerZoom_) / this.deltaPerZoom_; (t.getConstrainResolution() || this.constrainResolution_) && (n = n ? n > 0 ? 1 : -1 : 0), Ro(t, n, this.lastAnchor_ ? e.getCoordinateFromPixel(this.lastAnchor_) : null, this.duration_), this.mode_ = void 0, this.totalDelta_ = 0, this.lastAnchor_ = null, this.startTime_ = void 0, this.timeoutId_ = void 0; +======= + let n = -St(this.totalDelta_, -this.maxDelta_ * this.deltaPerZoom_, this.maxDelta_ * this.deltaPerZoom_) / this.deltaPerZoom_; + (t.getConstrainResolution() || this.constrainResolution_) && (n = n ? n > 0 ? 1 : -1 : 0), Ta(t, n, this.lastAnchor_ ? e.getCoordinateFromPixel(this.lastAnchor_) : null, this.duration_), this.mode_ = void 0, this.totalDelta_ = 0, this.lastAnchor_ = null, this.startTime_ = void 0, this.timeoutId_ = void 0; +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes } setMouseAnchor(e) { this.useAnchor_ = e, e || (this.lastAnchor_ = null); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, ms = class extends Qo { +======= +}, to = class extends za { +>>>>>>> Stashed changes +======= +}, to = class extends za { +>>>>>>> Stashed changes constructor(e) { e ||= {}; let t = e; @@ -4875,7 +6637,15 @@ var es = class extends Qo { } this.lastAngle_ = i; let a = e.map, o = a.getView(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream o.getConstraints().rotation !== ao && (this.anchor_ = a.getCoordinateFromPixelInternal(a.getEventPixel($o(this.targetPointers))), this.rotating_ && (a.render(), o.adjustRotationInternal(t, this.anchor_))); +======= + o.getConstraints().rotation !== aa && (this.anchor_ = a.getCoordinateFromPixelInternal(a.getEventPixel(Ba(this.targetPointers))), this.rotating_ && (a.render(), o.adjustRotationInternal(t, this.anchor_))); +>>>>>>> Stashed changes +======= + o.getConstraints().rotation !== aa && (this.anchor_ = a.getCoordinateFromPixelInternal(a.getEventPixel(Ba(this.targetPointers))), this.rotating_ && (a.render(), o.adjustRotationInternal(t, this.anchor_))); +>>>>>>> Stashed changes } handleUpEvent(e) { return this.targetPointers.length < 2 ? (e.map.getView().endInteraction(this.duration_), !1) : !0; @@ -4887,7 +6657,15 @@ var es = class extends Qo { } return !1; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, hs = class extends Qo { +======= +}, no = class extends za { +>>>>>>> Stashed changes +======= +}, no = class extends za { +>>>>>>> Stashed changes constructor(e) { e ||= {}; let t = e; @@ -4897,7 +6675,15 @@ var es = class extends Qo { let t = 1, n = this.targetPointers[0], r = this.targetPointers[1], i = n.clientX - r.clientX, a = n.clientY - r.clientY, o = Math.sqrt(i * i + a * a); this.lastDistance_ !== void 0 && (t = this.lastDistance_ / o), this.lastDistance_ = o; let s = e.map, c = s.getView(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream t != 1 && (this.lastScaleDelta_ = t), this.anchor_ = s.getCoordinateFromPixelInternal(s.getEventPixel($o(this.targetPointers))), s.render(), c.adjustResolutionInternal(t, this.anchor_); +======= + t != 1 && (this.lastScaleDelta_ = t), this.anchor_ = s.getCoordinateFromPixelInternal(s.getEventPixel(Ba(this.targetPointers))), s.render(), c.adjustResolutionInternal(t, this.anchor_); +>>>>>>> Stashed changes +======= + t != 1 && (this.lastScaleDelta_ = t), this.anchor_ = s.getCoordinateFromPixelInternal(s.getEventPixel(Ba(this.targetPointers))), s.render(), c.adjustResolutionInternal(t, this.anchor_); +>>>>>>> Stashed changes } handleUpEvent(e) { if (this.targetPointers.length < 2) { @@ -4916,6 +6702,8 @@ var es = class extends Qo { }; //#endregion //#region node_modules/ol/interaction/defaults.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function gs(e) { e ||= {}; let t = new N(), n = new Po(-.005, .05, 100); @@ -4943,17 +6731,168 @@ var _s = { super(e), this.layer = t; } }, ys = { LAYERS: "layers" }, bs = class r extends vo { +======= +function ro(e) { + e ||= {}; + let t = new Or(), n = new xa(-.005, .05, 100); + return (e.altShiftDragRotate === void 0 || e.altShiftDragRotate) && t.push(new Ha()), (e.doubleClickZoom === void 0 || e.doubleClickZoom) && t.push(new Ea({ + delta: e.zoomDelta, + duration: e.zoomDuration + })), (e.dragPan === void 0 || e.dragPan) && t.push(new Va({ + onFocusOnly: e.onFocusOnly, + kinetic: n + })), (e.pinchRotate === void 0 || e.pinchRotate) && t.push(new to()), (e.pinchZoom === void 0 || e.pinchZoom) && t.push(new no({ duration: e.zoomDuration })), (e.keyboard === void 0 || e.keyboard) && (t.push(new Ya()), t.push(new Xa({ + delta: e.zoomDelta, + duration: e.zoomDuration + }))), (e.mouseWheelZoom === void 0 || e.mouseWheelZoom) && t.push(new eo({ + onFocusOnly: e.onFocusOnly, + duration: e.zoomDuration +======= +function ro(e) { + e ||= {}; + let t = new Or(), n = new xa(-.005, .05, 100); + return (e.altShiftDragRotate === void 0 || e.altShiftDragRotate) && t.push(new Ha()), (e.doubleClickZoom === void 0 || e.doubleClickZoom) && t.push(new Ea({ + delta: e.zoomDelta, + duration: e.zoomDuration + })), (e.dragPan === void 0 || e.dragPan) && t.push(new Va({ + onFocusOnly: e.onFocusOnly, + kinetic: n + })), (e.pinchRotate === void 0 || e.pinchRotate) && t.push(new to()), (e.pinchZoom === void 0 || e.pinchZoom) && t.push(new no({ duration: e.zoomDuration })), (e.keyboard === void 0 || e.keyboard) && (t.push(new Ya()), t.push(new Xa({ + delta: e.zoomDelta, + duration: e.zoomDuration + }))), (e.mouseWheelZoom === void 0 || e.mouseWheelZoom) && t.push(new eo({ + onFocusOnly: e.onFocusOnly, + duration: e.zoomDuration +>>>>>>> Stashed changes + })), (e.shiftDragZoom === void 0 || e.shiftDragZoom) && t.push(new qa({ duration: e.zoomDuration })), t; +} +//#endregion +//#region node_modules/ol/layer/Property.js +var B = { + OPACITY: "opacity", + VISIBLE: "visible", + EXTENT: "extent", + Z_INDEX: "zIndex", + MAX_RESOLUTION: "maxResolution", + MIN_RESOLUTION: "minResolution", + MAX_ZOOM: "maxZoom", + MIN_ZOOM: "minZoom", + SOURCE: "source", + MAP: "map" +}, io = class extends we { + constructor(e) { + super(), this.on, this.once, this.un, this.background_ = e.background; + let t = Object.assign({}, e); + typeof e.properties == "object" && (delete t.properties, Object.assign(t, e.properties)), t[B.OPACITY] = e.opacity === void 0 ? 1 : e.opacity, R(typeof t[B.OPACITY] == "number", "Layer opacity must be a number"), t[B.VISIBLE] = e.visible === void 0 || e.visible, t[B.Z_INDEX] = e.zIndex, t[B.MAX_RESOLUTION] = e.maxResolution === void 0 ? Infinity : e.maxResolution, t[B.MIN_RESOLUTION] = e.minResolution === void 0 ? 0 : e.minResolution, t[B.MIN_ZOOM] = e.minZoom === void 0 ? -Infinity : e.minZoom, t[B.MAX_ZOOM] = e.maxZoom === void 0 ? Infinity : e.maxZoom, this.className_ = t.className === void 0 ? "ol-layer" : t.className, delete t.className, this.setProperties(t), this.state_ = null; + } + getBackground() { + return this.background_; + } + getClassName() { + return this.className_; + } + getLayerState(e) { + let t = this.state_ || { + layer: this, + managed: e === void 0 || e + }, n = this.getZIndex(); + return t.opacity = St(Math.round(this.getOpacity() * 100) / 100, 0, 1), t.visible = this.getVisible(), t.extent = this.getExtent(), t.zIndex = n === void 0 && !t.managed ? Infinity : n, t.maxResolution = this.getMaxResolution(), t.minResolution = Math.max(this.getMinResolution(), 0), t.minZoom = this.getMinZoom(), t.maxZoom = this.getMaxZoom(), this.state_ = t, t; + } + getLayersArray(e) { + return P(); + } + getLayerStatesArray(e) { + return P(); + } + getExtent() { + return this.get(B.EXTENT); + } + getMaxResolution() { + return this.get(B.MAX_RESOLUTION); + } + getMinResolution() { + return this.get(B.MIN_RESOLUTION); + } + getMinZoom() { + return this.get(B.MIN_ZOOM); + } + getMaxZoom() { + return this.get(B.MAX_ZOOM); + } + getOpacity() { + return this.get(B.OPACITY); + } + getSourceState() { + return P(); + } + getVisible() { + return this.get(B.VISIBLE); + } + getZIndex() { + return this.get(B.Z_INDEX); + } + setBackground(e) { + this.background_ = e, this.changed(); + } + setExtent(e) { + this.set(B.EXTENT, e); + } + setMaxResolution(e) { + this.set(B.MAX_RESOLUTION, e); + } + setMinResolution(e) { + this.set(B.MIN_RESOLUTION, e); + } + setMaxZoom(e) { + this.set(B.MAX_ZOOM, e); + } + setMinZoom(e) { + this.set(B.MIN_ZOOM, e); + } + setOpacity(e) { + R(typeof e == "number", "Layer opacity must be a number"), this.set(B.OPACITY, e); + } + setVisible(e) { + this.set(B.VISIBLE, e); + } + setZIndex(e) { + this.set(B.Z_INDEX, e); + } + disposeInternal() { + this.state_ &&= (this.state_.layer = null, null), super.disposeInternal(); + } +}, ao = { + ADDLAYER: "addlayer", + REMOVELAYER: "removelayer" +}, oo = class extends ve { + constructor(e, t) { + super(e), this.layer = t; + } +}, so = { LAYERS: "layers" }, co = class e extends io { +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes constructor(e) { e ||= {}; let t = Object.assign({}, e); delete t.layers; let n = e.layers; +<<<<<<< Updated upstream +<<<<<<< Updated upstream super(t), this.on, this.once, this.un, this.layersListenerKeys_ = [], this.listenerKeys_ = {}, this.addChangeListener(ys.LAYERS, this.handleLayersChanged_), n ? Array.isArray(n) ? n = new N(n.slice(), { unique: !0 }) : z(typeof n.getArray == "function", "Expected `layers` to be an array or a `Collection`") : n = new N(void 0, { unique: !0 }), this.setLayers(n); +======= + super(t), this.on, this.once, this.un, this.layersListenerKeys_ = [], this.listenerKeys_ = {}, this.addChangeListener(so.LAYERS, this.handleLayersChanged_), n ? Array.isArray(n) ? n = new Or(n.slice(), { unique: !0 }) : R(typeof n.getArray == "function", "Expected `layers` to be an array or a `Collection`") : n = new Or(void 0, { unique: !0 }), this.setLayers(n); +>>>>>>> Stashed changes +======= + super(t), this.on, this.once, this.un, this.layersListenerKeys_ = [], this.listenerKeys_ = {}, this.addChangeListener(so.LAYERS, this.handleLayersChanged_), n ? Array.isArray(n) ? n = new Or(n.slice(), { unique: !0 }) : R(typeof n.getArray == "function", "Expected `layers` to be an array or a `Collection`") : n = new Or(void 0, { unique: !0 }), this.setLayers(n); +>>>>>>> Stashed changes } handleLayerChange_() { this.changed(); } handleLayersChanged_() { +<<<<<<< Updated upstream this.layersListenerKeys_.forEach(o), this.layersListenerKeys_.length = 0; let t = this.getLayers(); this.layersListenerKeys_.push(i(t, e.ADD, this.handleLayersAdd_, this), i(t, e.REMOVE, this.handleLayersRemove_, this)); @@ -4986,14 +6925,63 @@ var _s = { } getLayers() { return this.get(ys.LAYERS); +======= + this.layersListenerKeys_.forEach(j), this.layersListenerKeys_.length = 0; + let e = this.getLayers(); + this.layersListenerKeys_.push(A(e, Tr.ADD, this.handleLayersAdd_, this), A(e, Tr.REMOVE, this.handleLayersRemove_, this)); + for (let e in this.listenerKeys_) this.listenerKeys_[e].forEach(j); + k(this.listenerKeys_); + let t = e.getArray(); + for (let e = 0, n = t.length; e < n; e++) { + let n = t[e]; + this.registerLayerListeners_(n), this.dispatchEvent(new oo(ao.ADDLAYER, n)); + } + this.changed(); + } + registerLayerListeners_(t) { + let n = [A(t, re.PROPERTYCHANGE, this.handleLayerChange_, this), A(t, M.CHANGE, this.handleLayerChange_, this)]; + t instanceof e && n.push(A(t, ao.ADDLAYER, this.handleLayerGroupAdd_, this), A(t, ao.REMOVELAYER, this.handleLayerGroupRemove_, this)), this.listenerKeys_[F(t)] = n; + } + handleLayerGroupAdd_(e) { + this.dispatchEvent(new oo(ao.ADDLAYER, e.layer)); + } + handleLayerGroupRemove_(e) { + this.dispatchEvent(new oo(ao.REMOVELAYER, e.layer)); + } + handleLayersAdd_(e) { + let t = e.element; + this.registerLayerListeners_(t), this.dispatchEvent(new oo(ao.ADDLAYER, t)), this.changed(); + } + handleLayersRemove_(e) { + let t = e.element, n = F(t); + this.listenerKeys_[n].forEach(j), delete this.listenerKeys_[n], this.dispatchEvent(new oo(ao.REMOVELAYER, t)), this.changed(); + } + getLayers() { + return this.get(so.LAYERS); +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes } setLayers(e) { let t = this.getLayers(); if (t) { let e = t.getArray(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream for (let t = 0, n = e.length; t < n; ++t) this.dispatchEvent(new vs(_s.REMOVELAYER, e[t])); } this.set(ys.LAYERS, e); +======= + for (let t = 0, n = e.length; t < n; ++t) this.dispatchEvent(new oo(ao.REMOVELAYER, e[t])); + } + this.set(so.LAYERS, e); +>>>>>>> Stashed changes +======= + for (let t = 0, n = e.length; t < n; ++t) this.dispatchEvent(new oo(ao.REMOVELAYER, e[t])); + } + this.set(so.LAYERS, e); +>>>>>>> Stashed changes } getLayersArray(e) { return e = e === void 0 ? [] : e, this.getLayers().forEach(function(t) { @@ -5016,6 +7004,8 @@ var _s = { getSourceState() { return "ready"; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }; //#endregion //#region node_modules/quickselect/index.js @@ -5038,25 +7028,194 @@ function Ss(e, t, n) { e[t] = e[n], e[n] = r; } function Cs(e, t) { - return e < t ? -1 : +(e > t); -} -//#endregion -//#region node_modules/rbush/index.js -var ws = class { - constructor(e = 9) { - this._maxEntries = Math.max(4, e), this._minEntries = Math.max(2, Math.ceil(this._maxEntries * .4)), this.clear(); - } - all() { - return this._all(this.data, []); +======= +======= +>>>>>>> Stashed changes +}, lo = { + PRERENDER: "prerender", + POSTRENDER: "postrender", + PRECOMPOSE: "precompose", + POSTCOMPOSE: "postcompose", + RENDERCOMPLETE: "rendercomplete" +}, uo = class extends io { + constructor(e) { + let t = Object.assign({}, e); + delete t.source, super(t), this.on, this.once, this.un, this.mapPrecomposeKey_ = null, this.mapRenderKey_ = null, this.sourceChangeKey_ = null, this.renderer_ = null, this.sourceReady_ = !1, this.rendered = !1, e.render && (this.render = e.render), e.map && this.setMap(e.map), this.addChangeListener(B.SOURCE, this.handleSourcePropertyChange_); + let n = e.source ? e.source : null; + this.setSource(n); + } + getLayersArray(e) { + return e ||= [], e.push(this), e; + } + getLayerStatesArray(e) { + return e ||= [], e.push(this.getLayerState()), e; + } + getSource() { + return this.get(B.SOURCE) || null; + } + getRenderSource() { + return this.getSource(); + } + getSourceState() { + let e = this.getSource(); + return e ? e.getState() : "undefined"; + } + handleSourceChange_() { + this.changed(), !(this.sourceReady_ || this.getSource().getState() !== "ready") && (this.sourceReady_ = !0, this.dispatchEvent("sourceready")); + } + handleSourcePropertyChange_() { + this.sourceChangeKey_ &&= (j(this.sourceChangeKey_), null), this.sourceReady_ = !1; + let e = this.getSource(); + e && (this.sourceChangeKey_ = A(e, M.CHANGE, this.handleSourceChange_, this), e.getState() === "ready" && (this.sourceReady_ = !0, setTimeout(() => { + this.dispatchEvent("sourceready"); + }, 0))), this.changed(); + } + getFeatures(e) { + return this.renderer_ ? this.renderer_.getFeatures(e) : Promise.resolve([]); + } + getData(e) { + return !this.renderer_ || !this.rendered ? null : this.renderer_.getData(e); + } + isVisible(e) { + let t, n = this.getMapInternal(); + !e && n && (e = n.getView()), t = e instanceof ua ? { + viewState: e.getState(), + extent: e.calculateExtent() + } : e, !t.layerStatesArray && n && (t.layerStatesArray = n.getLayerGroup().getLayerStatesArray()); + let r; + if (t.layerStatesArray) { + if (r = t.layerStatesArray.find((e) => e.layer === this), !r) return !1; + } else r = this.getLayerState(); + let i = this.getExtent(); + return fo(r, t.viewState) && (!i || pt(i, t.extent)); + } + getAttributions(e) { + if (!this.isVisible(e)) return []; + let t = this.getSource()?.getAttributions(); + if (!t) return []; + let n = t(e instanceof ua ? e.getViewStateAndExtent() : e); + return Array.isArray(n) || (n = [n]), n; + } + render(e, t) { + let n = this.getRenderer(); + return n.prepareFrame(e) ? (this.rendered = !0, n.renderFrame(e, t)) : null; + } + unrender() { + this.rendered = !1; + } + getDeclutter() {} + renderDeclutter(e, t) {} + renderDeferred(e) { + let t = this.getRenderer(); + t && t.renderDeferred(e); + } + setMapInternal(e) { + e || this.unrender(), this.set(B.MAP, e); + } + getMapInternal() { + return this.get(B.MAP); + } + setMap(e) { + this.mapPrecomposeKey_ &&= (j(this.mapPrecomposeKey_), null), e || this.changed(), this.mapRenderKey_ &&= (j(this.mapRenderKey_), null), e && (this.mapPrecomposeKey_ = A(e, lo.PRECOMPOSE, this.handlePrecompose_, this), this.mapRenderKey_ = A(this, M.CHANGE, e.render, e), this.changed()); + } + handlePrecompose_(e) { + let t = e.frameState.layerStatesArray, n = this.getLayerState(!1); + R(!t.some((e) => e.layer === n.layer), "A layer can only be added to the map once. Use either `layer.setMap()` or `map.addLayer()`, not both."), t.push(n); + } + setSource(e) { + this.set(B.SOURCE, e); + } + getRenderer() { + return this.renderer_ ||= this.createRenderer(), this.renderer_; + } + hasRenderer() { + return !!this.renderer_; + } + createRenderer() { + return null; + } + clearRenderer() { + this.renderer_ && (this.renderer_.dispose(), delete this.renderer_); + } + disposeInternal() { + this.clearRenderer(), this.setSource(null), super.disposeInternal(); + } +}; +function fo(e, t) { + if (!e.visible) return !1; + let n = t.resolution; + if (n < e.minResolution || n >= e.maxResolution) return !1; + let r = t.zoom; + return r > e.minZoom && r <= e.maxZoom; +} +//#endregion +//#region node_modules/quickselect/index.js +function po(e, t, n = 0, r = e.length - 1, i = ho) { + for (; r > n;) { + if (r - n > 600) { + let a = r - n + 1, o = t - n + 1, s = Math.log(a), c = .5 * Math.exp(2 * s / 3), l = .5 * Math.sqrt(s * c * (a - c) / a) * (o - a / 2 < 0 ? -1 : 1); + po(e, t, Math.max(n, Math.floor(t - o * c / a + l)), Math.min(r, Math.floor(t + (a - o) * c / a + l)), i); + } + let a = e[t], o = n, s = r; + for (mo(e, n, t), i(e[r], a) > 0 && mo(e, n, r); o < s;) { + for (mo(e, o, s), o++, s--; i(e[o], a) < 0;) o++; + for (; i(e[s], a) > 0;) s--; + } + i(e[n], a) === 0 ? mo(e, n, s) : (s++, mo(e, s, r)), s <= t && (n = s + 1), t <= s && (r = s - 1); + } +} +function mo(e, t, n) { + let r = e[t]; + e[t] = e[n], e[n] = r; +} +function ho(e, t) { +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes + return e < t ? -1 : +(e > t); +} +//#endregion +//#region node_modules/rbush/index.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream +var ws = class { +======= +var go = class { +>>>>>>> Stashed changes +======= +var go = class { +>>>>>>> Stashed changes + constructor(e = 9) { + this._maxEntries = Math.max(4, e), this._minEntries = Math.max(2, Math.ceil(this._maxEntries * .4)), this.clear(); + } + all() { + return this._all(this.data, []); } search(e) { let t = this.data, n = []; +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (!Is(e, t)) return n; +======= + if (!Oo(e, t)) return n; +>>>>>>> Stashed changes +======= + if (!Oo(e, t)) return n; +>>>>>>> Stashed changes let r = this.toBBox, i = []; for (; t;) { for (let a = 0; a < t.children.length; a++) { let o = t.children[a], s = t.leaf ? r(o) : o; +<<<<<<< Updated upstream +<<<<<<< Updated upstream Is(e, s) && (t.leaf ? n.push(o) : Fs(e, s) ? this._all(o, n) : i.push(o)); +======= + Oo(e, s) && (t.leaf ? n.push(o) : Do(e, s) ? this._all(o, n) : i.push(o)); +>>>>>>> Stashed changes +======= + Oo(e, s) && (t.leaf ? n.push(o) : Do(e, s) ? this._all(o, n) : i.push(o)); +>>>>>>> Stashed changes } t = i.pop(); } @@ -5064,13 +7223,31 @@ var ws = class { } collides(e) { let t = this.data; +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (!Is(e, t)) return !1; +======= + if (!Oo(e, t)) return !1; +>>>>>>> Stashed changes +======= + if (!Oo(e, t)) return !1; +>>>>>>> Stashed changes let n = []; for (; t;) { for (let r = 0; r < t.children.length; r++) { let i = t.children[r], a = t.leaf ? this.toBBox(i) : i; +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (Is(e, a)) { if (t.leaf || Fs(e, a)) return !0; +======= + if (Oo(e, a)) { + if (t.leaf || Do(e, a)) return !0; +>>>>>>> Stashed changes +======= + if (Oo(e, a)) { + if (t.leaf || Do(e, a)) return !0; +>>>>>>> Stashed changes n.push(i); } } @@ -5100,17 +7277,39 @@ var ws = class { return e && this._insert(e, this.data.height - 1), this; } clear() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return this.data = Ls([]), this; +======= + return this.data = ko([]), this; +>>>>>>> Stashed changes +======= + return this.data = ko([]), this; +>>>>>>> Stashed changes } remove(e, t) { if (!e) return this; let n = this.data, r = this.toBBox(e), i = [], a = [], o, s, c; for (; n || i.length;) { if (n || (n = i.pop(), s = i[i.length - 1], o = a.pop(), c = !0), n.leaf) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let r = Ts(e, n.children, t); if (r !== -1) return n.children.splice(r, 1), i.push(n), this._condense(i), this; } !c && !n.leaf && Fs(n, r) ? (i.push(n), a.push(o), o = 0, s = n, n = n.children[0]) : s ? (o++, n = s.children[o], c = !1) : n = null; +======= + let r = _o(e, n.children, t); + if (r !== -1) return n.children.splice(r, 1), i.push(n), this._condense(i), this; + } + !c && !n.leaf && Do(n, r) ? (i.push(n), a.push(o), o = 0, s = n, n = n.children[0]) : s ? (o++, n = s.children[o], c = !1) : n = null; +>>>>>>> Stashed changes +======= + let r = _o(e, n.children, t); + if (r !== -1) return n.children.splice(r, 1), i.push(n), this._condense(i), this; + } + !c && !n.leaf && Do(n, r) ? (i.push(n), a.push(o), o = 0, s = n, n = n.children[0]) : s ? (o++, n = s.children[o], c = !1) : n = null; +>>>>>>> Stashed changes } return this; } @@ -5136,6 +7335,8 @@ var ws = class { } _build(e, t, n, r) { let i = n - t + 1, a = this._maxEntries, o; +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (i <= a) return o = Ls(e.slice(t, n + 1)), Es(o, this.toBBox), o; r || (r = Math.ceil(Math.log(i) / Math.log(a)), a = Math.ceil(i / a ** (r - 1))), o = Ls([]), o.leaf = !1, o.height = r; let s = Math.ceil(i / a), c = s * Math.ceil(Math.sqrt(a)); @@ -5143,18 +7344,52 @@ var ws = class { for (let i = t; i <= n; i += c) { let t = Math.min(i + c - 1, n); Rs(e, i, t, s, this.compareMinY); +======= + if (i <= a) return o = ko(e.slice(t, n + 1)), vo(o, this.toBBox), o; + r || (r = Math.ceil(Math.log(i) / Math.log(a)), a = Math.ceil(i / a ** (r - 1))), o = ko([]), o.leaf = !1, o.height = r; + let s = Math.ceil(i / a), c = s * Math.ceil(Math.sqrt(a)); + Ao(e, t, n, c, this.compareMinX); + for (let i = t; i <= n; i += c) { + let t = Math.min(i + c - 1, n); + Ao(e, i, t, s, this.compareMinY); +>>>>>>> Stashed changes +======= + if (i <= a) return o = ko(e.slice(t, n + 1)), vo(o, this.toBBox), o; + r || (r = Math.ceil(Math.log(i) / Math.log(a)), a = Math.ceil(i / a ** (r - 1))), o = ko([]), o.leaf = !1, o.height = r; + let s = Math.ceil(i / a), c = s * Math.ceil(Math.sqrt(a)); + Ao(e, t, n, c, this.compareMinX); + for (let i = t; i <= n; i += c) { + let t = Math.min(i + c - 1, n); + Ao(e, i, t, s, this.compareMinY); +>>>>>>> Stashed changes for (let n = i; n <= t; n += s) { let i = Math.min(n + s - 1, t); o.children.push(this._build(e, n, i, r - 1)); } } +<<<<<<< Updated upstream +<<<<<<< Updated upstream return Es(o, this.toBBox), o; +======= + return vo(o, this.toBBox), o; +>>>>>>> Stashed changes +======= + return vo(o, this.toBBox), o; +>>>>>>> Stashed changes } _chooseSubtree(e, t, n, r) { for (; r.push(t), !(t.leaf || r.length - 1 === n);) { let n = Infinity, r = Infinity, i; for (let a = 0; a < t.children.length; a++) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let o = t.children[a], s = js(o), c = Ns(e, o) - s; +======= + let o = t.children[a], s = Co(o), c = To(e, o) - s; +>>>>>>> Stashed changes +======= + let o = t.children[a], s = Co(o), c = To(e, o) - s; +>>>>>>> Stashed changes c < r ? (r = c, n = s < n ? s : n, i = o) : c === r && s < n && (n = s, i = o); } t = i || t.children[0]; @@ -5163,32 +7398,74 @@ var ws = class { } _insert(e, t, n) { let r = n ? e : this.toBBox(e), i = [], a = this._chooseSubtree(r, this.data, t, i); +<<<<<<< Updated upstream +<<<<<<< Updated upstream for (a.children.push(e), Os(a, r); t >= 0 && i[t].children.length > this._maxEntries;) this._split(i, t), t--; +======= + for (a.children.push(e), bo(a, r); t >= 0 && i[t].children.length > this._maxEntries;) this._split(i, t), t--; +>>>>>>> Stashed changes +======= + for (a.children.push(e), bo(a, r); t >= 0 && i[t].children.length > this._maxEntries;) this._split(i, t), t--; +>>>>>>> Stashed changes this._adjustParentBBoxes(r, i, t); } _split(e, t) { let n = e[t], r = n.children.length, i = this._minEntries; this._chooseSplitAxis(n, i, r); +<<<<<<< Updated upstream +<<<<<<< Updated upstream let a = this._chooseSplitIndex(n, i, r), o = Ls(n.children.splice(a, n.children.length - a)); o.height = n.height, o.leaf = n.leaf, Es(n, this.toBBox), Es(o, this.toBBox), t ? e[t - 1].children.push(o) : this._splitRoot(n, o); } _splitRoot(e, t) { this.data = Ls([e, t]), this.data.height = e.height + 1, this.data.leaf = !1, Es(this.data, this.toBBox); +======= + let a = this._chooseSplitIndex(n, i, r), o = ko(n.children.splice(a, n.children.length - a)); + o.height = n.height, o.leaf = n.leaf, vo(n, this.toBBox), vo(o, this.toBBox), t ? e[t - 1].children.push(o) : this._splitRoot(n, o); + } + _splitRoot(e, t) { + this.data = ko([e, t]), this.data.height = e.height + 1, this.data.leaf = !1, vo(this.data, this.toBBox); +>>>>>>> Stashed changes +======= + let a = this._chooseSplitIndex(n, i, r), o = ko(n.children.splice(a, n.children.length - a)); + o.height = n.height, o.leaf = n.leaf, vo(n, this.toBBox), vo(o, this.toBBox), t ? e[t - 1].children.push(o) : this._splitRoot(n, o); + } + _splitRoot(e, t) { + this.data = ko([e, t]), this.data.height = e.height + 1, this.data.leaf = !1, vo(this.data, this.toBBox); +>>>>>>> Stashed changes } _chooseSplitIndex(e, t, n) { let r, i = Infinity, a = Infinity; for (let o = t; o <= n - t; o++) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let t = Ds(e, 0, o, this.toBBox), s = Ds(e, o, n, this.toBBox), c = Ps(t, s), l = js(t) + js(s); +======= + let t = yo(e, 0, o, this.toBBox), s = yo(e, o, n, this.toBBox), c = Eo(t, s), l = Co(t) + Co(s); +>>>>>>> Stashed changes +======= + let t = yo(e, 0, o, this.toBBox), s = yo(e, o, n, this.toBBox), c = Eo(t, s), l = Co(t) + Co(s); +>>>>>>> Stashed changes c < i ? (i = c, r = o, a = l < a ? l : a) : c === i && l < a && (a = l, r = o); } return r || n - t; } _chooseSplitAxis(e, t, n) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let r = e.leaf ? this.compareMinX : ks, i = e.leaf ? this.compareMinY : As; +======= + let r = e.leaf ? this.compareMinX : xo, i = e.leaf ? this.compareMinY : So; +>>>>>>> Stashed changes +======= + let r = e.leaf ? this.compareMinX : xo, i = e.leaf ? this.compareMinY : So; +>>>>>>> Stashed changes this._allDistMargin(e, t, n, r) < this._allDistMargin(e, t, n, i) && e.children.sort(r); } _allDistMargin(e, t, n, r) { e.children.sort(r); +<<<<<<< Updated upstream +<<<<<<< Updated upstream let i = this.toBBox, a = Ds(e, 0, t, i), o = Ds(e, n - t, n, i), s = Ms(a) + Ms(o); for (let r = t; r < n - t; r++) { let t = e.children[r]; @@ -5197,10 +7474,32 @@ var ws = class { for (let r = n - t - 1; r >= t; r--) { let t = e.children[r]; Os(o, e.leaf ? i(t) : t), s += Ms(o); +======= + let i = this.toBBox, a = yo(e, 0, t, i), o = yo(e, n - t, n, i), s = wo(a) + wo(o); + for (let r = t; r < n - t; r++) { + let t = e.children[r]; + bo(a, e.leaf ? i(t) : t), s += wo(a); + } + for (let r = n - t - 1; r >= t; r--) { + let t = e.children[r]; + bo(o, e.leaf ? i(t) : t), s += wo(o); +>>>>>>> Stashed changes +======= + let i = this.toBBox, a = yo(e, 0, t, i), o = yo(e, n - t, n, i), s = wo(a) + wo(o); + for (let r = t; r < n - t; r++) { + let t = e.children[r]; + bo(a, e.leaf ? i(t) : t), s += wo(a); + } + for (let r = n - t - 1; r >= t; r--) { + let t = e.children[r]; + bo(o, e.leaf ? i(t) : t), s += wo(o); +>>>>>>> Stashed changes } return s; } _adjustParentBBoxes(e, t, n) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream for (let r = n; r >= 0; r--) Os(t[r], e); } _condense(e) { @@ -5208,10 +7507,30 @@ var ws = class { } }; function Ts(e, t, n) { +======= + for (let r = n; r >= 0; r--) bo(t[r], e); + } + _condense(e) { + for (let t = e.length - 1, n; t >= 0; t--) e[t].children.length === 0 ? t > 0 ? (n = e[t - 1].children, n.splice(n.indexOf(e[t]), 1)) : this.clear() : vo(e[t], this.toBBox); + } +}; +function _o(e, t, n) { +>>>>>>> Stashed changes +======= + for (let r = n; r >= 0; r--) bo(t[r], e); + } + _condense(e) { + for (let t = e.length - 1, n; t >= 0; t--) e[t].children.length === 0 ? t > 0 ? (n = e[t - 1].children, n.splice(n.indexOf(e[t]), 1)) : this.clear() : vo(e[t], this.toBBox); + } +}; +function _o(e, t, n) { +>>>>>>> Stashed changes if (!n) return t.indexOf(e); for (let r = 0; r < t.length; r++) if (n(e, t[r])) return r; return -1; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Es(e, t) { Ds(e, 0, e.children.length, t, e); } @@ -5252,6 +7571,90 @@ function Is(e, t) { return t.minX <= e.maxX && t.minY <= e.maxY && t.maxX >= e.minX && t.maxY >= e.minY; } function Ls(e) { +======= +function vo(e, t) { + yo(e, 0, e.children.length, t, e); +} +function yo(e, t, n, r, i) { + i ||= ko(null), i.minX = Infinity, i.minY = Infinity, i.maxX = -Infinity, i.maxY = -Infinity; + for (let a = t; a < n; a++) { + let t = e.children[a]; + bo(i, e.leaf ? r(t) : t); + } + return i; +} +function bo(e, t) { + return 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), e; +} +function xo(e, t) { + return e.minX - t.minX; +} +function So(e, t) { + return e.minY - t.minY; +} +function Co(e) { + return (e.maxX - e.minX) * (e.maxY - e.minY); +} +function wo(e) { + return e.maxX - e.minX + (e.maxY - e.minY); +} +function To(e, t) { + return (Math.max(t.maxX, e.maxX) - Math.min(t.minX, e.minX)) * (Math.max(t.maxY, e.maxY) - Math.min(t.minY, e.minY)); +} +function Eo(e, t) { + let n = Math.max(e.minX, t.minX), r = Math.max(e.minY, t.minY), i = Math.min(e.maxX, t.maxX), a = Math.min(e.maxY, t.maxY); + return Math.max(0, i - n) * Math.max(0, a - r); +} +function Do(e, t) { + return e.minX <= t.minX && e.minY <= t.minY && t.maxX <= e.maxX && t.maxY <= e.maxY; +} +function Oo(e, t) { + return t.minX <= e.maxX && t.minY <= e.maxY && t.maxX >= e.minX && t.maxY >= e.minY; +} +function ko(e) { +>>>>>>> Stashed changes +======= +function vo(e, t) { + yo(e, 0, e.children.length, t, e); +} +function yo(e, t, n, r, i) { + i ||= ko(null), i.minX = Infinity, i.minY = Infinity, i.maxX = -Infinity, i.maxY = -Infinity; + for (let a = t; a < n; a++) { + let t = e.children[a]; + bo(i, e.leaf ? r(t) : t); + } + return i; +} +function bo(e, t) { + return 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), e; +} +function xo(e, t) { + return e.minX - t.minX; +} +function So(e, t) { + return e.minY - t.minY; +} +function Co(e) { + return (e.maxX - e.minX) * (e.maxY - e.minY); +} +function wo(e) { + return e.maxX - e.minX + (e.maxY - e.minY); +} +function To(e, t) { + return (Math.max(t.maxX, e.maxX) - Math.min(t.minX, e.minX)) * (Math.max(t.maxY, e.maxY) - Math.min(t.minY, e.minY)); +} +function Eo(e, t) { + let n = Math.max(e.minX, t.minX), r = Math.max(e.minY, t.minY), i = Math.min(e.maxX, t.maxX), a = Math.min(e.maxY, t.maxY); + return Math.max(0, i - n) * Math.max(0, a - r); +} +function Do(e, t) { + return e.minX <= t.minX && e.minY <= t.minY && t.maxX <= e.maxX && t.maxY <= e.maxY; +} +function Oo(e, t) { + return t.minX <= e.maxX && t.minY <= e.maxY && t.maxX >= e.minX && t.maxY >= e.minY; +} +function ko(e) { +>>>>>>> Stashed changes return { children: e, height: 1, @@ -5262,11 +7665,21 @@ function Ls(e) { maxY: -Infinity }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Rs(e, t, n, r, i) { +======= +function Ao(e, t, n, r, i) { +>>>>>>> Stashed changes +======= +function Ao(e, t, n, r, i) { +>>>>>>> Stashed changes let a = [t, n]; for (; a.length;) { if (n = a.pop(), t = a.pop(), n - t <= r) continue; let o = t + Math.ceil((n - t) / r / 2) * r; +<<<<<<< Updated upstream +<<<<<<< Updated upstream xs(e, o, t, n, i), a.push(t, o, o, n); } } @@ -5303,56 +7716,319 @@ var Zs = class { this.type = e, this.value = t; } }, Qs = class { - constructor(e, t, ...n) { - this.type = e, this.operator = t, this.args = n; +======= +======= +>>>>>>> Stashed changes + po(e, o, t, n, i), a.push(t, o, o, n); } -}; -function $s(e) { - return { - variables: /* @__PURE__ */ new Map(), - properties: /* @__PURE__ */ new Map(), - featureId: !1, - geometryType: !1, - mCoordinate: !1, - mapState: !1, - inputVariables: e - }; } -function ec(e, t, n) { - switch (typeof e) { - case "boolean": - if (Xs(t, W)) return new Zs(W, e ? "true" : "false"); - if (!Js(t, Bs)) throw Error(`got a boolean, but expected ${qs(t)}`); - return new Zs(Bs, e); - case "number": - if (Xs(t, Hs)) return new Zs(Hs, pi(e)); - if (Xs(t, Bs)) return new Zs(Bs, !!e); - if (Xs(t, W)) return new Zs(W, e.toString()); - if (!Js(t, U)) throw Error(`got a number, but expected ${qs(t)}`); - return new Zs(U, e); - case "string": - if (Xs(t, G)) return new Zs(G, Hi(e)); - if (Xs(t, Bs)) return new Zs(Bs, !!e); - if (!Js(t, W)) throw Error(`got a string, but expected ${qs(t)}`); - return new Zs(W, e); - } - if (!Array.isArray(e)) throw Error("expression must be an array or a primitive value"); - if (e.length === 0) throw Error("empty expression"); - if (typeof e[0] == "string") return vc(e, t, n); - for (let t of e) if (typeof t != "number") throw Error("expected an array of numbers"); - if (Xs(t, Hs)) { - if (e.length !== 2) throw Error(`expected an array of two values for a size, got ${e.length}`); - return new Zs(Hs, e); - } - if (Xs(t, G)) { - if (e.length === 3) return new Zs(G, [...e, 1]); - if (e.length === 4) return new Zs(G, e); - throw Error(`expected an array of 3 or 4 values for a color, got ${e.length}`); - } - if (!Js(t, Vs)) throw Error(`got an array of numbers, but expected ${qs(t)}`); - return new Zs(Vs, e); +//#endregion +//#region node_modules/ol/color.js +var jo = [ + NaN, + NaN, + NaN, + 0 +], Mo; +function No() { + return Mo ||= y(1, 1, void 0, { + willReadFrequently: !0, + desynchronized: !0 + }), Mo; +} +var Po = /^rgba?\(\s*(\d+%?)\s+(\d+%?)\s+(\d+%?)(?:\s*\/\s*(\d+%|\d*\.\d+|[01]))?\s*\)$/i, Fo = /^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)(?:\s*,\s*(\d+%|\d*\.\d+|[01]))?\s*\)$/i, Io = /^rgba?\(\s*(\d+%)\s*,\s*(\d+%)\s*,\s*(\d+%)(?:\s*,\s*(\d+%|\d*\.\d+|[01]))?\s*\)$/i, Lo = /^#([\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i; +function Ro(e, t) { + return e.endsWith("%") ? Number(e.substring(0, e.length - 1)) / t : Number(e); +} +function zo(e) { + throw Error("failed to parse \"" + e + "\" as color"); +} +function Bo(e) { + if (e.toLowerCase().startsWith("rgb")) { + let t = e.match(Fo) || e.match(Po) || e.match(Io); + if (t) { + let e = t[4], n = 100 / 255; + return [ + St(Ro(t[1], n) + .5 | 0, 0, 255), + St(Ro(t[2], n) + .5 | 0, 0, 255), + St(Ro(t[3], n) + .5 | 0, 0, 255), + e === void 0 ? 1 : St(Ro(e, 100), 0, 1) + ]; + } + zo(e); + } + if (e.startsWith("#")) { + if (Lo.test(e)) { + let t = e.substring(1), n = t.length <= 4 ? 1 : 2, r = [ + 0, + 0, + 0, + 255 + ]; + for (let e = 0, i = t.length; e < i; e += n) { + let i = parseInt(t.substring(e, e + n), 16); + n === 1 && (i += i << 4), r[e / n] = i; + } + return r[3] /= 255, r; + } + zo(e); + } + let t = No(); + t.fillStyle = "#abcdef"; + let n = t.fillStyle; + t.fillStyle = e, t.fillStyle === n && (t.fillStyle = "#fedcba", n = t.fillStyle, t.fillStyle = e, t.fillStyle === n && zo(e)); + let r = t.fillStyle; + if (r.startsWith("#") || r.startsWith("rgba")) return Bo(r); + t.clearRect(0, 0, 1, 1), t.fillRect(0, 0, 1, 1); + let i = Array.from(t.getImageData(0, 0, 1, 1).data); + return i[3] = At(i[3] / 255, 3), i; +} +function Vo(e) { + return typeof e == "string" ? e : es(e); +} +var Ho = 1024, Uo = {}, Wo = 0; +function Go(e) { + if (e.length === 4) return e; + let t = e.slice(); + return t[3] = 1, t; +} +function Ko(e) { + return e > .0031308 ? e ** (1 / 2.4) * 269.025 - 14.025 : e * 3294.6; +} +function qo(e) { + return e > .2068965 ? e ** 3 : (e - 4 / 29) * (108 / 841); +} +function Jo(e) { + return e > 10.314724 ? ((e + 14.025) / 269.025) ** 2.4 : e / 3294.6; +} +function Yo(e) { + return e > .0088564 ? e ** (1 / 3) : e / (108 / 841) + 4 / 29; +} +function Xo(e) { + let t = Jo(e[0]), n = Jo(e[1]), r = Jo(e[2]), i = Yo(t * .222488403 + n * .716873169 + r * .06060791), a = 500 * (Yo(t * .452247074 + n * .399439023 + r * .148375274) - i), o = 200 * (i - Yo(t * .016863605 + n * .117638439 + r * .865350722)), s = 180 / Math.PI * Math.atan2(o, a); + return [ + 116 * i - 16, + Math.sqrt(a * a + o * o), + s < 0 ? s + 360 : s, + e[3] + ]; +} +function Zo(e) { + let t = (e[0] + 16) / 116, n = e[1], r = e[2] * Math.PI / 180, i = qo(t), a = qo(t + n / 500 * Math.cos(r)), o = qo(t - n / 200 * Math.sin(r)), s = Ko(a * 3.021973625 - i * 1.617392459 - o * .404875592), c = Ko(a * -.943766287 + i * 1.916279586 + o * .027607165), l = Ko(a * .069407491 - i * .22898585 + o * 1.159737864); + return [ + St(s + .5 | 0, 0, 255), + St(c + .5 | 0, 0, 255), + St(l + .5 | 0, 0, 255), + e[3] + ]; +} +function Qo(e) { + if (e === "none") return jo; + if (Uo.hasOwnProperty(e)) return Uo[e]; + if (Wo >= Ho) { + let e = 0; + for (let t in Uo) e++ & 3 || (delete Uo[t], --Wo); + } + let t = Bo(e); + t.length !== 4 && zo(e); + for (let n of t) isNaN(n) && zo(e); + return Uo[e] = t, ++Wo, t; +} +function $o(e) { + return Array.isArray(e) ? e : Qo(e); +} +function es(e) { + let t = e[0]; + t != (t | 0) && (t = t + .5 | 0); + let n = e[1]; + n != (n | 0) && (n = n + .5 | 0); + let r = e[2]; + r != (r | 0) && (r = r + .5 | 0); + let i = e[3] === void 0 ? 1 : Math.round(e[3] * 1e3) / 1e3; + return "rgba(" + t + "," + n + "," + r + "," + i + ")"; +} +//#endregion +//#region node_modules/ol/size.js +function ts(e) { + return e[0] > 0 && e[1] > 0; +} +function ns(e, t, n) { + return n === void 0 && (n = [0, 0]), n[0] = e[0] * t + .5 | 0, n[1] = e[1] * t + .5 | 0, n; +} +function rs(e, t) { + return Array.isArray(e) ? e : (t === void 0 ? t = [e, e] : (t[0] = e, t[1] = e), t); +} +//#endregion +//#region node_modules/ol/expr/expression.js +var is = 0, as = 1 << is++, V = 1 << is++, H = 1 << is++, U = 1 << is++, os = 1 << is++, ss = 1 << is++, cs = 2 ** is - 1, ls = { + [as]: "boolean", + [V]: "number", + [H]: "string", + [U]: "color", + [os]: "number[]", + [ss]: "size" +}, us = Object.keys(ls).map(Number).sort(oe); +function ds(e) { + return e in ls; +} +function fs(e) { + let t = []; + for (let n of us) ps(e, n) && t.push(ls[n]); + return t.length === 0 ? "untyped" : t.length < 3 ? t.join(" or ") : t.slice(0, -1).join(", ") + ", or " + t[t.length - 1]; +} +function ps(e, t) { + return (e & t) === t; +} +function ms(e, t) { + return !!(e & t); +} +function hs(e, t) { + return e === t; +} +var gs = class { + constructor(e, t) { + if (!ds(e)) throw Error(`literal expressions must have a specific type, got ${fs(e)}`); + this.type = e, this.value = t; + } +}, _s = class { +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes + constructor(e, t, ...n) { + this.type = e, this.operator = t, this.args = n; + } +}; +<<<<<<< Updated upstream +<<<<<<< Updated upstream +function $s(e) { +======= +function vs(e) { +>>>>>>> Stashed changes +======= +function vs(e) { +>>>>>>> Stashed changes + return { + variables: /* @__PURE__ */ new Map(), + properties: /* @__PURE__ */ new Map(), + featureId: !1, + geometryType: !1, + mCoordinate: !1, + mapState: !1, + inputVariables: e + }; +} +<<<<<<< Updated upstream +<<<<<<< Updated upstream +function ec(e, t, n) { + switch (typeof e) { + case "boolean": + if (Xs(t, W)) return new Zs(W, e ? "true" : "false"); + if (!Js(t, Bs)) throw Error(`got a boolean, but expected ${qs(t)}`); + return new Zs(Bs, e); + case "number": + if (Xs(t, Hs)) return new Zs(Hs, pi(e)); + if (Xs(t, Bs)) return new Zs(Bs, !!e); + if (Xs(t, W)) return new Zs(W, e.toString()); + if (!Js(t, U)) throw Error(`got a number, but expected ${qs(t)}`); + return new Zs(U, e); + case "string": + if (Xs(t, G)) return new Zs(G, Hi(e)); + if (Xs(t, Bs)) return new Zs(Bs, !!e); + if (!Js(t, W)) throw Error(`got a string, but expected ${qs(t)}`); + return new Zs(W, e); + } + if (!Array.isArray(e)) throw Error("expression must be an array or a primitive value"); + if (e.length === 0) throw Error("empty expression"); + if (typeof e[0] == "string") return vc(e, t, n); + for (let t of e) if (typeof t != "number") throw Error("expected an array of numbers"); + if (Xs(t, Hs)) { + if (e.length !== 2) throw Error(`expected an array of two values for a size, got ${e.length}`); + return new Zs(Hs, e); + } + if (Xs(t, G)) { + if (e.length === 3) return new Zs(G, [...e, 1]); + if (e.length === 4) return new Zs(G, e); + throw Error(`expected an array of 3 or 4 values for a color, got ${e.length}`); + } + if (!Js(t, Vs)) throw Error(`got an array of numbers, but expected ${qs(t)}`); + return new Zs(Vs, e); } var K = { +======= +function ys(e, t, n) { + switch (typeof e) { + case "boolean": + if (hs(t, H)) return new gs(H, e ? "true" : "false"); + if (!ps(t, as)) throw Error(`got a boolean, but expected ${fs(t)}`); + return new gs(as, e); + case "number": + if (hs(t, ss)) return new gs(ss, rs(e)); + if (hs(t, as)) return new gs(as, !!e); + if (hs(t, H)) return new gs(H, e.toString()); + if (!ps(t, V)) throw Error(`got a number, but expected ${fs(t)}`); + return new gs(V, e); + case "string": + if (hs(t, U)) return new gs(U, Qo(e)); + if (hs(t, as)) return new gs(as, !!e); + if (!ps(t, H)) throw Error(`got a string, but expected ${fs(t)}`); + return new gs(H, e); + } + if (!Array.isArray(e)) throw Error("expression must be an array or a primitive value"); + if (e.length === 0) throw Error("empty expression"); + if (typeof e[0] == "string") return Ls(e, t, n); + for (let t of e) if (typeof t != "number") throw Error("expected an array of numbers"); + if (hs(t, ss)) { + if (e.length !== 2) throw Error(`expected an array of two values for a size, got ${e.length}`); + return new gs(ss, e); + } + if (hs(t, U)) { + if (e.length === 3) return new gs(U, [...e, 1]); + if (e.length === 4) return new gs(U, e); + throw Error(`expected an array of 3 or 4 values for a color, got ${e.length}`); + } + if (!ps(t, os)) throw Error(`got an array of numbers, but expected ${fs(t)}`); + return new gs(os, e); +} +var W = { +>>>>>>> Stashed changes +======= +function ys(e, t, n) { + switch (typeof e) { + case "boolean": + if (hs(t, H)) return new gs(H, e ? "true" : "false"); + if (!ps(t, as)) throw Error(`got a boolean, but expected ${fs(t)}`); + return new gs(as, e); + case "number": + if (hs(t, ss)) return new gs(ss, rs(e)); + if (hs(t, as)) return new gs(as, !!e); + if (hs(t, H)) return new gs(H, e.toString()); + if (!ps(t, V)) throw Error(`got a number, but expected ${fs(t)}`); + return new gs(V, e); + case "string": + if (hs(t, U)) return new gs(U, Qo(e)); + if (hs(t, as)) return new gs(as, !!e); + if (!ps(t, H)) throw Error(`got a string, but expected ${fs(t)}`); + return new gs(H, e); + } + if (!Array.isArray(e)) throw Error("expression must be an array or a primitive value"); + if (e.length === 0) throw Error("empty expression"); + if (typeof e[0] == "string") return Ls(e, t, n); + for (let t of e) if (typeof t != "number") throw Error("expected an array of numbers"); + if (hs(t, ss)) { + if (e.length !== 2) throw Error(`expected an array of two values for a size, got ${e.length}`); + return new gs(ss, e); + } + if (hs(t, U)) { + if (e.length === 3) return new gs(U, [...e, 1]); + if (e.length === 4) return new gs(U, e); + throw Error(`expected an array of 3 or 4 values for a color, got ${e.length}`); + } + if (!ps(t, os)) throw Error(`got an array of numbers, but expected ${fs(t)}`); + return new gs(os, e); +} +var W = { +>>>>>>> Stashed changes Get: "get", Var: "var", Concat: "concat", @@ -5400,6 +8076,8 @@ var K = { Palette: "palette", ToString: "to-string", Has: "has" +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, tc = { [K.Get]: Y(q(1, Infinity), nc), [K.Var]: rc(), @@ -5450,15 +8128,133 @@ var K = { [K.ToString]: Y(q(1, 1), J(Bs | U | W | G)) }; function nc(e, t, n) { +======= +}, bs = { + [W.Get]: q(G(1, Infinity), xs), + [W.Var]: Ss(), + [W.Has]: q(G(1, Infinity), xs), + [W.Id]: q(Cs, Ds), + [W.Concat]: q(G(2, Infinity), K(H)), + [W.GeometryType]: q(ws, Ds), + [W.LineMetric]: q(Ts, Ds), + [W.Resolution]: q(Es, Ds), + [W.Zoom]: q(Es, Ds), + [W.Time]: q(Es, Ds), + [W.Any]: q(G(2, Infinity), K(as)), + [W.All]: q(G(2, Infinity), K(as)), + [W.Not]: q(G(1, 1), K(as)), + [W.Equal]: q(G(2, 2), ks()), + [W.NotEqual]: q(G(2, 2), ks()), + [W.GreaterThan]: q(G(2, 2), K(V)), + [W.GreaterThanOrEqualTo]: q(G(2, 2), K(V)), + [W.LessThan]: q(G(2, 2), K(V)), + [W.LessThanOrEqualTo]: q(G(2, 2), K(V)), + [W.Multiply]: q(G(2, Infinity), Os), + [W.Coalesce]: q(G(2, Infinity), Os), + [W.Divide]: q(G(2, 2), K(V)), + [W.Add]: q(G(2, Infinity), K(V)), + [W.Subtract]: q(G(2, 2), K(V)), + [W.Clamp]: q(G(3, 3), K(V)), + [W.Mod]: q(G(2, 2), K(V)), + [W.Pow]: q(G(2, 2), K(V)), + [W.Abs]: q(G(1, 1), K(V)), + [W.Floor]: q(G(1, 1), K(V)), + [W.Ceil]: q(G(1, 1), K(V)), + [W.Round]: q(G(1, 1), K(V)), + [W.Sin]: q(G(1, 1), K(V)), + [W.Cos]: q(G(1, 1), K(V)), + [W.Atan]: q(G(1, 2), K(V)), + [W.Sqrt]: q(G(1, 1), K(V)), + [W.Match]: q(G(4, Infinity), js, Ms), + [W.Between]: q(G(3, 3), K(V)), + [W.Interpolate]: q(G(6, Infinity), js, Ns), + [W.Case]: q(G(3, Infinity), As, Ps), + [W.In]: q(G(2, 2), Fs), + [W.Number]: q(G(1, Infinity), K(cs)), + [W.String]: q(G(1, Infinity), K(cs)), + [W.Array]: q(G(1, Infinity), K(V)), + [W.Color]: q(G(1, 4), K(V)), + [W.Band]: q(G(1, 3), K(V)), + [W.Palette]: q(G(2, 2), Is), + [W.ToString]: q(G(1, 1), K(as | V | H | U)) +}; +function xs(e, t, n) { +>>>>>>> Stashed changes +======= +}, bs = { + [W.Get]: q(G(1, Infinity), xs), + [W.Var]: Ss(), + [W.Has]: q(G(1, Infinity), xs), + [W.Id]: q(Cs, Ds), + [W.Concat]: q(G(2, Infinity), K(H)), + [W.GeometryType]: q(ws, Ds), + [W.LineMetric]: q(Ts, Ds), + [W.Resolution]: q(Es, Ds), + [W.Zoom]: q(Es, Ds), + [W.Time]: q(Es, Ds), + [W.Any]: q(G(2, Infinity), K(as)), + [W.All]: q(G(2, Infinity), K(as)), + [W.Not]: q(G(1, 1), K(as)), + [W.Equal]: q(G(2, 2), ks()), + [W.NotEqual]: q(G(2, 2), ks()), + [W.GreaterThan]: q(G(2, 2), K(V)), + [W.GreaterThanOrEqualTo]: q(G(2, 2), K(V)), + [W.LessThan]: q(G(2, 2), K(V)), + [W.LessThanOrEqualTo]: q(G(2, 2), K(V)), + [W.Multiply]: q(G(2, Infinity), Os), + [W.Coalesce]: q(G(2, Infinity), Os), + [W.Divide]: q(G(2, 2), K(V)), + [W.Add]: q(G(2, Infinity), K(V)), + [W.Subtract]: q(G(2, 2), K(V)), + [W.Clamp]: q(G(3, 3), K(V)), + [W.Mod]: q(G(2, 2), K(V)), + [W.Pow]: q(G(2, 2), K(V)), + [W.Abs]: q(G(1, 1), K(V)), + [W.Floor]: q(G(1, 1), K(V)), + [W.Ceil]: q(G(1, 1), K(V)), + [W.Round]: q(G(1, 1), K(V)), + [W.Sin]: q(G(1, 1), K(V)), + [W.Cos]: q(G(1, 1), K(V)), + [W.Atan]: q(G(1, 2), K(V)), + [W.Sqrt]: q(G(1, 1), K(V)), + [W.Match]: q(G(4, Infinity), js, Ms), + [W.Between]: q(G(3, 3), K(V)), + [W.Interpolate]: q(G(6, Infinity), js, Ns), + [W.Case]: q(G(3, Infinity), As, Ps), + [W.In]: q(G(2, 2), Fs), + [W.Number]: q(G(1, Infinity), K(cs)), + [W.String]: q(G(1, Infinity), K(cs)), + [W.Array]: q(G(1, Infinity), K(V)), + [W.Color]: q(G(1, 4), K(V)), + [W.Band]: q(G(1, 3), K(V)), + [W.Palette]: q(G(2, 2), Is), + [W.ToString]: q(G(1, 1), K(as | V | H | U)) +}; +function xs(e, t, n) { +>>>>>>> Stashed changes let r = e.length - 1, i = Array(r); for (let a = 0; a < r; ++a) { let r = e[a + 1]; switch (typeof r) { case "number": +<<<<<<< Updated upstream +<<<<<<< Updated upstream i[a] = new Zs(U, r); break; case "string": i[a] = new Zs(W, r); +======= + i[a] = new gs(V, r); + break; + case "string": + i[a] = new gs(H, r); +>>>>>>> Stashed changes +======= + i[a] = new gs(V, r); + break; + case "string": + i[a] = new gs(H, r); +>>>>>>> Stashed changes break; default: throw Error(`expected a string key or numeric array index for a get operation, got ${r}`); } @@ -5466,12 +8262,22 @@ function nc(e, t, n) { } return i; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function rc() { +======= +function Ss() { +>>>>>>> Stashed changes +======= +function Ss() { +>>>>>>> Stashed changes return function(e, t, n) { let r = e[1]; if (typeof r != "string") throw Error("expected a string argument for var operation"); let i = t, a = n.inputVariables?.[r]; if (a !== void 0) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let e = ec(a, Us, n); if (!(e instanceof Zs)) throw Error(`style variables should only be literal values (no expressions!), variable name: ${r}`); let o = e.type; @@ -5497,11 +8303,73 @@ function sc(e, t, n) { n.mapState = !0; } function cc(e, t, n) { +======= + let e = ys(a, cs, n); + if (!(e instanceof gs)) throw Error(`style variables should only be literal values (no expressions!), variable name: ${r}`); + let o = e.type; + if (typeof a == "string" && ms(i, U) && !ms(i, H) ? o = U : Array.isArray(a) && a.length === 2 && ms(i, ss) && !ms(i, os) && (o = ss), i &= o, i === 0) throw Error(`the type expected from the var operator (${fs(t)}) did not have any overlap with the type of the corresponding style variables (${fs(o)}), variable name: ${r}`); + } + if (n.variables.has(r)) { + let e = n.variables.get(r); + if (i &= e, i === 0) throw Error(`a new type expected from the var operator (${fs(t)}) did not have any overlap with the previous type expected for it (${fs(e)}), variable name: ${r}`); + } + return n.variables.set(r, i), new _s(i, "var", new gs(H, r)); + }; +} +function Cs(e, t, n) { + n.featureId = !0; +} +function ws(e, t, n) { + n.geometryType = !0; +} +function Ts(e, t, n) { + n.mCoordinate = !0; +} +function Es(e, t, n) { + n.mapState = !0; +} +function Ds(e, t, n) { +>>>>>>> Stashed changes +======= + let e = ys(a, cs, n); + if (!(e instanceof gs)) throw Error(`style variables should only be literal values (no expressions!), variable name: ${r}`); + let o = e.type; + if (typeof a == "string" && ms(i, U) && !ms(i, H) ? o = U : Array.isArray(a) && a.length === 2 && ms(i, ss) && !ms(i, os) && (o = ss), i &= o, i === 0) throw Error(`the type expected from the var operator (${fs(t)}) did not have any overlap with the type of the corresponding style variables (${fs(o)}), variable name: ${r}`); + } + if (n.variables.has(r)) { + let e = n.variables.get(r); + if (i &= e, i === 0) throw Error(`a new type expected from the var operator (${fs(t)}) did not have any overlap with the previous type expected for it (${fs(e)}), variable name: ${r}`); + } + return n.variables.set(r, i), new _s(i, "var", new gs(H, r)); + }; +} +function Cs(e, t, n) { + n.featureId = !0; +} +function ws(e, t, n) { + n.geometryType = !0; +} +function Ts(e, t, n) { + n.mCoordinate = !0; +} +function Es(e, t, n) { + n.mapState = !0; +} +function Ds(e, t, n) { +>>>>>>> Stashed changes let r = e[0]; if (e.length !== 1) throw Error(`expected no arguments for ${r} operation`); return []; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function q(e, t) { +======= +function G(e, t) { +>>>>>>> Stashed changes +======= +function G(e, t) { +>>>>>>> Stashed changes return function(n, r, i) { let a = n[0], o = n.length - 1; if (e === t) { @@ -5512,39 +8380,95 @@ function q(e, t) { } }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function lc(e, t, n) { let r = e.length - 1, i = Array(r); for (let a = 0; a < r; ++a) { let r = ec(e[a + 1], t, n); +======= +function Os(e, t, n) { + let r = e.length - 1, i = Array(r); + for (let a = 0; a < r; ++a) { + let r = ys(e[a + 1], t, n); +>>>>>>> Stashed changes +======= +function Os(e, t, n) { + let r = e.length - 1, i = Array(r); + for (let a = 0; a < r; ++a) { + let r = ys(e[a + 1], t, n); +>>>>>>> Stashed changes i[a] = r; } return i; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function J(e) { return function(t, n, r) { let i = t.length - 1, a = Array(i); for (let n = 0; n < i; ++n) { let i = ec(t[n + 1], e, r); +======= +function K(e) { + return function(t, n, r) { + let i = t.length - 1, a = Array(i); + for (let n = 0; n < i; ++n) { + let i = ys(t[n + 1], e, r); +>>>>>>> Stashed changes +======= +function K(e) { + return function(t, n, r) { + let i = t.length - 1, a = Array(i); + for (let n = 0; n < i; ++n) { + let i = ys(t[n + 1], e, r); +>>>>>>> Stashed changes a[n] = i; } return a; }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function uc() { return function(e, t, n) { let r = e[0], i = e.length - 1, a = Array(i), o = Us; for (let t = 0; t < i; ++t) { let r = ec(e[t + 1], o, n); +======= +function ks() { + return function(e, t, n) { + let r = e[0], i = e.length - 1, a = Array(i), o = cs; + for (let t = 0; t < i; ++t) { + let r = ys(e[t + 1], o, n); +>>>>>>> Stashed changes +======= +function ks() { + return function(e, t, n) { + let r = e[0], i = e.length - 1, a = Array(i), o = cs; + for (let t = 0; t < i; ++t) { + let r = ys(e[t + 1], o, n); +>>>>>>> Stashed changes o &= r.type; } if (o === 0) throw Error(`no common type was found among the arguments of ${r}`); for (let t = 0; t < i; ++t) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let r = ec(e[t + 1], o, n); +======= + let r = ys(e[t + 1], o, n); +>>>>>>> Stashed changes +======= + let r = ys(e[t + 1], o, n); +>>>>>>> Stashed changes a[t] = r; } return a; }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function dc(e, t, n) { let r = e[0], i = e.length - 1; if (i % 2 == 0) throw Error(`expected an odd number of arguments for ${r}, got ${i} instead`); @@ -5558,6 +8482,36 @@ function pc(e, t, n) { for (let t = 0; t < r - 2; t += 2) { try { let r = ec(e[t + 2], a, n); +======= +function As(e, t, n) { + let r = e[0], i = e.length - 1; + if (i % 2 == 0) throw Error(`expected an odd number of arguments for ${r}, got ${i} instead`); +} +function js(e, t, n) { + let r = e[0], i = e.length - 1; + if (i % 2 == 1) throw Error(`expected an even number of arguments for operation ${r}, got ${i} instead`); +} +function Ms(e, t, n) { + let r = e.length - 1, i = ys(e[e.length - 1], t, n), a = H | V | as, o = Array(r - 2); + for (let t = 0; t < r - 2; t += 2) { + try { + let r = ys(e[t + 2], a, n); +>>>>>>> Stashed changes +======= +function As(e, t, n) { + let r = e[0], i = e.length - 1; + if (i % 2 == 0) throw Error(`expected an odd number of arguments for ${r}, got ${i} instead`); +} +function js(e, t, n) { + let r = e[0], i = e.length - 1; + if (i % 2 == 1) throw Error(`expected an even number of arguments for operation ${r}, got ${i} instead`); +} +function Ms(e, t, n) { + let r = e.length - 1, i = ys(e[e.length - 1], t, n), a = H | V | as, o = Array(r - 2); + for (let t = 0; t < r - 2; t += 2) { + try { + let r = ys(e[t + 2], a, n); +>>>>>>> Stashed changes a &= r.type; } catch (e) { throw Error(`failed to parse argument ${t + 1} of match expression: ${e.message}`); @@ -5566,25 +8520,57 @@ function pc(e, t, n) { } for (let t = 0; t < r - 2; t += 2) { try { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let r = ec(e[t + 2], a, n); +======= + let r = ys(e[t + 2], a, n); +>>>>>>> Stashed changes +======= + let r = ys(e[t + 2], a, n); +>>>>>>> Stashed changes o[t] = r; } catch (e) { throw Error(`failed to parse argument ${t + 1} of match expression: ${e.message}`); } try { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let r = ec(e[t + 3], i.type, n); +======= + let r = ys(e[t + 3], i.type, n); +>>>>>>> Stashed changes +======= + let r = ys(e[t + 3], i.type, n); +>>>>>>> Stashed changes o[t + 1] = r; } catch (e) { throw Error(`failed to parse argument ${t + 2} of match expression: ${e.message}`); } } return [ +<<<<<<< Updated upstream +<<<<<<< Updated upstream ec(e[1], a, n), +======= + ys(e[1], a, n), +>>>>>>> Stashed changes +======= + ys(e[1], a, n), +>>>>>>> Stashed changes ...o, i ]; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function mc(e, t, n) { +======= +function Ns(e, t, n) { +>>>>>>> Stashed changes +======= +function Ns(e, t, n) { +>>>>>>> Stashed changes let r = e[1], i; switch (r[0]) { case "linear": @@ -5597,22 +8583,50 @@ function mc(e, t, n) { break; default: throw Error(`invalid interpolation type: ${JSON.stringify(r)}`); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream let a = new Zs(U, i), o; try { o = ec(e[2], U, n); +======= + let a = new gs(V, i), o; + try { + o = ys(e[2], V, n); +>>>>>>> Stashed changes +======= + let a = new gs(V, i), o; + try { + o = ys(e[2], V, n); +>>>>>>> Stashed changes } catch (e) { throw Error(`failed to parse argument 1 in interpolate expression: ${e.message}`); } let s = Array(e.length - 3); for (let r = 0; r < s.length; r += 2) { try { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let t = ec(e[r + 3], U, n); +======= + let t = ys(e[r + 3], V, n); +>>>>>>> Stashed changes +======= + let t = ys(e[r + 3], V, n); +>>>>>>> Stashed changes s[r] = t; } catch (e) { throw Error(`failed to parse argument ${r + 2} for interpolate expression: ${e.message}`); } try { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let i = ec(e[r + 4], t, n); +======= + let i = ys(e[r + 4], t, n); +>>>>>>> Stashed changes +======= + let i = ys(e[r + 4], t, n); +>>>>>>> Stashed changes s[r + 1] = i; } catch (e) { throw Error(`failed to parse argument ${r + 3} for interpolate expression: ${e.message}`); @@ -5624,17 +8638,41 @@ function mc(e, t, n) { ...s ]; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function hc(e, t, n) { let r = ec(e[e.length - 1], t, n), i = Array(e.length - 1); for (let t = 0; t < i.length - 1; t += 2) { try { let r = ec(e[t + 1], Bs, n); +======= +function Ps(e, t, n) { + let r = ys(e[e.length - 1], t, n), i = Array(e.length - 1); + for (let t = 0; t < i.length - 1; t += 2) { + try { + let r = ys(e[t + 1], as, n); +>>>>>>> Stashed changes +======= +function Ps(e, t, n) { + let r = ys(e[e.length - 1], t, n), i = Array(e.length - 1); + for (let t = 0; t < i.length - 1; t += 2) { + try { + let r = ys(e[t + 1], as, n); +>>>>>>> Stashed changes i[t] = r; } catch (e) { throw Error(`failed to parse argument ${t} of case expression: ${e.message}`); } try { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let a = ec(e[t + 2], r.type, n); +======= + let a = ys(e[t + 2], r.type, n); +>>>>>>> Stashed changes +======= + let a = ys(e[t + 2], r.type, n); +>>>>>>> Stashed changes i[t + 1] = a; } catch (e) { throw Error(`failed to parse argument ${t + 1} of case expression: ${e.message}`); @@ -5642,27 +8680,67 @@ function hc(e, t, n) { } return i[i.length - 1] = r, i; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function gc(e, t, n) { +======= +function Fs(e, t, n) { +>>>>>>> Stashed changes +======= +function Fs(e, t, n) { +>>>>>>> Stashed changes let r = e[2]; if (!Array.isArray(r)) throw Error("the second argument for the \"in\" operator must be an array"); let i; if (r[0] === "literal") { if (r = r[1], !Array.isArray(r)) throw Error("failed to parse \"in\" expression: the literal operator must be followed by an array"); } else if (typeof r[0] == "string") throw Error("for the \"in\" operator, a string array should be wrapped in a \"literal\" operator to disambiguate from expressions"); +<<<<<<< Updated upstream +<<<<<<< Updated upstream i = typeof r[0] == "string" ? W : U; let a = Array(r.length); for (let e = 0; e < a.length; e++) try { let t = ec(r[e], i, n); +======= + i = typeof r[0] == "string" ? H : V; + let a = Array(r.length); + for (let e = 0; e < a.length; e++) try { + let t = ys(r[e], i, n); +>>>>>>> Stashed changes +======= + i = typeof r[0] == "string" ? H : V; + let a = Array(r.length); + for (let e = 0; e < a.length; e++) try { + let t = ys(r[e], i, n); +>>>>>>> Stashed changes a[e] = t; } catch (t) { throw Error(`failed to parse haystack item ${e} for "in" expression: ${t.message}`); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream return [ec(e[1], i, n), ...a]; } function _c(e, t, n) { let r; try { r = ec(e[1], U, n); +======= + return [ys(e[1], i, n), ...a]; +} +function Is(e, t, n) { + let r; + try { + r = ys(e[1], V, n); +>>>>>>> Stashed changes +======= + return [ys(e[1], i, n), ...a]; +} +function Is(e, t, n) { + let r; + try { + r = ys(e[1], V, n); +>>>>>>> Stashed changes } catch (e) { throw Error(`failed to parse first argument in palette expression: ${e.message}`); } @@ -5672,16 +8750,40 @@ function _c(e, t, n) { for (let e = 0; e < a.length; e++) { let t; try { +<<<<<<< Updated upstream +<<<<<<< Updated upstream t = ec(i[e], G, n); } catch (t) { throw Error(`failed to parse color at index ${e} in palette expression: ${t.message}`); } if (!(t instanceof Zs)) throw Error(`the palette color at index ${e} must be a literal value`); - a[e] = t; - } - return [r, ...a]; -} -function Y(...e) { +======= + t = ys(i[e], U, n); + } catch (t) { + throw Error(`failed to parse color at index ${e} in palette expression: ${t.message}`); + } + if (!(t instanceof gs)) throw Error(`the palette color at index ${e} must be a literal value`); +>>>>>>> Stashed changes +======= + t = ys(i[e], U, n); + } catch (t) { + throw Error(`failed to parse color at index ${e} in palette expression: ${t.message}`); + } + if (!(t instanceof gs)) throw Error(`the palette color at index ${e} must be a literal value`); +>>>>>>> Stashed changes + a[e] = t; + } + return [r, ...a]; +} +<<<<<<< Updated upstream +<<<<<<< Updated upstream +function Y(...e) { +======= +function q(...e) { +>>>>>>> Stashed changes +======= +function q(...e) { +>>>>>>> Stashed changes return function(t, n, r) { let i = t[0], a; for (let i = 0; i < e.length; i++) { @@ -5691,6 +8793,8 @@ function Y(...e) { a = o; } } +<<<<<<< Updated upstream +<<<<<<< Updated upstream return new Qs(n, i, ...a); }; } @@ -5700,6 +8804,28 @@ function vc(e, t, n) { return i(e, t, n); } function yc(e) { +======= + return new _s(n, i, ...a); + }; +} +function Ls(e, t, n) { + let r = e[0], i = bs[r]; + if (!i) throw Error(`unknown operator: ${r}`); + return i(e, t, n); +} +function Rs(e) { +>>>>>>> Stashed changes +======= + return new _s(n, i, ...a); + }; +} +function Ls(e, t, n) { + let r = e[0], i = bs[r]; + if (!i) throw Error(`unknown operator: ${r}`); + return i(e, t, n); +} +function Rs(e) { +>>>>>>> Stashed changes if (!e) return ""; let t = e.getType(); switch (t) { @@ -5710,13 +8836,29 @@ function yc(e) { case "MultiLineString": case "MultiPolygon": return t.substring(5); case "Circle": return "Polygon"; +<<<<<<< Updated upstream +<<<<<<< Updated upstream case "GeometryCollection": return yc(e.getGeometries()[0]); +======= + case "GeometryCollection": return Rs(e.getGeometries()[0]); +>>>>>>> Stashed changes +======= + case "GeometryCollection": return Rs(e.getGeometries()[0]); +>>>>>>> Stashed changes default: return ""; } } //#endregion //#region node_modules/ol/expr/cpu.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function bc() { +======= +function zs() { +>>>>>>> Stashed changes +======= +function zs() { +>>>>>>> Stashed changes return { variables: {}, properties: {}, @@ -5725,6 +8867,8 @@ function bc() { geometryType: "" }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function xc(e, t, n) { return Sc(ec(e, t, n), n); } @@ -5732,6 +8876,23 @@ function Sc(e, t) { if (e instanceof Zs) { if (e.type === G && typeof e.value == "string") { let t = Hi(e.value); +======= +function Bs(e, t, n) { + return Vs(ys(e, t, n), n); +} +======= +function Bs(e, t, n) { + return Vs(ys(e, t, n), n); +} +>>>>>>> Stashed changes +function Vs(e, t) { + if (e instanceof gs) { + if (e.type === U && typeof e.value == "string") { + let t = Qo(e.value); +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes return function() { return t; }; @@ -5742,6 +8903,8 @@ function Sc(e, t) { } let n = e.operator; switch (n) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream case K.Number: case K.String: case K.Coalesce: return Cc(e, t); @@ -5793,14 +8956,130 @@ function Cc(e, t) { for (let n = 0; n < r; ++n) i[n] = Sc(e.args[n], t); switch (n) { case K.Coalesce: return (e) => { +======= + case W.Number: + case W.String: + case W.Coalesce: return Hs(e, t); + case W.Get: + case W.Var: + case W.Has: return Us(e, t); + case W.Id: return (e) => e.featureId; + case W.GeometryType: return (e) => e.geometryType; + case W.Concat: { + let n = e.args.map((e) => Vs(e, t)); + return (e) => "".concat(...n.map((t) => t(e).toString())); + } + case W.Resolution: return (e) => e.resolution; + case W.Any: + case W.All: + case W.Between: + case W.In: + case W.Not: return Gs(e, t); + case W.Equal: + case W.NotEqual: + case W.LessThan: + case W.LessThanOrEqualTo: + case W.GreaterThan: + case W.GreaterThanOrEqualTo: return Ws(e, t); + case W.Multiply: + case W.Divide: + case W.Add: + case W.Subtract: + case W.Clamp: + case W.Mod: + case W.Pow: + case W.Abs: + case W.Floor: + case W.Ceil: + case W.Round: + case W.Sin: + case W.Cos: + case W.Atan: + case W.Sqrt: return Ks(e, t); + case W.Case: return qs(e, t); + case W.Match: return Js(e, t); + case W.Interpolate: return Ys(e, t); + case W.ToString: return Xs(e, t); + default: throw Error(`Unsupported operator ${n}`); + } +} +function Hs(e, t) { + let n = e.operator, r = e.args.length, i = Array(r); + for (let n = 0; n < r; ++n) i[n] = Vs(e.args[n], t); + switch (n) { + case W.Coalesce: return (e) => { +>>>>>>> Stashed changes +======= + case W.Number: + case W.String: + case W.Coalesce: return Hs(e, t); + case W.Get: + case W.Var: + case W.Has: return Us(e, t); + case W.Id: return (e) => e.featureId; + case W.GeometryType: return (e) => e.geometryType; + case W.Concat: { + let n = e.args.map((e) => Vs(e, t)); + return (e) => "".concat(...n.map((t) => t(e).toString())); + } + case W.Resolution: return (e) => e.resolution; + case W.Any: + case W.All: + case W.Between: + case W.In: + case W.Not: return Gs(e, t); + case W.Equal: + case W.NotEqual: + case W.LessThan: + case W.LessThanOrEqualTo: + case W.GreaterThan: + case W.GreaterThanOrEqualTo: return Ws(e, t); + case W.Multiply: + case W.Divide: + case W.Add: + case W.Subtract: + case W.Clamp: + case W.Mod: + case W.Pow: + case W.Abs: + case W.Floor: + case W.Ceil: + case W.Round: + case W.Sin: + case W.Cos: + case W.Atan: + case W.Sqrt: return Ks(e, t); + case W.Case: return qs(e, t); + case W.Match: return Js(e, t); + case W.Interpolate: return Ys(e, t); + case W.ToString: return Xs(e, t); + default: throw Error(`Unsupported operator ${n}`); + } +} +function Hs(e, t) { + let n = e.operator, r = e.args.length, i = Array(r); + for (let n = 0; n < r; ++n) i[n] = Vs(e.args[n], t); + switch (n) { + case W.Coalesce: return (e) => { +>>>>>>> Stashed changes for (let t = 0; t < r; ++t) { let n = i[t](e); if (n != null) return n; } throw Error("Expected one of the values to be non-null"); }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream case K.Number: case K.String: return (e) => { +======= + case W.Number: + case W.String: return (e) => { +>>>>>>> Stashed changes +======= + case W.Number: + case W.String: return (e) => { +>>>>>>> Stashed changes for (let t = 0; t < r; ++t) { let r = i[t](e); if (typeof r === n) return r; @@ -5810,10 +9089,24 @@ function Cc(e, t) { default: throw Error(`Unsupported assertion operator ${n}`); } } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function wc(e, t) { let n = e.args[0].value; switch (e.operator) { case K.Get: return (t) => { +======= +function Us(e, t) { + let n = e.args[0].value; + switch (e.operator) { + case W.Get: return (t) => { +>>>>>>> Stashed changes +======= +function Us(e, t) { + let n = e.args[0].value; + switch (e.operator) { + case W.Get: return (t) => { +>>>>>>> Stashed changes let r = e.args, i = t.properties[n]; for (let e = 1, t = r.length; e < t; ++e) { let t = r[e].value; @@ -5821,8 +9114,18 @@ function wc(e, t) { } return i; }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream case K.Var: return (e) => e.variables[n]; case K.Has: return (t) => { +======= + case W.Var: return (e) => e.variables[n]; + case W.Has: return (t) => { +>>>>>>> Stashed changes +======= + case W.Var: return (e) => e.variables[n]; + case W.Has: return (t) => { +>>>>>>> Stashed changes let r = e.args; if (!(n in t.properties)) return !1; let i = t.properties[n]; @@ -5836,6 +9139,8 @@ function wc(e, t) { default: throw Error(`Unsupported accessor operator ${e.operator}`); } } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Tc(e, t) { let n = e.operator, r = Sc(e.args[0], t), i = Sc(e.args[1], t); switch (n) { @@ -5871,30 +9176,132 @@ function Ec(e, t) { }; case K.Not: return (e) => !i[0](e); default: throw Error(`Unsupported logical operator ${n}`); +======= +function Ws(e, t) { + let n = e.operator, r = Vs(e.args[0], t), i = Vs(e.args[1], t); + switch (n) { +======= +function Ws(e, t) { + let n = e.operator, r = Vs(e.args[0], t), i = Vs(e.args[1], t); + switch (n) { +>>>>>>> Stashed changes + case W.Equal: return (e) => r(e) === i(e); + case W.NotEqual: return (e) => r(e) !== i(e); + case W.LessThan: return (e) => r(e) < i(e); + case W.LessThanOrEqualTo: return (e) => r(e) <= i(e); + case W.GreaterThan: return (e) => r(e) > i(e); + case W.GreaterThanOrEqualTo: return (e) => r(e) >= i(e); + default: throw Error(`Unsupported comparison operator ${n}`); +<<<<<<< Updated upstream +>>>>>>> Stashed changes } } function Dc(e, t) { let n = e.operator, r = e.args.length, i = Array(r); +<<<<<<< Updated upstream for (let n = 0; n < r; ++n) i[n] = Sc(e.args[n], t); switch (n) { case K.Multiply: return (e) => { +======= + for (let n = 0; n < r; ++n) i[n] = Vs(e.args[n], t); + switch (n) { + case W.Any: return (e) => { + for (let t = 0; t < r; ++t) if (i[t](e)) return !0; + return !1; + }; + case W.All: return (e) => { + for (let t = 0; t < r; ++t) if (!i[t](e)) return !1; + return !0; + }; + case W.Between: return (e) => { + let t = i[0](e), n = i[1](e), r = i[2](e); + return t >= n && t <= r; + }; + case W.In: return (e) => { + let t = i[0](e); + for (let n = 1; n < r; ++n) if (t === i[n](e)) return !0; + return !1; + }; + case W.Not: return (e) => !i[0](e); + default: throw Error(`Unsupported logical operator ${n}`); +======= +>>>>>>> Stashed changes + } +} +function Ks(e, t) { + let n = e.operator, r = e.args.length, i = Array(r); + for (let n = 0; n < r; ++n) i[n] = Vs(e.args[n], t); + switch (n) { +<<<<<<< Updated upstream + case W.Multiply: return (e) => { +>>>>>>> Stashed changes +======= + case W.Any: return (e) => { + for (let t = 0; t < r; ++t) if (i[t](e)) return !0; + return !1; + }; + case W.All: return (e) => { + for (let t = 0; t < r; ++t) if (!i[t](e)) return !1; + return !0; + }; + case W.Between: return (e) => { + let t = i[0](e), n = i[1](e), r = i[2](e); + return t >= n && t <= r; + }; + case W.In: return (e) => { + let t = i[0](e); + for (let n = 1; n < r; ++n) if (t === i[n](e)) return !0; + return !1; + }; + case W.Not: return (e) => !i[0](e); + default: throw Error(`Unsupported logical operator ${n}`); + } +} +function Ks(e, t) { + let n = e.operator, r = e.args.length, i = Array(r); + for (let n = 0; n < r; ++n) i[n] = Vs(e.args[n], t); + switch (n) { + case W.Multiply: return (e) => { +>>>>>>> Stashed changes let t = 1; for (let n = 0; n < r; ++n) t *= i[n](e); return t; }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream case K.Divide: return (e) => i[0](e) / i[1](e); case K.Add: return (e) => { +======= + case W.Divide: return (e) => i[0](e) / i[1](e); + case W.Add: return (e) => { +>>>>>>> Stashed changes +======= + case W.Divide: return (e) => i[0](e) / i[1](e); + case W.Add: return (e) => { +>>>>>>> Stashed changes let t = 0; for (let n = 0; n < r; ++n) t += i[n](e); return t; }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream case K.Subtract: return (e) => i[0](e) - i[1](e); case K.Clamp: return (e) => { +======= + case W.Subtract: return (e) => i[0](e) - i[1](e); + case W.Clamp: return (e) => { +>>>>>>> Stashed changes +======= + case W.Subtract: return (e) => i[0](e) - i[1](e); + case W.Clamp: return (e) => { +>>>>>>> Stashed changes let t = i[0](e), n = i[1](e); if (t < n) return n; let r = i[2](e); return t > r ? r : t; }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream case K.Mod: return (e) => i[0](e) % i[1](e); case K.Pow: return (e) => i[0](e) ** +i[1](e); case K.Abs: return (e) => Math.abs(i[0](e)); @@ -5911,33 +9318,103 @@ function Dc(e, t) { function Oc(e, t) { let n = e.args.length, r = Array(n); for (let i = 0; i < n; ++i) r[i] = Sc(e.args[i], t); +======= + case W.Mod: return (e) => i[0](e) % i[1](e); + case W.Pow: return (e) => i[0](e) ** +i[1](e); + case W.Abs: return (e) => Math.abs(i[0](e)); + case W.Floor: return (e) => Math.floor(i[0](e)); + case W.Ceil: return (e) => Math.ceil(i[0](e)); + case W.Round: return (e) => Math.round(i[0](e)); + case W.Sin: return (e) => Math.sin(i[0](e)); + case W.Cos: return (e) => Math.cos(i[0](e)); + case W.Atan: return r === 2 ? (e) => Math.atan2(i[0](e), i[1](e)) : (e) => Math.atan(i[0](e)); + case W.Sqrt: return (e) => Math.sqrt(i[0](e)); + default: throw Error(`Unsupported numeric operator ${n}`); + } +} +function qs(e, t) { + let n = e.args.length, r = Array(n); + for (let i = 0; i < n; ++i) r[i] = Vs(e.args[i], t); +>>>>>>> Stashed changes +======= + case W.Mod: return (e) => i[0](e) % i[1](e); + case W.Pow: return (e) => i[0](e) ** +i[1](e); + case W.Abs: return (e) => Math.abs(i[0](e)); + case W.Floor: return (e) => Math.floor(i[0](e)); + case W.Ceil: return (e) => Math.ceil(i[0](e)); + case W.Round: return (e) => Math.round(i[0](e)); + case W.Sin: return (e) => Math.sin(i[0](e)); + case W.Cos: return (e) => Math.cos(i[0](e)); + case W.Atan: return r === 2 ? (e) => Math.atan2(i[0](e), i[1](e)) : (e) => Math.atan(i[0](e)); + case W.Sqrt: return (e) => Math.sqrt(i[0](e)); + default: throw Error(`Unsupported numeric operator ${n}`); + } +} +function qs(e, t) { + let n = e.args.length, r = Array(n); + for (let i = 0; i < n; ++i) r[i] = Vs(e.args[i], t); +>>>>>>> Stashed changes return (e) => { for (let t = 0; t < n - 1; t += 2) if (r[t](e)) return r[t + 1](e); return r[n - 1](e); }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function kc(e, t) { let n = e.args.length, r = Array(n); for (let i = 0; i < n; ++i) r[i] = Sc(e.args[i], t); +======= +function Js(e, t) { + let n = e.args.length, r = Array(n); + for (let i = 0; i < n; ++i) r[i] = Vs(e.args[i], t); +>>>>>>> Stashed changes +======= +function Js(e, t) { + let n = e.args.length, r = Array(n); + for (let i = 0; i < n; ++i) r[i] = Vs(e.args[i], t); +>>>>>>> Stashed changes return (e) => { let t = r[0](e); for (let i = 1; i < n - 1; i += 2) if (t === r[i](e)) return r[i + 1](e); return r[n - 1](e); }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Ac(e, t) { let n = e.args.length, r = Array(n); for (let i = 0; i < n; ++i) r[i] = Sc(e.args[i], t); +======= +function Ys(e, t) { + let n = e.args.length, r = Array(n); + for (let i = 0; i < n; ++i) r[i] = Vs(e.args[i], t); +>>>>>>> Stashed changes +======= +function Ys(e, t) { + let n = e.args.length, r = Array(n); + for (let i = 0; i < n; ++i) r[i] = Vs(e.args[i], t); +>>>>>>> Stashed changes return (e) => { let t = r[0](e), i = r[1](e), a, o; for (let s = 2; s < n; s += 2) { let n = r[s](e), c = r[s + 1](e), l = Array.isArray(c); +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (l && (c = Fi(c)), n >= i) return s === 2 ? c : l ? Nc(t, i, a, o, n, c) : Mc(t, i, a, o, n, c); +======= + if (l && (c = Go(c)), n >= i) return s === 2 ? c : l ? Qs(t, i, a, o, n, c) : Zs(t, i, a, o, n, c); +>>>>>>> Stashed changes +======= + if (l && (c = Go(c)), n >= i) return s === 2 ? c : l ? Qs(t, i, a, o, n, c) : Zs(t, i, a, o, n, c); +>>>>>>> Stashed changes a = n, o = c; } return o; }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function jc(e, t) { let n = e.operator, r = e.args.length, i = Array(r); for (let n = 0; n < r; ++n) i[n] = Sc(e.args[n], t); @@ -5945,16 +9422,44 @@ function jc(e, t) { case K.ToString: return (t) => { let n = i[0](t); return e.args[0].type === G ? Wi(n) : n.toString(); +======= +function Xs(e, t) { + let n = e.operator, r = e.args.length, i = Array(r); + for (let n = 0; n < r; ++n) i[n] = Vs(e.args[n], t); + switch (n) { + case W.ToString: return (t) => { + let n = i[0](t); + return e.args[0].type === U ? es(n) : n.toString(); +>>>>>>> Stashed changes +======= +function Xs(e, t) { + let n = e.operator, r = e.args.length, i = Array(r); + for (let n = 0; n < r; ++n) i[n] = Vs(e.args[n], t); + switch (n) { + case W.ToString: return (t) => { + let n = i[0](t); + return e.args[0].type === U ? es(n) : n.toString(); +>>>>>>> Stashed changes }; default: throw Error(`Unsupported convert operator ${n}`); } } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Mc(e, t, n, r, i, a) { +======= +function Zs(e, t, n, r, i, a) { +>>>>>>> Stashed changes +======= +function Zs(e, t, n, r, i, a) { +>>>>>>> Stashed changes let o = i - n; if (o === 0) return r; let s = t - n; return r + (e === 1 ? s / o : (e ** +s - 1) / (e ** +o - 1)) * (a - r); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Nc(e, t, n, r, i, a) { if (i - n === 0) return r; let o = Bi(r), s = Bi(a), c = s[2] - o[2]; @@ -5968,6 +9473,68 @@ function Nc(e, t, n, r, i, a) { //#endregion //#region node_modules/ol/style/IconImageCache.js var Pc = class { +======= +function Qs(e, t, n, r, i, a) { + if (i - n === 0) return r; +======= +function Qs(e, t, n, r, i, a) { + if (i - n === 0) return r; +>>>>>>> Stashed changes + let o = Xo(r), s = Xo(a), c = s[2] - o[2]; + return c > 180 ? c -= 360 : c < -180 && (c += 360), Zo([ + Zs(e, t, n, o[0], i, s[0]), + Zs(e, t, n, o[1], i, s[1]), + o[2] + Zs(e, t, n, 0, i, c), + Zs(e, t, n, r[3], i, a[3]) + ]); +} +//#endregion +//#region node_modules/ol/ImageState.js +var J = { + IDLE: 0, + LOADING: 1, + LOADED: 2, + ERROR: 3, + EMPTY: 4 +}; +//#endregion +//#region node_modules/ol/Image.js +function $s(e, t, n) { + let r = e, i = !0, a = !1, o = !1, s = [ne(r, M.LOAD, function() { + o = !0, a || t(); + })]; + return r.src && _ ? (a = !0, r.decode().then(function() { + i && t(); + }).catch(function(e) { + i && (o ? t() : n()); + })) : s.push(ne(r, M.ERROR, n)), function() { + i = !1, s.forEach(j); + }; +} +function ec(e, t) { + return new Promise((n, r) => { + function i() { + o(), n(e); + } + function a() { + o(), r(/* @__PURE__ */ Error("Image load error")); + } + function o() { + e.removeEventListener("load", i), e.removeEventListener("error", a); + } + e.addEventListener("load", i), e.addEventListener("error", a), t && (e.src = t); + }); +} +function tc(e, t) { + return t && (e.src = t), e.src && _ ? new Promise((t, n) => e.decode().then(() => t(e)).catch((r) => e.complete && e.width ? t(e) : n(r))) : ec(e); +} +//#endregion +//#region node_modules/ol/style/IconImageCache.js +var nc = class { +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes constructor() { this.cache_ = {}, this.patternCache_ = {}, this.cacheSize_ = 0, this.maxCacheSize_ = 1024; } @@ -5987,6 +9554,8 @@ var Pc = class { } } get(e, t) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let n = Fc(e, t); return n in this.cache_ ? this.cache_[n] : null; } @@ -5999,11 +9568,37 @@ var Pc = class { this.cache_[i] = n, r && (n.getImageState() === L.IDLE && n.load(), n.getImageState() === L.LOADING ? n.ready().then(() => { this.patternCache_[i] = ve().createPattern(n.getImage(1), "repeat"); }) : this.patternCache_[i] = ve().createPattern(n.getImage(1), "repeat")), a || ++this.cacheSize_; +======= + let n = rc(e, t); + return n in this.cache_ ? this.cache_[n] : null; + } + getPattern(e, t) { + let n = rc(e, t); + return n in this.patternCache_ ? this.patternCache_[n] : null; + } + set(e, t, n, r) { +======= + let n = rc(e, t); + return n in this.cache_ ? this.cache_[n] : null; + } + getPattern(e, t) { + let n = rc(e, t); + return n in this.patternCache_ ? this.patternCache_[n] : null; + } + set(e, t, n, r) { +>>>>>>> Stashed changes + let i = rc(e, t), a = i in this.cache_; + this.cache_[i] = n, r && (n.getImageState() === J.IDLE && n.load(), n.getImageState() === J.LOADING ? n.ready().then(() => { + this.patternCache_[i] = x().createPattern(n.getImage(1), "repeat"); + }) : this.patternCache_[i] = x().createPattern(n.getImage(1), "repeat")), a || ++this.cacheSize_; +>>>>>>> Stashed changes } setSize(e) { this.maxCacheSize_ = e, this.expire(); } }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Fc(e, t) { let n = t ? Ui(t) : "null"; return e + ":" + n; @@ -6011,17 +9606,53 @@ function Fc(e, t) { var Ic = new Pc(), Lc = null, Rc = class extends C { constructor(e, t, n, r, i) { super(), this.hitDetectionImage_ = null, this.image_ = e, this.crossOrigin_ = n?.crossOrigin, this.referrerPolicy_ = n?.referrerPolicy, this.canvas_ = {}, this.color_ = i, this.imageState_ = r === void 0 ? L.IDLE : r, this.size_ = e && e.width && e.height ? [e.width, e.height] : null, this.src_ = t, this.tainted_, this.ready_ = null; +======= +function rc(e, t) { + let n = t ? $o(t) : "null"; + return e + ":" + n; +} +var ic = new nc(), ac = null, oc = class extends ye { + constructor(e, t, n, r, i) { + super(), this.hitDetectionImage_ = null, this.image_ = e, this.crossOrigin_ = n?.crossOrigin, this.referrerPolicy_ = n?.referrerPolicy, this.canvas_ = {}, this.color_ = i, this.imageState_ = r === void 0 ? J.IDLE : r, this.size_ = e && e.width && e.height ? [e.width, e.height] : null, this.src_ = t, this.tainted_, this.ready_ = null; +>>>>>>> Stashed changes +======= +function rc(e, t) { + let n = t ? $o(t) : "null"; + return e + ":" + n; +} +var ic = new nc(), ac = null, oc = class extends ye { + constructor(e, t, n, r, i) { + super(), this.hitDetectionImage_ = null, this.image_ = e, this.crossOrigin_ = n?.crossOrigin, this.referrerPolicy_ = n?.referrerPolicy, this.canvas_ = {}, this.color_ = i, this.imageState_ = r === void 0 ? J.IDLE : r, this.size_ = e && e.width && e.height ? [e.width, e.height] : null, this.src_ = t, this.tainted_, this.ready_ = null; +>>>>>>> Stashed changes } initializeImage_() { this.image_ = new Image(), this.crossOrigin_ !== null && (this.image_.crossOrigin = this.crossOrigin_), this.referrerPolicy_ !== void 0 && (this.image_.referrerPolicy = this.referrerPolicy_); } isTainted_() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (this.tainted_ === void 0 && this.imageState_ === L.LOADED) { Lc ||= ge(1, 1, void 0, { willReadFrequently: !0 }), Lc.drawImage(this.image_, 0, 0); try { Lc.getImageData(0, 0, 1, 1), this.tainted_ = !1; } catch { Lc = null, this.tainted_ = !0; +======= + if (this.tainted_ === void 0 && this.imageState_ === J.LOADED) { + ac ||= y(1, 1, void 0, { willReadFrequently: !0 }), ac.drawImage(this.image_, 0, 0); + try { + ac.getImageData(0, 0, 1, 1), this.tainted_ = !1; + } catch { + ac = null, this.tainted_ = !0; +>>>>>>> Stashed changes +======= + if (this.tainted_ === void 0 && this.imageState_ === J.LOADED) { + ac ||= y(1, 1, void 0, { willReadFrequently: !0 }), ac.drawImage(this.image_, 0, 0); + try { + ac.getImageData(0, 0, 1, 1), this.tainted_ = !1; + } catch { + ac = null, this.tainted_ = !0; +>>>>>>> Stashed changes } } return this.tainted_ === !0; @@ -6030,10 +9661,24 @@ var Ic = new Pc(), Lc = null, Rc = class extends C { this.dispatchEvent(s.CHANGE); } handleImageError_() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.imageState_ = L.ERROR, this.dispatchChangeEvent_(); } handleImageLoad_() { this.imageState_ = L.LOADED, this.size_ = [this.image_.width, this.image_.height], this.dispatchChangeEvent_(); +======= + this.imageState_ = J.ERROR, this.dispatchChangeEvent_(); + } + handleImageLoad_() { + this.imageState_ = J.LOADED, this.size_ = [this.image_.width, this.image_.height], this.dispatchChangeEvent_(); +>>>>>>> Stashed changes +======= + this.imageState_ = J.ERROR, this.dispatchChangeEvent_(); + } + handleImageLoad_() { + this.imageState_ = J.LOADED, this.size_ = [this.image_.width, this.image_.height], this.dispatchChangeEvent_(); +>>>>>>> Stashed changes } getImage(e) { return this.image_ || this.initializeImage_(), this.replaceColor_(e), this.canvas_[e] ? this.canvas_[e] : this.image_; @@ -6063,19 +9708,39 @@ var Ic = new Pc(), Lc = null, Rc = class extends C { return this.src_; } load() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (this.imageState_ === L.IDLE) { this.image_ || this.initializeImage_(), this.imageState_ = L.LOADING; +======= + if (this.imageState_ === J.IDLE) { + this.image_ || this.initializeImage_(), this.imageState_ = J.LOADING; +>>>>>>> Stashed changes +======= + if (this.imageState_ === J.IDLE) { + this.image_ || this.initializeImage_(), this.imageState_ = J.LOADING; +>>>>>>> Stashed changes try { this.src_ !== void 0 && (this.image_.src = this.src_); } catch { this.handleImageError_(); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.image_ instanceof HTMLImageElement && We(this.image_, this.src_).then((e) => { +======= + this.image_ instanceof HTMLImageElement && tc(this.image_, this.src_).then((e) => { +>>>>>>> Stashed changes +======= + this.image_ instanceof HTMLImageElement && tc(this.image_, this.src_).then((e) => { +>>>>>>> Stashed changes this.image_ = e, this.handleImageLoad_(); }).catch(this.handleImageError_.bind(this)); } } replaceColor_(e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (!this.color_ || this.canvas_[e] || this.imageState_ !== L.LOADED) return; let t = this.image_, n = ge(Math.ceil(t.width * e), Math.ceil(t.height * e)), r = n.canvas; n.scale(e, e), n.drawImage(t, 0, 0), n.globalCompositeOperation = "multiply", n.fillStyle = ji(this.color_), n.fillRect(0, 0, r.width / e, r.height / e), n.globalCompositeOperation = "destination-in", n.drawImage(t, 0, 0), this.canvas_[e] = r; @@ -6086,12 +9751,38 @@ var Ic = new Pc(), Lc = null, Rc = class extends C { else { let t = () => { (this.imageState_ === L.LOADED || this.imageState_ === L.ERROR) && (this.removeEventListener(s.CHANGE, t), e()); +======= + if (!this.color_ || this.canvas_[e] || this.imageState_ !== J.LOADED) return; + let t = this.image_, n = y(Math.ceil(t.width * e), Math.ceil(t.height * e)), r = n.canvas; + n.scale(e, e), n.drawImage(t, 0, 0), n.globalCompositeOperation = "multiply", n.fillStyle = Vo(this.color_), n.fillRect(0, 0, r.width / e, r.height / e), n.globalCompositeOperation = "destination-in", n.drawImage(t, 0, 0), this.canvas_[e] = r; + } + ready() { + return this.ready_ ||= new Promise((e) => { + if (this.imageState_ === J.LOADED || this.imageState_ === J.ERROR) e(); + else { + let t = () => { + (this.imageState_ === J.LOADED || this.imageState_ === J.ERROR) && (this.removeEventListener(M.CHANGE, t), e()); +>>>>>>> Stashed changes +======= + if (!this.color_ || this.canvas_[e] || this.imageState_ !== J.LOADED) return; + let t = this.image_, n = y(Math.ceil(t.width * e), Math.ceil(t.height * e)), r = n.canvas; + n.scale(e, e), n.drawImage(t, 0, 0), n.globalCompositeOperation = "multiply", n.fillStyle = Vo(this.color_), n.fillRect(0, 0, r.width / e, r.height / e), n.globalCompositeOperation = "destination-in", n.drawImage(t, 0, 0), this.canvas_[e] = r; + } + ready() { + return this.ready_ ||= new Promise((e) => { + if (this.imageState_ === J.LOADED || this.imageState_ === J.ERROR) e(); + else { + let t = () => { + (this.imageState_ === J.LOADED || this.imageState_ === J.ERROR) && (this.removeEventListener(M.CHANGE, t), e()); +>>>>>>> Stashed changes }; this.addEventListener(s.CHANGE, t); } }), this.ready_; } }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream function zc(e, t, n, r, i, a) { let o = t === void 0 ? void 0 : Ic.get(t, i); return o || (o = new Rc(e, e && "src" in e ? e.src || void 0 : t, n, r, i), Ic.set(t, i, o, a)), a && o && !Ic.getPattern(t, i) && Ic.set(t, i, o, a), o; @@ -6113,11 +9804,65 @@ function Vc(e) { //#endregion //#region node_modules/ol/render/canvas.js var Hc = "10px sans-serif", Uc = "#000", Wc = "round", Gc = [], Kc = "round", qc = "#000", Jc = "center", Yc = "middle", Xc = [ +======= +function sc(e, t, n, r, i, a) { + let o = t === void 0 ? void 0 : ic.get(t, i); + return o || (o = new oc(e, e && "src" in e ? e.src || void 0 : t, n, r, i), ic.set(t, i, o, a)), a && o && !ic.getPattern(t, i) && ic.set(t, i, o, a), o; +} +//#endregion +//#region node_modules/ol/colorlike.js +function cc(e) { + return e ? Array.isArray(e) ? es(e) : typeof e == "object" && "src" in e ? lc(e) : e : null; +} +function lc(e) { + if (!e.offset || !e.size) return ic.getPattern(e.src, e.color); + let t = e.src + ":" + e.offset, n = ic.getPattern(t, e.color); + if (n) return n; + let r = ic.get(e.src, null); + if (r.getImageState() !== J.LOADED) return null; + let i = y(e.size[0], e.size[1]); + return i.drawImage(r.getImage(1), e.offset[0], e.offset[1], e.size[0], e.size[1], 0, 0, e.size[0], e.size[1]), sc(i.canvas, t, void 0, J.LOADED, e.color, !0), ic.getPattern(t, e.color); +} +//#endregion +//#region node_modules/ol/render/canvas.js +var uc = "10px sans-serif", dc = "#000", fc = "round", pc = [], mc = "round", hc = "#000", gc = "center", _c = "middle", vc = [ +>>>>>>> Stashed changes +======= +function sc(e, t, n, r, i, a) { + let o = t === void 0 ? void 0 : ic.get(t, i); + return o || (o = new oc(e, e && "src" in e ? e.src || void 0 : t, n, r, i), ic.set(t, i, o, a)), a && o && !ic.getPattern(t, i) && ic.set(t, i, o, a), o; +} +//#endregion +//#region node_modules/ol/colorlike.js +function cc(e) { + return e ? Array.isArray(e) ? es(e) : typeof e == "object" && "src" in e ? lc(e) : e : null; +} +function lc(e) { + if (!e.offset || !e.size) return ic.getPattern(e.src, e.color); + let t = e.src + ":" + e.offset, n = ic.getPattern(t, e.color); + if (n) return n; + let r = ic.get(e.src, null); + if (r.getImageState() !== J.LOADED) return null; + let i = y(e.size[0], e.size[1]); + return i.drawImage(r.getImage(1), e.offset[0], e.offset[1], e.size[0], e.size[1], 0, 0, e.size[0], e.size[1]), sc(i.canvas, t, void 0, J.LOADED, e.color, !0), ic.getPattern(t, e.color); +} +//#endregion +//#region node_modules/ol/render/canvas.js +var uc = "10px sans-serif", dc = "#000", fc = "round", pc = [], mc = "round", hc = "#000", gc = "center", _c = "middle", vc = [ +>>>>>>> Stashed changes 0, 0, 0, 0 +<<<<<<< Updated upstream +<<<<<<< Updated upstream ], Zc = new A(), Qc = null, $c, el = {}, tl = /* @__PURE__ */ new Set([ +======= +], yc = new we(), bc = null, xc, Sc = {}, Cc = /* @__PURE__ */ new Set([ +>>>>>>> Stashed changes +======= +], yc = new we(), bc = null, xc, Sc = {}, Cc = /* @__PURE__ */ new Set([ +>>>>>>> Stashed changes "serif", "sans-serif", "monospace", @@ -6132,10 +9877,24 @@ var Hc = "10px sans-serif", Uc = "#000", Wc = "round", Gc = [], Kc = "round", qc "math", "fangsong" ]); +<<<<<<< Updated upstream +<<<<<<< Updated upstream function nl(e, t, n) { return `${e} ${t} 16px "${n}"`; } var rl = (function() { +======= +function wc(e, t, n) { + return `${e} ${t} 16px "${n}"`; +} +var Tc = (function() { +>>>>>>> Stashed changes +======= +function wc(e, t, n) { + return `${e} ${t} 16px "${n}"`; +} +var Tc = (function() { +>>>>>>> Stashed changes let e, t; async function r(e) { await t.ready; @@ -6147,10 +9906,23 @@ var rl = (function() { } async function i() { await t.ready; +<<<<<<< Updated upstream +<<<<<<< Updated upstream let a = !0, o = Zc.getProperties(), s = Object.keys(o).filter((e) => o[e] < 100); for (let e = s.length - 1; e >= 0; --e) { let t = s[e], i = o[t]; i < 100 && (await r(t) ? (n(el), Zc.set(t, 100)) : (i += 10, Zc.set(t, i, !0), i < 100 && (a = !1))); +======= +======= +>>>>>>> Stashed changes + let i = !0, a = yc.getProperties(), o = Object.keys(a).filter((e) => a[e] < 100); + for (let e = o.length - 1; e >= 0; --e) { + let t = o[e], r = a[t]; + r < 100 && (await n(t) ? (k(Sc), yc.set(t, 100)) : (r += 10, yc.set(t, r, !0), r < 100 && (i = !1))); +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes } e = void 0, a || (e = setTimeout(i, 100)); } @@ -6160,12 +9932,26 @@ var rl = (function() { if (!r) return; let a = r.families, o = !1; for (let e of a) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (tl.has(e)) continue; let t = nl(r.style, r.weight, e); Zc.get(t) === void 0 && (Zc.set(t, 0, !0), o = !0); +======= + if (Cc.has(e)) continue; + let t = wc(i.style, i.weight, e); + yc.get(t) === void 0 && (yc.set(t, 0, !0), o = !0); +>>>>>>> Stashed changes +======= + if (Cc.has(e)) continue; + let t = wc(i.style, i.weight, e); + yc.get(t) === void 0 && (yc.set(t, 0, !0), o = !0); +>>>>>>> Stashed changes } o && (clearTimeout(e), e = setTimeout(i, 100)); }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream })(), il = (function() { let e; return function(t) { @@ -6176,10 +9962,36 @@ var rl = (function() { n = (isNaN(Number(e.lineHeight)) ? 1.2 : Number(e.lineHeight)) * (r.actualBoundingBoxAscent + r.actualBoundingBoxDescent); } else e || (e = document.createElement("div"), e.innerHTML = "M", e.style.minHeight = "0", e.style.maxHeight = "none", e.style.height = "auto", e.style.padding = "0", e.style.border = "none", e.style.position = "absolute", e.style.display = "block", e.style.left = "-99999px"), e.style.font = t, document.body.appendChild(e), n = e.offsetHeight, document.body.removeChild(e); el[t] = n; +======= +})(), Ec = (function() { + let e; + return function(t) { + let n = Sc[t]; + if (n == null) { + if (g) { + let e = u(t), r = Dc(t, "Žg"); + n = (isNaN(Number(e.lineHeight)) ? 1.2 : Number(e.lineHeight)) * (r.actualBoundingBoxAscent + r.actualBoundingBoxDescent); + } else e || (e = document.createElement("div"), e.innerHTML = "M", e.style.minHeight = "0", e.style.maxHeight = "none", e.style.height = "auto", e.style.padding = "0", e.style.border = "none", e.style.position = "absolute", e.style.display = "block", e.style.left = "-99999px"), e.style.font = t, document.body.appendChild(e), n = e.offsetHeight, document.body.removeChild(e); + Sc[t] = n; +>>>>>>> Stashed changes +======= +})(), Ec = (function() { + let e; + return function(t) { + let n = Sc[t]; + if (n == null) { + if (g) { + let e = u(t), r = Dc(t, "Žg"); + n = (isNaN(Number(e.lineHeight)) ? 1.2 : Number(e.lineHeight)) * (r.actualBoundingBoxAscent + r.actualBoundingBoxDescent); + } else e || (e = document.createElement("div"), e.innerHTML = "M", e.style.minHeight = "0", e.style.maxHeight = "none", e.style.height = "auto", e.style.padding = "0", e.style.border = "none", e.style.position = "absolute", e.style.display = "block", e.style.left = "-99999px"), e.style.font = t, document.body.appendChild(e), n = e.offsetHeight, document.body.removeChild(e); + Sc[t] = n; +>>>>>>> Stashed changes } return n; }; })(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream function al(e, t) { return Qc ||= ge(1, 1), e != $c && (Qc.font = e, $c = Qc.font), Qc.measureText(t); } @@ -6192,6 +10004,34 @@ function sl(e, t, n) { return n[t] = r, r; } function cl(e, t) { +======= +function Dc(e, t) { + return bc ||= y(1, 1), e != xc && (bc.font = e, xc = bc.font), bc.measureText(t); +} +function Oc(e, t) { + return Dc(e, t).width; +} +function kc(e, t, n) { + if (t in n) return n[t]; + let r = t.split("\n").reduce((t, n) => Math.max(t, Oc(e, n)), 0); + return n[t] = r, r; +} +function Ac(e, t) { +>>>>>>> Stashed changes +======= +function Dc(e, t) { + return bc ||= y(1, 1), e != xc && (bc.font = e, xc = bc.font), bc.measureText(t); +} +function Oc(e, t) { + return Dc(e, t).width; +} +function kc(e, t, n) { + if (t in n) return n[t]; + let r = t.split("\n").reduce((t, n) => Math.max(t, Oc(e, n)), 0); + return n[t] = r, r; +} +function Ac(e, t) { +>>>>>>> Stashed changes let n = [], r = [], i = [], a = 0, o = 0, s = 0, c = 0; for (let l = 0, u = t.length; l <= u; l += 2) { let d = t[l]; @@ -6199,9 +10039,21 @@ function cl(e, t) { a = Math.max(a, o), i.push(o), o = 0, s += c, c = 0; continue; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream let f = t[l + 1] || e.font, p = ol(f, d); n.push(p), o += p; let m = il(f); +======= + let f = t[l + 1] || e.font, p = Oc(f, d); + n.push(p), o += p; + let m = Ec(f); +>>>>>>> Stashed changes +======= + let f = t[l + 1] || e.font, p = Oc(f, d); + n.push(p), o += p; + let m = Ec(f); +>>>>>>> Stashed changes r.push(m), c = Math.max(c, m); } return { @@ -6212,18 +10064,44 @@ function cl(e, t) { lineWidths: i }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function ll(e, t, n, r, i, a, o, s, c, l, u) { e.save(), n !== 1 && (e.globalAlpha === void 0 ? e.globalAlpha = (e) => e.globalAlpha *= n : e.globalAlpha *= n), t && e.transform.apply(e, t), r.contextInstructions ? (e.translate(c, l), e.scale(u[0], u[1]), ul(r, e)) : u[0] < 0 || u[1] < 0 ? (e.translate(c, l), e.scale(u[0], u[1]), e.drawImage(r, i, a, o, s, 0, 0, o, s)) : e.drawImage(r, i, a, o, s, c, l, o * u[0], s * u[1]), e.restore(); } function ul(e, t) { +======= +function jc(e, t, n, r, i, a, o, s, c, l, u) { + e.save(), n !== 1 && (e.globalAlpha === void 0 ? e.globalAlpha = (e) => e.globalAlpha *= n : e.globalAlpha *= n), t && e.transform.apply(e, t), r.contextInstructions ? (e.translate(c, l), e.scale(u[0], u[1]), Mc(r, e)) : u[0] < 0 || u[1] < 0 ? (e.translate(c, l), e.scale(u[0], u[1]), e.drawImage(r, i, a, o, s, 0, 0, o, s)) : e.drawImage(r, i, a, o, s, c, l, o * u[0], s * u[1]), e.restore(); +} +function Mc(e, t) { +>>>>>>> Stashed changes +======= +function jc(e, t, n, r, i, a, o, s, c, l, u) { + e.save(), n !== 1 && (e.globalAlpha === void 0 ? e.globalAlpha = (e) => e.globalAlpha *= n : e.globalAlpha *= n), t && e.transform.apply(e, t), r.contextInstructions ? (e.translate(c, l), e.scale(u[0], u[1]), Mc(r, e)) : u[0] < 0 || u[1] < 0 ? (e.translate(c, l), e.scale(u[0], u[1]), e.drawImage(r, i, a, o, s, 0, 0, o, s)) : e.drawImage(r, i, a, o, s, c, l, o * u[0], s * u[1]), e.restore(); +} +function Mc(e, t) { +>>>>>>> Stashed changes let n = e.contextInstructions; for (let e = 0, r = n.length; e < r; e += 2) Array.isArray(n[e + 1]) ? t[n[e]].apply(t, n[e + 1]) : t[n[e]] = n[e + 1]; } //#endregion //#region node_modules/ol/style/Image.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var dl = class e { constructor(e) { this.opacity_ = e.opacity, this.rotateWithView_ = e.rotateWithView, this.rotation_ = e.rotation, this.scale_ = e.scale, this.scaleArray_ = pi(e.scale), this.displacement_ = e.displacement, this.declutterMode_ = e.declutterMode; +======= +var Nc = class e { + constructor(e) { + this.opacity_ = e.opacity, this.rotateWithView_ = e.rotateWithView, this.rotation_ = e.rotation, this.scale_ = e.scale, this.scaleArray_ = rs(e.scale), this.displacement_ = e.displacement, this.declutterMode_ = e.declutterMode; +>>>>>>> Stashed changes +======= +var Nc = class e { + constructor(e) { + this.opacity_ = e.opacity, this.rotateWithView_ = e.rotateWithView, this.rotation_ = e.rotation, this.scale_ = e.scale, this.scaleArray_ = rs(e.scale), this.displacement_ = e.displacement, this.declutterMode_ = e.declutterMode; +>>>>>>> Stashed changes } clone() { let t = this.getScale(); @@ -6294,7 +10172,15 @@ var dl = class e { this.rotation_ = e; } setScale(e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.scale_ = e, this.scaleArray_ = pi(e); +======= + this.scale_ = e, this.scaleArray_ = rs(e); +>>>>>>> Stashed changes +======= + this.scale_ = e, this.scaleArray_ = rs(e); +>>>>>>> Stashed changes } listenImageChange(e) { E(); @@ -6308,7 +10194,15 @@ var dl = class e { ready() { return Promise.resolve(); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, fl = class e extends dl { +======= +}, Pc = class e extends Nc { +>>>>>>> Stashed changes +======= +}, Pc = class e extends Nc { +>>>>>>> Stashed changes constructor(e) { super({ opacity: 1, @@ -6317,7 +10211,15 @@ var dl = class e { scale: e.scale === void 0 ? 1 : e.scale, displacement: e.displacement === void 0 ? [0, 0] : e.displacement, declutterMode: e.declutterMode +<<<<<<< Updated upstream +<<<<<<< Updated upstream }), this.hitDetectionCanvas_ = null, this.fill_ = e.fill === void 0 ? null : e.fill, this.origin_ = [0, 0], this.points_ = e.points, this.radius = e.radius, this.radius2_ = e.radius2, this.angle_ = e.angle === void 0 ? 0 : e.angle, this.stroke_ = e.stroke === void 0 ? null : e.stroke, this.size_, this.renderOptions_, this.imageState_ = this.fill_ && this.fill_.loading() ? L.LOADING : L.LOADED, this.imageState_ === L.LOADING && this.ready().then(() => this.imageState_ = L.LOADED), this.render(); +======= + }), this.hitDetectionCanvas_ = null, this.fill_ = e.fill === void 0 ? null : e.fill, this.origin_ = [0, 0], this.points_ = e.points, this.radius = e.radius, this.radius2_ = e.radius2, this.angle_ = e.angle === void 0 ? 0 : e.angle, this.stroke_ = e.stroke === void 0 ? null : e.stroke, this.size_, this.renderOptions_, this.imageState_ = this.fill_ && this.fill_.loading() ? J.LOADING : J.LOADED, this.imageState_ === J.LOADING && this.ready().then(() => this.imageState_ = J.LOADED), this.render(); +>>>>>>> Stashed changes +======= + }), this.hitDetectionCanvas_ = null, this.fill_ = e.fill === void 0 ? null : e.fill, this.origin_ = [0, 0], this.points_ = e.points, this.radius = e.radius, this.radius2_ = e.radius2, this.angle_ = e.angle === void 0 ? 0 : e.angle, this.stroke_ = e.stroke === void 0 ? null : e.stroke, this.size_, this.renderOptions_, this.imageState_ = this.fill_ && this.fill_.loading() ? J.LOADING : J.LOADED, this.imageState_ === J.LOADING && this.ready().then(() => this.imageState_ = J.LOADED), this.render(); +>>>>>>> Stashed changes } clone() { let t = this.getScale(), n = new e({ @@ -6352,12 +10254,30 @@ var dl = class e { return this.hitDetectionCanvas_ ||= this.createHitDetectionCanvas_(this.renderOptions_), this.hitDetectionCanvas_; } getImage(e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let t = this.fill_?.getKey(), n = `${e},${this.angle_},${this.radius},${this.radius2_},${this.points_},${t}` + Object.values(this.renderOptions_).join(","), r = Ic.get(n, null)?.getImage(1); +======= + let t = this.fill_?.getKey(), n = `${e},${this.angle_},${this.radius},${this.radius2_},${this.points_},${t}` + Object.values(this.renderOptions_).join(","), r = ic.get(n, null)?.getImage(1); +>>>>>>> Stashed changes +======= + let t = this.fill_?.getKey(), n = `${e},${this.angle_},${this.radius},${this.radius2_},${this.points_},${t}` + Object.values(this.renderOptions_).join(","), r = ic.get(n, null)?.getImage(1); +>>>>>>> Stashed changes if (!r) { let t = this.renderOptions_, i = Math.ceil(t.size * e), a = ge(i, i); this.draw_(t, a, e), r = a.canvas; +<<<<<<< Updated upstream +<<<<<<< Updated upstream let o = new Rc(r, void 0, null, L.LOADED, null); Ic.set(n, null, o), createImageBitmap(r).then((e) => { +======= + let o = new oc(r, void 0, null, J.LOADED, null); + ic.set(n, null, o), createImageBitmap(r).then((e) => { +>>>>>>> Stashed changes +======= + let o = new oc(r, void 0, null, J.LOADED, null); + ic.set(n, null, o), createImageBitmap(r).then((e) => { +>>>>>>> Stashed changes o.setImage(e); }); } @@ -6421,8 +10341,18 @@ var dl = class e { return m * 2; } createRenderOptions() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let e = Wc, t = Kc, n = 0, r = null, i = 0, a, o = 0; this.stroke_ && (a = Bc(this.stroke_.getColor() ?? "#000"), o = this.stroke_.getWidth() ?? 1, r = this.stroke_.getLineDash(), i = this.stroke_.getLineDashOffset() ?? 0, t = this.stroke_.getLineJoin() ?? "round", e = this.stroke_.getLineCap() ?? "round", n = this.stroke_.getMiterLimit() ?? 10); +======= + let e = fc, t = mc, n = 0, r = null, i = 0, a, o = 0; + this.stroke_ && (a = cc(this.stroke_.getColor() ?? "#000"), o = this.stroke_.getWidth() ?? 1, r = this.stroke_.getLineDash(), i = this.stroke_.getLineDashOffset() ?? 0, t = this.stroke_.getLineJoin() ?? "round", e = this.stroke_.getLineCap() ?? "round", n = this.stroke_.getMiterLimit() ?? 10); +>>>>>>> Stashed changes +======= + let e = fc, t = mc, n = 0, r = null, i = 0, a, o = 0; + this.stroke_ && (a = cc(this.stroke_.getColor() ?? "#000"), o = this.stroke_.getWidth() ?? 1, r = this.stroke_.getLineDash(), i = this.stroke_.getLineDashOffset() ?? 0, t = this.stroke_.getLineJoin() ?? "round", e = this.stroke_.getLineCap() ?? "round", n = this.stroke_.getMiterLimit() ?? 10); +>>>>>>> Stashed changes let s = this.calculateLineJoinSize_(t, o, n), c = Math.max(this.radius, this.radius2_ || 0), l = Math.ceil(2 * c + s); return { strokeStyle: a, @@ -6443,7 +10373,15 @@ var dl = class e { draw_(e, t, n) { if (t.scale(n, n), t.translate(e.size / 2, e.size / 2), this.createPath_(t), this.fill_) { let e = this.fill_.getColor(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream e === null && (e = Uc), t.fillStyle = Bc(e), t.fill(); +======= + e === null && (e = dc), t.fillStyle = cc(e), t.fill(); +>>>>>>> Stashed changes +======= + e === null && (e = dc), t.fillStyle = cc(e), t.fill(); +>>>>>>> Stashed changes } e.strokeStyle && (t.strokeStyle = e.strokeStyle, t.lineWidth = e.strokeWidth, e.lineDash && (t.setLineDash(e.lineDash), t.lineDashOffset = e.lineDashOffset), t.lineCap = e.lineCap, t.lineJoin = e.lineJoin, t.miterLimit = e.miterLimit, t.stroke()); } @@ -6451,7 +10389,15 @@ var dl = class e { let t; if (this.fill_) { let n = this.fill_.getColor(), r = 0; +<<<<<<< Updated upstream +<<<<<<< Updated upstream typeof n == "string" && (n = Ui(n)), n === null ? r = 1 : Array.isArray(n) && (r = n.length === 4 ? n[3] : 1), r === 0 && (t = ge(e.size, e.size), this.drawHitDetectionCanvas_(e, t)); +======= + typeof n == "string" && (n = $o(n)), n === null ? r = 1 : Array.isArray(n) && (r = n.length === 4 ? n[3] : 1), r === 0 && (t = y(e.size, e.size), this.drawHitDetectionCanvas_(e, t)); +>>>>>>> Stashed changes +======= + typeof n == "string" && (n = $o(n)), n === null ? r = 1 : Array.isArray(n) && (r = n.length === 4 ? n[3] : 1), r === 0 && (t = y(e.size, e.size), this.drawHitDetectionCanvas_(e, t)); +>>>>>>> Stashed changes } return t ? t.canvas : this.getImage(1); } @@ -6470,12 +10416,28 @@ var dl = class e { } } drawHitDetectionCanvas_(e, t) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream t.translate(e.size / 2, e.size / 2), this.createPath_(t), t.fillStyle = Uc, t.fill(), e.strokeStyle && (t.strokeStyle = e.strokeStyle, t.lineWidth = e.strokeWidth, e.lineDash && (t.setLineDash(e.lineDash), t.lineDashOffset = e.lineDashOffset), t.lineJoin = e.lineJoin, t.miterLimit = e.miterLimit, t.stroke()); +======= + t.translate(e.size / 2, e.size / 2), this.createPath_(t), t.fillStyle = dc, t.fill(), e.strokeStyle && (t.strokeStyle = e.strokeStyle, t.lineWidth = e.strokeWidth, e.lineDash && (t.setLineDash(e.lineDash), t.lineDashOffset = e.lineDashOffset), t.lineJoin = e.lineJoin, t.miterLimit = e.miterLimit, t.stroke()); +>>>>>>> Stashed changes +======= + t.translate(e.size / 2, e.size / 2), this.createPath_(t), t.fillStyle = dc, t.fill(), e.strokeStyle && (t.strokeStyle = e.strokeStyle, t.lineWidth = e.strokeWidth, e.lineDash && (t.setLineDash(e.lineDash), t.lineDashOffset = e.lineDashOffset), t.lineJoin = e.lineJoin, t.miterLimit = e.miterLimit, t.stroke()); +>>>>>>> Stashed changes } ready() { return this.fill_ ? this.fill_.ready() : Promise.resolve(); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, pl = class e extends fl { +======= +}, Fc = class e extends Pc { +>>>>>>> Stashed changes +======= +}, Fc = class e extends Pc { +>>>>>>> Stashed changes constructor(e) { e ||= { radius: 5 }, super({ points: Infinity, @@ -6502,7 +10464,15 @@ var dl = class e { }); return n.setOpacity(this.getOpacity()), n; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, ml = class e { +======= +}, Ic = class e { +>>>>>>> Stashed changes +======= +}, Ic = class e { +>>>>>>> Stashed changes constructor(e) { e ||= {}, this.patternImage_ = null, this.color_ = null, e.color !== void 0 && this.setColor(e.color); } @@ -6515,16 +10485,38 @@ var dl = class e { } setColor(e) { if (typeof e == "object" && e && "src" in e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let t = zc(null, e.src, { crossOrigin: "anonymous" }, void 0, e.offset ? null : e.color ? e.color : null, !(e.offset && e.size)); t.ready().then(() => { this.patternImage_ = null; }), t.getImageState() === L.IDLE && t.load(), t.getImageState() === L.LOADING && (this.patternImage_ = t); +======= + let t = sc(null, e.src, { crossOrigin: "anonymous" }, void 0, e.offset ? null : e.color ? e.color : null, !(e.offset && e.size)); + t.ready().then(() => { + this.patternImage_ = null; + }), t.getImageState() === J.IDLE && t.load(), t.getImageState() === J.LOADING && (this.patternImage_ = t); +>>>>>>> Stashed changes +======= + let t = sc(null, e.src, { crossOrigin: "anonymous" }, void 0, e.offset ? null : e.color ? e.color : null, !(e.offset && e.size)); + t.ready().then(() => { + this.patternImage_ = null; + }), t.getImageState() === J.IDLE && t.load(), t.getImageState() === J.LOADING && (this.patternImage_ = t); +>>>>>>> Stashed changes } this.color_ = e; } getKey() { let e = this.getColor(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream return e ? e instanceof CanvasPattern || e instanceof CanvasGradient ? O(e) : typeof e == "object" && "src" in e ? e.src + ":" + e.offset : Ui(e).toString() : ""; +======= + return e ? e instanceof CanvasPattern || e instanceof CanvasGradient ? F(e) : typeof e == "object" && "src" in e ? e.src + ":" + e.offset : $o(e).toString() : ""; +>>>>>>> Stashed changes +======= + return e ? e instanceof CanvasPattern || e instanceof CanvasGradient ? F(e) : typeof e == "object" && "src" in e ? e.src + ":" + e.offset : $o(e).toString() : ""; +>>>>>>> Stashed changes } loading() { return !!this.patternImage_; @@ -6535,10 +10527,24 @@ var dl = class e { }; //#endregion //#region node_modules/ol/style/Icon.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function hl(e, t, n, r) { return n !== void 0 && r !== void 0 ? [n / e, r / t] : n === void 0 ? r === void 0 ? 1 : r / t : n / e; } var gl = class e extends dl { +======= +function Lc(e, t, n, r) { + return n !== void 0 && r !== void 0 ? [n / e, r / t] : n === void 0 ? r === void 0 ? 1 : r / t : n / e; +} +var Rc = class e extends Nc { +>>>>>>> Stashed changes +======= +function Lc(e, t, n, r) { + return n !== void 0 && r !== void 0 ? [n / e, r / t] : n === void 0 ? r === void 0 ? 1 : r / t : n / e; +} +var Rc = class e extends Nc { +>>>>>>> Stashed changes constructor(e) { e ||= {}; let t = e.opacity === void 0 ? 1 : e.opacity, n = e.rotation === void 0 ? 0 : e.rotation, r = e.scale === void 0 ? 1 : e.scale, i = e.rotateWithView !== void 0 && e.rotateWithView; @@ -6553,7 +10559,15 @@ var gl = class e extends dl { let a = e.img === void 0 ? null : e.img, o = e.src; z(!(o !== void 0 && a), "`image` and `src` cannot be provided at the same time"), (o === void 0 || o.length === 0) && a && (o = a.src || O(a)), z(o !== void 0 && o.length > 0, "A defined and non-empty `src` or `image` must be provided"), z(e.width === void 0 && e.height === void 0 || e.scale === void 0, "`width` or `height` cannot be provided together with `scale`"); let s; +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (e.src === void 0 ? a !== void 0 && (s = "complete" in a ? a.complete ? a.src ? L.LOADED : L.IDLE : L.LOADING : L.LOADED) : s = L.IDLE, this.color_ = e.color === void 0 ? null : Ui(e.color), this.iconImage_ = zc(a, o, { +======= + if (e.src === void 0 ? a !== void 0 && (s = "complete" in a ? a.complete ? a.src ? J.LOADED : J.IDLE : J.LOADING : J.LOADED) : s = J.IDLE, this.color_ = e.color === void 0 ? null : $o(e.color), this.iconImage_ = sc(a, o, { +>>>>>>> Stashed changes +======= + if (e.src === void 0 ? a !== void 0 && (s = "complete" in a ? a.complete ? a.src ? J.LOADED : J.IDLE : J.LOADING : J.LOADED) : s = J.IDLE, this.color_ = e.color === void 0 ? null : $o(e.color), this.iconImage_ = sc(a, o, { +>>>>>>> Stashed changes crossOrigin: this.crossOrigin_, referrerPolicy: this.referrerPolicy_ }, s, this.color_), this.offset_ = e.offset === void 0 ? [0, 0] : e.offset, this.offsetOrigin_ = e.offsetOrigin === void 0 ? "top-left" : e.offsetOrigin, this.origin_ = null, this.size_ = e.size === void 0 ? null : e.size, this.initialOptions_, e.width !== void 0 || e.height !== void 0) { @@ -6567,13 +10581,29 @@ var gl = class e extends dl { let t = () => { if (this.unlistenImageChange(t), !this.initialOptions_) return; let n = this.iconImage_.getSize(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.setScale(hl(n[0], n[1], e.width, e.height)); +======= + this.setScale(Lc(n[0], n[1], e.width, e.height)); +>>>>>>> Stashed changes +======= + this.setScale(Lc(n[0], n[1], e.width, e.height)); +>>>>>>> Stashed changes }; this.listenImageChange(t); return; } } +<<<<<<< Updated upstream +<<<<<<< Updated upstream t !== void 0 && this.setScale(hl(t, n, e.width, e.height)); +======= + t !== void 0 && this.setScale(Lc(t, n, e.width, e.height)); +>>>>>>> Stashed changes +======= + t !== void 0 && this.setScale(Lc(t, n, e.width, e.height)); +>>>>>>> Stashed changes } } clone() { @@ -6625,11 +10655,27 @@ var gl = class e extends dl { return this.color_; } setColor(e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let t = e ? Ui(e) : null; if (this.color_ === t || this.color_ && t && this.color_.length === t.length && this.color_.every((e, n) => e === t[n])) return; this.color_ = t; let n = this.getSrc(), r = n === void 0 ? this.getHitDetectionImage() : null, i = n === void 0 ? this.iconImage_.getImageState() : L.IDLE; this.iconImage_ = zc(r, n, { +======= + let t = e ? $o(e) : null; + if (this.color_ === t || this.color_ && t && this.color_.length === t.length && this.color_.every((e, n) => e === t[n])) return; + this.color_ = t; + let n = this.getSrc(), r = n === void 0 ? this.getHitDetectionImage() : null, i = n === void 0 ? this.iconImage_.getImageState() : J.IDLE; + this.iconImage_ = sc(r, n, { +>>>>>>> Stashed changes +======= + let t = e ? $o(e) : null; + if (this.color_ === t || this.color_ && t && this.color_.length === t.length && this.color_.every((e, n) => e === t[n])) return; + this.color_ = t; + let n = this.getSrc(), r = n === void 0 ? this.getHitDetectionImage() : null, i = n === void 0 ? this.iconImage_.getImageState() : J.IDLE; + this.iconImage_ = sc(r, n, { +>>>>>>> Stashed changes crossOrigin: this.crossOrigin_, referrerPolicy: this.referrerPolicy_ }, i, this.color_); @@ -6663,10 +10709,24 @@ var gl = class e extends dl { return this.iconImage_.getSrc(); } setSrc(e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.iconImage_ = zc(null, e, { crossOrigin: this.crossOrigin_, referrerPolicy: this.referrerPolicy_ }, L.IDLE, this.color_); +======= + this.iconImage_ = sc(null, e, { + crossOrigin: this.crossOrigin_, + referrerPolicy: this.referrerPolicy_ + }, J.IDLE, this.color_); +>>>>>>> Stashed changes +======= + this.iconImage_ = sc(null, e, { + crossOrigin: this.crossOrigin_, + referrerPolicy: this.referrerPolicy_ + }, J.IDLE, this.color_); +>>>>>>> Stashed changes } getSize() { return this.size_ ? this.size_ : this.iconImage_.getSize(); @@ -6674,12 +10734,28 @@ var gl = class e extends dl { getWidth() { let e = this.getScaleArray(); if (this.size_) return this.size_[0] * e[0]; +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (this.iconImage_.getImageState() == L.LOADED) return this.iconImage_.getSize()[0] * e[0]; +======= + if (this.iconImage_.getImageState() == J.LOADED) return this.iconImage_.getSize()[0] * e[0]; +>>>>>>> Stashed changes +======= + if (this.iconImage_.getImageState() == J.LOADED) return this.iconImage_.getSize()[0] * e[0]; +>>>>>>> Stashed changes } getHeight() { let e = this.getScaleArray(); if (this.size_) return this.size_[1] * e[1]; +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (this.iconImage_.getImageState() == L.LOADED) return this.iconImage_.getSize()[1] * e[1]; +======= + if (this.iconImage_.getImageState() == J.LOADED) return this.iconImage_.getSize()[1] * e[1]; +>>>>>>> Stashed changes +======= + if (this.iconImage_.getImageState() == J.LOADED) return this.iconImage_.getSize()[1] * e[1]; +>>>>>>> Stashed changes } setScale(e) { delete this.initialOptions_, super.setScale(e); @@ -6696,7 +10772,15 @@ var gl = class e extends dl { ready() { return this.iconImage_.ready(); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, _l = class e { +======= +}, zc = class e { +>>>>>>> Stashed changes +======= +}, zc = class e { +>>>>>>> Stashed changes constructor(e) { e ||= {}, this.color_ = e.color === void 0 ? null : e.color, this.lineCap_ = e.lineCap, this.lineDash_ = e.lineDash === void 0 ? null : e.lineDash, this.lineDashOffset_ = e.lineDashOffset, this.lineJoin_ = e.lineJoin, this.miterLimit_ = e.miterLimit, this.offset_ = e.offset, this.width_ = e.width; } @@ -6761,9 +10845,21 @@ var gl = class e extends dl { setWidth(e) { this.width_ = e; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, vl = class e { constructor(e) { e ||= {}, this.geometry_ = null, this.geometryFunction_ = Sl, e.geometry !== void 0 && this.setGeometry(e.geometry), this.fill_ = e.fill === void 0 ? null : e.fill, this.image_ = e.image === void 0 ? null : e.image, this.renderer_ = e.renderer === void 0 ? null : e.renderer, this.hitDetectionRenderer_ = e.hitDetectionRenderer === void 0 ? null : e.hitDetectionRenderer, this.stroke_ = e.stroke === void 0 ? null : e.stroke, this.text_ = e.text === void 0 ? null : e.text, this.zIndex_ = e.zIndex; +======= +}, Bc = class e { + constructor(e) { + e ||= {}, this.geometry_ = null, this.geometryFunction_ = Wc, e.geometry !== void 0 && this.setGeometry(e.geometry), this.fill_ = e.fill === void 0 ? null : e.fill, this.image_ = e.image === void 0 ? null : e.image, this.renderer_ = e.renderer === void 0 ? null : e.renderer, this.hitDetectionRenderer_ = e.hitDetectionRenderer === void 0 ? null : e.hitDetectionRenderer, this.stroke_ = e.stroke === void 0 ? null : e.stroke, this.text_ = e.text === void 0 ? null : e.text, this.zIndex_ = e.zIndex; +>>>>>>> Stashed changes +======= +}, Bc = class e { + constructor(e) { + e ||= {}, this.geometry_ = null, this.geometryFunction_ = Wc, e.geometry !== void 0 && this.setGeometry(e.geometry), this.fill_ = e.fill === void 0 ? null : e.fill, this.image_ = e.image === void 0 ? null : e.image, this.renderer_ = e.renderer === void 0 ? null : e.renderer, this.hitDetectionRenderer_ = e.hitDetectionRenderer === void 0 ? null : e.hitDetectionRenderer, this.stroke_ = e.stroke === void 0 ? null : e.stroke, this.text_ = e.text === void 0 ? null : e.text, this.zIndex_ = e.zIndex; +>>>>>>> Stashed changes } clone() { let t = this.getGeometry(); @@ -6827,13 +10923,29 @@ var gl = class e extends dl { return t.get(e); } : e ? e !== void 0 && (this.geometryFunction_ = function() { return e; +<<<<<<< Updated upstream +<<<<<<< Updated upstream }) : this.geometryFunction_ = Sl, this.geometry_ = e; +======= + }) : this.geometryFunction_ = Wc, this.geometry_ = e; +>>>>>>> Stashed changes +======= + }) : this.geometryFunction_ = Wc, this.geometry_ = e; +>>>>>>> Stashed changes } setZIndex(e) { this.zIndex_ = e; } }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream function yl(e) { +======= +function Vc(e) { +>>>>>>> Stashed changes +======= +function Vc(e) { +>>>>>>> Stashed changes let t; if (typeof e == "function") t = e; else { @@ -6844,6 +10956,8 @@ function yl(e) { } return t; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream var bl = null; function xl(e, t) { if (!bl) { @@ -6853,6 +10967,28 @@ function xl(e, t) { }); bl = [new vl({ image: new pl({ +======= +var Hc = null; +function Uc(e, t) { + if (!Hc) { + let e = new Ic({ color: "rgba(255,255,255,0.4)" }), t = new zc({ + color: "#3399CC", + width: 1.25 + }); + Hc = [new Bc({ + image: new Fc({ +>>>>>>> Stashed changes +======= +var Hc = null; +function Uc(e, t) { + if (!Hc) { + let e = new Ic({ color: "rgba(255,255,255,0.4)" }), t = new zc({ + color: "#3399CC", + width: 1.25 + }); + Hc = [new Bc({ + image: new Fc({ +>>>>>>> Stashed changes fill: e, stroke: t, radius: 5 @@ -6861,16 +10997,40 @@ function xl(e, t) { stroke: t })]; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream return bl; } function Sl(e) { +======= + return Hc; +} +function Wc(e) { +>>>>>>> Stashed changes +======= + return Hc; +} +function Wc(e) { +>>>>>>> Stashed changes return e.getGeometry(); } //#endregion //#region node_modules/ol/style/Text.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var Cl = "#333", wl = class e { constructor(e) { e ||= {}, this.font_ = e.font, this.rotation_ = e.rotation, this.rotateWithView_ = e.rotateWithView, this.keepUpright_ = e.keepUpright, this.scale_ = e.scale, this.scaleArray_ = pi(e.scale === void 0 ? 1 : e.scale), this.text_ = e.text, this.textAlign_ = e.textAlign, this.justify_ = e.justify, this.repeat_ = e.repeat, this.textBaseline_ = e.textBaseline, this.fill_ = e.fill === void 0 ? new ml({ color: Cl }) : e.fill, this.maxAngle_ = e.maxAngle === void 0 ? Math.PI / 4 : e.maxAngle, this.placement_ = e.placement === void 0 ? "point" : e.placement, this.overflow_ = !!e.overflow, this.stroke_ = e.stroke === void 0 ? null : e.stroke, this.offsetX_ = e.offsetX === void 0 ? 0 : e.offsetX, this.offsetY_ = e.offsetY === void 0 ? 0 : e.offsetY, this.backgroundFill_ = e.backgroundFill ? e.backgroundFill : null, this.backgroundStroke_ = e.backgroundStroke ? e.backgroundStroke : null, this.padding_ = e.padding === void 0 ? null : e.padding, this.declutterMode_ = e.declutterMode; +======= +var Gc = "#333", Kc = class e { + constructor(e) { + e ||= {}, this.font_ = e.font, this.rotation_ = e.rotation, this.rotateWithView_ = e.rotateWithView, this.keepUpright_ = e.keepUpright, this.scale_ = e.scale, this.scaleArray_ = rs(e.scale === void 0 ? 1 : e.scale), this.text_ = e.text, this.textAlign_ = e.textAlign, this.justify_ = e.justify, this.repeat_ = e.repeat, this.textBaseline_ = e.textBaseline, this.fill_ = e.fill === void 0 ? new Ic({ color: Gc }) : e.fill, this.maxAngle_ = e.maxAngle === void 0 ? Math.PI / 4 : e.maxAngle, this.placement_ = e.placement === void 0 ? "point" : e.placement, this.overflow_ = !!e.overflow, this.stroke_ = e.stroke === void 0 ? null : e.stroke, this.offsetX_ = e.offsetX === void 0 ? 0 : e.offsetX, this.offsetY_ = e.offsetY === void 0 ? 0 : e.offsetY, this.backgroundFill_ = e.backgroundFill ? e.backgroundFill : null, this.backgroundStroke_ = e.backgroundStroke ? e.backgroundStroke : null, this.padding_ = e.padding === void 0 ? null : e.padding, this.declutterMode_ = e.declutterMode; +>>>>>>> Stashed changes +======= +var Gc = "#333", Kc = class e { + constructor(e) { + e ||= {}, this.font_ = e.font, this.rotation_ = e.rotation, this.rotateWithView_ = e.rotateWithView, this.keepUpright_ = e.keepUpright, this.scale_ = e.scale, this.scaleArray_ = rs(e.scale === void 0 ? 1 : e.scale), this.text_ = e.text, this.textAlign_ = e.textAlign, this.justify_ = e.justify, this.repeat_ = e.repeat, this.textBaseline_ = e.textBaseline, this.fill_ = e.fill === void 0 ? new Ic({ color: Gc }) : e.fill, this.maxAngle_ = e.maxAngle === void 0 ? Math.PI / 4 : e.maxAngle, this.placement_ = e.placement === void 0 ? "point" : e.placement, this.overflow_ = !!e.overflow, this.stroke_ = e.stroke === void 0 ? null : e.stroke, this.offsetX_ = e.offsetX === void 0 ? 0 : e.offsetX, this.offsetY_ = e.offsetY === void 0 ? 0 : e.offsetY, this.backgroundFill_ = e.backgroundFill ? e.backgroundFill : null, this.backgroundStroke_ = e.backgroundStroke ? e.backgroundStroke : null, this.padding_ = e.padding === void 0 ? null : e.padding, this.declutterMode_ = e.declutterMode; +>>>>>>> Stashed changes } clone() { let t = this.getScale(); @@ -6888,7 +11048,15 @@ var Cl = "#333", wl = class e { textAlign: this.getTextAlign(), justify: this.getJustify(), textBaseline: this.getTextBaseline(), +<<<<<<< Updated upstream +<<<<<<< Updated upstream fill: this.getFill() instanceof ml ? this.getFill().clone() : this.getFill(), +======= + fill: this.getFill() instanceof Ic ? this.getFill().clone() : this.getFill(), +>>>>>>> Stashed changes +======= + fill: this.getFill() instanceof Ic ? this.getFill().clone() : this.getFill(), +>>>>>>> Stashed changes stroke: this.getStroke() ? this.getStroke().clone() : void 0, offsetX: this.getOffsetX(), offsetY: this.getOffsetY(), @@ -6998,7 +11166,15 @@ var Cl = "#333", wl = class e { this.rotation_ = e; } setScale(e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.scale_ = e, this.scaleArray_ = pi(e === void 0 ? 1 : e); +======= + this.scale_ = e, this.scaleArray_ = rs(e === void 0 ? 1 : e); +>>>>>>> Stashed changes +======= + this.scale_ = e, this.scaleArray_ = rs(e === void 0 ? 1 : e); +>>>>>>> Stashed changes } setStroke(e) { this.stroke_ = e; @@ -7027,17 +11203,37 @@ var Cl = "#333", wl = class e { }; //#endregion //#region node_modules/ol/render/canvas/style.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Tl(e) { return !0; } function El(e, t) { t ??= $s(); let n = kl(e, t), r = bc(); - return function(e, i) { - if (r.properties = e.getPropertiesInternal(), r.resolution = i, t.featureId) { - let t = e.getId(); +======= +function qc(e) { + return !0; +} +function Jc(e, t) { + t ??= vs(); + let n = Zc(e, t), r = zs(); +>>>>>>> Stashed changes +======= +function qc(e) { + return !0; +} +function Jc(e, t) { + t ??= vs(); + let n = Zc(e, t), r = zs(); +>>>>>>> Stashed changes + return function(e, i) { + if (r.properties = e.getPropertiesInternal(), r.resolution = i, t.featureId) { + let t = e.getId(); t === void 0 ? r.featureId = null : r.featureId = t; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream return t.geometryType && (r.geometryType = yc(e.getGeometry())), n(r); }; } @@ -7046,12 +11242,40 @@ function Dl(e, t) { let n = e.length, r = Array(n); for (let i = 0; i < n; ++i) r[i] = Al(e[i], t); let i = bc(), a = Array(n); +======= + return t.geometryType && (r.geometryType = Rs(e.getGeometry())), n(r); + }; +} +function Yc(e, t) { + t ??= vs(); + let n = e.length, r = Array(n); + for (let i = 0; i < n; ++i) r[i] = Qc(e[i], t); + let i = zs(), a = Array(n); +>>>>>>> Stashed changes +======= + return t.geometryType && (r.geometryType = Rs(e.getGeometry())), n(r); + }; +} +function Yc(e, t) { + t ??= vs(); + let n = e.length, r = Array(n); + for (let i = 0; i < n; ++i) r[i] = Qc(e[i], t); + let i = zs(), a = Array(n); +>>>>>>> Stashed changes return function(e, o) { if (i.properties = e.getPropertiesInternal(), i.resolution = o, t.featureId) { let t = e.getId(); t === void 0 ? i.featureId = null : i.featureId = t; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream t.geometryType && (i.geometryType = yc(e.getGeometry())); +======= + t.geometryType && (i.geometryType = Rs(e.getGeometry())); +>>>>>>> Stashed changes +======= + t.geometryType && (i.geometryType = Rs(e.getGeometry())); +>>>>>>> Stashed changes let s = 0; for (let e = 0; e < n; ++e) { let t = r[e](i); @@ -7060,8 +11284,18 @@ function Dl(e, t) { return a.length = s, a; }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Ol(e, t) { if (t ??= $s(), !Array.isArray(e)) return Dl([e], t); +======= +function Xc(e, t) { + if (t ??= vs(), !Array.isArray(e)) return Yc([e], t); +>>>>>>> Stashed changes +======= +function Xc(e, t) { + if (t ??= vs(), !Array.isArray(e)) return Yc([e], t); +>>>>>>> Stashed changes let n = e.length; if ("style" in e[0]) { let r = Array(n); @@ -7070,6 +11304,8 @@ function Ol(e, t) { if (!("style" in n)) throw Error("Expected a list of rules with a style property"); r[t] = n; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream return El(r, t); } return Dl(e, t); @@ -7083,6 +11319,36 @@ function kl(e, t) { o = Array(e); for (let r = 0; r < e; ++r) o[r] = Al(n.style[r], t); } else o = [Al(n.style, t)]; +======= + return Jc(r, t); + } + return Yc(e, t); +} +function Zc(e, t) { + let n = e.length, r = Array(n); + for (let i = 0; i < n; ++i) { + let n = e[i], a = "filter" in n ? Bs(n.filter, as, t) : qc, o; + if (Array.isArray(n.style)) { + let e = n.style.length; + o = Array(e); + for (let r = 0; r < e; ++r) o[r] = Qc(n.style[r], t); + } else o = [Qc(n.style, t)]; +>>>>>>> Stashed changes +======= + return Jc(r, t); + } + return Yc(e, t); +} +function Zc(e, t) { + let n = e.length, r = Array(n); + for (let i = 0; i < n; ++i) { + let n = e[i], a = "filter" in n ? Bs(n.filter, as, t) : qc, o; + if (Array.isArray(n.style)) { + let e = n.style.length; + o = Array(e); + for (let r = 0; r < e; ++r) o[r] = Qc(n.style[r], t); + } else o = [Qc(n.style, t)]; +>>>>>>> Stashed changes r[i] = { filter: a, styles: o @@ -7103,10 +11369,23 @@ function kl(e, t) { return i; }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Al(e, t) { let n = jl(e, "", t), i = Ml(e, "", t), a = Nl(e, t), o = Pl(e, t), s = zl(e, "z-index", t); if (!n && !i && !a && !o && !r(e)) throw Error("No fill, stroke, point, or text symbolizer properties in style: " + JSON.stringify(e)); let c = new vl(); +======= +======= +>>>>>>> Stashed changes +function Qc(e, t) { + let n = $c(e, "", t), r = el(e, "", t), i = tl(e, t), a = nl(e, t), o = sl(e, "z-index", t); + if (!n && !r && !i && !a && !te(e)) throw Error("No fill, stroke, point, or text symbolizer properties in style: " + JSON.stringify(e)); + let s = new Bc(); +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes return function(e) { let t = !0; if (n) { @@ -7128,6 +11407,8 @@ function Al(e, t) { return s && c.setZIndex(s(e)), t ? null : c; }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function jl(e, t, n) { let r; if (t + "fill-pattern-src" in e) r = Vl(e, t + "fill-", n); @@ -7150,6 +11431,54 @@ function Ml(e, t, n) { if (i) { let t = i(e); if (t === xi) return null; +======= +function $c(e, t, n) { + let r; + if (t + "fill-pattern-src" in e) r = ll(e, t + "fill-", n); + else { + if (e[t + "fill-color"] === "none") return (e) => null; + r = dl(e, t + "fill-color", n); + } + if (!r) return null; + let i = new Ic(); + return function(e) { + let t = r(e); + return t === jo ? null : (i.setColor(t), i); + }; +} +function el(e, t, n) { + let r = sl(e, t + "stroke-width", n), i = dl(e, t + "stroke-color", n); + if (!r && !i) return null; + let a = cl(e, t + "stroke-line-cap", n), o = cl(e, t + "stroke-line-join", n), s = fl(e, t + "stroke-line-dash", n), c = sl(e, t + "stroke-line-dash-offset", n), l = sl(e, t + "stroke-miter-limit", n), u = sl(e, t + "stroke-offset", n), d = new zc(); + return function(e) { + if (i) { + let t = i(e); + if (t === jo) return null; +>>>>>>> Stashed changes +======= +function $c(e, t, n) { + let r; + if (t + "fill-pattern-src" in e) r = ll(e, t + "fill-", n); + else { + if (e[t + "fill-color"] === "none") return (e) => null; + r = dl(e, t + "fill-color", n); + } + if (!r) return null; + let i = new Ic(); + return function(e) { + let t = r(e); + return t === jo ? null : (i.setColor(t), i); + }; +} +function el(e, t, n) { + let r = sl(e, t + "stroke-width", n), i = dl(e, t + "stroke-color", n); + if (!r && !i) return null; + let a = cl(e, t + "stroke-line-cap", n), o = cl(e, t + "stroke-line-join", n), s = fl(e, t + "stroke-line-dash", n), c = sl(e, t + "stroke-line-dash-offset", n), l = sl(e, t + "stroke-miter-limit", n), u = sl(e, t + "stroke-offset", n), d = new zc(); + return function(e) { + if (i) { + let t = i(e); + if (t === jo) return null; +>>>>>>> Stashed changes d.setColor(t); } if (r && d.setWidth(r(e)), a) { @@ -7165,10 +11494,24 @@ function Ml(e, t, n) { return s && d.setLineDash(s(e)), c && d.setLineDashOffset(c(e)), l && d.setMiterLimit(l(e)), u && d.setOffset(u(e)), d; }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Nl(e, t) { let n = "text-", r = Bl(e, "text-value", t); if (!r) return null; let i = jl(e, n, t), a = jl(e, "text-background-", t), o = Ml(e, n, t), s = Ml(e, "text-background-", t), c = Bl(e, "text-font", t), l = zl(e, "text-max-angle", t), u = zl(e, "text-offset-x", t), d = zl(e, "text-offset-y", t), f = Hl(e, "text-overflow", t), p = Bl(e, "text-placement", t), m = zl(e, "text-repeat", t), h = ql(e, "text-scale", t), g = Hl(e, "text-rotate-with-view", t), _ = zl(e, "text-rotation", t), v = Bl(e, "text-align", t), y = Bl(e, "text-justify", t), b = Bl(e, "text-baseline", t), x = Hl(e, "text-keep-upright", t), S = Wl(e, "text-padding", t), C = new wl({ declutterMode: eu(e, "text-declutter-mode") }); +======= +function tl(e, t) { + let n = "text-", r = cl(e, "text-value", t); + if (!r) return null; + let i = $c(e, n, t), a = $c(e, "text-background-", t), o = el(e, n, t), s = el(e, "text-background-", t), c = cl(e, "text-font", t), l = sl(e, "text-max-angle", t), u = sl(e, "text-offset-x", t), d = sl(e, "text-offset-y", t), f = ul(e, "text-overflow", t), p = cl(e, "text-placement", t), m = sl(e, "text-repeat", t), h = hl(e, "text-scale", t), g = ul(e, "text-rotate-with-view", t), _ = sl(e, "text-rotation", t), v = cl(e, "text-align", t), y = cl(e, "text-justify", t), b = cl(e, "text-baseline", t), x = ul(e, "text-keep-upright", t), S = fl(e, "text-padding", t), C = new Kc({ declutterMode: Sl(e, "text-declutter-mode") }); +>>>>>>> Stashed changes +======= +function tl(e, t) { + let n = "text-", r = cl(e, "text-value", t); + if (!r) return null; + let i = $c(e, n, t), a = $c(e, "text-background-", t), o = el(e, n, t), s = el(e, "text-background-", t), c = cl(e, "text-font", t), l = sl(e, "text-max-angle", t), u = sl(e, "text-offset-x", t), d = sl(e, "text-offset-y", t), f = ul(e, "text-overflow", t), p = cl(e, "text-placement", t), m = sl(e, "text-repeat", t), h = hl(e, "text-scale", t), g = ul(e, "text-rotate-with-view", t), _ = sl(e, "text-rotation", t), v = cl(e, "text-align", t), y = cl(e, "text-justify", t), b = cl(e, "text-baseline", t), x = ul(e, "text-keep-upright", t), S = fl(e, "text-padding", t), C = new Kc({ declutterMode: Sl(e, "text-declutter-mode") }); +>>>>>>> Stashed changes return function(e) { if (C.setText(r(e)), i && C.setFill(i(e)), a && C.setBackgroundFill(a(e)), o && C.setStroke(o(e)), s && C.setBackgroundStroke(s(e)), c && C.setFont(c(e)), l && C.setMaxAngle(l(e)), u && C.setOffsetX(u(e)), d && C.setOffsetY(d(e)), f && C.setOverflow(f(e)), p) { let t = p(e); @@ -7193,6 +11536,8 @@ function Nl(e, t) { return S && C.setPadding(S(e)), x && C.setKeepUpright(x(e)), C; }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Pl(e, t) { return "icon-src" in e ? Fl(e, t) : "shape-points" in e ? Il(e, t) : "circle-radius" in e ? Ll(e, t) : null; } @@ -7200,6 +11545,20 @@ function Fl(e, t) { let n = "icon-src", r = nu(e[n], n), i = Gl(e, "icon-anchor", t), a = ql(e, "icon-scale", t), o = zl(e, "icon-opacity", t), s = Gl(e, "icon-displacement", t), c = zl(e, "icon-rotation", t), l = Hl(e, "icon-rotate-with-view", t), u = Zl(e, "icon-anchor-origin"), d = Ql(e, "icon-anchor-x-units"), f = Ql(e, "icon-anchor-y-units"), p = Rl(e, "icon-color"), m, h = null; p !== void 0 && (Array.isArray(p) && p.length > 0 && typeof p[0] == "string" ? h = Ul(e, "icon-color", t) : m = iu(p, "icon-color")); let g = Xl(e, "icon-cross-origin"), _ = $l(e, "icon-offset"), v = Zl(e, "icon-offset-origin"), y = Jl(e, "icon-width"), b = { +======= +======= +>>>>>>> Stashed changes +function nl(e, t) { + return "icon-src" in e ? rl(e, t) : "shape-points" in e ? il(e, t) : "circle-radius" in e ? al(e, t) : null; +} +function rl(e, t) { + let n = "icon-src", r = wl(e[n], n), i = pl(e, "icon-anchor", t), a = hl(e, "icon-scale", t), o = sl(e, "icon-opacity", t), s = pl(e, "icon-displacement", t), c = sl(e, "icon-rotation", t), l = ul(e, "icon-rotate-with-view", t), u = yl(e, "icon-anchor-origin"), d = bl(e, "icon-anchor-x-units"), f = bl(e, "icon-anchor-y-units"), p = ol(e, "icon-color"), m, h = null; + p !== void 0 && (Array.isArray(p) && p.length > 0 && typeof p[0] == "string" ? h = dl(e, "icon-color", t) : m = El(p, "icon-color")); + let g = vl(e, "icon-cross-origin"), _ = xl(e, "icon-offset"), v = yl(e, "icon-offset-origin"), y = gl(e, "icon-width"), b = { +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes src: r, anchorOrigin: u, anchorXUnits: d, @@ -7207,20 +11566,44 @@ function Fl(e, t) { crossOrigin: g, offset: _, offsetOrigin: v, +<<<<<<< Updated upstream +<<<<<<< Updated upstream height: Jl(e, "icon-height"), width: y, size: Yl(e, "icon-size"), declutterMode: eu(e, "icon-declutter-mode") +======= + height: gl(e, "icon-height"), + width: y, + size: _l(e, "icon-size"), + declutterMode: Sl(e, "icon-declutter-mode") +>>>>>>> Stashed changes +======= + height: gl(e, "icon-height"), + width: y, + size: _l(e, "icon-size"), + declutterMode: Sl(e, "icon-declutter-mode") +>>>>>>> Stashed changes }, x = null; return function(e) { if (x) h && x.setColor(h(e)); else { let t = h ? h(e) : m; +<<<<<<< Updated upstream +<<<<<<< Updated upstream x = new gl(t === void 0 ? Object.assign({}, b) : Object.assign({}, b, { color: t })); +======= + x = new Rc(t === void 0 ? Object.assign({}, b) : Object.assign({}, b, { color: t })); +>>>>>>> Stashed changes +======= + x = new Rc(t === void 0 ? Object.assign({}, b) : Object.assign({}, b, { color: t })); +>>>>>>> Stashed changes } return o && x.setOpacity(o(e)), s && x.setDisplacement(s(e)), c && x.setRotation(c(e)), l && x.setRotateWithView(l(e)), a && x.setScale(a(e)), i && x.setAnchor(i(e)), x; }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Il(e, t) { let n = "shape-", r = "shape-points", i = "shape-radius", a = ru(e[r], r); if (!(i in e)) throw Error(`Expected a number for ${i}`); @@ -7230,33 +11613,100 @@ function Il(e, t) { radius2: u, angle: Jl(e, "shape-angle"), declutterMode: eu(e, "shape-declutter-mode") +======= +function il(e, t) { + let n = "shape-", r = "shape-points", i = "shape-radius", a = Tl(e[r], r); + if (!(i in e)) throw Error(`Expected a number for ${i}`); + let o = sl(e, i, t), s = typeof e[i] == "number" ? e[i] : 5, c = "shape-radius2", l = sl(e, c, t), u = typeof e[c] == "number" ? e[c] : void 0, d = $c(e, n, t), f = el(e, n, t), p = hl(e, "shape-scale", t), m = pl(e, "shape-displacement", t), h = sl(e, "shape-rotation", t), g = ul(e, "shape-rotate-with-view", t), _ = new Pc({ + points: a, + radius: s, + radius2: u, + angle: gl(e, "shape-angle"), + declutterMode: Sl(e, "shape-declutter-mode") +>>>>>>> Stashed changes +======= +function il(e, t) { + let n = "shape-", r = "shape-points", i = "shape-radius", a = Tl(e[r], r); + if (!(i in e)) throw Error(`Expected a number for ${i}`); + let o = sl(e, i, t), s = typeof e[i] == "number" ? e[i] : 5, c = "shape-radius2", l = sl(e, c, t), u = typeof e[c] == "number" ? e[c] : void 0, d = $c(e, n, t), f = el(e, n, t), p = hl(e, "shape-scale", t), m = pl(e, "shape-displacement", t), h = sl(e, "shape-rotation", t), g = ul(e, "shape-rotate-with-view", t), _ = new Pc({ + points: a, + radius: s, + radius2: u, + angle: gl(e, "shape-angle"), + declutterMode: Sl(e, "shape-declutter-mode") +>>>>>>> Stashed changes }); return function(e) { return o && _.setRadius(o(e)), l && _.setRadius2(l(e)), d && _.setFill(d(e)), f && _.setStroke(f(e)), m && _.setDisplacement(m(e)), h && _.setRotation(h(e)), g && _.setRotateWithView(g(e)), p && _.setScale(p(e)), _; }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Ll(e, t) { let n = "circle-", r = jl(e, n, t), i = Ml(e, n, t), a = zl(e, "circle-radius", t), o = ql(e, "circle-scale", t), s = Gl(e, "circle-displacement", t), c = zl(e, "circle-rotation", t), l = Hl(e, "circle-rotate-with-view", t), u = new pl({ radius: 5, declutterMode: eu(e, "circle-declutter-mode") +======= +function al(e, t) { + let n = "circle-", r = $c(e, n, t), i = el(e, n, t), a = sl(e, "circle-radius", t), o = hl(e, "circle-scale", t), s = pl(e, "circle-displacement", t), c = sl(e, "circle-rotation", t), l = ul(e, "circle-rotate-with-view", t), u = new Fc({ + radius: 5, + declutterMode: Sl(e, "circle-declutter-mode") +>>>>>>> Stashed changes +======= +function al(e, t) { + let n = "circle-", r = $c(e, n, t), i = el(e, n, t), a = sl(e, "circle-radius", t), o = hl(e, "circle-scale", t), s = pl(e, "circle-displacement", t), c = sl(e, "circle-rotation", t), l = ul(e, "circle-rotate-with-view", t), u = new Fc({ + radius: 5, + declutterMode: Sl(e, "circle-declutter-mode") +>>>>>>> Stashed changes }); return function(e) { return a && u.setRadius(a(e)), r && u.setFill(r(e)), i && u.setStroke(i(e)), s && u.setDisplacement(s(e)), c && u.setRotation(c(e)), l && u.setRotateWithView(l(e)), o && u.setScale(o(e)), u; }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Rl(e, t) { +======= +function ol(e, t) { +>>>>>>> Stashed changes +======= +function ol(e, t) { +>>>>>>> Stashed changes if (!(t in e)) return; let n = e[t]; return n === void 0 ? void 0 : n; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function zl(e, t, n) { let r = Rl(e, t); if (r === void 0) return; let i = xc(r, U, n); +======= +function sl(e, t, n) { + let r = ol(e, t); + if (r === void 0) return; +======= +function sl(e, t, n) { + let r = ol(e, t); + if (r === void 0) return; +>>>>>>> Stashed changes + let i = Bs(r, V, n); + return function(e) { + return Tl(i(e), t); + }; +} +function cl(e, t, n) { + let r = ol(e, t); + if (r === void 0) return null; + let i = Bs(r, H, n); +<<<<<<< Updated upstream +>>>>>>> Stashed changes return function(e) { return ru(i(e), t); }; } +<<<<<<< Updated upstream function Bl(e, t, n) { let r = Rl(e, t); if (r === void 0) return null; @@ -7267,6 +11717,18 @@ function Bl(e, t, n) { } function Vl(e, t, n) { let r = Bl(e, t + "pattern-src", n), i = Kl(e, t + "pattern-offset", n), a = Kl(e, t + "pattern-size", n), o = Ul(e, t + "color", n); +======= +function ll(e, t, n) { + let r = cl(e, t + "pattern-src", n), i = ml(e, t + "pattern-offset", n), a = ml(e, t + "pattern-size", n), o = dl(e, t + "color", n); +>>>>>>> Stashed changes +======= + return function(e) { + return wl(i(e), t); + }; +} +function ll(e, t, n) { + let r = cl(e, t + "pattern-src", n), i = ml(e, t + "pattern-offset", n), a = ml(e, t + "pattern-size", n), o = dl(e, t + "color", n); +>>>>>>> Stashed changes return function(e) { return { src: r(e), @@ -7276,16 +11738,32 @@ function Vl(e, t, n) { }; }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Hl(e, t, n) { let r = Rl(e, t); if (r === void 0) return null; let i = xc(r, Bs, n); +======= +function ul(e, t, n) { + let r = ol(e, t); + if (r === void 0) return null; + let i = Bs(r, as, n); +>>>>>>> Stashed changes +======= +function ul(e, t, n) { + let r = ol(e, t); + if (r === void 0) return null; + let i = Bs(r, as, n); +>>>>>>> Stashed changes return function(e) { let n = i(e); if (typeof n != "boolean") throw Error(`Expected a boolean for ${t}`); return n; }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Ul(e, t, n) { let r = Rl(e, t); if (r === void 0) return null; @@ -7296,13 +11774,49 @@ function Ul(e, t, n) { } function Wl(e, t, n) { let r = Rl(e, t); +======= +function dl(e, t, n) { + let r = ol(e, t); + if (r === void 0) return null; + let i = Bs(r, U, n); + return function(e) { + return El(i(e), t); + }; +} +function fl(e, t, n) { + let r = ol(e, t); +>>>>>>> Stashed changes +======= +function dl(e, t, n) { + let r = ol(e, t); + if (r === void 0) return null; + let i = Bs(r, U, n); + return function(e) { + return El(i(e), t); + }; +} +function fl(e, t, n) { + let r = ol(e, t); +>>>>>>> Stashed changes if (r === void 0) return null; if (Array.isArray(r) && (r.length === 0 || typeof r[0] != "string")) { let e = r.map((e, r) => { if (typeof e == "number") return () => e; +<<<<<<< Updated upstream +<<<<<<< Updated upstream let i = xc(e, U, n); return function(e) { return ru(i(e), `${t}[${r}]`); +======= + let i = Bs(e, V, n); + return function(e) { + return Tl(i(e), `${t}[${r}]`); +>>>>>>> Stashed changes +======= + let i = Bs(e, V, n); + return function(e) { + return Tl(i(e), `${t}[${r}]`); +>>>>>>> Stashed changes }; }); return function(t) { @@ -7311,6 +11825,8 @@ function Wl(e, t, n) { return n; }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream let i = xc(r, Vs, n); return function(e) { return tu(i(e), t); @@ -7322,10 +11838,38 @@ function Gl(e, t, n) { let i = xc(r, Vs, n); return function(e) { let n = tu(i(e), t); +======= + let i = Bs(r, os, n); + return function(e) { + return Cl(i(e), t); + }; +} +function pl(e, t, n) { + let r = ol(e, t); + if (r === void 0) return null; + let i = Bs(r, os, n); + return function(e) { + let n = Cl(i(e), t); +>>>>>>> Stashed changes +======= + let i = Bs(r, os, n); + return function(e) { + return Cl(i(e), t); + }; +} +function pl(e, t, n) { + let r = ol(e, t); + if (r === void 0) return null; + let i = Bs(r, os, n); + return function(e) { + let n = Cl(i(e), t); +>>>>>>> Stashed changes if (n.length !== 2) throw Error(`Expected two numbers for ${t}`); return n; }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Kl(e, t, n) { let r = Rl(e, t); if (r === void 0) return null; @@ -7338,17 +11882,48 @@ function ql(e, t, n) { let r = Rl(e, t); if (r === void 0) return null; let i = xc(r, Vs | U, n); +======= +======= +>>>>>>> Stashed changes +function ml(e, t, n) { + let r = ol(e, t); + if (r === void 0) return null; + let i = Bs(r, os, n); +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes return function(e) { return ou(i(e), t); }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Jl(e, t) { +======= +======= +>>>>>>> Stashed changes +function hl(e, t, n) { + let r = ol(e, t); + if (r === void 0) return null; + let i = Bs(r, os | V, n); + return function(e) { + return Ol(i(e), t); + }; +} +function gl(e, t) { +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes let n = e[t]; if (n !== void 0) { if (typeof n != "number") throw Error(`Expected a number for ${t}`); return n; } } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Yl(e, t) { let n = e[t]; if (n !== void 0) { @@ -7358,44 +11933,83 @@ function Yl(e, t) { } } function Xl(e, t) { +======= +======= +>>>>>>> Stashed changes +function _l(e, t) { +>>>>>>> Stashed changes let n = e[t]; if (n !== void 0) { - if (typeof n != "string") throw Error(`Expected a string for ${t}`); + if (typeof n == "number") return rs(n); + if (!Array.isArray(n) || n.length !== 2 || typeof n[0] != "number" || typeof n[1] != "number") throw Error(`Expected a number or size array for ${t}`); return n; } } function Zl(e, t) { let n = e[t]; if (n !== void 0) { - if (n !== "bottom-left" && n !== "bottom-right" && n !== "top-left" && n !== "top-right") throw Error(`Expected bottom-left, bottom-right, top-left, or top-right for ${t}`); + if (typeof n == "number") return rs(n); + if (!Array.isArray(n) || n.length !== 2 || typeof n[0] != "number" || typeof n[1] != "number") throw Error(`Expected a number or size array for ${t}`); return n; } } function Ql(e, t) { let n = e[t]; if (n !== void 0) { - if (n !== "pixels" && n !== "fraction") throw Error(`Expected pixels or fraction for ${t}`); + if (typeof n != "string") throw Error(`Expected a string for ${t}`); return n; } } function $l(e, t) { let n = e[t]; +<<<<<<< Updated upstream if (n !== void 0) return tu(n, t); +======= + if (n !== void 0) { + if (n !== "bottom-left" && n !== "bottom-right" && n !== "top-left" && n !== "top-right") throw Error(`Expected bottom-left, bottom-right, top-left, or top-right for ${t}`); + return n; + } +>>>>>>> Stashed changes } function eu(e, t) { let n = e[t]; +<<<<<<< Updated upstream + if (n !== void 0) return Cl(n, t); +======= + if (n !== void 0) { + if (n !== "pixels" && n !== "fraction") throw Error(`Expected pixels or fraction for ${t}`); + return n; + } +>>>>>>> Stashed changes +} +function Sl(e, t) { + let n = e[t]; + if (n !== void 0) return Cl(n, t); +} +function Sl(e, t) { + let n = e[t]; if (n !== void 0) { if (typeof n != "string") throw Error(`Expected a string for ${t}`); if (n !== "declutter" && n !== "obstacle" && n !== "none") throw Error(`Expected declutter, obstacle, or none for ${t}`); return n; } } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function tu(e, t) { +======= +function Cl(e, t) { +>>>>>>> Stashed changes +======= +function Cl(e, t) { +>>>>>>> Stashed changes if (!Array.isArray(e)) throw Error(`Expected an array for ${t}`); let n = e.length; for (let r = 0; r < n; ++r) if (typeof e[r] != "number") throw Error(`Expected an array of numbers for ${t}`); return e; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function nu(e, t) { if (typeof e != "string") throw Error(`Expected a string for ${t}`); return e; @@ -7421,6 +12035,60 @@ function ou(e, t) { //#endregion //#region node_modules/ol/layer/BaseVector.js var su = { RENDER_ORDER: "renderOrder" }, cu = class extends yo { +======= +function wl(e, t) { + if (typeof e != "string") throw Error(`Expected a string for ${t}`); + return e; +} +function Tl(e, t) { + if (typeof e != "number") throw Error(`Expected a number for ${t}`); + return e; +} +function El(e, t) { + if (typeof e == "string") return e; + let n = Cl(e, t), r = n.length; + if (r < 3 || r > 4) throw Error(`Expected a color with 3 or 4 values for ${t}`); + return n; +} +function Dl(e, t) { + let n = Cl(e, t); + if (n.length !== 2) throw Error(`Expected an array of two numbers for ${t}`); + return n; +} +function Ol(e, t) { + return typeof e == "number" ? e : Dl(e, t); +} +//#endregion +//#region node_modules/ol/layer/BaseVector.js +var kl = { RENDER_ORDER: "renderOrder" }, Al = class extends uo { +>>>>>>> Stashed changes +======= +function wl(e, t) { + if (typeof e != "string") throw Error(`Expected a string for ${t}`); + return e; +} +function Tl(e, t) { + if (typeof e != "number") throw Error(`Expected a number for ${t}`); + return e; +} +function El(e, t) { + if (typeof e == "string") return e; + let n = Cl(e, t), r = n.length; + if (r < 3 || r > 4) throw Error(`Expected a color with 3 or 4 values for ${t}`); + return n; +} +function Dl(e, t) { + let n = Cl(e, t); + if (n.length !== 2) throw Error(`Expected an array of two numbers for ${t}`); + return n; +} +function Ol(e, t) { + return typeof e == "number" ? e : Dl(e, t); +} +//#endregion +//#region node_modules/ol/layer/BaseVector.js +var kl = { RENDER_ORDER: "renderOrder" }, Al = class extends uo { +>>>>>>> Stashed changes constructor(e) { e ||= {}; let t = Object.assign({}, e); @@ -7436,7 +12104,15 @@ var su = { RENDER_ORDER: "renderOrder" }, cu = class extends yo { return this.renderBuffer_; } getRenderOrder() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return this.get(su.RENDER_ORDER); +======= + return this.get(kl.RENDER_ORDER); +>>>>>>> Stashed changes +======= + return this.get(kl.RENDER_ORDER); +>>>>>>> Stashed changes } getStyle() { return this.style_; @@ -7452,6 +12128,8 @@ var su = { RENDER_ORDER: "renderOrder" }, cu = class extends yo { } renderDeclutter(e, t) { let n = this.getDeclutter(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream n in e.declutter || (e.declutter[n] = new ws(9)), this.getRenderer().renderDeclutter(e, t); } setRenderOrder(e) { @@ -7461,11 +12139,35 @@ var su = { RENDER_ORDER: "renderOrder" }, cu = class extends yo { this.style_ = e === void 0 ? xl : e; let t = lu(e); this.styleFunction_ = e === null ? void 0 : yl(t), this.changed(); +======= + n in e.declutter || (e.declutter[n] = new go(9)), this.getRenderer().renderDeclutter(e, t); + } + setRenderOrder(e) { + this.set(kl.RENDER_ORDER, e); + } + setStyle(e) { + this.style_ = e === void 0 ? Uc : e; + let t = jl(e); + this.styleFunction_ = e === null ? void 0 : Vc(t), this.changed(); +>>>>>>> Stashed changes +======= + n in e.declutter || (e.declutter[n] = new go(9)), this.getRenderer().renderDeclutter(e, t); + } + setRenderOrder(e) { + this.set(kl.RENDER_ORDER, e); + } + setStyle(e) { + this.style_ = e === void 0 ? Uc : e; + let t = jl(e); + this.styleFunction_ = e === null ? void 0 : Vc(t), this.changed(); +>>>>>>> Stashed changes } setDeclutter(e) { this.declutter_ = e ? String(e) : void 0, this.changed(); } }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream function lu(e) { if (e === void 0) return xl; if (!e) return null; @@ -7476,15 +12178,57 @@ function lu(e) { for (let r = 0; r < t; ++r) { let t = e[r]; if (!(t instanceof vl)) throw Error("Expected a list of style instances"); +======= +function jl(e) { + if (e === void 0) return Uc; + if (!e) return null; + if (typeof e == "function" || e instanceof Bc) return e; + if (Array.isArray(e) && e.length === 0) return []; + if (Array.isArray(e) && e[0] instanceof Bc) { + let t = e.length, n = Array(t); + for (let r = 0; r < t; ++r) { + let t = e[r]; + if (!(t instanceof Bc)) throw Error("Expected a list of style instances"); +>>>>>>> Stashed changes +======= +function jl(e) { + if (e === void 0) return Uc; + if (!e) return null; + if (typeof e == "function" || e instanceof Bc) return e; + if (Array.isArray(e) && e.length === 0) return []; + if (Array.isArray(e) && e[0] instanceof Bc) { + let t = e.length, n = Array(t); + for (let r = 0; r < t; ++r) { + let t = e[r]; + if (!(t instanceof Bc)) throw Error("Expected a list of style instances"); +>>>>>>> Stashed changes n[r] = t; } return n; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream return Ol(e); } //#endregion //#region node_modules/ol/renderer/Map.js var uu = class extends c { +======= +======= +>>>>>>> Stashed changes + return Xc(e); +} +//#endregion +//#region node_modules/ol/render/Event.js +var Ml = class extends ve { + constructor(e, t, n, r) { + super(e), this.inversePixelTransform = t, this.frameState = n, this.context = r; + } +}, Nl = class extends ie { +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes constructor(e) { super(), this.map_ = e; } @@ -7493,7 +12237,7 @@ var uu = class extends c { } calculateMatrices2D(e) { let t = e.viewState, n = e.coordinateToPixelTransform, r = e.pixelToCoordinateTransform; - $r(n, e.size[0] / 2, e.size[1] / 2, 1 / t.resolution, -1 / t.resolution, -t.rotation, -t.center[0], -t.center[1]), ei(r, n); + ei(n, e.size[0] / 2, e.size[1] / 2, 1 / t.resolution, -1 / t.resolution, -t.rotation, -t.center[0], -t.center[1]), ti(r, n); } forEachFeatureAtCoordinate(e, t, n, r, i, a, o, s) { let c, l = t.viewState; @@ -7508,7 +12252,15 @@ var uu = class extends c { let m = t.layerStatesArray, h = m.length, g = [], _ = []; for (let r = 0; r < p.length; r++) for (let i = h - 1; i >= 0; --i) { let a = m[i], d = a.layer; +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (d.hasRenderer() && bo(a, l) && o.call(s, d)) { +======= + if (d.hasRenderer() && fo(a, l) && o.call(s, d)) { +>>>>>>> Stashed changes +======= + if (d.hasRenderer() && fo(a, l) && o.call(s, d)) { +>>>>>>> Stashed changes let i = d.getRenderer(), o = d.getSource(); if (i && o) { let s = o.getWrapX() ? f : e, l = u.bind(null, a.managed); @@ -7531,6 +12283,8 @@ var uu = class extends c { E(); } scheduleExpireIconCache(e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream Ic.canExpireCache() && e.postRenderFunctions.push(du); } }; @@ -7546,11 +12300,48 @@ var fu = class extends uu { n.position = "absolute", n.width = "100%", n.height = "100%", n.zIndex = "0", this.element_.className = F + " ol-layers"; let r = e.getViewport(); r && r.insertBefore(this.element_, r.firstChild || null), this.children_ = [], this.renderedVisible_ = !0; +======= + ic.canExpireCache() && e.postRenderFunctions.push(Pl); + } +}; +function Pl(e, t) { + ic.expire(); +} +//#endregion +//#region node_modules/ol/renderer/Composite.js +var Fl = class extends Nl { + constructor(e) { +======= + ic.canExpireCache() && e.postRenderFunctions.push(Pl); + } +}; +function Pl(e, t) { + ic.expire(); +} +//#endregion +//#region node_modules/ol/renderer/Composite.js +var Fl = class extends Nl { + constructor(e) { +>>>>>>> Stashed changes + super(e), this.fontChangeListenerKey_ = A(yc, re.PROPERTYCHANGE, e.redrawText, e), this.element_ = g ? D() : document.createElement("div"); + let t = this.element_.style; + t.position = "absolute", t.width = "100%", t.height = "100%", t.zIndex = "0", this.element_.className = r + " ol-layers"; + let n = e.getViewport(); + n && n.insertBefore(this.element_, n.firstChild || null), this.children_ = [], this.renderedVisible_ = !0; +>>>>>>> Stashed changes } dispatchRenderEvent(e, t) { let n = this.getMap(); if (n.hasListener(e)) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let r = new Gi(e, void 0, t); +======= + let r = new Ml(e, void 0, t); +>>>>>>> Stashed changes +======= + let r = new Ml(e, void 0, t); +>>>>>>> Stashed changes n.dispatchEvent(r); } } @@ -7562,9 +12353,21 @@ var fu = class extends uu { this.renderedVisible_ &&= (this.element_.style.display = "none", !1); return; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.calculateMatrices2D(e), this.dispatchRenderEvent(Ki.PRECOMPOSE, e); let t = e.layerStatesArray.sort((e, t) => e.zIndex - t.zIndex); t.some((e) => e.layer instanceof cu && e.layer.getDeclutter()) && (e.declutter = {}); +======= + this.calculateMatrices2D(e), this.dispatchRenderEvent(lo.PRECOMPOSE, e); + let t = e.layerStatesArray.sort((e, t) => e.zIndex - t.zIndex); + t.some((e) => e.layer instanceof Al && e.layer.getDeclutter()) && (e.declutter = {}); +>>>>>>> Stashed changes +======= + this.calculateMatrices2D(e), this.dispatchRenderEvent(lo.PRECOMPOSE, e); + let t = e.layerStatesArray.sort((e, t) => e.zIndex - t.zIndex); + t.some((e) => e.layer instanceof Al && e.layer.getDeclutter()) && (e.declutter = {}); +>>>>>>> Stashed changes let n = e.viewState; this.children_.length = 0; let r = this.getMap().getTargetElement(), i; @@ -7574,7 +12377,15 @@ var fu = class extends uu { let i = t[r]; e.layerIndex = r; let s = i.layer, c = s.getSourceState(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (!bo(i, n) || c != "ready" && c != "undefined") { +======= + if (!fo(i, n) || c != "ready" && c != "undefined") { +>>>>>>> Stashed changes +======= + if (!fo(i, n) || c != "ready" && c != "undefined") { +>>>>>>> Stashed changes s.unrender(); continue; } @@ -7589,14 +12400,22 @@ var fu = class extends uu { let r = e.style.opacity || t.style.opacity; i.globalAlpha = r === "" ? 1 : Number(r); let a = t.style.transform; - if (a) i.transform(...ii(a)); + if (a) i.transform(...ai(a)); else { let e = parseFloat(t.style.width) / t.width, n = parseFloat(t.style.height) / t.height; i.transform(e, 0, 0, n, 0, 0); } i.drawImage(t, 0, 0), i.restore(); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.dispatchRenderEvent(Ki.POSTCOMPOSE, e), this.renderedVisible_ ||= (this.element_.style.display = "", !0), this.scheduleExpireIconCache(e); +======= + this.dispatchRenderEvent(lo.POSTCOMPOSE, e), this.renderedVisible_ ||= (this.element_.style.display = "", !0), this.scheduleExpireIconCache(e); +>>>>>>> Stashed changes +======= + this.dispatchRenderEvent(lo.POSTCOMPOSE, e), this.renderedVisible_ ||= (this.element_.style.display = "", !0), this.scheduleExpireIconCache(e); +>>>>>>> Stashed changes } declutter(e, t) { if (e.declutter) { @@ -7610,6 +12429,8 @@ var fu = class extends uu { }; //#endregion //#region node_modules/ol/Map.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function pu(e) { if (e instanceof yo) { e.setMapInternal(null); @@ -7636,6 +12457,59 @@ var hu = class extends A { t.view && !(t.view instanceof uo) && t.view.then(function(e) { r.setView(new uo(e)); }), this.controls.addEventListener(e.ADD, (e) => { +======= +function Il(e) { + if (e instanceof uo) { + e.setMapInternal(null); + return; + } + e instanceof co && e.getLayers().forEach(Il); +} +function Ll(e, t) { + if (e instanceof uo) { + e.setMapInternal(t); + return; + } + if (e instanceof co) { + let n = e.getLayers().getArray(); + for (let e = 0, r = n.length; e < r; ++e) Ll(n[e], t); + } +} +var Rl = class extends we { + constructor(t) { + super(), t ||= {}, this.on, this.once, this.un; + let n = zl(t); + this.renderComplete_ = !1, this.loaded_ = !0, this.boundHandleBrowserEvent_ = this.handleBrowserEvent.bind(this), this.maxTilesLoading_ = t.maxTilesLoading === void 0 ? 16 : t.maxTilesLoading, this.pixelRatio_ = t.pixelRatio === void 0 ? h : t.pixelRatio, this.postRenderTimeoutHandle_, this.animationDelayKey_, this.animationDelay_ = this.animationDelay_.bind(this), this.coordinateToPixelTransform_ = qr(), this.pixelToCoordinateTransform_ = qr(), this.frameIndex_ = 0, this.frameState_ = null, this.previousExtent_ = null, this.viewPropertyListenerKey_ = null, this.viewChangeListenerKey_ = null, this.layerGroupPropertyListenerKeys_ = null, g || (this.viewport_ = document.createElement("div"), this.viewport_.className = "ol-viewport" + ("ontouchstart" in window ? " ol-touch" : ""), this.viewport_.style.position = "relative", this.viewport_.style.overflow = "hidden", this.viewport_.style.width = "100%", this.viewport_.style.height = "100%", this.overlayContainer_ = document.createElement("div"), this.overlayContainer_.style.position = "absolute", this.overlayContainer_.style.zIndex = "0", this.overlayContainer_.style.width = "100%", this.overlayContainer_.style.height = "100%", this.overlayContainer_.style.pointerEvents = "none", this.overlayContainer_.className = "ol-overlaycontainer", this.viewport_.appendChild(this.overlayContainer_), this.overlayContainerStopEvent_ = document.createElement("div"), this.overlayContainerStopEvent_.style.position = "absolute", this.overlayContainerStopEvent_.style.zIndex = "0", this.overlayContainerStopEvent_.style.width = "100%", this.overlayContainerStopEvent_.style.height = "100%", this.overlayContainerStopEvent_.style.pointerEvents = "none", this.overlayContainerStopEvent_.className = "ol-overlaycontainer-stopevent", this.viewport_.appendChild(this.overlayContainerStopEvent_)), this.mapBrowserEventHandler_ = null, this.moveTolerance_ = t.moveTolerance, this.keyboardEventTarget_ = n.keyboardEventTarget, this.targetChangeHandlerKeys_ = null, this.targetElement_ = null, g || (this.resizeObserver_ = new ResizeObserver(() => this.updateSize())), this.controls = n.controls || (g ? new Or() : ba()), this.interactions = n.interactions || (g ? new Or() : ro({ onFocusOnly: !0 })), this.overlays_ = n.overlays, this.overlayIdIndex_ = {}, this.renderer_ = null, this.postRenderFunctions_ = [], this.tileQueue_ = new Fr(this.getTilePriority.bind(this), this.handleTileChange_.bind(this)), this.addChangeListener(e.LAYERGROUP, this.handleLayerGroupChanged_), this.addChangeListener(e.VIEW, this.handleViewChanged_), this.addChangeListener(e.SIZE, this.handleSizeChanged_), this.addChangeListener(e.TARGET, this.handleTargetChanged_), this.setProperties(n.values); + let r = this; +======= +function Il(e) { + if (e instanceof uo) { + e.setMapInternal(null); + return; + } + e instanceof co && e.getLayers().forEach(Il); +} +function Ll(e, t) { + if (e instanceof uo) { + e.setMapInternal(t); + return; + } + if (e instanceof co) { + let n = e.getLayers().getArray(); + for (let e = 0, r = n.length; e < r; ++e) Ll(n[e], t); + } +} +var Rl = class extends we { + constructor(t) { + super(), t ||= {}, this.on, this.once, this.un; + let n = zl(t); + this.renderComplete_ = !1, this.loaded_ = !0, this.boundHandleBrowserEvent_ = this.handleBrowserEvent.bind(this), this.maxTilesLoading_ = t.maxTilesLoading === void 0 ? 16 : t.maxTilesLoading, this.pixelRatio_ = t.pixelRatio === void 0 ? h : t.pixelRatio, this.postRenderTimeoutHandle_, this.animationDelayKey_, this.animationDelay_ = this.animationDelay_.bind(this), this.coordinateToPixelTransform_ = qr(), this.pixelToCoordinateTransform_ = qr(), this.frameIndex_ = 0, this.frameState_ = null, this.previousExtent_ = null, this.viewPropertyListenerKey_ = null, this.viewChangeListenerKey_ = null, this.layerGroupPropertyListenerKeys_ = null, g || (this.viewport_ = document.createElement("div"), this.viewport_.className = "ol-viewport" + ("ontouchstart" in window ? " ol-touch" : ""), this.viewport_.style.position = "relative", this.viewport_.style.overflow = "hidden", this.viewport_.style.width = "100%", this.viewport_.style.height = "100%", this.overlayContainer_ = document.createElement("div"), this.overlayContainer_.style.position = "absolute", this.overlayContainer_.style.zIndex = "0", this.overlayContainer_.style.width = "100%", this.overlayContainer_.style.height = "100%", this.overlayContainer_.style.pointerEvents = "none", this.overlayContainer_.className = "ol-overlaycontainer", this.viewport_.appendChild(this.overlayContainer_), this.overlayContainerStopEvent_ = document.createElement("div"), this.overlayContainerStopEvent_.style.position = "absolute", this.overlayContainerStopEvent_.style.zIndex = "0", this.overlayContainerStopEvent_.style.width = "100%", this.overlayContainerStopEvent_.style.height = "100%", this.overlayContainerStopEvent_.style.pointerEvents = "none", this.overlayContainerStopEvent_.className = "ol-overlaycontainer-stopevent", this.viewport_.appendChild(this.overlayContainerStopEvent_)), this.mapBrowserEventHandler_ = null, this.moveTolerance_ = t.moveTolerance, this.keyboardEventTarget_ = n.keyboardEventTarget, this.targetChangeHandlerKeys_ = null, this.targetElement_ = null, g || (this.resizeObserver_ = new ResizeObserver(() => this.updateSize())), this.controls = n.controls || (g ? new Or() : ba()), this.interactions = n.interactions || (g ? new Or() : ro({ onFocusOnly: !0 })), this.overlays_ = n.overlays, this.overlayIdIndex_ = {}, this.renderer_ = null, this.postRenderFunctions_ = [], this.tileQueue_ = new Fr(this.getTilePriority.bind(this), this.handleTileChange_.bind(this)), this.addChangeListener(e.LAYERGROUP, this.handleLayerGroupChanged_), this.addChangeListener(e.VIEW, this.handleViewChanged_), this.addChangeListener(e.SIZE, this.handleSizeChanged_), this.addChangeListener(e.TARGET, this.handleTargetChanged_), this.setProperties(n.values); + let r = this; +>>>>>>> Stashed changes + t.view && !(t.view instanceof ua) && t.view.then(function(e) { + r.setView(new ua(e)); + }), this.controls.addEventListener(Tr.ADD, (e) => { +>>>>>>> Stashed changes e.element.setMap(this); }), this.controls.addEventListener(e.REMOVE, (e) => { e.element.setMap(null); @@ -7664,7 +12538,15 @@ var hu = class extends A { this.getLayerGroup().getLayers().push(e); } handleLayerAdd_(e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream mu(e.layer, this); +======= + Ll(e.layer, this); +>>>>>>> Stashed changes +======= + Ll(e.layer, this); +>>>>>>> Stashed changes } addOverlay(e) { this.getOverlays().push(e); @@ -7693,7 +12575,15 @@ var hu = class extends A { let e = []; function t(n) { n.forEach(function(n) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream n instanceof bs ? t(n.getLayers()) : e.push(n); +======= + n instanceof co ? t(n.getLayers()) : e.push(n); +>>>>>>> Stashed changes +======= + n instanceof co ? t(n.getLayers()) : e.push(n); +>>>>>>> Stashed changes }); } return t(this.getLayers()), e; @@ -7726,7 +12616,7 @@ var hu = class extends A { } getCoordinateFromPixelInternal(e) { let t = this.frameState_; - return t ? B(t.pixelToCoordinateTransform, e.slice()) : null; + return t ? z(t.pixelToCoordinateTransform, e.slice()) : null; } getControls() { return this.controls; @@ -7774,7 +12664,7 @@ var hu = class extends A { } getPixelFromCoordinateInternal(e) { let t = this.frameState_; - return t ? B(t.coordinateToPixelTransform, e.slice(0, 2)) : null; + return t ? z(t.coordinateToPixelTransform, e.slice(0, 2)) : null; } getPixelRatio() { return this.pixelRatio_; @@ -7830,14 +12720,30 @@ var hu = class extends A { handlePostRender() { let e = this.frameState_, t = this.tileQueue_; if (!t.isEmpty()) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let n = this.maxTilesLoading_, r = n, i = e ? e.viewHints : void 0, a = i ? i[V.ANIMATING] || i[V.INTERACTING] : !1; +======= + let n = this.maxTilesLoading_, r = n, i = e ? e.viewHints : void 0, a = i ? i[Lr.ANIMATING] || i[Lr.INTERACTING] : !1; +>>>>>>> Stashed changes +======= + let n = this.maxTilesLoading_, r = n, i = e ? e.viewHints : void 0, a = i ? i[Lr.ANIMATING] || i[Lr.INTERACTING] : !1; +>>>>>>> Stashed changes if (a) { let t = Date.now() - e.time > 8; n = t ? 0 : 8, r = t ? 0 : 2; } t.getTilesLoading() < n && (a && t.reprioritize(), t.loadMoreTiles(n, r)); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream e && this.renderer_ && !e.animate && (this.renderComplete_ ? (this.hasListener(Ki.RENDERCOMPLETE) && this.renderer_.dispatchRenderEvent(Ki.RENDERCOMPLETE, e), this.loaded_ === !1 && (this.loaded_ = !0, this.dispatchEvent(new wo(De.LOADEND, this, e)))) : this.loaded_ === !0 && (this.loaded_ = !1, this.dispatchEvent(new wo(De.LOADSTART, this, e)))); +======= + e && this.renderer_ && !e.animate && (this.renderComplete_ ? (this.hasListener(lo.RENDERCOMPLETE) && this.renderer_.dispatchRenderEvent(lo.RENDERCOMPLETE, e), this.loaded_ === !1 && (this.loaded_ = !0, this.dispatchEvent(new kr(N.LOADEND, this, e)))) : this.loaded_ === !0 && (this.loaded_ = !1, this.dispatchEvent(new kr(N.LOADSTART, this, e)))); +>>>>>>> Stashed changes +======= + e && this.renderer_ && !e.animate && (this.renderComplete_ ? (this.hasListener(lo.RENDERCOMPLETE) && this.renderer_.dispatchRenderEvent(lo.RENDERCOMPLETE, e), this.loaded_ === !1 && (this.loaded_ = !0, this.dispatchEvent(new kr(N.LOADEND, this, e)))) : this.loaded_ === !0 && (this.loaded_ = !1, this.dispatchEvent(new kr(N.LOADSTART, this, e)))); +>>>>>>> Stashed changes let n = this.postRenderFunctions_; if (e) for (let t = 0, r = n.length; t < r; ++t) n[t](this, e); n.length = 0; @@ -7858,10 +12764,20 @@ var hu = class extends A { let e = this.getTarget(), t = typeof e == "string" ? document.getElementById(e) : e; if (this.targetElement_ = t, !t) this.renderer_ &&= (clearTimeout(this.postRenderTimeoutHandle_), this.postRenderTimeoutHandle_ = void 0, this.postRenderFunctions_.length = 0, this.renderer_.dispose(), null), this.animationDelayKey_ &&= (cancelAnimationFrame(this.animationDelayKey_), void 0); else { +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (Ee(t) || t.appendChild(this.viewport_), this.renderer_ ||= new fu(this), !Ee(t)) { this.mapBrowserEventHandler_ = new Oo(this, this.moveTolerance_); for (let e in Eo) this.mapBrowserEventHandler_.addEventListener(Eo[e], this.handleMapBrowserEvent.bind(this)); this.viewport_.addEventListener(s.CONTEXTMENU, this.boundHandleBrowserEvent_, !1), this.viewport_.addEventListener(s.WHEEL, this.boundHandleBrowserEvent_, he ? { passive: !1 } : !1); +======= +======= +>>>>>>> Stashed changes + if (O(t) || t.appendChild(this.viewport_), this.renderer_ ||= new Fl(this), !O(t)) { + this.mapBrowserEventHandler_ = new Mr(this, this.moveTolerance_); + for (let e in jr) this.mapBrowserEventHandler_.addEventListener(jr[e], this.handleMapBrowserEvent.bind(this)); + this.viewport_.addEventListener(M.CONTEXTMENU, this.boundHandleBrowserEvent_, !1), this.viewport_.addEventListener(M.WHEEL, this.boundHandleBrowserEvent_, v ? { passive: !1 } : !1); +>>>>>>> Stashed changes let e; if (this.keyboardEventTarget_) e = this.keyboardEventTarget_; else { @@ -7890,11 +12806,22 @@ var hu = class extends A { handleLayerGroupChanged_() { this.layerGroupPropertyListenerKeys_ &&= (this.layerGroupPropertyListenerKeys_.forEach(o), null); let e = this.getLayerGroup(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream e && (this.handleLayerAdd_(new vs("addlayer", e)), this.layerGroupPropertyListenerKeys_ = [ i(e, t.PROPERTYCHANGE, this.render, this), i(e, s.CHANGE, this.render, this), i(e, "addlayer", this.handleLayerAdd_, this), i(e, "removelayer", this.handleLayerRemove_, this) +======= +======= +>>>>>>> Stashed changes + e && (this.handleLayerAdd_(new oo("addlayer", e)), this.layerGroupPropertyListenerKeys_ = [ + A(e, re.PROPERTYCHANGE, this.render, this), + A(e, M.CHANGE, this.render, this), + A(e, "addlayer", this.handleLayerAdd_, this), + A(e, "removelayer", this.handleLayerRemove_, this) +>>>>>>> Stashed changes ]), this.render(); } isRendered() { @@ -7927,14 +12854,30 @@ var hu = class extends A { return this.getLayerGroup().getLayers().remove(e); } handleLayerRemove_(e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream pu(e.layer); +======= + Il(e.layer); +>>>>>>> Stashed changes +======= + Il(e.layer); +>>>>>>> Stashed changes } removeOverlay(e) { return this.getOverlays().remove(e); } renderFrame_(e) { let t = this.getSize(), n = this.getView(), r = this.frameState_, i = null; +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (t !== void 0 && di(t) && n && n.isDef()) { +======= + if (t !== void 0 && ts(t) && n && n.isDef()) { +>>>>>>> Stashed changes +======= + if (t !== void 0 && ts(t) && n && n.isDef()) { +>>>>>>> Stashed changes let r = n.getHints(this.frameState_ ? this.frameState_.viewHints : void 0), a = n.getState(); if (i = { animate: !1, @@ -7960,78 +12903,1526 @@ var hu = class extends A { let e = isNaN(a.nextRotation) ? a.rotation : a.nextRotation; i.nextExtent = xt(a.nextCenter, a.nextResolution, e, t); } - } - this.frameState_ = i, this.renderer_.renderFrame(i), i && (i.animate && this.render(), Array.prototype.push.apply(this.postRenderFunctions_, i.postRenderFunctions), r && (!this.previousExtent_ || !kt(this.previousExtent_) && !ut(i.extent, this.previousExtent_)) && (this.dispatchEvent(new wo(De.MOVESTART, this, r)), this.previousExtent_ = st(this.previousExtent_)), this.previousExtent_ && !i.viewHints[V.ANIMATING] && !i.viewHints[V.INTERACTING] && !ut(i.extent, this.previousExtent_) && (this.dispatchEvent(new wo(De.MOVEEND, this, i)), $e(i.extent, this.previousExtent_))), this.dispatchEvent(new wo(De.POSTRENDER, this, i)), this.renderComplete_ = (this.hasListener(De.LOADSTART) || this.hasListener(De.LOADEND) || this.hasListener(Ki.RENDERCOMPLETE)) && !this.tileQueue_.getTilesLoading() && !this.tileQueue_.getCount() && !this.getLoadingOrNotReady(), this.postRenderTimeoutHandle_ ||= setTimeout(() => { - this.postRenderTimeoutHandle_ = void 0, this.handlePostRender(); - }, 0); + } +<<<<<<< Updated upstream +<<<<<<< Updated upstream + this.frameState_ = i, this.renderer_.renderFrame(i), i && (i.animate && this.render(), Array.prototype.push.apply(this.postRenderFunctions_, i.postRenderFunctions), r && (!this.previousExtent_ || !kt(this.previousExtent_) && !ut(i.extent, this.previousExtent_)) && (this.dispatchEvent(new wo(De.MOVESTART, this, r)), this.previousExtent_ = st(this.previousExtent_)), this.previousExtent_ && !i.viewHints[V.ANIMATING] && !i.viewHints[V.INTERACTING] && !ut(i.extent, this.previousExtent_) && (this.dispatchEvent(new wo(De.MOVEEND, this, i)), $e(i.extent, this.previousExtent_))), this.dispatchEvent(new wo(De.POSTRENDER, this, i)), this.renderComplete_ = (this.hasListener(De.LOADSTART) || this.hasListener(De.LOADEND) || this.hasListener(Ki.RENDERCOMPLETE)) && !this.tileQueue_.getTilesLoading() && !this.tileQueue_.getCount() && !this.getLoadingOrNotReady(), this.postRenderTimeoutHandle_ ||= setTimeout(() => { + this.postRenderTimeoutHandle_ = void 0, this.handlePostRender(); + }, 0); + } + setLayerGroup(e) { + let t = this.getLayerGroup(); + t && this.handleLayerRemove_(new vs("removelayer", t)), this.set(ko.LAYERGROUP, e); +======= +======= +>>>>>>> Stashed changes + this.frameState_ = i, this.renderer_.renderFrame(i), i && (i.animate && this.render(), Array.prototype.push.apply(this.postRenderFunctions_, i.postRenderFunctions), r && (!this.previousExtent_ || !mt(this.previousExtent_) && !Ye(i.extent, this.previousExtent_)) && (this.dispatchEvent(new kr(N.MOVESTART, this, r)), this.previousExtent_ = Ke(this.previousExtent_)), this.previousExtent_ && !i.viewHints[Lr.ANIMATING] && !i.viewHints[Lr.INTERACTING] && !Ye(i.extent, this.previousExtent_) && (this.dispatchEvent(new kr(N.MOVEEND, this, i)), Re(i.extent, this.previousExtent_))), this.dispatchEvent(new kr(N.POSTRENDER, this, i)), this.renderComplete_ = (this.hasListener(N.LOADSTART) || this.hasListener(N.LOADEND) || this.hasListener(lo.RENDERCOMPLETE)) && !this.tileQueue_.getTilesLoading() && !this.tileQueue_.getCount() && !this.getLoadingOrNotReady(), this.postRenderTimeoutHandle_ ||= setTimeout(() => { + this.postRenderTimeoutHandle_ = void 0, this.handlePostRender(); + }, 0); + } + setLayerGroup(t) { + let n = this.getLayerGroup(); + n && this.handleLayerRemove_(new oo("removelayer", n)), this.set(e.LAYERGROUP, t); +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes + } + setSize(e) { + this.set(ko.SIZE, e); + } + setTarget(e) { + this.set(ko.TARGET, e); + } +<<<<<<< Updated upstream + setView(e) { + if (!e || e instanceof uo) { + this.set(ko.VIEW, e); + return; + } + this.set(ko.VIEW, new uo()); + let t = this; + e.then(function(e) { + t.setView(new uo(e)); +======= + setView(t) { + if (!t || t instanceof ua) { + this.set(e.VIEW, t); + return; + } + this.set(e.VIEW, new ua()); + let n = this; + t.then(function(e) { + n.setView(new ua(e)); +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes + }); + } + updateSize() { + let e = this.getTargetElement(), t; + if (e) { + let n, r; + if (Ee(e)) { + let t = e.getContext("2d").getTransform(); + n = e.width / t.a, r = e.height / t.d; + } else { + let t = getComputedStyle(e); + n = e.offsetWidth - parseFloat(t.borderLeftWidth) - parseFloat(t.paddingLeft) - parseFloat(t.paddingRight) - parseFloat(t.borderRightWidth), r = e.offsetHeight - parseFloat(t.borderTopWidth) - parseFloat(t.paddingTop) - parseFloat(t.paddingBottom) - parseFloat(t.borderBottomWidth); + } +<<<<<<< Updated upstream +<<<<<<< Updated upstream + !isNaN(n) && !isNaN(r) && (t = [Math.max(0, n), Math.max(0, r)], !di(t) && (e.offsetWidth || e.offsetHeight || e.getClientRects().length) && zt("No map visible because the map container's width or height are 0.")); +======= + !isNaN(n) && !isNaN(r) && (t = [Math.max(0, n), Math.max(0, r)], !ts(t) && (e.offsetWidth || e.offsetHeight || e.getClientRects().length) && Gt("No map visible because the map container's width or height are 0.")); +>>>>>>> Stashed changes +======= + !isNaN(n) && !isNaN(r) && (t = [Math.max(0, n), Math.max(0, r)], !ts(t) && (e.offsetWidth || e.offsetHeight || e.getClientRects().length) && Gt("No map visible because the map container's width or height are 0.")); +>>>>>>> Stashed changes + } + let n = this.getSize(); + t && (!n || !h(t, n)) && (this.updateViewportSize_(t), this.setSize(t)); + } + updateViewportSize_(e) { + let t = this.getView(); + t && t.setViewportSize(e); + } +}; +<<<<<<< Updated upstream +<<<<<<< Updated upstream +function gu(e) { + let t = null; + e.keyboardEventTarget !== void 0 && (t = typeof e.keyboardEventTarget == "string" ? document.getElementById(e.keyboardEventTarget) : e.keyboardEventTarget); + let n = {}, r = e.layers && typeof e.layers.getLayers == "function" ? e.layers : new bs({ layers: e.layers }); + n[ko.LAYERGROUP] = r, n[ko.TARGET] = e.target, n[ko.VIEW] = e.view instanceof uo ? e.view : new uo(); + let i; + e.controls !== void 0 && (Array.isArray(e.controls) ? i = new N(e.controls.slice()) : (z(typeof e.controls.getArray == "function", "Expected `controls` to be an array or an `ol/Collection.js`"), i = e.controls)); +======= +======= +>>>>>>> Stashed changes +function zl(t) { + let n = null; + t.keyboardEventTarget !== void 0 && (n = typeof t.keyboardEventTarget == "string" ? document.getElementById(t.keyboardEventTarget) : t.keyboardEventTarget); + let r = {}, i = t.layers && typeof t.layers.getLayers == "function" ? t.layers : new co({ layers: t.layers }); + r[e.LAYERGROUP] = i, r[e.TARGET] = t.target, r[e.VIEW] = t.view instanceof ua ? t.view : new ua(); +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes + let a; + e.interactions !== void 0 && (Array.isArray(e.interactions) ? a = new N(e.interactions.slice()) : (z(typeof e.interactions.getArray == "function", "Expected `interactions` to be an array or an `ol/Collection.js`"), a = e.interactions)); + let o; + return e.overlays === void 0 ? o = new N() : Array.isArray(e.overlays) ? o = new N(e.overlays.slice()) : (z(typeof e.overlays.getArray == "function", "Expected `overlays` to be an array or an `ol/Collection.js`"), o = e.overlays), { + controls: i, + interactions: a, + keyboardEventTarget: t, + overlays: o, + values: n + }; +} +//#endregion +<<<<<<< Updated upstream +//#region node_modules/ol/tilegrid/TileGrid.js +var _u = [ + 0, + 0, + 0 +], vu = 5, yu = class { +======= +//#region node_modules/ol/Overlay.js +var Bl = { + ELEMENT: "element", + MAP: "map", + OFFSET: "offset", + POSITION: "position", + POSITIONING: "positioning" +}, Vl = class extends we { + constructor(e) { + super(), this.on, this.once, this.un, this.options = e, this.id = e.id, this.insertFirst = e.insertFirst === void 0 || e.insertFirst, this.stopEvent = e.stopEvent === void 0 || e.stopEvent, this.element = document.createElement("div"), this.element.className = e.className === void 0 ? "ol-overlay-container " + n : e.className, this.element.style.position = "absolute", this.element.style.pointerEvents = "auto", this.autoPan = e.autoPan === !0 ? {} : e.autoPan || void 0, this.rendered = { + transform_: "", + visible: !0 + }, this.mapPostrenderListenerKey = null, this.addChangeListener(Bl.ELEMENT, this.handleElementChanged), this.addChangeListener(Bl.MAP, this.handleMapChanged), this.addChangeListener(Bl.OFFSET, this.handleOffsetChanged), this.addChangeListener(Bl.POSITION, this.handlePositionChanged), this.addChangeListener(Bl.POSITIONING, this.handlePositioningChanged), e.element !== void 0 && this.setElement(e.element), this.setOffset(e.offset === void 0 ? [0, 0] : e.offset), this.setPositioning(e.positioning || "top-left"), e.position !== void 0 && this.setPosition(e.position); + } + getElement() { + return this.get(Bl.ELEMENT); + } + getId() { + return this.id; + } + getMap() { + return this.get(Bl.MAP) || null; + } + getOffset() { + return this.get(Bl.OFFSET); + } + getPosition() { + return this.get(Bl.POSITION); + } + getPositioning() { + return this.get(Bl.POSITIONING); + } + handleElementChanged() { + E(this.element); + let e = this.getElement(); + e && this.element.appendChild(e); + } + handleMapChanged() { + this.mapPostrenderListenerKey &&= (this.element?.remove(), j(this.mapPostrenderListenerKey), null); + let e = this.getMap(); + if (e) { + this.mapPostrenderListenerKey = A(e, N.POSTRENDER, this.render, this), this.updatePixelPosition(); + let t = this.stopEvent ? e.getOverlayContainerStopEvent() : e.getOverlayContainer(); + this.insertFirst ? t.insertBefore(this.element, t.childNodes[0] || null) : t.appendChild(this.element), this.performAutoPan(); + } + } + render() { + this.updatePixelPosition(); + } + handleOffsetChanged() { + this.updatePixelPosition(); + } + handlePositionChanged() { + this.updatePixelPosition(), this.performAutoPan(); + } + handlePositioningChanged() { + this.updatePixelPosition(); + } + setElement(e) { + this.set(Bl.ELEMENT, e); + } + setMap(e) { + this.set(Bl.MAP, e); + } + setOffset(e) { + this.set(Bl.OFFSET, e); + } + setPosition(e) { + this.set(Bl.POSITION, e); + } + performAutoPan() { + this.autoPan && this.panIntoView(this.autoPan); + } + panIntoView(e) { + let t = this.getMap(); + if (!t || !t.getTargetElement() || !this.get(Bl.POSITION)) return; + let n = this.getRect(t.getTargetElement(), t.getSize()), r = this.getElement(), i = this.getRect(r, [C(r), w(r)]); + e ||= {}; + let a = e.margin === void 0 ? 20 : e.margin; + if (!Ve(n, i)) { + let r = i[0] - n[0], o = n[2] - i[2], s = i[1] - n[1], c = n[3] - i[3], l = [0, 0]; + if (r < 0 ? l[0] = r - a : o < 0 && (l[0] = Math.abs(o) + a), s < 0 ? l[1] = s - a : c < 0 && (l[1] = Math.abs(c) + a), l[0] !== 0 || l[1] !== 0) { + let n = t.getView().getCenterInternal(), r = t.getPixelFromCoordinateInternal(n); + if (!r) return; + let i = [r[0] + l[0], r[1] + l[1]], a = e.animation || {}; + t.getView().animateInternal({ + center: t.getCoordinateFromPixelInternal(i), + duration: a.duration, + easing: a.easing + }); + } + } + } + getRect(e, t) { + let n = e.getBoundingClientRect(), r = n.left + window.pageXOffset, i = n.top + window.pageYOffset; + return [ + r, + i, + r + t[0], + i + t[1] + ]; + } + setPositioning(e) { + this.set(Bl.POSITIONING, e); + } + setVisible(e) { + this.rendered.visible !== e && (this.element.style.display = e ? "" : "none", this.rendered.visible = e); + } + updatePixelPosition() { + let e = this.getMap(), t = this.getPosition(); + if (!e || !e.isRendered() || !t) { + this.setVisible(!1); + return; + } + let n = e.getPixelFromCoordinate(t), r = e.getSize(); + this.updateRenderedPosition(n, r); + } + updateRenderedPosition(e, t) { + let n = this.element.style, r = this.getOffset(), i = this.getPositioning(); + this.setVisible(!0); + let a = `${e[0] + r[0]}px`, o = `${e[1] + r[1]}px`, s = "0%", c = "0%"; + i == "bottom-right" || i == "center-right" || i == "top-right" ? s = "-100%" : (i == "bottom-center" || i == "center-center" || i == "top-center") && (s = "-50%"), i == "bottom-left" || i == "bottom-center" || i == "bottom-right" ? c = "-100%" : (i == "center-left" || i == "center-center" || i == "center-right") && (c = "-50%"); + let l = `translate(${s}, ${c}) translate(${a}, ${o})`; + this.rendered.transform_ != l && (this.rendered.transform_ = l, n.transform = l); + } + getOptions() { + return this.options; + } +}, Hl = .75, Ul = .1, Wl = class extends Te { + constructor(e) { + e ||= {}, super({ + element: document.createElement("div"), + render: e.render, + target: e.target + }), this.boundHandleRotationChanged_ = this.handleRotationChanged_.bind(this), this.collapsed_ = e.collapsed === void 0 || e.collapsed, this.collapsible_ = e.collapsible === void 0 || e.collapsible, this.collapsible_ || (this.collapsed_ = !1), this.rotateWithView_ = e.rotateWithView !== void 0 && e.rotateWithView, this.viewExtent_ = void 0; + let t = e.className === void 0 ? "ol-overviewmap" : e.className, n = e.tipLabel === void 0 ? "Overview map" : e.tipLabel, i = e.collapseLabel === void 0 ? "‹" : e.collapseLabel; + typeof i == "string" ? (this.collapseLabel_ = document.createElement("span"), this.collapseLabel_.textContent = i) : this.collapseLabel_ = i; + let s = e.label === void 0 ? "›" : e.label; + typeof s == "string" ? (this.label_ = document.createElement("span"), this.label_.textContent = s) : this.label_ = s; + let c = this.collapsible_ && !this.collapsed_ ? this.collapseLabel_ : this.label_, l = document.createElement("button"); + l.setAttribute("type", "button"), l.title = n, l.appendChild(c), l.addEventListener(M.CLICK, this.handleClick_.bind(this), !1), this.ovmapDiv_ = document.createElement("div"), this.ovmapDiv_.className = "ol-overviewmap-map", this.view_ = e.view; + let u = new Rl({ + view: e.view, + controls: new Or(), + interactions: new Or() + }); + this.ovmap_ = u, e.layers && e.layers.forEach(function(e) { + u.addLayer(e); + }); + let d = document.createElement("div"); + d.className = "ol-overviewmap-box", d.style.boxSizing = "border-box", this.boxOverlay_ = new Vl({ + position: [0, 0], + positioning: "center-center", + element: d + }), this.ovmap_.addOverlay(this.boxOverlay_); + let f = t + " " + r + " " + a + (this.collapsed_ && this.collapsible_ ? " " + o : "") + (this.collapsible_ ? "" : " ol-uncollapsible"), p = this.element; + p.className = f, p.appendChild(this.ovmapDiv_), p.appendChild(l); + let m = this.boxOverlay_, h = this.boxOverlay_.getElement(), g = (e) => ({ + clientX: e.clientX, + clientY: e.clientY + }), _ = function(e) { + let t = g(e), n = u.getEventCoordinate(t); + m.setPosition(n); + }, v = (e) => { + let t = u.getEventCoordinateInternal(e), n = this.getMap(); + n.getView().setCenterInternal(t); + let r = n.getOwnerDocument(); + r.removeEventListener("pointermove", _), r.removeEventListener("pointerup", v); + }; + this.ovmapDiv_.addEventListener("pointerdown", (e) => { + let t = this.getMap().getOwnerDocument(); + e.target === h && t.addEventListener("pointermove", _), t.addEventListener("pointerup", v); + }); + } + setMap(e) { + let t = this.getMap(); + if (e !== t) { + if (t) { + let e = t.getView(); + e && this.unbindView_(e), this.ovmap_.setTarget(null); + } + if (super.setMap(e), e) { + this.ovmap_.setTarget(this.ovmapDiv_), this.listenerKeys.push(A(e, re.PROPERTYCHANGE, this.handleMapPropertyChange_, this)); + let t = e.getView(); + t && this.bindView_(t), this.ovmap_.isRendered() || this.updateBoxAfterOvmapIsRendered_(); + } + } + } + handleMapPropertyChange_(t) { + if (t.key === e.VIEW) { + let e = t.oldValue; + e && this.unbindView_(e); + let n = this.getMap().getView(); + this.bindView_(n); + } else !this.ovmap_.isRendered() && (t.key === e.TARGET || t.key === e.SIZE) && this.ovmap_.updateSize(); + } + bindView_(e) { + if (!this.view_) { + let t = new ua({ projection: e.getProjection() }); + this.ovmap_.setView(t); + } + e.addChangeListener(Rr.ROTATION, this.boundHandleRotationChanged_), this.handleRotationChanged_(), e.isDef() && (this.ovmap_.updateSize(), this.resetExtent_()); + } + unbindView_(e) { + e.removeChangeListener(Rr.ROTATION, this.boundHandleRotationChanged_); + } + handleRotationChanged_() { + this.rotateWithView_ && this.ovmap_.getView().setRotation(this.getMap().getView().getRotation()); + } + validateExtent_() { + let e = this.getMap(), t = this.ovmap_; + if (!e.isRendered() || !t.isRendered()) return; + let n = e.getSize(), r = e.getView().calculateExtentInternal(n); + if (this.viewExtent_ && Ye(r, this.viewExtent_)) return; + this.viewExtent_ = r; + let i = t.getSize(), a = t.getView().calculateExtentInternal(i), o = t.getPixelFromCoordinateInternal(dt(r)), s = t.getPixelFromCoordinateInternal(rt(r)), c = Math.abs(o[0] - s[0]), l = Math.abs(o[1] - s[1]), u = i[0], d = i[1]; + c < u * Ul || l < d * Ul || c > u * Hl || l > d * Hl ? this.resetExtent_() : Ve(a, r) || this.recenter_(); + } + resetExtent_() { + let e = this.getMap(), t = this.ovmap_, n = e.getSize(), r = e.getView().calculateExtentInternal(n), i = t.getView(); + gt(r, 1 / (2 ** (Math.log(Hl / Ul) / Math.LN2 / 2) * Ul)), i.fitInternal($i(r)); + } + recenter_() { + let e = this.getMap(), t = this.ovmap_, n = e.getView(); + t.getView().setCenterInternal(n.getCenterInternal()); + } + updateBox_() { + let e = this.getMap(), t = this.ovmap_; + if (!e.isRendered() || !t.isRendered()) return; + let n = e.getSize(), r = e.getView(), i = t.getView(), a = this.rotateWithView_ ? 0 : -r.getRotation(), o = this.boxOverlay_, s = this.boxOverlay_.getElement(), c = r.getCenter(), l = r.getResolution(), u = i.getResolution(), d = n[0] * l / u, f = n[1] * l / u; + if (o.setPosition(c), s) { + s.style.width = d + "px", s.style.height = f + "px"; + let e = "rotate(" + a + "rad)"; + s.style.transform = e; + } + } + updateBoxAfterOvmapIsRendered_() { + this.ovmapPostrenderKey_ ||= ne(this.ovmap_, N.POSTRENDER, (e) => { + delete this.ovmapPostrenderKey_, this.updateBox_(); + }); + } + handleClick_(e) { + e.preventDefault(), this.handleToggle_(); + } + handleToggle_() { + this.element.classList.toggle(o), this.collapsed_ ? T(this.collapseLabel_, this.label_) : T(this.label_, this.collapseLabel_), this.collapsed_ = !this.collapsed_; + let e = this.ovmap_; + if (!this.collapsed_) { + if (e.isRendered()) { + this.viewExtent_ = void 0, e.render(); + return; + } + e.updateSize(), this.resetExtent_(), this.updateBoxAfterOvmapIsRendered_(); + } + } + getCollapsible() { + return this.collapsible_; + } + setCollapsible(e) { + this.collapsible_ !== e && (this.collapsible_ = e, this.element.classList.toggle("ol-uncollapsible"), !e && this.collapsed_ && this.handleToggle_()); + } + setCollapsed(e) { + !this.collapsible_ || this.collapsed_ === e || this.handleToggle_(); + } + getCollapsed() { + return this.collapsed_; + } + getRotateWithView() { + return this.rotateWithView_; + } + setRotateWithView(e) { + this.rotateWithView_ !== e && (this.rotateWithView_ = e, this.getMap().getView().getRotation() !== 0 && (this.rotateWithView_ ? this.handleRotationChanged_() : this.ovmap_.getView().setRotation(0), this.viewExtent_ = void 0, this.validateExtent_(), this.updateBox_())); + } + getOverviewMap() { + return this.ovmap_; + } + render(e) { + this.validateExtent_(), this.updateBox_(); + } +}, Gl = "units", Kl = [ + 1, + 2, + 5 +], ql = 25.4 / .28, Jl = class extends Te { + constructor(e) { + e ||= {}; + let t = document.createElement("div"); + t.style.pointerEvents = "none", super({ + element: t, + render: e.render, + target: e.target + }), this.on, this.once, this.un; + let n = e.className === void 0 ? e.bar ? "ol-scale-bar" : "ol-scale-line" : e.className; + this.innerElement_ = document.createElement("div"), this.innerElement_.className = n + "-inner", this.element.className = n + " " + r, this.element.appendChild(this.innerElement_), this.viewState_ = null, this.minWidth_ = e.minWidth === void 0 ? 64 : e.minWidth, this.maxWidth_ = e.maxWidth, this.renderedVisible_ = !1, this.renderedWidth_ = void 0, this.renderedHTML_ = "", this.addChangeListener(Gl, this.handleUnitsChanged_), this.setUnits(e.units || "metric"), this.scaleBar_ = e.bar || !1, this.scaleBarSteps_ = e.steps || 4, this.scaleBarText_ = e.text || !1, this.dpi_ = e.dpi || void 0; + } + getUnits() { + return this.get(Gl); + } + handleUnitsChanged_() { + this.updateElement_(); + } + setUnits(e) { + this.set(Gl, e); + } + setDpi(e) { + this.dpi_ = e; + } + updateElement_() { + let e = this.viewState_; + if (!e) { + this.renderedVisible_ &&= (this.element.style.display = "none", !1); + return; + } + let t = e.center, n = e.projection, r = this.getUnits(), i = r == "degrees" ? "degrees" : "m", a = rr(n, e.resolution, t, i), o = this.minWidth_ * (this.dpi_ || ql) / ql, s = this.maxWidth_ === void 0 ? void 0 : this.maxWidth_ * (this.dpi_ || ql) / ql, c = o * a, l = ""; + if (r == "degrees") { + let e = Kt.degrees; + c *= e, c < e / 60 ? (l = "″", a *= 3600) : c < e ? (l = "′", a *= 60) : l = "°"; + } else if (r == "imperial") c < .9144 ? (l = "in", a /= .0254) : c < 1609.344 ? (l = "ft", a /= .3048) : (l = "mi", a /= 1609.344); + else if (r == "nautical") a /= 1852, l = "NM"; + else if (r == "metric") c < 1e-6 ? (l = "nm", a *= 1e9) : c < .001 ? (l = "μm", a *= 1e6) : c < 1 ? (l = "mm", a *= 1e3) : c < 1e3 ? l = "m" : (l = "km", a /= 1e3); + else if (r == "us") c < .9144 ? (l = "in", a *= 39.37) : c < 1609.344 ? (l = "ft", a /= .30480061) : (l = "mi", a /= 1609.3472); + else throw Error("Invalid units"); + let u = 3 * Math.floor(Math.log(o * a) / Math.log(10)), d, f, p, m = 0, h, g; + for (;;) { + p = Math.floor(u / 3); + let e = 10 ** p; + if (d = Kl[(u % 3 + 3) % 3] * e, f = Math.round(d / a), isNaN(f)) { + this.element.style.display = "none", this.renderedVisible_ = !1; + return; + } + if (s !== void 0 && f >= s) { + d = m, f = h, p = g; + break; + } + if (f >= o) break; + m = d, h = f, g = p, ++u; + } + let _ = this.scaleBar_ ? this.createScaleBar(f, d, l) : d.toFixed(p < 0 ? -p : 0) + " " + l; + this.renderedHTML_ != _ && (this.innerElement_.innerHTML = _, this.renderedHTML_ = _), this.renderedWidth_ != f && (this.innerElement_.style.width = f + "px", this.renderedWidth_ = f), this.renderedVisible_ ||= (this.element.style.display = "", !0); + } + createScaleBar(e, t, n) { + let r = this.getScaleForResolution(), i = r < 1 ? Math.round(1 / r).toLocaleString() + " : 1" : "1 : " + Math.round(r).toLocaleString(), a = this.scaleBarSteps_, o = e / a, s = [this.createMarker("absolute")]; + for (let r = 0; r < a; ++r) { + let i = r % 2 == 0 ? "ol-scale-singlebar-odd" : "ol-scale-singlebar-even"; + s.push(`
` + this.createMarker("relative") + (r % 2 == 0 || a === 2 ? this.createStepText(r, e, !1, t, n) : "") + "
"); + } + return s.push(this.createStepText(a, e, !0, t, n)), (this.scaleBarText_ ? `
` + i + "
" : "") + s.join(""); + } + createMarker(e) { + return `
`; + } + createStepText(e, t, n, r, i) { + let a = (e === 0 ? 0 : Math.round(r / this.scaleBarSteps_ * e * 100) / 100) + (e === 0 ? "" : " " + i), o = e === 0 ? -3 : t / this.scaleBarSteps_ * -1, s = e === 0 ? 0 : t / this.scaleBarSteps_ * 2; + return `
` + a + "
"; + } + getScaleForResolution() { + let e = rr(this.viewState_.projection, this.viewState_.resolution, this.viewState_.center, "m"), t = this.dpi_ || ql; + return 1e3 / 25.4 * e * t; + } + render(e) { + let t = e.frameState; + this.viewState_ = t ? t.viewState : null, this.updateElement_(); + } +}, Yl = class extends ye { + constructor(e, t, n) { + super(), n ||= {}, this.tileCoord = e, this.state = t, this.key = "", this.transition_ = n.transition === void 0 ? 250 : n.transition, this.transitionStarts_ = {}, this.interpolate = !!n.interpolate; + } + changed() { + this.dispatchEvent(M.CHANGE); + } + release() { + this.setState(L.EMPTY); + } + getKey() { + return this.key + "/" + this.tileCoord; + } + getTileCoord() { + return this.tileCoord; + } + getState() { + return this.state; + } + setState(e) { + if (this.state !== L.EMPTY) { + if (this.state !== L.ERROR && this.state > e) throw Error("Tile load sequence violation"); + this.state = e, this.changed(); + } + } + load() { + P(); + } + getAlpha(e, t) { + if (!this.transition_) return 1; + let n = this.transitionStarts_[e]; + if (!n) n = t, this.transitionStarts_[e] = n; + else if (n === -1) return 1; + let r = t - n + 1e3 / 60; + return r >= this.transition_ ? 1 : Vr(r / this.transition_); + } + inTransition(e) { + return this.transition_ ? this.transitionStarts_[e] !== -1 : !1; + } + endTransition(e) { + this.transition_ && (this.transitionStarts_[e] = -1); + } + disposeInternal() { + this.release(), super.disposeInternal(); + } +}; +//#endregion +//#region node_modules/ol/DataTile.js +function Xl(e) { + return e instanceof Image || e instanceof HTMLCanvasElement || e instanceof HTMLVideoElement || e instanceof ImageBitmap ? e : null; +} +var Zl = /* @__PURE__ */ Error("disposed"), Ql = [256, 256], $l = class extends Yl { + constructor(e) { + let t = L.IDLE; + super(e.tileCoord, t, { + transition: e.transition, + interpolate: e.interpolate + }), this.loader_ = e.loader, this.data_ = null, this.error_ = null, this.size_ = e.size || null, this.controller_ = e.controller || null; + } + getSize() { + if (this.size_) return this.size_; + let e = Xl(this.data_); + return e ? [e.width, e.height] : Ql; + } + getData() { + return this.data_; + } + getError() { + return this.error_; + } + load() { + if (this.state !== L.IDLE && this.state !== L.ERROR) return; + this.state = L.LOADING, this.changed(); + let e = this; + this.loader_().then(function(t) { + e.data_ = t, e.state = L.LOADED, e.changed(); + }).catch(function(t) { + e.error_ = t, e.state = L.ERROR, e.changed(); + }); + } + disposeInternal() { + this.controller_ &&= (this.controller_.abort(Zl), null), super.disposeInternal(); + } +}, eu = class extends Yl { + constructor(e, t, n, r, i, a) { + super(e, t, a), this.crossOrigin_ = r?.crossOrigin, this.referrerPolicy_ = r?.referrerPolicy, this.src_ = n, this.key = n, this.image_, g ? this.image_ = new OffscreenCanvas(1, 1) : (this.image_ = new Image(), this.crossOrigin_ !== null && (this.image_.crossOrigin = this.crossOrigin_), this.referrerPolicy_ !== void 0 && (this.image_.referrerPolicy = this.referrerPolicy_)), this.unlisten_ = null, this.tileLoadFunction_ = i; + } + getImage() { + return this.image_; + } + setImage(e) { + this.image_ = e, this.state = L.LOADED, this.unlistenImage_(), this.changed(); + } + getCrossOrigin() { + return this.crossOrigin_; + } + getReferrerPolicy() { + return this.referrerPolicy_; + } + handleImageError_() { + this.state = L.ERROR, this.unlistenImage_(), this.image_ = tu(), this.changed(); + } + handleImageLoad_() { + if (g) this.state = L.LOADED; + else { + let e = this.image_; + this.state = e.naturalWidth && e.naturalHeight ? L.LOADED : L.EMPTY; + } + this.unlistenImage_(), this.changed(); + } + load() { + this.state == L.ERROR && (this.state = L.IDLE, this.image_ = new Image(), this.crossOrigin_ !== null && (this.image_.crossOrigin = this.crossOrigin_), this.referrerPolicy_ !== void 0 && (this.image_.referrerPolicy = this.referrerPolicy_)), this.state == L.IDLE && (this.state = L.LOADING, this.changed(), this.tileLoadFunction_(this, this.src_), this.unlisten_ = $s(this.image_, this.handleImageLoad_.bind(this), this.handleImageError_.bind(this))); + } + unlistenImage_() { + this.unlisten_ &&= (this.unlisten_(), null); + } + disposeInternal() { + this.unlistenImage_(), this.image_ = null, super.disposeInternal(); + } +}; +function tu() { + let e = y(1, 1); + return e.fillStyle = "rgba(0,0,0,0)", e.fillRect(0, 0, 1, 1), e.canvas; +} +//#endregion +//#region node_modules/ol/TileRange.js +var nu = class { + constructor(e, t, n, r) { + this.minX = e, this.maxX = t, this.minY = n, this.maxY = r; + } + contains(e) { + return this.containsXY(e[1], e[2]); + } + containsTileRange(e) { + return this.minX <= e.minX && e.maxX <= this.maxX && this.minY <= e.minY && e.maxY <= this.maxY; + } + containsXY(e, t) { + return this.minX <= e && e <= this.maxX && this.minY <= t && t <= this.maxY; + } + equals(e) { + return this.minX == e.minX && this.minY == e.minY && this.maxX == e.maxX && this.maxY == e.maxY; + } + extend(e) { + e.minX < this.minX && (this.minX = e.minX), e.maxX > this.maxX && (this.maxX = e.maxX), e.minY < this.minY && (this.minY = e.minY), e.maxY > this.maxY && (this.maxY = e.maxY); + } + getHeight() { + return this.maxY - this.minY + 1; + } + getSize() { + return [this.getWidth(), this.getHeight()]; + } + getWidth() { + return this.maxX - this.minX + 1; + } + intersects(e) { + return this.minX <= e.maxX && this.maxX >= e.minX && this.minY <= e.maxY && this.maxY >= e.minY; + } +}; +function ru(e, t, n, r, i) { + return i === void 0 ? new nu(e, t, n, r) : (i.minX = e, i.maxX = t, i.minY = n, i.maxY = r, i); +} +//#endregion +//#region node_modules/ol/reproj.js +var iu, au = []; +function ou(e, t, n, r, i) { + e.beginPath(), e.moveTo(0, 0), e.lineTo(t, n), e.lineTo(r, i), e.closePath(), e.save(), e.clip(), e.fillRect(0, 0, Math.max(t, r) + 1, Math.max(n, i)), e.restore(); +} +function su(e, t) { + return Math.abs(e[t * 4] - 210) > 2 || Math.abs(e[t * 4 + 3] - 191.25) > 2; +} +function cu() { + if (iu === void 0) { + let e = y(6, 6, au); + e.globalCompositeOperation = "lighter", e.fillStyle = "rgba(210, 0, 0, 0.75)", ou(e, 4, 5, 4, 0), ou(e, 4, 5, 0, 5); + let t = e.getImageData(0, 0, 3, 3).data; + iu = su(t, 0) || su(t, 4) || su(t, 8), S(e), au.push(e.canvas); + } + return iu; +} +function lu(e, t, n, r) { + let i = fr(n, t, e), a = rr(t, r, n), o = t.getMetersPerUnit(); + o !== void 0 && (a *= o); + let s = e.getMetersPerUnit(); + s !== void 0 && (a /= s); + let c = e.getExtent(); + if (!c || Be(c, i)) { + let t = rr(e, a, i) / a; + isFinite(t) && t > 0 && (a /= t); + } + return a; +} +function uu(e, t, n, r) { + let i = lu(e, t, it(n), r); + return (!isFinite(i) || i <= 0) && et(n, function(n) { + return i = lu(e, t, n, r), isFinite(i) && i > 0; + }), i; +} +function du(e, t, n, r, i, a, o, s, c, l, u, d, f, p) { + let m = y(Math.round(n * e), Math.round(n * t), au); + if (d || (m.imageSmoothingEnabled = !1), c.length === 0) return m.canvas; + m.scale(n, n); + function h(e) { + return Math.round(e * n) / n; + } + m.globalCompositeOperation = "lighter"; + let g = We(); + c.forEach(function(e, t, n) { + Xe(g, e.extent); + }); + let _, v = n / r, b = (d ? 1 : 1 + 2 ** -24) / v; + if (!f || c.length !== 1 || l !== 0) { + if (_ = y(Math.round(I(g) * v), Math.round(ct(g) * v), au), d || (_.imageSmoothingEnabled = !1), i && p) { + let e = (i[0] - g[0]) * v, t = -(i[3] - g[3]) * v, n = I(i) * v, r = ct(i) * v; + _.rect(e, t, n, r), _.clip(); + } + c.forEach(function(e, t, n) { + if (e.image.width > 0 && e.image.height > 0) { + if (e.clipExtent) { + _.save(); + let t = (e.clipExtent[0] - g[0]) * v, n = -(e.clipExtent[3] - g[3]) * v, r = I(e.clipExtent) * v, i = ct(e.clipExtent) * v; + _.rect(d ? t : Math.round(t), d ? n : Math.round(n), d ? r : Math.round(t + r) - Math.round(t), d ? i : Math.round(n + i) - Math.round(n)), _.clip(); + } + let t = (e.extent[0] - g[0]) * v, n = -(e.extent[3] - g[3]) * v, r = I(e.extent) * v, i = ct(e.extent) * v; + _.drawImage(e.image, l, l, e.image.width - 2 * l, e.image.height - 2 * l, d ? t : Math.round(t), d ? n : Math.round(n), d ? r : Math.round(t + r) - Math.round(t), d ? i : Math.round(n + i) - Math.round(n)), e.clipExtent && _.restore(); + } + }); + } + let x = dt(o); + return s.getTriangles().forEach(function(e, t, n) { + let r = e.source, i = e.target, o = r[0][0], s = r[0][1], l = r[1][0], u = r[1][1], f = r[2][0], p = r[2][1], v = h((i[0][0] - x[0]) / a), y = h(-(i[0][1] - x[1]) / a), S = h((i[1][0] - x[0]) / a), C = h(-(i[1][1] - x[1]) / a), w = h((i[2][0] - x[0]) / a), T = h(-(i[2][1] - x[1]) / a), E = o, ee = s; + o = 0, s = 0, l -= E, u -= ee, f -= E, p -= ee; + let D = Tt([ + [ + l, + u, + 0, + 0, + S - v + ], + [ + f, + p, + 0, + 0, + w - v + ], + [ + 0, + 0, + l, + u, + C - y + ], + [ + 0, + 0, + f, + p, + T - y + ] + ]); + if (!D) return; + if (m.save(), m.beginPath(), cu() || !d) { + m.moveTo(S, C); + let e = v - S, t = y - C; + for (let n = 0; n < 4; n++) m.lineTo(S + h((n + 1) * e / 4), C + h(n * t / 3)), n != 3 && m.lineTo(S + h((n + 1) * e / 4), C + h((n + 1) * t / 3)); + m.lineTo(w, T); + } else m.moveTo(S, C), m.lineTo(v, y), m.lineTo(w, T); + m.clip(), m.transform(D[0], D[2], D[1], D[3], v, y), m.translate(g[0] - E, g[3] - ee); + let O; + if (_) O = _.canvas, m.scale(b, -b); + else { + let e = c[0], t = e.extent; + O = e.image, m.scale(I(t) / O.width, -ct(t) / O.height); + } + m.drawImage(O, 0, 0), m.restore(); + }), _ && (S(_), au.push(_.canvas)), u && (m.save(), m.globalCompositeOperation = "source-over", m.strokeStyle = "black", m.lineWidth = 1, s.getTriangles().forEach(function(e, t, n) { + let r = e.target, i = (r[0][0] - x[0]) / a, o = -(r[0][1] - x[1]) / a, s = (r[1][0] - x[0]) / a, c = -(r[1][1] - x[1]) / a, l = (r[2][0] - x[0]) / a, u = -(r[2][1] - x[1]) / a; + m.beginPath(), m.moveTo(s, c), m.lineTo(i, o), m.lineTo(l, u), m.closePath(), m.stroke(); + }), m.restore()), m.canvas; +} +//#endregion +//#region node_modules/ol/reproj/Triangulation.js +var fu = 10, pu = .25, mu = class { + constructor(e, t, n, r, i, a, o) { + this.sourceProj_ = e, this.targetProj_ = t; + let s = {}, c = o ? sr((e) => z(o, fr(e, this.targetProj_, this.sourceProj_))) : dr(this.targetProj_, this.sourceProj_); + this.transformInv_ = function(e) { + let t = e[0] + "/" + e[1]; + return s[t] || (s[t] = c(e)), s[t]; + }, this.maxSourceExtent_ = r, this.errorThresholdSquared_ = i * i, this.triangles_ = [], this.wrapsXInSource_ = !1, this.canWrapXInSource_ = this.sourceProj_.canWrapX() && !!r && !!this.sourceProj_.getExtent() && I(r) >= I(this.sourceProj_.getExtent()), this.sourceWorldWidth_ = this.sourceProj_.getExtent() ? I(this.sourceProj_.getExtent()) : null, this.targetWorldWidth_ = this.targetProj_.getExtent() ? I(this.targetProj_.getExtent()) : null; + let l = dt(n), u = ft(n), d = rt(n), f = nt(n), p = this.transformInv_(l), m = this.transformInv_(u), h = this.transformInv_(d), g = this.transformInv_(f), _ = fu + (a ? Math.max(0, Math.ceil(Math.log2(tt(n) / (a * a * 256 * 256)))) : 0); + if (this.addQuad_(l, u, d, f, p, m, h, g, _), this.wrapsXInSource_) { + let e = Infinity; + this.triangles_.forEach(function(t, n, r) { + e = Math.min(e, t.source[0][0], t.source[1][0], t.source[2][0]); + }), this.triangles_.forEach((t) => { + if (Math.max(t.source[0][0], t.source[1][0], t.source[2][0]) - e > this.sourceWorldWidth_ / 2) { + let n = [ + [t.source[0][0], t.source[0][1]], + [t.source[1][0], t.source[1][1]], + [t.source[2][0], t.source[2][1]] + ]; + n[0][0] - e > this.sourceWorldWidth_ / 2 && (n[0][0] -= this.sourceWorldWidth_), n[1][0] - e > this.sourceWorldWidth_ / 2 && (n[1][0] -= this.sourceWorldWidth_), n[2][0] - e > this.sourceWorldWidth_ / 2 && (n[2][0] -= this.sourceWorldWidth_); + let r = Math.min(n[0][0], n[1][0], n[2][0]); + Math.max(n[0][0], n[1][0], n[2][0]) - r < this.sourceWorldWidth_ / 2 && (t.source = n); + } + }); + } + s = {}; + } + addTriangle_(e, t, n, r, i, a) { + this.triangles_.push({ + source: [ + r, + i, + a + ], + target: [ + e, + t, + n + ] + }); + } + addQuad_(e, t, n, r, i, a, o, s, c) { + let l = Fe([ + i, + a, + o, + s + ]), u = this.sourceWorldWidth_ ? I(l) / this.sourceWorldWidth_ : null, d = this.sourceWorldWidth_, f = this.sourceProj_.canWrapX() && u > .5 && u < 1, p = !1; + if (c > 0 && (this.targetProj_.isGlobal() && this.targetWorldWidth_ && (p = I(Fe([ + e, + t, + n, + r + ])) / this.targetWorldWidth_ > pu || p), !f && this.sourceProj_.isGlobal() && u && (p = u > pu || p)), !p && this.maxSourceExtent_ && isFinite(l[0]) && isFinite(l[1]) && isFinite(l[2]) && isFinite(l[3]) && !pt(l, this.maxSourceExtent_)) return; + let m = 0; + if (!p && (!isFinite(i[0]) || !isFinite(i[1]) || !isFinite(a[0]) || !isFinite(a[1]) || !isFinite(o[0]) || !isFinite(o[1]) || !isFinite(s[0]) || !isFinite(s[1]))) { + if (c > 0) p = !0; + else if (m = (!isFinite(i[0]) || !isFinite(i[1]) ? 8 : 0) + (!isFinite(a[0]) || !isFinite(a[1]) ? 4 : 0) + (!isFinite(o[0]) || !isFinite(o[1]) ? 2 : 0) + +(!isFinite(s[0]) || !isFinite(s[1])), m != 1 && m != 2 && m != 4 && m != 8) return; + } + if (c > 0) { + if (!p) { + let t = [(e[0] + n[0]) / 2, (e[1] + n[1]) / 2], r = this.transformInv_(t), a; + a = f ? (Ot(i[0], d) + Ot(o[0], d)) / 2 - Ot(r[0], d) : (i[0] + o[0]) / 2 - r[0]; + let s = (i[1] + o[1]) / 2 - r[1]; + p = a * a + s * s > this.errorThresholdSquared_; + } + if (p) { + if (Math.abs(e[0] - n[0]) <= Math.abs(e[1] - n[1])) { + let l = [(t[0] + n[0]) / 2, (t[1] + n[1]) / 2], u = this.transformInv_(l), d = [(r[0] + e[0]) / 2, (r[1] + e[1]) / 2], f = this.transformInv_(d); + this.addQuad_(e, t, l, d, i, a, u, f, c - 1), this.addQuad_(d, l, n, r, f, u, o, s, c - 1); + } else { + let l = [(e[0] + t[0]) / 2, (e[1] + t[1]) / 2], u = this.transformInv_(l), d = [(n[0] + r[0]) / 2, (n[1] + r[1]) / 2], f = this.transformInv_(d); + this.addQuad_(e, l, d, r, i, u, f, s, c - 1), this.addQuad_(l, t, n, d, u, a, o, f, c - 1); + } + return; + } + } + if (f) { + if (!this.canWrapXInSource_) return; + this.wrapsXInSource_ = !0; + } + m & 11 || this.addTriangle_(e, n, r, i, o, s), m & 14 || this.addTriangle_(e, n, t, i, o, a), m && (m & 13 || this.addTriangle_(t, r, e, a, s, i), m & 7 || this.addTriangle_(t, r, n, a, s, o)); + } + calculateSourceExtent() { + let e = We(); + return this.triangles_.forEach(function(t, n, r) { + let i = t.source; + Ze(e, i[0]), Ze(e, i[1]), Ze(e, i[2]); + }), e; + } + getTriangles() { + return this.triangles_; + } +}, hu = .5, gu = class extends Yl { + constructor(e, t, n, r, i, a, o, s, c, l, u, d) { + super(i, L.IDLE, d), this.renderEdges_ = u !== void 0 && u, this.pixelRatio_ = o, this.gutter_ = s, this.canvas_ = null, this.sourceTileGrid_ = t, this.targetTileGrid_ = r, this.wrappedTileCoord_ = a || i, this.sourceTiles_ = [], this.sourcesListenerKeys_ = null, this.sourceZ_ = 0, this.clipExtent_ = e.canWrapX() ? e.getExtent() : void 0; + let f = r.getTileCoordExtent(this.wrappedTileCoord_), p = this.targetTileGrid_.getExtent(), m = this.sourceTileGrid_.getExtent(), h = p ? lt(f, p) : f; + if (tt(h) === 0) { + this.state = L.EMPTY; + return; + } + let g = e.getExtent(); + g && (m = m ? lt(m, g) : g); + let _ = r.getResolution(this.wrappedTileCoord_[0]), v = uu(e, n, h, _); + if (!isFinite(v) || v <= 0) { + this.state = L.EMPTY; + return; + } + let y = l === void 0 ? hu : l; + if (this.triangulation_ = new mu(e, n, h, m, v * y, _), this.triangulation_.getTriangles().length === 0) { + this.state = L.EMPTY; + return; + } + this.sourceZ_ = t.getZForResolution(v); + let b = this.triangulation_.calculateSourceExtent(); + if (m && (e.canWrapX() ? (b[1] = St(b[1], m[1], m[3]), b[3] = St(b[3], m[1], m[3])) : b = lt(b, m)), !tt(b)) this.state = L.EMPTY; + else { + let n = 0, r = 0; + e.canWrapX() && (n = I(g), r = Math.floor((b[0] - g[0]) / n)), bt(b.slice(), e, !0).forEach((e) => { + let i = t.getTileRangeForExtentAndZ(e, this.sourceZ_); + for (let e = i.minX; e <= i.maxX; e++) for (let t = i.minY; t <= i.maxY; t++) { + let i = r * n; + this.sourceTiles_.push({ + getTile: () => c(this.sourceZ_, e, t, o), + offset: i + }); + } + ++r; + }), this.sourceTiles_.length === 0 && (this.state = L.EMPTY); + } + } + getImage() { + return this.canvas_; + } + reproject_() { + let e = []; + if (this.sourceTiles_.forEach((t) => { + let n = t.tile; + if (n && n.getState() == L.LOADED) { + let r = this.sourceTileGrid_.getTileCoordExtent(n.tileCoord); + r[0] += t.offset, r[2] += t.offset; + let i = this.clipExtent_?.slice(); + i && (i[0] += t.offset, i[2] += t.offset), e.push({ + extent: r, + clipExtent: i, + image: n.getImage() + }); + } + }), this.sourceTiles_.length = 0, e.length === 0) this.state = L.ERROR; + else { + let t = this.wrappedTileCoord_[0], n = this.targetTileGrid_.getTileSize(t), r = typeof n == "number" ? n : n[0], i = typeof n == "number" ? n : n[1], a = this.targetTileGrid_.getResolution(t), o = this.sourceTileGrid_.getResolution(this.sourceZ_), s = this.targetTileGrid_.getTileCoordExtent(this.wrappedTileCoord_); + this.canvas_ = du(r, i, this.pixelRatio_, o, this.sourceTileGrid_.getExtent(), a, s, this.triangulation_, e, this.gutter_, this.renderEdges_, this.interpolate), this.state = L.LOADED; + } + this.changed(); + } + load() { + for (let e of this.sourceTiles_) e.tile = e.getTile(); + if (this.state == L.IDLE) { + this.state = L.LOADING, this.changed(); + let e = 0; + this.sourcesListenerKeys_ = [], this.sourceTiles_.forEach(({ tile: t }) => { + let n = t.getState(); + if (n == L.IDLE || n == L.LOADING) { + e++; + let n = A(t, M.CHANGE, (r) => { + let i = t.getState(); + (i == L.LOADED || i == L.ERROR || i == L.EMPTY) && (j(n), e--, e === 0 && (this.unlistenSources_(), this.reproject_())); + }); + this.sourcesListenerKeys_.push(n); + } + }), e === 0 ? setTimeout(this.reproject_.bind(this), 0) : this.sourceTiles_.forEach(function({ tile: e }, t, n) { + e.getState() == L.IDLE && e.load(); + }); + } + } + unlistenSources_() { + this.sourcesListenerKeys_.forEach(j), this.sourcesListenerKeys_ = null; + } + release() { + this.canvas_ &&= (S(this.canvas_.getContext("2d")), au.push(this.canvas_), null), this.sourceTiles_.length = 0, super.release(); + } +}, _u = class { + constructor(e) { + this.highWaterMark = e === void 0 ? 2048 : e, this.count_ = 0, this.entries_ = {}, this.oldest_ = null, this.newest_ = null; + } + deleteOldest() { + let e = this.pop(); + e instanceof ie && e.dispose(); + } + canExpireCache() { + return this.highWaterMark > 0 && this.getCount() > this.highWaterMark; + } + expireCache(e) { + for (; this.canExpireCache();) this.deleteOldest(); + } + clear() { + for (; this.oldest_;) this.deleteOldest(); + } + containsKey(e) { + return this.entries_.hasOwnProperty(e); + } + forEach(e) { + let t = this.oldest_; + for (; t;) e(t.value_, t.key_, this), t = t.newer; + } + get(e, t) { + let n = this.entries_[e]; + return R(n !== void 0, "Tried to get a value for a key that does not exist in the cache"), n === this.newest_ ? n.value_ : (n === this.oldest_ ? (this.oldest_ = this.oldest_.newer, this.oldest_.older = null) : (n.newer.older = n.older, n.older.newer = n.newer), n.newer = null, n.older = this.newest_, this.newest_.newer = n, this.newest_ = n, n.value_); + } + remove(e) { + let t = this.entries_[e]; + return R(t !== void 0, "Tried to get a value for a key that does not exist in the cache"), t === this.newest_ ? (this.newest_ = t.older, this.newest_ && (this.newest_.newer = null)) : t === this.oldest_ ? (this.oldest_ = t.newer, this.oldest_ && (this.oldest_.older = null)) : (t.newer.older = t.older, t.older.newer = t.newer), delete this.entries_[e], --this.count_, t.value_; + } + getCount() { + return this.count_; + } + getKeys() { + let e = Array(this.count_), t = 0, n; + for (n = this.newest_; n; n = n.older) e[t++] = n.key_; + return e; + } + getValues() { + let e = Array(this.count_), t = 0, n; + for (n = this.newest_; n; n = n.older) e[t++] = n.value_; + return e; + } + peekLast() { + return this.oldest_.value_; + } + peekLastKey() { + return this.oldest_.key_; + } + peekFirstKey() { + return this.newest_.key_; + } + peek(e) { + return this.entries_[e]?.value_; + } + pop() { + let e = this.oldest_; + return delete this.entries_[e.key_], e.newer && (e.newer.older = null), this.oldest_ = e.newer, this.oldest_ || (this.newest_ = null), --this.count_, e.value_; + } + replace(e, t) { + this.get(e), this.entries_[e].value_ = t; + } + set(e, t) { + R(!(e in this.entries_), "Tried to set a value for a key that is used already"); + let n = { + key_: e, + newer: null, + older: this.newest_, + value_: t + }; + this.newest_ ? this.newest_.newer = n : this.oldest_ = n, this.newest_ = n, this.entries_[e] = n, ++this.count_; + } + setSize(e) { + this.highWaterMark = e; + } +}; +//#endregion +//#region node_modules/ol/tilecoord.js +function vu(e, t, n, r) { + return r === void 0 ? [ + e, + t, + n + ] : (r[0] = e, r[1] = t, r[2] = n, r); +} +function yu(e, t, n) { + return e + "/" + t + "/" + n; +} +function bu(e, t, n, r, i) { + return `${F(e)},${t},${yu(n, r, i)}`; +} +function xu(e) { + return Su(e[0], e[1], e[2]); +} +function Su(e, t, n) { + return (t << e) + n; +} +function Cu(e, t) { + let n = e[0], r = e[1], i = e[2]; + if (t.getMinZoom() > n || n > t.getMaxZoom()) return !1; + let a = t.getFullTileRange(n); + return !a || a.containsXY(r, i); +} +//#endregion +//#region node_modules/ol/render/canvas/ZIndexContext.js +var wu = class { + constructor() { + this.instructions_ = [], this.zIndex = 0, this.offset_ = 0, this.pendingMethod_, this.context_ = new Proxy(x(), { + get: (e, t) => { + if (typeof e[t] == "function") return this.pendingMethod_ = t, this.pushMethodArgs_; + }, + set: (e, t, n) => (this.push_(t, n), !0) + }); + } + push_(...e) { + let t = this.instructions_, n = this.zIndex + this.offset_; + t[n] || (t[n] = []), t[n].push(...e); + } + pushMethodArgs_ = (...e) => { + this.push_(this.pendingMethod_, e); + }; + pushFunction(e) { + this.push_(e); + } + getContext() { + return this.context_; + } + draw(e) { + this.instructions_.forEach((t) => { + for (let n = 0, r = t.length; n < r; ++n) { + let r = t[n]; + if (typeof r == "function") { + r(e); + continue; + } + let i = t[++n]; + typeof e[r] == "function" ? e[r](...i) : e[r] = typeof i == "function" ? i(e) : i; + } + }); + } + clear() { + this.instructions_.length = 0, this.zIndex = 0, this.offset_ = 0; + } + offset() { + this.offset_ = this.instructions_.length, this.zIndex = 0; + } +}, Tu = 5, Eu = class extends be { + constructor(e) { + super(), this.ready = !0, this.boundHandleImageChange_ = this.handleImageChange_.bind(this), this.layer_ = e, this.staleKeys_ = [], this.maxStaleKeys = Tu, this.renderedSourceKey_; + } + getStaleKeys() { + return this.staleKeys_; + } + prependStaleKey(e) { + this.staleKeys_.unshift(e), this.staleKeys_.length > this.maxStaleKeys && (this.staleKeys_.length = this.maxStaleKeys); + } + updateStaleKeys(e) { + this.renderedSourceKey_ ? this.renderedSourceKey_ !== e && (this.prependStaleKey(this.renderedSourceKey_), this.renderedSourceKey_ = e) : this.renderedSourceKey_ = e; + } + getFeatures(e) { + return P(); + } + getData(e) { + return null; + } + prepareFrame(e) { + return P(); + } + renderFrame(e, t) { + return P(); + } + forEachFeatureAtCoordinate(e, t, n, r, i) {} + getLayer() { + return this.layer_; + } + handleFontsChanged() {} + handleImageChange_(e) { + let t = e.target; + (t.getState() === J.LOADED || t.getState() === J.ERROR) && this.renderIfReadyAndVisible(); + } + loadImage(e) { + let t = e.getState(); + return t != J.LOADED && t != J.ERROR && e.addEventListener(M.CHANGE, this.boundHandleImageChange_), t == J.IDLE && (e.load(), t = e.getState()), t == J.LOADED; + } + renderIfReadyAndVisible() { + let e = this.getLayer(); + e && e.getVisible() && e.getSourceState() === "ready" && e.changed(); + } + renderDeferred(e) {} + disposeInternal() { + delete this.layer_, super.disposeInternal(); + } +}, Du = [], Ou = null; +function ku() { + Ou = y(1, 1, void 0, { willReadFrequently: !0 }); +} +var Au = class extends Eu { + constructor(e) { + super(e), this.container = null, this.renderedResolution, this.tempTransform = qr(), this.pixelTransform = qr(), this.inversePixelTransform = qr(), this.context = null, this.deferredContext_ = null, this.containerReused = !1, this.frameState = null; + } + getImageData(e, t, n) { + Ou || ku(), Ou.clearRect(0, 0, 1, 1); + let r; + try { + Ou.drawImage(e, t, n, 1, 1, 0, 0, 1, 1), r = Ou.getImageData(0, 0, 1, 1).data; + } catch { + return Ou = null, null; + } + return r; + } + getBackground(e) { + let t = this.getLayer().getBackground(); + return typeof t == "function" && (t = t(e.viewState.resolution)), t || void 0; + } + useContainer(e, t, n, r, i) { + if (O(e) && this.pixelTransform[1] === 0 && this.pixelTransform[2] === 0 && this.pixelTransform[4] === 0 && this.pixelTransform[5] === 0 && e.width === r && e.height === i) { + let t = e, r = t.getContext("2d"); + if (r) { + this.container = e, this.context = r, this.containerReused = !0, n && (r.fillStyle = n, r.fillRect(0, 0, t.width, t.height)); + return; + } + } + let a = this.getLayer().getClassName(), o, s; + if (e && e.className === a && (!n || e && e.style.backgroundColor && de($o(e.style.backgroundColor), $o(n)))) { + let t = e.firstElementChild; + O(t) && (s = t.getContext("2d")); + } + if (s && oi(s.canvas.style.transform, t) ? (this.container = e, this.context = s, this.containerReused = !0) : this.containerReused ? (this.container = null, this.context = null, this.containerReused = !1) : this.container && (this.container.style.backgroundColor = null), !this.container) { + o = g ? D() : document.createElement("div"), o.className = a; + let e = o.style; + e.position = "absolute", e.width = "100%", e.height = "100%", s = y(); + let t = s.canvas; + o.appendChild(t), e = t.style, e.position = "absolute", e.left = "0", e.transformOrigin = "top left", this.container = o, this.context = s; + } + !this.containerReused && n && !this.container.style.backgroundColor && (this.container.style.backgroundColor = n); + } + clipUnrotated(e, t, n) { + let r = dt(n), i = ft(n), a = rt(n), o = nt(n); + z(t.coordinateToPixelTransform, r), z(t.coordinateToPixelTransform, i), z(t.coordinateToPixelTransform, a), z(t.coordinateToPixelTransform, o); + let s = this.inversePixelTransform; + z(s, r), z(s, i), z(s, a), z(s, o), e.save(), e.beginPath(), e.moveTo(Math.round(r[0]), Math.round(r[1])), e.lineTo(Math.round(i[0]), Math.round(i[1])), e.lineTo(Math.round(a[0]), Math.round(a[1])), e.lineTo(Math.round(o[0]), Math.round(o[1])), e.clip(); + } + prepareContainer(e, t) { + let n = e.extent, r = e.viewState.resolution, i = e.viewState.rotation, a = e.pixelRatio, o = Math.round(I(n) / r * a), s = Math.round(ct(n) / r * a); + ei(this.pixelTransform, e.size[0] / 2, e.size[1] / 2, 1 / a, 1 / a, i, -o / 2, -s / 2), ti(this.inversePixelTransform, this.pixelTransform); + let c = ii(this.pixelTransform), l = this.getBackground(e); + if (this.useContainer(t, c, l, o, s), !this.containerReused) { + let e = this.context.canvas; + e.width != o || e.height != s ? (e.width = o, e.height = s) : this.context.clearRect(0, 0, o, s), c !== e.style.transform && (e.style.transform = c); + } + } + dispatchRenderEvent_(e, t, n) { + let r = this.getLayer(); + if (r.hasListener(e)) { + let i = new Ml(e, this.inversePixelTransform, n, t); + r.dispatchEvent(i); + } + } + preRender(e, t) { + this.frameState = t, !t.declutter && this.dispatchRenderEvent_(lo.PRERENDER, e, t); + } + postRender(e, t) { + t.declutter || this.dispatchRenderEvent_(lo.POSTRENDER, e, t); + } + renderDeferredInternal(e) {} + getRenderContext(e) { + return e.declutter && !this.deferredContext_ && (this.deferredContext_ = new wu()), e.declutter ? this.deferredContext_.getContext() : this.context; + } + renderDeferred(e) { + e.declutter && (this.dispatchRenderEvent_(lo.PRERENDER, this.context, e), e.declutter && this.deferredContext_ && (this.deferredContext_.draw(this.context), this.deferredContext_.clear()), this.renderDeferredInternal(e), this.dispatchRenderEvent_(lo.POSTRENDER, this.context, e)); + } + getRenderTransform(e, t, n, r, i, a, o) { + let s = i / 2, c = a / 2, l = r / t, u = -l, d = -e[0] + o, f = -e[1]; + return ei(this.tempTransform, s, c, l, u, -n, d, f); + } + disposeInternal() { + delete this.frameState, super.disposeInternal(); + } +}; +//#endregion +//#region node_modules/ol/renderer/canvas/TileLayer.js +function ju(e, t, n) { + if (!(n in e)) return e[n] = /* @__PURE__ */ new Set([t]), !0; + let r = e[n], i = r.has(t); + return i || r.add(t), !i; +} +function Mu(e, t, n) { + let r = e[n]; + return r ? r.delete(t) : !1; +} +function Nu(e, t) { + let n = e.layerStatesArray[e.layerIndex]; + n.extent && (t = lt(t, yr(n.extent, e.viewState.projection))); + let r = n.layer.getRenderSource(); + if (!r.getWrapX()) { + let n = r.getTileGridForProjection(e.viewState.projection).getExtent(); + n && (t = lt(t, n)); + } + return t; +} +var Pu = class extends Au { + constructor(e, t) { + super(e), t ||= {}, this.extentChanged = !0, this.renderComplete = !1, this.renderedExtent_ = null, this.renderedPixelRatio, this.renderedProjection = null, this.renderedTiles = [], this.renderedSourceRevision_, this.tempExtent = We(), this.tempTileRange_ = new nu(0, 0, 0, 0), this.tempTileCoord_ = vu(0, 0, 0); + let n = t.cacheSize === void 0 ? 512 : t.cacheSize; + this.tileCache_ = new _u(n), this.sourceTileCache_ = null, this.layerExtent = null, this.maxStaleKeys = n * .5; + } + getTileCache() { + return this.tileCache_; + } + getSourceTileCache() { + return this.sourceTileCache_ ||= new _u(512), this.sourceTileCache_; + } + getOrCreateTile(e, t, n, r) { + let i = this.tileCache_, a = this.getLayer().getSource(), o = bu(a, a.getKey(), e, t, n), s; + if (i.containsKey(o)) s = i.get(o); + else { + let c = r.viewState.projection, l = a.getProjection(); + if (s = a.getTile(e, t, n, r.pixelRatio, c, !l || cr(l, c) ? void 0 : this.getSourceTileCache()), !s) return null; + i.set(o, s); + } + return s; + } + getTile(e, t, n, r) { + return this.getOrCreateTile(e, t, n, r) || null; + } + getData(e) { + let t = this.frameState; + if (!t) return null; + let n = this.getLayer(), r = z(t.pixelToCoordinateTransform, e.slice()), i = n.getExtent(); + if (i && !Be(i, r)) return null; + let a = t.viewState, o = n.getRenderSource(), s = o.getTileGridForProjection(a.projection), c = o.getTilePixelRatio(t.pixelRatio); + for (let e = s.getZForResolution(a.resolution); e >= s.getMinZoom(); --e) { + let n = s.getTileCoordForCoordAndZ(r, e), i = this.getTile(e, n[1], n[2], t); + if (!i || i.getState() !== L.LOADED) continue; + let l = s.getOrigin(e), u = rs(s.getTileSize(e)), d = s.getResolution(e), f; + if (i instanceof eu || i instanceof gu) f = i.getImage(); + else if (i instanceof $l) { + if (f = Xl(i.getData()), !f) continue; + } else continue; + let p = Math.floor(c * ((r[0] - l[0]) / d - n[1] * u[0])), m = Math.floor(c * ((l[1] - r[1]) / d - n[2] * u[1])), h = Math.round(c * o.getGutterForProjection(a.projection)); + return this.getImageData(f, p + h, m + h); + } + return null; + } + prepareFrame(e) { + this.renderedProjection ? e.viewState.projection !== this.renderedProjection && (this.tileCache_.clear(), this.renderedProjection = e.viewState.projection) : this.renderedProjection = e.viewState.projection; + let t = this.getLayer().getSource(); + if (!t) return !1; + let n = t.getRevision(); + return this.renderedSourceRevision_ ? this.renderedSourceRevision_ !== n && (this.renderedSourceRevision_ = n, this.renderedSourceKey_ === t.getKey() && (this.tileCache_.clear(), this.sourceTileCache_?.clear())) : this.renderedSourceRevision_ = n, !0; + } + enqueueTilesForNextExtent() { + return !0; + } + enqueueTiles(e, t, n, r, i) { + let a = e.viewState, o = this.getLayer(), s = o.getRenderSource(), c = s.getTileGridForProjection(a.projection), l = F(s); + l in e.wantedTiles || (e.wantedTiles[l] = {}); + let u = e.wantedTiles[l], d = o.getMapInternal(), f = Math.max(n - i, c.getMinZoom(), c.getZForResolution(Math.min(o.getMaxResolution(), d ? d.getView().getResolutionForZoom(Math.max(o.getMinZoom(), 0)) : c.getResolution(0)), s.zDirection)), p = a.rotation, m = p ? st(a.center, a.resolution, p, e.size) : void 0; + for (let i = n; i >= f; --i) { + let n = c.getTileRangeForExtentAndZ(t, i, this.tempTileRange_), a = c.getResolution(i); + for (let t = n.minX; t <= n.maxX; ++t) for (let o = n.minY; o <= n.maxY; ++o) { + if (p && !c.tileCoordIntersectsViewport([ + i, + t, + o + ], m)) continue; + let n = this.getTile(i, t, o, e); + if (!n || !ju(r, n, i)) continue; + let s = n.getKey(); + if (u[s] = !0, n.getState() === L.IDLE && !e.tileQueue.isKeyQueued(s)) { + let r = vu(i, t, o, this.tempTileCoord_); + e.tileQueue.enqueue([ + n, + l, + c.getTileCoordCenter(r), + a + ]); + } + } + } + } + findStaleTile_(e, t) { + let n = this.tileCache_, r = e[0], i = e[1], a = e[2], o = this.getStaleKeys(); + for (let e = 0; e < o.length; ++e) { + let s = bu(this.getLayer().getSource(), o[e], r, i, a); + if (n.containsKey(s)) { + let e = n.peek(s); + if (e.getState() === L.LOADED) return e.endTransition(F(this)), ju(t, e, r), !0; + } + } + return !1; + } + findAltTiles_(e, t, n, r) { + let i = e.getTileRangeForTileCoordAndZ(t, n, this.tempTileRange_); + if (!i) return !1; + let a = !0, o = this.tileCache_, s = this.getLayer().getRenderSource(), c = s.getKey(); + for (let e = i.minX; e <= i.maxX; ++e) for (let t = i.minY; t <= i.maxY; ++t) { + let i = bu(s, c, n, e, t), l = !1; + if (o.containsKey(i)) { + let e = o.peek(i); + e.getState() === L.LOADED && (ju(r, e, n), l = !0); + } + l || (a = !1); + } + return a; + } + renderFrame(e, t) { + this.renderComplete = !0; + let n = e.layerStatesArray[e.layerIndex], r = e.viewState, i = r.projection, a = r.resolution, o = r.center, s = e.pixelRatio, c = this.getLayer(), l = c.getSource(), u = l.getTileGridForProjection(i), d = u.getZForResolution(a, l.zDirection), f = u.getResolution(d); + this.updateStaleKeys(l.getKey()); + let p = e.extent, m = l.getTilePixelRatio(s); + this.prepareContainer(e, t); + let h = this.context.canvas.width, g = this.context.canvas.height; + this.layerExtent = n.extent ? yr(n.extent, i) : null, this.layerExtent && (p = lt(p, this.layerExtent)); + let _ = f * h / 2 / m, v = f * g / 2 / m, y = [ + o[0] - _, + o[1] - v, + o[0] + _, + o[1] + v + ], b = {}; + this.renderedTiles.length = 0; + let x = c.getPreload(); + if (e.nextExtent && this.enqueueTilesForNextExtent()) { + let t = u.getZForResolution(r.nextResolution, l.zDirection), n = Nu(e, e.nextExtent); + this.enqueueTiles(e, n, t, b, x); + } + let S = Nu(e, p); + if (this.enqueueTiles(e, S, d, b, 0), x > 0 && setTimeout(() => { + this.enqueueTiles(e, S, d - 1, b, x - 1); + }, 0), !(d in b)) return this.container; + let C = F(this), w = e.time; + for (let t of b[d]) { + let n = t.getState(); + if (n === L.EMPTY) continue; + let r = t.tileCoord; + if (n === L.LOADED && t.getAlpha(C, w) === 1) { + t.endTransition(C); + continue; + } + if (n !== L.ERROR && (this.renderComplete = !1), this.findStaleTile_(r, b)) { + Mu(b, t, d), e.animate = !0; + continue; + } + if (this.findAltTiles_(u, r, d + 1, b)) continue; + let i = u.getMinZoom(); + for (let e = d - 1; e >= i && !this.findAltTiles_(u, r, e, b); --e); + } + let T = f / a * s / m, E = this.getRenderContext(e); + ei(this.tempTransform, h / 2, g / 2, T, T, 0, -h / 2, -g / 2), this.layerExtent && this.clipUnrotated(E, e, this.layerExtent), l.getInterpolate() || (E.imageSmoothingEnabled = !1), this.preRender(E, e); + let ee = Object.keys(b).map(Number); + ee.sort(oe); + let D = [], O = [], k = []; + for (let t = ee.length - 1; t >= 0; --t) { + let n = ee[t], r = l.getTilePixelSize(n, s, i), a = u.getResolution(n) / f, o = r[0] * a * T, c = r[1] * a * T, p = u.getTileCoordForCoordAndZ(dt(y), n), h = u.getTileCoordExtent(p), g = z(this.tempTransform, [m * (h[0] - y[0]) / f, m * (y[3] - h[3]) / f]), _ = m * l.getGutterForProjection(i); + for (let t of b[n]) { + if (t.getState() !== L.LOADED) continue; + let r = t.tileCoord, i = p[1] - r[1], a = Math.round(g[0] - (i - 1) * o), s = p[2] - r[2], u = Math.round(g[1] - (s - 1) * c), f = Math.round(g[0] - i * o), m = Math.round(g[1] - s * c), h = a - f, v = u - m, y = n === d; + if (y && t.inTransition(C)) { + k.push({ + tile: t, + x: f, + y: m, + w: h, + h: v, + gutter: _ + }), this.renderedTiles.unshift(t), this.updateUsedTiles(e.usedTiles, l, t); + continue; + } + let b = [ + f, + m, + f + h, + m + v + ], x = []; + for (let e = 0, t = D.length; e < t; ++e) n < O[e] && pt(b, D[e]) && x.push(D[e]); + let S; + x.length > 0 && (S = xt(b, x)), D.push(b), O.push(n), this.drawTile(t, e, f, m, h, v, _, y, S), this.renderedTiles.unshift(t), this.updateUsedTiles(e.usedTiles, l, t); + } + } + for (let t = 0, n = k.length; t < n; ++t) { + let { tile: n, x: r, y: i, w: a, h: o, gutter: s } = k[t]; + this.drawTile(n, e, r, i, a, o, s, !0, void 0); + } + return this.renderedResolution = f, this.extentChanged = !this.renderedExtent_ || !Ye(this.renderedExtent_, y), this.renderedExtent_ = y, this.renderedPixelRatio = s, this.postRender(this.context, e), this.layerExtent && E.restore(), E.imageSmoothingEnabled = !0, this.renderComplete && e.postRenderFunctions.push((e, t) => { + let n = F(l), r = t.wantedTiles[n], i = r ? Object.keys(r).length : 0; + this.updateCacheSize(i), this.tileCache_.expireCache(), this.sourceTileCache_?.expireCache(); + }), this.container; + } + updateCacheSize(e) { + this.tileCache_.highWaterMark = Math.max(this.tileCache_.highWaterMark, e * 2); + } + drawTile(e, t, n, r, i, a, o, s, c) { + let l; + if (e instanceof $l) { + if (l = Xl(e.getData()), !l) throw Error("Rendering array data is not yet supported"); + } else l = this.getTileImage(e); + if (!l) return; + let u = this.getRenderContext(t), d = F(this), f = t.layerStatesArray[t.layerIndex], p = f.opacity * (s ? e.getAlpha(d, t.time) : 1), m = p !== u.globalAlpha; + m && (u.save(), u.globalAlpha = p); + let h = l.width - 2 * o, g = l.height - 2 * o; + if (c) { + let e = h / i, t = g / a; + for (let i = 0, a = c.length; i < a; ++i) { + let a = c[i], s = a[0], d = a[1], f = a[2] - a[0], p = a[3] - a[1]; + u.drawImage(l, o + (s - n) * e, o + (d - r) * t, f * e, p * t, s, d, f, p); + } + } else u.drawImage(l, o, o, h, g, n, r, i, a); + m && u.restore(), p === f.opacity ? s && e.endTransition(d) : t.animate = !0; } - setLayerGroup(e) { - let t = this.getLayerGroup(); - t && this.handleLayerRemove_(new vs("removelayer", t)), this.set(ko.LAYERGROUP, e); + getImage() { + let e = this.context; + return e ? e.canvas : null; } - setSize(e) { - this.set(ko.SIZE, e); + getTileImage(e) { + return e.getImage(); } - setTarget(e) { - this.set(ko.TARGET, e); + updateUsedTiles(e, t, n) { + let r = F(t); + r in e || (e[r] = {}), e[r][n.getKey()] = !0; } - setView(e) { - if (!e || e instanceof uo) { - this.set(ko.VIEW, e); - return; - } - this.set(ko.VIEW, new uo()); - let t = this; - e.then(function(e) { - t.setView(new uo(e)); - }); +}, Fu = { + PRELOAD: "preload", + USE_INTERIM_TILES_ON_ERROR: "useInterimTilesOnError" +}, Iu = class extends uo { + constructor(e) { + e ||= {}; + let t = Object.assign({}, e), n = e.cacheSize; + delete e.cacheSize, delete t.preload, delete t.useInterimTilesOnError, super(t), this.on, this.once, this.un, this.cacheSize_ = n, this.setPreload(e.preload === void 0 ? 0 : e.preload), this.setUseInterimTilesOnError(e.useInterimTilesOnError === void 0 || e.useInterimTilesOnError); } - updateSize() { - let e = this.getTargetElement(), t; - if (e) { - let n, r; - if (Ee(e)) { - let t = e.getContext("2d").getTransform(); - n = e.width / t.a, r = e.height / t.d; - } else { - let t = getComputedStyle(e); - n = e.offsetWidth - parseFloat(t.borderLeftWidth) - parseFloat(t.paddingLeft) - parseFloat(t.paddingRight) - parseFloat(t.borderRightWidth), r = e.offsetHeight - parseFloat(t.borderTopWidth) - parseFloat(t.paddingTop) - parseFloat(t.paddingBottom) - parseFloat(t.borderBottomWidth); - } - !isNaN(n) && !isNaN(r) && (t = [Math.max(0, n), Math.max(0, r)], !di(t) && (e.offsetWidth || e.offsetHeight || e.getClientRects().length) && zt("No map visible because the map container's width or height are 0.")); - } - let n = this.getSize(); - t && (!n || !h(t, n)) && (this.updateViewportSize_(t), this.setSize(t)); + getCacheSize() { + return this.cacheSize_; } - updateViewportSize_(e) { - let t = this.getView(); - t && t.setViewportSize(e); + getPreload() { + return this.get(Fu.PRELOAD); } -}; -function gu(e) { - let t = null; - e.keyboardEventTarget !== void 0 && (t = typeof e.keyboardEventTarget == "string" ? document.getElementById(e.keyboardEventTarget) : e.keyboardEventTarget); - let n = {}, r = e.layers && typeof e.layers.getLayers == "function" ? e.layers : new bs({ layers: e.layers }); - n[ko.LAYERGROUP] = r, n[ko.TARGET] = e.target, n[ko.VIEW] = e.view instanceof uo ? e.view : new uo(); - let i; - e.controls !== void 0 && (Array.isArray(e.controls) ? i = new N(e.controls.slice()) : (z(typeof e.controls.getArray == "function", "Expected `controls` to be an array or an `ol/Collection.js`"), i = e.controls)); - let a; - e.interactions !== void 0 && (Array.isArray(e.interactions) ? a = new N(e.interactions.slice()) : (z(typeof e.interactions.getArray == "function", "Expected `interactions` to be an array or an `ol/Collection.js`"), a = e.interactions)); - let o; - return e.overlays === void 0 ? o = new N() : Array.isArray(e.overlays) ? o = new N(e.overlays.slice()) : (z(typeof e.overlays.getArray == "function", "Expected `overlays` to be an array or an `ol/Collection.js`"), o = e.overlays), { - controls: i, - interactions: a, - keyboardEventTarget: t, - overlays: o, - values: n - }; -} -//#endregion -//#region node_modules/ol/tilegrid/TileGrid.js -var _u = [ + setPreload(e) { + this.set(Fu.PRELOAD, e); + } + getUseInterimTilesOnError() { + return this.get(Fu.USE_INTERIM_TILES_ON_ERROR); + } + setUseInterimTilesOnError(e) { + this.set(Fu.USE_INTERIM_TILES_ON_ERROR, e); + } + getData(e) { + return super.getData(e); + } +}, Lu = class extends Iu { + constructor(e) { + super(e); + } + createRenderer() { + return new Pu(this, { cacheSize: this.getCacheSize() }); + } +}, Ru = [ 0, 0, 0 -], vu = 5, yu = class { +], zu = 5, Bu = class { +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes constructor(e) { let t = e.minZoom, n = e.resolutions; t === void 0 && n && (t = n.findIndex((e) => e !== void 0)), this.minZoom = t === void 0 ? 0 : t, this.resolutions_ = n, z(g(this.resolutions_, (e, t) => t - e, !0), "`resolutions` must be sorted in descending order"); @@ -8051,7 +14442,15 @@ var _u = [ 0, 0 ], e.tileRanges === void 0 ? e.sizes === void 0 ? i && this.calculateTileRanges_(i) : this.fullTileRanges_ = e.sizes.map((e, t) => { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let n = new qe(Math.min(0, e[0]), Math.max(e[0] - 1, -1), Math.min(0, e[1]), Math.max(e[1] - 1, -1)); +======= + let n = new nu(Math.min(0, e[0]), Math.max(e[0] - 1, -1), Math.min(0, e[1]), Math.max(e[1] - 1, -1)); +>>>>>>> Stashed changes +======= + let n = new nu(Math.min(0, e[0]), Math.max(e[0] - 1, -1), Math.min(0, e[1]), Math.max(e[1] - 1, -1)); +>>>>>>> Stashed changes if (i) { let e = this.getTileRangeForExtentAndZ(i, t); n.minX = Math.max(e.minX, n.minX), n.maxX = Math.min(e.maxX, n.maxX), n.minY = Math.max(e.minY, n.minY), n.maxY = Math.min(e.maxY, n.maxY); @@ -8070,7 +14469,15 @@ var _u = [ forEachTileCoordParentTileRange(e, t, n, r) { let i, a, o, s = null, c = e[0] - 1; for (this.zoomFactor_ === 2 ? (a = e[1], o = e[2]) : s = this.getTileCoordExtent(e, r); c >= this.minZoom;) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (a !== void 0 && o !== void 0 ? (a = Math.floor(a / 2), o = Math.floor(o / 2), i = Je(a, a, o, o, n)) : i = this.getTileRangeForExtentAndZ(s, c, n), t(c, i)) return !0; +======= + if (a !== void 0 && o !== void 0 ? (a = Math.floor(a / 2), o = Math.floor(o / 2), i = ru(a, a, o, o, n)) : i = this.getTileRangeForExtentAndZ(s, c, n), t(c, i)) return !0; +>>>>>>> Stashed changes +======= + if (a !== void 0 && o !== void 0 ? (a = Math.floor(a / 2), o = Math.floor(o / 2), i = ru(a, a, o, o, n)) : i = this.getTileRangeForExtentAndZ(s, c, n), t(c, i)) return !0; +>>>>>>> Stashed changes --c; } return !1; @@ -8100,7 +14507,15 @@ var _u = [ if (e[0] < this.maxZoom) { if (this.zoomFactor_ === 2) { let n = e[1] * 2, r = e[2] * 2; +<<<<<<< Updated upstream +<<<<<<< Updated upstream return Je(n, n + 1, r, r + 1, t); +======= + return ru(n, n + 1, r, r + 1, t); +>>>>>>> Stashed changes +======= + return ru(n, n + 1, r, r + 1, t); +>>>>>>> Stashed changes } let r = this.getTileCoordExtent(e, n || this.tmpExtent_); return this.getTileRangeForExtentAndZ(r, e[0] + 1, t); @@ -8110,15 +14525,31 @@ var _u = [ getTileRangeForTileCoordAndZ(e, t, n) { if (t > this.maxZoom || t < this.minZoom) return null; let r = e[0], i = e[1], a = e[2]; +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (t === r) return Je(i, a, i, a, n); if (this.zoomFactor_) { let e = this.zoomFactor_ ** +(t - r), o = Math.floor(i * e), s = Math.floor(a * e); return t < r ? Je(o, o, s, s, n) : Je(o, Math.floor(e * (i + 1)) - 1, s, Math.floor(e * (a + 1)) - 1, n); +======= + if (t === r) return ru(i, a, i, a, n); + if (this.zoomFactor_) { + let e = this.zoomFactor_ ** +(t - r), o = Math.floor(i * e), s = Math.floor(a * e); + return t < r ? ru(o, o, s, s, n) : ru(o, Math.floor(e * (i + 1)) - 1, s, Math.floor(e * (a + 1)) - 1, n); +>>>>>>> Stashed changes +======= + if (t === r) return ru(i, a, i, a, n); + if (this.zoomFactor_) { + let e = this.zoomFactor_ ** +(t - r), o = Math.floor(i * e), s = Math.floor(a * e); + return t < r ? ru(o, o, s, s, n) : ru(o, Math.floor(e * (i + 1)) - 1, s, Math.floor(e * (a + 1)) - 1, n); +>>>>>>> Stashed changes } let o = this.getTileCoordExtent(e, this.tmpExtent_); return this.getTileRangeForExtentAndZ(o, t, n); } getTileRangeForExtentAndZ(e, t, n) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.getTileCoordForXYAndZ_(e[0], e[3], t, !1, _u); let r = _u[1], i = _u[2]; this.getTileCoordForXYAndZ_(e[2], e[1], t, !0, _u); @@ -8132,17 +14563,63 @@ var _u = [ getTileCoordExtent(e, t) { let n = this.getOrigin(e[0]), r = this.getResolution(e[0]), i = pi(this.getTileSize(e[0]), this.tmpSize_), a = n[0] + e[1] * i[0] * r, o = n[1] - (e[2] + 1) * i[1] * r; return ot(a, o, a + i[0] * r, o + i[1] * r, t); +======= + this.getTileCoordForXYAndZ_(e[0], e[3], t, !1, Ru); + let r = Ru[1], i = Ru[2]; + this.getTileCoordForXYAndZ_(e[2], e[1], t, !0, Ru); + let a = Ru[1], o = Ru[2]; + return ru(r, a, i, o, n); + } + getTileCoordCenter(e) { + let t = this.getOrigin(e[0]), n = this.getResolution(e[0]), r = rs(this.getTileSize(e[0]), this.tmpSize_); + return [t[0] + (e[1] + .5) * r[0] * n, t[1] - (e[2] + .5) * r[1] * n]; + } + getTileCoordExtent(e, t) { +======= + this.getTileCoordForXYAndZ_(e[0], e[3], t, !1, Ru); + let r = Ru[1], i = Ru[2]; + this.getTileCoordForXYAndZ_(e[2], e[1], t, !0, Ru); + let a = Ru[1], o = Ru[2]; + return ru(r, a, i, o, n); + } + getTileCoordCenter(e) { + let t = this.getOrigin(e[0]), n = this.getResolution(e[0]), r = rs(this.getTileSize(e[0]), this.tmpSize_); + return [t[0] + (e[1] + .5) * r[0] * n, t[1] - (e[2] + .5) * r[1] * n]; + } + getTileCoordExtent(e, t) { +>>>>>>> Stashed changes + let n = this.getOrigin(e[0]), r = this.getResolution(e[0]), i = rs(this.getTileSize(e[0]), this.tmpSize_), a = n[0] + e[1] * i[0] * r, o = n[1] - (e[2] + 1) * i[1] * r; + return Ge(a, o, a + i[0] * r, o + i[1] * r, t); +>>>>>>> Stashed changes } getTileCoordForCoordAndResolution(e, t, n) { return this.getTileCoordForXYAndResolution_(e[0], e[1], t, !1, n); } getTileCoordForXYAndResolution_(e, t, n, r, i) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let a = this.getZForResolution(n), o = n / this.getResolution(a), s = this.getOrigin(a), c = pi(this.getTileSize(a), this.tmpSize_), l = o * (e - s[0]) / n / c[0], u = o * (s[1] - t) / n / c[1]; return r ? (l = Xt(l, vu) - 1, u = Xt(u, vu) - 1) : (l = Yt(l, vu), u = Yt(u, vu)), hi(a, l, u, i); } getTileCoordForXYAndZ_(e, t, n, r, i) { let a = this.getOrigin(n), o = this.getResolution(n), s = pi(this.getTileSize(n), this.tmpSize_), c = (e - a[0]) / o / s[0], l = (a[1] - t) / o / s[1]; return r ? (c = Xt(c, vu) - 1, l = Xt(l, vu) - 1) : (c = Yt(c, vu), l = Yt(l, vu)), hi(n, c, l, i); +======= + let a = this.getZForResolution(n), o = n / this.getResolution(a), s = this.getOrigin(a), c = rs(this.getTileSize(a), this.tmpSize_), l = o * (e - s[0]) / n / c[0], u = o * (s[1] - t) / n / c[1]; + return r ? (l = Mt(l, zu) - 1, u = Mt(u, zu) - 1) : (l = jt(l, zu), u = jt(u, zu)), vu(a, l, u, i); + } + getTileCoordForXYAndZ_(e, t, n, r, i) { + let a = this.getOrigin(n), o = this.getResolution(n), s = rs(this.getTileSize(n), this.tmpSize_), c = (e - a[0]) / o / s[0], l = (a[1] - t) / o / s[1]; + return r ? (c = Mt(c, zu) - 1, l = Mt(l, zu) - 1) : (c = jt(c, zu), l = jt(l, zu)), vu(n, c, l, i); +>>>>>>> Stashed changes +======= + let a = this.getZForResolution(n), o = n / this.getResolution(a), s = this.getOrigin(a), c = rs(this.getTileSize(a), this.tmpSize_), l = o * (e - s[0]) / n / c[0], u = o * (s[1] - t) / n / c[1]; + return r ? (l = Mt(l, zu) - 1, u = Mt(u, zu) - 1) : (l = jt(l, zu), u = jt(u, zu)), vu(a, l, u, i); + } + getTileCoordForXYAndZ_(e, t, n, r, i) { + let a = this.getOrigin(n), o = this.getResolution(n), s = rs(this.getTileSize(n), this.tmpSize_), c = (e - a[0]) / o / s[0], l = (a[1] - t) / o / s[1]; + return r ? (c = Mt(c, zu) - 1, l = Mt(l, zu) - 1) : (c = jt(c, zu), l = jt(l, zu)), vu(n, c, l, i); +>>>>>>> Stashed changes } getTileCoordForCoordAndZ(e, t, n) { return this.getTileCoordForXYAndZ_(e[0], e[1], t, !1, n); @@ -8160,21 +14637,49 @@ var _u = [ return Bt(f(this.resolutions_, e, t || 0), this.minZoom, this.maxZoom); } tileCoordIntersectsViewport(e, t) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return Ia(t, 0, t.length, 2, this.getTileCoordExtent(e)); +======= + return Ii(t, 0, t.length, 2, this.getTileCoordExtent(e)); +>>>>>>> Stashed changes +======= + return Ii(t, 0, t.length, 2, this.getTileCoordExtent(e)); +>>>>>>> Stashed changes } calculateTileRanges_(e) { let t = this.resolutions_.length, n = Array(t); for (let r = this.minZoom; r < t; ++r) n[r] = this.getTileRangeForExtentAndZ(e, r); this.fullTileRanges_ = n; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, bu = /\{z\}/g, xu = /\{x\}/g, Su = /\{y\}/g, Cu = /\{-y\}/g; function wu(e, t, n, r, i) { return e.replace(bu, t.toString()).replace(xu, n.toString()).replace(Su, r.toString()).replace(Cu, function() { +======= +}, Vu = /\{z\}/g, Hu = /\{x\}/g, Uu = /\{y\}/g, Wu = /\{-y\}/g; +function Gu(e, t, n, r, i) { + return e.replace(Vu, t.toString()).replace(Hu, n.toString()).replace(Uu, r.toString()).replace(Wu, function() { +>>>>>>> Stashed changes +======= +}, Vu = /\{z\}/g, Hu = /\{x\}/g, Uu = /\{y\}/g, Wu = /\{-y\}/g; +function Gu(e, t, n, r, i) { + return e.replace(Vu, t.toString()).replace(Hu, n.toString()).replace(Uu, r.toString()).replace(Wu, function() { +>>>>>>> Stashed changes if (i === void 0) throw Error("If the URL template has a {-y} placeholder, the grid extent must be known"); return (i - r).toString(); }); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Tu(e) { +======= +function Ku(e) { +>>>>>>> Stashed changes +======= +function Ku(e) { +>>>>>>> Stashed changes let t = [], n = /\{([a-z])-([a-z])\}/.exec(e); if (n) { let r = n[1].charCodeAt(0), i = n[2].charCodeAt(0), a; @@ -8190,7 +14695,15 @@ function Tu(e) { } //#endregion //#region node_modules/ol/tileurlfunction.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Eu(e, t) { +======= +function qu(e, t) { +>>>>>>> Stashed changes +======= +function qu(e, t) { +>>>>>>> Stashed changes return (function(n, r, i) { if (!n) return; let a, o = n[0]; @@ -8198,6 +14711,8 @@ function Eu(e, t) { let e = t.getFullTileRange(o); e && (a = e.getHeight() - 1); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream return wu(e, o, n[1], n[2], a); }); } @@ -8209,10 +14724,38 @@ function Du(e, t) { function Ou(e) { return e.length === 1 ? e[0] : (function(t, n, r) { return t ? e[Kt(vi(t), e.length)](t, n, r) : void 0; +======= + return Gu(e, o, n[1], n[2], a); + }); +} +function Ju(e, t) { + let n = e.length, r = Array(n); + for (let i = 0; i < n; ++i) r[i] = qu(e[i], t); + return Yu(r); +} +function Yu(e) { + return e.length === 1 ? e[0] : (function(t, n, r) { + return t ? e[Ot(xu(t), e.length)](t, n, r) : void 0; +>>>>>>> Stashed changes +======= + return Gu(e, o, n[1], n[2], a); + }); +} +function Ju(e, t) { + let n = e.length, r = Array(n); + for (let i = 0; i < n; ++i) r[i] = qu(e[i], t); + return Yu(r); +} +function Yu(e) { + return e.length === 1 ? e[0] : (function(t, n, r) { + return t ? e[Ot(xu(t), e.length)](t, n, r) : void 0; +>>>>>>> Stashed changes }); } //#endregion //#region node_modules/ol/tilegrid.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function ku(e) { let t = e.getDefaultTileGrid(); return t || (t = Nu(e), e.setDefaultTileGrid(t)), t; @@ -8221,33 +14764,86 @@ function Au(e, t, n) { let r = t[0], i = e.getTileCoordCenter(t), a = Pu(n); if (!tt(a, i)) { let t = R(a), n = Math.ceil((a[0] - i[0]) / t); +======= +function Xu(e) { + let t = e.getDefaultTileGrid(); + return t || (t = ed(e), e.setDefaultTileGrid(t)), t; +} +======= +function Xu(e) { + let t = e.getDefaultTileGrid(); + return t || (t = ed(e), e.setDefaultTileGrid(t)), t; +} +>>>>>>> Stashed changes +function Zu(e, t, n) { + let r = t[0], i = e.getTileCoordCenter(t), a = td(n); + if (!Be(a, i)) { + let t = I(a), n = Math.ceil((a[0] - i[0]) / t); +>>>>>>> Stashed changes return i[0] += t * n, e.getTileCoordForCoordAndZ(i, r); } return t; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function ju(e, t, n, r) { r = r === void 0 ? "top-left" : r; let i = Mu(e, t, n); return new yu({ +======= +function Qu(e, t, n, r) { + r = r === void 0 ? "top-left" : r; + let i = $u(e, t, n); + return new Bu({ +>>>>>>> Stashed changes +======= +function Qu(e, t, n, r) { + r = r === void 0 ? "top-left" : r; + let i = $u(e, t, n); + return new Bu({ +>>>>>>> Stashed changes extent: e, origin: bt(e, r), resolutions: i, tileSize: n }); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Mu(e, t, n, r) { t = t === void 0 ? 42 : t, n = pi(n === void 0 ? 256 : n); let i = Ct(e), a = R(e); +======= +======= +>>>>>>> Stashed changes +function $u(e, t, n, r) { + t = t === void 0 ? 42 : t, n = rs(n === void 0 ? 256 : n); + let i = ct(e), a = I(e); +>>>>>>> Stashed changes r = r > 0 ? r : Math.max(a / n[0], i / n[1]); let o = t + 1, s = Array(o); for (let e = 0; e < o; ++e) s[e] = r / 2 ** e; return s; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Nu(e, t, n, r) { return ju(Pu(e), t, n, r); } function Pu(e) { e = gr(e); +======= +function ed(e, t, n, r) { + return Qu(td(e), t, n, r); +} +======= +function ed(e, t, n, r) { + return Qu(td(e), t, n, r); +} +>>>>>>> Stashed changes +function td(e) { + e = nr(e); +>>>>>>> Stashed changes let t = e.getExtent(); if (!t) { let n = 180 * sn.degrees / e.getMetersPerUnit(); @@ -8257,9 +14853,21 @@ function Pu(e) { } //#endregion //#region node_modules/ol/source/Source.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var Fu = class extends A { constructor(e) { super(), this.projection = gr(e.projection), this.attributions_ = Iu(e.attributions), this.attributionsCollapsible_ = e.attributionsCollapsible ?? !0, this.loading = !1, this.state_ = e.state === void 0 ? "ready" : e.state, this.wrapX_ = e.wrapX !== void 0 && e.wrapX, this.interpolate_ = !!e.interpolate, this.viewResolver = null, this.viewRejector = null; +======= +var nd = class extends we { + constructor(e) { + super(), this.projection = nr(e.projection), this.attributions_ = rd(e.attributions), this.attributionsCollapsible_ = e.attributionsCollapsible ?? !0, this.loading = !1, this.state_ = e.state === void 0 ? "ready" : e.state, this.wrapX_ = e.wrapX !== void 0 && e.wrapX, this.interpolate_ = !!e.interpolate, this.viewResolver = null, this.viewRejector = null; +>>>>>>> Stashed changes +======= +var nd = class extends we { + constructor(e) { + super(), this.projection = nr(e.projection), this.attributions_ = rd(e.attributions), this.attributionsCollapsible_ = e.attributionsCollapsible ?? !0, this.loading = !1, this.state_ = e.state === void 0 ? "ready" : e.state, this.wrapX_ = e.wrapX !== void 0 && e.wrapX, this.interpolate_ = !!e.interpolate, this.viewResolver = null, this.viewRejector = null; +>>>>>>> Stashed changes let t = this; this.viewPromise_ = new Promise(function(e, n) { t.viewResolver = e, t.viewRejector = n; @@ -8303,18 +14911,42 @@ var Fu = class extends A { this.changed(); } setAttributions(e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.attributions_ = Iu(e), this.changed(); +======= + this.attributions_ = rd(e), this.changed(); +>>>>>>> Stashed changes +======= + this.attributions_ = rd(e), this.changed(); +>>>>>>> Stashed changes } setState(e) { this.state_ = e, this.changed(); } }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Iu(e) { +======= +function rd(e) { +>>>>>>> Stashed changes +======= +function rd(e) { +>>>>>>> Stashed changes return e ? typeof e == "function" ? e : (Array.isArray(e) || (e = [e]), (t) => e) : null; } //#endregion //#region node_modules/ol/source/Tile.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var Lu = class extends Fu { +======= +var id = class extends nd { +>>>>>>> Stashed changes +======= +var id = class extends nd { +>>>>>>> Stashed changes constructor(e) { super({ attributions: e.attributions, @@ -8323,7 +14955,15 @@ var Lu = class extends Fu { state: e.state, wrapX: e.wrapX, interpolate: e.interpolate +<<<<<<< Updated upstream +<<<<<<< Updated upstream }), this.on, this.once, this.un, this.tilePixelRatio_ = e.tilePixelRatio === void 0 ? 1 : e.tilePixelRatio, this.tileGrid = e.tileGrid === void 0 ? null : e.tileGrid, this.tileGrid && pi(this.tileGrid.getTileSize(this.tileGrid.getMinZoom()), [256, 256]), this.tmpSize = [0, 0], this.key_ = e.key || O(this), this.tileOptions = { +======= + }), this.on, this.once, this.un, this.tilePixelRatio_ = e.tilePixelRatio === void 0 ? 1 : e.tilePixelRatio, this.tileGrid = e.tileGrid === void 0 ? null : e.tileGrid, this.tileGrid && rs(this.tileGrid.getTileSize(this.tileGrid.getMinZoom()), [256, 256]), this.tmpSize = [0, 0], this.key_ = e.key || F(this), this.tileOptions = { +>>>>>>> Stashed changes +======= + }), this.on, this.once, this.un, this.tilePixelRatio_ = e.tilePixelRatio === void 0 ? 1 : e.tilePixelRatio, this.tileGrid = e.tileGrid === void 0 ? null : e.tileGrid, this.tileGrid && rs(this.tileGrid.getTileSize(this.tileGrid.getMinZoom()), [256, 256]), this.tmpSize = [0, 0], this.key_ = e.key || F(this), this.tileOptions = { +>>>>>>> Stashed changes transition: e.transition, interpolate: e.interpolate }, this.zDirection = e.zDirection ? e.zDirection : 0; @@ -8348,23 +14988,51 @@ var Lu = class extends Fu { return this.tileGrid; } getTileGridForProjection(e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return this.tileGrid ? this.tileGrid : ku(e); +======= + return this.tileGrid ? this.tileGrid : Xu(e); +>>>>>>> Stashed changes +======= + return this.tileGrid ? this.tileGrid : Xu(e); +>>>>>>> Stashed changes } getTilePixelRatio(e) { return this.tilePixelRatio_; } getTilePixelSize(e, t, n) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let r = this.getTileGridForProjection(n), i = this.getTilePixelRatio(t), a = pi(r.getTileSize(e), this.tmpSize); return i == 1 ? a : fi(a, i, this.tmpSize); } getTileCoordForTileUrlFunction(e, t) { let n = t === void 0 ? this.getProjection() : t, r = t === void 0 && this.tileGrid || this.getTileGridForProjection(n); return this.getWrapX() && n.isGlobal() && (e = Au(r, e, n)), bi(e, r) ? e : null; +======= + let r = this.getTileGridForProjection(n), i = this.getTilePixelRatio(t), a = rs(r.getTileSize(e), this.tmpSize); + return i == 1 ? a : ns(a, i, this.tmpSize); + } + getTileCoordForTileUrlFunction(e, t) { + let n = t === void 0 ? this.getProjection() : t, r = t === void 0 && this.tileGrid || this.getTileGridForProjection(n); + return this.getWrapX() && n.isGlobal() && (e = Zu(r, e, n)), Cu(e, r) ? e : null; +>>>>>>> Stashed changes +======= + let r = this.getTileGridForProjection(n), i = this.getTilePixelRatio(t), a = rs(r.getTileSize(e), this.tmpSize); + return i == 1 ? a : ns(a, i, this.tmpSize); + } + getTileCoordForTileUrlFunction(e, t) { + let n = t === void 0 ? this.getProjection() : t, r = t === void 0 && this.tileGrid || this.getTileGridForProjection(n); + return this.getWrapX() && n.isGlobal() && (e = Zu(r, e, n)), Cu(e, r) ? e : null; +>>>>>>> Stashed changes } clear() {} refresh() { this.clear(), super.refresh(); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, Ru = class extends S { constructor(e, t) { super(e), this.tile = t; @@ -8374,6 +15042,28 @@ var Lu = class extends Fu { TILELOADEND: "tileloadend", TILELOADERROR: "tileloaderror" }, Bu = class e extends Lu { +======= +}, ad = class extends ve { + constructor(e, t) { + super(e), this.tile = t; + } +}, od = { + TILELOADSTART: "tileloadstart", + TILELOADEND: "tileloadend", + TILELOADERROR: "tileloaderror" +}, sd = class e extends id { +>>>>>>> Stashed changes +======= +}, ad = class extends ve { + constructor(e, t) { + super(e), this.tile = t; + } +}, od = { + TILELOADSTART: "tileloadstart", + TILELOADEND: "tileloadend", + TILELOADERROR: "tileloaderror" +}, sd = class e extends id { +>>>>>>> Stashed changes constructor(t) { super({ attributions: t.attributions, @@ -8400,8 +15090,16 @@ var Lu = class extends Fu { return this.urls; } handleTileChange(e) { +<<<<<<< Updated upstream let t = e.target, n = O(t), r = t.getState(), i; r == I.LOADING ? (this.tileLoadingKeys_[n] = !0, i = zu.TILELOADSTART) : n in this.tileLoadingKeys_ && (delete this.tileLoadingKeys_[n], i = r == I.ERROR ? zu.TILELOADERROR : r == I.LOADED ? zu.TILELOADEND : void 0), i != null && this.dispatchEvent(new Ru(i, t)); +======= + let t = e.target, n = F(t), r = t.getState(), i; + r == L.LOADING ? (this.tileLoadingKeys_[n] = !0, i = od.TILELOADSTART) : n in this.tileLoadingKeys_ && (delete this.tileLoadingKeys_[n], i = r == L.ERROR ? od.TILELOADERROR : r == L.LOADED ? od.TILELOADEND : void 0), i != null && this.dispatchEvent(new ad(i, t)); +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes } setTileLoadFunction(e) { this.tileLoadFunction = e, this.changed(); @@ -8410,16 +15108,38 @@ var Lu = class extends Fu { this.tileUrlFunction = e, t === void 0 ? this.changed() : this.setKey(t); } setUrl(e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let t = Tu(e); +======= + let t = Ku(e); +>>>>>>> Stashed changes +======= + let t = Ku(e); +>>>>>>> Stashed changes this.urls = t, this.setUrls(t); } setUrls(e) { this.urls = e; let t = e.join("\n"); +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.generateTileUrlFunction_ ? this.setTileUrlFunction(Du(e, this.tileGrid), t) : this.setKey(t); } tileUrlFunction(e, t, n) {} }, Vu = class extends Bu { +======= + this.generateTileUrlFunction_ ? this.setTileUrlFunction(Ju(e, this.tileGrid), t) : this.setKey(t); + } + tileUrlFunction(e, t, n) {} +}, cd = class extends sd { +>>>>>>> Stashed changes +======= + this.generateTileUrlFunction_ ? this.setTileUrlFunction(Ju(e, this.tileGrid), t) : this.setKey(t); + } + tileUrlFunction(e, t, n) {} +}, cd = class extends sd { +>>>>>>> Stashed changes constructor(e) { super({ attributions: e.attributions, @@ -8427,7 +15147,15 @@ var Lu = class extends Fu { projection: e.projection, state: e.state, tileGrid: e.tileGrid, +<<<<<<< Updated upstream +<<<<<<< Updated upstream tileLoadFunction: e.tileLoadFunction ? e.tileLoadFunction : Hu, +======= + tileLoadFunction: e.tileLoadFunction ? e.tileLoadFunction : ld, +>>>>>>> Stashed changes +======= + tileLoadFunction: e.tileLoadFunction ? e.tileLoadFunction : ld, +>>>>>>> Stashed changes tilePixelRatio: e.tilePixelRatio, tileUrlFunction: e.tileUrlFunction, url: e.url, @@ -8438,7 +15166,15 @@ var Lu = class extends Fu { key: e.key, attributionsCollapsible: e.attributionsCollapsible, zDirection: e.zDirection +<<<<<<< Updated upstream +<<<<<<< Updated upstream }), this.crossOrigin = e.crossOrigin === void 0 ? null : e.crossOrigin, this.referrerPolicy = e.referrerPolicy, this.tileClass = e.tileClass === void 0 ? Ge : e.tileClass, this.tileGridForProjection = {}, this.reprojectionErrorThreshold_ = e.reprojectionErrorThreshold, this.renderReprojectionEdges_ = !1; +======= + }), this.crossOrigin = e.crossOrigin === void 0 ? null : e.crossOrigin, this.referrerPolicy = e.referrerPolicy, this.tileClass = e.tileClass === void 0 ? eu : e.tileClass, this.tileGridForProjection = {}, this.reprojectionErrorThreshold_ = e.reprojectionErrorThreshold, this.renderReprojectionEdges_ = !1; +>>>>>>> Stashed changes +======= + }), this.crossOrigin = e.crossOrigin === void 0 ? null : e.crossOrigin, this.referrerPolicy = e.referrerPolicy, this.tileClass = e.tileClass === void 0 ? eu : e.tileClass, this.tileGridForProjection = {}, this.reprojectionErrorThreshold_ = e.reprojectionErrorThreshold, this.renderReprojectionEdges_ = !1; +>>>>>>> Stashed changes } getGutterForProjection(e) { return this.getProjection() && e && !Sr(this.getProjection(), e) ? 0 : this.getGutter(); @@ -8452,9 +15188,18 @@ var Lu = class extends Fu { } getTileGridForProjection(e) { let t = this.getProjection(); +<<<<<<< Updated upstream if (this.tileGrid && (!t || Sr(t, e))) return this.tileGrid; let n = O(e); return n in this.tileGridForProjection || (this.tileGridForProjection[n] = ku(e)), this.tileGridForProjection[n]; +======= + if (this.tileGrid && (!t || cr(t, e))) return this.tileGrid; + let n = F(e); + return n in this.tileGridForProjection || (this.tileGridForProjection[n] = Xu(e)), this.tileGridForProjection[n]; +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes } createTile_(e, t, n, r, i, a) { let o = [ @@ -8474,11 +15219,27 @@ var Lu = class extends Fu { e, t, n +<<<<<<< Updated upstream +<<<<<<< Updated upstream ], c = this.getKey(), l = new ui(o, this.getTileGridForProjection(o), i, this.getTileGridForProjection(i), s, this.getTileCoordForTileUrlFunction(s, i), this.getTilePixelRatio(r), this.getGutter(), (e, t, n, r) => this.getTileInternal(e, t, n, r, o, a), this.reprojectionErrorThreshold_, this.renderReprojectionEdges_, this.tileOptions); return l.key = c, l; } getTileInternal(e, t, n, r, i, a) { let o = this.getKey(), s = _i(this, o, e, t, n); +======= + ], c = this.getKey(), l = new gu(o, this.getTileGridForProjection(o), i, this.getTileGridForProjection(i), s, this.getTileCoordForTileUrlFunction(s, i), this.getTilePixelRatio(r), this.getGutter(), (e, t, n, r) => this.getTileInternal(e, t, n, r, o, a), this.reprojectionErrorThreshold_, this.renderReprojectionEdges_, this.tileOptions); + return l.key = c, l; + } + getTileInternal(e, t, n, r, i, a) { + let o = this.getKey(), s = bu(this, o, e, t, n); +>>>>>>> Stashed changes +======= + ], c = this.getKey(), l = new gu(o, this.getTileGridForProjection(o), i, this.getTileGridForProjection(i), s, this.getTileCoordForTileUrlFunction(s, i), this.getTilePixelRatio(r), this.getGutter(), (e, t, n, r) => this.getTileInternal(e, t, n, r, o, a), this.reprojectionErrorThreshold_, this.renderReprojectionEdges_, this.tileOptions); + return l.key = c, l; + } + getTileInternal(e, t, n, r, i, a) { + let o = this.getKey(), s = bu(this, o, e, t, n); +>>>>>>> Stashed changes if (a && a.containsKey(s)) return a.get(s); let c = this.createTile_(e, t, n, r, i, o); return a?.set(s, c), c; @@ -8494,8 +15255,16 @@ var Lu = class extends Fu { } } }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Hu(e, t) { if (pe) { +======= +======= +>>>>>>> Stashed changes +function ld(e, t) { + if (g) { +>>>>>>> Stashed changes let n = e.getCrossOrigin(), r = "same-origin", i = "same-origin"; n === "anonymous" || n === "" ? (r = "cors", i = "omit") : n === "use-credentials" && (r = "cors", i = "include"); let a = { @@ -8518,7 +15287,15 @@ function Hu(e, t) { } //#endregion //#region node_modules/ol/source/Zoomify.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var Uu = class extends Ge { +======= +var ud = class extends eu { +>>>>>>> Stashed changes +======= +var ud = class extends eu { +>>>>>>> Stashed changes constructor(e, t, n, r, i, a, o) { super(t, n, r, i, a, o), this.zoomifyImage_ = null, this.tileSize_ = e; } @@ -8533,7 +15310,15 @@ var Uu = class extends Ge { } return e; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, Wu = class extends Vu { +======= +}, dd = class extends cd { +>>>>>>> Stashed changes +======= +}, dd = class extends cd { +>>>>>>> Stashed changes constructor(e) { let t = e.size, n = e.tierSizeCalculation === void 0 ? "default" : e.tierSizeCalculation, r = e.tilePixelRatio || 1, i = t[0], a = t[1], o = [], s = e.tileSize || 256, c = s * r; switch (n) { @@ -8550,7 +15335,15 @@ var Uu = class extends Ge { let l = [r], u = [0]; for (let e = 1, t = o.length; e < t; e++) l.push(r << e), u.push(o[e - 1][0] * o[e - 1][1] + u[e - 1]); l.reverse(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream let d = new yu({ +======= + let d = new Bu({ +>>>>>>> Stashed changes +======= + let d = new Bu({ +>>>>>>> Stashed changes tileSize: s, extent: e.extent || [ 0, @@ -8561,7 +15354,15 @@ var Uu = class extends Ge { resolutions: l }), f = e.url; f && !f.includes("{TileGroup}") && !f.includes("{tileIndex}") && (f += "{TileGroup}/{z}-{x}-{y}.jpg"); +<<<<<<< Updated upstream +<<<<<<< Updated upstream let p = Tu(f), m = s * r; +======= + let p = Ku(f), m = s * r; +>>>>>>> Stashed changes +======= + let p = Ku(f), m = s * r; +>>>>>>> Stashed changes function h(e) { return (function(t, n, r) { if (!t) return; @@ -8577,7 +15378,15 @@ var Uu = class extends Ge { }); }); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream let g = Ou(p.map(h)), _ = Uu.bind(null, pi(s * r)); +======= + let g = Yu(p.map(h)), _ = ud.bind(null, rs(s * r)); +>>>>>>> Stashed changes +======= + let g = Yu(p.map(h)), _ = ud.bind(null, rs(s * r)); +>>>>>>> Stashed changes super({ attributions: e.attributions, cacheSize: e.cacheSize, @@ -8597,7 +15406,158 @@ var Uu = class extends Ge { m = s, this.changed(); }), y.src = v; } -}, Gu = class { +<<<<<<< Updated upstream +<<<<<<< Updated upstream +}, Gu = class { +======= +======= +>>>>>>> Stashed changes +}, fd = function(e) { + if (!e) return null; + var t = e.getViewport().getElementsByClassName("ol-fixedoverlay")[0]; + return t || (e.getViewport().querySelector(".ol-layers") ? (t = document.createElement("canvas"), t.className = "ol-fixedoverlay", e.getViewport().querySelector(".ol-layers").after(t), e.on("precompose", function(n) { + t.width = e.getSize()[0] * n.frameState.pixelRatio, t.height = e.getSize()[1] * n.frameState.pixelRatio; + })) : t = e.getViewport().querySelector("canvas")), t; +}, pd = class extends Te { + constructor(e) { + e ||= {}, super(e), this.setStyle(e.style); + } + setMap(e) { + this.getCanvas(e); + var t = this.getMap(); + if (this._listener &&= (xe(this._listener), null), super.setMap(e), t) try { + t.renderSync(); + } catch {} + e && (this._listener = e.on("postcompose", this._draw.bind(this))); + } + getCanvas(e) { + return fd(e); + } + getContext(e) { + var t = e.context; + if (!t && this.getMap()) { + var n = this.getMap().getViewport().getElementsByClassName("ol-fixedoverlay")[0]; + t = n ? n.getContext("2d") : null; + } + return t; + } + setStyle(e) { + this._style = e || new Bc({}); + } + getStyle() { + return this._style; + } + getStroke() { + return this._style.getStroke() || this._style.setStroke(new zc({ + color: "#000", + width: 1.25 + })), this._style.getStroke(); + } + getFill() { + return this._style.getFill() || this._style.setFill(new Ic({ color: "#fff" })), this._style.getFill(); + } + getTextStroke() { + var e = this._style.getText(); + return e ||= new Kc({}), e.getStroke() || e.setStroke(new zc({ + color: "#fff", + width: 3 + })), e.getStroke(); + } + getTextFill() { + var e = this._style.getText(); + return e ||= new Kc({}), e.getFill() || e.setFill(new Ic({ color: "#fff" })), e.getFill(); + } + getTextFont() { + var e = this._style.getText(); + return e ||= new Kc({}), e.getFont() || e.setFont("12px sans-serif"), e.getFont(); + } + _draw() { + console.warn("[CanvasBase] draw function not implemented."); + } +}, md = class extends pd { + constructor(e) { + e ||= {}; + var t = document.createElement("div"); + t.className = "ol-graticule ol-unselectable ol-hidden", super({ element: t }), this.set("projection", e.projection || "EPSG:4326"); + var n = new qt({ code: this.get("projection") }).getMetersPerUnit(); + for (this.fac = 1; n / this.fac > 10;) this.fac *= 10; + this.fac = 1e4 / this.fac, this.set("maxResolution", e.maxResolution || Infinity), this.set("step", e.step || .1), this.set("stepCoord", e.stepCoord || 1), this.set("spacing", e.spacing || 40), this.set("intervals", e.intervals), this.set("precision", e.precision), this.set("margin", e.margin || 0), this.set("borderWidth", e.borderWidth || 5), this.set("stroke", e.stroke !== !1), this.formatCoord = e.formatCoord || function(e) { + return e; + }, e.style instanceof Bc ? this.setStyle(e.style) : this.setStyle(new Bc({ + stroke: new zc({ + color: "#000", + width: 1 + }), + fill: new Ic({ color: "#fff" }), + text: new Kc({ + stroke: new zc({ + color: "#fff", + width: 2 + }), + fill: new Ic({ color: "#000" }) + }) + })); + } + setStyle(e) { + this._style = e; + } + _draw(e) { + if (!(this.get("maxResolution") < e.frameState.viewState.resolution)) { + for (var t = this.getContext(e), n = t.canvas, r = e.frameState.pixelRatio, i = n.width / r, a = n.height / r, o = this.get("projection"), s = this.getMap(), c = [ + s.getCoordinateFromPixel([0, 0]), + s.getCoordinateFromPixel([i, 0]), + s.getCoordinateFromPixel([i, a]), + s.getCoordinateFromPixel([0, a]) + ], l = -Infinity, u = Infinity, d = -Infinity, f = Infinity, p = 0, m; m = c[p]; p++) c[p] = fr(m, s.getView().getProjection(), o), l = Math.max(l, c[p][0]), u = Math.min(u, c[p][0]), d = Math.max(d, c[p][1]), f = Math.min(f, c[p][1]); + var h = this.get("spacing"), g = this.get("step"), _ = this.get("stepCoord"), v = this.get("borderWidth"), y = this.get("margin"); + if ((l - u) / g * h > i) { + var b = Math.round((l - u) / i * h / g); + g *= b, g > this.fac && (g = Math.round(g / this.fac) * this.fac); + } + var x = this.get("intervals"); + if (Array.isArray(x)) { + var S = x[0]; + for (let e = 0, t = x.length; e < t && !(g >= x[e]); ++e) S = x[e]; + g = S; + } + var C = this.get("precision"), w = g; + C > 0 && g > C && (w = g / Math.ceil(g / C)), u = Math.floor(u / g) * g - g, f = Math.floor(f / g) * g - g, l = Math.floor(l / g) * g + 2 * g, d = Math.floor(d / g) * g + 2 * g; + var T = nr(o).getExtent(); + T && (u < T[0] && (u = T[0]), f < T[1] && (f = T[1]), l > T[2] && (l = T[2] + g), d > T[3] && (d = T[3] + g)); + var E = this.getStyle().getStroke() && this.get("stroke"), ee = this.getStyle().getText(), D = this.getStyle().getFill(); + t.save(), t.scale(r, r), t.beginPath(), t.rect(y, y, i - 2 * y, a - 2 * y), t.clip(), t.beginPath(); + var O = { + top: [], + left: [], + bottom: [], + right: [] + }, k, te, A, ne, j; + for (k = u; k < l; k += g) for (ne = fr([k, f], o, s.getView().getProjection()), ne = s.getPixelFromCoordinate(ne), E && t.moveTo(ne[0], ne[1]), A = ne, te = f + w; te <= d; te += w) j = fr([k, te], o, s.getView().getProjection()), j = s.getPixelFromCoordinate(j), E && t.lineTo(j[0], j[1]), A[1] > 0 && j[1] < 0 && O.top.push([k, A]), A[1] > a && j[1] < a && O.bottom.push([k, A]), A = j; + for (te = f; te < d; te += g) for (ne = fr([u, te], o, s.getView().getProjection()), ne = s.getPixelFromCoordinate(ne), E && t.moveTo(ne[0], ne[1]), A = ne, k = u + w; k <= l; k += w) j = fr([k, te], o, s.getView().getProjection()), j = s.getPixelFromCoordinate(j), E && t.lineTo(j[0], j[1]), A[0] < 0 && j[0] > 0 && O.left.push([te, A]), A[0] < i && j[0] > i && O.right.push([te, A]), A = j; + if (E && (t.strokeStyle = this.getStyle().getStroke().getColor(), t.lineWidth = this.getStyle().getStroke().getWidth(), t.stroke()), ee) { + t.fillStyle = this.getStyle().getText().getFill().getColor(), t.strokeStyle = this.getStyle().getText().getStroke().getColor(), t.lineWidth = this.getStyle().getText().getStroke().getWidth(), t.font = this.getStyle().getText().getFont(), t.textAlign = "center", t.textBaseline = "hanging"; + var M, N, re = (D ? v : 0) + y + 2; + for (p = 0; M = O.top[p]; p++) Math.round(M[0] / this.get("step")) % _ || (N = this.formatCoord(M[0], "top"), t.strokeText(N, M[1][0], re), t.fillText(N, M[1][0], re)); + for (t.textBaseline = "alphabetic", p = 0; M = O.bottom[p]; p++) Math.round(M[0] / this.get("step")) % _ || (N = this.formatCoord(M[0], "bottom"), t.strokeText(N, M[1][0], a - re), t.fillText(N, M[1][0], a - re)); + for (t.textBaseline = "middle", t.textAlign = "left", p = 0; M = O.left[p]; p++) Math.round(M[0] / this.get("step")) % _ || (N = this.formatCoord(M[0], "left"), t.strokeText(N, re, M[1][1]), t.fillText(N, re, M[1][1])); + for (t.textAlign = "right", p = 0; M = O.right[p]; p++) Math.round(M[0] / this.get("step")) % _ || (N = this.formatCoord(M[0], "right"), t.strokeText(N, i - re, M[1][1]), t.fillText(N, i - re, M[1][1])); + } + if (D) { + var ie = this.getStyle().getFill().getColor(), ae, oe; + for ((oe = this.getStyle().getStroke()) ? ae = this.getStyle().getStroke().getColor() : (ae = ie, ie = "#fff"), t.strokeStyle = ae, t.lineWidth = oe ? oe.getWidth() : 1, p = 1; p < O.top.length; p++) t.beginPath(), t.rect(O.top[p - 1][1][0], y, O.top[p][1][0] - O.top[p - 1][1][0], v), t.fillStyle = Math.round(O.top[p][0] / g) % 2 ? ae : ie, t.fill(), t.stroke(); + for (p = 1; p < O.bottom.length; p++) t.beginPath(), t.rect(O.bottom[p - 1][1][0], a - v - y, O.bottom[p][1][0] - O.bottom[p - 1][1][0], v), t.fillStyle = Math.round(O.bottom[p][0] / g) % 2 ? ae : ie, t.fill(), t.stroke(); + for (p = 1; p < O.left.length; p++) t.beginPath(), t.rect(y, O.left[p - 1][1][1], v, O.left[p][1][1] - O.left[p - 1][1][1]), t.fillStyle = Math.round(O.left[p][0] / g) % 2 ? ae : ie, t.fill(), t.stroke(); + for (p = 1; p < O.right.length; p++) t.beginPath(), t.rect(i - v - y, O.right[p - 1][1][1], v, O.right[p][1][1] - O.right[p - 1][1][1]), t.fillStyle = Math.round(O.right[p][0] / g) % 2 ? ae : ie, t.fill(), t.stroke(); + t.beginPath(), t.fillStyle = ae, t.rect(y, y, v, v), t.rect(y, a - v - y, v, v), t.rect(i - v - y, y, v, v), t.rect(i - v - y, a - v - y, v, v), t.fill(); + } + t.restore(); + } + } +}, hd = class { +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes drawCustom(e, t, n, r, i) {} drawGeometry(e) {} setStyle(e) {} @@ -8614,7 +15574,7 @@ var Uu = class extends Ge { setFillStrokeStyle(e, t) {} setImageStyle(e, t) {} setTextStyle(e, t) {} -}, X = { +}, Y = { BEGIN_GEOMETRY: 0, BEGIN_PATH: 1, CIRCLE: 2, @@ -8628,7 +15588,15 @@ var Uu = class extends Ge { SET_FILL_STYLE: 10, SET_STROKE_STYLE: 11, STROKE: 12 +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, Ku = [X.FILL], qu = [X.STROKE], Ju = [X.BEGIN_PATH], Yu = [X.CLOSE_PATH], Xu = class extends Gu { +======= +}, gd = [Y.FILL], _d = [Y.STROKE], vd = [Y.BEGIN_PATH], yd = [Y.CLOSE_PATH], bd = class extends hd { +>>>>>>> Stashed changes +======= +}, gd = [Y.FILL], _d = [Y.STROKE], vd = [Y.BEGIN_PATH], yd = [Y.CLOSE_PATH], bd = class extends hd { +>>>>>>> Stashed changes constructor(e, t, n, r) { super(), this.tolerance = e, this.maxExtent = t, this.pixelRatio = r, this.maxLineWidth = 0, this.resolution = n, this.beginGeometryInstruction1_ = null, this.beginGeometryInstruction2_ = null, this.bufferedMaxExtent_ = null, this.instructions = [], this.coordinates = [], this.tmpCoordinate_ = [], this.hitDetectionInstructions = [], this.state = {}; } @@ -8670,84 +15638,148 @@ var Uu = class extends Ge { f = this.drawCustomCoordinates_(c, f, t[e], o, n), d.push(n); } this.instructions.push([ - X.CUSTOM, + Y.CUSTOM, s, d, e, n, +<<<<<<< Updated upstream +<<<<<<< Updated upstream Aa, +======= + Ai, +>>>>>>> Stashed changes +======= + Ai, +>>>>>>> Stashed changes i ]), this.hitDetectionInstructions.push([ - X.CUSTOM, + Y.CUSTOM, s, d, e, r || n, +<<<<<<< Updated upstream +<<<<<<< Updated upstream Aa, +======= + Ai, +>>>>>>> Stashed changes +======= + Ai, +>>>>>>> Stashed changes i ]); break; case "Polygon": case "MultiLineString": u = [], c = a == "Polygon" ? e.getOrientedFlatCoordinates() : e.getFlatCoordinates(), f = this.drawCustomCoordinates_(c, 0, e.getEnds(), o, u), this.instructions.push([ - X.CUSTOM, + Y.CUSTOM, s, u, e, n, +<<<<<<< Updated upstream +<<<<<<< Updated upstream ka, +======= + ki, +>>>>>>> Stashed changes +======= + ki, +>>>>>>> Stashed changes i ]), this.hitDetectionInstructions.push([ - X.CUSTOM, + Y.CUSTOM, s, u, e, r || n, +<<<<<<< Updated upstream +<<<<<<< Updated upstream ka, +======= + ki, +>>>>>>> Stashed changes +======= + ki, +>>>>>>> Stashed changes i ]); break; case "LineString": case "Circle": c = e.getFlatCoordinates(), l = this.appendFlatLineCoordinates(c, 0, c.length, o, !1, !1), this.instructions.push([ - X.CUSTOM, + Y.CUSTOM, s, l, e, n, +<<<<<<< Updated upstream +<<<<<<< Updated upstream Oa, +======= + Oi, +>>>>>>> Stashed changes +======= + Oi, +>>>>>>> Stashed changes i ]), this.hitDetectionInstructions.push([ - X.CUSTOM, + Y.CUSTOM, s, l, e, r || n, +<<<<<<< Updated upstream +<<<<<<< Updated upstream Oa, +======= + Oi, +>>>>>>> Stashed changes +======= + Oi, +>>>>>>> Stashed changes i ]); break; case "MultiPoint": c = e.getFlatCoordinates(), l = this.appendFlatPointCoordinates(c, o), l > s && (this.instructions.push([ - X.CUSTOM, + Y.CUSTOM, s, l, e, n, +<<<<<<< Updated upstream +<<<<<<< Updated upstream Oa, +======= + Oi, +>>>>>>> Stashed changes +======= + Oi, +>>>>>>> Stashed changes i ]), this.hitDetectionInstructions.push([ - X.CUSTOM, + Y.CUSTOM, s, l, e, r || n, +<<<<<<< Updated upstream +<<<<<<< Updated upstream Oa, +======= + Oi, +>>>>>>> Stashed changes +======= + Oi, +>>>>>>> Stashed changes i ])); break; case "Point": c = e.getFlatCoordinates(), this.coordinates.push(c[0], c[1]), l = this.coordinates.length, this.instructions.push([ - X.CUSTOM, + Y.CUSTOM, s, l, e, @@ -8755,7 +15787,7 @@ var Uu = class extends Ge { void 0, i ]), this.hitDetectionInstructions.push([ - X.CUSTOM, + Y.CUSTOM, s, l, e, @@ -8768,13 +15800,13 @@ var Uu = class extends Ge { } beginGeometry(e, t, n) { this.beginGeometryInstruction1_ = [ - X.BEGIN_GEOMETRY, + Y.BEGIN_GEOMETRY, t, 0, e, n ], this.instructions.push(this.beginGeometryInstruction1_), this.beginGeometryInstruction2_ = [ - X.BEGIN_GEOMETRY, + Y.BEGIN_GEOMETRY, t, 0, e, @@ -8792,17 +15824,35 @@ var Uu = class extends Ge { let e = this.hitDetectionInstructions; e.reverse(); let t, n = e.length, r, i, a = -1; +<<<<<<< Updated upstream +<<<<<<< Updated upstream for (t = 0; t < n; ++t) r = e[t], i = r[0], i == X.END_GEOMETRY ? a = t : i == X.BEGIN_GEOMETRY && (r[2] = t, p(this.hitDetectionInstructions, a, t), a = -1); +======= + for (t = 0; t < n; ++t) r = e[t], i = r[0], i == Y.END_GEOMETRY ? a = t : i == Y.BEGIN_GEOMETRY && (r[2] = t, le(this.hitDetectionInstructions, a, t), a = -1); +>>>>>>> Stashed changes +======= + for (t = 0; t < n; ++t) r = e[t], i = r[0], i == Y.END_GEOMETRY ? a = t : i == Y.BEGIN_GEOMETRY && (r[2] = t, le(this.hitDetectionInstructions, a, t), a = -1); +>>>>>>> Stashed changes } fillStyleToState(e, t = {}) { if (e) { let n = e.getColor(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream t.fillPatternScale = n && typeof n == "object" && "src" in n ? this.pixelRatio : 1, t.fillStyle = Bc(n || "#000") ?? void 0; +======= + t.fillPatternScale = n && typeof n == "object" && "src" in n ? this.pixelRatio : 1, t.fillStyle = cc(n || "#000") ?? void 0; +>>>>>>> Stashed changes +======= + t.fillPatternScale = n && typeof n == "object" && "src" in n ? this.pixelRatio : 1, t.fillStyle = cc(n || "#000") ?? void 0; +>>>>>>> Stashed changes } else t.fillStyle = void 0; return t; } strokeStyleToState(e, t = {}) { if (e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream t.strokeStyle = Bc(e.getColor() || qc); let n = e.getLineCap(); t.lineCap = n === void 0 ? Wc : n; @@ -8810,6 +15860,24 @@ var Uu = class extends Ge { t.lineDash = r ? r.slice() : Gc, t.lineDashOffset = e.getLineDashOffset() || 0; let i = e.getLineJoin(); t.lineJoin = i === void 0 ? Kc : i; +======= + t.strokeStyle = cc(e.getColor() || hc); + let n = e.getLineCap(); + t.lineCap = n === void 0 ? fc : n; + let r = e.getLineDash(); + t.lineDash = r ? r.slice() : pc, t.lineDashOffset = e.getLineDashOffset() || 0; + let i = e.getLineJoin(); + t.lineJoin = i === void 0 ? mc : i; +>>>>>>> Stashed changes +======= + t.strokeStyle = cc(e.getColor() || hc); + let n = e.getLineCap(); + t.lineCap = n === void 0 ? fc : n; + let r = e.getLineDash(); + t.lineDash = r ? r.slice() : pc, t.lineDashOffset = e.getLineDashOffset() || 0; + let i = e.getLineJoin(); + t.lineJoin = i === void 0 ? mc : i; +>>>>>>> Stashed changes let a = e.getWidth(); t.lineWidth = a === void 0 ? 1 : a; let o = e.getMiterLimit(); @@ -8822,7 +15890,7 @@ var Uu = class extends Ge { this.fillStyleToState(e, n), this.strokeStyleToState(t, n); } createFill(e) { - let t = e.fillStyle, n = [X.SET_FILL_STYLE, t]; + let t = e.fillStyle, n = [Y.SET_FILL_STYLE, t]; return typeof t != "string" && n.push(e.fillPatternScale), n; } applyStroke(e) { @@ -8830,7 +15898,7 @@ var Uu = class extends Ge { } createStroke(e) { return [ - X.SET_STROKE_STYLE, + Y.SET_STROKE_STYLE, e.strokeStyle, e.lineWidth * this.pixelRatio, e.lineCap, @@ -8850,7 +15918,7 @@ var Uu = class extends Ge { } endGeometry(e) { this.beginGeometryInstruction1_[2] = this.instructions.length, this.beginGeometryInstruction1_ = null, this.beginGeometryInstruction2_[2] = this.hitDetectionInstructions.length, this.beginGeometryInstruction2_ = null; - let t = [X.END_GEOMETRY, e]; + let t = [Y.END_GEOMETRY, e]; this.instructions.push(t), this.hitDetectionInstructions.push(t); } getBufferedMaxExtent() { @@ -8860,7 +15928,15 @@ var Uu = class extends Ge { } return this.bufferedMaxExtent_; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, Zu = class extends Xu { +======= +}, xd = class extends bd { +>>>>>>> Stashed changes +======= +}, xd = class extends bd { +>>>>>>> Stashed changes constructor(e, t, n, r) { super(e, t, n, r), this.hitDetectionImage_ = null, this.image_ = null, this.imagePixelRatio_ = void 0, this.anchorX_ = void 0, this.anchorY_ = void 0, this.height_ = void 0, this.opacity_ = void 0, this.originX_ = void 0, this.originY_ = void 0, this.rotateWithView_ = void 0, this.rotation_ = void 0, this.scale_ = void 0, this.width_ = void 0, this.declutterMode_ = void 0, this.declutterImageWithText_ = void 0; } @@ -8869,7 +15945,7 @@ var Uu = class extends Ge { this.beginGeometry(e, t, n); let r = e.getFlatCoordinates(), i = e.getStride(), a = this.coordinates.length, o = this.appendFlatPointCoordinates(r, i); this.instructions.push([ - X.DRAW_IMAGE, + Y.DRAW_IMAGE, a, o, this.image_, @@ -8886,7 +15962,7 @@ var Uu = class extends Ge { this.declutterMode_, this.declutterImageWithText_ ]), this.hitDetectionInstructions.push([ - X.DRAW_IMAGE, + Y.DRAW_IMAGE, a, o, this.hitDetectionImage_, @@ -8911,7 +15987,7 @@ var Uu = class extends Ge { for (let t = 0, n = r.length; t < n; t += e.getStride()) (!this.maxExtent || tt(this.maxExtent, r.slice(t, t + 2))) && i.push(r[t], r[t + 1]); let a = this.coordinates.length, o = this.appendFlatPointCoordinates(i, 2); this.instructions.push([ - X.DRAW_IMAGE, + Y.DRAW_IMAGE, a, o, this.image_, @@ -8928,7 +16004,7 @@ var Uu = class extends Ge { this.declutterMode_, this.declutterImageWithText_ ]), this.hitDetectionInstructions.push([ - X.DRAW_IMAGE, + Y.DRAW_IMAGE, a, o, this.hitDetectionImage_, @@ -8953,19 +16029,27 @@ var Uu = class extends Ge { let n = e.getAnchor(), r = e.getSize(), i = e.getOrigin(); this.imagePixelRatio_ = e.getPixelRatio(this.pixelRatio), this.anchorX_ = n[0], this.anchorY_ = n[1], this.hitDetectionImage_ = e.getHitDetectionImage(), this.image_ = e.getImage(this.pixelRatio), this.height_ = r[1], this.opacity_ = e.getOpacity(), this.originX_ = i[0], this.originY_ = i[1], this.rotateWithView_ = e.getRotateWithView(), this.rotation_ = e.getRotation(), this.scale_ = e.getScaleArray(), this.width_ = r[0], this.declutterMode_ = e.getDeclutterMode(), this.declutterImageWithText_ = t; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, Qu = class extends Xu { +======= +}, Sd = class extends bd { +>>>>>>> Stashed changes +======= +}, Sd = class extends bd { +>>>>>>> Stashed changes constructor(e, t, n, r) { super(e, t, n, r); } drawFlatCoordinates_(e, t, n, r, i) { let a = this.coordinates.length, o = this.appendFlatLineCoordinates(e, t, n, r, !1, !1); return this.instructions.push([ - X.MOVE_TO_LINE_TO, + Y.MOVE_TO_LINE_TO, a, o, i * this.pixelRatio ]), this.hitDetectionInstructions.push([ - X.MOVE_TO_LINE_TO, + Y.MOVE_TO_LINE_TO, a, o, i @@ -8975,28 +16059,66 @@ var Uu = class extends Ge { let r = this.state, i = r.strokeStyle, a = r.lineWidth, o = r.strokeOffset; if (i === void 0 || a === void 0) return; this.updateStrokeStyle(r, this.applyStroke), this.beginGeometry(e, t, n), this.hitDetectionInstructions.push([ +<<<<<<< Updated upstream +<<<<<<< Updated upstream X.SET_STROKE_STYLE, qc, +======= + Y.SET_STROKE_STYLE, + hc, +>>>>>>> Stashed changes +======= + Y.SET_STROKE_STYLE, + hc, +>>>>>>> Stashed changes r.lineWidth, r.lineCap, r.lineJoin, r.miterLimit, +<<<<<<< Updated upstream +<<<<<<< Updated upstream Gc, 0 ], Ju); let s = e.getFlatCoordinates(), c = e.getStride(); this.drawFlatCoordinates_(s, 0, s.length, c, o), this.hitDetectionInstructions.push(qu), this.endGeometry(t); +======= + pc, + 0 + ], vd); + let s = e.getFlatCoordinates(), c = e.getStride(); + this.drawFlatCoordinates_(s, 0, s.length, c, o), this.hitDetectionInstructions.push(_d), this.endGeometry(t); +>>>>>>> Stashed changes +======= + pc, + 0 + ], vd); + let s = e.getFlatCoordinates(), c = e.getStride(); + this.drawFlatCoordinates_(s, 0, s.length, c, o), this.hitDetectionInstructions.push(_d), this.endGeometry(t); +>>>>>>> Stashed changes } drawMultiLineString(e, t, n) { let r = this.state, i = r.strokeStyle, a = r.lineWidth, o = r.strokeOffset; if (i === void 0 || a === void 0) return; this.updateStrokeStyle(r, this.applyStroke), this.beginGeometry(e, t, n), this.hitDetectionInstructions.push([ +<<<<<<< Updated upstream +<<<<<<< Updated upstream X.SET_STROKE_STYLE, qc, +======= + Y.SET_STROKE_STYLE, + hc, +>>>>>>> Stashed changes +======= + Y.SET_STROKE_STYLE, + hc, +>>>>>>> Stashed changes r.lineWidth, r.lineCap, r.lineJoin, r.miterLimit, +<<<<<<< Updated upstream +<<<<<<< Updated upstream Gc, 0 ], Ju); @@ -9012,63 +16134,165 @@ var Uu = class extends Ge { e.lastStroke != null && e.lastStroke != this.coordinates.length && (this.instructions.push(qu), e.lastStroke = this.coordinates.length), e.lastStroke = 0, super.applyStroke(e), this.instructions.push(Ju); } }, $u = class extends Xu { +======= + pc, + 0 + ], vd); + let s = e.getEnds(), c = e.getFlatCoordinates(), l = e.getStride(), u = 0; + for (let e = 0, t = s.length; e < t; ++e) u = this.drawFlatCoordinates_(c, u, s[e], l, o); + this.hitDetectionInstructions.push(_d), this.endGeometry(t); + } + finish() { + let e = this.state; + return e.lastStroke != null && e.lastStroke != this.coordinates.length && this.instructions.push(_d), this.reverseHitDetectionInstructions(), this.state = null, super.finish(); + } + applyStroke(e) { + e.lastStroke != null && e.lastStroke != this.coordinates.length && (this.instructions.push(_d), e.lastStroke = this.coordinates.length), e.lastStroke = 0, super.applyStroke(e), this.instructions.push(vd); + } +}, Cd = class extends bd { +>>>>>>> Stashed changes +======= + pc, + 0 + ], vd); + let s = e.getEnds(), c = e.getFlatCoordinates(), l = e.getStride(), u = 0; + for (let e = 0, t = s.length; e < t; ++e) u = this.drawFlatCoordinates_(c, u, s[e], l, o); + this.hitDetectionInstructions.push(_d), this.endGeometry(t); + } + finish() { + let e = this.state; + return e.lastStroke != null && e.lastStroke != this.coordinates.length && this.instructions.push(_d), this.reverseHitDetectionInstructions(), this.state = null, super.finish(); + } + applyStroke(e) { + e.lastStroke != null && e.lastStroke != this.coordinates.length && (this.instructions.push(_d), e.lastStroke = this.coordinates.length), e.lastStroke = 0, super.applyStroke(e), this.instructions.push(vd); + } +}, Cd = class extends bd { +>>>>>>> Stashed changes constructor(e, t, n, r) { super(e, t, n, r); } drawFlatCoordinatess_(e, t, n, r, i) { let a = this.state, o = a.fillStyle !== void 0, s = a.strokeStyle !== void 0, c = n.length; +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.instructions.push(Ju), this.hitDetectionInstructions.push(Ju); +======= + this.instructions.push(vd), this.hitDetectionInstructions.push(vd); +>>>>>>> Stashed changes +======= + this.instructions.push(vd), this.hitDetectionInstructions.push(vd); +>>>>>>> Stashed changes for (let a = 0; a < c; ++a) { let o = n[a], c = this.coordinates.length, l = this.appendFlatLineCoordinates(e, t, o, r, !0, !s); this.instructions.push([ - X.MOVE_TO_LINE_TO, + Y.MOVE_TO_LINE_TO, c, l, i * this.pixelRatio, !0 ]), this.hitDetectionInstructions.push([ - X.MOVE_TO_LINE_TO, + Y.MOVE_TO_LINE_TO, c, l, i, !0 +<<<<<<< Updated upstream +<<<<<<< Updated upstream ]), s && (this.instructions.push(Yu), this.hitDetectionInstructions.push(Yu)), t = o; } return o && (this.instructions.push(Ku), this.hitDetectionInstructions.push(Ku)), s && (this.instructions.push(qu), this.hitDetectionInstructions.push(qu)), t; +======= + ]), s && (this.instructions.push(yd), this.hitDetectionInstructions.push(yd)), t = o; + } + return o && (this.instructions.push(gd), this.hitDetectionInstructions.push(gd)), s && (this.instructions.push(_d), this.hitDetectionInstructions.push(_d)), t; +>>>>>>> Stashed changes +======= + ]), s && (this.instructions.push(yd), this.hitDetectionInstructions.push(yd)), t = o; + } + return o && (this.instructions.push(gd), this.hitDetectionInstructions.push(gd)), s && (this.instructions.push(_d), this.hitDetectionInstructions.push(_d)), t; +>>>>>>> Stashed changes } drawCircle(e, t, n) { let r = this.state, i = r.fillStyle, a = r.strokeStyle, o = r.strokeOffset; if (i === void 0 && a === void 0 || this.handleStrokeOffset_(() => this.drawCircle(e, t, n))) return; +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.setFillStrokeStyles_(), this.beginGeometry(e, t, n), r.fillStyle !== void 0 && this.hitDetectionInstructions.push([X.SET_FILL_STYLE, Uc]), r.strokeStyle !== void 0 && this.hitDetectionInstructions.push([ X.SET_STROKE_STYLE, qc, +======= + this.setFillStrokeStyles_(), this.beginGeometry(e, t, n), r.fillStyle !== void 0 && this.hitDetectionInstructions.push([Y.SET_FILL_STYLE, dc]), r.strokeStyle !== void 0 && this.hitDetectionInstructions.push([ + Y.SET_STROKE_STYLE, + hc, +>>>>>>> Stashed changes +======= + this.setFillStrokeStyles_(), this.beginGeometry(e, t, n), r.fillStyle !== void 0 && this.hitDetectionInstructions.push([Y.SET_FILL_STYLE, dc]), r.strokeStyle !== void 0 && this.hitDetectionInstructions.push([ + Y.SET_STROKE_STYLE, + hc, +>>>>>>> Stashed changes r.lineWidth, r.lineCap, r.lineJoin, r.miterLimit, +<<<<<<< Updated upstream +<<<<<<< Updated upstream Gc, +======= + pc, +>>>>>>> Stashed changes +======= + pc, +>>>>>>> Stashed changes 0 ]); let s = e.getFlatCoordinates(), c = e.getStride(), l = this.coordinates.length; this.appendFlatLineCoordinates(s, 0, s.length, c, !1, !1); let u = [ - X.CIRCLE, + Y.CIRCLE, l, o ]; +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.instructions.push(Ju, u), this.hitDetectionInstructions.push(Ju, u), r.fillStyle !== void 0 && (this.instructions.push(Ku), this.hitDetectionInstructions.push(Ku)), r.strokeStyle !== void 0 && (this.instructions.push(qu), this.hitDetectionInstructions.push(qu)), this.endGeometry(t); +======= + this.instructions.push(vd, u), this.hitDetectionInstructions.push(vd, u), r.fillStyle !== void 0 && (this.instructions.push(gd), this.hitDetectionInstructions.push(gd)), r.strokeStyle !== void 0 && (this.instructions.push(_d), this.hitDetectionInstructions.push(_d)), this.endGeometry(t); +>>>>>>> Stashed changes +======= + this.instructions.push(vd, u), this.hitDetectionInstructions.push(vd, u), r.fillStyle !== void 0 && (this.instructions.push(gd), this.hitDetectionInstructions.push(gd)), r.strokeStyle !== void 0 && (this.instructions.push(_d), this.hitDetectionInstructions.push(_d)), this.endGeometry(t); +>>>>>>> Stashed changes } drawPolygon(e, t, n) { let r = this.state, i = r.fillStyle, a = r.strokeStyle, o = r.strokeOffset; if (i === void 0 && a === void 0 || this.handleStrokeOffset_(() => this.drawPolygon(e, t, n))) return; +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.setFillStrokeStyles_(), this.beginGeometry(e, t, n), r.fillStyle !== void 0 && this.hitDetectionInstructions.push([X.SET_FILL_STYLE, Uc]), r.strokeStyle !== void 0 && this.hitDetectionInstructions.push([ X.SET_STROKE_STYLE, qc, +======= + this.setFillStrokeStyles_(), this.beginGeometry(e, t, n), r.fillStyle !== void 0 && this.hitDetectionInstructions.push([Y.SET_FILL_STYLE, dc]), r.strokeStyle !== void 0 && this.hitDetectionInstructions.push([ + Y.SET_STROKE_STYLE, + hc, +>>>>>>> Stashed changes +======= + this.setFillStrokeStyles_(), this.beginGeometry(e, t, n), r.fillStyle !== void 0 && this.hitDetectionInstructions.push([Y.SET_FILL_STYLE, dc]), r.strokeStyle !== void 0 && this.hitDetectionInstructions.push([ + Y.SET_STROKE_STYLE, + hc, +>>>>>>> Stashed changes r.lineWidth, r.lineCap, r.lineJoin, r.miterLimit, +<<<<<<< Updated upstream +<<<<<<< Updated upstream Gc, +======= + pc, +>>>>>>> Stashed changes +======= + pc, +>>>>>>> Stashed changes 0 ]); let s = e.getEnds(), c = e.getOrientedFlatCoordinates(), l = e.getStride(); @@ -9077,14 +16301,34 @@ var Uu = class extends Ge { drawMultiPolygon(e, t, n) { let r = this.state, i = r.fillStyle, a = r.strokeStyle, o = r.strokeOffset; if (i === void 0 && a === void 0 || this.handleStrokeOffset_(() => this.drawMultiPolygon(e, t, n))) return; +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.setFillStrokeStyles_(), this.beginGeometry(e, t, n), r.fillStyle !== void 0 && this.hitDetectionInstructions.push([X.SET_FILL_STYLE, Uc]), r.strokeStyle !== void 0 && this.hitDetectionInstructions.push([ X.SET_STROKE_STYLE, qc, +======= + this.setFillStrokeStyles_(), this.beginGeometry(e, t, n), r.fillStyle !== void 0 && this.hitDetectionInstructions.push([Y.SET_FILL_STYLE, dc]), r.strokeStyle !== void 0 && this.hitDetectionInstructions.push([ + Y.SET_STROKE_STYLE, + hc, +>>>>>>> Stashed changes +======= + this.setFillStrokeStyles_(), this.beginGeometry(e, t, n), r.fillStyle !== void 0 && this.hitDetectionInstructions.push([Y.SET_FILL_STYLE, dc]), r.strokeStyle !== void 0 && this.hitDetectionInstructions.push([ + Y.SET_STROKE_STYLE, + hc, +>>>>>>> Stashed changes r.lineWidth, r.lineCap, r.lineJoin, r.miterLimit, +<<<<<<< Updated upstream +<<<<<<< Updated upstream Gc, +======= + pc, +>>>>>>> Stashed changes +======= + pc, +>>>>>>> Stashed changes 0 ]); let s = e.getEndss(), c = e.getOrientedFlatCoordinates(), l = e.getStride(), u = 0; @@ -9096,7 +16340,15 @@ var Uu = class extends Ge { let e = this.tolerance; if (e !== 0) { let t = this.coordinates; +<<<<<<< Updated upstream +<<<<<<< Updated upstream for (let n = 0, r = t.length; n < r; ++n) t[n] = Ba(t[n], e); +======= + for (let n = 0, r = t.length; n < r; ++n) t[n] = Bi(t[n], e); +>>>>>>> Stashed changes +======= + for (let n = 0, r = t.length; n < r; ++n) t[n] = Bi(t[n], e); +>>>>>>> Stashed changes } return super.finish(); } @@ -9108,8 +16360,18 @@ var Uu = class extends Ge { let t = this.state, n = t.fillStyle, r = t.strokeStyle, i = t.strokeOffset; return Math.abs(i) > 0 && n !== void 0 && r !== void 0 && (t.strokeStyle = void 0, t.strokeOffset = 0, e(), t.fillStyle = void 0, t.strokeStyle = r, t.strokeOffset = i, e(), t.fillStyle = n, !0); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, ed = 0, td = 1; function nd(e, t, n, r, i, a, o, s) { +======= +}, wd = 0, Td = 1; +function Ed(e, t, n, r, i, a, o, s) { +>>>>>>> Stashed changes +======= +}, wd = 0, Td = 1; +function Ed(e, t, n, r, i, a, o, s) { +>>>>>>> Stashed changes let c = o - i, l = s - a, u = 0, d = 1; if (c === 0) { if (i < e || i > n) return !1; @@ -9131,16 +16393,38 @@ function nd(e, t, n, r, i, a, o, s) { } if (e > u && (u = e), n < d && (d = n), u > d) return !1; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream return ed = u, td = d, !0; } function rd(e, t, n, r) { +======= + return wd = u, Td = d, !0; +} +function Dd(e, t, n, r) { +>>>>>>> Stashed changes +======= + return wd = u, Td = d, !0; +} +function Dd(e, t, n, r) { +>>>>>>> Stashed changes let i = r[0], a = r[1], o = r[2], s = r[3], c = [], l = [], u = !1, d, f, p = 0; for (let r = 0, m = t.length; r < m; ++r) { let m = t[r], h = e[p], g = e[p + 1], _ = !1; for (let t = p + n; t < m; t += n) { let n = e[t], r = e[t + 1]; +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (nd(i, a, o, s, h, g, n, r)) { let e = n - h, t = r - g, i = h + ed * e, a = g + ed * t, o = h + td * e, s = g + td * t; +======= + if (Ed(i, a, o, s, h, g, n, r)) { + let e = n - h, t = r - g, i = h + wd * e, a = g + wd * t, o = h + Td * e, s = g + Td * t; +>>>>>>> Stashed changes +======= + if (Ed(i, a, o, s, h, g, n, r)) { + let e = n - h, t = r - g, i = h + wd * e, a = g + wd * t, o = h + Td * e, s = g + Td * t; +>>>>>>> Stashed changes u && _ && i === d && a === f ? c.push(o, s) : (u && l.push(c.length), c.push(i, a, o, s), u = !0), d = o, f = s, _ = !0; } h = n, g = r; @@ -9154,7 +16438,15 @@ function rd(e, t, n, r) { } //#endregion //#region node_modules/ol/geom/flat/linechunk.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function id(e, t, n, r, i) { +======= +function Od(e, t, n, r, i) { +>>>>>>> Stashed changes +======= +function Od(e, t, n, r, i) { +>>>>>>> Stashed changes let a = [], o = n, s = 0, c = t.slice(n, 2); for (; s < e && o + i < r;) { let [n, r] = c.slice(-2), l = t[o + i], u = t[o + i + 1], d = Math.sqrt((l - n) * (l - n) + (u - r) * (u - r)); @@ -9171,7 +16463,15 @@ function id(e, t, n, r, i) { } //#endregion //#region node_modules/ol/geom/flat/straightchunk.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function ad(e, t, n, r, i) { +======= +function kd(e, t, n, r, i) { +>>>>>>> Stashed changes +======= +function kd(e, t, n, r, i) { +>>>>>>> Stashed changes let a = n, o = n, s = 0, c = 0, l = n, u, d, f, p, m, h, g, _, v, y; for (d = n; d < r; d += i) { let n = t[d], r = t[d + 1]; @@ -9181,7 +16481,15 @@ function ad(e, t, n, r, i) { } //#endregion //#region node_modules/ol/render/canvas/TextBuilder.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var od = { +======= +var Ad = { +>>>>>>> Stashed changes +======= +var Ad = { +>>>>>>> Stashed changes left: 0, center: .5, right: 1, @@ -9191,6 +16499,8 @@ var od = { alphabetic: .8, ideographic: .8, bottom: 1 +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, sd = { Circle: $u, Default: Xu, @@ -9200,6 +16510,28 @@ var od = { Text: class extends Xu { constructor(e, t, n, r) { super(e, t, n, r), this.labels_ = null, this.text_ = "", this.textOffsetX_ = 0, this.textOffsetY_ = 0, this.textRotateWithView_ = void 0, this.textKeepUpright_ = void 0, this.textRotation_ = 0, this.textFillState_ = null, this.fillStates = {}, this.fillStates[Uc] = { fillStyle: Uc }, this.textStrokeState_ = null, this.strokeStates = {}, this.textState_ = {}, this.textStates = {}, this.textKey_ = "", this.fillKey_ = "", this.strokeKey_ = "", this.declutterMode_ = void 0, this.declutterImageWithText_ = void 0; +======= +}, jd = { + Circle: Cd, + Default: bd, + Image: xd, + LineString: Sd, + Polygon: Cd, + Text: class extends bd { + constructor(e, t, n, r) { + super(e, t, n, r), this.labels_ = null, this.text_ = "", this.textOffsetX_ = 0, this.textOffsetY_ = 0, this.textRotateWithView_ = void 0, this.textKeepUpright_ = void 0, this.textRotation_ = 0, this.textFillState_ = null, this.fillStates = {}, this.fillStates[dc] = { fillStyle: dc }, this.textStrokeState_ = null, this.strokeStates = {}, this.textState_ = {}, this.textStates = {}, this.textKey_ = "", this.fillKey_ = "", this.strokeKey_ = "", this.declutterMode_ = void 0, this.declutterImageWithText_ = void 0; +>>>>>>> Stashed changes +======= +}, jd = { + Circle: Cd, + Default: bd, + Image: xd, + LineString: Sd, + Polygon: Cd, + Text: class extends bd { + constructor(e, t, n, r) { + super(e, t, n, r), this.labels_ = null, this.text_ = "", this.textOffsetX_ = 0, this.textOffsetY_ = 0, this.textRotateWithView_ = void 0, this.textKeepUpright_ = void 0, this.textRotation_ = 0, this.textFillState_ = null, this.fillStates = {}, this.fillStates[dc] = { fillStyle: dc }, this.textStrokeState_ = null, this.strokeStates = {}, this.textState_ = {}, this.textStates = {}, this.textKey_ = "", this.fillKey_ = "", this.strokeKey_ = "", this.declutterMode_ = void 0, this.declutterImageWithText_ = void 0; +>>>>>>> Stashed changes } finish() { let e = super.finish(); @@ -9221,19 +16553,43 @@ var od = { i = []; for (let e = 0, n = t.length; e < n; ++e) i.push(t[e][0]); } +<<<<<<< Updated upstream if ((c == "LineString" || c == "MultiLineString") && !nt(this.getBufferedMaxExtent(), r)) { let e = rd(l, i, u, this.getBufferedMaxExtent()); +======= + if ((c == "LineString" || c == "MultiLineString") && !Ve(this.getBufferedMaxExtent(), r)) { + let e = Dd(l, i, u, this.getBufferedMaxExtent()); +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes if (l = e.flatCoordinates, i = e.ends, u = 2, i.length === 0) return; } this.beginGeometry(e, t, n); let d = a.repeat, f = d ? void 0 : a.textAlign, p = 0; for (let e = 0, t = i.length; e < t; ++e) { let t; +<<<<<<< Updated upstream +<<<<<<< Updated upstream t = d ? id(d * this.resolution, l, p, i[e], u) : [l.slice(p, i[e])]; for (let n = 0, r = t.length; n < r; ++n) { let r = t[n], c = 0, l = r.length; if (f == null) { let e = ad(a.maxAngle, r, 0, r.length, 2); +======= + t = d ? Od(d * this.resolution, l, p, i[e], u) : [l.slice(p, i[e])]; + for (let n = 0, r = t.length; n < r; ++n) { + let r = t[n], c = 0, l = r.length; + if (f == null) { + let e = kd(a.maxAngle, r, 0, r.length, 2); +>>>>>>> Stashed changes +======= + t = d ? Od(d * this.resolution, l, p, i[e], u) : [l.slice(p, i[e])]; + for (let n = 0, r = t.length; n < r; ++n) { + let r = t[n], c = 0, l = r.length; + if (f == null) { + let e = kd(a.maxAngle, r, 0, r.length, 2); +>>>>>>> Stashed changes c = e[0], l = e[1]; } for (let e = c; e < l; e += u) o.push(r[e], r[e + 1]); @@ -9281,7 +16637,15 @@ var od = { let d = a.backgroundFill ? this.createFill(this.fillStyleToState(a.backgroundFill)) : null, f = a.backgroundStroke ? this.createStroke(this.strokeStyleToState(a.backgroundStroke)) : null; this.beginGeometry(e, t, n); let p = a.padding; +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (p != Xc && (a.scale[0] < 0 || a.scale[1] < 0)) { +======= + if (p != vc && (a.scale[0] < 0 || a.scale[1] < 0)) { +>>>>>>> Stashed changes +======= + if (p != vc && (a.scale[0] < 0 || a.scale[1] < 0)) { +>>>>>>> Stashed changes let e = a.padding[0], t = a.padding[1], n = a.padding[2], r = a.padding[3]; a.scale[0] < 0 && (t = -t, r = -r), a.scale[1] < 0 && (e = -e, n = -n), p = [ e, @@ -9292,7 +16656,7 @@ var od = { } let m = this.pixelRatio; this.instructions.push([ - X.DRAW_IMAGE, + Y.DRAW_IMAGE, s, i, null, @@ -9308,7 +16672,15 @@ var od = { NaN, this.declutterMode_, this.declutterImageWithText_, +<<<<<<< Updated upstream +<<<<<<< Updated upstream p == Xc ? Xc : p.map(function(e) { +======= + p == vc ? vc : p.map(function(e) { +>>>>>>> Stashed changes +======= + p == vc ? vc : p.map(function(e) { +>>>>>>> Stashed changes return e * m; }), d, @@ -9322,8 +16694,18 @@ var od = { r ]); let h = 1 / m, g = d ? d.slice(0) : null; +<<<<<<< Updated upstream +<<<<<<< Updated upstream g && (g[1] = Uc), this.hitDetectionInstructions.push([ X.DRAW_IMAGE, +======= + g && (g[1] = dc), this.hitDetectionInstructions.push([ + Y.DRAW_IMAGE, +>>>>>>> Stashed changes +======= + g && (g[1] = dc), this.hitDetectionInstructions.push([ + Y.DRAW_IMAGE, +>>>>>>> Stashed changes s, i, null, @@ -9345,7 +16727,15 @@ var od = { this.text_, this.textKey_, this.strokeKey_, +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.fillKey_ ? Uc : this.fillKey_, +======= + this.fillKey_ ? dc : this.fillKey_, +>>>>>>> Stashed changes +======= + this.fillKey_ ? dc : this.fillKey_, +>>>>>>> Stashed changes this.textOffsetX_, this.textOffsetY_, r @@ -9377,9 +16767,17 @@ var od = { drawChars_(e, t) { let n = this.textStrokeState_, r = this.textState_, i = this.strokeKey_, a = this.textKey_, o = this.fillKey_; this.saveTextStates_(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream let s = this.pixelRatio, c = od[r.textBaseline], l = this.textOffsetX_ * s, u = this.textOffsetY_ * s, d = this.text_, f = n ? n.lineWidth * Math.abs(r.scale[0]) / 2 : 0; +======= + let s = this.pixelRatio, c = Ad[r.textBaseline], l = this.textOffsetX_ * s, u = this.textOffsetY_ * s, d = this.text_, f = n ? n.lineWidth * Math.abs(r.scale[0]) / 2 : 0; +>>>>>>> Stashed changes +======= + let s = this.pixelRatio, c = Ad[r.textBaseline], l = this.textOffsetX_ * s, u = this.textOffsetY_ * s, d = this.text_, f = n ? n.lineWidth * Math.abs(r.scale[0]) / 2 : 0; +>>>>>>> Stashed changes this.instructions.push([ - X.DRAW_CHARS, + Y.DRAW_CHARS, e, t, c, @@ -9397,12 +16795,20 @@ var od = { this.textKeepUpright_, l ]), this.hitDetectionInstructions.push([ - X.DRAW_CHARS, + Y.DRAW_CHARS, e, t, c, r.overflow, +<<<<<<< Updated upstream +<<<<<<< Updated upstream o && Uc, +======= + o && dc, +>>>>>>> Stashed changes +======= + o && dc, +>>>>>>> Stashed changes r.maxAngle, s, u, @@ -9421,12 +16827,22 @@ var od = { if (!e) this.text_ = ""; else { let t = e.getFill(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream t ? (r = this.textFillState_, r || (r = {}, this.textFillState_ = r), r.fillStyle = Bc(t.getColor() || "#000")) : (r = null, this.textFillState_ = r); +======= + t ? (r = this.textFillState_, r || (r = {}, this.textFillState_ = r), r.fillStyle = cc(t.getColor() || "#000")) : (r = null, this.textFillState_ = r); +>>>>>>> Stashed changes +======= + t ? (r = this.textFillState_, r || (r = {}, this.textFillState_ = r), r.fillStyle = cc(t.getColor() || "#000")) : (r = null, this.textFillState_ = r); +>>>>>>> Stashed changes let a = e.getStroke(); if (!a) i = null, this.textStrokeState_ = i; else { i = this.textStrokeState_, i || (i = {}, this.textStrokeState_ = i); let e = a.getLineDash(), t = a.getLineDashOffset(), n = a.getWidth(), r = a.getMiterLimit(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream i.lineCap = a.getLineCap() || "round", i.lineDash = e ? e.slice() : Gc, i.lineDashOffset = t === void 0 ? 0 : t, i.lineJoin = a.getLineJoin() || "round", i.lineWidth = n === void 0 ? 1 : n, i.miterLimit = r === void 0 ? 10 : r, i.strokeStyle = Bc(a.getColor() || "#000"); } n = this.textState_; @@ -9434,13 +16850,39 @@ var od = { rl(o); let s = e.getScaleArray(); n.overflow = e.getOverflow(), n.font = o, n.maxAngle = e.getMaxAngle(), n.placement = e.getPlacement(), n.textAlign = e.getTextAlign(), n.repeat = e.getRepeat(), n.justify = e.getJustify(), n.textBaseline = e.getTextBaseline() || "middle", n.backgroundFill = e.getBackgroundFill(), n.backgroundStroke = e.getBackgroundStroke(), n.padding = e.getPadding() || Xc, n.scale = s === void 0 ? [1, 1] : s; +======= + i.lineCap = a.getLineCap() || "round", i.lineDash = e ? e.slice() : pc, i.lineDashOffset = t === void 0 ? 0 : t, i.lineJoin = a.getLineJoin() || "round", i.lineWidth = n === void 0 ? 1 : n, i.miterLimit = r === void 0 ? 10 : r, i.strokeStyle = cc(a.getColor() || "#000"); + } + n = this.textState_; + let o = e.getFont() || "10px sans-serif"; + Tc(o); + let s = e.getScaleArray(); + n.overflow = e.getOverflow(), n.font = o, n.maxAngle = e.getMaxAngle(), n.placement = e.getPlacement(), n.textAlign = e.getTextAlign(), n.repeat = e.getRepeat(), n.justify = e.getJustify(), n.textBaseline = e.getTextBaseline() || "middle", n.backgroundFill = e.getBackgroundFill(), n.backgroundStroke = e.getBackgroundStroke(), n.padding = e.getPadding() || vc, n.scale = s === void 0 ? [1, 1] : s; +>>>>>>> Stashed changes +======= + i.lineCap = a.getLineCap() || "round", i.lineDash = e ? e.slice() : pc, i.lineDashOffset = t === void 0 ? 0 : t, i.lineJoin = a.getLineJoin() || "round", i.lineWidth = n === void 0 ? 1 : n, i.miterLimit = r === void 0 ? 10 : r, i.strokeStyle = cc(a.getColor() || "#000"); + } + n = this.textState_; + let o = e.getFont() || "10px sans-serif"; + Tc(o); + let s = e.getScaleArray(); + n.overflow = e.getOverflow(), n.font = o, n.maxAngle = e.getMaxAngle(), n.placement = e.getPlacement(), n.textAlign = e.getTextAlign(), n.repeat = e.getRepeat(), n.justify = e.getJustify(), n.textBaseline = e.getTextBaseline() || "middle", n.backgroundFill = e.getBackgroundFill(), n.backgroundStroke = e.getBackgroundStroke(), n.padding = e.getPadding() || vc, n.scale = s === void 0 ? [1, 1] : s; +>>>>>>> Stashed changes let c = e.getOffsetX(), l = e.getOffsetY(), u = e.getRotateWithView(), d = e.getKeepUpright(), f = e.getRotation(); this.text_ = e.getText() || "", this.textOffsetX_ = c === void 0 ? 0 : c, this.textOffsetY_ = l === void 0 ? 0 : l, this.textRotateWithView_ = u !== void 0 && u, this.textKeepUpright_ = d === void 0 || d, this.textRotation_ = f === void 0 ? 0 : f, this.strokeKey_ = i ? (typeof i.strokeStyle == "string" ? i.strokeStyle : O(i.strokeStyle)) + i.lineCap + i.lineDashOffset + "|" + i.lineWidth + i.lineJoin + i.miterLimit + "[" + i.lineDash.join() + "]" : "", this.textKey_ = n.font + n.scale + (n.textAlign || "?") + (n.repeat || "?") + (n.justify || "?") + (n.textBaseline || "?"), this.fillKey_ = r && r.fillStyle ? typeof r.fillStyle == "string" ? r.fillStyle : "|" + O(r.fillStyle) : ""; } this.declutterMode_ = e.getDeclutterMode(), this.declutterImageWithText_ = t; } } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, cd = class { +======= +}, Md = class { +>>>>>>> Stashed changes +======= +}, Md = class { +>>>>>>> Stashed changes constructor(e, t, n, r) { this.tolerance_ = e, this.maxExtent_ = t, this.pixelRatio_ = r, this.resolution_ = n, this.buildersByZIndex_ = {}; } @@ -9461,7 +16903,15 @@ var od = { r === void 0 && (r = {}, this.buildersByZIndex_[n] = r); let i = r[t]; if (i === void 0) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let e = sd[t]; +======= + let e = jd[t]; +>>>>>>> Stashed changes +======= + let e = jd[t]; +>>>>>>> Stashed changes i = new e(this.tolerance_, this.maxExtent_, this.resolution_, this.pixelRatio_), r[t] = i; } return i; @@ -9469,7 +16919,15 @@ var od = { }; //#endregion //#region node_modules/ol/geom/flat/length.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function ld(e, t, n, r) { +======= +function Nd(e, t, n, r) { +>>>>>>> Stashed changes +======= +function Nd(e, t, n, r) { +>>>>>>> Stashed changes let i = e[t], a = e[t + 1], o = 0; for (let s = t + r; s < n; s += r) { let t = e[s], n = e[s + 1]; @@ -9479,16 +16937,40 @@ function ld(e, t, n, r) { } //#endregion //#region node_modules/ol/geom/flat/lineoffset.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function ud(e, t, n, r, i, a, o, s) { o ??= [], s ??= r; let c = e[t + r], l = e[t + r + 1], u = e[n - 2 * r], d = e[n - 2 * r + 1], f, p, m, h, g, _, v, y, b = 0; for (let x = t; x < n; x += r) { m = f, h = p, g = void 0, _ = void 0, x + r < n && (g = e[x + r], _ = e[x + r + 1]), a && x === t && (m = u, h = d), a && x === n - r && (g = c, _ = l), f = e[x], p = e[x + 1], [v, y] = dd(f, p, m, h, g, _, i), o[b++] = v, o[b++] = y; +======= +function Pd(e, t, n, r, i, a, o, s) { + o ??= [], s ??= r; + let c = e[t + r], l = e[t + r + 1], u = e[n - 2 * r], d = e[n - 2 * r + 1], f, p, m, h, g, _, v, y, b = 0; + for (let x = t; x < n; x += r) { + m = f, h = p, g = void 0, _ = void 0, x + r < n && (g = e[x + r], _ = e[x + r + 1]), a && x === t && (m = u, h = d), a && x === n - r && (g = c, _ = l), f = e[x], p = e[x + 1], [v, y] = Fd(f, p, m, h, g, _, i), o[b++] = v, o[b++] = y; +>>>>>>> Stashed changes +======= +function Pd(e, t, n, r, i, a, o, s) { + o ??= [], s ??= r; + let c = e[t + r], l = e[t + r + 1], u = e[n - 2 * r], d = e[n - 2 * r + 1], f, p, m, h, g, _, v, y, b = 0; + for (let x = t; x < n; x += r) { + m = f, h = p, g = void 0, _ = void 0, x + r < n && (g = e[x + r], _ = e[x + r + 1]), a && x === t && (m = u, h = d), a && x === n - r && (g = c, _ = l), f = e[x], p = e[x + 1], [v, y] = Fd(f, p, m, h, g, _, i), o[b++] = v, o[b++] = y; +>>>>>>> Stashed changes for (let t = 2; t < s; t++) o[b++] = e[x + t]; } return o.length != b && (o.length = b), o; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function dd(e, t, n, r, i, a, o) { +======= +function Fd(e, t, n, r, i, a, o) { +>>>>>>> Stashed changes +======= +function Fd(e, t, n, r, i, a, o) { +>>>>>>> Stashed changes let s, c; n !== void 0 && r !== void 0 ? (s = e - n, c = t - r) : i !== void 0 && a !== void 0 ? (s = i - e, c = a - t) : (s = 1, c = 0); let l = Math.hypot(s, c), u = s / l, d = c / l; @@ -9498,7 +16980,15 @@ function dd(e, t, n, r, i, a, o) { let p = Math.cos(f / 2), m = Math.sin(f / 2), h = m * s + p * c, g = -p * s + m * c, _ = 1 / m * h, v = 1 / m * g; return [e + _ * o, t + v * o]; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function fd(e, t, n = !1) { +======= +function Id(e, t, n = !1) { +>>>>>>> Stashed changes +======= +function Id(e, t, n = !1) { +>>>>>>> Stashed changes for (let r = 0, i = e.length - 2; r < i; r += t) { let i = n && r === 0 ? e.length - 3 * t : e.length - 2 * t; for (let n = i; n > r + t; n -= t) { @@ -9516,11 +17006,27 @@ function fd(e, t, n = !1) { } //#endregion //#region node_modules/ol/geom/flat/textpath.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var pd; function md() { return pd ||= new Intl.Segmenter(void 0, { granularity: "grapheme" }), pd; } function hd(e, t, n, r, i, a, o, s, c, l, u, d, f = !0) { +======= +var Ld; +function Rd() { + return Ld ||= new Intl.Segmenter(void 0, { granularity: "grapheme" }), Ld; +} +function zd(e, t, n, r, i, a, o, s, c, l, u, d, f = !0) { +>>>>>>> Stashed changes +======= +var Ld; +function Rd() { + return Ld ||= new Intl.Segmenter(void 0, { granularity: "grapheme" }), Ld; +} +function zd(e, t, n, r, i, a, o, s, c, l, u, d, f = !0) { +>>>>>>> Stashed changes let p = e[t], m = e[t + 1], h = 0, g = 0, _ = 0, v = 0; function y() { h = p, g = m, t += r, p = e[t], m = e[t + 1], v += _, _ = Math.sqrt((p - h) * (p - h) + (m - g) * (m - g)); @@ -9540,8 +17046,16 @@ function hd(e, t, n, r, i, a, o, s, c, l, u, d, f = !0) { E, D ]; +<<<<<<< Updated upstream +<<<<<<< Updated upstream ca(e, 0, 4, 2, d, e, e), O = e[0] > e[2]; } else O = x > E; +======= +======= +>>>>>>> Stashed changes + ci(e, 0, 4, 2, d, e, e), D = e[0] > e[2]; + } else D = x > E; +>>>>>>> Stashed changes } let k = Math.PI, A = [], j = C + r === t; t = C, _ = 0, v = w, p = e[t], m = e[t + 1]; @@ -9554,8 +17068,16 @@ function hd(e, t, n, r, i, a, o, s, c, l, u, d, f = !0) { i ], A; i = i.replace(/\n/g, " "); +<<<<<<< Updated upstream +<<<<<<< Updated upstream let N = Array.from(md().segment(i), (e) => e.segment); for (let e = 0, i = N.length; e < i;) { +======= +======= +>>>>>>> Stashed changes + let ne = Array.from(Rd().segment(i), (e) => e.segment); + for (let e = 0, i = ne.length; e < i;) { +>>>>>>> Stashed changes y(); let d = Math.atan2(m - g, p - h); if (O && (d += d > 0 ? -k : k), M !== void 0) { @@ -9585,6 +17107,8 @@ function hd(e, t, n, r, i, a, o, s, c, l, u, d, f = !0) { } //#endregion //#region node_modules/ol/render/canvas/Executor.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var gd = at(), _d = [], vd = [], yd = [], bd = []; function xd(e) { return e[3].declutterBox; @@ -9602,6 +17126,44 @@ function Td(e, t, n) { var Ed = class { constructor(e, t, n, r, i) { this.overlaps = n, this.pixelRatio = t, this.resolution = e, this.alignAndScaleFill_, this.instructions = r.instructions, this.coordinates = r.coordinates, this.coordinateCache_ = {}, this.renderedTransform_ = Kr(), this.hitDetectionInstructions = r.hitDetectionInstructions, this.pixelCoordinates_ = null, this.viewRotation_ = 0, this.fillStates = r.fillStates || {}, this.strokeStates = r.strokeStates || {}, this.textStates = r.textStates || {}, this.widths_ = {}, this.labels_ = {}, this.zIndexContext_ = i ? new qi() : null; +======= +var Bd = We(), Vd = [], Hd = [], Ud = [], Wd = []; +function Gd(e) { + return e[3].declutterBox; +} +var Kd = /* @__PURE__ */ RegExp("[֑-ࣿיִ-﷿ﹰ-ﻼࠀ-࿿-]"); +function qd(e, t) { + return t === "start" ? t = Kd.test(e) ? "right" : "left" : t === "end" && (t = Kd.test(e) ? "left" : "right"), Ad[t]; +} +function Jd(e, t, n) { + return n > 0 && e.push("\n", ""), e.push(t, ""), e; +} +function Yd(e, t, n) { + return n % 2 == 0 && (e += t), e; +} +var Xd = class { + constructor(e, t, n, r, i) { + this.overlaps = n, this.pixelRatio = t, this.resolution = e, this.alignAndScaleFill_, this.instructions = r.instructions, this.coordinates = r.coordinates, this.coordinateCache_ = {}, this.renderedTransform_ = qr(), this.hitDetectionInstructions = r.hitDetectionInstructions, this.pixelCoordinates_ = null, this.viewRotation_ = 0, this.fillStates = r.fillStates || {}, this.strokeStates = r.strokeStates || {}, this.textStates = r.textStates || {}, this.widths_ = {}, this.labels_ = {}, this.zIndexContext_ = i ? new wu() : null; +>>>>>>> Stashed changes +======= +var Bd = We(), Vd = [], Hd = [], Ud = [], Wd = []; +function Gd(e) { + return e[3].declutterBox; +} +var Kd = /* @__PURE__ */ RegExp("[֑-ࣿיִ-﷿ﹰ-ﻼࠀ-࿿-]"); +function qd(e, t) { + return t === "start" ? t = Kd.test(e) ? "right" : "left" : t === "end" && (t = Kd.test(e) ? "left" : "right"), Ad[t]; +} +function Jd(e, t, n) { + return n > 0 && e.push("\n", ""), e.push(t, ""), e; +} +function Yd(e, t, n) { + return n % 2 == 0 && (e += t), e; +} +var Xd = class { + constructor(e, t, n, r, i) { + this.overlaps = n, this.pixelRatio = t, this.resolution = e, this.alignAndScaleFill_, this.instructions = r.instructions, this.coordinates = r.coordinates, this.coordinateCache_ = {}, this.renderedTransform_ = qr(), this.hitDetectionInstructions = r.hitDetectionInstructions, this.pixelCoordinates_ = null, this.viewRotation_ = 0, this.fillStates = r.fillStates || {}, this.strokeStates = r.strokeStates || {}, this.textStates = r.textStates || {}, this.widths_ = {}, this.labels_ = {}, this.zIndexContext_ = i ? new wu() : null; +>>>>>>> Stashed changes } getZIndexContext() { return this.zIndexContext_; @@ -9609,7 +17171,15 @@ var Ed = class { createLabel(e, t, n, r) { let i = e + t + n + r; if (this.labels_[i]) return this.labels_[i]; +<<<<<<< Updated upstream +<<<<<<< Updated upstream let a = r ? this.strokeStates[r] : null, o = n ? this.fillStates[n] : null, s = this.textStates[t], c = this.pixelRatio, l = [s.scale[0] * c, s.scale[1] * c], u = s.justify ? od[s.justify] : Cd(Array.isArray(e) ? e[0] : e, s.textAlign || "center"), d = r && a.lineWidth ? a.lineWidth : 0, f = Array.isArray(e) ? e : String(e).split("\n").reduce(wd, []), { width: p, height: m, widths: h, heights: g, lineWidths: _ } = cl(s, f), v = p + d, y = [], b = (v + 2) * l[0], x = (m + d) * l[1], S = { +======= + let a = r ? this.strokeStates[r] : null, o = n ? this.fillStates[n] : null, s = this.textStates[t], c = this.pixelRatio, l = [s.scale[0] * c, s.scale[1] * c], u = s.justify ? Ad[s.justify] : qd(Array.isArray(e) ? e[0] : e, s.textAlign || "center"), d = r && a.lineWidth ? a.lineWidth : 0, f = Array.isArray(e) ? e : String(e).split("\n").reduce(Jd, []), { width: p, height: m, widths: h, heights: g, lineWidths: _ } = Ac(s, f), v = p + d, y = [], b = (v + 2) * l[0], x = (m + d) * l[1], S = { +>>>>>>> Stashed changes +======= + let a = r ? this.strokeStates[r] : null, o = n ? this.fillStates[n] : null, s = this.textStates[t], c = this.pixelRatio, l = [s.scale[0] * c, s.scale[1] * c], u = s.justify ? Ad[s.justify] : qd(Array.isArray(e) ? e[0] : e, s.textAlign || "center"), d = r && a.lineWidth ? a.lineWidth : 0, f = Array.isArray(e) ? e : String(e).split("\n").reduce(Jd, []), { width: p, height: m, widths: h, heights: g, lineWidths: _ } = Ac(s, f), v = p + d, y = [], b = (v + 2) * l[0], x = (m + d) * l[1], S = { +>>>>>>> Stashed changes width: b < 0 ? Math.floor(b) : Math.ceil(b), height: x < 0 ? Math.floor(x) : Math.ceil(x), contextInstructions: y @@ -9639,9 +17209,21 @@ var Ed = class { calculateImageOrLabelDimensions_(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h) { o *= d[0], s *= d[1]; let g = n - o, _ = r - s, v = i + c > e ? e - c : i, y = a + l > t ? t - l : a, b = p[3] + v * d[0] + p[1], x = p[0] + y * d[1] + p[2], S = g - p[3], C = _ - p[0]; +<<<<<<< Updated upstream +<<<<<<< Updated upstream (m || u !== 0) && (_d[0] = S, bd[0] = S, _d[1] = C, vd[1] = C, vd[0] = S + b, yd[0] = vd[0], yd[1] = C + x, bd[1] = yd[1]); let w; return u === 0 ? ot(Math.min(S, S + b), Math.min(C, C + x), Math.max(S, S + b), Math.max(C, C + x), gd) : (w = $r(Kr(), n, r, 1, 1, u, -n, -r), B(w, _d), B(w, vd), B(w, yd), B(w, bd), ot(Math.min(_d[0], vd[0], yd[0], bd[0]), Math.min(_d[1], vd[1], yd[1], bd[1]), Math.max(_d[0], vd[0], yd[0], bd[0]), Math.max(_d[1], vd[1], yd[1], bd[1]), gd)), f && (g = Math.round(g), _ = Math.round(_)), { +======= + (m || u !== 0) && (Vd[0] = S, Wd[0] = S, Vd[1] = C, Hd[1] = C, Hd[0] = S + b, Ud[0] = Hd[0], Ud[1] = C + x, Wd[1] = Ud[1]); + let w; + return u === 0 ? Ge(Math.min(S, S + b), Math.min(C, C + x), Math.max(S, S + b), Math.max(C, C + x), Bd) : (w = ei(qr(), n, r, 1, 1, u, -n, -r), z(w, Vd), z(w, Hd), z(w, Ud), z(w, Wd), Ge(Math.min(Vd[0], Hd[0], Ud[0], Wd[0]), Math.min(Vd[1], Hd[1], Ud[1], Wd[1]), Math.max(Vd[0], Hd[0], Ud[0], Wd[0]), Math.max(Vd[1], Hd[1], Ud[1], Wd[1]), Bd)), f && (g = Math.round(g), _ = Math.round(_)), { +>>>>>>> Stashed changes +======= + (m || u !== 0) && (Vd[0] = S, Wd[0] = S, Vd[1] = C, Hd[1] = C, Hd[0] = S + b, Ud[0] = Hd[0], Ud[1] = C + x, Wd[1] = Ud[1]); + let w; + return u === 0 ? Ge(Math.min(S, S + b), Math.min(C, C + x), Math.max(S, S + b), Math.max(C, C + x), Bd) : (w = ei(qr(), n, r, 1, 1, u, -n, -r), z(w, Vd), z(w, Hd), z(w, Ud), z(w, Wd), Ge(Math.min(Vd[0], Hd[0], Ud[0], Wd[0]), Math.min(Vd[1], Hd[1], Ud[1], Wd[1]), Math.max(Vd[0], Hd[0], Ud[0], Wd[0]), Math.max(Vd[1], Hd[1], Ud[1], Wd[1]), Bd)), f && (g = Math.round(g), _ = Math.round(_)), { +>>>>>>> Stashed changes drawImageX: g, drawImageY: _, drawImageW: v, @@ -9649,10 +17231,23 @@ var Ed = class { originX: c, originY: l, declutterBox: { +<<<<<<< Updated upstream +<<<<<<< Updated upstream minX: gd[0], minY: gd[1], maxX: gd[2], maxY: gd[3], +======= +======= +>>>>>>> Stashed changes + minX: Bd[0], + minY: Bd[1], + maxX: Bd[2], + maxY: Bd[3], +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes value: h }, canvasTransform: w, @@ -9661,12 +17256,20 @@ var Ed = class { } replayImageOrLabel_(e, t, n, r, i, a, o) { let s = !!(a || o), c = r.declutterBox, l = o ? o[2] * r.scale[0] / 2 : 0; +<<<<<<< Updated upstream +<<<<<<< Updated upstream return c.minX - l <= t[0] && c.maxX + l >= 0 && c.minY - l <= t[1] && c.maxY + l >= 0 && (s && this.replayTextBackground_(e, _d, vd, yd, bd, a, o), ll(e, r.canvasTransform, i, n, r.originX, r.originY, r.drawImageW, r.drawImageH, r.drawImageX, r.drawImageY, r.scale)), !0; +======= + return c.minX - l <= t[0] && c.maxX + l >= 0 && c.minY - l <= t[1] && c.maxY + l >= 0 && (s && this.replayTextBackground_(e, Vd, Hd, Ud, Wd, a, o), jc(e, r.canvasTransform, i, n, r.originX, r.originY, r.drawImageW, r.drawImageH, r.drawImageX, r.drawImageY, r.scale)), !0; +>>>>>>> Stashed changes +======= + return c.minX - l <= t[0] && c.maxX + l >= 0 && c.minY - l <= t[1] && c.maxY + l >= 0 && (s && this.replayTextBackground_(e, Vd, Hd, Ud, Wd, a, o), jc(e, r.canvasTransform, i, n, r.originX, r.originY, r.drawImageW, r.drawImageH, r.drawImageX, r.drawImageY, r.scale)), !0; +>>>>>>> Stashed changes } fill_(e) { let t = this.alignAndScaleFill_; if (t) { - let n = B(this.renderedTransform_, [0, 0]), r = 512 * this.pixelRatio; + let n = z(this.renderedTransform_, [0, 0]), r = 512 * this.pixelRatio; e.save(), e.translate(n[0] % r, n[1] % r), t !== 1 && e.scale(t, t); } e.fill(), t && e.restore(); @@ -9675,7 +17278,15 @@ var Ed = class { e.strokeStyle = t[1], t[1] && (e.lineWidth = t[2], e.lineCap = t[3], e.lineJoin = t[4], e.miterLimit = t[5], e.lineDashOffset = t[7], e.setLineDash(t[6])); } drawLabelWithPointPlacement_(e, t, n, r) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let i = this.textStates[t], a = this.createLabel(e, t, r, n), o = this.strokeStates[n], s = this.pixelRatio, c = Cd(Array.isArray(e) ? e[0] : e, i.textAlign || "center"), l = od[i.textBaseline || "middle"], u = o && o.lineWidth ? o.lineWidth : 0; +======= + let i = this.textStates[t], a = this.createLabel(e, t, r, n), o = this.strokeStates[n], s = this.pixelRatio, c = qd(Array.isArray(e) ? e[0] : e, i.textAlign || "center"), l = Ad[i.textBaseline || "middle"], u = o && o.lineWidth ? o.lineWidth : 0; +>>>>>>> Stashed changes +======= + let i = this.textStates[t], a = this.createLabel(e, t, r, n), o = this.strokeStates[n], s = this.pixelRatio, c = qd(Array.isArray(e) ? e[0] : e, i.textAlign || "center"), l = Ad[i.textBaseline || "middle"], u = o && o.lineWidth ? o.lineWidth : 0; +>>>>>>> Stashed changes return { label: a, anchorX: c * (a.width / s - 2 * i.scale[0]) + 2 * (.5 - c) * u, @@ -9684,8 +17295,16 @@ var Ed = class { } execute_(e, t, n, r, i, a, o, s) { let c = this.zIndexContext_, l; +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.pixelCoordinates_ && h(n, this.renderedTransform_) ? l = this.pixelCoordinates_ : (this.pixelCoordinates_ ||= [], l = sa(this.coordinates, 0, this.coordinates.length, 2, n, this.pixelCoordinates_), Xr(this.renderedTransform_, n)); let u = 0, d = r.length, f = 0, p, m = [], g, _, v, y, b, x, S, C, w, T, E, D, O, k = 0, A = 0, j = this.coordinateCache_, M = this.viewRotation_, N = Math.round(Math.atan2(-n[1], n[0]) * 0xe8d4a51000) / 0xe8d4a51000, ee = { +======= +======= +>>>>>>> Stashed changes + this.pixelCoordinates_ && de(n, this.renderedTransform_) ? l = this.pixelCoordinates_ : (this.pixelCoordinates_ ||= [], l = si(this.coordinates, 0, this.coordinates.length, 2, n, this.pixelCoordinates_), Zr(this.renderedTransform_, n)); + let u = 0, d = r.length, f = 0, p, m = [], h, g, _, v, y, b, x, S, C, w, T, E, ee, D = 0, O = 0, k = this.coordinateCache_, te = this.viewRotation_, A = Math.round(Math.atan2(-n[1], n[0]) * 0xe8d4a51000) / 0xe8d4a51000, ne = { +>>>>>>> Stashed changes context: e, pixelRatio: this.pixelRatio, resolution: this.resolution, @@ -9694,6 +17313,8 @@ var Ed = class { for (; u < d;) { let n = r[u]; switch (n[0]) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream case X.BEGIN_GEOMETRY: F = n[1], re = n[3], F.getGeometry() ? o !== void 0 && !Ot(o, re.getExtent()) ? u = n[2] + 1 : ++u : u = n[2], c && (c.zIndex = n[4]); break; @@ -9704,17 +17325,39 @@ var Ed = class { f = n[1], v = n[2] ?? 0; let r = l[f], d = l[f + 1], h = l[f + 2] - v, ie = l[f + 3] - v, ae = h - r, oe = ie - d, se = Math.sqrt(ae * ae + oe * oe); e.moveTo(r + se, d), e.arc(r, d, se, 0, 2 * Math.PI, !0), ++u; +======= + case Y.BEGIN_GEOMETRY: + M = n[1], ie = n[3], M.getGeometry() ? o !== void 0 && !pt(o, ie.getExtent()) ? u = n[2] + 1 : ++u : u = n[2], c && (c.zIndex = n[4]); break; - case X.CLOSE_PATH: + case Y.BEGIN_PATH: + D > j && (this.fill_(e), D = 0), O > j && (e.stroke(), O = 0), !D && !O && (e.beginPath(), y = NaN, b = NaN), ++u; + break; +======= + case Y.BEGIN_GEOMETRY: + M = n[1], ie = n[3], M.getGeometry() ? o !== void 0 && !pt(o, ie.getExtent()) ? u = n[2] + 1 : ++u : u = n[2], c && (c.zIndex = n[4]); + break; + case Y.BEGIN_PATH: + D > j && (this.fill_(e), D = 0), O > j && (e.stroke(), O = 0), !D && !O && (e.beginPath(), y = NaN, b = NaN), ++u; + break; +>>>>>>> Stashed changes + case Y.CIRCLE: + f = n[1], _ = n[2] ?? 0; + let r = l[f], d = l[f + 1], ae = l[f + 2] - _, oe = l[f + 3] - _, se = ae - r, ce = oe - d, le = Math.sqrt(se * se + ce * ce); + e.moveTo(r + le, d), e.arc(r, d, le, 0, 2 * Math.PI, !0), ++u; +>>>>>>> Stashed changes + break; + case Y.CLOSE_PATH: e.closePath(), ++u; break; - case X.CUSTOM: + case Y.CUSTOM: f = n[1], p = n[2]; let ce = n[3], le = n[4], ue = n[5]; ee.geometry = ce, ee.feature = F, u in j || (j[u] = []); let de = j[u]; ue ? ue(l, f, p, 2, de) : (de[0] = l[f], de[1] = l[f + 1], de.length = 2), c && (c.zIndex = n[6]), le(de, ee), ++u; break; +<<<<<<< Updated upstream +<<<<<<< Updated upstream case X.DRAW_IMAGE: f = n[1], p = n[2], w = n[3], g = n[4], _ = n[5]; let fe = n[6], pe = n[7], me = n[8], he = n[9], ge = n[10], _e = n[11], ve = n[12], ye = n[13]; @@ -9724,15 +17367,38 @@ var Ed = class { T = n[19], E = n[20], D = n[21], O = n[22]; let e = this.drawLabelWithPointPlacement_(T, E, D, O); w = e.label, n[3] = w; +======= +======= +>>>>>>> Stashed changes + case Y.DRAW_IMAGE: + f = n[1], p = n[2], C = n[3], h = n[4], g = n[5]; + let me = n[6], he = n[7], ge = n[8], _e = n[9], ve = n[10], ye = n[11], be = n[12], xe = n[13]; + v = n[14] || "declutter"; + let P = n[15]; + if (!C && n.length >= 20) { + w = n[19], T = n[20], E = n[21], ee = n[22]; + let e = this.drawLabelWithPointPlacement_(w, T, E, ee); + C = e.label, n[3] = C; +>>>>>>> Stashed changes let t = n[23]; g = (e.anchorX - t) * this.pixelRatio, n[4] = g; let r = n[24]; _ = (e.anchorY - r) * this.pixelRatio, n[5] = _, fe = w.height, n[6] = fe, ye = w.width, n[13] = ye; } +<<<<<<< Updated upstream let xe; n.length > 25 && (xe = n[25]); let Se, Ce, we; n.length > 17 ? (Se = n[16], Ce = n[17], we = n[18]) : (Se = Xc, Ce = null, we = null), ge && N ? _e += M : !ge && !N && (_e -= M); +======= + let Se; + n.length > 25 && (Se = n[25]); + let F, Ce, we; + n.length > 17 ? (F = n[16], Ce = n[17], we = n[18]) : (F = vc, Ce = null, we = null), ve && A ? ye += te : !ve && !A && (ye -= te); +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes let Te = 0; for (; f < p; f += 2) { if (xe && xe[Te++] < ye / this.pixelRatio) continue; @@ -9756,8 +17422,16 @@ var Ed = class { }; continue; } +<<<<<<< Updated upstream let a = be[n]; e = a.args, t = a.declutterMode, delete be[n], i = xd(e); +======= + let a = P[n]; + e = a.args, t = a.declutterMode, delete P[n], i = Gd(e); +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes } let a, o; if (e && (t !== "declutter" || !s.collides(i)) && (a = !0), (y !== "declutter" || !s.collides(n.declutterBox)) && (o = !0), t === "declutter" && y === "declutter") { @@ -9769,12 +17443,14 @@ var Ed = class { } ++u; break; - case X.DRAW_CHARS: + case Y.DRAW_CHARS: let Ee = n[1], De = n[2], Oe = n[3], ke = n[4]; O = n[5]; let Ae = n[6], je = n[7], Me = n[8]; D = n[9]; let Ne = n[10]; +<<<<<<< Updated upstream +<<<<<<< Updated upstream T = n[11], Array.isArray(T) && (T = T.reduce(Td, "")), E = n[12]; let Pe = [n[13], n[13]]; y = n[14] || "declutter"; @@ -9789,6 +17465,24 @@ var Ed = class { l = i[r], o = l[4], c = this.createLabel(o, E, "", D), g = l[2] + (Re[0] < 0 ? -Ne : Ne) - Ie, _ = Oe * c.height + (.5 - Oe) * 2 * Ne * Re[1] / Re[0] - Me; let a = this.calculateImageOrLabelDimensions_(c.width, c.height, l[0], l[1], c.width, c.height, g, _, 0, 0, l[3], Pe, !1, Xc, !1, F); if (s && y === "declutter" && s.collides(a.declutterBox)) break drawChars; +======= +======= +>>>>>>> Stashed changes + w = n[11], Array.isArray(w) && (w = w.reduce(Yd, "")), T = n[12]; + let Pe = [n[13], n[13]]; + v = n[14] || "declutter"; + let Fe = n[15], Ie = n[16], Le = this.textStates[T], Re = Le.font, ze = [Le.scale[0] * je, Le.scale[1] * je], Be; + Re in this.widths_ ? Be = this.widths_[Re] : (Be = {}, this.widths_[Re] = Be); + let Ve = Nd(l, Ee, De, 2), He = Math.abs(ze[0]) * kc(Re, w, Be); + if (ke || He <= Ve) { + let n = this.textStates[T].textAlign, r = (Ve - He) * qd(w, n), i = zd(l, Ee, De, 2, w, r, Ae, Math.abs(ze[0]), kc, Re, Be, A ? 0 : this.viewRotation_, Fe); + drawChars: if (i) { + let n = [], r, a, o, c, l; + if (E) for (r = 0, a = i.length; r < a; ++r) { + l = i[r], o = l[4], c = this.createLabel(o, T, "", E), h = l[2] + (ze[0] < 0 ? -Ne : Ne) - Ie, g = Oe * c.height + (.5 - Oe) * 2 * Ne * ze[1] / ze[0] - Me; + let a = this.calculateImageOrLabelDimensions_(c.width, c.height, l[0], l[1], c.width, c.height, h, g, 0, 0, l[3], Pe, !1, vc, !1, M); + if (s && v === "declutter" && s.collides(a.declutterBox)) break drawChars; +>>>>>>> Stashed changes n.push([ e, t, @@ -9799,10 +17493,17 @@ var Ed = class { null ]); } +<<<<<<< Updated upstream if (O) for (r = 0, a = i.length; r < a; ++r) { l = i[r], o = l[4], c = this.createLabel(o, E, O, ""), g = l[2] - Ie, _ = Oe * c.height - Me; let a = this.calculateImageOrLabelDimensions_(c.width, c.height, l[0], l[1], c.width, c.height, g, _, 0, 0, l[3], Pe, !1, Xc, !1, F); if (s && y === "declutter" && s.collides(a.declutterBox)) break drawChars; +======= + if (ee) for (r = 0, a = i.length; r < a; ++r) { + l = i[r], o = l[4], c = this.createLabel(o, T, ee, ""), h = l[2] - Ie, g = Oe * c.height - Me; + let a = this.calculateImageOrLabelDimensions_(c.width, c.height, l[0], l[1], c.width, c.height, h, g, 0, 0, l[3], Pe, !1, vc, !1, M); + if (s && v === "declutter" && s.collides(a.declutterBox)) break drawChars; +>>>>>>> Stashed changes n.push([ e, t, @@ -9813,13 +17514,21 @@ var Ed = class { null ]); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream s && y !== "none" && s.load(n.map(xd)); +======= + s && v !== "none" && s.load(n.map(Gd)); +>>>>>>> Stashed changes +======= + s && v !== "none" && s.load(n.map(Gd)); +>>>>>>> Stashed changes for (let e = 0, t = n.length; e < t; ++e) this.replayImageOrLabel_.apply(this, n[e]); } } ++u; break; - case X.END_GEOMETRY: + case Y.END_GEOMETRY: if (a !== void 0) { F = n[1]; let e = a(F, re, y); @@ -9827,6 +17536,8 @@ var Ed = class { } ++u; break; +<<<<<<< Updated upstream +<<<<<<< Updated upstream case X.FILL: P ? k++ : this.fill_(e), ++u; break; @@ -9849,6 +17560,35 @@ var Ed = class { break; case X.STROKE: P ? A++ : e.stroke(), ++u; +======= + case Y.FILL: + j ? D++ : this.fill_(e), ++u; + break; +======= + case Y.FILL: + j ? D++ : this.fill_(e), ++u; + break; +>>>>>>> Stashed changes + case Y.MOVE_TO_LINE_TO: + f = n[1], p = n[2], _ = n[3]; + let Ue, We, Ge; + if (_) { + let e = (n[4] ?? !1) || Math.abs(l[f] - l[p - 2]) < 1e-6 && Math.abs(l[f + 1] - l[p - 1]) < 1e-6; + Pd(l, f, p, 2, _, e, m), Id(m, 2, e), Ue = m, We = 0, Ge = Ue.length; + } else Ue = l, We = f, Ge = p; + N = Ue[We], re = Ue[We + 1], e.moveTo(N, re), y = N + .5 | 0, b = re + .5 | 0; + for (let t = We + 2; t < Ge; t += 2) N = Ue[t], re = Ue[t + 1], x = N + .5 | 0, S = re + .5 | 0, (t == Ge - 2 || x !== y || S !== b) && (e.lineTo(N, re), y = x, b = S); + ++u; + break; + case Y.SET_FILL_STYLE: + this.alignAndScaleFill_ = n[2], D ? (this.fill_(e), D = 0, O &&= (e.stroke(), 0)) : O && n[1] && (e.stroke(), O = 0), e.fillStyle = n[1], ++u; + break; + case Y.SET_STROKE_STYLE: + D && n[1] && (this.fill_(e), D = 0), O &&= (e.stroke(), 0), this.setStrokeStyle_(e, n), ++u; + break; + case Y.STROKE: + j ? O++ : e.stroke(), ++u; +>>>>>>> Stashed changes break; default: ++u; } @@ -9861,20 +17601,40 @@ var Ed = class { executeHitDetection(e, t, n, r, i) { return this.viewRotation_ = n, this.execute_(e, [e.canvas.width, e.canvas.height], t, this.hitDetectionInstructions, !0, r, i); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, Dd = [ +======= +}, Zd = [ +>>>>>>> Stashed changes +======= +}, Zd = [ +>>>>>>> Stashed changes "Polygon", "Circle", "LineString", "Image", "Text", "Default" +<<<<<<< Updated upstream +<<<<<<< Updated upstream ], Od = ["Image", "Text"], kd = Dd.filter((e) => !Od.includes(e)), Ad = !1, jd = !1; function Md() { +======= +], Qd = ["Image", "Text"], $d = Zd.filter((e) => !Qd.includes(e)), ef = !1, tf = !1; +function nf() { +>>>>>>> Stashed changes +======= +], Qd = ["Image", "Text"], $d = Zd.filter((e) => !Qd.includes(e)), ef = !1, tf = !1; +function nf() { +>>>>>>> Stashed changes let e = 0, t = (t) => { let n = ge(1, 1, null, { willReadFrequently: t }), r = 0, i = performance.now(); for (; performance.now() - i < 50; ++r) n.fillStyle = `rgba(255,0,${r % 256},1)`, n.fillRect(0, 0, 1, 1), n.getImageData(0, 0, 1, 1); return e = r > e ? r : e, r; }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream Ad = { [t(!0)]: !0, [t(!1)]: !1, @@ -9882,8 +17642,26 @@ function Md() { }[e], jd = !0; } var Nd = class { +======= + ef = { + [t(!0)]: !0, + [t(!1)]: !1, + [t(void 0)]: void 0 + }[e], tf = !0; +} +var rf = class { +>>>>>>> Stashed changes +======= + ef = { + [t(!0)]: !0, + [t(!1)]: !1, + [t(void 0)]: void 0 + }[e], tf = !0; +} +var rf = class { +>>>>>>> Stashed changes constructor(e, t, n, r, i, a, o) { - this.maxExtent_ = e, this.overlaps_ = r, this.pixelRatio_ = n, this.resolution_ = t, this.renderBuffer_ = a, this.executorsByZIndex_ = {}, this.hitDetectionContext_ = null, this.hitDetectionTransform_ = Kr(), this.renderedContext_ = null, this.deferredZIndexContexts_ = {}, this.createExecutors_(i, o); + this.maxExtent_ = e, this.overlaps_ = r, this.pixelRatio_ = n, this.resolution_ = t, this.renderBuffer_ = a, this.executorsByZIndex_ = {}, this.hitDetectionContext_ = null, this.hitDetectionTransform_ = qr(), this.renderedContext_ = null, this.deferredZIndexContexts_ = {}, this.createExecutors_(i, o); } clip(e, t) { let n = this.getClipCoords(t); @@ -9896,7 +17674,15 @@ var Nd = class { let i = e[n]; for (let e in i) { let n = i[e]; +<<<<<<< Updated upstream +<<<<<<< Updated upstream r[e] = new Ed(this.resolution_, this.pixelRatio_, this.overlaps_, n, t); +======= + r[e] = new Xd(this.resolution_, this.pixelRatio_, this.overlaps_, n, t); +>>>>>>> Stashed changes +======= + r[e] = new Xd(this.resolution_, this.pixelRatio_, this.overlaps_, n, t); +>>>>>>> Stashed changes } } } @@ -9908,6 +17694,8 @@ var Nd = class { return !1; } forEachFeatureAtCoordinate(e, t, n, r, i, a) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream jd === !1 && Md(), r = Math.round(r); let o = r * 2 + 1, s = $r(this.hitDetectionTransform_, r + .5, r + .5, 1 / t, -1 / t, -n, -e[0], -e[1]), c = !this.hitDetectionContext_; c && (this.hitDetectionContext_ = ge(o, o, null, { willReadFrequently: Ad })); @@ -9917,6 +17705,19 @@ var Nd = class { this.renderBuffer_ !== void 0 && (d = at(), ft(d, e), Qe(d, t * (this.renderBuffer_ + r), d)); let f = Fd(r), p; function m(e, t, n) { +======= +======= +>>>>>>> Stashed changes + tf === !1 && nf(), r = Math.round(r); + let o = r * 2 + 1, s = ei(this.hitDetectionTransform_, r + .5, r + .5, 1 / t, -1 / t, -n, -e[0], -e[1]), c = !this.hitDetectionContext_; + c && (this.hitDetectionContext_ = y(o, o, null, { willReadFrequently: ef })); + let l = this.hitDetectionContext_; + l.canvas.width !== o || l.canvas.height !== o ? (l.canvas.width = o, l.canvas.height = o) : c || l.clearRect(0, 0, o, o); + let u; + this.renderBuffer_ !== void 0 && (u = We(), Ze(u, e), Le(u, t * (this.renderBuffer_ + r), u)); + let d = of(r), f; + function p(e, t, n) { +>>>>>>> Stashed changes let s = l.getImageData(0, 0, o, o).data; for (let c = 0, u = f.length; c < u; c++) if (s[f[c]] > 0) { if (!a || n === "none" || p !== "Image" && p !== "Text" || a.includes(e)) { @@ -9927,12 +17728,24 @@ var Nd = class { break; } } +<<<<<<< Updated upstream let h = Object.keys(this.executorsByZIndex_).map(Number); h.sort(u); let g, _, v, y, b; for (g = h.length - 1; g >= 0; --g) { let e = h[g].toString(); for (v = this.executorsByZIndex_[e], _ = Dd.length - 1; _ >= 0; --_) if (p = Dd[_], y = v[p], y !== void 0 && (b = y.executeHitDetection(l, s, n, m, d), b)) return b; +======= + let m = Object.keys(this.executorsByZIndex_).map(Number); + m.sort(oe); + let h, g, _, v, b; + for (h = m.length - 1; h >= 0; --h) { + let e = m[h].toString(); + for (_ = this.executorsByZIndex_[e], g = Zd.length - 1; g >= 0; --g) if (f = Zd[g], v = _[f], v !== void 0 && (b = v.executeHitDetection(l, s, n, p, u), b)) return b; +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes } } getClipCoords(e) { @@ -9948,15 +17761,33 @@ var Nd = class { i, r ]; +<<<<<<< Updated upstream +<<<<<<< Updated upstream return sa(o, 0, 8, 2, e, o), o; +======= + return si(o, 0, 8, 2, e, o), o; +>>>>>>> Stashed changes +======= + return si(o, 0, 8, 2, e, o), o; +>>>>>>> Stashed changes } isEmpty() { return r(this.executorsByZIndex_); } execute(e, t, n, r, i, a, o) { let s = Object.keys(this.executorsByZIndex_).map(Number); +<<<<<<< Updated upstream +<<<<<<< Updated upstream s.sort(o ? d : u), a ||= Dd; let c = Dd.length; +======= + s.sort(o ? se : oe), a ||= Zd; + let c = Zd.length; +>>>>>>> Stashed changes +======= + s.sort(o ? se : oe), a ||= Zd; + let c = Zd.length; +>>>>>>> Stashed changes for (let l = 0, u = s.length; l < u; ++l) { let u = s[l].toString(), d = this.executorsByZIndex_[u]; for (let u = 0, f = a.length; u < f; ++u) { @@ -9965,7 +17796,15 @@ var Nd = class { let a = o === null ? void 0 : p.getZIndexContext(), u = a ? a.getContext() : e, d = this.maxExtent_ && f !== "Image" && f !== "Text"; if (d && (u.save(), this.clip(u, n)), !a || f === "Text" || f === "Image" ? p.execute(u, t, n, r, i, o) : a.pushFunction((e) => p.execute(e, t, n, r, i, o)), d && u.restore(), a) { a.offset(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream let e = s[l] * c + Dd.indexOf(f); +======= + let e = s[l] * c + Zd.indexOf(f); +>>>>>>> Stashed changes +======= + let e = s[l] * c + Zd.indexOf(f); +>>>>>>> Stashed changes this.deferredZIndexContexts_[e] || (this.deferredZIndexContexts_[e] = []), this.deferredZIndexContexts_[e].push(a); } } @@ -9985,9 +17824,21 @@ var Nd = class { e.draw(this.renderedContext_), e.clear(); }), e[t[n]].length = 0; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, Pd = {}; function Fd(e) { if (Pd[e] !== void 0) return Pd[e]; +======= +}, af = {}; +function of(e) { + if (af[e] !== void 0) return af[e]; +>>>>>>> Stashed changes +======= +}, af = {}; +function of(e) { + if (af[e] !== void 0) return af[e]; +>>>>>>> Stashed changes let t = e * 2 + 1, n = e * e, r = Array(n + 1); for (let i = 0; i <= e; ++i) for (let a = 0; a <= e; ++a) { let o = i * i + a * a; @@ -9997,6 +17848,8 @@ function Fd(e) { } let i = []; for (let e = 0, t = r.length; e < t; ++e) r[e] && i.push(...r[e]); +<<<<<<< Updated upstream +<<<<<<< Updated upstream return Pd[e] = i, i; } //#endregion @@ -10008,6 +17861,32 @@ var Id = class extends Gu { drawImages_(e, t, n, r) { if (!this.image_) return; let i = sa(e, t, n, r, this.transform_, this.pixelCoordinates_), a = this.context_, o = this.tmpLocalTransform_, s = a.globalAlpha; +======= + return af[e] = i, i; +} +//#endregion +//#region node_modules/ol/render/canvas/Immediate.js +var sf = class extends hd { + constructor(e, t, n, r, i, a, o) { + super(), this.context_ = e, this.pixelRatio_ = t, this.extent_ = n, this.transform_ = r, this.transformRotation_ = r ? At(Math.atan2(r[1], r[0]), 10) : 0, this.viewRotation_ = i, this.squaredTolerance_ = a, this.userTransform_ = o, this.contextFillState_ = null, this.contextStrokeState_ = null, this.contextTextState_ = null, this.fillState_ = null, this.strokeState_ = null, this.image_ = null, this.imageAnchorX_ = 0, this.imageAnchorY_ = 0, this.imageHeight_ = 0, this.imageOpacity_ = 0, this.imageOriginX_ = 0, this.imageOriginY_ = 0, this.imageRotateWithView_ = !1, this.imageRotation_ = 0, this.imageScale_ = [0, 0], this.imageWidth_ = 0, this.text_ = "", this.textOffsetX_ = 0, this.textOffsetY_ = 0, this.textRotateWithView_ = !1, this.textRotation_ = 0, this.textScale_ = [0, 0], this.textFillState_ = null, this.textStrokeState_ = null, this.textState_ = null, this.pixelCoordinates_ = [], this.tmpLocalTransform_ = qr(); + } + drawImages_(e, t, n, r) { + if (!this.image_) return; + let i = si(e, t, n, r, this.transform_, this.pixelCoordinates_), a = this.context_, o = this.tmpLocalTransform_, s = a.globalAlpha; +>>>>>>> Stashed changes +======= + return af[e] = i, i; +} +//#endregion +//#region node_modules/ol/render/canvas/Immediate.js +var sf = class extends hd { + constructor(e, t, n, r, i, a, o) { + super(), this.context_ = e, this.pixelRatio_ = t, this.extent_ = n, this.transform_ = r, this.transformRotation_ = r ? At(Math.atan2(r[1], r[0]), 10) : 0, this.viewRotation_ = i, this.squaredTolerance_ = a, this.userTransform_ = o, this.contextFillState_ = null, this.contextStrokeState_ = null, this.contextTextState_ = null, this.fillState_ = null, this.strokeState_ = null, this.image_ = null, this.imageAnchorX_ = 0, this.imageAnchorY_ = 0, this.imageHeight_ = 0, this.imageOpacity_ = 0, this.imageOriginX_ = 0, this.imageOriginY_ = 0, this.imageRotateWithView_ = !1, this.imageRotation_ = 0, this.imageScale_ = [0, 0], this.imageWidth_ = 0, this.text_ = "", this.textOffsetX_ = 0, this.textOffsetY_ = 0, this.textRotateWithView_ = !1, this.textRotation_ = 0, this.textScale_ = [0, 0], this.textFillState_ = null, this.textStrokeState_ = null, this.textState_ = null, this.pixelCoordinates_ = [], this.tmpLocalTransform_ = qr(); + } + drawImages_(e, t, n, r) { + if (!this.image_) return; + let i = si(e, t, n, r, this.transform_, this.pixelCoordinates_), a = this.context_, o = this.tmpLocalTransform_, s = a.globalAlpha; +>>>>>>> Stashed changes this.imageOpacity_ != 1 && (a.globalAlpha = s * this.imageOpacity_); let c = this.imageRotation_; this.transformRotation_ === 0 && (c -= this.viewRotation_), this.imageRotateWithView_ && (c += this.viewRotation_); @@ -10015,7 +17894,7 @@ var Id = class extends Gu { let t = i[e] - this.imageAnchorX_, n = i[e + 1] - this.imageAnchorY_; if (c !== 0 || this.imageScale_[0] != 1 || this.imageScale_[1] != 1) { let e = t + this.imageAnchorX_, r = n + this.imageAnchorY_; - $r(o, e, r, 1, 1, c, -e, -r), a.save(), a.transform.apply(a, o), a.translate(e, r), a.scale(this.imageScale_[0], this.imageScale_[1]), a.drawImage(this.image_, this.imageOriginX_, this.imageOriginY_, this.imageWidth_, this.imageHeight_, -this.imageAnchorX_, -this.imageAnchorY_, this.imageWidth_, this.imageHeight_), a.restore(); + ei(o, e, r, 1, 1, c, -e, -r), a.save(), a.transform.apply(a, o), a.translate(e, r), a.scale(this.imageScale_[0], this.imageScale_[1]), a.drawImage(this.image_, this.imageOriginX_, this.imageOriginY_, this.imageWidth_, this.imageHeight_, -this.imageAnchorX_, -this.imageAnchorY_, this.imageWidth_, this.imageHeight_), a.restore(); } else a.drawImage(this.image_, this.imageOriginX_, this.imageOriginY_, this.imageWidth_, this.imageHeight_, t, n, this.imageWidth_, this.imageHeight_); } this.imageOpacity_ != 1 && (a.globalAlpha = s); @@ -10023,17 +17902,39 @@ var Id = class extends Gu { drawText_(e, t, n, r) { if (!this.textState_ || this.text_ === "") return; this.textFillState_ && this.setContextFillState_(this.textFillState_), this.textStrokeState_ && this.setContextStrokeState_(this.textStrokeState_), this.setContextTextState_(this.textState_); +<<<<<<< Updated upstream +<<<<<<< Updated upstream let i = sa(e, t, n, r, this.transform_, this.pixelCoordinates_), a = this.context_, o = this.textRotation_; +======= + let i = si(e, t, n, r, this.transform_, this.pixelCoordinates_), a = this.context_, o = this.textRotation_; +>>>>>>> Stashed changes +======= + let i = si(e, t, n, r, this.transform_, this.pixelCoordinates_), a = this.context_, o = this.textRotation_; +>>>>>>> Stashed changes for (this.transformRotation_ === 0 && (o -= this.viewRotation_), this.textRotateWithView_ && (o += this.viewRotation_); t < n; t += r) { let e = i[t] + this.textOffsetX_, n = i[t + 1] + this.textOffsetY_; o !== 0 || this.textScale_[0] != 1 || this.textScale_[1] != 1 ? (a.save(), a.translate(e - this.textOffsetX_, n - this.textOffsetY_), a.rotate(o), a.translate(this.textOffsetX_, this.textOffsetY_), a.scale(this.textScale_[0], this.textScale_[1]), this.textStrokeState_ && a.strokeText(this.text_, 0, 0), this.textFillState_ && a.fillText(this.text_, 0, 0), a.restore()) : (this.textStrokeState_ && a.strokeText(this.text_, e, n), this.textFillState_ && a.fillText(this.text_, e, n)); } } moveToLineTo_(e, t, n, r, i, a) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let o = this.context_, s = sa(e, t, n, r, this.transform_, this.pixelCoordinates_); if (Math.abs(a) > 0) { let e = s.length, t = i || Math.abs(s[0] - s[e - 2]) < 1e-6 && Math.abs(s[1] - s[e - 1]) < 1e-6; s = ud(s, 0, e, 2, a, t, s), fd(s, 2, t); +======= + let o = this.context_, s = si(e, t, n, r, this.transform_, this.pixelCoordinates_); + if (Math.abs(a) > 0) { + let e = s.length, t = i || Math.abs(s[0] - s[e - 2]) < 1e-6 && Math.abs(s[1] - s[e - 1]) < 1e-6; + s = Pd(s, 0, e, 2, a, t, s), Id(s, 2, t); +>>>>>>> Stashed changes +======= + let o = this.context_, s = si(e, t, n, r, this.transform_, this.pixelCoordinates_); + if (Math.abs(a) > 0) { + let e = s.length, t = i || Math.abs(s[0] - s[e - 2]) < 1e-6 && Math.abs(s[1] - s[e - 1]) < 1e-6; + s = Pd(s, 0, e, 2, a, t, s), Id(s, 2, t); +>>>>>>> Stashed changes } o.moveTo(s[0], s[1]); let c = s.length; @@ -10049,7 +17950,15 @@ var Id = class extends Gu { if (this.squaredTolerance_ && (e = e.simplifyTransformed(this.squaredTolerance_, this.userTransform_)), Ot(this.extent_, e.getExtent())) { if (this.fillState_ || this.strokeState_) { this.fillState_ && this.setContextFillState_(this.fillState_), this.strokeState_ && this.setContextStrokeState_(this.strokeState_); +<<<<<<< Updated upstream +<<<<<<< Updated upstream let t = _a(e, this.transform_, this.pixelCoordinates_), n = t[2] - t[0], r = t[3] - t[1], i = Math.sqrt(n * n + r * r), a = this.context_; +======= + let t = _i(e, this.transform_, this.pixelCoordinates_), n = t[2] - t[0], r = t[3] - t[1], i = Math.sqrt(n * n + r * r), a = this.context_; +>>>>>>> Stashed changes +======= + let t = _i(e, this.transform_, this.pixelCoordinates_), n = t[2] - t[0], r = t[3] - t[1], i = Math.sqrt(n * n + r * r), a = this.context_; +>>>>>>> Stashed changes a.beginPath(), a.arc(t[0], t[1], i, 0, 2 * Math.PI), this.fillState_ && a.fill(), this.strokeState_ && a.stroke(); } this.text_ !== "" && this.drawText_(e.getCenter(), 0, 2, 2); @@ -10183,7 +18092,15 @@ var Id = class extends Gu { }); } setContextTextState_(e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let t = this.context_, n = this.contextTextState_, r = e.textAlign ? e.textAlign : Jc; +======= + let t = this.context_, n = this.contextTextState_, r = e.textAlign ? e.textAlign : gc; +>>>>>>> Stashed changes +======= + let t = this.context_, n = this.contextTextState_, r = e.textAlign ? e.textAlign : gc; +>>>>>>> Stashed changes n ? (n.font != e.font && (n.font = e.font, t.font = e.font), n.textAlign != r && (n.textAlign = r, t.textAlign = r), n.textBaseline != e.textBaseline && (n.textBaseline = e.textBaseline, t.textBaseline = e.textBaseline)) : (t.font = e.font, t.textAlign = r, t.textBaseline = e.textBaseline, this.contextTextState_ = { font: e.font, textAlign: r, @@ -10194,6 +18111,8 @@ var Id = class extends Gu { if (!e) this.fillState_ = null; else { let t = e.getColor(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.fillState_ = { fillStyle: Bc(t || Uc) }; } if (!t) this.strokeState_ = null; @@ -10207,6 +18126,36 @@ var Id = class extends Gu { lineWidth: (o === void 0 ? 1 : o) * this.pixelRatio_, miterLimit: s === void 0 ? 10 : s, strokeStyle: Bc(e || qc), +======= + this.fillState_ = { fillStyle: cc(t || dc) }; + } + if (!t) this.strokeState_ = null; + else { + let e = t.getColor(), n = t.getLineCap(), r = t.getLineDash(), i = t.getLineDashOffset(), a = t.getLineJoin(), o = t.getWidth(), s = t.getMiterLimit(), c = r || pc, l = t.getOffset(); + this.strokeState_ = { + lineCap: n === void 0 ? fc : n, + lineDash: this.pixelRatio_ === 1 ? c : c.map((e) => e * this.pixelRatio_), + lineDashOffset: (i || 0) * this.pixelRatio_, + lineJoin: a === void 0 ? mc : a, + lineWidth: (o === void 0 ? 1 : o) * this.pixelRatio_, + miterLimit: s === void 0 ? 10 : s, + strokeStyle: cc(e || hc), +>>>>>>> Stashed changes +======= + this.fillState_ = { fillStyle: cc(t || dc) }; + } + if (!t) this.strokeState_ = null; + else { + let e = t.getColor(), n = t.getLineCap(), r = t.getLineDash(), i = t.getLineDashOffset(), a = t.getLineJoin(), o = t.getWidth(), s = t.getMiterLimit(), c = r || pc, l = t.getOffset(); + this.strokeState_ = { + lineCap: n === void 0 ? fc : n, + lineDash: this.pixelRatio_ === 1 ? c : c.map((e) => e * this.pixelRatio_), + lineDashOffset: (i || 0) * this.pixelRatio_, + lineJoin: a === void 0 ? mc : a, + lineWidth: (o === void 0 ? 1 : o) * this.pixelRatio_, + miterLimit: s === void 0 ? 10 : s, + strokeStyle: cc(e || hc), +>>>>>>> Stashed changes strokeOffset: (l ?? 0) * this.pixelRatio_ }; } @@ -10229,13 +18178,23 @@ var Id = class extends Gu { if (!t) this.textFillState_ = null; else { let e = t.getColor(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.textFillState_ = { fillStyle: Bc(e || Uc) }; +======= + this.textFillState_ = { fillStyle: cc(e || dc) }; +>>>>>>> Stashed changes +======= + this.textFillState_ = { fillStyle: cc(e || dc) }; +>>>>>>> Stashed changes } let n = e.getStroke(); if (!n) this.textStrokeState_ = null; else { let e = n.getColor(), t = n.getLineCap(), r = n.getLineDash(), i = n.getLineDashOffset(), a = n.getLineJoin(), o = n.getWidth(), s = n.getMiterLimit(); this.textStrokeState_ = { +<<<<<<< Updated upstream +<<<<<<< Updated upstream lineCap: t === void 0 ? Wc : t, lineDash: r || Gc, lineDashOffset: i || 0, @@ -10243,10 +18202,30 @@ var Id = class extends Gu { lineWidth: o === void 0 ? 1 : o, miterLimit: s === void 0 ? 10 : s, strokeStyle: Bc(e || qc) +======= + lineCap: t === void 0 ? fc : t, + lineDash: r || pc, + lineDashOffset: i || 0, + lineJoin: a === void 0 ? mc : a, + lineWidth: o === void 0 ? 1 : o, + miterLimit: s === void 0 ? 10 : s, + strokeStyle: cc(e || hc) +>>>>>>> Stashed changes +======= + lineCap: t === void 0 ? fc : t, + lineDash: r || pc, + lineDashOffset: i || 0, + lineJoin: a === void 0 ? mc : a, + lineWidth: o === void 0 ? 1 : o, + miterLimit: s === void 0 ? 10 : s, + strokeStyle: cc(e || hc) +>>>>>>> Stashed changes }; } let r = e.getFont(), i = e.getOffsetX(), a = e.getOffsetY(), o = e.getRotateWithView(), s = e.getRotation(), c = e.getScaleArray(), l = e.getText(), u = e.getTextAlign(), d = e.getTextBaseline(); this.textState_ = { +<<<<<<< Updated upstream +<<<<<<< Updated upstream font: r === void 0 ? Hc : r, textAlign: u === void 0 ? Jc : u, textBaseline: d === void 0 ? Yc : d @@ -10259,6 +18238,28 @@ function Rd(e, t, n, r, i, a, o, s, c) { d.imageSmoothingEnabled = !1; let f = d.canvas, p = new Id(d, Ld, i, null, o, s, c ? Cr(kr(), c) : null), m = n.length, h = Math.floor(16777215 / m), g = {}; for (let e = 1; e <= m; ++e) { +======= + font: r === void 0 ? uc : r, + textAlign: u === void 0 ? gc : u, + textBaseline: d === void 0 ? _c : d + }, this.text_ = l === void 0 ? "" : Array.isArray(l) ? l.reduce((e, t, n) => e += n % 2 ? " " : t, "") : l, this.textOffsetX_ = i === void 0 ? 0 : this.pixelRatio_ * i, this.textOffsetY_ = a === void 0 ? 0 : this.pixelRatio_ * a, this.textRotateWithView_ = o !== void 0 && o, this.textRotation_ = s === void 0 ? 0 : s, this.textScale_ = [this.pixelRatio_ * c[0], this.pixelRatio_ * c[1]]; + } + } +======= + font: r === void 0 ? uc : r, + textAlign: u === void 0 ? gc : u, + textBaseline: d === void 0 ? _c : d + }, this.text_ = l === void 0 ? "" : Array.isArray(l) ? l.reduce((e, t, n) => e += n % 2 ? " " : t, "") : l, this.textOffsetX_ = i === void 0 ? 0 : this.pixelRatio_ * i, this.textOffsetY_ = a === void 0 ? 0 : this.pixelRatio_ * a, this.textRotateWithView_ = o !== void 0 && o, this.textRotation_ = s === void 0 ? 0 : s, this.textScale_ = [this.pixelRatio_ * c[0], this.pixelRatio_ * c[1]]; + } + } +>>>>>>> Stashed changes +}, cf = .5; +function lf(e, t, n, r, i, a, o, s, c) { + let l = c ? vr(i, c) : i, u = y(e[0] * cf, e[1] * cf); + u.imageSmoothingEnabled = !1; + let d = u.canvas, f = new sf(u, cf, i, null, o, s, c ? lr(hr(), c) : null), p = n.length, m = Math.floor(16777215 / p), h = {}; + for (let e = 1; e <= p; ++e) { +>>>>>>> Stashed changes let t = n[e - 1], i = t.getStyleFunction() || r; if (!i) continue; let o = i(t, a); @@ -10276,8 +18277,16 @@ function Rd(e, t, n, r, i, a, o, s, c) { if (u) { let e = u.getImageSize(); if (!e) continue; +<<<<<<< Updated upstream let t = ge(e[0], e[1], void 0, { alpha: !1 }), n = t.canvas; t.fillStyle = s, t.fillRect(0, 0, n.width, n.height), i.setImage(new gl({ +======= + let t = y(e[0], e[1], void 0, { alpha: !1 }), n = t.canvas; + t.fillStyle = s, t.fillRect(0, 0, n.width, n.height), i.setImage(new Rc({ +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes img: n, anchor: u.getAnchor(), anchorXUnits: "pixels", @@ -10315,16 +18324,32 @@ function Rd(e, t, n, r, i, a, o, s, c) { } return d.getImageData(0, 0, f.width, f.height); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function zd(e, t, n) { let r = []; if (n) { let i = Math.floor(Math.round(e[0]) * Ld), a = Math.floor(Math.round(e[1]) * Ld), o = (Bt(i, 0, n.width - 1) + Bt(a, 0, n.height - 1) * n.width) * 4, s = n.data[o], c = n.data[o + 1], l = n.data[o + 2] + 256 * (c + 256 * s), u = Math.floor(16777215 / t.length); +======= +function uf(e, t, n) { + let r = []; + if (n) { + let i = Math.floor(Math.round(e[0]) * cf), a = Math.floor(Math.round(e[1]) * cf), o = (St(i, 0, n.width - 1) + St(a, 0, n.height - 1) * n.width) * 4, s = n.data[o], c = n.data[o + 1], l = n.data[o + 2] + 256 * (c + 256 * s), u = Math.floor(16777215 / t.length); +>>>>>>> Stashed changes +======= +function uf(e, t, n) { + let r = []; + if (n) { + let i = Math.floor(Math.round(e[0]) * cf), a = Math.floor(Math.round(e[1]) * cf), o = (St(i, 0, n.width - 1) + St(a, 0, n.height - 1) * n.width) * 4, s = n.data[o], c = n.data[o + 1], l = n.data[o + 2] + 256 * (c + 256 * s), u = Math.floor(16777215 / t.length); +>>>>>>> Stashed changes l && l % u === 0 && r.push(t[l / u - 1]); } return r; } //#endregion //#region node_modules/ol/renderer/vector.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var Bd = .5, Vd = { Point: $d, LineString: Xd, @@ -10346,6 +18371,52 @@ function Wd(e, t) { return Bd * e / t; } function Gd(e, t, n, r, i) { +======= +var df = .5, ff = { + Point: wf, + LineString: xf, + Polygon: Ef, + MultiPoint: Tf, + MultiLineString: Sf, + MultiPolygon: Cf, + GeometryCollection: bf, + Circle: gf +}; +function pf(e, t) { + return parseInt(F(e), 10) - parseInt(F(t), 10); +} +function mf(e, t) { + let n = hf(e, t); + return n * n; +} +function hf(e, t) { + return df * e / t; +} +function gf(e, t, n, r, i) { +>>>>>>> Stashed changes +======= +var df = .5, ff = { + Point: wf, + LineString: xf, + Polygon: Ef, + MultiPoint: Tf, + MultiLineString: Sf, + MultiPolygon: Cf, + GeometryCollection: bf, + Circle: gf +}; +function pf(e, t) { + return parseInt(F(e), 10) - parseInt(F(t), 10); +} +function mf(e, t) { + let n = hf(e, t); + return n * n; +} +function hf(e, t) { + return df * e / t; +} +function gf(e, t, n, r, i) { +>>>>>>> Stashed changes let a = n.getFill(), o = n.getStroke(); if (a || o) { let s = e.getBuilder(n.getZIndex(), "Circle"); @@ -10357,15 +18428,33 @@ function Gd(e, t, n, r, i) { a.setTextStyle(s), a.drawText(t, r, i); } } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Kd(e, t, n, r, i, a, o, s) { let c = [], l = n.getImage(); if (l) { let e = !0, t = l.getImageState(); t == L.LOADED || t == L.ERROR ? e = !1 : t == L.IDLE && l.load(), e && c.push(l.ready()); +======= +function _f(e, t, n, r, i, a, o, s) { + let c = [], l = n.getImage(); + if (l) { + let e = !0, t = l.getImageState(); + t == J.LOADED || t == J.ERROR ? e = !1 : t == J.IDLE && l.load(), e && c.push(l.ready()); +>>>>>>> Stashed changes +======= +function _f(e, t, n, r, i, a, o, s) { + let c = [], l = n.getImage(); + if (l) { + let e = !0, t = l.getImageState(); + t == J.LOADED || t == J.ERROR ? e = !1 : t == J.IDLE && l.load(), e && c.push(l.ready()); +>>>>>>> Stashed changes } let u = n.getFill(); u && u.loading() && c.push(u.ready()); let d = c.length > 0; +<<<<<<< Updated upstream +<<<<<<< Updated upstream return d && Promise.all(c).then(() => i(null)), qd(e, t, n, r, a, o, s), d; } function qd(e, t, n, r, i, a, o) { @@ -10382,10 +18471,48 @@ function Jd(e, t, n, r, i) { if (t.getType() == "GeometryCollection") { let a = t.getGeometries(); for (let t = 0, o = a.length; t < o; ++t) Jd(e, a[t], n, r, i); +======= + return d && Promise.all(c).then(() => i(null)), vf(e, t, n, r, a, o, s), d; +} +function vf(e, t, n, r, i, a, o) { + let s = n.getGeometryFunction()(t); + if (!s) return; + let c = s.simplifyTransformed(r, i); + if (n.getRenderer()) yf(e, c, n, t, o); + else { + let r = ff[c.getType()]; + r(e, c, n, t, o, a); + } +} +function yf(e, t, n, r, i) { + if (t.getType() == "GeometryCollection") { + let a = t.getGeometries(); + for (let t = 0, o = a.length; t < o; ++t) yf(e, a[t], n, r, i); +>>>>>>> Stashed changes +======= + return d && Promise.all(c).then(() => i(null)), vf(e, t, n, r, a, o, s), d; +} +function vf(e, t, n, r, i, a, o) { + let s = n.getGeometryFunction()(t); + if (!s) return; + let c = s.simplifyTransformed(r, i); + if (n.getRenderer()) yf(e, c, n, t, o); + else { + let r = ff[c.getType()]; + r(e, c, n, t, o, a); + } +} +function yf(e, t, n, r, i) { + if (t.getType() == "GeometryCollection") { + let a = t.getGeometries(); + for (let t = 0, o = a.length; t < o; ++t) yf(e, a[t], n, r, i); +>>>>>>> Stashed changes return; } e.getBuilder(n.getZIndex(), "Default").drawCustom(t, r, n.getRenderer(), n.getHitDetectionRenderer(), i); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Yd(e, t, n, r, i, a) { let o = t.getGeometriesArray(), s, c; for (s = 0, c = o.length; s < c; ++s) { @@ -10394,6 +18521,26 @@ function Yd(e, t, n, r, i, a) { } } function Xd(e, t, n, r, i) { +======= +function bf(e, t, n, r, i, a) { + let o = t.getGeometriesArray(), s, c; + for (s = 0, c = o.length; s < c; ++s) { + let t = ff[o[s].getType()]; + t(e, o[s], n, r, i, a); + } +} +function xf(e, t, n, r, i) { +>>>>>>> Stashed changes +======= +function bf(e, t, n, r, i, a) { + let o = t.getGeometriesArray(), s, c; + for (s = 0, c = o.length; s < c; ++s) { + let t = ff[o[s].getType()]; + t(e, o[s], n, r, i, a); + } +} +function xf(e, t, n, r, i) { +>>>>>>> Stashed changes let a = n.getStroke(); if (a) { let o = e.getBuilder(n.getZIndex(), "LineString"); @@ -10405,7 +18552,15 @@ function Xd(e, t, n, r, i) { a.setTextStyle(o), a.drawText(t, r, i); } } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Zd(e, t, n, r, i) { +======= +function Sf(e, t, n, r, i) { +>>>>>>> Stashed changes +======= +function Sf(e, t, n, r, i) { +>>>>>>> Stashed changes let a = n.getStroke(); if (a) { let o = e.getBuilder(n.getZIndex(), "LineString"); @@ -10417,7 +18572,15 @@ function Zd(e, t, n, r, i) { a.setTextStyle(o), a.drawText(t, r, i); } } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Qd(e, t, n, r, i) { +======= +function Cf(e, t, n, r, i) { +>>>>>>> Stashed changes +======= +function Cf(e, t, n, r, i) { +>>>>>>> Stashed changes let a = n.getFill(), o = n.getStroke(); if (o || a) { let s = e.getBuilder(n.getZIndex(), "Polygon"); @@ -10429,10 +18592,24 @@ function Qd(e, t, n, r, i) { a.setTextStyle(s), a.drawText(t, r, i); } } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function $d(e, t, n, r, i, a) { let o = n.getImage(), s = n.getText(), c = s && s.getText(), l = a && o && c ? {} : void 0; if (o) { if (o.getImageState() != L.LOADED) return; +======= +function wf(e, t, n, r, i, a) { + let o = n.getImage(), s = n.getText(), c = s && s.getText(), l = a && o && c ? {} : void 0; + if (o) { + if (o.getImageState() != J.LOADED) return; +>>>>>>> Stashed changes +======= +function wf(e, t, n, r, i, a) { + let o = n.getImage(), s = n.getText(), c = s && s.getText(), l = a && o && c ? {} : void 0; + if (o) { + if (o.getImageState() != J.LOADED) return; +>>>>>>> Stashed changes let a = e.getBuilder(n.getZIndex(), "Image"); a.setImageStyle(o, l), a.drawPoint(t, r, i); } @@ -10441,10 +18618,24 @@ function $d(e, t, n, r, i, a) { a.setTextStyle(s, l), a.drawText(t, r, i); } } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function ef(e, t, n, r, i, a) { let o = n.getImage(), s = o && o.getOpacity() !== 0, c = n.getText(), l = c && c.getText(), u = a && s && l ? {} : void 0; if (s) { if (o.getImageState() != L.LOADED) return; +======= +function Tf(e, t, n, r, i, a) { + let o = n.getImage(), s = o && o.getOpacity() !== 0, c = n.getText(), l = c && c.getText(), u = a && s && l ? {} : void 0; + if (s) { + if (o.getImageState() != J.LOADED) return; +>>>>>>> Stashed changes +======= +function Tf(e, t, n, r, i, a) { + let o = n.getImage(), s = o && o.getOpacity() !== 0, c = n.getText(), l = c && c.getText(), u = a && s && l ? {} : void 0; + if (s) { + if (o.getImageState() != J.LOADED) return; +>>>>>>> Stashed changes let a = e.getBuilder(n.getZIndex(), "Image"); a.setImageStyle(o, u), a.drawMultiPoint(t, r, i); } @@ -10453,7 +18644,15 @@ function ef(e, t, n, r, i, a) { a.setTextStyle(c, u), a.drawText(t, r, i); } } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function tf(e, t, n, r, i) { +======= +function Ef(e, t, n, r, i) { +>>>>>>> Stashed changes +======= +function Ef(e, t, n, r, i) { +>>>>>>> Stashed changes let a = n.getFill(), o = n.getStroke(); if (a || o) { let s = e.getBuilder(n.getZIndex(), "Polygon"); @@ -10467,11 +18666,21 @@ function tf(e, t, n, r, i) { } //#endregion //#region node_modules/ol/renderer/canvas/VectorLayer.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var nf = class extends $i { +======= +var Df = class extends Au { +>>>>>>> Stashed changes +======= +var Df = class extends Au { +>>>>>>> Stashed changes constructor(e) { super(e), this.boundHandleStyleImageChange_ = this.handleStyleImageChange_.bind(this), this.animatingOrInteracting_, this.hitDetectionImageData_ = null, this.clipExtent_ = null, this.extendX_ = !1, this.renderedFeatures_ = null, this.renderedRevision_ = -1, this.renderedResolution_ = NaN, this.renderedExtent_ = at(), this.wrappedRenderedExtent_ = at(), this.renderedRotation_, this.renderedCenter_ = null, this.renderedProjection_ = null, this.renderedPixelRatio_ = 1, this.renderedRenderOrder_ = null, this.renderedFrameDeclutter_, this.replayGroup_ = null, this.replayGroupChanged = !0, this.clipping = !0, this.targetContext_ = null, this.opacity_ = 1; } renderWorlds(e, t, n) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let r = t.extent, i = t.viewState, a = i.center, o = i.resolution, s = i.projection, c = i.rotation, l = s.getExtent(), u = this.getLayer().getSource(), d = this.getLayer().getDeclutter(), f = t.pixelRatio, p = t.viewHints, m = !(p[V.ANIMATING] || p[V.INTERACTING]), h = this.context, g = Math.round(R(r) / o * f), _ = Math.round(Ct(r) / o * f), v = u.getWrapX() && s.canWrapX(), y = v ? R(l) : null, b = v ? Math.ceil((r[2] - l[2]) / y) + (this.extendX_ ? 2 : 1) : 1, x = v ? Math.floor((r[0] - l[0]) / y) - +!!this.extendX_ : 0; do { let r = this.getRenderTransform(a, o, 0, f, g, _, x * y); @@ -10480,11 +18689,39 @@ var nf = class extends $i { } setDrawContext_() { this.opacity_ !== 1 && (this.targetContext_ = this.context, this.context = ge(this.context.canvas.width, this.context.canvas.height, Xi)); +======= + let r = t.extent, i = t.viewState, a = i.center, o = i.resolution, s = i.projection, c = i.rotation, l = s.getExtent(), u = this.getLayer().getSource(), d = this.getLayer().getDeclutter(), f = t.pixelRatio, p = t.viewHints, m = !(p[Lr.ANIMATING] || p[Lr.INTERACTING]), h = this.context, g = Math.round(I(r) / o * f), _ = Math.round(ct(r) / o * f), v = u.getWrapX() && s.canWrapX(), y = v ? I(l) : null, b = v ? Math.ceil((r[2] - l[2]) / y) + (this.extendX_ ? 2 : 1) : 1, x = v ? Math.floor((r[0] - l[0]) / y) - +!!this.extendX_ : 0; + do { + let r = this.getRenderTransform(a, o, 0, f, g, _, x * y); + t.declutter && (r = r.slice(0)), e.execute(h, [h.canvas.width, h.canvas.height], r, c, m, n === void 0 ? Zd : n ? Qd : $d, n ? d && t.declutter[d] : void 0); + } while (++x < b); + } + setDrawContext_() { + this.opacity_ !== 1 && (this.targetContext_ = this.context, this.context = y(this.context.canvas.width, this.context.canvas.height, Du)); +>>>>>>> Stashed changes +======= + let r = t.extent, i = t.viewState, a = i.center, o = i.resolution, s = i.projection, c = i.rotation, l = s.getExtent(), u = this.getLayer().getSource(), d = this.getLayer().getDeclutter(), f = t.pixelRatio, p = t.viewHints, m = !(p[Lr.ANIMATING] || p[Lr.INTERACTING]), h = this.context, g = Math.round(I(r) / o * f), _ = Math.round(ct(r) / o * f), v = u.getWrapX() && s.canWrapX(), y = v ? I(l) : null, b = v ? Math.ceil((r[2] - l[2]) / y) + (this.extendX_ ? 2 : 1) : 1, x = v ? Math.floor((r[0] - l[0]) / y) - +!!this.extendX_ : 0; + do { + let r = this.getRenderTransform(a, o, 0, f, g, _, x * y); + t.declutter && (r = r.slice(0)), e.execute(h, [h.canvas.width, h.canvas.height], r, c, m, n === void 0 ? Zd : n ? Qd : $d, n ? d && t.declutter[d] : void 0); + } while (++x < b); + } + setDrawContext_() { + this.opacity_ !== 1 && (this.targetContext_ = this.context, this.context = y(this.context.canvas.width, this.context.canvas.height, Du)); +>>>>>>> Stashed changes } resetDrawContext_() { if (this.opacity_ !== 1 && this.targetContext_) { let e = this.targetContext_.globalAlpha; +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.targetContext_.globalAlpha = this.opacity_, this.targetContext_.drawImage(this.context.canvas, 0, 0), this.targetContext_.globalAlpha = e, ye(this.context), Xi.push(this.context.canvas), this.context = this.targetContext_, this.targetContext_ = null; +======= + this.targetContext_.globalAlpha = this.opacity_, this.targetContext_.drawImage(this.context.canvas, 0, 0), this.targetContext_.globalAlpha = e, S(this.context), Du.push(this.context.canvas), this.context = this.targetContext_, this.targetContext_ = null; +>>>>>>> Stashed changes +======= + this.targetContext_.globalAlpha = this.opacity_, this.targetContext_.drawImage(this.context.canvas, 0, 0), this.targetContext_.globalAlpha = e, S(this.context), Du.push(this.context.canvas), this.context = this.targetContext_, this.targetContext_ = null; +>>>>>>> Stashed changes } } renderDeclutter(e) { @@ -10499,7 +18736,15 @@ var nf = class extends $i { let r = e.viewState; this.prepareContainer(e, t); let i = this.context, a = this.replayGroup_, o = a && !a.isEmpty(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (!o && !(this.getLayer().hasListener(Ki.PRERENDER) || this.getLayer().hasListener(Ki.POSTRENDER))) return this.container; +======= + if (!o && !(this.getLayer().hasListener(lo.PRERENDER) || this.getLayer().hasListener(lo.POSTRENDER))) return this.container; +>>>>>>> Stashed changes +======= + if (!o && !(this.getLayer().hasListener(lo.PRERENDER) || this.getLayer().hasListener(lo.POSTRENDER))) return this.container; +>>>>>>> Stashed changes this.setDrawContext_(), this.preRender(i, e); let s = r.projection; this.clipExtent_ = null; @@ -10513,6 +18758,8 @@ var nf = class extends $i { getFeatures(e) { return new Promise((t) => { if (this.frameState && !this.hitDetectionImageData_ && !this.animatingOrInteracting_) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let e = this.frameState.size.slice(), t = this.renderedCenter_, n = this.renderedResolution_, r = this.renderedRotation_, i = this.renderedProjection_, a = this.wrappedRenderedExtent_, o = this.getLayer(), s = [], c = e[0] * Ld, l = e[1] * Ld; s.push(this.getRenderTransform(t, n, r, Ld, c, l, 0).slice()); let u = o.getSource(), d = i.getExtent(); @@ -10525,6 +18772,25 @@ var nf = class extends $i { this.hitDetectionImageData_ = Rd(e, s, this.renderedFeatures_, o.getStyleFunction(), a, n, r, Ud(n, this.renderedPixelRatio_), f ? i : null); } t(zd(e, this.renderedFeatures_, this.hitDetectionImageData_)); +======= +======= +>>>>>>> Stashed changes + let e = this.frameState.size.slice(), t = this.renderedCenter_, n = this.renderedResolution_, r = this.renderedRotation_, i = this.renderedProjection_, a = this.wrappedRenderedExtent_, o = this.getLayer(), s = [], c = e[0] * cf, l = e[1] * cf; + s.push(this.getRenderTransform(t, n, r, cf, c, l, 0).slice()); + let u = o.getSource(), d = i.getExtent(); + if (u.getWrapX() && i.canWrapX() && !Ve(d, a)) { + let e = a[0], i = I(d), o = 0, u; + for (; e < d[0];) --o, u = i * o, s.push(this.getRenderTransform(t, n, r, cf, c, l, u).slice()), e += i; + for (o = 0, e = a[2]; e > d[2];) ++o, u = i * o, s.push(this.getRenderTransform(t, n, r, cf, c, l, u).slice()), e -= i; + } + let f = hr(); + this.hitDetectionImageData_ = lf(e, s, this.renderedFeatures_, o.getStyleFunction(), a, n, r, mf(n, this.renderedPixelRatio_), f ? i : null); + } + t(uf(e, this.renderedFeatures_, this.hitDetectionImageData_)); +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes }); } forEachFeatureAtCoordinate(e, t, n, r, i) { @@ -10557,6 +18823,8 @@ var nf = class extends $i { prepareFrame(e) { let t = this.getLayer(), n = t.getSource(); if (!n) return !1; +<<<<<<< Updated upstream +<<<<<<< Updated upstream let r = e.viewHints[V.ANIMATING], i = e.viewHints[V.INTERACTING], a = t.getUpdateWhileAnimating(), o = t.getUpdateWhileInteracting(); if (this.ready && !a && r || !o && i) return this.animatingOrInteracting_ = !0, !0; this.animatingOrInteracting_ = !1; @@ -10564,6 +18832,21 @@ var nf = class extends $i { m === void 0 && (m = Hd); let g = c.center.slice(), _ = Qe(s, p * u), v = _.slice(), y = [_.slice()], b = l.getExtent(), x = n.getWrapX() && l.canWrapX(); if (this.extendX_ = !1, x) { +======= + let r = e.viewHints[Lr.ANIMATING], i = e.viewHints[Lr.INTERACTING], a = t.getUpdateWhileAnimating(), o = t.getUpdateWhileInteracting(); + if (this.ready && !a && r || !o && i) return this.animatingOrInteracting_ = !0, !0; + this.animatingOrInteracting_ = !1; + let s = e.extent, c = e.viewState, l = c.projection, u = c.resolution, d = e.pixelRatio, f = t.getRevision(), p = t.getRenderBuffer(), m = t.getRenderOrder(); +======= + let r = e.viewHints[Lr.ANIMATING], i = e.viewHints[Lr.INTERACTING], a = t.getUpdateWhileAnimating(), o = t.getUpdateWhileInteracting(); + if (this.ready && !a && r || !o && i) return this.animatingOrInteracting_ = !0, !0; + this.animatingOrInteracting_ = !1; + let s = e.extent, c = e.viewState, l = c.projection, u = c.resolution, d = e.pixelRatio, f = t.getRevision(), p = t.getRenderBuffer(), m = t.getRenderOrder(); +>>>>>>> Stashed changes + m === void 0 && (m = pf); + let h = c.center.slice(), g = Le(s, p * u), _ = g.slice(), v = [g.slice()], y = l.getExtent(), b = n.getWrapX() && l.canWrapX(); + if (this.extendX_ = !1, b) { +>>>>>>> Stashed changes let e = n.getExtent(); e && !kt(e) && (this.extendX_ = e[0] < b[0] || e[2] > b[2]); } @@ -10585,6 +18868,8 @@ var nf = class extends $i { } if (this.ready && this.renderedResolution_ == u && this.renderedPixelRatio_ === d && this.renderedRevision_ == f && this.renderedRenderOrder_ == m && this.renderedFrameDeclutter_ === !!e.declutter && nt(this.wrappedRenderedExtent_, _)) return h(this.renderedExtent_, v) || (this.hitDetectionImageData_ = null, this.renderedExtent_ = v), this.renderedCenter_ = g, this.replayGroupChanged = !1, !0; this.replayGroup_ = null; +<<<<<<< Updated upstream +<<<<<<< Updated upstream let S = new cd(Wd(u, d), _, u, d), C = kr(), w; if (C) { for (let e = 0, t = y.length; e < t; ++e) { @@ -10594,33 +18879,86 @@ var nf = class extends $i { w = Cr(C, l); } else for (let e = 0, t = y.length; e < t; ++e) n.loadFeatures(y[e], u, l); let T = Ud(u, d), E = !0, D = (e, n) => { +======= +======= +>>>>>>> Stashed changes + let x = new Md(hf(u, d), g, u, d), S = hr(), C; + if (S) { + for (let e = 0, t = v.length; e < t; ++e) { + let t = v[e], r = vr(t, l); + n.loadFeatures(r, br(u, l), S); + } + C = lr(S, l); + } else for (let e = 0, t = v.length; e < t; ++e) n.loadFeatures(v[e], u, l); + let w = mf(u, d), T = !0, E = (e, n) => { +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes let r, i = e.getStyleFunction() || t.getStyleFunction(); if (i && (r = i(e, u)), r) { let t = this.renderFeature(e, T, r, S, w, this.getLayer().getDeclutter(), n); E &&= !t; } +<<<<<<< Updated upstream }, O = Mr(_, l), k = n.getFeaturesInExtent(O); m && k.sort(m); for (let e = 0, t = k.length; e < t; ++e) D(k[e], e); this.renderedFeatures_ = k, this.ready = E; let A = S.finish(), j = new Nd(_, u, d, n.getOverlaps(), A, t.getRenderBuffer(), !!e.declutter); return this.renderedResolution_ = u, this.renderedRevision_ = f, this.renderedRenderOrder_ = m, this.renderedFrameDeclutter_ = !!e.declutter, this.renderedExtent_ = v, this.wrappedRenderedExtent_ = _, this.renderedCenter_ = g, this.renderedProjection_ = l, this.renderedPixelRatio_ = d, this.replayGroup_ = j, this.hitDetectionImageData_ = null, this.replayGroupChanged = !0, !0; +======= + }, ee = vr(g, l), D = n.getFeaturesInExtent(ee); + m && D.sort(m); + for (let e = 0, t = D.length; e < t; ++e) E(D[e], e); + this.renderedFeatures_ = D, this.ready = T; + let O = x.finish(), k = new rf(g, u, d, n.getOverlaps(), O, t.getRenderBuffer(), !!e.declutter); + return this.renderedResolution_ = u, this.renderedRevision_ = f, this.renderedRenderOrder_ = m, this.renderedFrameDeclutter_ = !!e.declutter, this.renderedExtent_ = _, this.wrappedRenderedExtent_ = g, this.renderedCenter_ = h, this.renderedProjection_ = l, this.renderedPixelRatio_ = d, this.replayGroup_ = k, this.hitDetectionImageData_ = null, this.replayGroupChanged = !0, !0; +>>>>>>> Stashed changes } renderFeature(e, t, n, r, i, a, o) { if (!n) return !1; let s = !1; +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (Array.isArray(n)) for (let c = 0, l = n.length; c < l; ++c) s = Kd(r, e, n[c], t, this.boundHandleStyleImageChange_, i, a, o) || s; else s = Kd(r, e, n, t, this.boundHandleStyleImageChange_, i, a, o); return s; } }, rf = class extends cu { +======= + if (Array.isArray(n)) for (let c = 0, l = n.length; c < l; ++c) s = _f(r, e, n[c], t, this.boundHandleStyleImageChange_, i, a, o) || s; + else s = _f(r, e, n, t, this.boundHandleStyleImageChange_, i, a, o); + return s; + } +}, Of = class extends Al { +>>>>>>> Stashed changes +======= + if (Array.isArray(n)) for (let c = 0, l = n.length; c < l; ++c) s = _f(r, e, n[c], t, this.boundHandleStyleImageChange_, i, a, o) || s; + else s = _f(r, e, n, t, this.boundHandleStyleImageChange_, i, a, o); + return s; + } +}, Of = class extends Al { +>>>>>>> Stashed changes constructor(e) { super(e); } createRenderer() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return new nf(this); } }, af = { +======= + return new Df(this); + } +}, kf = { +>>>>>>> Stashed changes +======= + return new Df(this); + } +}, kf = { +>>>>>>> Stashed changes image: [ "Polygon", "Circle", @@ -10630,7 +18968,15 @@ var nf = class extends $i { ], hybrid: ["Polygon", "LineString"], vector: [] +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, of = { +======= +}, Af = { +>>>>>>> Stashed changes +======= +}, Af = { +>>>>>>> Stashed changes hybrid: [ "Image", "Text", @@ -10644,9 +18990,17 @@ var nf = class extends $i { "Text", "Default" ] +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, sf = class extends ra { +======= +}, jf = class extends Pu { +>>>>>>> Stashed changes +======= +}, jf = class extends Pu { +>>>>>>> Stashed changes constructor(e, t) { - super(e, t), this.boundHandleStyleImageChange_ = this.handleStyleImageChange_.bind(this), this.renderedLayerRevision_, this.renderedPixelToCoordinateTransform_ = null, this.renderedRotation_, this.renderedOpacity_ = 1, this.tmpTransform_ = Kr(), this.tileClipContexts_ = null; + super(e, t), this.boundHandleStyleImageChange_ = this.handleStyleImageChange_.bind(this), this.renderedLayerRevision_, this.renderedPixelToCoordinateTransform_ = null, this.renderedRotation_, this.renderedOpacity_ = 1, this.tmpTransform_ = qr(), this.tileClipContexts_ = null; } enqueueTilesForNextExtent() { return this.getLayer().getRenderMode() !== "vector"; @@ -10657,7 +19011,15 @@ var nf = class extends $i { getTile(e, t, n, r) { let i = this.getOrCreateTile(e, t, n, r); if (!i) return null; +<<<<<<< Updated upstream +<<<<<<< Updated upstream let a = r.viewState, o = a.resolution, s = r.viewHints, c = this.getLayer().getSource(), l = c.getTileGridForProjection(a.projection), u = !(s[V.ANIMATING] || s[V.INTERACTING]), d = l.getZForResolution(o, c.zDirection) === e; +======= + let a = r.viewState, o = a.resolution, s = r.viewHints, c = this.getLayer().getSource(), l = c.getTileGridForProjection(a.projection), u = !(s[Lr.ANIMATING] || s[Lr.INTERACTING]), d = l.getZForResolution(o, c.zDirection) === e; +>>>>>>> Stashed changes +======= + let a = r.viewState, o = a.resolution, s = r.viewHints, c = this.getLayer().getSource(), l = c.getTileGridForProjection(a.projection), u = !(s[Lr.ANIMATING] || s[Lr.INTERACTING]), d = l.getZForResolution(o, c.zDirection) === e; +>>>>>>> Stashed changes return u && d ? i.wantedResolution = o : i.wantedResolution ||= l.getResolution(e), i; } prepareFrame(e) { @@ -10673,8 +19035,16 @@ var nf = class extends $i { let m = f[i]; if (m.getState() != I.LOADED) continue; let h = c.getProjection(), g = m.tileCoord, _ = u.getTileCoordExtent(g); +<<<<<<< Updated upstream n && h && !Sr(n, h) && (_ = Dr(_, h, n, 32)); let v = wt(d, _), y = Qe(v, r.getRenderBuffer() * o, this.tempExtent), b = ut(_, v) ? null : y, x = new cd(0, v, o, t), S = Ud(o, t), C = function(e, t) { +======= + n && h && !cr(n, h) && (_ = pr(_, h, n, 32)); + let v = lt(d, _), y = Le(v, r.getRenderBuffer() * o, this.tempExtent), b = Ye(_, v) ? null : y, x = new Md(0, v, o, t), S = mf(o, t), C = function(e, t) { +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes let n, i = e.getStyleFunction() || r.getStyleFunction(); if (i && (n = i(e, o)), n) { let r = this.renderFeature(e, S, n, x, l, t); @@ -10686,7 +19056,15 @@ var nf = class extends $i { let t = w[e]; n && m.projection && !Sr(n, m.projection) && (t = t.clone(), t.getGeometry().applyTransform(Tr(m.projection, n))), (!b || Ot(b, t.getGeometry().getExtent())) && C.call(this, t, e); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream let T = x.finish(), E = new Nd(r.getRenderMode() !== "vector" && l && f.length === 1 ? null : v, o, t, c.getOverlaps(), T, r.getRenderBuffer(), !0); +======= + let T = x.finish(), E = new rf(r.getRenderMode() !== "vector" && l && f.length === 1 ? null : v, o, t, c.getOverlaps(), T, r.getRenderBuffer(), !0); +>>>>>>> Stashed changes +======= + let T = x.finish(), E = new rf(r.getRenderMode() !== "vector" && l && f.length === 1 ? null : v, o, t, c.getOverlaps(), T, r.getRenderBuffer(), !0); +>>>>>>> Stashed changes e.executorGroups[p].push(E); } s.renderedRevision = i, s.renderedPixelRatio = t, s.renderedRenderOrder = a, s.renderedResolution = o; @@ -10724,7 +19102,15 @@ var nf = class extends $i { } getFeatures(e) { return this.renderedTiles.length === 0 ? Promise.resolve([]) : new Promise((t, n) => { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let r = this.getLayer(), i = r.getSource(), a = this.renderedProjection, o = a.getExtent(), s = this.renderedResolution, c = i.getTileGridForProjection(a), l = B(this.renderedPixelToCoordinateTransform_, e.slice()), u = c.getTileCoordForCoordAndResolution(l, s).toString(), d = this.renderedTiles.find((e) => e.tileCoord.toString() === u && e.getState() === I.LOADED); +======= + let r = this.getLayer(), i = r.getSource(), a = this.renderedProjection, o = a.getExtent(), s = this.renderedResolution, c = i.getTileGridForProjection(a), l = z(this.renderedPixelToCoordinateTransform_, e.slice()), u = c.getTileCoordForCoordAndResolution(l, s).toString(), d = this.renderedTiles.find((e) => e.tileCoord.toString() === u && e.getState() === L.LOADED); +>>>>>>> Stashed changes +======= + let r = this.getLayer(), i = r.getSource(), a = this.renderedProjection, o = a.getExtent(), s = this.renderedResolution, c = i.getTileGridForProjection(a), l = z(this.renderedPixelToCoordinateTransform_, e.slice()), u = c.getTileCoordForCoordAndResolution(l, s).toString(), d = this.renderedTiles.find((e) => e.tileCoord.toString() === u && e.getState() === L.LOADED); +>>>>>>> Stashed changes if (!d || d.loadingSourceTiles > 0) { t([]); return; @@ -10732,10 +19118,24 @@ var nf = class extends $i { i.getWrapX() && a.canWrapX() && !nt(o, c.getTileCoordExtent(d.tileCoord)) && rn(l, a); let f = O(r), p = Et(c.getTileCoordExtent(d.wrappedTileCoord)), m = [(l[0] - p[0]) / s, (p[1] - l[1]) / s], h = d.getSourceTiles().reduce((e, t) => e.concat(t.getFeatures()), []), g = d.hitDetectionImageData[f]; if (!g) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let e = pi(c.getTileSize(c.getZForResolution(s, i.zDirection))), t = this.renderedRotation_; g = Rd(e, [this.getRenderTransform(c.getTileCoordCenter(d.wrappedTileCoord), s, 0, Ld, e[0] * Ld, e[1] * Ld, 0)], h, r.getStyleFunction(), c.getTileCoordExtent(d.wrappedTileCoord), d.getReplayState(r).renderedResolution, t), d.hitDetectionImageData[f] = g; } t(zd(m, h, g)); +======= + let e = rs(c.getTileSize(c.getZForResolution(s, i.zDirection))), t = this.renderedRotation_; + g = lf(e, [this.getRenderTransform(c.getTileCoordCenter(d.wrappedTileCoord), s, 0, cf, e[0] * cf, e[1] * cf, 0)], h, r.getStyleFunction(), c.getTileCoordExtent(d.wrappedTileCoord), d.getReplayState(r).renderedResolution, t), d.hitDetectionImageData[f] = g; + } + t(uf(m, h, g)); +>>>>>>> Stashed changes +======= + let e = rs(c.getTileSize(c.getZForResolution(s, i.zDirection))), t = this.renderedRotation_; + g = lf(e, [this.getRenderTransform(c.getTileCoordCenter(d.wrappedTileCoord), s, 0, cf, e[0] * cf, e[1] * cf, 0)], h, r.getStyleFunction(), c.getTileCoordExtent(d.wrappedTileCoord), d.getReplayState(r).renderedResolution, t), d.hitDetectionImageData[f] = g; + } + t(uf(m, h, g)); +>>>>>>> Stashed changes }); } getFeaturesInExtent(e) { @@ -10770,10 +19170,24 @@ var nf = class extends $i { renderDeclutter(e, t) { let n = this.context, r = n.globalAlpha; n.globalAlpha = t.opacity; +<<<<<<< Updated upstream +<<<<<<< Updated upstream let i = e.viewHints, a = !(i[V.ANIMATING] || i[V.INTERACTING]), o = [this.context.canvas.width, this.context.canvas.height], s = this.getLayer().getDeclutter(), c = s ? e.declutter?.[s] : void 0, l = O(this.getLayer()), u = this.renderedTiles; for (let t = 0, n = u.length; t < n; ++t) { let n = u[t], r = n.executorGroups[l]; if (r) for (let t = r.length - 1; t >= 0; --t) r[t].execute(this.context, o, this.getTileRenderTransform(n, e), e.viewState.rotation, a, Od, c); +======= + let i = e.viewHints, a = !(i[Lr.ANIMATING] || i[Lr.INTERACTING]), o = [this.context.canvas.width, this.context.canvas.height], s = this.getLayer().getDeclutter(), c = s ? e.declutter?.[s] : void 0, l = F(this.getLayer()), u = this.renderedTiles; + for (let t = 0, n = u.length; t < n; ++t) { + let n = u[t], r = n.executorGroups[l]; + if (r) for (let t = r.length - 1; t >= 0; --t) r[t].execute(this.context, o, this.getTileRenderTransform(n, e), e.viewState.rotation, a, Qd, c); +>>>>>>> Stashed changes +======= + let i = e.viewHints, a = !(i[Lr.ANIMATING] || i[Lr.INTERACTING]), o = [this.context.canvas.width, this.context.canvas.height], s = this.getLayer().getDeclutter(), c = s ? e.declutter?.[s] : void 0, l = F(this.getLayer()), u = this.renderedTiles; + for (let t = 0, n = u.length; t < n; ++t) { + let n = u[t], r = n.executorGroups[l]; + if (r) for (let t = r.length - 1; t >= 0; --t) r[t].execute(this.context, o, this.getTileRenderTransform(n, e), e.viewState.rotation, a, Qd, c); +>>>>>>> Stashed changes } n.globalAlpha = r; } @@ -10800,7 +19214,7 @@ var nf = class extends $i { } getTileRenderTransform(e, t) { let n = t.pixelRatio, r = t.viewState, i = r.center, a = r.resolution, o = r.rotation, s = t.size, c = Math.round(s[0] * n), l = Math.round(s[1] * n), u = this.getLayer().getSource().getTileGridForProjection(t.viewState.projection), d = e.tileCoord, f = u.getTileCoordExtent(e.wrappedTileCoord), p = u.getTileCoordExtent(d, this.tempExtent)[0] - f[0]; - return Jr(Zr(this.inversePixelTransform.slice(), 1 / n, 1 / n), this.getRenderTransform(i, a, o, n, c, l, p)); + return Yr(Qr(this.inversePixelTransform.slice(), 1 / n, 1 / n), this.getRenderTransform(i, a, o, n, c, l, p)); } clipTileContext_(e, t, n, r, i, a) { let o = []; @@ -10809,17 +19223,33 @@ var nf = class extends $i { let s = It(t, o); e.save(), e.beginPath(); for (let t = 0, n = s.length; t < n; ++t) { - let n = s[t], r = B(a, [n[0], n[1]]), i = B(a, [n[0], n[3]]), o = B(a, [n[2], n[3]]), c = B(a, [n[2], n[1]]); + let n = s[t], r = z(a, [n[0], n[1]]), i = z(a, [n[0], n[3]]), o = z(a, [n[2], n[3]]), c = z(a, [n[2], n[1]]); e.moveTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.lineTo(o[0], o[1]), e.lineTo(c[0], c[1]), e.closePath(); } return e.clip(), !0; } postRender(e, t) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let n = t.viewHints, r = !(n[V.ANIMATING] || n[V.INTERACTING]); this.renderedPixelToCoordinateTransform_ = t.pixelToCoordinateTransform.slice(), this.renderedRotation_ = t.viewState.rotation, this.renderedOpacity_ = t.layerStatesArray[t.layerIndex].opacity; let i = this.getLayer(), a = i.getRenderMode(), o = e.globalAlpha; e.globalAlpha = this.renderedOpacity_; - let s = i.getDeclutter(), c = s ? of[a].filter((e) => !Od.includes(e)) : of[a], l = t.viewState, u = l.rotation; + let s = i.getDeclutter(), c = s ? of[a].filter((e) => !Od.includes(e)) : of[a], l = t.viewState, u = l.rotation; +======= + let n = t.viewHints, r = !(n[Lr.ANIMATING] || n[Lr.INTERACTING]); + this.renderedPixelToCoordinateTransform_ = t.pixelToCoordinateTransform.slice(), this.renderedRotation_ = t.viewState.rotation, this.renderedOpacity_ = t.layerStatesArray[t.layerIndex].opacity; + let i = this.getLayer(), a = i.getRenderMode(), o = e.globalAlpha; + e.globalAlpha = this.renderedOpacity_; + let s = i.getDeclutter(), c = s ? Af[a].filter((e) => !Qd.includes(e)) : Af[a], l = t.viewState, u = l.rotation; +>>>>>>> Stashed changes +======= + let n = t.viewHints, r = !(n[Lr.ANIMATING] || n[Lr.INTERACTING]); + this.renderedPixelToCoordinateTransform_ = t.pixelToCoordinateTransform.slice(), this.renderedRotation_ = t.viewState.rotation, this.renderedOpacity_ = t.layerStatesArray[t.layerIndex].opacity; + let i = this.getLayer(), a = i.getRenderMode(), o = e.globalAlpha; + e.globalAlpha = this.renderedOpacity_; + let s = i.getDeclutter(), c = s ? Af[a].filter((e) => !Qd.includes(e)) : Af[a], l = t.viewState, u = l.rotation; +>>>>>>> Stashed changes this.layerExtent && this.clipUnrotated(e, t, this.layerExtent); let d = i.getSource(), f = d.getTileGridForProjection(l.projection).getZForResolution(l.resolution, d.zDirection), p = this.renderedTiles, m = [], h = [], g = [], _ = O(i), v = !0; for (let n = p.length - 1; n >= 0; --n) { @@ -10827,7 +19257,7 @@ var nf = class extends $i { v &&= !a.getReplayState(i).dirty; let o = a.executorGroups[_].filter((e) => e.hasExecutors(c)); if (o.length === 0) continue; - let l = this.getTileRenderTransform(a, t), d = a.tileCoord[0], y = !1, b = o[0].getClipCoords(Wr), x = e, S; + let l = this.getTileRenderTransform(a, t), d = a.tileCoord[0], y = !1, b = o[0].getClipCoords(Gr), x = e, S; if (b) { let e = [ b[0], @@ -10835,7 +19265,15 @@ var nf = class extends $i { b[4], b[5] ]; +<<<<<<< Updated upstream +<<<<<<< Updated upstream S = new qi(), x = S.getContext(), f !== d && (y = this.clipTileContext_(x, e, m, h, d, l)), m.push(e), h.push(d); +======= + S = new wu(), x = S.getContext(), f !== d && (y = this.clipTileContext_(x, e, m, h, d, l)), m.push(e), h.push(d); +>>>>>>> Stashed changes +======= + S = new wu(), x = S.getContext(), f !== d && (y = this.clipTileContext_(x, e, m, h, d, l)), m.push(e), h.push(d); +>>>>>>> Stashed changes } for (let n = 0, i = o.length; n < i; ++n) o[n].execute(e, [e.canvas.width, e.canvas.height], l, u, r, c, t.declutter?.[s]); y && (x === e ? x.restore() : g[n] = S); @@ -10845,8 +19283,18 @@ var nf = class extends $i { renderFeature(e, t, n, r, i, a) { if (!n) return !1; let o = !1; +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (Array.isArray(n)) for (let s = 0, c = n.length; s < c; ++s) o = Kd(r, e, n[s], t, this.boundHandleStyleImageChange_, void 0, i, a) || o; else o = Kd(r, e, n, t, this.boundHandleStyleImageChange_, void 0, i, a); +======= + if (Array.isArray(n)) for (let s = 0, c = n.length; s < c; ++s) o = _f(r, e, n[s], t, this.boundHandleStyleImageChange_, void 0, i, a) || o; + else o = _f(r, e, n, t, this.boundHandleStyleImageChange_, void 0, i, a); +>>>>>>> Stashed changes +======= + if (Array.isArray(n)) for (let s = 0, c = n.length; s < c; ++s) o = _f(r, e, n[s], t, this.boundHandleStyleImageChange_, void 0, i, a) || o; + else o = _f(r, e, n, t, this.boundHandleStyleImageChange_, void 0, i, a); +>>>>>>> Stashed changes return o; } tileImageNeedsRender_(e) { @@ -10864,15 +19312,33 @@ var nf = class extends $i { h.canvas.width = g[0], h.canvas.height = g[1]; let _ = l / p; if (_ !== 1) { - let e = qr(this.tmpTransform_); - Zr(e, _, _), h.setTransform.apply(h, e); + let e = Jr(this.tmpTransform_); + Qr(e, _, _), h.setTransform.apply(h, e); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream let v = d.getTileCoordExtent(o, this.tempExtent), y = p / m, b = qr(this.tmpTransform_); Zr(b, y, -y), Qr(b, -v[0], -v[3]); for (let e = 0, t = a.length; e < t; ++e) a[e].execute(h, [h.canvas.width * _, h.canvas.height * _], b, 0, !0, af[n.getRenderMode()], null); r.renderedTileResolution = e.wantedResolution; } }, cf = class extends cu { +======= + let v = d.getTileCoordExtent(o, this.tempExtent), y = p / m, b = Jr(this.tmpTransform_); + Qr(b, y, -y), $r(b, -v[0], -v[3]); + for (let e = 0, t = a.length; e < t; ++e) a[e].execute(h, [h.canvas.width * _, h.canvas.height * _], b, 0, !0, kf[n.getRenderMode()], null); + r.renderedTileResolution = e.wantedResolution; + } +}, Mf = class extends Al { +>>>>>>> Stashed changes +======= + let v = d.getTileCoordExtent(o, this.tempExtent), y = p / m, b = Jr(this.tmpTransform_); + Qr(b, y, -y), $r(b, -v[0], -v[3]); + for (let e = 0, t = a.length; e < t; ++e) a[e].execute(h, [h.canvas.width * _, h.canvas.height * _], b, 0, !0, kf[n.getRenderMode()], null); + r.renderedTileResolution = e.wantedResolution; + } +}, Mf = class extends Al { +>>>>>>> Stashed changes constructor(e) { e ||= {}; let t = Object.assign({}, e); @@ -10883,7 +19349,15 @@ var nf = class extends $i { z(r == "hybrid" || r == "vector", "`renderMode` must be `'hybrid'` or `'vector'`"), this.renderMode_ = r, this.setPreload(e.preload ? e.preload : 0), this.setUseInterimTilesOnError(e.useInterimTilesOnError === void 0 || e.useInterimTilesOnError), this.getBackground, this.setBackground; } createRenderer() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return new sf(this, { cacheSize: this.cacheSize_ }); +======= + return new jf(this, { cacheSize: this.cacheSize_ }); +>>>>>>> Stashed changes +======= + return new jf(this, { cacheSize: this.cacheSize_ }); +>>>>>>> Stashed changes } getFeatures(e) { return super.getFeatures(e); @@ -10895,6 +19369,8 @@ var nf = class extends $i { return this.renderMode_; } getPreload() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return this.get(xo.PRELOAD); } getUseInterimTilesOnError() { @@ -10907,6 +19383,34 @@ var nf = class extends $i { this.set(xo.USE_INTERIM_TILES_ON_ERROR, e); } }, lf = class extends $i { +======= + return this.get(Fu.PRELOAD); + } + getUseInterimTilesOnError() { + return this.get(Fu.USE_INTERIM_TILES_ON_ERROR); + } + setPreload(e) { + this.set(Fu.PRELOAD, e); + } + setUseInterimTilesOnError(e) { + this.set(Fu.USE_INTERIM_TILES_ON_ERROR, e); + } +}, Nf = class extends Au { +>>>>>>> Stashed changes +======= + return this.get(Fu.PRELOAD); + } + getUseInterimTilesOnError() { + return this.get(Fu.USE_INTERIM_TILES_ON_ERROR); + } + setPreload(e) { + this.set(Fu.PRELOAD, e); + } + setUseInterimTilesOnError(e) { + this.set(Fu.USE_INTERIM_TILES_ON_ERROR, e); + } +}, Nf = class extends Au { +>>>>>>> Stashed changes constructor(e) { super(e), this.image = null, this.renderedSourceRevision_ = 0; } @@ -10915,11 +19419,27 @@ var nf = class extends $i { } prepareFrame(e) { let t = e.layerStatesArray[e.layerIndex], n = e.pixelRatio, r = e.viewState, i = r.resolution, a = this.getLayer().getSource(), o = e.viewHints, s = e.extent; +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (t.extent !== void 0 && (s = wt(s, Nr(t.extent, r.projection))), !o[V.ANIMATING] && !o[V.INTERACTING] && !kt(s)) { if (a) { !this.getLayer().rendered && this.renderedSourceRevision_ !== a.getRevision() && (this.image = null), this.renderedSourceRevision_ = a.getRevision(); let e = r.projection, t = a.getImage(s, i, n, e); t && (this.loadImage(t) ? this.image = t : t.getState() === L.EMPTY && (this.image = null)); +======= + if (t.extent !== void 0 && (s = lt(s, yr(t.extent, r.projection))), !o[Lr.ANIMATING] && !o[Lr.INTERACTING] && !mt(s)) { + if (a) { + !this.getLayer().rendered && this.renderedSourceRevision_ !== a.getRevision() && (this.image = null), this.renderedSourceRevision_ = a.getRevision(); + let e = r.projection, t = a.getImage(s, i, n, e); + t && (this.loadImage(t) ? this.image = t : t.getState() === J.EMPTY && (this.image = null)); +>>>>>>> Stashed changes +======= + if (t.extent !== void 0 && (s = lt(s, yr(t.extent, r.projection))), !o[Lr.ANIMATING] && !o[Lr.INTERACTING] && !mt(s)) { + if (a) { + !this.getLayer().rendered && this.renderedSourceRevision_ !== a.getRevision() && (this.image = null), this.renderedSourceRevision_ = a.getRevision(); + let e = r.projection, t = a.getImage(s, i, n, e); + t && (this.loadImage(t) ? this.image = t : t.getState() === J.EMPTY && (this.image = null)); +>>>>>>> Stashed changes } else this.image = null; } return !!this.image; @@ -10927,9 +19447,18 @@ var nf = class extends $i { getData(e) { let t = this.frameState; if (!t) return null; +<<<<<<< Updated upstream +<<<<<<< Updated upstream let n = this.getLayer(), r = B(t.pixelToCoordinateTransform, e.slice()), i = n.getExtent(); if (i && !tt(i, r)) return null; let a = this.image.getExtent(), o = this.image.getImage(), s = R(a), c = Math.floor(o.width * ((r[0] - a[0]) / s)); +======= +======= +>>>>>>> Stashed changes + let n = this.getLayer(), r = z(t.pixelToCoordinateTransform, e.slice()), i = n.getExtent(); + if (i && !Be(i, r)) return null; + let a = this.image.getExtent(), o = this.image.getImage(), s = I(a), c = Math.floor(o.width * ((r[0] - a[0]) / s)); +>>>>>>> Stashed changes if (c < 0 || c >= o.width) return null; let l = Ct(a), u = Math.floor(o.height * ((a[3] - r[1]) / l)); return u < 0 || u >= o.height ? null : this.getImageData(o, c, u); @@ -10942,7 +19471,7 @@ var nf = class extends $i { let t = Nr(c.extent, u.projection); y = Ot(t, e.extent), v = y && !nt(t, e.extent), v && this.clipUnrotated(_, e, t); } - let b = n.getImage(), x = $r(this.tempTransform, h / 2, g / 2, p, m, 0, s * (r[0] - d[0]) / a, s * (d[1] - r[3]) / o); + let b = n.getImage(), x = ei(this.tempTransform, h / 2, g / 2, p, m, 0, s * (r[0] - d[0]) / a, s * (d[1] - r[3]) / o); this.renderedResolution = o * l / s; let S = b.width * x[0], C = b.height * x[3]; if (this.getLayer().getSource().getInterpolate() || (_.imageSmoothingEnabled = !1), this.preRender(_, e), y && S >= .5 && C >= .5) { @@ -10951,16 +19480,40 @@ var nf = class extends $i { } return this.postRender(this.context, e), v && _.restore(), _.imageSmoothingEnabled = !0, this.container; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, uf = class extends yo { constructor(e) { e ||= {}, super(e); } }, df = class extends uf { +======= +}, Pf = class extends uo { + constructor(e) { + e ||= {}, super(e); + } +}, Ff = class extends Pf { +>>>>>>> Stashed changes +======= +}, Pf = class extends uo { + constructor(e) { + e ||= {}, super(e); + } +}, Ff = class extends Pf { +>>>>>>> Stashed changes constructor(e) { super(e); } createRenderer() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return new lf(this); +======= + return new Nf(this); +>>>>>>> Stashed changes +======= + return new Nf(this); +>>>>>>> Stashed changes } getData(e) { return super.getData(e); @@ -10968,7 +19521,15 @@ var nf = class extends $i { }; //#endregion //#region node_modules/ol/vec/mat4.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function ff() { +======= +function If() { +>>>>>>> Stashed changes +======= +function If() { +>>>>>>> Stashed changes return [ 1, 0, @@ -10988,6 +19549,8 @@ function ff() { 1 ]; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function pf(e) { return e[0] = 1, e[1] = 0, e[2] = 0, e[3] = 0, e[4] = 0, e[5] = 1, e[6] = 0, e[7] = 0, e[8] = 0, e[9] = 0, e[10] = 1, e[11] = 0, e[12] = 0, e[13] = 0, e[14] = 0, e[15] = 1, e; } @@ -11004,31 +19567,97 @@ function gf(e, t, n, r, i) { } function _f(e, t, n) { n ??= ff(); +======= +function Lf(e) { + return e[0] = 1, e[1] = 0, e[2] = 0, e[3] = 0, e[4] = 0, e[5] = 1, e[6] = 0, e[7] = 0, e[8] = 0, e[9] = 0, e[10] = 1, e[11] = 0, e[12] = 0, e[13] = 0, e[14] = 0, e[15] = 1, e; +} +function Rf(e, t) { + return e[0] = t[0], e[1] = t[1], e[4] = t[2], e[5] = t[3], e[12] = t[4], e[13] = t[5], e; +} +function zf(e, t, n, r, i) { + return i ??= If(), i[0] = e[0] * t, i[1] = e[1] * t, i[2] = e[2] * t, i[3] = e[3] * t, i[4] = e[4] * n, i[5] = e[5] * n, i[6] = e[6] * n, i[7] = e[7] * n, i[8] = e[8] * r, i[9] = e[9] * r, i[10] = e[10] * r, i[11] = e[11] * r, i[12] = e[12], i[13] = e[13], i[14] = e[14], i[15] = e[15], i; +} +function Bf(e, t, n, r, i) { + i ??= If(); + let a, o, s, c, l, u, d, f, p, m, h, g; + return e === i ? (i[12] = e[0] * t + e[4] * n + e[8] * r + e[12], i[13] = e[1] * t + e[5] * n + e[9] * r + e[13], i[14] = e[2] * t + e[6] * n + e[10] * r + e[14], i[15] = e[3] * t + e[7] * n + e[11] * r + e[15]) : (a = e[0], o = e[1], s = e[2], c = e[3], l = e[4], u = e[5], d = e[6], f = e[7], p = e[8], m = e[9], h = e[10], g = e[11], i[0] = a, i[1] = o, i[2] = s, i[3] = c, i[4] = l, i[5] = u, i[6] = d, i[7] = f, i[8] = p, i[9] = m, i[10] = h, i[11] = g, i[12] = a * t + l * n + p * r + e[12], i[13] = o * t + u * n + m * r + e[13], i[14] = s * t + d * n + h * r + e[14], i[15] = c * t + f * n + g * r + e[15]), i; +} +function Vf(e, t, n) { + n ??= If(); +>>>>>>> Stashed changes +======= +function Lf(e) { + return e[0] = 1, e[1] = 0, e[2] = 0, e[3] = 0, e[4] = 0, e[5] = 1, e[6] = 0, e[7] = 0, e[8] = 0, e[9] = 0, e[10] = 1, e[11] = 0, e[12] = 0, e[13] = 0, e[14] = 0, e[15] = 1, e; +} +function Rf(e, t) { + return e[0] = t[0], e[1] = t[1], e[4] = t[2], e[5] = t[3], e[12] = t[4], e[13] = t[5], e; +} +function zf(e, t, n, r, i) { + return i ??= If(), i[0] = e[0] * t, i[1] = e[1] * t, i[2] = e[2] * t, i[3] = e[3] * t, i[4] = e[4] * n, i[5] = e[5] * n, i[6] = e[6] * n, i[7] = e[7] * n, i[8] = e[8] * r, i[9] = e[9] * r, i[10] = e[10] * r, i[11] = e[11] * r, i[12] = e[12], i[13] = e[13], i[14] = e[14], i[15] = e[15], i; +} +function Bf(e, t, n, r, i) { + i ??= If(); + let a, o, s, c, l, u, d, f, p, m, h, g; + return e === i ? (i[12] = e[0] * t + e[4] * n + e[8] * r + e[12], i[13] = e[1] * t + e[5] * n + e[9] * r + e[13], i[14] = e[2] * t + e[6] * n + e[10] * r + e[14], i[15] = e[3] * t + e[7] * n + e[11] * r + e[15]) : (a = e[0], o = e[1], s = e[2], c = e[3], l = e[4], u = e[5], d = e[6], f = e[7], p = e[8], m = e[9], h = e[10], g = e[11], i[0] = a, i[1] = o, i[2] = s, i[3] = c, i[4] = l, i[5] = u, i[6] = d, i[7] = f, i[8] = p, i[9] = m, i[10] = h, i[11] = g, i[12] = a * t + l * n + p * r + e[12], i[13] = o * t + u * n + m * r + e[13], i[14] = s * t + d * n + h * r + e[14], i[15] = c * t + f * n + g * r + e[15]), i; +} +function Vf(e, t, n) { + n ??= If(); +>>>>>>> Stashed changes let r = Math.cos(t), i = Math.sin(t), a = r, o = -i, s = i, c = r, l = e[0], u = e[1], d = e[2], f = e[3], p = e[4], m = e[5], h = e[6], g = e[7]; return n[0] = a * l + o * p, n[1] = a * u + o * m, n[2] = a * d + o * h, n[3] = a * f + o * g, n[4] = s * l + c * p, n[5] = s * u + c * m, n[6] = s * d + c * h, n[7] = s * f + c * g, n !== e && (n[8] = e[8], n[9] = e[9], n[10] = e[10], n[11] = e[11], n[12] = e[12], n[13] = e[13], n[14] = e[14], n[15] = e[15]), n; } //#endregion //#region node_modules/ol/webgl.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var vf = 34962, yf = 34963, bf = 35040, xf = 35044, Sf = 35048, Cf = 5121, wf = 5123, Tf = 5125, Ef = 5126, Df = [ +======= +var Hf = 34962, Uf = 34963, Wf = 35040, Gf = 35044, Kf = 35048, qf = 5121, Jf = 5123, Yf = 5125, Xf = 5126, Zf = [ +>>>>>>> Stashed changes +======= +var Hf = 34962, Uf = 34963, Wf = 35040, Gf = 35044, Kf = 35048, qf = 5121, Jf = 5123, Yf = 5125, Xf = 5126, Zf = [ +>>>>>>> Stashed changes "experimental-webgl", "webgl", "webkit-3d", "moz-webgl" ]; +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Of(e, t) { +======= +function Qf(e, t) { +>>>>>>> Stashed changes +======= +function Qf(e, t) { +>>>>>>> Stashed changes t = Object.assign({ preserveDrawingBuffer: !0, antialias: !le }, t); +<<<<<<< Updated upstream +<<<<<<< Updated upstream let n = Df.length; for (let r = 0; r < n; ++r) try { let n = e.getContext(Df[r], t); +======= + let n = Zf.length; + for (let r = 0; r < n; ++r) try { + let n = e.getContext(Zf[r], t); +>>>>>>> Stashed changes +======= + let n = Zf.length; + for (let r = 0; r < n; ++r) try { + let n = e.getContext(Zf[r], t); +>>>>>>> Stashed changes if (n) return n; } catch {} return null; } //#endregion //#region node_modules/ol/webgl/Buffer.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var kf = { STATIC_DRAW: xf, STREAM_DRAW: bf, @@ -11045,6 +19674,42 @@ var kf = { } fromArrayBuffer(e) { return this.array_ = new (jf(this.type_))(e), this; +======= +var $f = { + STATIC_DRAW: Gf, + STREAM_DRAW: Wf, + DYNAMIC_DRAW: Kf +}, ep = class { + constructor(e, t) { + this.array_ = null, this.type_ = e, R(e === 34962 || e === 34963, "A `WebGLArrayBuffer` must either be of type `ELEMENT_ARRAY_BUFFER` or `ARRAY_BUFFER`"), this.usage_ = t === void 0 ? $f.STATIC_DRAW : t; + } + ofSize(e) { + return this.array_ = new (tp(this.type_))(e), this; + } + fromArray(e) { + return this.array_ = tp(this.type_).from(e), this; + } + fromArrayBuffer(e) { + return this.array_ = new (tp(this.type_))(e), this; +>>>>>>> Stashed changes +======= +var $f = { + STATIC_DRAW: Gf, + STREAM_DRAW: Wf, + DYNAMIC_DRAW: Kf +}, ep = class { + constructor(e, t) { + this.array_ = null, this.type_ = e, R(e === 34962 || e === 34963, "A `WebGLArrayBuffer` must either be of type `ELEMENT_ARRAY_BUFFER` or `ARRAY_BUFFER`"), this.usage_ = t === void 0 ? $f.STATIC_DRAW : t; + } + ofSize(e) { + return this.array_ = new (tp(this.type_))(e), this; + } + fromArray(e) { + return this.array_ = tp(this.type_).from(e), this; + } + fromArrayBuffer(e) { + return this.array_ = new (tp(this.type_))(e), this; +>>>>>>> Stashed changes } getType() { return this.type_; @@ -11053,7 +19718,15 @@ var kf = { return this.array_; } setArray(e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let t = jf(this.type_); +======= + let t = tp(this.type_); +>>>>>>> Stashed changes +======= + let t = tp(this.type_); +>>>>>>> Stashed changes if (!(e instanceof t)) throw Error(`Expected ${t}`); this.array_ = e; } @@ -11064,27 +19737,67 @@ var kf = { return this.array_ ? this.array_.length : 0; } }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream function jf(e) { switch (e) { case vf: return Float32Array; case yf: return Uint32Array; +======= +function tp(e) { + switch (e) { + case Hf: return Float32Array; + case Uf: return Uint32Array; +>>>>>>> Stashed changes +======= +function tp(e) { + switch (e) { + case Hf: return Float32Array; + case Uf: return Uint32Array; +>>>>>>> Stashed changes default: return Float32Array; } } //#endregion //#region node_modules/ol/webgl/ContextEventType.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var Mf = { LOST: "webglcontextlost", RESTORED: "webglcontextrestored" }, Nf = "\n precision mediump float;\n\n attribute vec2 a_position;\n varying vec2 v_texCoord;\n varying vec2 v_screenCoord;\n\n uniform vec2 u_screenSize;\n\n void main() {\n v_texCoord = a_position * 0.5 + 0.5;\n v_screenCoord = v_texCoord * u_screenSize;\n gl_Position = vec4(a_position, 0.0, 1.0);\n }\n", Pf = "\n precision mediump float;\n\n uniform sampler2D u_image;\n uniform float u_opacity;\n\n varying vec2 v_texCoord;\n\n void main() {\n gl_FragColor = texture2D(u_image, v_texCoord) * u_opacity;\n }\n", Ff = class { +======= +var np = { + LOST: "webglcontextlost", + RESTORED: "webglcontextrestored" +}, rp = "\n precision mediump float;\n\n attribute vec2 a_position;\n varying vec2 v_texCoord;\n varying vec2 v_screenCoord;\n\n uniform vec2 u_screenSize;\n\n void main() {\n v_texCoord = a_position * 0.5 + 0.5;\n v_screenCoord = v_texCoord * u_screenSize;\n gl_Position = vec4(a_position, 0.0, 1.0);\n }\n", ip = "\n precision mediump float;\n\n uniform sampler2D u_image;\n uniform float u_opacity;\n\n varying vec2 v_texCoord;\n\n void main() {\n gl_FragColor = texture2D(u_image, v_texCoord) * u_opacity;\n }\n", ap = class { +>>>>>>> Stashed changes +======= +var np = { + LOST: "webglcontextlost", + RESTORED: "webglcontextrestored" +}, rp = "\n precision mediump float;\n\n attribute vec2 a_position;\n varying vec2 v_texCoord;\n varying vec2 v_screenCoord;\n\n uniform vec2 u_screenSize;\n\n void main() {\n v_texCoord = a_position * 0.5 + 0.5;\n v_screenCoord = v_texCoord * u_screenSize;\n gl_Position = vec4(a_position, 0.0, 1.0);\n }\n", ip = "\n precision mediump float;\n\n uniform sampler2D u_image;\n uniform float u_opacity;\n\n varying vec2 v_texCoord;\n\n void main() {\n gl_FragColor = texture2D(u_image, v_texCoord) * u_opacity;\n }\n", ap = class { +>>>>>>> Stashed changes constructor(e) { this.gl_ = e.webGlContext; let t = this.gl_; this.scaleRatio_ = e.scaleRatio || 1, this.renderTargetTexture_ = t.createTexture(), this.renderTargetTextureSize_ = null, this.frameBuffer_ = t.createFramebuffer(), this.depthBuffer_ = t.createRenderbuffer(); let n = t.createShader(t.VERTEX_SHADER); +<<<<<<< Updated upstream +<<<<<<< Updated upstream t.shaderSource(n, e.vertexShader || Nf), t.compileShader(n); let r = t.createShader(t.FRAGMENT_SHADER); if (t.shaderSource(r, e.fragmentShader || Pf), t.compileShader(r), !t.getShaderParameter(r, t.COMPILE_STATUS)) { +======= + t.shaderSource(n, e.vertexShader || rp), t.compileShader(n); + let r = t.createShader(t.FRAGMENT_SHADER); + if (t.shaderSource(r, e.fragmentShader || ip), t.compileShader(r), !t.getShaderParameter(r, t.COMPILE_STATUS)) { +>>>>>>> Stashed changes +======= + t.shaderSource(n, e.vertexShader || rp), t.compileShader(n); + let r = t.createShader(t.FRAGMENT_SHADER); + if (t.shaderSource(r, e.fragmentShader || ip), t.compileShader(r), !t.getShaderParameter(r, t.COMPILE_STATUS)) { +>>>>>>> Stashed changes let e = `Fragment shader compilation failed: ${t.getShaderInfoLog(r)}`; throw Error(e); } @@ -11163,7 +19876,15 @@ var Mf = { else typeof n == "number" && t.uniform1f(i.location, n); }); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, If = { +======= +}, op = { +>>>>>>> Stashed changes +======= +}, op = { +>>>>>>> Stashed changes PROJECTION_MATRIX: "u_projectionMatrix", INVERT_PROJECTION_MATRIX: "u_invertProjectionMatrix", TIME: "u_time", @@ -11173,6 +19894,8 @@ var Mf = { VIEWPORT_SIZE_PX: "u_viewportSizePx", PIXEL_RATIO: "u_pixelRatio", HIT_DETECTION: "u_hitDetection" +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, Lf = { UNSIGNED_BYTE: Cf, UNSIGNED_SHORT: wf, @@ -11189,10 +19912,48 @@ function Vf() { } function Hf(e) { let t = Rf[e]; +======= +}, sp = { + UNSIGNED_BYTE: qf, + UNSIGNED_SHORT: Jf, + UNSIGNED_INT: Yf, + FLOAT: Xf +}, cp = {}; +function lp(e) { + return "shared/" + e; +} +var up = 0; +function dp() { + let e = "unique/" + up; + return up += 1, e; +} +function fp(e) { + let t = cp[e]; +>>>>>>> Stashed changes +======= +}, sp = { + UNSIGNED_BYTE: qf, + UNSIGNED_SHORT: Jf, + UNSIGNED_INT: Yf, + FLOAT: Xf +}, cp = {}; +function lp(e) { + return "shared/" + e; +} +var up = 0; +function dp() { + let e = "unique/" + up; + return up += 1, e; +} +function fp(e) { + let t = cp[e]; +>>>>>>> Stashed changes if (!t) { let n = document.createElement("canvas"); n.width = 1, n.height = 1, n.style.position = "absolute", n.style.left = "0", t = { users: 0, +<<<<<<< Updated upstream +<<<<<<< Updated upstream context: Of(n) }, Rf[e] = t; } @@ -11200,10 +19961,30 @@ function Hf(e) { } function Uf(e) { let t = Rf[e]; +======= + context: Qf(n) + }, cp[e] = t; + } + return t.users += 1, t.context; +} +function pp(e) { + let t = cp[e]; +>>>>>>> Stashed changes +======= + context: Qf(n) + }, cp[e] = t; + } + return t.users += 1, t.context; +} +function pp(e) { + let t = cp[e]; +>>>>>>> Stashed changes if (!t || (--t.users, t.users > 0)) return; let n = t.context, r = n.getExtension("WEBGL_lose_context"); r && r.loseContext(); let i = n.canvas; +<<<<<<< Updated upstream +<<<<<<< Updated upstream i.width = 1, i.height = 1, delete Rf[e]; } var Wf = class extends c { @@ -11211,12 +19992,38 @@ var Wf = class extends c { super(), e ||= {}, this.boundHandleWebGLContextLost_ = this.handleWebGLContextLost.bind(this), this.boundHandleWebGLContextRestored_ = this.handleWebGLContextRestored.bind(this), this.canvasCacheKey_ = e.canvasCacheKey ? zf(e.canvasCacheKey) : Vf(), this.gl_ = Hf(this.canvasCacheKey_), this.bufferCache_ = {}, this.extensionCache_ = {}, this.currentProgram_ = null, this.needsToBeRecreated_ = !1; let t = this.gl_.canvas; t.addEventListener(Mf.LOST, this.boundHandleWebGLContextLost_), t.addEventListener(Mf.RESTORED, this.boundHandleWebGLContextRestored_), this.tmpMat4_ = ff(), this.uniformLocationsByProgram_ = {}, this.attribLocationsByProgram_ = {}, this.uniforms_ = [], e.uniforms && this.setUniforms(e.uniforms), this.postProcessPasses_ = e.postProcesses?.length ? e.postProcesses.map((e) => new Ff({ +======= + i.width = 1, i.height = 1, delete cp[e]; +} +var mp = class extends ie { + constructor(e) { + super(), e ||= {}, this.boundHandleWebGLContextLost_ = this.handleWebGLContextLost.bind(this), this.boundHandleWebGLContextRestored_ = this.handleWebGLContextRestored.bind(this), this.canvasCacheKey_ = e.canvasCacheKey ? lp(e.canvasCacheKey) : dp(), this.gl_ = fp(this.canvasCacheKey_), this.bufferCache_ = {}, this.extensionCache_ = {}, this.currentProgram_ = null, this.needsToBeRecreated_ = !1; + let t = this.gl_.canvas; + t.addEventListener(np.LOST, this.boundHandleWebGLContextLost_), t.addEventListener(np.RESTORED, this.boundHandleWebGLContextRestored_), this.tmpMat4_ = If(), this.uniformLocationsByProgram_ = {}, this.attribLocationsByProgram_ = {}, this.uniforms_ = [], e.uniforms && this.setUniforms(e.uniforms), this.postProcessPasses_ = e.postProcesses?.length ? e.postProcesses.map((e) => new ap({ +>>>>>>> Stashed changes +======= + i.width = 1, i.height = 1, delete cp[e]; +} +var mp = class extends ie { + constructor(e) { + super(), e ||= {}, this.boundHandleWebGLContextLost_ = this.handleWebGLContextLost.bind(this), this.boundHandleWebGLContextRestored_ = this.handleWebGLContextRestored.bind(this), this.canvasCacheKey_ = e.canvasCacheKey ? lp(e.canvasCacheKey) : dp(), this.gl_ = fp(this.canvasCacheKey_), this.bufferCache_ = {}, this.extensionCache_ = {}, this.currentProgram_ = null, this.needsToBeRecreated_ = !1; + let t = this.gl_.canvas; + t.addEventListener(np.LOST, this.boundHandleWebGLContextLost_), t.addEventListener(np.RESTORED, this.boundHandleWebGLContextRestored_), this.tmpMat4_ = If(), this.uniformLocationsByProgram_ = {}, this.attribLocationsByProgram_ = {}, this.uniforms_ = [], e.uniforms && this.setUniforms(e.uniforms), this.postProcessPasses_ = e.postProcesses?.length ? e.postProcesses.map((e) => new ap({ +>>>>>>> Stashed changes webGlContext: this.gl_, scaleRatio: e.scaleRatio, vertexShader: e.vertexShader, fragmentShader: e.fragmentShader, uniforms: e.uniforms +<<<<<<< Updated upstream +<<<<<<< Updated upstream })) : [new Ff({ webGlContext: this.gl_ })], this.shaderCompileErrors_ = null, this.startTime_ = Date.now(), this.maxAttributeCount_ = this.gl_.getParameter(this.gl_.MAX_VERTEX_ATTRIBS); +======= + })) : [new ap({ webGlContext: this.gl_ })], this.shaderCompileErrors_ = null, this.startTime_ = Date.now(), this.maxAttributeCount_ = this.gl_.getParameter(this.gl_.MAX_VERTEX_ATTRIBS); +>>>>>>> Stashed changes +======= + })) : [new ap({ webGlContext: this.gl_ })], this.shaderCompileErrors_ = null, this.startTime_ = Date.now(), this.maxAttributeCount_ = this.gl_.getParameter(this.gl_.MAX_VERTEX_ATTRIBS); +>>>>>>> Stashed changes } setUniforms(e) { this.uniforms_ = [], this.addUniforms(e); @@ -11228,7 +20035,15 @@ var Wf = class extends c { }); } canvasCacheKeyMatches(e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return this.canvasCacheKey_ === zf(e); +======= + return this.canvasCacheKey_ === lp(e); +>>>>>>> Stashed changes +======= + return this.canvasCacheKey_ === lp(e); +>>>>>>> Stashed changes } getExtension(e) { if (e in this.extensionCache_) return this.extensionCache_[e]; @@ -11256,7 +20071,15 @@ var Wf = class extends c { } disposeInternal() { let e = this.gl_.canvas; +<<<<<<< Updated upstream +<<<<<<< Updated upstream e.removeEventListener(Mf.LOST, this.boundHandleWebGLContextLost_), e.removeEventListener(Mf.RESTORED, this.boundHandleWebGLContextRestored_), Uf(this.canvasCacheKey_), delete this.gl_; +======= + e.removeEventListener(np.LOST, this.boundHandleWebGLContextLost_), e.removeEventListener(np.RESTORED, this.boundHandleWebGLContextRestored_), pp(this.canvasCacheKey_), delete this.gl_; +>>>>>>> Stashed changes +======= + e.removeEventListener(np.LOST, this.boundHandleWebGLContextLost_), e.removeEventListener(np.RESTORED, this.boundHandleWebGLContextRestored_), pp(this.canvasCacheKey_), delete this.gl_; +>>>>>>> Stashed changes } prepareDraw(e, t, n) { let r = this.gl_, i = this.getCanvas(), a = e.size, o = e.pixelRatio; @@ -11312,11 +20135,27 @@ var Wf = class extends c { } applyFrameState(e) { let t = e.size, n = e.viewState.rotation, r = e.pixelRatio; +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.setUniformFloatValue(If.TIME, (Date.now() - this.startTime_) * .001), this.setUniformFloatValue(If.ZOOM, e.viewState.zoom), this.setUniformFloatValue(If.RESOLUTION, e.viewState.resolution), this.setUniformFloatValue(If.PIXEL_RATIO, r), this.setUniformFloatVec2(If.VIEWPORT_SIZE_PX, [t[0], t[1]]), this.setUniformFloatValue(If.ROTATION, n); } applyHitDetectionUniform(e) { let t = this.getUniformLocation(If.HIT_DETECTION); this.getGL().uniform1i(t, +!!e), e && this.setUniformFloatValue(If.PIXEL_RATIO, .5); +======= + this.setUniformFloatValue(op.TIME, (Date.now() - this.startTime_) * .001), this.setUniformFloatValue(op.ZOOM, e.viewState.zoom), this.setUniformFloatValue(op.RESOLUTION, e.viewState.resolution), this.setUniformFloatValue(op.PIXEL_RATIO, r), this.setUniformFloatVec2(op.VIEWPORT_SIZE_PX, [t[0], t[1]]), this.setUniformFloatValue(op.ROTATION, n); + } + applyHitDetectionUniform(e) { + let t = this.getUniformLocation(op.HIT_DETECTION); + this.getGL().uniform1i(t, +!!e), e && this.setUniformFloatValue(op.PIXEL_RATIO, .5); +>>>>>>> Stashed changes +======= + this.setUniformFloatValue(op.TIME, (Date.now() - this.startTime_) * .001), this.setUniformFloatValue(op.ZOOM, e.viewState.zoom), this.setUniformFloatValue(op.RESOLUTION, e.viewState.resolution), this.setUniformFloatValue(op.PIXEL_RATIO, r), this.setUniformFloatVec2(op.VIEWPORT_SIZE_PX, [t[0], t[1]]), this.setUniformFloatValue(op.ROTATION, n); + } + applyHitDetectionUniform(e) { + let t = this.getUniformLocation(op.HIT_DETECTION); + this.getGL().uniform1i(t, +!!e), e && this.setUniformFloatValue(op.PIXEL_RATIO, .5); +>>>>>>> Stashed changes } applyUniforms(e) { let t = this.gl_, n, r = 0; @@ -11325,7 +20164,15 @@ var Wf = class extends c { n instanceof WebGLTexture && !i.texture ? (i.prevValue = void 0, i.texture = n) : i.texture ||= (i.prevValue = void 0, t.createTexture()), this.bindTexture(i.texture, r, i.name), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MIN_FILTER, t.LINEAR), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_S, t.CLAMP_TO_EDGE), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_T, t.CLAMP_TO_EDGE); let e = !(n instanceof HTMLImageElement) || n.complete; !(n instanceof WebGLTexture) && e && i.prevValue !== n && (i.prevValue = n, t.texImage2D(t.TEXTURE_2D, 0, t.RGBA, t.RGBA, t.UNSIGNED_BYTE, n)), r++; +<<<<<<< Updated upstream +<<<<<<< Updated upstream } else if (Array.isArray(n) && n.length === 6) this.setUniformMatrixValue(i.name, mf(this.tmpMat4_, n)); +======= + } else if (Array.isArray(n) && n.length === 6) this.setUniformMatrixValue(i.name, Rf(this.tmpMat4_, n)); +>>>>>>> Stashed changes +======= + } else if (Array.isArray(n) && n.length === 6) this.setUniformMatrixValue(i.name, Rf(this.tmpMat4_, n)); +>>>>>>> Stashed changes else if (Array.isArray(n) && n.length <= 4) switch (n.length) { case 2: t.uniform2f(this.getUniformLocation(i.name), n[0], n[1]); @@ -11374,7 +20221,7 @@ var Wf = class extends c { } makeProjectionTransform(e, t, n) { let r = e.size, i = n ? 0 : e.viewState.rotation, a = e.viewState.resolution, o = e.viewState.center; - return $r(t, 0, 0, 2 / (a * r[0]), 2 / (a * r[1]), -i, -o[0], -o[1]), t; + return ei(t, 0, 0, 2 / (a * r[0]), 2 / (a * r[1]), -i, -o[0], -o[1]), t; } setUniformFloatValue(e, t) { this.gl_.uniform1f(this.getUniformLocation(e), t); @@ -11396,10 +20243,24 @@ var Wf = class extends c { o < 0 || (this.gl_.enableVertexAttribArray(o), this.gl_.vertexAttribPointer(o, t, n, !1, r, i), a && this.getInstancedRenderingExtension_().vertexAttribDivisorANGLE(o, 1)); } enableAttributes_(e, t) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let n = Gf(e), r = 0; for (let i = 0; i < e.length; i++) { let a = e[i]; a.name && this.enableAttributeArray_(a.name, a.size, a.type || 5126, n, r, t), r += a.size * Kf(a.type); +======= + let n = hp(e), r = 0; + for (let i = 0; i < e.length; i++) { + let a = e[i]; + a.name && this.enableAttributeArray_(a.name, a.size, a.type || 5126, n, r, t), r += a.size * gp(a.type); +>>>>>>> Stashed changes +======= + let n = hp(e), r = 0; + for (let i = 0; i < e.length; i++) { + let a = e[i]; + a.name && this.enableAttributeArray_(a.name, a.size, a.type || 5126, n, r, t), r += a.size * gp(a.type); +>>>>>>> Stashed changes } } enableAttributes(e) { @@ -11426,6 +20287,8 @@ var Wf = class extends c { return t instanceof Uint8Array ? i.texImage2D(i.TEXTURE_2D, 0, o, e[0], e[1], 0, s, c, t) : t ? i.texImage2D(i.TEXTURE_2D, 0, o, s, c, t) : i.texImage2D(i.TEXTURE_2D, 0, o, e[0], e[1], 0, s, c, null), n; } }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Gf(e) { let t = 0; for (let n = 0; n < e.length; n++) { @@ -11440,28 +20303,95 @@ function Kf(e) { case Lf.UNSIGNED_SHORT: return Uint16Array.BYTES_PER_ELEMENT; case Lf.UNSIGNED_INT: return Uint32Array.BYTES_PER_ELEMENT; case Lf.FLOAT: +======= +function hp(e) { + let t = 0; + for (let n = 0; n < e.length; n++) { + let r = e[n]; + t += r.size * gp(r.type); + } + return t; +} +function gp(e) { + switch (e) { +======= +function hp(e) { + let t = 0; + for (let n = 0; n < e.length; n++) { + let r = e[n]; + t += r.size * gp(r.type); + } + return t; +} +function gp(e) { + switch (e) { +>>>>>>> Stashed changes + case sp.UNSIGNED_BYTE: return Uint8Array.BYTES_PER_ELEMENT; + case sp.UNSIGNED_SHORT: return Uint16Array.BYTES_PER_ELEMENT; + case sp.UNSIGNED_INT: return Uint32Array.BYTES_PER_ELEMENT; + case sp.FLOAT: +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes default: return Float32Array.BYTES_PER_ELEMENT; } } //#endregion //#region node_modules/ol/renderer/webgl/Layer.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var qf = class e extends Yi { +======= +var _p = class e extends Eu { +>>>>>>> Stashed changes constructor(e, t) { - super(e), t ||= {}, this.inversePixelTransform_ = Kr(), this.postProcesses_ = t.postProcesses, this.uniforms_ = t.uniforms, this.helper, this.onMapChanged_ = () => { + super(e), t ||= {}, this.inversePixelTransform_ = qr(), this.postProcesses_ = t.postProcesses, this.uniforms_ = t.uniforms, this.helper, this.onMapChanged_ = () => { this.clearCache(), this.removeHelper(); +<<<<<<< Updated upstream }, e.addChangeListener(H.MAP, this.onMapChanged_), this.dispatchPreComposeEvent = this.dispatchPreComposeEvent.bind(this), this.dispatchPostComposeEvent = this.dispatchPostComposeEvent.bind(this); } dispatchPreComposeEvent(e, t) { let n = this.getLayer(); if (n.hasListener(Ki.PRECOMPOSE)) { let r = new Gi(Ki.PRECOMPOSE, void 0, t, e); +======= + }, e.addChangeListener(B.MAP, this.onMapChanged_), this.dispatchPreComposeEvent = this.dispatchPreComposeEvent.bind(this), this.dispatchPostComposeEvent = this.dispatchPostComposeEvent.bind(this); + } + dispatchPreComposeEvent(e, t) { + let n = this.getLayer(); + if (n.hasListener(lo.PRECOMPOSE)) { + let r = new Ml(lo.PRECOMPOSE, void 0, t, e); +>>>>>>> Stashed changes +======= +var _p = class e extends Eu { + constructor(e, t) { + super(e), t ||= {}, this.inversePixelTransform_ = qr(), this.postProcesses_ = t.postProcesses, this.uniforms_ = t.uniforms, this.helper, this.onMapChanged_ = () => { + this.clearCache(), this.removeHelper(); + }, e.addChangeListener(B.MAP, this.onMapChanged_), this.dispatchPreComposeEvent = this.dispatchPreComposeEvent.bind(this), this.dispatchPostComposeEvent = this.dispatchPostComposeEvent.bind(this); + } + dispatchPreComposeEvent(e, t) { + let n = this.getLayer(); + if (n.hasListener(lo.PRECOMPOSE)) { + let r = new Ml(lo.PRECOMPOSE, void 0, t, e); +>>>>>>> Stashed changes n.dispatchEvent(r); } } dispatchPostComposeEvent(e, t) { let n = this.getLayer(); +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (n.hasListener(Ki.POSTCOMPOSE)) { let r = new Gi(Ki.POSTCOMPOSE, void 0, t, e); +======= + if (n.hasListener(lo.POSTCOMPOSE)) { + let r = new Ml(lo.POSTCOMPOSE, void 0, t, e); +>>>>>>> Stashed changes +======= + if (n.hasListener(lo.POSTCOMPOSE)) { + let r = new Ml(lo.POSTCOMPOSE, void 0, t, e); +>>>>>>> Stashed changes n.dispatchEvent(r); } } @@ -11484,7 +20414,15 @@ var qf = class e extends Yi { if ((n || c !== i) && (r += 1, n = !1), i = c, s === this) break; } let a = "map/" + t.mapId + "/group/" + r; +<<<<<<< Updated upstream +<<<<<<< Updated upstream (!this.helper || !this.helper.canvasCacheKeyMatches(a) || this.helper.needsToBeRecreated()) && (this.removeHelper(), this.helper = new Wf({ +======= + (!this.helper || !this.helper.canvasCacheKeyMatches(a) || this.helper.needsToBeRecreated()) && (this.removeHelper(), this.helper = new mp({ +>>>>>>> Stashed changes +======= + (!this.helper || !this.helper.canvasCacheKeyMatches(a) || this.helper.needsToBeRecreated()) && (this.removeHelper(), this.helper = new mp({ +>>>>>>> Stashed changes postProcesses: this.postProcesses_, uniforms: this.uniforms_, canvasCacheKey: a @@ -11504,17 +20442,37 @@ var qf = class e extends Yi { return this.postProcesses_; } disposeInternal() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.clearCache(), this.removeHelper(), this.getLayer()?.removeChangeListener(H.MAP, this.onMapChanged_), super.disposeInternal(); +======= + this.clearCache(), this.removeHelper(), this.getLayer()?.removeChangeListener(B.MAP, this.onMapChanged_), super.disposeInternal(); +>>>>>>> Stashed changes +======= + this.clearCache(), this.removeHelper(), this.getLayer()?.removeChangeListener(B.MAP, this.onMapChanged_), super.disposeInternal(); +>>>>>>> Stashed changes } dispatchRenderEvent_(e, t, n) { let r = this.getLayer(); if (r.hasListener(e)) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream $r(this.inversePixelTransform_, 0, 0, n.pixelRatio, -n.pixelRatio, 0, 0, -n.size[1]); let i = new Gi(e, this.inversePixelTransform_, n, t); +======= + ei(this.inversePixelTransform_, 0, 0, n.pixelRatio, -n.pixelRatio, 0, 0, -n.size[1]); + let i = new Ml(e, this.inversePixelTransform_, n, t); +>>>>>>> Stashed changes +======= + ei(this.inversePixelTransform_, 0, 0, n.pixelRatio, -n.pixelRatio, 0, 0, -n.size[1]); + let i = new Ml(e, this.inversePixelTransform_, n, t); +>>>>>>> Stashed changes r.dispatchEvent(i); } } preRender(e, t) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.dispatchRenderEvent_(Ki.PRERENDER, e, t); } postRender(e, t) { @@ -11522,6 +20480,24 @@ var qf = class e extends Yi { } }, Jf = { ...If, +======= + this.dispatchRenderEvent_(lo.PRERENDER, e, t); + } + postRender(e, t) { + this.dispatchRenderEvent_(lo.POSTRENDER, e, t); + } +}, vp = { + ...op, +>>>>>>> Stashed changes +======= + this.dispatchRenderEvent_(lo.PRERENDER, e, t); + } + postRender(e, t) { + this.dispatchRenderEvent_(lo.POSTRENDER, e, t); + } +}, vp = { + ...op, +>>>>>>> Stashed changes TILE_TRANSFORM: "u_tileTransform", TRANSITION_ALPHA: "u_transitionAlpha", DEPTH: "u_depth", @@ -11532,10 +20508,24 @@ var qf = class e extends Yi { TEXTURE_PIXEL_HEIGHT: "u_texturePixelHeight", TEXTURE_RESOLUTION: "u_textureResolution" }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream ({ TEXTURE_COORD: "a_textureCoord" }).TEXTURE_COORD, Lf.FLOAT; //#endregion //#region node_modules/ol/webgl/PaletteTexture.js var Yf = class { +======= +({ TEXTURE_COORD: "a_textureCoord" }).TEXTURE_COORD, sp.FLOAT; +//#endregion +//#region node_modules/ol/webgl/PaletteTexture.js +var yp = class { +>>>>>>> Stashed changes +======= +({ TEXTURE_COORD: "a_textureCoord" }).TEXTURE_COORD, sp.FLOAT; +//#endregion +//#region node_modules/ol/webgl/PaletteTexture.js +var yp = class { +>>>>>>> Stashed changes constructor(e, t) { this.name = e, this.data = t, this.texture_ = null; } @@ -11552,6 +20542,8 @@ var Yf = class { }; //#endregion //#region node_modules/ol/expr/gpu.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Xf(e, t) { return `operator_${e}_${Object.keys(t.functions).length}`; } @@ -11566,12 +20558,42 @@ function Qf(e) { function $f(e) { let t = Ui(e), n = t.length > 3 ? t[3] : 1; return Qf([ +======= +function bp(e, t) { + return `operator_${e}_${Object.keys(t.functions).length}`; +} +function xp(e) { + let t = e.toString(); + return t.includes(".") ? t : t + ".0"; +} +======= +function bp(e, t) { + return `operator_${e}_${Object.keys(t.functions).length}`; +} +function xp(e) { + let t = e.toString(); + return t.includes(".") ? t : t + ".0"; +} +>>>>>>> Stashed changes +function Sp(e) { + if (e.length < 2 || e.length > 4) throw Error("`formatArray` can only output `vec2`, `vec3` or `vec4` arrays."); + return `vec${e.length}(${e.map(xp).join(", ")})`; +} +function Cp(e) { + let t = $o(e), n = t.length > 3 ? t[3] : 1; + return Sp([ +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes t[0] / 255, t[1] / 255, t[2] / 255, n ]); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function ep(e) { return Qf(pi(e)); } @@ -11584,8 +20606,38 @@ function ip(e) { } function ap(e) { return "u_var_" + e; +======= +function wp(e) { + return Sp(rs(e)); +} +var Tp = {}, Ep = 0; +function Dp(e) { + return e in Tp || (Tp[e] = Ep++), Tp[e]; +} +function Op(e) { + return xp(Dp(e)); +>>>>>>> Stashed changes } function op(e) { +======= +function wp(e) { + return Sp(rs(e)); +} +var Tp = {}, Ep = 0; +function Dp(e) { + return e in Tp || (Tp[e] = Ep++), Tp[e]; +} +function Op(e) { + return xp(Dp(e)); +} +function kp(e) { + return "u_var_" + e; +} +function Ap(e) { +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes return { variables: /* @__PURE__ */ new Map(), properties: /* @__PURE__ */ new Map(), @@ -11596,14 +20648,29 @@ function op(e) { inputVariables: e }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream var sp = "getBandValue", cp = "u_paletteTextures", lp = "featureId", up = "geometryType", dp = -9999999; function fp(e, t, n, r) { let i = ec(e, t, n); return r.properties = new Map([...r.properties, ...n.properties]), r.variables = new Map([...r.variables, ...n.variables]), mp(i, t, r); -} -function Z(e) { +======= +======= +>>>>>>> Stashed changes +var jp = "getBandValue", Mp = "u_paletteTextures", Np = "featureId", Pp = "geometryType", Fp = -9999999; +function Ip(e, t, n, r) { + let i = ys(e, t, n); + return r.properties = new Map([...r.properties, ...n.properties]), r.variables = new Map([...r.variables, ...n.variables]), Rp(i, t, r); +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes +} +function X(e) { return (t, n, r) => { let i = n.args.length, a = Array(i); +<<<<<<< Updated upstream +<<<<<<< Updated upstream for (let e = 0; e < i; ++e) a[e] = mp(n.args[e], r, t); return e(a, t); }; @@ -11649,10 +20716,80 @@ var pp = { [K.Atan]: Z(([e, t]) => t === void 0 ? `atan(${e})` : `atan(${e}, ${t})`), [K.Sqrt]: Z(([e]) => `sqrt(${e})`), [K.Match]: Z((e) => { +======= + for (let e = 0; e < i; ++e) a[e] = Rp(n.args[e], r, t); + return e(a, t); + }; +} +var Lp = { + [W.Get]: (e, t) => { + let n = "a_prop_" + t.args[0].value; + return hs(t.type, as) && (n = `(${n} > 0.0)`), n; + }, + [W.Id]: (e) => (e.featureId = !0, "a_featureId"), + [W.GeometryType]: (e) => (e.geometryType = !0, "a_geometryType"), + [W.LineMetric]: () => "currentLineMetric", + [W.Var]: (e, t) => { + let n = t.args[0].value, r = kp(n); + return hs(t.type, as) && (r = `(${r} > 0.0)`), r; + }, +======= + for (let e = 0; e < i; ++e) a[e] = Rp(n.args[e], r, t); + return e(a, t); + }; +} +var Lp = { + [W.Get]: (e, t) => { + let n = "a_prop_" + t.args[0].value; + return hs(t.type, as) && (n = `(${n} > 0.0)`), n; + }, + [W.Id]: (e) => (e.featureId = !0, "a_featureId"), + [W.GeometryType]: (e) => (e.geometryType = !0, "a_geometryType"), + [W.LineMetric]: () => "currentLineMetric", + [W.Var]: (e, t) => { + let n = t.args[0].value, r = kp(n); + return hs(t.type, as) && (r = `(${r} > 0.0)`), r; + }, +>>>>>>> Stashed changes + [W.Has]: (e, t) => `(a_prop_${t.args[0].value} != ${xp(Fp)})`, + [W.Resolution]: () => "u_resolution", + [W.Zoom]: () => "u_zoom", + [W.Time]: () => "u_time", + [W.Any]: X((e) => `(${e.join(" || ")})`), + [W.All]: X((e) => `(${e.join(" && ")})`), + [W.Not]: X(([e]) => `(!${e})`), + [W.Equal]: X(([e, t]) => `(${e} == ${t})`), + [W.NotEqual]: X(([e, t]) => `(${e} != ${t})`), + [W.GreaterThan]: X(([e, t]) => `(${e} > ${t})`), + [W.GreaterThanOrEqualTo]: X(([e, t]) => `(${e} >= ${t})`), + [W.LessThan]: X(([e, t]) => `(${e} < ${t})`), + [W.LessThanOrEqualTo]: X(([e, t]) => `(${e} <= ${t})`), + [W.Multiply]: X((e) => `(${e.join(" * ")})`), + [W.Divide]: X(([e, t]) => `(${e} / ${t})`), + [W.Add]: X((e) => `(${e.join(" + ")})`), + [W.Subtract]: X(([e, t]) => `(${e} - ${t})`), + [W.Clamp]: X(([e, t, n]) => `clamp(${e}, ${t}, ${n})`), + [W.Mod]: X(([e, t]) => `mod(${e}, ${t})`), + [W.Pow]: X(([e, t]) => `pow(${e}, ${t})`), + [W.Abs]: X(([e]) => `abs(${e})`), + [W.Floor]: X(([e]) => `floor(${e})`), + [W.Ceil]: X(([e]) => `ceil(${e})`), + [W.Round]: X(([e]) => `floor(${e} + 0.5)`), + [W.Sin]: X(([e]) => `sin(${e})`), + [W.Cos]: X(([e]) => `cos(${e})`), + [W.Atan]: X(([e, t]) => t === void 0 ? `atan(${e})` : `atan(${e}, ${t})`), + [W.Sqrt]: X(([e]) => `sqrt(${e})`), + [W.Match]: X((e) => { +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes let t = e[0], n = e[e.length - 1], r = null; for (let i = e.length - 3; i >= 1; i -= 2) r = `(${t} == ${e[i]} ? ${e[i + 1]} : ${r || n})`; return r; }), +<<<<<<< Updated upstream +<<<<<<< Updated upstream [K.Between]: Z(([e, t, n]) => `(${e} >= ${t} && ${e} <= ${n})`), [K.Interpolate]: Z(([e, t, ...n]) => { let r = ""; @@ -11663,20 +20800,64 @@ var pp = { return r; }), [K.Case]: Z((e) => { +======= + [W.Between]: X(([e, t, n]) => `(${e} >= ${t} && ${e} <= ${n})`), + [W.Interpolate]: X(([e, t, ...n]) => { + let r = ""; + for (let i = 0; i < n.length - 2; i += 2) { + let a = n[i], o = r || n[i + 1], s = n[i + 2], c = n[i + 3], l; + l = e === xp(1) ? `(${t} - ${a}) / (${s} - ${a})` : `(pow(${e}, (${t} - ${a})) - 1.0) / (pow(${e}, (${s} - ${a})) - 1.0)`, r = `mix(${o}, ${c}, clamp(${l}, 0.0, 1.0))`; + } + return r; + }), + [W.Case]: X((e) => { +>>>>>>> Stashed changes +======= + [W.Between]: X(([e, t, n]) => `(${e} >= ${t} && ${e} <= ${n})`), + [W.Interpolate]: X(([e, t, ...n]) => { + let r = ""; + for (let i = 0; i < n.length - 2; i += 2) { + let a = n[i], o = r || n[i + 1], s = n[i + 2], c = n[i + 3], l; + l = e === xp(1) ? `(${t} - ${a}) / (${s} - ${a})` : `(pow(${e}, (${t} - ${a})) - 1.0) / (pow(${e}, (${s} - ${a})) - 1.0)`, r = `mix(${o}, ${c}, clamp(${l}, 0.0, 1.0))`; + } + return r; + }), + [W.Case]: X((e) => { +>>>>>>> Stashed changes let t = e[e.length - 1], n = null; for (let r = e.length - 3; r >= 0; r -= 2) n = `(${e[r]} ? ${e[r + 1]} : ${n || t})`; return n; }), +<<<<<<< Updated upstream +<<<<<<< Updated upstream [K.In]: Z(([e, ...t], n) => { let r = Xf("in", n), i = []; +======= + [W.In]: X(([e, ...t], n) => { + let r = bp("in", n), i = []; +>>>>>>> Stashed changes +======= + [W.In]: X(([e, ...t], n) => { + let r = bp("in", n), i = []; +>>>>>>> Stashed changes for (let e = 0; e < t.length; e += 1) i.push(` if (inputValue == ${t[e]}) { return true; }`); return n.functions[r] = `bool ${r}(float inputValue) { ${i.join("\n")} return false; }`, `${r}(${e})`; }), +<<<<<<< Updated upstream +<<<<<<< Updated upstream [K.Array]: Z((e) => `vec${e.length}(${e.join(", ")})`), [K.Color]: Z((e) => { +======= + [W.Array]: X((e) => `vec${e.length}(${e.join(", ")})`), + [W.Color]: X((e) => { +>>>>>>> Stashed changes +======= + [W.Array]: X((e) => `vec${e.length}(${e.join(", ")})`), + [W.Color]: X((e) => { +>>>>>>> Stashed changes if (e.length === 1) return `vec4(vec3(${e[0]} / 255.0), 1.0)`; if (e.length === 2) return `vec4(vec3(${e[0]} / 255.0), ${e[1]})`; let t = e.slice(0, 3).map((e) => `${e} / 255.0`); @@ -11684,18 +20865,38 @@ ${i.join("\n")} let n = e[3]; return `vec4(${t.join(", ")}, ${n})`; }), +<<<<<<< Updated upstream +<<<<<<< Updated upstream [K.Band]: Z(([e, t, n], r) => { if (!(sp in r.functions)) { +======= + [W.Band]: X(([e, t, n], r) => { + if (!(jp in r.functions)) { +>>>>>>> Stashed changes +======= + [W.Band]: X(([e, t, n], r) => { + if (!(jp in r.functions)) { +>>>>>>> Stashed changes let e = "", t = r.bandCount || 1; for (let n = 0; n < t; n++) { let r = Math.floor(n / 4), i = n % 4; n === t - 1 && i === 1 && (i = 3); +<<<<<<< Updated upstream +<<<<<<< Updated upstream let a = `${Jf.TILE_TEXTURE_ARRAY}[${r}]`; +======= + let a = `${vp.TILE_TEXTURE_ARRAY}[${r}]`; +>>>>>>> Stashed changes +======= + let a = `${vp.TILE_TEXTURE_ARRAY}[${r}]`; +>>>>>>> Stashed changes e += ` if (band == ${n + 1}.0) { return texture2D(${a}, v_textureCoord + vec2(dx, dy))[${i}]; } `; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream r.functions[sp] = `float getBandValue(float band, float xOffset, float yOffset) { float dx = xOffset / ${Jf.TEXTURE_PIXEL_WIDTH}; float dy = yOffset / ${Jf.TEXTURE_PIXEL_HEIGHT}; @@ -11732,6 +20933,82 @@ function mp(e, t, n) { //#endregion //#region node_modules/ol/style/flat.js function hp() { +======= + r.functions[jp] = `float getBandValue(float band, float xOffset, float yOffset) { + float dx = xOffset / ${vp.TEXTURE_PIXEL_WIDTH}; + float dy = yOffset / ${vp.TEXTURE_PIXEL_HEIGHT}; +${e} +}`; + } + return `${jp}(${e}, ${t ?? "0.0"}, ${n ?? "0.0"})`; + }), + [W.Palette]: (e, t) => { + let [n, ...r] = t.args, i = r.length, a = new Uint8Array(i * 4); + for (let e = 0; e < r.length; e++) { + let t = r[e].value, n = $o(t), i = e * 4; + a[i] = n[0], a[i + 1] = n[1], a[i + 2] = n[2], a[i + 3] = n[3] * 255; + } + e.paletteTextures ||= []; + let o = `${Mp}[${e.paletteTextures.length}]`, s = new yp(o, a); + return e.paletteTextures.push(s), `texture2D(${o}, vec2((${Rp(n, V, e)} + 0.5) / ${i}.0, 0.5))`; + } +}; +function Rp(e, t, n) { + if (e instanceof _s) { + let r = Lp[e.operator]; + if (r === void 0) throw Error(`No compiler defined for this operator: ${JSON.stringify(e.operator)}`); + return r(n, e, t); + } + if ((e.type & V) > 0) return xp(e.value); + if ((e.type & as) > 0) return e.value.toString(); + if ((e.type & H) > 0) return Op(e.value.toString()); + if ((e.type & U) > 0) return Cp(e.value); + if ((e.type & os) > 0) return Sp(e.value); + if ((e.type & ss) > 0) return wp(e.value); + throw Error(`Unexpected expression ${e.value} (expected type ${fs(t)})`); +} +//#endregion +//#region node_modules/ol/style/flat.js +function zp() { +>>>>>>> Stashed changes +======= + r.functions[jp] = `float getBandValue(float band, float xOffset, float yOffset) { + float dx = xOffset / ${vp.TEXTURE_PIXEL_WIDTH}; + float dy = yOffset / ${vp.TEXTURE_PIXEL_HEIGHT}; +${e} +}`; + } + return `${jp}(${e}, ${t ?? "0.0"}, ${n ?? "0.0"})`; + }), + [W.Palette]: (e, t) => { + let [n, ...r] = t.args, i = r.length, a = new Uint8Array(i * 4); + for (let e = 0; e < r.length; e++) { + let t = r[e].value, n = $o(t), i = e * 4; + a[i] = n[0], a[i + 1] = n[1], a[i + 2] = n[2], a[i + 3] = n[3] * 255; + } + e.paletteTextures ||= []; + let o = `${Mp}[${e.paletteTextures.length}]`, s = new yp(o, a); + return e.paletteTextures.push(s), `texture2D(${o}, vec2((${Rp(n, V, e)} + 0.5) / ${i}.0, 0.5))`; + } +}; +function Rp(e, t, n) { + if (e instanceof _s) { + let r = Lp[e.operator]; + if (r === void 0) throw Error(`No compiler defined for this operator: ${JSON.stringify(e.operator)}`); + return r(n, e, t); + } + if ((e.type & V) > 0) return xp(e.value); + if ((e.type & as) > 0) return e.value.toString(); + if ((e.type & H) > 0) return Op(e.value.toString()); + if ((e.type & U) > 0) return Cp(e.value); + if ((e.type & os) > 0) return Sp(e.value); + if ((e.type & ss) > 0) return wp(e.value); + throw Error(`Unexpected expression ${e.value} (expected type ${fs(t)})`); +} +//#endregion +//#region node_modules/ol/style/flat.js +function zp() { +>>>>>>> Stashed changes return { "fill-color": "rgba(255,255,255,0.4)", "stroke-color": "#3399CC", @@ -11744,6 +21021,8 @@ function hp() { } //#endregion //#region node_modules/ol/render/webgl/bufferUtil.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var gp = .985; //#endregion //#region node_modules/ol/render/webgl/compileUtil.js @@ -11786,19 +21065,129 @@ function Sp(e, t) { return e[0] /= 255, e[1] /= 255, e[2] /= 255, e[3] ??= 1, e; } return i === W ? rp(n) : n; +======= +var Bp = .985; +//#endregion +//#region node_modules/ol/render/webgl/compileUtil.js +function Z(e, t, n, r) { + return Ip(t, n, r ?? vs(e.inputVariables), e); +} +function Vp(e) { + let t = $o(e), n = t[0] * 256, r = t[1], i = t[2] * 256, a = Math.round(t[3] * 255); + return [n + r, i + a]; +} +var Hp = "vec4 unpackColor(vec2 packedColor) {\n return vec4(\n min(floor(packedColor[0] / 256.0) / 255.0, 1.0),\n min(mod(packedColor[0], 256.0) / 255.0, 1.0),\n min(floor(packedColor[1] / 256.0) / 255.0, 1.0),\n min(mod(packedColor[1], 256.0) / 255.0, 1.0)\n );\n}"; +function Up(e) { + return e === U || e === ss ? 2 : e === os ? 4 : e === H ? 3 : 1; +} +function Wp(e) { + if (e === H) return "float"; + let t = Up(e); + return t > 1 ? `vec${t}` : "float"; +} +function Gp(e, t) { + for (let n of t.variables.entries()) { + let [t, r] = n, i = kp(t), a = Wp(r); + r === U && (a = "vec4"), e.addUniform(i, a); + } + for (let n of t.properties.entries()) { + let [t, r] = n, i = Wp(r), a = `a_prop_${t}`; + r === U ? e.addAttribute(a, i, `unpackColor(${a})`, "vec4") : e.addAttribute(a, i); + } + for (let n in t.functions) e.addVertexShaderFunction(t.functions[n]), e.addFragmentShaderFunction(t.functions[n]); +} +function Kp(e, t) { + let n = {}; + for (let r of e.variables.entries()) { + let [e, i] = r, a = kp(e); + n[a] = () => { + let n = t[e]; + if (i === as) return +!!n; + if (i === U) { + let e = [...$o(n || "#eee")]; + return e[0] /= 255, e[1] /= 255, e[2] /= 255, e[3] ??= 1, e; + } + return i === H ? Dp(n) : n; +>>>>>>> Stashed changes +======= +var Bp = .985; +//#endregion +//#region node_modules/ol/render/webgl/compileUtil.js +function Z(e, t, n, r) { + return Ip(t, n, r ?? vs(e.inputVariables), e); +} +function Vp(e) { + let t = $o(e), n = t[0] * 256, r = t[1], i = t[2] * 256, a = Math.round(t[3] * 255); + return [n + r, i + a]; +} +var Hp = "vec4 unpackColor(vec2 packedColor) {\n return vec4(\n min(floor(packedColor[0] / 256.0) / 255.0, 1.0),\n min(mod(packedColor[0], 256.0) / 255.0, 1.0),\n min(floor(packedColor[1] / 256.0) / 255.0, 1.0),\n min(mod(packedColor[1], 256.0) / 255.0, 1.0)\n );\n}"; +function Up(e) { + return e === U || e === ss ? 2 : e === os ? 4 : e === H ? 3 : 1; +} +function Wp(e) { + if (e === H) return "float"; + let t = Up(e); + return t > 1 ? `vec${t}` : "float"; +} +function Gp(e, t) { + for (let n of t.variables.entries()) { + let [t, r] = n, i = kp(t), a = Wp(r); + r === U && (a = "vec4"), e.addUniform(i, a); + } + for (let n of t.properties.entries()) { + let [t, r] = n, i = Wp(r), a = `a_prop_${t}`; + r === U ? e.addAttribute(a, i, `unpackColor(${a})`, "vec4") : e.addAttribute(a, i); + } + for (let n in t.functions) e.addVertexShaderFunction(t.functions[n]), e.addFragmentShaderFunction(t.functions[n]); +} +function Kp(e, t) { + let n = {}; + for (let r of e.variables.entries()) { + let [e, i] = r, a = kp(e); + n[a] = () => { + let n = t[e]; + if (i === as) return +!!n; + if (i === U) { + let e = [...$o(n || "#eee")]; + return e[0] /= 255, e[1] /= 255, e[2] /= 255, e[3] ??= 1, e; + } + return i === H ? Dp(n) : n; +>>>>>>> Stashed changes }; } return n; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Cp(e) { +======= +function qp(e) { +>>>>>>> Stashed changes +======= +function qp(e) { +>>>>>>> Stashed changes let t = {}; for (let n of e.properties.entries()) { let [e, r] = n, i = (t) => { let n = t.get(e); +<<<<<<< Updated upstream +<<<<<<< Updated upstream return r === G ? _p([...Ui(n || "#eee")]) : r === Bs ? +!!n : n; }; t[`prop_${e}`] = { size: yp(r), +======= + return r === U ? Vp([...$o(n || "#eee")]) : r === as ? +!!n : n; + }; + t[`prop_${e}`] = { + size: Up(r), +>>>>>>> Stashed changes +======= + return r === U ? Vp([...$o(n || "#eee")]) : r === as ? +!!n : n; + }; + t[`prop_${e}`] = { + size: Up(r), +>>>>>>> Stashed changes callback: i }; } @@ -11806,15 +21195,36 @@ function Cp(e) { } //#endregion //#region node_modules/ol/render/webgl/float64Util.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function wp(e) { return e - Tp(e); } function Tp(e) { +======= +======= +>>>>>>> Stashed changes +function Jp(e) { + return e - Yp(e); +} +function Yp(e) { +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes return Math.fround(e); } //#endregion //#region node_modules/ol/render/webgl/ShaderBuilder.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var Ep = `#ifdef GL_FRAGMENT_PRECISION_HIGH +======= +var Xp = `#ifdef GL_FRAGMENT_PRECISION_HIGH +>>>>>>> Stashed changes +======= +var Xp = `#ifdef GL_FRAGMENT_PRECISION_HIGH +>>>>>>> Stashed changes precision highp float; #else precision mediump float; @@ -11851,7 +21261,15 @@ vec2 worldToPx(vec2 worldPos) { vec4 screenPos = u_projectionMatrix * vec4(worldPos, 0.0, 1.0); return (0.5 * screenPos.xy + 0.5) * u_viewportSizePx; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream ${vp} +======= +${Hp} +>>>>>>> Stashed changes +======= +${Hp} +>>>>>>> Stashed changes vec2 df_from(float value) { return vec2(value, 0.); @@ -11964,9 +21382,21 @@ float df_mod(vec2 df, vec2 m) { return rem.x + rem.y * u_one; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream `, Dp = hp(), Op = class { constructor() { this.uniforms_ = [], this.attributes_ = [], this.hasSymbol_ = !1, this.symbolSizeExpression_ = `vec2(${Zf(Dp["circle-radius"])} + ${Zf(Dp["circle-stroke-width"] * .5)})`, this.symbolRotationExpression_ = "0.0", this.symbolOffsetExpression_ = "vec2(0.0)", this.symbolColorExpression_ = $f(Dp["circle-fill-color"]), this.texCoordExpression_ = "vec4(0.0, 0.0, 1.0, 1.0)", this.fragmentDiscardExpression_ = null, this.shapeDiscardExpression_ = null, this.symbolRotateWithView_ = !1, this.hasStroke_ = !1, this.strokeWidthExpression_ = Zf(Dp["stroke-width"]), this.strokeColorExpression_ = $f(Dp["stroke-color"]), this.strokeOffsetExpression_ = "0.", this.strokeCapExpression_ = ip("round"), this.strokeJoinExpression_ = ip("round"), this.strokeMiterLimitExpression_ = "10.", this.strokeDistanceFieldExpression_ = "-1000.", this.strokePatternLengthExpression_ = null, this.hasFill_ = !1, this.fillColorExpression_ = $f(Dp["fill-color"]), this.fillPatternSizeExpression_ = null, this.vertexShaderFunctions_ = [], this.fragmentShaderFunctions_ = []; +======= +`, Zp = zp(), Qp = class { + constructor() { + this.uniforms_ = [], this.attributes_ = [], this.hasSymbol_ = !1, this.symbolSizeExpression_ = `vec2(${xp(Zp["circle-radius"])} + ${xp(Zp["circle-stroke-width"] * .5)})`, this.symbolRotationExpression_ = "0.0", this.symbolOffsetExpression_ = "vec2(0.0)", this.symbolColorExpression_ = Cp(Zp["circle-fill-color"]), this.texCoordExpression_ = "vec4(0.0, 0.0, 1.0, 1.0)", this.fragmentDiscardExpression_ = null, this.shapeDiscardExpression_ = null, this.symbolRotateWithView_ = !1, this.hasStroke_ = !1, this.strokeWidthExpression_ = xp(Zp["stroke-width"]), this.strokeColorExpression_ = Cp(Zp["stroke-color"]), this.strokeOffsetExpression_ = "0.", this.strokeCapExpression_ = Op("round"), this.strokeJoinExpression_ = Op("round"), this.strokeMiterLimitExpression_ = "10.", this.strokeDistanceFieldExpression_ = "-1000.", this.strokePatternLengthExpression_ = null, this.hasFill_ = !1, this.fillColorExpression_ = Cp(Zp["fill-color"]), this.fillPatternSizeExpression_ = null, this.vertexShaderFunctions_ = [], this.fragmentShaderFunctions_ = []; +>>>>>>> Stashed changes +======= +`, Zp = zp(), Qp = class { + constructor() { + this.uniforms_ = [], this.attributes_ = [], this.hasSymbol_ = !1, this.symbolSizeExpression_ = `vec2(${xp(Zp["circle-radius"])} + ${xp(Zp["circle-stroke-width"] * .5)})`, this.symbolRotationExpression_ = "0.0", this.symbolOffsetExpression_ = "vec2(0.0)", this.symbolColorExpression_ = Cp(Zp["circle-fill-color"]), this.texCoordExpression_ = "vec4(0.0, 0.0, 1.0, 1.0)", this.fragmentDiscardExpression_ = null, this.shapeDiscardExpression_ = null, this.symbolRotateWithView_ = !1, this.hasStroke_ = !1, this.strokeWidthExpression_ = xp(Zp["stroke-width"]), this.strokeColorExpression_ = Cp(Zp["stroke-color"]), this.strokeOffsetExpression_ = "0.", this.strokeCapExpression_ = Op("round"), this.strokeJoinExpression_ = Op("round"), this.strokeMiterLimitExpression_ = "10.", this.strokeDistanceFieldExpression_ = "-1000.", this.strokePatternLengthExpression_ = null, this.hasFill_ = !1, this.fillColorExpression_ = Cp(Zp["fill-color"]), this.fillPatternSizeExpression_ = null, this.vertexShaderFunctions_ = [], this.fragmentShaderFunctions_ = []; +>>>>>>> Stashed changes } addUniform(e, t) { return this.uniforms_.push({ @@ -12071,7 +21501,15 @@ float df_mod(vec2 df, vec2 m) { return this.fragmentShaderFunctions_.includes(e) || this.fragmentShaderFunctions_.push(e), this; } getSymbolVertexShader() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return this.hasSymbol_ ? `${Ep} +======= + return this.hasSymbol_ ? `${Xp} +>>>>>>> Stashed changes +======= + return this.hasSymbol_ ? `${Xp} +>>>>>>> Stashed changes ${this.uniforms_.map((e) => `uniform ${e.type} ${e.name};`).join("\n")} attribute vec2 a_position; attribute vec2 a_localPosition; @@ -12122,7 +21560,15 @@ ${this.shapeDiscardExpression_ ? ` if (${this.shapeDiscardExpression_}) { gl_Po }` : null; } getSymbolFragmentShader() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return this.hasSymbol_ ? `${Ep} +======= + return this.hasSymbol_ ? `${Xp} +>>>>>>> Stashed changes +======= + return this.hasSymbol_ ? `${Xp} +>>>>>>> Stashed changes ${this.uniforms_.map((e) => `uniform ${e.type} ${e.name};`).join("\n")} varying vec2 v_texCoord; varying vec4 v_hitColor; @@ -12148,7 +21594,15 @@ ${this.fragmentDiscardExpression_ ? ` if (${this.fragmentDiscardExpression_}) { }` : null; } getStrokeVertexShader() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return this.hasStroke_ ? `${Ep} +======= + return this.hasStroke_ ? `${Xp} +>>>>>>> Stashed changes +======= + return this.hasStroke_ ? `${Xp} +>>>>>>> Stashed changes ${this.uniforms_.map((e) => `uniform ${e.type} ${e.name};`).join("\n")} attribute vec2 a_segmentStart; attribute vec2 a_segmentEnd; @@ -12227,7 +21681,15 @@ void main(void) { vec2 joinDirection; vec2 positionPx = mix(segmentStartPx, segmentEndPx, startEndRatio); // if angle is too high, do not make a proper join +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (cos(angle) > ${gp} || isCap(angle)) { +======= + if (cos(angle) > ${Bp} || isCap(angle)) { +>>>>>>> Stashed changes +======= + if (cos(angle) > ${Bp} || isCap(angle)) { +>>>>>>> Stashed changes joinDirection = normalPx * normalDir - tangentPx * tangentDir; } else { joinDirection = getJoinOffsetDirection(normalPx * normalDir, angle); @@ -12253,7 +21715,15 @@ ${this.shapeDiscardExpression_ ? ` if (${this.shapeDiscardExpression_}) { gl_Po }` : null; } getStrokeFragmentShader() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return this.hasStroke_ ? `${Ep} +======= + return this.hasStroke_ ? `${Xp} +>>>>>>> Stashed changes +======= + return this.hasStroke_ ? `${Xp} +>>>>>>> Stashed changes ${this.uniforms_.map((e) => `uniform ${e.type} ${e.name};`).join("\n")} varying vec2 v_segmentStartPx; varying vec2 v_segmentEndPx; @@ -12309,7 +21779,15 @@ float bevelJoinField(vec2 point, vec2 start, vec2 end, float width, float joinAn } float miterJoinDistanceField(vec2 point, vec2 start, vec2 end, float width, float joinAngle) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (cos(joinAngle) > ${gp}) { // avoid risking a division by zero +======= + if (cos(joinAngle) > ${Bp}) { // avoid risking a division by zero +>>>>>>> Stashed changes +======= + if (cos(joinAngle) > ${Bp}) { // avoid risking a division by zero +>>>>>>> Stashed changes return bevelJoinField(point, start, end, width, joinAngle); } float miterLength = 1. / sin(joinAngle * 0.5); @@ -12321,18 +21799,42 @@ float miterJoinDistanceField(vec2 point, vec2 start, vec2 end, float width, floa } float capDistanceField(vec2 point, vec2 start, vec2 end, float width, float capType) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (capType == ${ip("butt")}) { return buttCapDistanceField(point, start, end); } else if (capType == ${ip("square")}) { +======= + if (capType == ${Op("butt")}) { + return buttCapDistanceField(point, start, end); + } else if (capType == ${Op("square")}) { +>>>>>>> Stashed changes +======= + if (capType == ${Op("butt")}) { + return buttCapDistanceField(point, start, end); + } else if (capType == ${Op("square")}) { +>>>>>>> Stashed changes return squareCapDistanceField(point, start, end, width); } return roundCapDistanceField(point, start, end, width); } float joinDistanceField(vec2 point, vec2 start, vec2 end, float width, float joinAngle, float joinType) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (joinType == ${ip("bevel")}) { return bevelJoinField(point, start, end, width, joinAngle); } else if (joinType == ${ip("miter")}) { +======= + if (joinType == ${Op("bevel")}) { + return bevelJoinField(point, start, end, width, joinAngle); + } else if (joinType == ${Op("miter")}) { +>>>>>>> Stashed changes +======= + if (joinType == ${Op("bevel")}) { + return bevelJoinField(point, start, end, width, joinAngle); + } else if (joinType == ${Op("miter")}) { +>>>>>>> Stashed changes return miterJoinDistanceField(point, start, end, width, joinAngle); } return roundJoinDistanceField(point, start, end, width); @@ -12404,7 +21906,15 @@ ${this.fragmentDiscardExpression_ ? ` if (${this.fragmentDiscardExpression_}) { }` : null; } getFillVertexShader() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return this.hasFill_ ? `${Ep} +======= + return this.hasFill_ ? `${Xp} +>>>>>>> Stashed changes +======= + return this.hasFill_ ? `${Xp} +>>>>>>> Stashed changes ${this.uniforms_.map((e) => `uniform ${e.type} ${e.name};`).join("\n")} attribute vec2 a_position; attribute vec2 a_hitColor; @@ -12442,7 +21952,15 @@ ${this.shapeDiscardExpression_ ? ` if (${this.shapeDiscardExpression_}) { gl_Po }` : null; } getFillFragmentShader() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return this.hasFill_ ? `${Ep} +======= + return this.hasFill_ ? `${Xp} +>>>>>>> Stashed changes +======= + return this.hasFill_ ? `${Xp} +>>>>>>> Stashed changes ${this.uniforms_.map((e) => `uniform ${e.type} ${e.name};`).join("\n")} varying vec4 v_hitColor; varying vec2 v_patternOriginPx; @@ -12477,12 +21995,24 @@ ${this.fragmentDiscardExpression_ ? ` if (${this.fragmentDiscardExpression_}) { }; //#endregion //#region node_modules/ol/geom/flat/interpolate.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function kp(e, t, n, r, i, a, o) { let s, c, u = (n - t) / r; if (u === 1) s = t; else if (u === 2) s = t, c = i; else if (u !== 0) { let a = e[t], o = e[t + 1], u = 0, d = [0]; +======= +======= +>>>>>>> Stashed changes +function $p(e, t, n, r, i, a, o) { + let s, c, l = (n - t) / r; + if (l === 1) s = t; + else if (l === 2) s = t, c = i; + else if (l !== 0) { + let a = e[t], o = e[t + 1], l = 0, u = [0]; +>>>>>>> Stashed changes for (let i = t + r; i < n; i += r) { let t = e[i], n = e[i + 1]; u += Math.sqrt((t - a) * (t - a) + (n - o) * (n - o)), d.push(u), a = t, o = n; @@ -12496,8 +22026,16 @@ function kp(e, t, n, r, i, a, o) { } //#endregion //#region node_modules/ol/geom/flat/center.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Ap(e, t, n, r) { let i = [], a = at(); +======= +======= +>>>>>>> Stashed changes +function em(e, t, n, r) { + let i = [], a = We(); +>>>>>>> Stashed changes for (let o = 0, s = n.length; o < s; ++o) { let s = n[o]; a = lt(e, t, s[0], r), i.push((a[0] + a[2]) / 2, (a[1] + a[3]) / 2), t = s[s.length - 1]; @@ -12506,7 +22044,15 @@ function Ap(e, t, n, r) { } //#endregion //#region node_modules/ol/render/Feature.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var jp = Kr(), Mp = class e { +======= +var tm = qr(), nm = class e { +>>>>>>> Stashed changes +======= +var tm = qr(), nm = class e { +>>>>>>> Stashed changes constructor(e, t, n, r, i, a) { this.styleFunction, this.extent_, this.id_ = a, this.type_ = e, this.flatCoordinates_ = t, this.flatInteriorPoints_ = null, this.flatMidpoints_ = null, this.ends_ = n || null, this.properties_ = i, this.squaredTolerance_, this.stride_ = r, this.simplifiedGeometry_; } @@ -12518,28 +22064,62 @@ var jp = Kr(), Mp = class e { } getFlatInteriorPoint() { if (!this.flatInteriorPoints_) { +<<<<<<< Updated upstream let e = yt(this.getExtent()); this.flatInteriorPoints_ = Ga(this.flatCoordinates_, 0, this.ends_, this.stride_, e, 0); +======= + let e = it(this.getExtent()); + this.flatInteriorPoints_ = Gi(this.flatCoordinates_, 0, this.ends_, this.stride_, e, 0); +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes } return this.flatInteriorPoints_; } getFlatInteriorPoints() { if (!this.flatInteriorPoints_) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let e = Za(this.flatCoordinates_, this.ends_), t = Ap(this.flatCoordinates_, 0, e, this.stride_); this.flatInteriorPoints_ = Ka(this.flatCoordinates_, 0, e, this.stride_, t); +======= + let e = Zi(this.flatCoordinates_, this.ends_), t = em(this.flatCoordinates_, 0, e, this.stride_); + this.flatInteriorPoints_ = Ki(this.flatCoordinates_, 0, e, this.stride_, t); +>>>>>>> Stashed changes +======= + let e = Zi(this.flatCoordinates_, this.ends_), t = em(this.flatCoordinates_, 0, e, this.stride_); + this.flatInteriorPoints_ = Ki(this.flatCoordinates_, 0, e, this.stride_, t); +>>>>>>> Stashed changes } return this.flatInteriorPoints_; } getFlatMidpoint() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return this.flatMidpoints_ ||= kp(this.flatCoordinates_, 0, this.flatCoordinates_.length, this.stride_, .5), this.flatMidpoints_; +======= + return this.flatMidpoints_ ||= $p(this.flatCoordinates_, 0, this.flatCoordinates_.length, this.stride_, .5), this.flatMidpoints_; +>>>>>>> Stashed changes +======= + return this.flatMidpoints_ ||= $p(this.flatCoordinates_, 0, this.flatCoordinates_.length, this.stride_, .5), this.flatMidpoints_; +>>>>>>> Stashed changes } getFlatMidpoints() { if (!this.flatMidpoints_) { this.flatMidpoints_ = []; let e = this.flatCoordinates_, t = 0, n = this.ends_; for (let r = 0, i = n.length; r < i; ++r) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let i = n[r], a = kp(e, t, i, this.stride_, .5); m(this.flatMidpoints_, a), t = i; +======= +======= +>>>>>>> Stashed changes + let i = n[r], a = $p(e, t, i, this.stride_, .5); + ue(this.flatMidpoints_, a), t = i; +>>>>>>> Stashed changes } } return this.flatMidpoints_; @@ -12578,8 +22158,16 @@ var jp = Kr(), Mp = class e { e = gr(e); let t = e.getExtent(), n = e.getWorldExtent(); if (t && n) { +<<<<<<< Updated upstream let e = Ct(n) / Ct(t); $r(jp, n[0], n[3], e, -e, 0, 0, 0), sa(this.flatCoordinates_, 0, this.flatCoordinates_.length, this.stride_, jp, this.flatCoordinates_); +======= + let e = ct(n) / ct(t); + ei(tm, n[0], n[3], e, -e, 0, 0, 0), si(this.flatCoordinates_, 0, this.flatCoordinates_.length, this.stride_, tm, this.flatCoordinates_); +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes } } applyTransform(e) { @@ -12598,21 +22186,53 @@ var jp = Kr(), Mp = class e { let r = this.simplifiedGeometry_.getFlatCoordinates(), i; switch (this.type_) { case "LineString": +<<<<<<< Updated upstream +<<<<<<< Updated upstream r.length = Ra(r, 0, this.simplifiedGeometry_.flatCoordinates_.length, this.simplifiedGeometry_.stride_, t, r, 0), i = [r.length]; break; case "MultiLineString": i = [], r.length = za(r, 0, this.simplifiedGeometry_.ends_, this.simplifiedGeometry_.stride_, t, r, 0, i); break; case "Polygon": i = [], r.length = Ha(r, 0, this.simplifiedGeometry_.ends_, this.simplifiedGeometry_.stride_, Math.sqrt(t), r, 0, i); +======= + r.length = Ri(r, 0, this.simplifiedGeometry_.flatCoordinates_.length, this.simplifiedGeometry_.stride_, t, r, 0), i = [r.length]; + break; + case "MultiLineString": + i = [], r.length = zi(r, 0, this.simplifiedGeometry_.ends_, this.simplifiedGeometry_.stride_, t, r, 0, i); + break; + case "Polygon": i = [], r.length = Hi(r, 0, this.simplifiedGeometry_.ends_, this.simplifiedGeometry_.stride_, Math.sqrt(t), r, 0, i); +>>>>>>> Stashed changes +======= + r.length = Ri(r, 0, this.simplifiedGeometry_.flatCoordinates_.length, this.simplifiedGeometry_.stride_, t, r, 0), i = [r.length]; + break; + case "MultiLineString": + i = [], r.length = zi(r, 0, this.simplifiedGeometry_.ends_, this.simplifiedGeometry_.stride_, t, r, 0, i); + break; + case "Polygon": i = [], r.length = Hi(r, 0, this.simplifiedGeometry_.ends_, this.simplifiedGeometry_.stride_, Math.sqrt(t), r, 0, i); +>>>>>>> Stashed changes } return i && (this.simplifiedGeometry_ = new e(this.type_, r, i, this.stride_, this.properties_, this.id_)), this.squaredTolerance_ = t, this.simplifiedGeometry_; }), this; } }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream Mp.prototype.getFlatCoordinates = Mp.prototype.getOrientedFlatCoordinates; //#endregion //#region node_modules/ol/render/webgl/MixedGeometryBatch.js var Np = class e { +======= +nm.prototype.getFlatCoordinates = nm.prototype.getOrientedFlatCoordinates; +//#endregion +//#region node_modules/ol/render/webgl/MixedGeometryBatch.js +var rm = class e { +>>>>>>> Stashed changes +======= +nm.prototype.getFlatCoordinates = nm.prototype.getOrientedFlatCoordinates; +//#endregion +//#region node_modules/ol/render/webgl/MixedGeometryBatch.js +var rm = class e { +>>>>>>> Stashed changes constructor() { this.globalCounter_ = 0, this.refToFeature_ = /* @__PURE__ */ new Map(), this.uidToRef_ = /* @__PURE__ */ new Map(), this.freeGlobalRef_ = [], this.polygonBatch = { entries: {}, @@ -12712,8 +22332,18 @@ var Np = class e { break; case "Polygon": { let e = n; +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (r instanceof Mp) { let n = Za(t, e); +======= + if (r instanceof nm) { + let n = Zi(t, e); +>>>>>>> Stashed changes +======= + if (r instanceof nm) { + let n = Zi(t, e); +>>>>>>> Stashed changes if (n.length > 1) { this.addCoordinates_("MultiPolygon", t, n, r, i, a, o); return; @@ -12727,7 +22357,15 @@ var Np = class e { ringsVerticesCounts: [] })), s = t.length / a; let c = n.length, l = n.map((e, t, n) => t > 0 ? (e - n[t - 1]) / a : e / a); +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.polygonBatch.verticesCount += s, this.polygonBatch.ringsCount += c, this.polygonBatch.geometriesCount++, this.polygonBatch.entries[i].flatCoordss.push(Pp(t, a)), this.polygonBatch.entries[i].ringsVerticesCounts.push(l), this.polygonBatch.entries[i].verticesCount += s, this.polygonBatch.entries[i].ringsCount += c; +======= + this.polygonBatch.verticesCount += s, this.polygonBatch.ringsCount += c, this.polygonBatch.geometriesCount++, this.polygonBatch.entries[i].flatCoordss.push(im(t, a)), this.polygonBatch.entries[i].ringsVerticesCounts.push(l), this.polygonBatch.entries[i].verticesCount += s, this.polygonBatch.entries[i].ringsCount += c; +>>>>>>> Stashed changes +======= + this.polygonBatch.verticesCount += s, this.polygonBatch.ringsCount += c, this.polygonBatch.geometriesCount++, this.polygonBatch.entries[i].flatCoordss.push(im(t, a)), this.polygonBatch.entries[i].ringsVerticesCounts.push(l), this.polygonBatch.entries[i].verticesCount += s, this.polygonBatch.entries[i].ringsCount += c; +>>>>>>> Stashed changes for (let n = 0, s = e.length; n < s; n++) { let s = n > 0 ? e[n - 1] : 0; this.addCoordinates_("LinearRing", t.slice(s, e[n]), null, r, i, a, o); @@ -12745,7 +22383,15 @@ var Np = class e { feature: r, flatCoordss: [], verticesCount: 0 +<<<<<<< Updated upstream +<<<<<<< Updated upstream })), s = t.length / a, this.lineStringBatch.verticesCount += s, this.lineStringBatch.geometriesCount++, this.lineStringBatch.entries[i].flatCoordss.push(Fp(t, a, o)), this.lineStringBatch.entries[i].verticesCount += s; +======= + })), s = t.length / a, this.lineStringBatch.verticesCount += s, this.lineStringBatch.geometriesCount++, this.lineStringBatch.entries[i].flatCoordss.push(am(t, a, o)), this.lineStringBatch.entries[i].verticesCount += s; +>>>>>>> Stashed changes +======= + })), s = t.length / a, this.lineStringBatch.verticesCount += s, this.lineStringBatch.geometriesCount++, this.lineStringBatch.entries[i].flatCoordss.push(am(t, a, o)), this.lineStringBatch.entries[i].verticesCount += s; +>>>>>>> Stashed changes } } addRefToEntry_(e, t) { @@ -12783,24 +22429,62 @@ var Np = class e { return r ? new e() : n; } }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Pp(e, t) { return t === 2 ? e : e.filter((e, n) => n % t < 2); } function Fp(e, t, n) { +======= +function im(e, t) { + return t === 2 ? e : e.filter((e, n) => n % t < 2); +} +function am(e, t, n) { +>>>>>>> Stashed changes +======= +function im(e, t) { + return t === 2 ? e : e.filter((e, n) => n % t < 2); +} +function am(e, t, n) { +>>>>>>> Stashed changes return t === 3 && n === "XYM" ? e : t === 4 ? e.filter((e, n) => n % t !== 2) : t === 3 ? e.map((e, n) => n % t === 2 ? 0 : e) : Array(e.length * 1.5).fill(0).map((t, n) => n % 3 == 2 ? 0 : e[Math.round(n / 1.5)]); } //#endregion //#region node_modules/ol/webgl/LabelsArray.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var Ip = new TextEncoder(), Lp = 1e5, Rp = class { constructor() { this.array_ = new Uint8Array(Lp), this.actualSize_ = 0, this.labelPositionMap_ = /* @__PURE__ */ new Map(); +======= +var om = new TextEncoder(), sm = 1e5, cm = class { + constructor() { + this.array_ = new Uint8Array(sm), this.actualSize_ = 0, this.labelPositionMap_ = /* @__PURE__ */ new Map(); +>>>>>>> Stashed changes +======= +var om = new TextEncoder(), sm = 1e5, cm = class { + constructor() { + this.array_ = new Uint8Array(sm), this.actualSize_ = 0, this.labelPositionMap_ = /* @__PURE__ */ new Map(); +>>>>>>> Stashed changes } push(e) { if (e === "") return [0, 0]; if (this.labelPositionMap_.has(e)) return this.labelPositionMap_.get(e); +<<<<<<< Updated upstream +<<<<<<< Updated upstream let t = Ip.encode(e); if (this.actualSize_ + t.length > this.array_.length) { let e = new Uint8Array(this.array_.length + Lp); +======= + let t = om.encode(e); + if (this.actualSize_ + t.length > this.array_.length) { + let e = new Uint8Array(this.array_.length + sm); +>>>>>>> Stashed changes +======= + let t = om.encode(e); + if (this.actualSize_ + t.length > this.array_.length) { + let e = new Uint8Array(this.array_.length + sm); +>>>>>>> Stashed changes e.set(this.array_), this.array_ = e; } let n = this.actualSize_; @@ -12814,46 +22498,104 @@ var Ip = new TextEncoder(), Lp = 1e5, Rp = class { }; //#endregion //#region node_modules/ol/worker/textOverlay.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function zp() { +======= +function lm() { +>>>>>>> Stashed changes +======= +function lm() { +>>>>>>> Stashed changes let e = "function t(t,e){return t>e?1:t1?(i=r,n=s):l>0&&(i+=o*l,n+=a*l)}return f(t,e,i,n)}function f(t,e,i,n){const r=i-t,s=n-e;return r*r+s*s}function d(t){return 180*t/Math.PI}function g(t){return t*Math.PI/180}function p(t,e,i){return t+i*(e-t)}function _(t,e,i){if(t>=e&&t.0031308?269.025*Math.pow(t,1/2.4)-14.025:3294.6*t}function P(t){return t>.2068965?Math.pow(t,3):108/841*(t-4/29)}function O(t){return t>10.314724?Math.pow((t+14.025)/269.025,2.4):t/3294.6}function R(t){return t>.0088564?Math.pow(t,1/3):t/(108/841)+4/29}function L(t){const e=O(t[0]),i=O(t[1]),n=O(t[2]),r=R(.222488403*e+.716873169*i+.06060791*n),s=500*(R(.452247074*e+.399439023*i+.148375274*n)-r),o=200*(r-R(.016863605*e+.117638439*i+.865350722*n)),a=Math.atan2(o,s)*(180/Math.PI);return[116*r-16,Math.sqrt(s*s+o*o),a<0?a+360:a,t[3]]}function D(t){if(\"none\"===t)return m;if(I.hasOwnProperty(t))return I[t];if(E>=1024){let t=0;for(const e in I)3&t++||(delete I[e],--E)}const e=M(t);4!==e.length&&b(t);for(const i of e)isNaN(i)&&b(t);return I[t]=e,++E,e}function F(t){return Array.isArray(t)?t:D(t)}function T(t){let e=t[0];e!=(0|e)&&(e=e+.5|0);let i=t[1];i!=(0|i)&&(i=i+.5|0);let n=t[2];n!=(0|n)&&(n=n+.5|0);return\"rgba(\"+e+\",\"+i+\",\"+n+\",\"+(void 0===t[3]?1:Math.round(1e3*t[3])/1e3)+\")\"}function z(t,e){return Array.isArray(t)?t:(void 0===e?e=[t,t]:(e[0]=t,e[1]=t),e)}let $=0;const W=1<<$++,G=1<<$++,N=1<<$++,X=1<<$++,Y=1<<$++,B=1<<$++,U=Math.pow(2,6)-1,j={[W]:\"boolean\",[G]:\"number\",[N]:\"string\",[X]:\"color\",[Y]:\"number[]\",[B]:\"size\"},V=Object.keys(j).map(Number).sort(t);function q(t){const e=[];for(const i of V)J(t,i)&&e.push(j[i]);return 0===e.length?\"untyped\":e.length<3?e.join(\" or \"):e.slice(0,-1).join(\", \")+\", or \"+e[e.length-1]}function J(t,e){return(t&e)===e}function K(t,e){return!!(t&e)}function H(t,e){return t===e}class Z{constructor(t,e){if(!function(t){return t in j}(t))throw new Error(`literal expressions must have a specific type, got ${q(t)}`);this.type=t,this.value=e}}class Q{constructor(t,e,...i){this.type=t,this.operator=e,this.args=i}}function tt(t){return{variables:new Map,properties:new Map,featureId:!1,geometryType:!1,mCoordinate:!1,mapState:!1,inputVariables:t}}function et(t,e,i){switch(typeof t){case\"boolean\":if(H(e,N))return new Z(N,t?\"true\":\"false\");if(!J(e,W))throw new Error(`got a boolean, but expected ${q(e)}`);return new Z(W,t);case\"number\":if(H(e,B))return new Z(B,z(t));if(H(e,W))return new Z(W,!!t);if(H(e,N))return new Z(N,t.toString());if(!J(e,G))throw new Error(`got a number, but expected ${q(e)}`);return new Z(G,t);case\"string\":if(H(e,X))return new Z(X,D(t));if(H(e,W))return new Z(W,!!t);if(!J(e,N))throw new Error(`got a string, but expected ${q(e)}`);return new Z(N,t)}if(!Array.isArray(t))throw new Error(\"expression must be an array or a primitive value\");if(0===t.length)throw new Error(\"empty expression\");if(\"string\"==typeof t[0])return function(t,e,i){const n=t[0],r=Jt[n];if(!r)throw new Error(`unknown operator: ${n}`);return r(t,e,i)}(t,e,i);for(const e of t)if(\"number\"!=typeof e)throw new Error(\"expected an array of numbers\");if(H(e,B)){if(2!==t.length)throw new Error(`expected an array of two values for a size, got ${t.length}`);return new Z(B,t)}if(H(e,X)){if(3===t.length)return new Z(X,[...t,1]);if(4===t.length)return new Z(X,t);throw new Error(`expected an array of 3 or 4 values for a color, got ${t.length}`)}if(!J(e,Y))throw new Error(`got an array of numbers, but expected ${q(e)}`);return new Z(Y,t)}const it=\"get\",nt=\"var\",rt=\"concat\",st=\"geometry-type\",ot=\"line-metric\",at=\"any\",lt=\"all\",ht=\"!\",ct=\"resolution\",ut=\"zoom\",ft=\"time\",dt=\"==\",gt=\"!=\",pt=\">\",_t=\">=\",mt=\"<\",yt=\"<=\",wt=\"*\",xt=\"/\",vt=\"+\",St=\"-\",Ct=\"clamp\",bt=\"%\",Mt=\"^\",It=\"abs\",Et=\"floor\",kt=\"ceil\",At=\"round\",Pt=\"sin\",Ot=\"cos\",Rt=\"atan\",Lt=\"sqrt\",Dt=\"match\",Ft=\"between\",Tt=\"interpolate\",zt=\"coalesce\",$t=\"case\",Wt=\"in\",Gt=\"number\",Nt=\"string\",Xt=\"array\",Yt=\"color\",Bt=\"id\",Ut=\"band\",jt=\"palette\",Vt=\"to-string\",qt=\"has\",Jt={[it]:re(Qt(1,1/0),Kt),[nt]:function(t,e,i){const n=t[1];if(\"string\"!=typeof n)throw new Error(\"expected a string argument for var operation\");let r=e;const s=i.inputVariables?.[n];if(void 0!==s){const t=et(s,U,i);if(!(t instanceof Z))throw new Error(`style variables should only be literal values (no expressions!), variable name: ${n}`);let o=t.type;if(\"string\"==typeof s&&K(r,X)&&!K(r,N)?o=X:Array.isArray(s)&&2===s.length&&K(r,B)&&!K(r,Y)&&(o=B),r&=o,0===r)throw new Error(`the type expected from the var operator (${q(e)}) did not have any overlap with the type of the corresponding style variables (${q(o)}), variable name: ${n}`)}if(i.variables.has(n)){const t=i.variables.get(n);if(r&=t,0===r)throw new Error(`a new type expected from the var operator (${q(e)}) did not have any overlap with the previous type expected for it (${q(t)}), variable name: ${n}`)}return i.variables.set(n,r),new Q(r,\"var\",new Z(N,n))},[qt]:re(Qt(1,1/0),Kt),[Bt]:re(function(t,e,i){i.featureId=!0},Zt),[rt]:re(Qt(2,1/0),ee(N)),[st]:re(function(t,e,i){i.geometryType=!0},Zt),[ot]:re(function(t,e,i){i.mCoordinate=!0},Zt),[ct]:re(Ht,Zt),[ut]:re(Ht,Zt),[ft]:re(Ht,Zt),[at]:re(Qt(2,1/0),ee(W)),[lt]:re(Qt(2,1/0),ee(W)),[ht]:re(Qt(1,1),ee(W)),[dt]:re(Qt(2,2),ie()),[gt]:re(Qt(2,2),ie()),[pt]:re(Qt(2,2),ee(G)),[_t]:re(Qt(2,2),ee(G)),[mt]:re(Qt(2,2),ee(G)),[yt]:re(Qt(2,2),ee(G)),[wt]:re(Qt(2,1/0),te),[zt]:re(Qt(2,1/0),te),[xt]:re(Qt(2,2),ee(G)),[vt]:re(Qt(2,1/0),ee(G)),[St]:re(Qt(2,2),ee(G)),[Ct]:re(Qt(3,3),ee(G)),[bt]:re(Qt(2,2),ee(G)),[Mt]:re(Qt(2,2),ee(G)),[It]:re(Qt(1,1),ee(G)),[Et]:re(Qt(1,1),ee(G)),[kt]:re(Qt(1,1),ee(G)),[At]:re(Qt(1,1),ee(G)),[Pt]:re(Qt(1,1),ee(G)),[Ot]:re(Qt(1,1),ee(G)),[Rt]:re(Qt(1,2),ee(G)),[Lt]:re(Qt(1,1),ee(G)),[Dt]:re(Qt(4,1/0),ne,function(t,e,i){const n=t.length-1,r=et(t[t.length-1],e,i);let s=N|G|W;const o=new Array(n-2);for(let e=0;ee){throw new Error(`expected ${e===1/0?`${t} or more`:`${t} to ${e}`} arguments for ${s}, got ${o}`)}}}function te(t,e,i){const n=t.length-1,r=new Array(n);for(let s=0;sr&&(l|=he),as&&(l|=le),l===oe&&(l=ae),l}function _e(t,e,i,n,r){return r?(r[0]=t,r[1]=e,r[2]=i,r[3]=n,r):[t,e,i,n]}function me(t){return _e(1/0,1/0,-1/0,-1/0,t)}function ye(t,e){const i=t[0],n=t[1];return _e(i,n,i,n,e)}function we(t,e,i,n,r){return xe(me(r),t,e,i,n)}function xe(t,e,i,n,r){for(;i=e[0]&&t[1]<=e[3]&&t[3]>=e[1]}function Me(t,e,i,n){let r=t[e],s=t[e+1],o=0;for(let a=e+n;a0?l:2*Math.PI-l}([t,e],[i,n],[r,s]);if(Math.cos(d)>.998)return[t+u*o,e+f*o];const g=Math.cos(d/2),p=Math.sin(d/2);return[t+(p*a+g*l)*(1/p)*o,e+(-g*a+p*l)*(1/p)*o]}function ke(t,e,i=!1){for(let n=0,r=t.length-2;nn+e;r-=e){const i=t[n],s=t[n+1],o=t[n+e],a=t[n+e+1],l=t[r],h=t[r+1],c=t[r+e],u=t[r+e+1],f=(u-h)*(o-i)-(c-l)*(a-s);if(0===f)continue;const d=((c-l)*(s-h)-(u-h)*(i-l))/f,g=((o-i)*(s-h)-(a-s)*(i-l))/f;if(d>0&&d<1&&g>0&&g<1){const l=i+d*(o-i),h=s+d*(a-s);t[n+e]=l,t[n+e+1]=h,t.splice(n+2*e,r-n-e);break}}}return t}function Ae(t,e,i,n,r,s,o){s=s||[],o=o||2;let a=0;for(let l=e;lt[2]}else A=S>E;const P=Math.PI,O=[],R=b+n===e;let L;if(y=0,w=M,d=t[e=b],g=t[e+1],R){x(),L=Math.atan2(g-m,d-_),A&&(L+=L>0?-P:P);const t=(E+S)/2,e=(k+C)/2;return O[0]=[t,e,(I-s)/2,L,r],O}r=r.replace(/\\n/g,\" \");const D=Array.from((Oe||(Oe=new Intl.Segmenter(void 0,{granularity:\"grapheme\"})),Oe).segment(r),t=>t.segment);for(let t=0,r=D.length;t0?-P:P),void 0!==L){let t=u-L;if(t+=t>P?-2*P:t<-P?2*P:0,Math.abs(t)>o)return null}L=u;const f=t;let S=0;for(;t0)}removeEventListener(t,e){if(!this.listeners_)return;const i=this.listeners_[t];if(!i)return;const n=i.indexOf(e);-1!==n&&(this.pendingRemovals_&&t in this.pendingRemovals_?(i[n]=qe,++this.pendingRemovals_[t]):(i.splice(n,1),0===i.length&&delete this.listeners_[t]))}}class Ze extends He{constructor(){super(),this.on=this.onInternal,this.once=this.onceInternal,this.un=this.unInternal,this.revision_=0}changed(){++this.revision_,this.dispatchEvent(je)}getRevision(){return this.revision_}onInternal(t,e){if(Array.isArray(t)){const i=t.length,n=new Array(i);for(let r=0;rt.trim().replace(/^['\"]|['\"]$/g,\"\")),i},li=\"#000\",hi=\"round\",ci=[],ui=\"round\",fi=\"#000\",di=\"center\",gi=\"middle\",pi=[0,0,0,0],_i=new ni;let mi,yi=null;const wi={},xi=new Set([\"serif\",\"sans-serif\",\"monospace\",\"cursive\",\"fantasy\",\"system-ui\",\"ui-serif\",\"ui-sans-serif\",\"ui-monospace\",\"ui-rounded\",\"emoji\",\"math\",\"fangsong\"]);function vi(t,e,i){return`${t} ${e} 16px \"${i}\"`}const Si=function(){const t=100;let e,i;async function n(t){await i.ready;const e=ai(t),n=e.families[0].toLowerCase(),r=e.weight,s=[];if(i.forEach(t=>{const i=t.family.replace(/^['\"]|['\"]$/g,\"\").toLowerCase(),o=oi[t.weight]||t.weight;i===n&&t.style===e.style&&o==r&&s.push(t)}),0===s.length)return!1;return(await Promise.all(s.map(t=>t.load().then(()=>!0,()=>!1)))).some(t=>t)}async function r(){await i.ready;let s=!0;const o=_i.getProperties(),a=Object.keys(o).filter(e=>o[e]=0;--e){const i=a[e];let r=o[i];rMath.max(e,Mi(t,i)),0);return i[e]=n,n}function Ei(t,e,i,n,r,s,o,a,l,h,c){t.save(),1!==i&&(void 0===t.globalAlpha?t.globalAlpha=t=>t.globalAlpha*=i:t.globalAlpha*=i),e&&t.transform.apply(t,e),n.contextInstructions?(t.translate(l,h),t.scale(c[0],c[1]),function(t,e){const i=t.contextInstructions;for(let t=0,n=i.length;t{if(\"function\"==typeof t[e])return this.pendingMethod_=e,this.pushMethodArgs_},set:(t,e,i)=>(this.push_(e,i),!0)})}push_(...t){const e=this.instructions_,i=this.zIndex+this.offset_;e[i]||(e[i]=[]),e[i].push(...t)}pushMethodArgs_=(...t)=>{this.push_(this.pendingMethod_,t)};pushFunction(t){this.push_(t)}getContext(){return this.context_}draw(t){this.instructions_.forEach(e=>{for(let i=0,n=e.length;it.decode().then(()=>e(t)).catch(n=>t.complete&&t.width?e(t):i(n))):function(t){return new Promise((e,i)=>{function n(){s(),e(t)}function r(){s(),i(new Error(\"Image load error\"))}function s(){t.removeEventListener(\"load\",n),t.removeEventListener(\"error\",r)}t.addEventListener(\"load\",n),t.addEventListener(\"error\",r)})}(t)}function Vi(t,e){return t+\":\"+(e?F(e):\"null\")}const qi=new class{constructor(){this.cache_={},this.patternCache_={},this.cacheSize_=0,this.maxCacheSize_=1024}clear(){this.cache_={},this.patternCache_={},this.cacheSize_=0}canExpireCache(){return this.cacheSize_>this.maxCacheSize_}expire(){if(this.canExpireCache()){let t=0;for(const e in this.cache_){const i=this.cache_[e];3&t++||i.hasListener()||(delete this.cache_[e],delete this.patternCache_[e],--this.cacheSize_)}}}get(t,e){const i=Vi(t,e);return i in this.cache_?this.cache_[i]:null}getPattern(t,e){const i=Vi(t,e);return i in this.patternCache_?this.patternCache_[i]:null}set(t,e,i,n){const r=Vi(t,e),s=r in this.cache_;this.cache_[r]=i,n&&(i.getImageState()===Xi&&i.load(),i.getImageState()===Yi?i.ready().then(()=>{this.patternCache_[r]=h().createPattern(i.getImage(1),\"repeat\")}):this.patternCache_[r]=h().createPattern(i.getImage(1),\"repeat\")),s||++this.cacheSize_}setSize(t){this.maxCacheSize_=t,this.expire()}};let Ji=null;class Ki extends He{constructor(t,e,i,n,r){super(),this.hitDetectionImage_=null,this.image_=t,this.crossOrigin_=i?.crossOrigin,this.referrerPolicy_=i?.referrerPolicy,this.canvas_={},this.color_=r,this.imageState_=void 0===n?Xi:n,this.size_=t&&t.width&&t.height?[t.width,t.height]:null,this.src_=e,this.tainted_,this.ready_=null}initializeImage_(){this.image_=new Image,null!==this.crossOrigin_&&(this.image_.crossOrigin=this.crossOrigin_),void 0!==this.referrerPolicy_&&(this.image_.referrerPolicy=this.referrerPolicy_)}isTainted_(){if(void 0===this.tainted_&&this.imageState_===Bi){Ji||(Ji=a(1,1,0,{willReadFrequently:!0})),Ji.drawImage(this.image_,0,0);try{Ji.getImageData(0,0,1,1),this.tainted_=!1}catch{Ji=null,this.tainted_=!0}}return!0===this.tainted_}dispatchChangeEvent_(){this.dispatchEvent(je)}handleImageError_(){this.imageState_=Ui,this.dispatchChangeEvent_()}handleImageLoad_(){this.imageState_=Bi,this.size_=[this.image_.width,this.image_.height],this.dispatchChangeEvent_()}getImage(t){return this.image_||this.initializeImage_(),this.replaceColor_(t),this.canvas_[t]?this.canvas_[t]:this.image_}setImage(t){this.image_=t}getPixelRatio(t){return this.replaceColor_(t),this.canvas_[t]?t:1}getImageState(){return this.imageState_}getHitDetectionImage(){if(this.image_||this.initializeImage_(),!this.hitDetectionImage_)if(this.isTainted_()){const t=this.size_[0],e=this.size_[1],i=a(t,e);i.fillRect(0,0,t,e),this.hitDetectionImage_=i.canvas}else this.hitDetectionImage_=this.image_;return this.hitDetectionImage_}getSize(){return this.size_}getSrc(){return this.src_}load(){if(this.imageState_===Xi){this.image_||this.initializeImage_(),this.imageState_=Yi;try{void 0!==this.src_&&(this.image_.src=this.src_)}catch{this.handleImageError_()}this.image_ instanceof HTMLImageElement&&ji(this.image_,this.src_).then(t=>{this.image_=t,this.handleImageLoad_()}).catch(this.handleImageError_.bind(this))}}replaceColor_(t){if(!this.color_||this.canvas_[t]||this.imageState_!==Bi)return;const e=this.image_,i=a(Math.ceil(e.width*t),Math.ceil(e.height*t)),n=i.canvas;var r;i.scale(t,t),i.drawImage(e,0,0),i.globalCompositeOperation=\"multiply\",i.fillStyle=\"string\"==typeof(r=this.color_)?r:T(r),i.fillRect(0,0,n.width/t,n.height/t),i.globalCompositeOperation=\"destination-in\",i.drawImage(e,0,0),this.canvas_[t]=n}ready(){return this.ready_||(this.ready_=new Promise(t=>{if(this.imageState_===Bi||this.imageState_===Ui)t();else{const e=()=>{this.imageState_!==Bi&&this.imageState_!==Ui||(this.removeEventListener(je,e),t())};this.addEventListener(je,e)}})),this.ready_}}function Hi(t,e,i,n,r,s){let o=void 0===e?void 0:qi.get(e,r);return o||(o=new Ki(t,t&&\"src\"in t?t.src||void 0:e,i,n,r),qi.set(e,r,o,s)),s&&o&&!qi.getPattern(e,r)&&qi.set(e,r,o,s),o}function Zi(t){return t?Array.isArray(t)?T(t):\"object\"==typeof t&&\"src\"in t?function(t){if(!t.offset||!t.size)return qi.getPattern(t.src,t.color);const e=t.src+\":\"+t.offset,i=qi.getPattern(e,t.color);if(i)return i;const n=qi.get(t.src,null);if(n.getImageState()!==Bi)return null;const r=a(t.size[0],t.size[1]);return r.drawImage(n.getImage(1),t.offset[0],t.offset[1],t.size[0],t.size[1],0,0,t.size[0],t.size[1]),Hi(r.canvas,e,void 0,Bi,t.color,!0),qi.getPattern(e,t.color)}(t):t:null}let Qi=0,tn=1;function en(t,e,i,n,r,s,o,a){const l=o-r,h=a-s;let c=0,u=1;if(0===l){if(ri)return!1}else{let e=(t-r)/l,n=(i-r)/l;if(e>n){const t=e;e=n,n=t}if(e>c&&(c=e),nu)return!1}if(0===h){if(sn)return!1}else{let t=(e-s)/h,i=(n-s)/h;if(t>i){const e=t;t=i,i=e}if(t>c&&(c=t),iu)return!1}return Qi=c,tn=u,!0}function nn(t,e,i,n,r){const s=[];let o=i,a=0,l=e.slice(i,2);for(;a=t){const e=(t-a+u)/u,f=p(i,h,e),d=p(n,c,e);l.push(f,d),s.push(l),l=[f,d],a==t&&(o+=r),a=0}else if(a0&&s.push(l),s}function rn(t,e,i,n,r){let s,o,a,l,h,c,u,f,d,g,p=i,_=i,m=0,y=0,w=i;for(o=i;ot&&(y>m&&(m=y,p=w,_=o),y=0,w=o-r)),a=l,u=d,f=g),h=i,c=n}return y+=l,y>m?[w,o]:[p,_]}function sn(t,e,i,n,r){r=void 0!==r?r:[];let s=0;for(let o=e;oa&&(this.instructions.push([Li,a,h,t,i,sn,r]),this.hitDetectionInstructions.push([Li,a,h,t,n||i,sn,r]));break;case\"Point\":l=t.getFlatCoordinates(),this.coordinates.push(l[0],l[1]),h=this.coordinates.length,this.instructions.push([Li,a,h,t,i,void 0,r]),this.hitDetectionInstructions.push([Li,a,h,t,n||i,void 0,r])}this.endGeometry(e)}beginGeometry(t,e,i){this.beginGeometryInstruction1_=[Ai,e,0,t,i],this.instructions.push(this.beginGeometryInstruction1_),this.beginGeometryInstruction2_=[Ai,e,0,t,i],this.hitDetectionInstructions.push(this.beginGeometryInstruction2_)}finish(){return{instructions:this.instructions,hitDetectionInstructions:this.hitDetectionInstructions,coordinates:this.coordinates}}reverseHitDetectionInstructions(){const t=this.hitDetectionInstructions;let i;t.reverse();const n=t.length;let r,s,o=-1;for(i=0;ithis.maxLineWidth&&(this.maxLineWidth=e.lineWidth,this.bufferedMaxExtent_=null)}else e.strokeStyle=void 0,e.lineCap=void 0,e.lineDash=null,e.lineDashOffset=void 0,e.lineJoin=void 0,e.lineWidth=void 0,e.miterLimit=void 0,e.strokeOffset=void 0;return e}setFillStrokeStyle(t,e){const i=this.state;this.fillStyleToState(t,i),this.strokeStyleToState(e,i)}createFill(t){const e=t.fillStyle,i=[Wi,e];return\"string\"!=typeof e&&i.push(t.fillPatternScale),i}applyStroke(t){this.instructions.push(this.createStroke(t))}createStroke(t){return[Gi,t.strokeStyle,t.lineWidth*this.pixelRatio,t.lineCap,t.lineJoin,t.miterLimit,t.lineDash?this.applyPixelRatio(t.lineDash):null,t.lineDashOffset*this.pixelRatio]}updateFillStyle(t,e){const i=t.fillStyle;(void 0!==i&&\"string\"!=typeof i||t.currentFillStyle!=i)&&(this.instructions.push(e.call(this,t)),t.currentFillStyle=i)}updateStrokeStyle(t,e){const i=t.strokeStyle,r=t.lineCap,s=t.lineDash,o=t.lineDashOffset,a=t.lineJoin,l=t.lineWidth,h=t.miterLimit,c=t.strokeOffset;(t.currentStrokeStyle!=i||t.currentLineCap!=r||s!=t.currentLineDash&&!n(t.currentLineDash,s)||t.currentLineDashOffset!=o||t.currentLineJoin!=a||t.currentLineWidth!=l||t.currentMiterLimit!=h||t.currentStrokeOffset!=c)&&(e.call(this,t),t.currentStrokeStyle=i,t.currentLineCap=r,t.currentLineDash=s,t.currentLineDashOffset=o,t.currentLineJoin=a,t.currentLineWidth=l,t.currentMiterLimit=h,t.currentStrokeOffset=c)}endGeometry(t){this.beginGeometryInstruction1_[2]=this.instructions.length,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_[2]=this.hitDetectionInstructions.length,this.beginGeometryInstruction2_=null;const e=[Ti,t];this.instructions.push(e),this.hitDetectionInstructions.push(e)}getBufferedMaxExtent(){if(!this.bufferedMaxExtent_&&(this.bufferedMaxExtent_=this.maxExtent.slice(),this.maxLineWidth>0)){const t=this.resolution*(this.maxLineWidth+1)/2;!function(t,e,i){i?(i[0]=t[0]-e,i[1]=t[1]-e,i[2]=t[2]+e,i[3]=t[3]+e):(t[0],t[1],t[2],t[3])}(this.bufferedMaxExtent_,t,this.bufferedMaxExtent_)}return this.bufferedMaxExtent_}}const cn={left:0,center:.5,right:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1};class un extends hn{constructor(t,e,i,n){super(t,e,i,n),this.labels_=null,this.text_=\"\",this.textOffsetX_=0,this.textOffsetY_=0,this.textRotateWithView_=void 0,this.textKeepUpright_=void 0,this.textRotation_=0,this.textFillState_=null,this.fillStates={},this.fillStates[li]={fillStyle:li},this.textStrokeState_=null,this.strokeStates={},this.textState_={},this.textStates={},this.textKey_=\"\",this.fillKey_=\"\",this.strokeKey_=\"\",this.declutterMode_=void 0,this.declutterImageWithText_=void 0}finish(){const t=super.finish();return t.textStates=this.textStates,t.fillStates=this.fillStates,t.strokeStates=this.strokeStates,t}drawText(t,e,i){const n=this.textFillState_,r=this.textStrokeState_,s=this.textState_;if(\"\"===this.text_||!s||!n&&!r)return;const o=this.coordinates;let a=o.length;const l=t.getType();let h=null,c=t.getStride();if(\"line\"!==s.placement||\"LineString\"!=l&&\"MultiLineString\"!=l&&\"Polygon\"!=l&&\"MultiPolygon\"!=l){let n=s.overflow?null:[];switch(l){case\"Point\":case\"MultiPoint\":h=t.getFlatCoordinates();break;case\"LineString\":h=t.getFlatMidpoint();break;case\"Circle\":h=t.getCenter();break;case\"MultiLineString\":h=t.getFlatMidpoints(),c=2;break;case\"Polygon\":h=t.getFlatInteriorPoint(),s.overflow||n.push(h[2]/this.resolution),c=3;break;case\"MultiPolygon\":const e=t.getFlatInteriorPoints();h=[];for(let t=0,i=e.length;t{const n=o[2*(t+i)]===h[i*c]&&o[2*(t+i)+1]===h[i*c+1];return n||--t,n})}this.saveTextStates_();const u=s.backgroundFill?this.createFill(this.fillStyleToState(s.backgroundFill)):null,f=s.backgroundStroke?this.createStroke(this.strokeStyleToState(s.backgroundStroke)):null;this.beginGeometry(t,e,i);let d=s.padding;if(d!=pi&&(s.scale[0]<0||s.scale[1]<0)){let t=s.padding[0],e=s.padding[1],i=s.padding[2],n=s.padding[3];s.scale[0]<0&&(e=-e,n=-n),s.scale[1]<0&&(t=-t,i=-i),d=[t,e,i,n]}const g=this.pixelRatio;this.instructions.push([Fi,a,r,null,NaN,NaN,NaN,1,0,0,this.textRotateWithView_,this.textRotation_,[1,1],NaN,this.declutterMode_,this.declutterImageWithText_,d==pi?pi:d.map(function(t){return t*g}),u,f,this.text_,this.textKey_,this.strokeKey_,this.fillKey_,this.textOffsetX_,this.textOffsetY_,n]);const p=1/g,_=u?u.slice(0):null;_&&(_[1]=li),this.hitDetectionInstructions.push([Fi,a,r,null,NaN,NaN,NaN,1,0,0,this.textRotateWithView_,this.textRotation_,[p,p],NaN,this.declutterMode_,this.declutterImageWithText_,d,_,f,this.text_,this.textKey_,this.strokeKey_,this.fillKey_?li:this.fillKey_,this.textOffsetX_,this.textOffsetY_,n]),this.endGeometry(e)}else{const n=t.getExtent();if(!be(this.maxExtent,n))return;let r;if(h=t.getFlatCoordinates(),\"LineString\"==l)r=[h.length];else if(\"MultiLineString\"==l)r=t.getEnds();else if(\"Polygon\"==l)r=t.getEnds().slice(0,1);else if(\"MultiPolygon\"==l){const e=t.getEndss();r=[];for(let t=0,i=e.length;t0&&t.push(\"\\n\",\"\"),t.push(e,\"\"),t}function vn(t,e,i){return i%2==0&&(t+=e),t}class Sn{constructor(t,e,i,n,r){this.overlaps=i,this.pixelRatio=e,this.resolution=t,this.alignAndScaleFill_,this.instructions=n.instructions,this.coordinates=n.coordinates,this.coordinateCache_={},this.renderedTransform_=Fe(),this.hitDetectionInstructions=n.hitDetectionInstructions,this.pixelCoordinates_=null,this.viewRotation_=0,this.fillStates=n.fillStates||{},this.strokeStates=n.strokeStates||{},this.textStates=n.textStates||{},this.widths_={},this.labels_={},this.zIndexContext_=r?new ki:null}getZIndexContext(){return this.zIndexContext_}createLabel(t,e,i,n){const r=t+e+i+n;if(this.labels_[r])return this.labels_[r];const s=n?this.strokeStates[n]:null,o=i?this.fillStates[i]:null,a=this.textStates[e],l=this.pixelRatio,h=[a.scale[0]*l,a.scale[1]*l],c=a.justify?cn[a.justify]:wn(Array.isArray(t)?t[0]:t,a.textAlign||di),u=n&&s.lineWidth?s.lineWidth:0,f=Array.isArray(t)?t:String(t).split(\"\\n\").reduce(xn,[]),{width:d,height:g,widths:p,heights:_,lineWidths:m}=function(t,e){const i=[],n=[],r=[];let s=0,o=0,a=0,l=0;for(let h=0,c=e.length;h<=c;h+=2){const u=e[h];if(\"\\n\"===u||h===c){s=Math.max(s,o),r.push(o),o=0,a+=l,l=0;continue}const f=e[h+1]||t.font,d=Mi(f,u);i.push(d),o+=d;const g=Ci(f);n.push(g),l=Math.max(l,g)}return{width:s,height:a,widths:i,heights:n,lineWidths:r}}(a,f),y=d+u,w=[],x=(y+2)*h[0],v=(g+u)*h[1],S={width:x<0?Math.floor(x):Math.ceil(x),height:v<0?Math.floor(v):Math.ceil(v),contextInstructions:w};1==h[0]&&1==h[1]||w.push(\"scale\",h),n&&(w.push(\"strokeStyle\",s.strokeStyle),w.push(\"lineWidth\",u),w.push(\"lineCap\",s.lineCap),w.push(\"lineJoin\",s.lineJoin),w.push(\"miterLimit\",s.miterLimit),w.push(\"setLineDash\",[s.lineDash]),w.push(\"lineDashOffset\",s.lineDashOffset)),i&&w.push(\"fillStyle\",o.fillStyle),w.push(\"textBaseline\",\"middle\"),w.push(\"textAlign\",\"center\");const C=.5-c;let b=c*y+C*u;const M=[],I=[];let E,k=0,A=0,P=0,O=0;for(let t=0,e=f.length;tt?t-l:r,w=s+h>e?e-h:s,x=d[3]+y*u[0]+d[1],v=d[0]+w*u[1]+d[2],S=_-d[3],C=m-d[0];let b;return(g||0!==c)&&(dn[0]=S,_n[0]=S,dn[1]=C,gn[1]=C,gn[0]=S+x,pn[0]=gn[0],pn[1]=C+v,_n[1]=pn[1]),0!==c?(b=$e(Fe(),i,n,1,1,c,-i,-n),ze(b,dn),ze(b,gn),ze(b,pn),ze(b,_n),_e(Math.min(dn[0],gn[0],pn[0],_n[0]),Math.min(dn[1],gn[1],pn[1],_n[1]),Math.max(dn[0],gn[0],pn[0],_n[0]),Math.max(dn[1],gn[1],pn[1],_n[1]),fn)):_e(Math.min(S,S+x),Math.min(C,C+v),Math.max(S,S+x),Math.max(C,C+v),fn),f&&(_=Math.round(_),m=Math.round(m)),{drawImageX:_,drawImageY:m,drawImageW:y,drawImageH:w,originX:l,originY:h,declutterBox:{minX:fn[0],minY:fn[1],maxX:fn[2],maxY:fn[3],value:p},canvasTransform:b,scale:u}}replayImageOrLabel_(t,e,i,n,r,s,o){const a=!(!s&&!o),l=n.declutterBox,h=o?o[2]*n.scale[0]/2:0;return l.minX-h<=e[0]&&l.maxX+h>=0&&l.minY-h<=e[1]&&l.maxY+h>=0&&(a&&this.replayTextBackground_(t,dn,gn,pn,_n,s,o),Ei(t,n.canvasTransform,r,i,n.originX,n.originY,n.drawImageW,n.drawImageH,n.drawImageX,n.drawImageY,n.scale)),!0}fill_(t){const e=this.alignAndScaleFill_;if(e){const i=ze(this.renderedTransform_,[0,0]),n=512*this.pixelRatio;t.save(),t.translate(i[0]%n,i[1]%n),1!==e&&t.scale(e,e)}t.fill(),e&&t.restore()}setStrokeStyle_(t,e){t.strokeStyle=e[1],e[1]&&(t.lineWidth=e[2],t.lineCap=e[3],t.lineJoin=e[4],t.miterLimit=e[5],t.lineDashOffset=e[7],t.setLineDash(e[6]))}drawLabelWithPointPlacement_(t,e,i,n){const r=this.textStates[e],s=this.createLabel(t,e,n,i),o=this.strokeStates[i],a=this.pixelRatio,l=wn(Array.isArray(t)?t[0]:t,r.textAlign||di),h=cn[r.textBaseline||gi],c=o&&o.lineWidth?o.lineWidth:0;return{label:s,anchorX:l*(s.width/a-2*r.scale[0])+2*(.5-l)*c,anchorY:h*s.height/a+2*(.5-h)*c}}execute_(t,e,i,r,s,o,a,l){const h=this.zIndexContext_;let c;var u,f;this.pixelCoordinates_&&n(i,this.renderedTransform_)?c=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),c=Ae(this.coordinates,0,this.coordinates.length,2,i,this.pixelCoordinates_),u=this.renderedTransform_,f=i,u[0]=f[0],u[1]=f[1],u[2]=f[2],u[3]=f[3],u[4]=f[4],u[5]=f[5]);let d=0;const g=r.length;let p,_=0;const m=[];let y,w,x,v,S,C,b,M,I,E,k,A,P,O=0,R=0;const L=this.coordinateCache_,D=this.viewRotation_,F=Math.round(1e12*Math.atan2(-i[1],i[0]))/1e12,T={context:t,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:D},z=this.instructions!=r||this.overlaps?0:200;let $,W,G,N;for(;dz&&(this.fill_(t),O=0),R>z&&(t.stroke(),R=0),O||R||(t.beginPath(),S=NaN,C=NaN),++d;break;case Oi:_=i[1],x=i[2]??0;const n=c[_],r=c[_+1],u=c[_+2]-x-n,f=c[_+3]-x-r,g=Math.sqrt(u*u+f*f);t.moveTo(n+g,r),t.arc(n,r,g,0,2*Math.PI,!0),++d;break;case Ri:t.closePath(),++d;break;case Li:_=i[1],p=i[2];const X=i[3],Y=i[4],B=i[5];T.geometry=X,T.feature=$,d in L||(L[d]=[]);const U=L[d];B?B(c,_,p,2,U):(U[0]=c[_],U[1]=c[_+1],U.length=2),h&&(h.zIndex=i[6]),Y(U,T),++d;break;case Fi:_=i[1],p=i[2],I=i[3],y=i[4],w=i[5];let j=i[6];const V=i[7],q=i[8],J=i[9],K=i[10];let H=i[11];const Z=i[12];let Q=i[13];v=i[14]||\"declutter\";const tt=i[15];if(!I&&i.length>=20){E=i[19],k=i[20],A=i[21],P=i[22];const t=this.drawLabelWithPointPlacement_(E,k,A,P);I=t.label,i[3]=I;const e=i[23];y=(t.anchorX-e)*this.pixelRatio,i[4]=y;const n=i[24];w=(t.anchorY-n)*this.pixelRatio,i[5]=w,j=I.height,i[6]=j,Q=I.width,i[13]=Q}let et,it,nt,rt;i.length>25&&(et=i[25]),i.length>17?(it=i[16],nt=i[17],rt=i[18]):(it=pi,nt=null,rt=null),K&&F?H+=D:K||F||(H-=D);let st=0;for(;_{for(let e=0;e{for(let r=0;r{const n=t.args;let r=e.properties[i];for(let t=1,e=n.length;tt.variables[i];case qt:return e=>{const n=t.args;if(!(i in e.properties))return!1;let r=e.properties[i];for(let t=1,e=n.length;tt.featureId;case st:return t=>t.geometryType;case rt:{const e=t.args.map(t=>bn(t));return t=>\"\".concat(...e.map(e=>e(t).toString()))}case ct:return t=>t.resolution;case at:case lt:case Ft:case Wt:case ht:return function(t){const e=t.operator,i=t.args.length,n=new Array(i);for(let e=0;e{for(let e=0;e{for(let e=0;e{const e=n[0](t),i=n[1](t),r=n[2](t);return e>=i&&e<=r};case Wt:return t=>{const e=n[0](t);for(let r=1;r!n[0](t);default:throw new Error(`Unsupported logical operator ${e}`)}}(t);case dt:case gt:case mt:case yt:case pt:case _t:return function(t){const e=t.operator,i=bn(t.args[0]),n=bn(t.args[1]);switch(e){case dt:return t=>i(t)===n(t);case gt:return t=>i(t)!==n(t);case mt:return t=>i(t)i(t)<=n(t);case pt:return t=>i(t)>n(t);case _t:return t=>i(t)>=n(t);default:throw new Error(`Unsupported comparison operator ${e}`)}}(t);case wt:case xt:case vt:case St:case Ct:case bt:case Mt:case It:case Et:case kt:case At:case Pt:case Ot:case Rt:case Lt:return function(t){const e=t.operator,i=t.args.length,n=new Array(i);for(let e=0;e{let e=1;for(let r=0;rn[0](t)/n[1](t);case vt:return t=>{let e=0;for(let r=0;rn[0](t)-n[1](t);case Ct:return t=>{const e=n[0](t),i=n[1](t);if(er?r:e};case bt:return t=>n[0](t)%n[1](t);case Mt:return t=>Math.pow(n[0](t),n[1](t));case It:return t=>Math.abs(n[0](t));case Et:return t=>Math.floor(n[0](t));case kt:return t=>Math.ceil(n[0](t));case At:return t=>Math.round(n[0](t));case Pt:return t=>Math.sin(n[0](t));case Ot:return t=>Math.cos(n[0](t));case Rt:return 2===i?t=>Math.atan2(n[0](t),n[1](t)):t=>Math.atan(n[0](t));case Lt:return t=>Math.sqrt(n[0](t));default:throw new Error(`Unsupported numeric operator ${e}`)}}(t);case $t:return function(t){const e=t.args.length,i=new Array(e);for(let n=0;n{for(let n=0;n{const n=i[0](t);for(let r=1;r{const n=i[0](t),r=i[1](t);let s,o;for(let a=2;a=r)return 2===a?l:h?In(n,r,s,o,e,l):Mn(n,r,s,o,e,l);s=e,o=l}return o}}(t);case Vt:return function(t){const e=t.operator,i=t.args.length,n=new Array(i);for(let e=0;e{const i=n[0](e);return t.args[0].type===X?T(i):i.toString()};throw new Error(`Unsupported convert operator ${e}`)}(t);default:throw new Error(`Unsupported operator ${i}`)}}function Mn(t,e,i,n,r,s){const o=r-i;if(0===o)return n;const a=e-i;return n+(1===t?a/o:(Math.pow(t,a)-1)/(Math.pow(t,o)-1))*(s-n)}function In(t,e,i,n,r,s){if(0===r-i)return n;const o=L(n),a=L(s);let l=a[2]-o[2];l>180?l-=360:l<-180&&(l+=360);return function(t){const e=(t[0]+16)/116,i=t[1],n=t[2]*Math.PI/180,r=P(e),s=P(e+i/500*Math.cos(n)),o=P(e-i/200*Math.sin(n)),a=A(3.021973625*s-1.617392459*r-.404875592*o),l=A(-.943766287*s+1.916279586*r+.027607165*o),h=A(.069407491*s-.22898585*r+1.159737864*o);return[c(a+.5|0,0,255),c(l+.5|0,0,255),c(h+.5|0,0,255),t[3]]}([Mn(t,e,i,o[0],r,a[0]),Mn(t,e,i,o[1],r,a[1]),o[2]+Mn(t,e,i,0,r,l),Mn(t,e,i,n[3],r,s[3])])}class En{constructor(t){this.opacity_=t.opacity,this.rotateWithView_=t.rotateWithView,this.rotation_=t.rotation,this.scale_=t.scale,this.scaleArray_=z(t.scale),this.displacement_=t.displacement,this.declutterMode_=t.declutterMode}clone(){const t=this.getScale();return new En({opacity:this.getOpacity(),scale:Array.isArray(t)?t.slice():t,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()})}getOpacity(){return this.opacity_}getRotateWithView(){return this.rotateWithView_}getRotation(){return this.rotation_}getScale(){return this.scale_}getScaleArray(){return this.scaleArray_}getDisplacement(){return this.displacement_}getDeclutterMode(){return this.declutterMode_}getAnchor(){return Qe()}getImage(t){return Qe()}getHitDetectionImage(){return Qe()}getPixelRatio(t){return 1}getImageState(){return Qe()}getImageSize(){return Qe()}getOrigin(){return Qe()}getSize(){return Qe()}setDisplacement(t){this.displacement_=t}setOpacity(t){this.opacity_=t}setRotateWithView(t){this.rotateWithView_=t}setRotation(t){this.rotation_=t}setScale(t){this.scale_=t,this.scaleArray_=z(t)}listenImageChange(t){Qe()}load(){Qe()}unlistenImageChange(t){Qe()}ready(){return Promise.resolve()}}class kn extends En{constructor(t){super({opacity:1,rotateWithView:void 0!==t.rotateWithView&&t.rotateWithView,rotation:void 0!==t.rotation?t.rotation:0,scale:void 0!==t.scale?t.scale:1,displacement:void 0!==t.displacement?t.displacement:[0,0],declutterMode:t.declutterMode}),this.hitDetectionCanvas_=null,this.fill_=void 0!==t.fill?t.fill:null,this.origin_=[0,0],this.points_=t.points,this.radius=t.radius,this.radius2_=t.radius2,this.angle_=void 0!==t.angle?t.angle:0,this.stroke_=void 0!==t.stroke?t.stroke:null,this.size_,this.renderOptions_,this.imageState_=this.fill_&&this.fill_.loading()?Yi:Bi,this.imageState_===Yi&&this.ready().then(()=>this.imageState_=Bi),this.render()}clone(){const t=this.getScale(),e=new kn({fill:this.getFill()?this.getFill().clone():void 0,points:this.getPoints(),radius:this.getRadius(),radius2:this.getRadius2(),angle:this.getAngle(),stroke:this.getStroke()?this.getStroke().clone():void 0,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(t)?t.slice():t,displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()});return e.setOpacity(this.getOpacity()),e}getAnchor(){const t=this.size_,e=this.getDisplacement(),i=this.getScaleArray();return[t[0]/2-e[0]/i[0],t[1]/2+e[1]/i[1]]}getAngle(){return this.angle_}getFill(){return this.fill_}setFill(t){this.fill_=t,this.render()}getHitDetectionImage(){return this.hitDetectionCanvas_||(this.hitDetectionCanvas_=this.createHitDetectionCanvas_(this.renderOptions_)),this.hitDetectionCanvas_}getImage(t){const e=this.fill_?.getKey(),i=`${t},${this.angle_},${this.radius},${this.radius2_},${this.points_},${e}`+Object.values(this.renderOptions_).join(\",\");let n=qi.get(i,null)?.getImage(1);if(!n){const e=this.renderOptions_,r=Math.ceil(e.size*t),s=a(r,r);this.draw_(e,s,t),n=s.canvas;const o=new Ki(n,void 0,null,Bi,null);qi.set(i,null,o),createImageBitmap(n).then(t=>{o.setImage(t)})}return n}getPixelRatio(t){return t}getImageSize(){return this.size_}getImageState(){return this.imageState_}getOrigin(){return this.origin_}getPoints(){return this.points_}getRadius(){return this.radius}setRadius(t){this.radius!==t&&(this.radius=t,this.render())}getRadius2(){return this.radius2_}setRadius2(t){this.radius2_!==t&&(this.radius2_=t,this.render())}getSize(){return this.size_}getStroke(){return this.stroke_}setStroke(t){this.stroke_=t,this.render()}listenImageChange(t){}load(){}unlistenImageChange(t){}calculateLineJoinSize_(t,e,i){if(0===e||this.points_===1/0||\"bevel\"!==t&&\"miter\"!==t)return e;let n=this.radius,r=void 0===this.radius2_?n:this.radius2_;if(n{this.patternImage_=null}),e.getImageState()===Xi&&e.load(),e.getImageState()===Yi&&(this.patternImage_=e)}this.color_=t}getKey(){const t=this.getColor();return t?t instanceof CanvasPattern||t instanceof CanvasGradient?ei(t):\"object\"==typeof t&&\"src\"in t?t.src+\":\"+t.offset:F(t).toString():\"\"}loading(){return!!this.patternImage_}ready(){return this.patternImage_?this.patternImage_.ready():Promise.resolve()}}function On(t,e,i,n){return void 0!==i&&void 0!==n?[i/t,n/e]:void 0!==i?i/t:void 0!==n?n/e:1}class Rn extends En{constructor(t){const e=void 0!==(t=t||{}).opacity?t.opacity:1,i=void 0!==t.rotation?t.rotation:0,n=void 0!==t.scale?t.scale:1,r=void 0!==t.rotateWithView&&t.rotateWithView;super({opacity:e,rotation:i,scale:n,displacement:void 0!==t.displacement?t.displacement:[0,0],rotateWithView:r,declutterMode:t.declutterMode}),this.anchor_=void 0!==t.anchor?t.anchor:[.5,.5],this.normalizedAnchor_=null,this.anchorOrigin_=void 0!==t.anchorOrigin?t.anchorOrigin:\"top-left\",this.anchorXUnits_=void 0!==t.anchorXUnits?t.anchorXUnits:\"fraction\",this.anchorYUnits_=void 0!==t.anchorYUnits?t.anchorYUnits:\"fraction\",this.crossOrigin_=void 0!==t.crossOrigin?t.crossOrigin:null,this.referrerPolicy_=t.referrerPolicy;const s=void 0!==t.img?t.img:null;let o,a=t.src;if(Le(!(void 0!==a&&s),\"`image` and `src` cannot be provided at the same time\"),void 0!==a&&0!==a.length||!s||(a=s.src||ei(s)),Le(void 0!==a&&a.length>0,\"A defined and non-empty `src` or `image` must be provided\"),Le(!((void 0!==t.width||void 0!==t.height)&&void 0!==t.scale),\"`width` or `height` cannot be provided together with `scale`\"),void 0!==t.src?o=Xi:void 0!==s&&(o=\"complete\"in s?s.complete?s.src?Bi:Xi:Yi:Bi),this.color_=void 0!==t.color?F(t.color):null,this.iconImage_=Hi(s,a,{crossOrigin:this.crossOrigin_,referrerPolicy:this.referrerPolicy_},o,this.color_),this.offset_=void 0!==t.offset?t.offset:[0,0],this.offsetOrigin_=void 0!==t.offsetOrigin?t.offsetOrigin:\"top-left\",this.origin_=null,this.size_=void 0!==t.size?t.size:null,this.initialOptions_,void 0!==t.width||void 0!==t.height){let e,i;if(t.size)[e,i]=t.size;else{const n=this.getImage(1);if(n.width&&n.height)e=n.width,i=n.height;else if(n instanceof HTMLImageElement){this.initialOptions_=t;const e=()=>{if(this.unlistenImageChange(e),!this.initialOptions_)return;const i=this.iconImage_.getSize();this.setScale(On(i[0],i[1],t.width,t.height))};return void this.listenImageChange(e)}}void 0!==e&&this.setScale(On(e,i,t.width,t.height))}}clone(){let t,e,i;return this.initialOptions_?(e=this.initialOptions_.width,i=this.initialOptions_.height):(t=this.getScale(),t=Array.isArray(t)?t.slice():t),new Rn({anchor:this.anchor_.slice(),anchorOrigin:this.anchorOrigin_,anchorXUnits:this.anchorXUnits_,anchorYUnits:this.anchorYUnits_,color:this.color_&&this.color_.slice?this.color_.slice():this.color_||void 0,crossOrigin:this.crossOrigin_,referrerPolicy:this.referrerPolicy_,offset:this.offset_.slice(),offsetOrigin:this.offsetOrigin_,opacity:this.getOpacity(),rotateWithView:this.getRotateWithView(),rotation:this.getRotation(),scale:t,width:e,height:i,size:null!==this.size_?this.size_.slice():void 0,src:this.getSrc(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()})}getAnchor(){let t=this.normalizedAnchor_;if(!t){t=this.anchor_;const e=this.getSize();if(\"fraction\"==this.anchorXUnits_||\"fraction\"==this.anchorYUnits_){if(!e)return null;t=this.anchor_.slice(),\"fraction\"==this.anchorXUnits_&&(t[0]*=e[0]),\"fraction\"==this.anchorYUnits_&&(t[1]*=e[1])}if(\"top-left\"!=this.anchorOrigin_){if(!e)return null;t===this.anchor_&&(t=this.anchor_.slice()),\"top-right\"!=this.anchorOrigin_&&\"bottom-right\"!=this.anchorOrigin_||(t[0]=-t[0]+e[0]),\"bottom-left\"!=this.anchorOrigin_&&\"bottom-right\"!=this.anchorOrigin_||(t[1]=-t[1]+e[1])}this.normalizedAnchor_=t}const e=this.getDisplacement(),i=this.getScaleArray();return[t[0]-e[0]/i[0],t[1]+e[1]/i[1]]}setAnchor(t){this.anchor_=t,this.normalizedAnchor_=null}getColor(){return this.color_}setColor(t){const e=t?F(t):null;if(this.color_===e||this.color_&&e&&this.color_.length===e.length&&this.color_.every((t,i)=>t===e[i]))return;this.color_=e;const i=this.getSrc(),n=void 0!==i?null:this.getHitDetectionImage(),r=void 0!==i?Xi:this.iconImage_.getImageState();this.iconImage_=Hi(n,i,{crossOrigin:this.crossOrigin_,referrerPolicy:this.referrerPolicy_},r,this.color_)}getImage(t){return this.iconImage_.getImage(t)}getPixelRatio(t){return this.iconImage_.getPixelRatio(t)}getImageSize(){return this.iconImage_.getSize()}getImageState(){return this.iconImage_.getImageState()}getHitDetectionImage(){return this.iconImage_.getHitDetectionImage()}getOrigin(){if(this.origin_)return this.origin_;let t=this.offset_;if(\"top-left\"!=this.offsetOrigin_){const e=this.getSize(),i=this.iconImage_.getSize();if(!e||!i)return null;t=t.slice(),\"top-right\"!=this.offsetOrigin_&&\"bottom-right\"!=this.offsetOrigin_||(t[0]=i[0]-e[0]-t[0]),\"bottom-left\"!=this.offsetOrigin_&&\"bottom-right\"!=this.offsetOrigin_||(t[1]=i[1]-e[1]-t[1])}return this.origin_=t,this.origin_}getSrc(){return this.iconImage_.getSrc()}setSrc(t){this.iconImage_=Hi(null,t,{crossOrigin:this.crossOrigin_,referrerPolicy:this.referrerPolicy_},Xi,this.color_)}getSize(){return this.size_?this.size_:this.iconImage_.getSize()}getWidth(){const t=this.getScaleArray();return this.size_?this.size_[0]*t[0]:this.iconImage_.getImageState()==Bi?this.iconImage_.getSize()[0]*t[0]:void 0}getHeight(){const t=this.getScaleArray();return this.size_?this.size_[1]*t[1]:this.iconImage_.getImageState()==Bi?this.iconImage_.getSize()[1]*t[1]:void 0}setScale(t){delete this.initialOptions_,super.setScale(t)}listenImageChange(t){this.iconImage_.addEventListener(je,t)}load(){this.iconImage_.load()}unlistenImageChange(t){this.iconImage_.removeEventListener(je,t)}ready(){return this.iconImage_.ready()}}class Ln{constructor(t){t=t||{},this.color_=void 0!==t.color?t.color:null,this.lineCap_=t.lineCap,this.lineDash_=void 0!==t.lineDash?t.lineDash:null,this.lineDashOffset_=t.lineDashOffset,this.lineJoin_=t.lineJoin,this.miterLimit_=t.miterLimit,this.offset_=t.offset,this.width_=t.width}clone(){const t=this.getColor();return new Ln({color:Array.isArray(t)?t.slice():t||void 0,lineCap:this.getLineCap(),lineDash:this.getLineDash()?this.getLineDash().slice():void 0,lineDashOffset:this.getLineDashOffset(),lineJoin:this.getLineJoin(),miterLimit:this.getMiterLimit(),offset:this.getOffset(),width:this.getWidth()})}getColor(){return this.color_}getLineCap(){return this.lineCap_}getLineDash(){return this.lineDash_}getLineDashOffset(){return this.lineDashOffset_}getLineJoin(){return this.lineJoin_}getMiterLimit(){return this.miterLimit_}getOffset(){return this.offset_}getWidth(){return this.width_}setColor(t){this.color_=t}setLineCap(t){this.lineCap_=t}setLineDash(t){this.lineDash_=t}setLineDashOffset(t){this.lineDashOffset_=t}setLineJoin(t){this.lineJoin_=t}setMiterLimit(t){this.miterLimit_=t}setOffset(t){this.offset_=t}setWidth(t){this.width_=t}}class Dn{constructor(t){t=t||{},this.geometry_=null,this.geometryFunction_=Fn,void 0!==t.geometry&&this.setGeometry(t.geometry),this.fill_=void 0!==t.fill?t.fill:null,this.image_=void 0!==t.image?t.image:null,this.renderer_=void 0!==t.renderer?t.renderer:null,this.hitDetectionRenderer_=void 0!==t.hitDetectionRenderer?t.hitDetectionRenderer:null,this.stroke_=void 0!==t.stroke?t.stroke:null,this.text_=void 0!==t.text?t.text:null,this.zIndex_=t.zIndex}clone(){let t=this.getGeometry();return t&&\"object\"==typeof t&&(t=t.clone()),new Dn({geometry:t??void 0,fill:this.getFill()?this.getFill().clone():void 0,image:this.getImage()?this.getImage().clone():void 0,renderer:this.getRenderer()??void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,text:this.getText()?this.getText().clone():void 0,zIndex:this.getZIndex()})}getRenderer(){return this.renderer_}setRenderer(t){this.renderer_=t}setHitDetectionRenderer(t){this.hitDetectionRenderer_=t}getHitDetectionRenderer(){return this.hitDetectionRenderer_}getGeometry(){return this.geometry_}getGeometryFunction(){return this.geometryFunction_}getFill(){return this.fill_}setFill(t){this.fill_=t}getImage(){return this.image_}setImage(t){this.image_=t}getStroke(){return this.stroke_}setStroke(t){this.stroke_=t}getText(){return this.text_}setText(t){this.text_=t}getZIndex(){return this.zIndex_}setGeometry(t){\"function\"==typeof t?this.geometryFunction_=t:\"string\"==typeof t?this.geometryFunction_=function(e){return e.get(t)}:t?void 0!==t&&(this.geometryFunction_=function(){return t}):this.geometryFunction_=Fn,this.geometry_=t}setZIndex(t){this.zIndex_=t}}function Fn(t){return t.getGeometry()}class Tn{constructor(t){t=t||{},this.font_=t.font,this.rotation_=t.rotation,this.rotateWithView_=t.rotateWithView,this.keepUpright_=t.keepUpright,this.scale_=t.scale,this.scaleArray_=z(void 0!==t.scale?t.scale:1),this.text_=t.text,this.textAlign_=t.textAlign,this.justify_=t.justify,this.repeat_=t.repeat,this.textBaseline_=t.textBaseline,this.fill_=void 0!==t.fill?t.fill:new Pn({color:\"#333\"}),this.maxAngle_=void 0!==t.maxAngle?t.maxAngle:Math.PI/4,this.placement_=void 0!==t.placement?t.placement:\"point\",this.overflow_=!!t.overflow,this.stroke_=void 0!==t.stroke?t.stroke:null,this.offsetX_=void 0!==t.offsetX?t.offsetX:0,this.offsetY_=void 0!==t.offsetY?t.offsetY:0,this.backgroundFill_=t.backgroundFill?t.backgroundFill:null,this.backgroundStroke_=t.backgroundStroke?t.backgroundStroke:null,this.padding_=void 0===t.padding?null:t.padding,this.declutterMode_=t.declutterMode}clone(){const t=this.getScale();return new Tn({font:this.getFont(),placement:this.getPlacement(),repeat:this.getRepeat(),maxAngle:this.getMaxAngle(),overflow:this.getOverflow(),rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),keepUpright:this.getKeepUpright(),scale:Array.isArray(t)?t.slice():t,text:this.getText(),textAlign:this.getTextAlign(),justify:this.getJustify(),textBaseline:this.getTextBaseline(),fill:this.getFill()instanceof Pn?this.getFill().clone():this.getFill(),stroke:this.getStroke()?this.getStroke().clone():void 0,offsetX:this.getOffsetX(),offsetY:this.getOffsetY(),backgroundFill:this.getBackgroundFill()?this.getBackgroundFill().clone():void 0,backgroundStroke:this.getBackgroundStroke()?this.getBackgroundStroke().clone():void 0,padding:this.getPadding()||void 0,declutterMode:this.getDeclutterMode()})}getOverflow(){return this.overflow_}getFont(){return this.font_}getMaxAngle(){return this.maxAngle_}getPlacement(){return this.placement_}getRepeat(){return this.repeat_}getOffsetX(){return this.offsetX_}getOffsetY(){return this.offsetY_}getFill(){return this.fill_}getRotateWithView(){return this.rotateWithView_}getKeepUpright(){return this.keepUpright_}getRotation(){return this.rotation_}getScale(){return this.scale_}getScaleArray(){return this.scaleArray_}getStroke(){return this.stroke_}getText(){return this.text_}getTextAlign(){return this.textAlign_}getJustify(){return this.justify_}getTextBaseline(){return this.textBaseline_}getBackgroundFill(){return this.backgroundFill_}getBackgroundStroke(){return this.backgroundStroke_}getPadding(){return this.padding_}getDeclutterMode(){return this.declutterMode_}setOverflow(t){this.overflow_=t}setFont(t){this.font_=t}setMaxAngle(t){this.maxAngle_=t}setOffsetX(t){this.offsetX_=t}setOffsetY(t){this.offsetY_=t}setPlacement(t){this.placement_=t}setRepeat(t){this.repeat_=t}setRotateWithView(t){this.rotateWithView_=t}setKeepUpright(t){this.keepUpright_=t}setFill(t){this.fill_=t}setRotation(t){this.rotation_=t}setScale(t){this.scale_=t,this.scaleArray_=z(void 0!==t?t:1)}setStroke(t){this.stroke_=t}setText(t){this.text_=t}setTextAlign(t){this.textAlign_=t}setJustify(t){this.justify_=t}setTextBaseline(t){this.textBaseline_=t}setBackgroundFill(t){this.backgroundFill_=t}setBackgroundStroke(t){this.backgroundStroke_=t}setPadding(t){this.padding_=t}}function zn(t){return!0}function $n(t,e){const i=function(t,e){const i=t.length,n=new Array(i);for(let r=0;r0&&\"string\"==typeof g[0]?_=Vn(t,i+\"color\",e):p=sr(g,i+\"color\")}const m=function(t,e){const i=t[e];if(void 0===i)return;if(\"string\"!=typeof i)throw new Error(`Expected a string for ${e}`);return i}(t,i+\"cross-origin\"),y=function(t,e){const i=t[e];if(void 0===i)return;return ir(i,e)}(t,i+\"offset\"),w=Qn(t,i+\"offset-origin\"),x=Zn(t,i+\"width\"),v=Zn(t,i+\"height\"),S=function(t,e){const i=t[e];if(void 0===i)return;if(\"number\"==typeof i)return z(i);if(!Array.isArray(i))throw new Error(`Expected a number or size array for ${e}`);if(2!==i.length||\"number\"!=typeof i[0]||\"number\"!=typeof i[1])throw new Error(`Expected a number or size array for ${e}`);return i}(t,i+\"size\"),C=er(t,i+\"declutter-mode\"),b={src:r,anchorOrigin:u,anchorXUnits:f,anchorYUnits:d,crossOrigin:m,offset:y,offsetOrigin:w,height:v,width:x,size:S,declutterMode:C};let M=null;return function(t){if(M)_&&M.setColor(_(t));else{const e=_?_(t):p;M=new Rn(void 0!==e?Object.assign({},b,{color:e}):Object.assign({},b))}return a&&M.setOpacity(a(t)),l&&M.setDisplacement(l(t)),h&&M.setRotation(h(t)),c&&M.setRotateWithView(c(t)),o&&M.setScale(o(t)),s&&M.setAnchor(s(t)),M}}(t,e);if(\"shape-points\"in t)return function(t,e){const i=\"shape-\",n=i+\"points\",r=i+\"radius\",s=rr(t[n],n);if(!(r in t))throw new Error(`Expected a number for ${r}`);const o=Bn(t,r,e),a=\"number\"==typeof t[r]?t[r]:5,l=i+\"radius2\",h=Bn(t,l,e),c=\"number\"==typeof t[l]?t[l]:void 0,u=Nn(t,i,e),f=Xn(t,i,e),d=Hn(t,i+\"scale\",e),g=Jn(t,i+\"displacement\",e),p=Bn(t,i+\"rotation\",e),_=jn(t,i+\"rotate-with-view\",e),m=Zn(t,i+\"angle\"),y=er(t,i+\"declutter-mode\"),w=new kn({points:s,radius:a,radius2:c,angle:m,declutterMode:y});return function(t){return o&&w.setRadius(o(t)),h&&w.setRadius2(h(t)),u&&w.setFill(u(t)),f&&w.setStroke(f(t)),g&&w.setDisplacement(g(t)),p&&w.setRotation(p(t)),_&&w.setRotateWithView(_(t)),d&&w.setScale(d(t)),w}}(t,e);if(\"circle-radius\"in t)return function(t,e){const i=\"circle-\",n=Nn(t,i,e),r=Xn(t,i,e),s=Bn(t,i+\"radius\",e),o=Hn(t,i+\"scale\",e),a=Jn(t,i+\"displacement\",e),l=Bn(t,i+\"rotation\",e),h=jn(t,i+\"rotate-with-view\",e),c=er(t,i+\"declutter-mode\"),u=new An({radius:5,declutterMode:c});return function(t){return s&&u.setRadius(s(t)),n&&u.setFill(n(t)),r&&u.setStroke(r(t)),a&&u.setDisplacement(a(t)),l&&u.setRotation(l(t)),h&&u.setRotateWithView(h(t)),o&&u.setScale(o(t)),u}}(t,e);return null}(t,e),o=Bn(t,\"z-index\",e);if(!(i||n||r||s||Xe(t)))throw new Error(\"No fill, stroke, point, or text symbolizer properties in style: \"+JSON.stringify(t));const a=new Dn;return function(t){let e=!0;if(i){const n=i(t);n&&(e=!1),a.setFill(n)}if(n){const i=n(t);i&&(e=!1),a.setStroke(i)}if(r){const i=r(t);i&&(e=!1),a.setText(i)}if(s){const i=s(t);i&&(e=!1),a.setImage(i)}return o&&a.setZIndex(o(t)),e?null:a}}function Nn(t,e,i){let n;if(e+\"fill-pattern-src\"in t)n=function(t,e,i){const n=Un(t,e+\"pattern-src\",i),r=Kn(t,e+\"pattern-offset\",i),s=Kn(t,e+\"pattern-size\",i),o=Vn(t,e+\"color\",i);return function(t){return{src:n(t),offset:r&&r(t),size:s&&s(t),color:o&&o(t)}}}(t,e+\"fill-\",i);else{if(\"none\"===t[e+\"fill-color\"])return t=>null;n=Vn(t,e+\"fill-color\",i)}if(!n)return null;const r=new Pn;return function(t){const e=n(t);return e===m?null:(r.setColor(e),r)}}function Xn(t,e,i){const n=Bn(t,e+\"stroke-width\",i),r=Vn(t,e+\"stroke-color\",i);if(!n&&!r)return null;const s=Un(t,e+\"stroke-line-cap\",i),o=Un(t,e+\"stroke-line-join\",i),a=qn(t,e+\"stroke-line-dash\",i),l=Bn(t,e+\"stroke-line-dash-offset\",i),h=Bn(t,e+\"stroke-miter-limit\",i),c=Bn(t,e+\"stroke-offset\",i),u=new Ln;return function(t){if(r){const e=r(t);if(e===m)return null;u.setColor(e)}if(n&&u.setWidth(n(t)),s){const e=s(t);if(\"butt\"!==e&&\"round\"!==e&&\"square\"!==e)throw new Error(\"Expected butt, round, or square line cap\");u.setLineCap(e)}if(o){const e=o(t);if(\"bevel\"!==e&&\"round\"!==e&&\"miter\"!==e)throw new Error(\"Expected bevel, round, or miter line join\");u.setLineJoin(e)}return a&&u.setLineDash(a(t)),l&&u.setLineDashOffset(l(t)),h&&u.setMiterLimit(h(t)),c&&u.setOffset(c(t)),u}}function Yn(t,e){if(!(e in t))return;const i=t[e];return void 0===i?void 0:i}function Bn(t,e,i){const n=Yn(t,e);if(void 0===n)return;const r=Cn(n,G,i);return function(t){return rr(r(t),e)}}function Un(t,e,i){const n=Yn(t,e);if(void 0===n)return null;const r=Cn(n,N,i);return function(t){return nr(r(t),e)}}function jn(t,e,i){const n=Yn(t,e);if(void 0===n)return null;const r=Cn(n,W,i);return function(t){const i=r(t);if(\"boolean\"!=typeof i)throw new Error(`Expected a boolean for ${e}`);return i}}function Vn(t,e,i){const n=Yn(t,e);if(void 0===n)return null;const r=Cn(n,X,i);return function(t){return sr(r(t),e)}}function qn(t,e,i){const n=Yn(t,e);if(void 0===n)return null;if(Array.isArray(n)&&(0===n.length||\"string\"!=typeof n[0])){const t=n.map((t,n)=>{if(\"number\"==typeof t)return()=>t;const r=Cn(t,G,i);return function(t){return rr(r(t),`${e}[${n}]`)}});return function(e){const i=new Array(t.length);for(let n=0;n4)throw new Error(`Expected a color with 3 or 4 values for ${e}`);return i}function or(t,e){const i=ir(t,e);if(2!==i.length)throw new Error(`Expected an array of two numbers for ${e}`);return i}const ar=\"BUILD_INSTRUCTIONS\",lr=\"DISPOSE_INSTRUCTIONS\",hr=\"RENDER\",cr={radians:6370997/(2*Math.PI),degrees:2*Math.PI*6370997/360,ft:.3048,m:1,\"us-ft\":1200/3937};class ur{constructor(t){this.code_=t.code,this.units_=t.units,this.extent_=void 0!==t.extent?t.extent:null,this.worldExtent_=void 0!==t.worldExtent?t.worldExtent:null,this.axisOrientation_=void 0!==t.axisOrientation?t.axisOrientation:\"enu\",this.global_=void 0!==t.global&&t.global,this.canWrapX_=!(!this.global_||!this.extent_),this.getPointResolutionFunc_=t.getPointResolution,this.defaultTileGrid_=null,this.metersPerUnit_=t.metersPerUnit}canWrapX(){return this.canWrapX_}getCode(){return this.code_}getExtent(){return this.extent_}getUnits(){return this.units_}getMetersPerUnit(){return this.metersPerUnit_||cr[this.units_]}getWorldExtent(){return this.worldExtent_}getAxisOrientation(){return this.axisOrientation_}isGlobal(){return this.global_}setGlobal(t){this.global_=t,this.canWrapX_=!(!t||!this.extent_)}getDefaultTileGrid(){return this.defaultTileGrid_}setDefaultTileGrid(t){this.defaultTileGrid_=t}setExtent(t){this.extent_=t,this.canWrapX_=!(!this.global_||!t)}setWorldExtent(t){this.worldExtent_=t}setGetPointResolution(t){this.getPointResolutionFunc_=t}getPointResolutionFunc(){return this.getPointResolutionFunc_}}const fr=6378137,dr=Math.PI*fr,gr=[-dr,-dr,dr,dr],pr=[-180,-85,180,85],_r=fr*Math.log(Math.tan(Math.PI/2));class mr extends ur{constructor(t){super({code:t,units:\"m\",extent:gr,global:!0,worldExtent:pr,getPointResolution:function(t,e){return t/Math.cosh(e[1]/fr)}})}}const yr=[new mr(\"EPSG:3857\"),new mr(\"EPSG:102100\"),new mr(\"EPSG:102113\"),new mr(\"EPSG:900913\"),new mr(\"http://www.opengis.net/def/crs/EPSG/0/3857\"),new mr(\"http://www.opengis.net/gml/srs/epsg.xml#3857\")];function wr(t,e,i,n){const r=t.length;i=i>1?i:2,n=n??i,void 0===e&&(e=i>2?t.slice():new Array(r));for(let i=0;i_r?n=_r:n<-_r&&(n=-_r),e[i+1]=n}return e}function xr(t,e,i,n){const r=t.length;i=i>1?i:2,n=n??i,void 0===e&&(e=i>2?t.slice():new Array(r));for(let i=0;i84&&(e=84);const n=g(e),r=Math.sin(n),s=Math.cos(n),o=r/s,a=o*o,l=a*a,h=g(t),c=g(Kr(i.number)),u=Vr/Math.sqrt(1-Pr*r**2),f=Lr*s**2,d=s*_(h-c,-Math.PI,Math.PI),p=d*d,m=p*d,y=m*d,w=y*d,x=w*d,v=Vr*(Gr*n-.002514607064228144*Math.sin(2*n)+Nr*Math.sin(4*n)-Xr*Math.sin(6*n)),S=Ar*u*(d+m/6*(1-a+f)+w/120*(5-18*a+l+72*f-58*Lr))+5e5;let C=Ar*(v+u*o*(p/2+y/24*(5-a+9*f+4*f**2)+x/720*(61-58*a+l+600*f-330*Lr)));return i.north||(C+=1e7),[S,C]}function Kr(t){return 6*(t-1)-180+3}const Hr=[/^EPSG:(\\d+)$/,/^urn:ogc:def:crs:EPSG::(\\d+)$/,/^http:\\/\\/www\\.opengis\\.net\\/def\\/crs\\/EPSG\\/0\\/(\\d+)$/];function Zr(t){let e=0;for(const i of Hr){const n=t.match(i);if(n){e=parseInt(n[1]);break}}if(!e)return null;let i=0,n=!1;return e>32700&&e<32761?i=e-32700:e>32600&&e<32661&&(n=!0,i=e-32600),i?{number:i,north:n}:null}function Qr(t,e){return function(i,n,r,s){const o=i.length;r=r>1?r:2,s=s??r,n||(n=r>2?i.slice():new Array(o));for(let r=0;r{if(!i)return this.getSimplifiedGeometry(e);const n=this.clone();return n.applyTransform(i),n.getSimplifiedGeometry(e)})}simplifyTransformed(t,e){return this.simplifyTransformedInternal(this.getRevision(),t,e)}clone(){return Qe()}closestPointXY(t,e,i,n){return Qe()}containsXY(t,e){return 0===this.closestPointXY(t,e,fs,Number.MIN_VALUE)}getClosestPoint(t,e){return e=e||[NaN,NaN],this.closestPointXY(t[0],t[1],e,1/0),e}intersectsCoordinate(t){return this.containsXY(t[0],t[1])}computeExtent(t){return Qe()}getExtent(t){if(this.extentRevision_!=this.getRevision()){const t=this.computeExtent(this.extent_);(isNaN(t[0])||isNaN(t[1]))&&me(t),this.extentRevision_=this.getRevision()}return function(t,e){return e?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e):t}(this.extent_,t)}rotate(t,e){Qe()}scale(t,e,i){Qe()}simplify(t){return this.getSimplifiedGeometry(t*t)}getSimplifiedGeometry(t){return Qe()}getType(){return Qe()}applyTransform(t){Qe()}intersectsExtent(t){return Qe()}translate(t,e){Qe()}transform(t,e){const i=rs(t),n=\"tile-pixels\"==i.getUnits()?function(t,n,r){const s=i.getExtent(),o=i.getWorldExtent(),a=Ce(o)/Ce(s);$e(us,o[0],o[3],a,-a,0,0,0);const l=Ae(t,0,t.length,r,us,n),h=as(i,e);return h?h(l,l,r):l}:as(i,e);return this.applyTransform(n),this}}class gs extends ds{constructor(){super(),this.layout=\"XY\",this.stride=2,this.flatCoordinates}computeExtent(t){return we(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t)}getCoordinates(){return Qe()}getFirstCoordinate(){return this.flatCoordinates.slice(0,this.stride)}getFlatCoordinates(){return this.flatCoordinates}getLastCoordinate(){return this.flatCoordinates.slice(this.flatCoordinates.length-this.stride)}getLayout(){return this.layout}getSimplifiedGeometry(t){if(this.simplifiedGeometryRevision!==this.getRevision()&&(this.simplifiedGeometryMaxMinSquaredTolerance=0,this.simplifiedGeometryRevision=this.getRevision()),t<0||0!==this.simplifiedGeometryMaxMinSquaredTolerance&&t<=this.simplifiedGeometryMaxMinSquaredTolerance)return this;const e=this.getSimplifiedGeometryInternal(t);return e.getFlatCoordinates().length1)u=i;else{if(f>0){for(let r=0;rr&&(r=a),s=i,o=n}return r}function ys(t,e,i,n,r,s,o,a,l,h,c){if(e==i)return h;let u,d;if(0===r){if(d=f(o,a,t[e],t[e+1]),d>1),s=+n(e[r],i),s<0?o=r+1:(a=r,l=!s);return l?o:~o}(u,f);d<0?(h=(f-u[-d-2])/(u[-d-1]-u[-d-2]),l=i+(-d-2)*r):l=i+d*r}a=a>1?a:2,o=o||new Array(a);for(let t=0;ts&&(i-a)*(s-l)-(r-a)*(n-l)>0&&o++:n<=s&&(i-a)*(s-l)-(r-a)*(n-l)<0&&o--,a=i,l=n}return 0!==o}function Cs(t,e,i,n,r,s){if(0===i.length)return!1;if(!Ss(t,e,i[0],n,r,s))return!1;for(let e=1,o=i.length;e=r[0]&&s[2]<=r[2]||s[1]>=r[1]&&s[3]<=r[3]||bs(t,e,i,n,function(t,e){return function(t,e,i){let n=!1;const r=pe(t,e),s=pe(t,i);if(r===ae||s===ae)n=!0;else{const o=t[0],a=t[1],l=t[2],h=t[3],c=e[0],u=e[1],f=i[0],d=i[1],g=(d-u)/(f-c);let p,_;s&le&&!(r&le)&&(p=f-(d-h)/g,n=p>=o&&p<=l),n||!(s&he)||r&he||(_=d-(f-l)*g,n=_>=a&&_<=h),n||!(s&ce)||r&ce||(p=f-(d-a)/g,n=p>=o&&p<=l),n||!(s&ue)||r&ue||(_=d-(f-o)*g,n=_>=a&&_<=h)}return n}(r,t,e)}))}function Is(t,e,i,n,r){if(!function(t,e,i,n,r){return!!(Ms(t,e,i,n,r)||Ss(t,e,i,n,r[0],r[1])||Ss(t,e,i,n,r[0],r[3])||Ss(t,e,i,n,r[2],r[1])||Ss(t,e,i,n,r[2],r[3]))}(t,e,i[0],n,r))return!1;if(1===i.length)return!0;for(let e=1,s=i.length;e0;){const i=h.pop(),s=h.pop();let o=0;const a=t[s],f=t[s+1],d=t[i],g=t[i+1];for(let e=s+n;eo&&(c=e,o=i)}o>r&&(l[(c-e)/n]=1,s+n0&&g>f)&&(d<0&&p0&&p>d)?(a=i,l=u):(s[o++]=a,s[o++]=l,h=a,c=l,a=i,l=u)}return s[o++]=a,s[o++]=l,o}function Ps(t,e,i,n,r,s,o,a){for(let l=0,h=i.length;l>1;ry&&(c=(u+f)/2,Cs(e,i,n,r,c,p)&&(m=c,y=t)),u=f}return isNaN(m)&&(m=s[o]),a?(a.push(m,p,y),a):[m,p,y]}function Ts(t,e,i,n){for(;e0}function $s(t,e,i,n,r){r=void 0!==r&&r;for(let s=0,o=i.length;s{if(t===this.squaredTolerance_)return this.simplifiedGeometry_;this.simplifiedGeometry_=this.clone(),e&&this.simplifiedGeometry_.applyTransform(e);const i=this.simplifiedGeometry_.getFlatCoordinates();let n;switch(this.type_){case\"LineString\":i.length=Es(i,0,this.simplifiedGeometry_.flatCoordinates_.length,this.simplifiedGeometry_.stride_,t,i,0),n=[i.length];break;case\"MultiLineString\":n=[],i.length=function(t,e,i,n,r,s,o,a){for(let l=0,h=i.length;le+(t[i].size||1),0)}Ns.prototype.getFlatCoordinates=Ns.prototype.getOrientedFlatCoordinates;const Ys={},Bs=new Ns(\"Point\",[0,0],[],2,Ys,\"dummy\"),Us=new TextDecoder;function js(t,e,i,n,r,s){const o=`prop_${t}`,a=i.findIndex(t=>t===o),l=i.slice(0,a).reduce((t,e)=>t+n[e].size,0),h=n[o].size;if(e===N){const t=r[l+1],e=r[l+2],i=s.slice(t,t+e);return Us.decode(i)}if(e===X){const t=(c=Array.from(r.slice(l,l+2)),[Math.min(Math.floor(c[0]/256)/255,1),Math.min(c[0]%256/255,1),Math.min(Math.floor(c[1]/256)/255,1),Math.min(c[1]%256/255,1)]);return t[0]*=255,t[1]*=255,t[2]*=255,t}var c;return h>1?Array.from(r.slice(l,l+h)):r[l]}function Vs(t,e,i,n,r){let s=t(i,1);if(s){s=Array.isArray(s)?s:[s];for(let t=0,o=s.length;t{const e=t.data;switch(e.type){case hr:{const t=(i=e.frameState,{...i,viewState:{...i.viewState,projection:rs(i.viewState.projection)}}),n=t.viewState,r=e.batchesToRender;Js&&cancelAnimationFrame(Js),Js=requestAnimationFrame(()=>{Js=0,t.size[0]!==Ks.width||t.size[1]!==Ks.height?(Ks.width=t.size[0],Ks.height=t.size[1]):Hs.clearRect(0,0,Ks.width,Ks.height);for(const i of r.values()){if(!Zs.has(i)){const t={type:hr,imageData:null,frameState:e.frameState,id:e.id};return void qs.postMessage(t)}const r=Zs.get(i);if(!r)continue;const s=to(n.center,n.resolution,n.rotation,Ks.width,Ks.height,0);Te(s,r.inverseTransform),r.executor.execute(Hs,t.size,s,t.viewState.rotation,!1)}const i=Ks.transferToImageBitmap(),s={type:hr,imageData:i,frameState:e.frameState,id:e.id};qs.postMessage(s,[i])});break}case ar:{const{polygonRenderInstructions:t,lineStringRenderInstructions:i,pointRenderInstructions:n,style:r,customAttributesSizes:s,renderInstructionsTransform:o,id:a,resolution:l}=e,h=1,c=l*o[0],u=Date.now().toString(),f=new Uint8Array(e.labelsArray),d=new un(1,[-1/0,-1/0,1/0,1/0],c,h),g=Object.keys(s).reduce((t,e)=>({...t,[e]:{size:s[e]}}),{}),p=tt();!function(t){function e(t){for(const e in t)e.startsWith(\"text-\")||\"z-index\"===e||delete t[e]}if(Array.isArray(t)){for(let i=0,n=t.length;i "u" ? "data:application/javascript;base64," + Buffer.from(e, "binary").toString("base64") : URL.createObjectURL(new Blob([e], { type: "application/javascript" }))); } //#endregion //#region node_modules/ol/worker/webgl.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Bp() { +======= +function um() { +>>>>>>> Stashed changes +======= +function um() { +>>>>>>> Stashed changes let e = "const t=new Set;let e=!1;function n(e,n,i=2){const f=n&&n.length,u=f?n[0]*i:e.length;t.size&&t.clear();let s=r(e,0,u,i,!0);const v=[];if(!s||s.next===s.prev)return v;let b=0,A=0,m=0;if(f&&(s=function(e,n,x,i){const f=[];for(let o=0,x=n.length;o80*i){b=e[0],A=e[1];let t=b,n=A;for(let r=i;rt&&(t=o),x>n&&(n=x)}m=Math.max(t-b,n-A),m=0!==m?32767/m:0}return x(s,v,b,A,m),v}function r(t,e,n,r,o){let x=null;if(o===function(t,e,n,r){let o=0;for(let x=e,i=n-r;x0)for(let o=e;o=e;o-=r)x=G(o/r|0,t[o],t[o+1],x);return x&&N(x,x.next)&&(k(x),x=x.next),x}function o(n,r=n){const o=r===n;let x,i=n;do{x=!1,i===i.next||0!==t.size&&t.has(i)||!N(i,i.next)&&0!==S(i.prev,i,i.next)?(o||i!==r)&&(i=i.next,x=!o):((o||i===r)&&(r=i.prev),e=!0,k(i),i=i.prev,x=!0)}while(x||i!==r);return r}function x(t,n,r,x,c){c&&function(t,e,n,r){let o=t,x=0;do{o.z=I(o.x,o.y,e,n,r),w[x++]=o,o=o.next}while(o!==t);!function(t){if(t<=32){for(let e=1;e=0&&w[r].z>n;)w[r+1]=w[r],r--;w[r+1]=t}return}F.length=c&&h.x<=a&&h.y>=l&&h.y<=y&&(o!==h.x||f!==h.y)&&U(o,f,x,u,i,s,h.x,h.y)&&S(h.prev,h,h.next)>=0)return!1;h=h.next}return!0}function f(t,e,n,r){const o=t.prev,x=t,i=t.next,f=o.x,u=x.x,s=i.x,c=o.y,l=x.y,a=i.y,y=Math.min(f,u,s),h=Math.min(c,l,a),p=Math.max(f,u,s),v=Math.max(c,l,a),b=I(y,h,e,n,r),M=I(p,v,e,n,r);let A=t.prevZ;for(;A&&A.z>=b;){if(A.x>=y&&A.x<=p&&A.y>=h&&A.y<=v&&A!==i&&(f!==A.x||c!==A.y)&&U(f,c,u,l,s,a,A.x,A.y)&&S(A.prev,A,A.next)>=0)return!1;A=A.prevZ}let m=t.nextZ;for(;m&&m.z<=M;){if(m.x>=y&&m.x<=p&&m.y>=h&&m.y<=v&&m!==i&&(f!==m.x||c!==m.y)&&U(f,c,u,l,s,a,m.x,m.y)&&S(m.prev,m,m.next)>=0)return!1;m=m.nextZ}return!0}function u(t,e){let n=t,r=!1;do{const o=n.prev,x=n.next.next;R(o,n,n.next,x,!1)&&_(o,x)&&_(x,o)&&(e.push(o.i,n.i,x.i),k(n),k(n.next),n=t=x,r=!0),n=n.next}while(n!==t);return r?o(n):n}function s(t,e,n,r,i){let f=t;do{let t=f.next.next;for(;t!==f.prev;){if(f.i!==t.i&&P(f,t)){let u=O(f,t);return f=o(f,f.next),u=o(u,u.next),x(f,e,n,r,i),void x(u,e,n,r,i)}t=t.next}f=f.next}while(f!==t)}let c=!1;function l(t,e){return t.x-e.x||t.y-e.y||(t.next.y-t.y)/(t.next.x-t.x)-(e.next.y-e.y)/(e.next.x-e.x)}function a(t,e){const n=function(t,e){let n=e;const r=t.x,o=t.y;let x,i=-1/0;if(N(t,n))return n;for(let e=0,f=0;eh[f+3]||h[f]>r||h[f+2]<=i)continue;const u=A(e);n=m(e);do{if(n.prev.next===n){if(N(t,n.next))return n.next;if(o<=n.y&&o>=n.next.y&&n.next.y!==n.y){const t=n.x+(o-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(t<=r&&t>i&&(i=t,x=n.xr||h[a+3]c)continue;const y=A(e);n=m(e);do{if(n.prev.next===n&&r>=n.x&&n.x>=f&&r!==n.x&&U(or)&&(ex.x||n.x===x.x&&g(x,n)))&&(x=n,l=e)}n=n.next}while(n!==y)}return x}(t,e);if(!n)return e;const r=O(n,t);return M(n,r.next.next),o(r,r.next),o(n,n.next)}const y=16;let h=new Float64Array(0),p=0;const v=[],b=[];function M(t,e){let n=t;do{const t=p++;v[t]=n;let r=1/0,o=1/0,x=-1/0,i=-1/0,f=0;do{const e=n.next;n.z=t,n.xx&&(x=n.x),n.yi&&(i=n.y),e.xx&&(x=e.x),e.yi&&(i=e.y),n=e}while(++f>>x&255]++;let i=0;for(let t=0;t<256;t++){const e=z[t];z[t]=i,i+=e}for(let i=0;i>>x&255]++;r[f]=e[i],o[f]=t}}function I(t,e,n,r,o){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-n)*o|0)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-r)*o|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function B(t){let e=t,n=t;do{(e.x=(t-i)*(x-f)&&(t-i)*(r-f)>=(n-i)*(e-f)&&(n-i)*(x-f)>=(o-i)*(r-f)}function P(t,e){const n=N(t,e)&&S(t.prev,t,t.next)>0&&S(e.prev,e,e.next)>0;return t.next.i!==e.i&&(n||_(t,e)&&_(e,t)&&(0!==S(t.prev,t,e.prev)||0!==S(t,e.prev,e)))&&!function(t,e){const n=Math.min(t.x,e.x),r=Math.max(t.x,e.x),o=Math.min(t.y,e.y),x=Math.max(t.y,e.y);let i=t;do{const f=i.next;if(i.x>r&&f.x>r||i.xx&&f.y>x||i.yx!=t.y>x&&o<(t.x-n.x)*(x-n.y)/(t.y-n.y)+n.x&&(r=!r),n=t}while(n!==t);return r}(t,e))}function S(t,e,n){return(e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y)}function N(t,e){return t.x===e.x&&t.y===e.y}function R(t,e,n,r,o=!0){const x=S(t,e,n),i=S(t,e,r),f=S(n,r,t),u=S(n,r,e);return(x>0&&i<0||x<0&&i>0)&&(f>0&&u<0||f<0&&u>0)||!!o&&(!(0!==x||!T(t,n,e))||(!(0!==i||!T(t,r,e))||(!(0!==f||!T(n,t,r))||!(0!==u||!T(n,e,r)))))}function T(t,e,n){return e.x<=Math.max(t.x,n.x)&&e.x>=Math.min(t.x,n.x)&&e.y<=Math.max(t.y,n.y)&&e.y>=Math.min(t.y,n.y)}function _(t,e){return S(t.prev,t,t.next)<0?S(t,e,t.next)>=0&&S(t,t.prev,e)>=0:S(t,e,t.prev)<0||S(t,t.next,e)<0}function O(t,e){const n=j(t.i,t.x,t.y),r=j(e.i,e.x,e.y),o=t.next,x=e.prev;return t.next=e,e.prev=t,n.next=o,o.prev=n,r.next=n,n.prev=r,x.next=r,r.prev=x,r}function G(t,e,n,r){const o=j(t,e,n);return r?(o.next=r.next,o.prev=r,r.next.prev=o,r.next=o):(o.prev=o,o.next=o),o}function k(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),c&&function(t,e){const n=4*t.z;e.xh[n+2]&&(h[n+2]=e.x),e.y>h[n+3]&&(h[n+3]=e.y)}(t.prev,t.next)}function j(t,e,n){return{i:t,x:e,y:n,prev:null,next:null,z:0,prevZ:null,nextZ:null}}function q(t,e,n){const r=Math.sqrt((e[0]-t[0])*(e[0]-t[0])+(e[1]-t[1])*(e[1]-t[1])),o=[(e[0]-t[0])/r,(e[1]-t[1])/r],x=[-o[1],o[0]],i=Math.sqrt((n[0]-t[0])*(n[0]-t[0])+(n[1]-t[1])*(n[1]-t[1])),f=[(n[0]-t[0])/i,(n[1]-t[1])/i];let u=0===r||0===i?0:Math.acos((s=f[0]*o[0]+f[1]*o[1],c=-1,l=1,Math.min(Math.max(s,c),l)));var s,c,l;u=Math.max(u,1e-5);return f[0]*x[0]+f[1]*x[1]>0?u:2*Math.PI-u}const L=[1,0,0,1,0,0];function Y(t,e){const n=e[0],r=e[1];return e[0]=t[0]*n+t[2]*r+t[4],e[1]=t[1]*n+t[3]*r+t[5],e}function C(t,e){const n=(r=e)[0]*r[3]-r[1]*r[2];var r;!function(t,e){if(!t)throw new Error(e)}(0!==n,\"Transformation matrix cannot be inverted\");const o=e[0],x=e[1],i=e[2],f=e[3],u=e[4],s=e[5];return t[0]=f/n,t[1]=-x/n,t[2]=-i/n,t[3]=o/n,t[4]=(i*s-f*u)/n,t[5]=-(o*s-x*u)/n,t}new Array(6);const D=[],H={vertexAttributesPosition:0,instanceAttributesPosition:0,indicesPosition:0};function J(t,e,n,r,o){const x=t[e++],i=t[e++],f=D;f.length=r;for(let n=0;n{const e=t.data;switch(e.type){case W:{const t=2,n=2,r=e.customAttributesSize,o=n+r,x=new Float32Array(e.renderInstructions),i=x.length/o*(t+r),f=Uint32Array.from([0,1,3,1,2,3]),u=Float32Array.from([-1,-1,1,-1,1,1,-1,1]),s=new Float32Array(i);let c;for(let t=0;t0?y=x+(n-1)*r:c&&(y=i-r);let h=null;n "u" ? "data:application/javascript;base64," + Buffer.from(e, "binary").toString("base64") : URL.createObjectURL(new Blob([e], { type: "application/javascript" }))); } //#endregion //#region node_modules/ol/render/webgl/constants.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var Vp = { GENERATE_POLYGON_BUFFERS: "GENERATE_POLYGON_BUFFERS", GENERATE_POINT_BUFFERS: "GENERATE_POINT_BUFFERS", GENERATE_LINE_STRING_BUFFERS: "GENERATE_LINE_STRING_BUFFERS" }, Hp = { +======= +var dm = { + GENERATE_POLYGON_BUFFERS: "GENERATE_POLYGON_BUFFERS", + GENERATE_POINT_BUFFERS: "GENERATE_POINT_BUFFERS", + GENERATE_LINE_STRING_BUFFERS: "GENERATE_LINE_STRING_BUFFERS" +}, fm = { +>>>>>>> Stashed changes +======= +var dm = { + GENERATE_POLYGON_BUFFERS: "GENERATE_POLYGON_BUFFERS", + GENERATE_POINT_BUFFERS: "GENERATE_POINT_BUFFERS", + GENERATE_LINE_STRING_BUFFERS: "GENERATE_LINE_STRING_BUFFERS" +}, fm = { +>>>>>>> Stashed changes BUILD_INSTRUCTIONS: "BUILD_INSTRUCTIONS", DISPOSE_INSTRUCTIONS: "DISPOSE_INSTRUCTIONS", RENDER: "RENDER" }; //#endregion //#region node_modules/ol/render/webgl/encodeUtil.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Up(e, t) { +======= +function pm(e, t) { +>>>>>>> Stashed changes +======= +function pm(e, t) { +>>>>>>> Stashed changes t ||= []; let n = Math.floor(e / 256 / 256 / 256) / 255, r = Math.floor(e / 256 / 256) % 256 / 255, i = Math.floor(e / 256) % 256 / 255, a = e % 256 / 255; return t[0] = n * 256 * 255 + r * 255, t[1] = i * 256 * 255 + a * 255, t; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Wp(e) { +======= +function mm(e) { +>>>>>>> Stashed changes +======= +function mm(e) { +>>>>>>> Stashed changes let t = 0; return t += Math.round(e[0] * 256 * 256 * 256 * 255), t += Math.round(e[1] * 256 * 256 * 255), t += Math.round(e[2] * 256 * 255), t += Math.round(e[3] * 255), t; } //#endregion //#region node_modules/ol/render/webgl/renderinstructions.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Gp(e, t, n, r, i) { +======= +function hm(e, t, n, r, i) { +>>>>>>> Stashed changes +======= +function hm(e, t, n, r, i) { +>>>>>>> Stashed changes let a = 0; for (let o in n) { let s = n[o], c = s.callback.call(r, r.feature); if (typeof c == "string") { let [n, r] = t.push(c); +<<<<<<< Updated upstream +<<<<<<< Updated upstream e[i + a++] = rp(c), e[i + a++] = n, e[i + a++] = r; continue; } @@ -12867,35 +22609,109 @@ function Kp(e) { } function qp(e, t, n, r, i) { let a = (2 + Kp(r)) * e.geometriesCount; +======= + e[i + a++] = Dp(c), e[i + a++] = n, e[i + a++] = r; + continue; + } + let l = c?.[0] ?? c; + l === -9999999 && console.warn("The \"has\" operator might return false positives."), l === void 0 ? l = Fp : l === null && (l = 0), e[i + a++] = l, !(!s.size || s.size === 1) && (e[i + a++] = c?.[1] ?? -9999999, !(s.size < 3) && (e[i + a++] = c?.[2] ?? -9999999, !(s.size < 4) && (e[i + a++] = c?.[3] ?? -9999999))); + } + return a; +} +function gm(e) { + return Object.keys(e).reduce((t, n) => t + (e[n].size || 1), 0); +} +function _m(e, t, n, r, i) { + let a = (2 + gm(r)) * e.geometriesCount; +>>>>>>> Stashed changes +======= + e[i + a++] = Dp(c), e[i + a++] = n, e[i + a++] = r; + continue; + } + let l = c?.[0] ?? c; + l === -9999999 && console.warn("The \"has\" operator might return false positives."), l === void 0 ? l = Fp : l === null && (l = 0), e[i + a++] = l, !(!s.size || s.size === 1) && (e[i + a++] = c?.[1] ?? -9999999, !(s.size < 3) && (e[i + a++] = c?.[2] ?? -9999999, !(s.size < 4) && (e[i + a++] = c?.[3] ?? -9999999))); + } + return a; +} +function gm(e) { + return Object.keys(e).reduce((t, n) => t + (e[n].size || 1), 0); +} +function _m(e, t, n, r, i) { + let a = (2 + gm(r)) * e.geometriesCount; +>>>>>>> Stashed changes (!t || t.length !== a) && (t = new Float32Array(a)); let o = [], s = 0; for (let a in e.entries) { let c = e.entries[a]; +<<<<<<< Updated upstream +<<<<<<< Updated upstream for (let e = 0, a = c.flatCoordss.length; e < a; e++) o[0] = c.flatCoordss[e][0], o[1] = c.flatCoordss[e][1], B(i, o), t[s++] = o[0], t[s++] = o[1], s += Gp(t, n, r, c, s); } return t; } function Jp(e, t, n, r, i) { let a = 3 * e.verticesCount + (1 + Kp(r)) * e.geometriesCount; +======= + for (let e = 0, a = c.flatCoordss.length; e < a; e++) o[0] = c.flatCoordss[e][0], o[1] = c.flatCoordss[e][1], z(i, o), t[s++] = o[0], t[s++] = o[1], s += hm(t, n, r, c, s); + } + return t; +} +function vm(e, t, n, r, i) { + let a = 3 * e.verticesCount + (1 + gm(r)) * e.geometriesCount; +>>>>>>> Stashed changes +======= + for (let e = 0, a = c.flatCoordss.length; e < a; e++) o[0] = c.flatCoordss[e][0], o[1] = c.flatCoordss[e][1], z(i, o), t[s++] = o[0], t[s++] = o[1], s += hm(t, n, r, c, s); + } + return t; +} +function vm(e, t, n, r, i) { + let a = 3 * e.verticesCount + (1 + gm(r)) * e.geometriesCount; +>>>>>>> Stashed changes (!t || t.length !== a) && (t = new Float32Array(a)); let o = [], s = 0; for (let a in e.entries) { let c = e.entries[a]; for (let e = 0, a = c.flatCoordss.length; e < a; e++) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream o.length = c.flatCoordss[e].length, sa(c.flatCoordss[e], 0, o.length, 3, i, o, 3), s += Gp(t, n, r, c, s), t[s++] = o.length / 3; +======= + o.length = c.flatCoordss[e].length, si(c.flatCoordss[e], 0, o.length, 3, i, o, 3), s += hm(t, n, r, c, s), t[s++] = o.length / 3; +>>>>>>> Stashed changes +======= + o.length = c.flatCoordss[e].length, si(c.flatCoordss[e], 0, o.length, 3, i, o, 3), s += hm(t, n, r, c, s), t[s++] = o.length / 3; +>>>>>>> Stashed changes for (let e = 0, n = o.length; e < n; e += 3) t[s++] = o[e], t[s++] = o[e + 1], t[s++] = o[e + 2]; } } return t; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Yp(e, t, n, r, i) { let a = 2 * e.verticesCount + (1 + Kp(r)) * e.geometriesCount + e.ringsCount; +======= +function ym(e, t, n, r, i) { + let a = 2 * e.verticesCount + (1 + gm(r)) * e.geometriesCount + e.ringsCount; +>>>>>>> Stashed changes +======= +function ym(e, t, n, r, i) { + let a = 2 * e.verticesCount + (1 + gm(r)) * e.geometriesCount + e.ringsCount; +>>>>>>> Stashed changes (!t || t.length !== a) && (t = new Float32Array(a)); let o = [], s = 0; for (let a in e.entries) { let c = e.entries[a]; for (let e = 0, a = c.flatCoordss.length; e < a; e++) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream o.length = c.flatCoordss[e].length, sa(c.flatCoordss[e], 0, o.length, 2, i, o), s += Gp(t, n, r, c, s), t[s++] = c.ringsVerticesCounts[e].length; +======= + o.length = c.flatCoordss[e].length, si(c.flatCoordss[e], 0, o.length, 2, i, o), s += hm(t, n, r, c, s), t[s++] = c.ringsVerticesCounts[e].length; +>>>>>>> Stashed changes +======= + o.length = c.flatCoordss[e].length, si(c.flatCoordss[e], 0, o.length, 2, i, o), s += hm(t, n, r, c, s), t[s++] = c.ringsVerticesCounts[e].length; +>>>>>>> Stashed changes for (let n = 0, r = c.ringsVerticesCounts[e].length; n < r; n++) t[s++] = c.ringsVerticesCounts[e][n]; for (let e = 0, n = o.length; e < n; e += 2) t[s++] = o[e], t[s++] = o[e + 1]; } @@ -12904,7 +22720,15 @@ function Yp(e, t, n, r, i) { } //#endregion //#region node_modules/ol/render/webgl/serialize.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Xp(e) { +======= +function bm(e) { +>>>>>>> Stashed changes +======= +function bm(e) { +>>>>>>> Stashed changes let t = e.viewState; return { viewState: { @@ -12932,6 +22756,8 @@ function Xp(e) { } //#endregion //#region node_modules/ol/render/webgl/style.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Zp(e) { return (JSON.stringify(e).split("").reduce((e, t) => (e << 5) - e + t.charCodeAt(0), 0) >>> 0).toString(); } @@ -12951,6 +22777,48 @@ function Qp(e, t, n, r) { `${r}displacement` in e && t.setSymbolOffsetExpression(Q(n, e[`${r}displacement`], Vs)), `${r}rotation` in e && t.setSymbolRotationExpression(Q(n, e[`${r}rotation`], U)), `${r}rotate-with-view` in e && t.setSymbolRotateWithView(!!e[`${r}rotate-with-view`]); } function $p(e, t, n, r, i) { +======= +function xm(e) { + return (JSON.stringify(e).split("").reduce((e, t) => (e << 5) - e + t.charCodeAt(0), 0) >>> 0).toString(); +} +function Sm(e, t, n, r) { + if (`${r}radius` in e && r !== "icon-") { + let i = Z(n, e[`${r}radius`], V); + if (`${r}radius2` in e) { + let t = Z(n, e[`${r}radius2`], V); + i = `max(${i}, ${t})`; + } + `${r}stroke-width` in e && (i = `(${i} + ${Z(n, e[`${r}stroke-width`], V)} * 0.5)`), t.setSymbolSizeExpression(`vec2(${i} * 2. + 0.5)`); + } + if (`${r}scale` in e) { + let i = Z(n, e[`${r}scale`], ss); + t.setSymbolSizeExpression(`${t.getSymbolSizeExpression()} * ${i}`); + } + `${r}displacement` in e && t.setSymbolOffsetExpression(Z(n, e[`${r}displacement`], os)), `${r}rotation` in e && t.setSymbolRotationExpression(Z(n, e[`${r}rotation`], V)), `${r}rotate-with-view` in e && t.setSymbolRotateWithView(!!e[`${r}rotate-with-view`]); +} +function Cm(e, t, n, r, i) { +>>>>>>> Stashed changes +======= +function xm(e) { + return (JSON.stringify(e).split("").reduce((e, t) => (e << 5) - e + t.charCodeAt(0), 0) >>> 0).toString(); +} +function Sm(e, t, n, r) { + if (`${r}radius` in e && r !== "icon-") { + let i = Z(n, e[`${r}radius`], V); + if (`${r}radius2` in e) { + let t = Z(n, e[`${r}radius2`], V); + i = `max(${i}, ${t})`; + } + `${r}stroke-width` in e && (i = `(${i} + ${Z(n, e[`${r}stroke-width`], V)} * 0.5)`), t.setSymbolSizeExpression(`vec2(${i} * 2. + 0.5)`); + } + if (`${r}scale` in e) { + let i = Z(n, e[`${r}scale`], ss); + t.setSymbolSizeExpression(`${t.getSymbolSizeExpression()} * ${i}`); + } + `${r}displacement` in e && t.setSymbolOffsetExpression(Z(n, e[`${r}displacement`], os)), `${r}rotation` in e && t.setSymbolRotationExpression(Z(n, e[`${r}rotation`], V)), `${r}rotate-with-view` in e && t.setSymbolRotateWithView(!!e[`${r}rotate-with-view`]); +} +function Cm(e, t, n, r, i) { +>>>>>>> Stashed changes let a = "vec4(0.)"; if (t !== null && (a = t), n !== null && r !== null) { let t = `smoothstep(-${r} + 0.63, -${r} - 0.58, ${e})`; @@ -12959,14 +22827,32 @@ function $p(e, t, n, r, i) { let o = `(1.0 - smoothstep(-0.63, 0.58, ${e}))`, s = `${a} * vec4(1.0, 1.0, 1.0, ${o})`; return i !== null && (s = `${s} * vec4(1.0, 1.0, 1.0, ${i})`), s; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function em(e, t, n, r, i) { +======= +function wm(e, t, n, r, i) { +>>>>>>> Stashed changes +======= +function wm(e, t, n, r, i) { +>>>>>>> Stashed changes let a = new Image(); a.crossOrigin = e[`${r}cross-origin`] === void 0 ? "anonymous" : e[`${r}cross-origin`], z(typeof e[`${r}src`] == "string", `WebGL layers do not support expressions for the ${r}src style property`), a.src = e[`${r}src`], n[`u_texture${i}_size`] = () => a.complete ? [a.width, a.height] : [0, 0], t.addUniform(`u_texture${i}_size`, "vec2"); let o = `u_texture${i}_size`; return n[`u_texture${i}`] = a, t.addUniform(`u_texture${i}`, "sampler2D"), o; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function tm(e, t, n, r, i) { let a = Q(n, e[`${t}offset`], Hs); +======= +function Tm(e, t, n, r, i) { + let a = Z(n, e[`${t}offset`], ss); +>>>>>>> Stashed changes +======= +function Tm(e, t, n, r, i) { + let a = Z(n, e[`${t}offset`], ss); +>>>>>>> Stashed changes if (`${t}offset-origin` in e) switch (e[`${t}offset-origin`]) { case "top-right": a = `vec2(${r}.x, 0.) + ${i} * vec2(-1., 0.) + ${a} * vec2(-1., 1.)`; @@ -12978,6 +22864,8 @@ function tm(e, t, n, r, i) { } return a; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function nm(e, t, n, r) { r.functions.circleDistanceField = "float circleDistanceField(vec2 point, float radius) {\n return length(point) - radius;\n}", Qp(e, t, r, "circle-"); let i = null; @@ -13028,6 +22916,110 @@ function im(e, t, n, r) { if (Qp(e, t, r, "icon-"), "icon-anchor" in e) { let n = Q(r, e["icon-anchor"], Vs), i = "1.0"; "icon-scale" in e && (i = Q(r, e["icon-scale"], Hs)); +======= +function Em(e, t, n, r) { + r.functions.circleDistanceField = "float circleDistanceField(vec2 point, float radius) {\n return length(point) - radius;\n}", Sm(e, t, r, "circle-"); + let i = null; + "circle-opacity" in e && (i = Z(r, e["circle-opacity"], V)); + let a = "coordsPx"; + "circle-scale" in e && (a = `coordsPx / ${Z(r, e["circle-scale"], ss)}`); + let o = null; + "circle-fill-color" in e && (o = Z(r, e["circle-fill-color"], U)); + let s = null; + "circle-stroke-color" in e && (s = Z(r, e["circle-stroke-color"], U)); + let c = Z(r, e["circle-radius"], V), l = null; + "circle-stroke-width" in e && (l = Z(r, e["circle-stroke-width"], V), c = `(${c} + ${l} * 0.5)`); + let u = Cm(`circleDistanceField(${a}, ${c})`, o, s, l, i); + t.setSymbolColorExpression(u); +} +function Dm(e, t, n, r) { + r.functions.round = "float round(float v) {\n return sign(v) * floor(abs(v) + 0.5);\n}", r.functions.starDistanceField = "float starDistanceField(vec2 point, float numPoints, float radius, float radius2, float angle) {\n float startAngle = -PI * 0.5 + angle; // tip starts upwards and rotates clockwise with angle\n float c = cos(startAngle);\n float s = sin(startAngle);\n vec2 pointRotated = vec2(c * point.x - s * point.y, s * point.x + c * point.y);\n float alpha = TWO_PI / numPoints; // the angle of one sector\n float beta = atan(pointRotated.y, pointRotated.x);\n float gamma = round(beta / alpha) * alpha; // angle in sector\n c = cos(-gamma);\n s = sin(-gamma);\n vec2 inSector = vec2(c * pointRotated.x - s * pointRotated.y, abs(s * pointRotated.x + c * pointRotated.y));\n vec2 tipToPoint = inSector + vec2(-radius, 0.);\n vec2 edgeNormal = vec2(radius2 * sin(alpha * 0.5), -radius2 * cos(alpha * 0.5) + radius);\n return dot(normalize(edgeNormal), tipToPoint);\n}", r.functions.regularDistanceField = "float regularDistanceField(vec2 point, float numPoints, float radius, float angle) {\n float startAngle = -PI * 0.5 + angle; // tip starts upwards and rotates clockwise with angle\n float c = cos(startAngle);\n float s = sin(startAngle);\n vec2 pointRotated = vec2(c * point.x - s * point.y, s * point.x + c * point.y);\n float alpha = TWO_PI / numPoints; // the angle of one sector\n float radiusIn = radius * cos(PI / numPoints);\n float beta = atan(pointRotated.y, pointRotated.x);\n float gamma = round((beta - alpha * 0.5) / alpha) * alpha + alpha * 0.5; // angle in sector from mid\n c = cos(-gamma);\n s = sin(-gamma);\n vec2 inSector = vec2(c * pointRotated.x - s * pointRotated.y, abs(s * pointRotated.x + c * pointRotated.y));\n return inSector.x - radiusIn;\n}", Sm(e, t, r, "shape-"); + let i = null; + "shape-opacity" in e && (i = Z(r, e["shape-opacity"], V)); + let a = "coordsPx"; + "shape-scale" in e && (a = `coordsPx / ${Z(r, e["shape-scale"], ss)}`); + let o = null; + "shape-fill-color" in e && (o = Z(r, e["shape-fill-color"], U)); + let s = null; + "shape-stroke-color" in e && (s = Z(r, e["shape-stroke-color"], U)); + let c = null; + "shape-stroke-width" in e && (c = Z(r, e["shape-stroke-width"], V)); + let l = Z(r, e["shape-points"], V), u = "0."; + "shape-angle" in e && (u = Z(r, e["shape-angle"], V)); + let d, f = Z(r, e["shape-radius"], V); + if (c !== null && (f = `${f} + ${c} * 0.5`), "shape-radius2" in e) { + let t = Z(r, e["shape-radius2"], V); + c !== null && (t = `${t} + ${c} * 0.5`), d = `starDistanceField(${a}, ${l}, ${f}, ${t}, ${u})`; + } else d = `regularDistanceField(${a}, ${l}, ${f}, ${u})`; + let p = Cm(d, o, s, c, i); + t.setSymbolColorExpression(p); +} +function Om(e, t, n, r) { + let i = "vec4(1.0)"; + "icon-color" in e && (i = Z(r, e["icon-color"], U)), "icon-opacity" in e && (i = `${i} * vec4(1.0, 1.0, 1.0, ${Z(r, e["icon-opacity"], V)})`); + let a = xm(e["icon-src"]), o = wm(e, t, n, "icon-", a); + if (t.setSymbolColorExpression(`${i} * texture2D(u_texture${a}, v_texCoord)`).setSymbolSizeExpression(o), "icon-width" in e && "icon-height" in e && t.setSymbolSizeExpression(`vec2(${Z(r, e["icon-width"], V)}, ${Z(r, e["icon-height"], V)})`), "icon-offset" in e && "icon-size" in e) { + let n = Z(r, e["icon-size"], os), i = t.getSymbolSizeExpression(); + t.setSymbolSizeExpression(n); + let a = Tm(e, "icon-", r, "v_quadSizePx", n); + t.setTextureCoordinateExpression(`(vec4((${a}).xyxy) + vec4(0., 0., ${n})) / (${i}).xyxy`); + } + if (Sm(e, t, r, "icon-"), "icon-anchor" in e) { + let n = Z(r, e["icon-anchor"], os), i = "1.0"; + "icon-scale" in e && (i = Z(r, e["icon-scale"], ss)); +>>>>>>> Stashed changes +======= +function Em(e, t, n, r) { + r.functions.circleDistanceField = "float circleDistanceField(vec2 point, float radius) {\n return length(point) - radius;\n}", Sm(e, t, r, "circle-"); + let i = null; + "circle-opacity" in e && (i = Z(r, e["circle-opacity"], V)); + let a = "coordsPx"; + "circle-scale" in e && (a = `coordsPx / ${Z(r, e["circle-scale"], ss)}`); + let o = null; + "circle-fill-color" in e && (o = Z(r, e["circle-fill-color"], U)); + let s = null; + "circle-stroke-color" in e && (s = Z(r, e["circle-stroke-color"], U)); + let c = Z(r, e["circle-radius"], V), l = null; + "circle-stroke-width" in e && (l = Z(r, e["circle-stroke-width"], V), c = `(${c} + ${l} * 0.5)`); + let u = Cm(`circleDistanceField(${a}, ${c})`, o, s, l, i); + t.setSymbolColorExpression(u); +} +function Dm(e, t, n, r) { + r.functions.round = "float round(float v) {\n return sign(v) * floor(abs(v) + 0.5);\n}", r.functions.starDistanceField = "float starDistanceField(vec2 point, float numPoints, float radius, float radius2, float angle) {\n float startAngle = -PI * 0.5 + angle; // tip starts upwards and rotates clockwise with angle\n float c = cos(startAngle);\n float s = sin(startAngle);\n vec2 pointRotated = vec2(c * point.x - s * point.y, s * point.x + c * point.y);\n float alpha = TWO_PI / numPoints; // the angle of one sector\n float beta = atan(pointRotated.y, pointRotated.x);\n float gamma = round(beta / alpha) * alpha; // angle in sector\n c = cos(-gamma);\n s = sin(-gamma);\n vec2 inSector = vec2(c * pointRotated.x - s * pointRotated.y, abs(s * pointRotated.x + c * pointRotated.y));\n vec2 tipToPoint = inSector + vec2(-radius, 0.);\n vec2 edgeNormal = vec2(radius2 * sin(alpha * 0.5), -radius2 * cos(alpha * 0.5) + radius);\n return dot(normalize(edgeNormal), tipToPoint);\n}", r.functions.regularDistanceField = "float regularDistanceField(vec2 point, float numPoints, float radius, float angle) {\n float startAngle = -PI * 0.5 + angle; // tip starts upwards and rotates clockwise with angle\n float c = cos(startAngle);\n float s = sin(startAngle);\n vec2 pointRotated = vec2(c * point.x - s * point.y, s * point.x + c * point.y);\n float alpha = TWO_PI / numPoints; // the angle of one sector\n float radiusIn = radius * cos(PI / numPoints);\n float beta = atan(pointRotated.y, pointRotated.x);\n float gamma = round((beta - alpha * 0.5) / alpha) * alpha + alpha * 0.5; // angle in sector from mid\n c = cos(-gamma);\n s = sin(-gamma);\n vec2 inSector = vec2(c * pointRotated.x - s * pointRotated.y, abs(s * pointRotated.x + c * pointRotated.y));\n return inSector.x - radiusIn;\n}", Sm(e, t, r, "shape-"); + let i = null; + "shape-opacity" in e && (i = Z(r, e["shape-opacity"], V)); + let a = "coordsPx"; + "shape-scale" in e && (a = `coordsPx / ${Z(r, e["shape-scale"], ss)}`); + let o = null; + "shape-fill-color" in e && (o = Z(r, e["shape-fill-color"], U)); + let s = null; + "shape-stroke-color" in e && (s = Z(r, e["shape-stroke-color"], U)); + let c = null; + "shape-stroke-width" in e && (c = Z(r, e["shape-stroke-width"], V)); + let l = Z(r, e["shape-points"], V), u = "0."; + "shape-angle" in e && (u = Z(r, e["shape-angle"], V)); + let d, f = Z(r, e["shape-radius"], V); + if (c !== null && (f = `${f} + ${c} * 0.5`), "shape-radius2" in e) { + let t = Z(r, e["shape-radius2"], V); + c !== null && (t = `${t} + ${c} * 0.5`), d = `starDistanceField(${a}, ${l}, ${f}, ${t}, ${u})`; + } else d = `regularDistanceField(${a}, ${l}, ${f}, ${u})`; + let p = Cm(d, o, s, c, i); + t.setSymbolColorExpression(p); +} +function Om(e, t, n, r) { + let i = "vec4(1.0)"; + "icon-color" in e && (i = Z(r, e["icon-color"], U)), "icon-opacity" in e && (i = `${i} * vec4(1.0, 1.0, 1.0, ${Z(r, e["icon-opacity"], V)})`); + let a = xm(e["icon-src"]), o = wm(e, t, n, "icon-", a); + if (t.setSymbolColorExpression(`${i} * texture2D(u_texture${a}, v_texCoord)`).setSymbolSizeExpression(o), "icon-width" in e && "icon-height" in e && t.setSymbolSizeExpression(`vec2(${Z(r, e["icon-width"], V)}, ${Z(r, e["icon-height"], V)})`), "icon-offset" in e && "icon-size" in e) { + let n = Z(r, e["icon-size"], os), i = t.getSymbolSizeExpression(); + t.setSymbolSizeExpression(n); + let a = Tm(e, "icon-", r, "v_quadSizePx", n); + t.setTextureCoordinateExpression(`(vec4((${a}).xyxy) + vec4(0., 0., ${n})) / (${i}).xyxy`); + } + if (Sm(e, t, r, "icon-"), "icon-anchor" in e) { + let n = Z(r, e["icon-anchor"], os), i = "1.0"; + "icon-scale" in e && (i = Z(r, e["icon-scale"], ss)); +>>>>>>> Stashed changes let a; a = e["icon-anchor-x-units"] === "pixels" && e["icon-anchor-y-units"] === "pixels" ? `${n} * ${i}` : e["icon-anchor-x-units"] === "pixels" ? `${n} * vec2(vec2(${i}).x, v_quadSizePx.y)` : e["icon-anchor-y-units"] === "pixels" ? `${n} * vec2(v_quadSizePx.x, vec2(${i}).x)` : `${n} * v_quadSizePx`; let o = `v_quadSizePx * vec2(0.5, -0.5) + ${a} * vec2(-1., 1.)`; @@ -13043,6 +23035,8 @@ function im(e, t, n, r) { t.setSymbolOffsetExpression(`${t.getSymbolOffsetExpression()} + ${o}`); } } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function am(e, t, n, r) { if ("stroke-color" in e && t.setStrokeColorExpression(Q(r, e["stroke-color"], G)), "stroke-pattern-src" in e) { let i = Zp(e["stroke-pattern-src"]), a = em(e, t, n, "stroke-pattern-", i), o = a, s = "vec2(0.)"; @@ -13055,22 +23049,78 @@ function am(e, t, n, r) { "stroke-color" in e && (d = t.getStrokeColorExpression()), t.setStrokeColorExpression(`${d} * sampleStrokePattern(${u}, ${a}, ${s}, ${o}, ${c}, ${l}, currentLengthPx, currentRadiusRatio, v_width)`), r.functions.computeStrokePatternLength = "float computeStrokePatternLength(vec2 sampleSize, float spacingPx, float lineWidth) {\n float patternLengthPx = sampleSize.x / sampleSize.y * lineWidth;\n return patternLengthPx + spacingPx;\n}", t.setStrokePatternLengthExpression(`computeStrokePatternLength(${o}, ${c}, v_width)`); } if ("stroke-width" in e && t.setStrokeWidthExpression(Q(r, e["stroke-width"], U)), "stroke-offset" in e && t.setStrokeOffsetExpression(Q(r, e["stroke-offset"], U)), "stroke-line-cap" in e && t.setStrokeCapExpression(Q(r, e["stroke-line-cap"], W)), "stroke-line-join" in e && t.setStrokeJoinExpression(Q(r, e["stroke-line-join"], W)), "stroke-miter-limit" in e && t.setStrokeMiterLimitExpression(Q(r, e["stroke-miter-limit"], U)), "stroke-line-dash" in e) { +======= +function km(e, t, n, r) { + if ("stroke-color" in e && t.setStrokeColorExpression(Z(r, e["stroke-color"], U)), "stroke-pattern-src" in e) { + let i = xm(e["stroke-pattern-src"]), a = wm(e, t, n, "stroke-pattern-", i), o = a, s = "vec2(0.)"; + "stroke-pattern-offset" in e && "stroke-pattern-size" in e && (o = Z(r, e["stroke-pattern-size"], os), s = Tm(e, "stroke-pattern-", r, a, o)); + let c = "0."; + "stroke-pattern-spacing" in e && (c = Z(r, e["stroke-pattern-spacing"], V)); + let l = "0."; + "stroke-pattern-start-offset" in e && (l = Z(r, e["stroke-pattern-start-offset"], V)), r.functions.sampleStrokePattern = "vec4 sampleStrokePattern(sampler2D texture, vec2 textureSize, vec2 textureOffset, vec2 sampleSize, float spacingPx, float startOffsetPx, float currentLengthPx, float currentRadiusRatio, float lineWidth) {\n float currentLengthScaled = (currentLengthPx - startOffsetPx) * sampleSize.y / lineWidth;\n float spacingScaled = spacingPx * sampleSize.y / lineWidth;\n float uCoordPx = mod(currentLengthScaled, (sampleSize.x + spacingScaled));\n float isInsideOfPattern = step(uCoordPx, sampleSize.x);\n float vCoordPx = (-currentRadiusRatio * 0.5 + 0.5) * sampleSize.y;\n // make sure that we're not sampling too close to the borders to avoid interpolation with outside pixels\n uCoordPx = clamp(uCoordPx, 0.5, sampleSize.x - 0.5);\n vCoordPx = clamp(vCoordPx, 0.5, sampleSize.y - 0.5);\n vec2 texCoord = (vec2(uCoordPx, vCoordPx) + textureOffset) / textureSize;\n return texture2D(texture, texCoord) * vec4(1.0, 1.0, 1.0, isInsideOfPattern);\n}"; + let u = `u_texture${i}`, d = "1."; + "stroke-color" in e && (d = t.getStrokeColorExpression()), t.setStrokeColorExpression(`${d} * sampleStrokePattern(${u}, ${a}, ${s}, ${o}, ${c}, ${l}, currentLengthPx, currentRadiusRatio, v_width)`), r.functions.computeStrokePatternLength = "float computeStrokePatternLength(vec2 sampleSize, float spacingPx, float lineWidth) {\n float patternLengthPx = sampleSize.x / sampleSize.y * lineWidth;\n return patternLengthPx + spacingPx;\n}", t.setStrokePatternLengthExpression(`computeStrokePatternLength(${o}, ${c}, v_width)`); + } + if ("stroke-width" in e && t.setStrokeWidthExpression(Z(r, e["stroke-width"], V)), "stroke-offset" in e && t.setStrokeOffsetExpression(Z(r, e["stroke-offset"], V)), "stroke-line-cap" in e && t.setStrokeCapExpression(Z(r, e["stroke-line-cap"], H)), "stroke-line-join" in e && t.setStrokeJoinExpression(Z(r, e["stroke-line-join"], H)), "stroke-miter-limit" in e && t.setStrokeMiterLimitExpression(Z(r, e["stroke-miter-limit"], V)), "stroke-line-dash" in e) { +>>>>>>> Stashed changes +======= +function km(e, t, n, r) { + if ("stroke-color" in e && t.setStrokeColorExpression(Z(r, e["stroke-color"], U)), "stroke-pattern-src" in e) { + let i = xm(e["stroke-pattern-src"]), a = wm(e, t, n, "stroke-pattern-", i), o = a, s = "vec2(0.)"; + "stroke-pattern-offset" in e && "stroke-pattern-size" in e && (o = Z(r, e["stroke-pattern-size"], os), s = Tm(e, "stroke-pattern-", r, a, o)); + let c = "0."; + "stroke-pattern-spacing" in e && (c = Z(r, e["stroke-pattern-spacing"], V)); + let l = "0."; + "stroke-pattern-start-offset" in e && (l = Z(r, e["stroke-pattern-start-offset"], V)), r.functions.sampleStrokePattern = "vec4 sampleStrokePattern(sampler2D texture, vec2 textureSize, vec2 textureOffset, vec2 sampleSize, float spacingPx, float startOffsetPx, float currentLengthPx, float currentRadiusRatio, float lineWidth) {\n float currentLengthScaled = (currentLengthPx - startOffsetPx) * sampleSize.y / lineWidth;\n float spacingScaled = spacingPx * sampleSize.y / lineWidth;\n float uCoordPx = mod(currentLengthScaled, (sampleSize.x + spacingScaled));\n float isInsideOfPattern = step(uCoordPx, sampleSize.x);\n float vCoordPx = (-currentRadiusRatio * 0.5 + 0.5) * sampleSize.y;\n // make sure that we're not sampling too close to the borders to avoid interpolation with outside pixels\n uCoordPx = clamp(uCoordPx, 0.5, sampleSize.x - 0.5);\n vCoordPx = clamp(vCoordPx, 0.5, sampleSize.y - 0.5);\n vec2 texCoord = (vec2(uCoordPx, vCoordPx) + textureOffset) / textureSize;\n return texture2D(texture, texCoord) * vec4(1.0, 1.0, 1.0, isInsideOfPattern);\n}"; + let u = `u_texture${i}`, d = "1."; + "stroke-color" in e && (d = t.getStrokeColorExpression()), t.setStrokeColorExpression(`${d} * sampleStrokePattern(${u}, ${a}, ${s}, ${o}, ${c}, ${l}, currentLengthPx, currentRadiusRatio, v_width)`), r.functions.computeStrokePatternLength = "float computeStrokePatternLength(vec2 sampleSize, float spacingPx, float lineWidth) {\n float patternLengthPx = sampleSize.x / sampleSize.y * lineWidth;\n return patternLengthPx + spacingPx;\n}", t.setStrokePatternLengthExpression(`computeStrokePatternLength(${o}, ${c}, v_width)`); + } + if ("stroke-width" in e && t.setStrokeWidthExpression(Z(r, e["stroke-width"], V)), "stroke-offset" in e && t.setStrokeOffsetExpression(Z(r, e["stroke-offset"], V)), "stroke-line-cap" in e && t.setStrokeCapExpression(Z(r, e["stroke-line-cap"], H)), "stroke-line-join" in e && t.setStrokeJoinExpression(Z(r, e["stroke-line-join"], H)), "stroke-miter-limit" in e && t.setStrokeMiterLimitExpression(Z(r, e["stroke-miter-limit"], V)), "stroke-line-dash" in e) { +>>>>>>> Stashed changes r.functions.getSingleDashDistance = `float getSingleDashDistance(float distance, float radius, float dashOffset, float dashLength, float dashLengthTotal, float capType, float lineWidth) { float localDistance = mod(distance, dashLengthTotal); float distanceSegment = abs(localDistance - dashOffset - dashLength * 0.5) - dashLength * 0.5; distanceSegment = min(distanceSegment, dashLengthTotal - localDistance); +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (capType == ${ip("square")}) { distanceSegment -= lineWidth * 0.5; } else if (capType == ${ip("round")}) { +======= + if (capType == ${Op("square")}) { + distanceSegment -= lineWidth * 0.5; + } else if (capType == ${Op("round")}) { +>>>>>>> Stashed changes +======= + if (capType == ${Op("square")}) { + distanceSegment -= lineWidth * 0.5; + } else if (capType == ${Op("round")}) { +>>>>>>> Stashed changes distanceSegment = min(distanceSegment, sqrt(distanceSegment * distanceSegment + radius * radius) - lineWidth * 0.5); } return distanceSegment; }`; +<<<<<<< Updated upstream +<<<<<<< Updated upstream let n = e["stroke-line-dash"].map((e) => Q(r, e, U)); n.length % 2 == 1 && (n = [...n, ...n]); let i = "0."; "stroke-line-dash-offset" in e && (i = Q(r, e["stroke-line-dash-offset"], U)); let a = `dashDistanceField_${Zp(e["stroke-line-dash"])}`, o = n.map((e, t) => `float dashLength${t}`).join(", "), s = n.map((e, t) => `dashLength${t}`).join(" + "), c = "0.", l = `getSingleDashDistance(distance, radius, ${c}, dashLength0, totalDashLength, capType, lineWidth)`; +======= + let n = e["stroke-line-dash"].map((e) => Z(r, e, V)); + n.length % 2 == 1 && (n = [...n, ...n]); + let i = "0."; + "stroke-line-dash-offset" in e && (i = Z(r, e["stroke-line-dash-offset"], V)); + let a = `dashDistanceField_${xm(e["stroke-line-dash"])}`, o = n.map((e, t) => `float dashLength${t}`).join(", "), s = n.map((e, t) => `dashLength${t}`).join(" + "), c = "0.", l = `getSingleDashDistance(distance, radius, ${c}, dashLength0, totalDashLength, capType, lineWidth)`; +>>>>>>> Stashed changes +======= + let n = e["stroke-line-dash"].map((e) => Z(r, e, V)); + n.length % 2 == 1 && (n = [...n, ...n]); + let i = "0."; + "stroke-line-dash-offset" in e && (i = Z(r, e["stroke-line-dash-offset"], V)); + let a = `dashDistanceField_${xm(e["stroke-line-dash"])}`, o = n.map((e, t) => `float dashLength${t}`).join(", "), s = n.map((e, t) => `dashLength${t}`).join(" + "), c = "0.", l = `getSingleDashDistance(distance, radius, ${c}, dashLength0, totalDashLength, capType, lineWidth)`; +>>>>>>> Stashed changes for (let e = 2; e < n.length; e += 2) c = `${c} + dashLength${e - 2} + dashLength${e - 1}`, l = `min(${l}, getSingleDashDistance(distance, radius, ${c}, dashLength${e}, totalDashLength, capType, lineWidth))`; r.functions[a] = `float ${a}(float distance, float radius, float capType, float lineWidth, ${o}) { float totalDashLength = ${s}; @@ -13082,6 +23132,8 @@ function am(e, t, n, r) { t.getStrokePatternLengthExpression() && (r.functions.combinePatternLengths = "float combinePatternLengths(float patternLength1, float patternLength2) {\n return patternLength1 * patternLength2;\n}", d = `combinePatternLengths(${t.getStrokePatternLengthExpression()}, ${d})`), t.setStrokePatternLengthExpression(d); } } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function om(e, t, n, r) { if ("fill-color" in e && t.setFillColorExpression(Q(r, e["fill-color"], G)), "fill-pattern-src" in e) { let i = Zp(e["fill-pattern-src"]), a = em(e, t, n, "fill-pattern-", i); @@ -13090,35 +23142,90 @@ function om(e, t, n, r) { if ("fill-pattern-offset" in e && "fill-pattern-size" in e) { let n = Q(r, e["fill-pattern-size"], Vs); t.setFillPatternSizeExpression(n), o = tm(e, "fill-pattern-", r, a, "v_patternSizePx"); +======= +function Am(e, t, n, r) { + if ("fill-color" in e && t.setFillColorExpression(Z(r, e["fill-color"], U)), "fill-pattern-src" in e) { + let i = xm(e["fill-pattern-src"]), a = wm(e, t, n, "fill-pattern-", i); + t.setFillPatternSizeExpression(a); + let o = "vec2(0.)"; + if ("fill-pattern-offset" in e && "fill-pattern-size" in e) { + let n = Z(r, e["fill-pattern-size"], os); + t.setFillPatternSizeExpression(n), o = Tm(e, "fill-pattern-", r, a, "v_patternSizePx"); +>>>>>>> Stashed changes +======= +function Am(e, t, n, r) { + if ("fill-color" in e && t.setFillColorExpression(Z(r, e["fill-color"], U)), "fill-pattern-src" in e) { + let i = xm(e["fill-pattern-src"]), a = wm(e, t, n, "fill-pattern-", i); + t.setFillPatternSizeExpression(a); + let o = "vec2(0.)"; + if ("fill-pattern-offset" in e && "fill-pattern-size" in e) { + let n = Z(r, e["fill-pattern-size"], os); + t.setFillPatternSizeExpression(n), o = Tm(e, "fill-pattern-", r, a, "v_patternSizePx"); +>>>>>>> Stashed changes } r.functions.sampleFillPattern = "vec4 sampleFillPattern(sampler2D texture, vec2 textureSize, vec2 textureOffset, vec2 sampleSize, vec2 patternOriginPx, vec2 pxPosition, float sampleScaleRatio) {\n vec2 pxRelativePos = pxPosition - patternOriginPx;\n\n // rotate the relative position from origin by the current view rotation\n pxRelativePos = vec2(pxRelativePos.x * cos(u_rotation) - pxRelativePos.y * sin(u_rotation), pxRelativePos.x * sin(u_rotation) + pxRelativePos.y * cos(u_rotation));\n // sample position is computed according to the sample offset & size\n vec2 samplePos = mod(pxRelativePos / sampleScaleRatio, sampleSize);\n // also make sure that we're not sampling too close to the borders to avoid interpolation with outside pixels\n samplePos = clamp(samplePos, vec2(0.5), sampleSize - vec2(0.5));\n samplePos.y = sampleSize.y - samplePos.y; // invert y axis so that images appear upright\n return texture2D(texture, (samplePos + textureOffset) / textureSize);\n}"; let s = `u_texture${i}`, c = "1."; "fill-color" in e && (c = t.getFillColorExpression()), t.setFillColorExpression(`${c} * sampleFillPattern(${s}, ${a}, ${o}, v_patternSizePx, v_patternOriginPx, pxPos, df_float(u_df_patternScaleRatio))`); } } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function sm(e, t, n, r) { +======= +function jm(e, t, n, r) { +>>>>>>> Stashed changes +======= +function jm(e, t, n, r) { +>>>>>>> Stashed changes function i(...e) { try { - Q(...e); + Z(...e); } catch {} } +<<<<<<< Updated upstream +<<<<<<< Updated upstream "text-value" in e && i(r, e["text-value"], W), "text-font" in e && i(r, e["text-font"], W), "text-max-angle" in e && i(r, e["text-max-angle"], U), "text-offset-x" in e && i(r, e["text-offset-x"], U), "text-offset-y" in e && i(r, e["text-offset-y"], U), "text-overflow" in e && i(r, e["text-overflow"], Bs), "text-placement" in e && i(r, e["text-placement"], W), "text-repeat" in e && i(r, e["text-repeat"], U), "text-scale" in e && i(r, e["text-scale"], Hs), "text-rotate-with-view" in e && i(r, e["text-rotate-with-view"], Bs), "text-rotation" in e && i(r, e["text-rotation"], U), "text-align" in e && i(r, e["text-align"], W), "text-justify" in e && i(r, e["text-justify"], W), "text-baseline" in e && i(r, e["text-baseline"], W), "text-padding" in e && i(r, e["text-padding"], Vs), "text-fill-color" in e && i(r, e["text-fill-color"], G), "text-stroke-color" in e && i(r, e["text-stroke-color"], G), "text-stroke-line-cap" in e && i(r, e["text-stroke-line-cap"], W), "text-stroke-line-join" in e && i(r, e["text-stroke-line-join"], W), "text-stroke-line-dash" in e && i(r, e["text-stroke-line-dash"], Vs), "text-stroke-line-dash-offset" in e && i(r, e["text-stroke-line-dash-offset"], U), "text-stroke-miter-limit" in e && i(r, e["text-stroke-miter-limit"], U), "text-stroke-width" in e && i(r, e["text-stroke-width"], U), "text-background-fill-color" in e && i(r, e["text-background-fill-color"], G), "text-background-stroke-color" in e && i(r, e["text-background-stroke-color"], G), "text-background-stroke-line-cap" in e && i(r, e["text-background-stroke-line-cap"], W), "text-background-stroke-line-join" in e && i(r, e["text-background-stroke-line-join"], W), "text-background-stroke-line-dash" in e && i(r, e["text-background-stroke-line-dash"], Vs), "text-background-stroke-line-dash-offset" in e && i(r, e["text-background-stroke-line-dash-offset"], U), "text-background-stroke-miter-limit" in e && i(r, e["text-background-stroke-miter-limit"], U), "text-background-stroke-width" in e && i(r, e["text-background-stroke-width"], U), "z-index" in e && i(r, e["z-index"], U); } function cm(e, t, n) { let r = op(t), i = new Op(), a = {}; if ("icon-src" in e ? im(e, i, a, r) : "shape-points" in e ? rm(e, i, a, r) : "circle-radius" in e && nm(e, i, a, r), am(e, i, a, r), om(e, i, a, r), sm(e, i, a, r), n) { let e = $s(t), a = Q(r, n, Bs, e); +======= + "text-value" in e && i(r, e["text-value"], H), "text-font" in e && i(r, e["text-font"], H), "text-max-angle" in e && i(r, e["text-max-angle"], V), "text-offset-x" in e && i(r, e["text-offset-x"], V), "text-offset-y" in e && i(r, e["text-offset-y"], V), "text-overflow" in e && i(r, e["text-overflow"], as), "text-placement" in e && i(r, e["text-placement"], H), "text-repeat" in e && i(r, e["text-repeat"], V), "text-scale" in e && i(r, e["text-scale"], ss), "text-rotate-with-view" in e && i(r, e["text-rotate-with-view"], as), "text-rotation" in e && i(r, e["text-rotation"], V), "text-align" in e && i(r, e["text-align"], H), "text-justify" in e && i(r, e["text-justify"], H), "text-baseline" in e && i(r, e["text-baseline"], H), "text-padding" in e && i(r, e["text-padding"], os), "text-fill-color" in e && i(r, e["text-fill-color"], U), "text-stroke-color" in e && i(r, e["text-stroke-color"], U), "text-stroke-line-cap" in e && i(r, e["text-stroke-line-cap"], H), "text-stroke-line-join" in e && i(r, e["text-stroke-line-join"], H), "text-stroke-line-dash" in e && i(r, e["text-stroke-line-dash"], os), "text-stroke-line-dash-offset" in e && i(r, e["text-stroke-line-dash-offset"], V), "text-stroke-miter-limit" in e && i(r, e["text-stroke-miter-limit"], V), "text-stroke-width" in e && i(r, e["text-stroke-width"], V), "text-background-fill-color" in e && i(r, e["text-background-fill-color"], U), "text-background-stroke-color" in e && i(r, e["text-background-stroke-color"], U), "text-background-stroke-line-cap" in e && i(r, e["text-background-stroke-line-cap"], H), "text-background-stroke-line-join" in e && i(r, e["text-background-stroke-line-join"], H), "text-background-stroke-line-dash" in e && i(r, e["text-background-stroke-line-dash"], os), "text-background-stroke-line-dash-offset" in e && i(r, e["text-background-stroke-line-dash-offset"], V), "text-background-stroke-miter-limit" in e && i(r, e["text-background-stroke-miter-limit"], V), "text-background-stroke-width" in e && i(r, e["text-background-stroke-width"], V), "z-index" in e && i(r, e["z-index"], V); +} +======= + "text-value" in e && i(r, e["text-value"], H), "text-font" in e && i(r, e["text-font"], H), "text-max-angle" in e && i(r, e["text-max-angle"], V), "text-offset-x" in e && i(r, e["text-offset-x"], V), "text-offset-y" in e && i(r, e["text-offset-y"], V), "text-overflow" in e && i(r, e["text-overflow"], as), "text-placement" in e && i(r, e["text-placement"], H), "text-repeat" in e && i(r, e["text-repeat"], V), "text-scale" in e && i(r, e["text-scale"], ss), "text-rotate-with-view" in e && i(r, e["text-rotate-with-view"], as), "text-rotation" in e && i(r, e["text-rotation"], V), "text-align" in e && i(r, e["text-align"], H), "text-justify" in e && i(r, e["text-justify"], H), "text-baseline" in e && i(r, e["text-baseline"], H), "text-padding" in e && i(r, e["text-padding"], os), "text-fill-color" in e && i(r, e["text-fill-color"], U), "text-stroke-color" in e && i(r, e["text-stroke-color"], U), "text-stroke-line-cap" in e && i(r, e["text-stroke-line-cap"], H), "text-stroke-line-join" in e && i(r, e["text-stroke-line-join"], H), "text-stroke-line-dash" in e && i(r, e["text-stroke-line-dash"], os), "text-stroke-line-dash-offset" in e && i(r, e["text-stroke-line-dash-offset"], V), "text-stroke-miter-limit" in e && i(r, e["text-stroke-miter-limit"], V), "text-stroke-width" in e && i(r, e["text-stroke-width"], V), "text-background-fill-color" in e && i(r, e["text-background-fill-color"], U), "text-background-stroke-color" in e && i(r, e["text-background-stroke-color"], U), "text-background-stroke-line-cap" in e && i(r, e["text-background-stroke-line-cap"], H), "text-background-stroke-line-join" in e && i(r, e["text-background-stroke-line-join"], H), "text-background-stroke-line-dash" in e && i(r, e["text-background-stroke-line-dash"], os), "text-background-stroke-line-dash-offset" in e && i(r, e["text-background-stroke-line-dash-offset"], V), "text-background-stroke-miter-limit" in e && i(r, e["text-background-stroke-miter-limit"], V), "text-background-stroke-width" in e && i(r, e["text-background-stroke-width"], V), "z-index" in e && i(r, e["z-index"], V); +} +>>>>>>> Stashed changes +function Mm(e, t, n) { + let r = Ap(t), i = new Qp(), a = {}; + if ("icon-src" in e ? Om(e, i, a, r) : "shape-points" in e ? Dm(e, i, a, r) : "circle-radius" in e && Em(e, i, a, r), km(e, i, a, r), Am(e, i, a, r), jm(e, i, a, r), n) { + let e = vs(t), a = Z(r, n, as, e); +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes e.mCoordinate ? i.setFragmentDiscardExpression(`!${a}`) : i.setShapeDiscardExpression(`!${a}`); } let o = {}; function s(e, t, n, a) { if (!r[e]) return; +<<<<<<< Updated upstream +<<<<<<< Updated upstream let s = bp(n), c = yp(n); +======= + let s = Wp(n), c = Up(n); +>>>>>>> Stashed changes +======= + let s = Wp(n), c = Up(n); +>>>>>>> Stashed changes i.addAttribute(`a_${t}`, s), o[t] = { size: c, callback: a }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream return s("geometryType", up, W, (e) => rp(yc(e.getGeometry()))), s("featureId", lp, W | U, (e) => { let t = e.getId() ?? null; return typeof t == "string" ? rp(t) : t; @@ -13131,16 +23238,60 @@ function cm(e, t, n) { uniforms: { ...a, ...Sp(r, t) +======= + return s("geometryType", Pp, H, (e) => Dp(Rs(e.getGeometry()))), s("featureId", Np, H | V, (e) => { + let t = e.getId() ?? null; + return typeof t == "string" ? Dp(t) : t; + }), Gp(i, r), { + builder: i, + attributes: { + ...o, + ...qp(r) + }, + uniforms: { + ...a, + ...Kp(r, t) +>>>>>>> Stashed changes +======= + return s("geometryType", Pp, H, (e) => Dp(Rs(e.getGeometry()))), s("featureId", Np, H | V, (e) => { + let t = e.getId() ?? null; + return typeof t == "string" ? Dp(t) : t; + }), Gp(i, r), { + builder: i, + attributes: { + ...o, + ...qp(r) + }, + uniforms: { + ...a, + ...Kp(r, t) +>>>>>>> Stashed changes } }; } //#endregion //#region node_modules/ol/render/webgl/textUtil.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var lm = { TEXT_OVERLAY_TEXTURE: "u_textOverlay", TEXT_OVERLAY_MATRIX: "u_textOverlayMatrix" }; function um(e) { +======= +var Nm = { + TEXT_OVERLAY_TEXTURE: "u_textOverlay", + TEXT_OVERLAY_MATRIX: "u_textOverlayMatrix" +}; +function Pm(e) { +>>>>>>> Stashed changes +======= +var Nm = { + TEXT_OVERLAY_TEXTURE: "u_textOverlay", + TEXT_OVERLAY_MATRIX: "u_textOverlayMatrix" +}; +function Pm(e) { +>>>>>>> Stashed changes let t = !1; function n(e) { for (let n in e) if (n === "text-value") { @@ -13159,15 +23310,35 @@ function um(e) { } return n(e), t; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream function dm(e, t) { let n = ff(); +======= +function Fm(e, t) { + let n = If(); +>>>>>>> Stashed changes +======= +function Fm(e, t) { + let n = If(); +>>>>>>> Stashed changes return { fragmentShader: ` precision mediump float; uniform sampler2D u_image; +<<<<<<< Updated upstream +<<<<<<< Updated upstream uniform sampler2D ${lm.TEXT_OVERLAY_TEXTURE}; uniform mat4 ${lm.TEXT_OVERLAY_MATRIX}; +======= + uniform sampler2D ${Nm.TEXT_OVERLAY_TEXTURE}; + uniform mat4 ${Nm.TEXT_OVERLAY_MATRIX}; +>>>>>>> Stashed changes +======= + uniform sampler2D ${Nm.TEXT_OVERLAY_TEXTURE}; + uniform mat4 ${Nm.TEXT_OVERLAY_MATRIX}; +>>>>>>> Stashed changes varying vec2 v_texCoord; @@ -13175,26 +23346,62 @@ function dm(e, t) { vec4 color = texture2D(u_image, v_texCoord); vec2 coords = v_texCoord * 2. - vec2(1.); +<<<<<<< Updated upstream +<<<<<<< Updated upstream coords = (${lm.TEXT_OVERLAY_MATRIX} * vec4(coords.xy, 0., 1.)).xy; coords = coords * 0.5 + vec2(0.5); float outOfBounds = clamp(step(1., coords.x) + step(1., coords.y) + step(0., -coords.x) + step(0., -coords.y), 0., 1.); vec4 textColor = texture2D(${lm.TEXT_OVERLAY_TEXTURE}, vec2(coords.x, 1. - coords.y)); +======= + coords = (${Nm.TEXT_OVERLAY_MATRIX} * vec4(coords.xy, 0., 1.)).xy; + coords = coords * 0.5 + vec2(0.5); + float outOfBounds = clamp(step(1., coords.x) + step(1., coords.y) + step(0., -coords.x) + step(0., -coords.y), 0., 1.); + + vec4 textColor = texture2D(${Nm.TEXT_OVERLAY_TEXTURE}, vec2(coords.x, 1. - coords.y)); +>>>>>>> Stashed changes +======= + coords = (${Nm.TEXT_OVERLAY_MATRIX} * vec4(coords.xy, 0., 1.)).xy; + coords = coords * 0.5 + vec2(0.5); + float outOfBounds = clamp(step(1., coords.x) + step(1., coords.y) + step(0., -coords.x) + step(0., -coords.y), 0., 1.); + + vec4 textColor = texture2D(${Nm.TEXT_OVERLAY_TEXTURE}, vec2(coords.x, 1. - coords.y)); +>>>>>>> Stashed changes textColor.a *= 1. - outOfBounds; // if we're sampling out of the text overlay, make alpha 0 to avoid drawing anything gl_FragColor = textColor.a * textColor + (1. - textColor.a) * color; }`, uniforms: { +<<<<<<< Updated upstream +<<<<<<< Updated upstream [lm.TEXT_OVERLAY_TEXTURE]: e, [lm.TEXT_OVERLAY_MATRIX]: (r) => { let i = e(), a = t(); if (!i || !a) return n; let o = a.viewState, s = r.viewState, c = s.center, l = s.resolution, u = s.rotation, d = r.size, f = o.center, p = o.resolution, m = o.rotation, h = i.width, g = i.height; return pf(n), hf(n, 1 / p / (h / 2), 1 / p / (g / 2), 1, n), _f(n, m, n), gf(n, c[0] - f[0], c[1] - f[1], 0, n), _f(n, -u, n), hf(n, l * d[0] / 2, l * d[1] / 2, 1, n), n; +======= + [Nm.TEXT_OVERLAY_TEXTURE]: e, + [Nm.TEXT_OVERLAY_MATRIX]: (r) => { + let i = e(), a = t(); + if (!i || !a) return n; + let o = a.viewState, s = r.viewState, c = s.center, l = s.resolution, u = s.rotation, d = r.size, f = o.center, p = o.resolution, m = o.rotation, h = i.width, g = i.height; + return Lf(n), zf(n, 1 / p / (h / 2), 1 / p / (g / 2), 1, n), Vf(n, m, n), Bf(n, c[0] - f[0], c[1] - f[1], 0, n), Vf(n, -u, n), zf(n, l * d[0] / 2, l * d[1] / 2, 1, n), n; +>>>>>>> Stashed changes +======= + [Nm.TEXT_OVERLAY_TEXTURE]: e, + [Nm.TEXT_OVERLAY_MATRIX]: (r) => { + let i = e(), a = t(); + if (!i || !a) return n; + let o = a.viewState, s = r.viewState, c = s.center, l = s.resolution, u = s.rotation, d = r.size, f = o.center, p = o.resolution, m = o.rotation, h = i.width, g = i.height; + return Lf(n), zf(n, 1 / p / (h / 2), 1 / p / (g / 2), 1, n), Vf(n, m, n), Bf(n, c[0] - f[0], c[1] - f[1], 0, n), Vf(n, -u, n), zf(n, l * d[0] / 2, l * d[1] / 2, 1, n), n; +>>>>>>> Stashed changes } } }; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream new Mp("Point", [0, 0], [], 2, {}, "dummy"), new TextDecoder(); //#endregion //#region node_modules/ol/render/webgl/VectorStyleRenderer.js @@ -13205,6 +23412,30 @@ function mm() { var hm = 0; function gm(e, t, n) { let r = hm++; +======= +new nm("Point", [0, 0], [], 2, {}, "dummy"), new TextDecoder(); +//#endregion +//#region node_modules/ol/render/webgl/VectorStyleRenderer.js +var Im = [], Lm; +function Rm() { + return Lm ||= um(), Lm; +} +var zm = 0; +function Bm(e, t, n) { + let r = zm++; +>>>>>>> Stashed changes +======= +new nm("Point", [0, 0], [], 2, {}, "dummy"), new TextDecoder(); +//#endregion +//#region node_modules/ol/render/webgl/VectorStyleRenderer.js +var Im = [], Lm; +function Rm() { + return Lm ||= um(), Lm; +} +var zm = 0; +function Bm(e, t, n) { + let r = zm++; +>>>>>>> Stashed changes return n ? e.postMessage({ ...t, id: r @@ -13219,7 +23450,15 @@ function gm(e, t, n) { e.addEventListener("message", n); }); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream var _m = { +======= +var Vm = { +>>>>>>> Stashed changes +======= +var Vm = { +>>>>>>> Stashed changes POSITION: "a_position", LOCAL_POSITION: "a_localPosition", SEGMENT_START: "a_segmentStart", @@ -13230,11 +23469,27 @@ var _m = { JOIN_ANGLES: "a_joinAngles", DISTANCE_LOW: "a_distanceLow", DISTANCE_HIGH: "a_distanceHigh" +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, vm = class extends c { constructor(e, t, n, r) { super(), this.helper_, this.hitDetectionEnabled_ = !!r, this.flatStyle = ym(e), this.styleShaders = bm(e, t), this.customAttributes_ = {}, this.uniforms_ = {}, this.hitDetectionEnabled_ && (this.customAttributes_.hitColor = { callback() { return Up(this.ref, fm); +======= +}, Hm = class extends ie { + constructor(e, t, n, r) { + super(), this.helper_, this.hitDetectionEnabled_ = !!r, this.flatStyle = Um(e), this.styleShaders = Wm(e, t), this.customAttributes_ = {}, this.uniforms_ = {}, this.hitDetectionEnabled_ && (this.customAttributes_.hitColor = { + callback() { + return pm(this.ref, Im); +>>>>>>> Stashed changes +======= +}, Hm = class extends ie { + constructor(e, t, n, r) { + super(), this.helper_, this.hitDetectionEnabled_ = !!r, this.flatStyle = Um(e), this.styleShaders = Wm(e, t), this.customAttributes_ = {}, this.uniforms_ = {}, this.hitDetectionEnabled_ && (this.customAttributes_.hitColor = { + callback() { + return pm(this.ref, Im); +>>>>>>> Stashed changes }, size: 2 }); @@ -13246,15 +23501,35 @@ var _m = { let t = {}, n = Object.entries(this.customAttributes_).map(([t, n]) => ({ name: t in e.attributes || t === "hitColor" ? `a_${t}` : null, size: n.size || 1, +<<<<<<< Updated upstream +<<<<<<< Updated upstream type: Lf.FLOAT +======= + type: sp.FLOAT +>>>>>>> Stashed changes +======= + type: sp.FLOAT +>>>>>>> Stashed changes })); return e.builder.getFillVertexShader() && (t.fillRenderPass = { vertexShader: e.builder.getFillVertexShader(), fragmentShader: e.builder.getFillFragmentShader(), attributesDesc: [{ +<<<<<<< Updated upstream +<<<<<<< Updated upstream name: _m.POSITION, size: 2, type: Lf.FLOAT +======= + name: Vm.POSITION, + size: 2, + type: sp.FLOAT +>>>>>>> Stashed changes +======= + name: Vm.POSITION, + size: 2, + type: sp.FLOAT +>>>>>>> Stashed changes }, ...n], instancedAttributesDesc: [], instancePrimitiveVertexCount: 3 @@ -13262,6 +23537,8 @@ var _m = { vertexShader: e.builder.getStrokeVertexShader(), fragmentShader: e.builder.getStrokeFragmentShader(), attributesDesc: [{ +<<<<<<< Updated upstream +<<<<<<< Updated upstream name: _m.LOCAL_POSITION, size: 2, type: Lf.FLOAT @@ -13306,6 +23583,98 @@ var _m = { name: _m.ANGLE_TANGENT_SUM, size: 1, type: Lf.FLOAT +======= + name: Vm.LOCAL_POSITION, + size: 2, + type: sp.FLOAT + }], + instancedAttributesDesc: [ + { + name: Vm.SEGMENT_START, + size: 2, + type: sp.FLOAT + }, + { + name: Vm.MEASURE_START, + size: 1, + type: sp.FLOAT + }, + { + name: Vm.SEGMENT_END, + size: 2, + type: sp.FLOAT + }, + { + name: Vm.MEASURE_END, + size: 1, + type: sp.FLOAT + }, + { + name: Vm.JOIN_ANGLES, + size: 2, + type: sp.FLOAT + }, + { + name: Vm.DISTANCE_LOW, + size: 1, + type: sp.FLOAT + }, + { + name: Vm.DISTANCE_HIGH, + size: 1, + type: sp.FLOAT + }, + { + name: Vm.ANGLE_TANGENT_SUM, + size: 1, + type: sp.FLOAT +>>>>>>> Stashed changes +======= + name: Vm.LOCAL_POSITION, + size: 2, + type: sp.FLOAT + }], + instancedAttributesDesc: [ + { + name: Vm.SEGMENT_START, + size: 2, + type: sp.FLOAT + }, + { + name: Vm.MEASURE_START, + size: 1, + type: sp.FLOAT + }, + { + name: Vm.SEGMENT_END, + size: 2, + type: sp.FLOAT + }, + { + name: Vm.MEASURE_END, + size: 1, + type: sp.FLOAT + }, + { + name: Vm.JOIN_ANGLES, + size: 2, + type: sp.FLOAT + }, + { + name: Vm.DISTANCE_LOW, + size: 1, + type: sp.FLOAT + }, + { + name: Vm.DISTANCE_HIGH, + size: 1, + type: sp.FLOAT + }, + { + name: Vm.ANGLE_TANGENT_SUM, + size: 1, + type: sp.FLOAT +>>>>>>> Stashed changes }, ...n ], @@ -13314,6 +23683,8 @@ var _m = { vertexShader: e.builder.getSymbolVertexShader(), fragmentShader: e.builder.getSymbolFragmentShader(), attributesDesc: [{ +<<<<<<< Updated upstream +<<<<<<< Updated upstream name: _m.LOCAL_POSITION, size: 2, type: Lf.FLOAT @@ -13326,9 +23697,37 @@ var _m = { instancePrimitiveVertexCount: 6 }), t; }), this.hasFill_ = this.renderPasses_.some((e) => e.fillRenderPass), this.hasStroke_ = this.renderPasses_.some((e) => e.strokeRenderPass), this.hasSymbol_ = this.renderPasses_.some((e) => e.symbolRenderPass), this.hasText_ = this.flatStyle && um(this.flatStyle), this.hasText_ && (this.textOverlayCanvas_ = ge().canvas, this.textOverlayContext_ = this.textOverlayCanvas_.getContext("2d"), this.textOverlayRenderFrameState_ = null, this.textOverlayWorker_ = zp(), this.textOverlayRenderList_ = /* @__PURE__ */ new Set()), this.setHelper(n); +======= + name: Vm.LOCAL_POSITION, + size: 2, + type: sp.FLOAT + }], + instancedAttributesDesc: [{ + name: Vm.POSITION, + size: 2, + type: sp.FLOAT + }, ...n], + instancePrimitiveVertexCount: 6 + }), t; + }), this.hasFill_ = this.renderPasses_.some((e) => e.fillRenderPass), this.hasStroke_ = this.renderPasses_.some((e) => e.strokeRenderPass), this.hasSymbol_ = this.renderPasses_.some((e) => e.symbolRenderPass), this.hasText_ = this.flatStyle && Pm(this.flatStyle), this.hasText_ && (this.textOverlayCanvas_ = y().canvas, this.textOverlayContext_ = this.textOverlayCanvas_.getContext("2d"), this.textOverlayRenderFrameState_ = null, this.textOverlayWorker_ = lm(), this.textOverlayRenderList_ = /* @__PURE__ */ new Set()), this.setHelper(n); +>>>>>>> Stashed changes +======= + name: Vm.LOCAL_POSITION, + size: 2, + type: sp.FLOAT + }], + instancedAttributesDesc: [{ + name: Vm.POSITION, + size: 2, + type: sp.FLOAT + }, ...n], + instancePrimitiveVertexCount: 6 + }), t; + }), this.hasFill_ = this.renderPasses_.some((e) => e.fillRenderPass), this.hasStroke_ = this.renderPasses_.some((e) => e.strokeRenderPass), this.hasSymbol_ = this.renderPasses_.some((e) => e.symbolRenderPass), this.hasText_ = this.flatStyle && Pm(this.flatStyle), this.hasText_ && (this.textOverlayCanvas_ = y().canvas, this.textOverlayContext_ = this.textOverlayCanvas_.getContext("2d"), this.textOverlayRenderFrameState_ = null, this.textOverlayWorker_ = lm(), this.textOverlayRenderList_ = /* @__PURE__ */ new Set()), this.setHelper(n); +>>>>>>> Stashed changes } async generateBuffers(e, t, n) { - let r = ei(Kr(), t); + let r = ti(qr(), t); if (e.isEmpty()) return { polygonBuffers: null, lineStringBuffers: null, @@ -13336,7 +23735,15 @@ var _m = { invertVerticesTransform: r, textInstructionsKey: null }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream let i = new Rp(), a = this.generateRenderInstructions_(e, i, t), [o, s, c, l] = await Promise.all([ +======= + let i = new cm(), a = this.generateRenderInstructions_(e, i, t), [o, s, c, l] = await Promise.all([ +>>>>>>> Stashed changes +======= + let i = new cm(), a = this.generateRenderInstructions_(e, i, t), [o, s, c, l] = await Promise.all([ +>>>>>>> Stashed changes this.hasText_ ? this.generateTextInstructions_(a, i, t, n) : null, this.hasFill_ ? this.generateBuffersForType_(a.polygonInstructions, "Polygon", t) : null, this.hasStroke_ ? this.generateBuffersForType_(a.lineStringInstructions, "LineString", t) : null, @@ -13352,9 +23759,21 @@ var _m = { } generateRenderInstructions_(e, t, n) { return { +<<<<<<< Updated upstream +<<<<<<< Updated upstream polygonInstructions: this.hasFill_ || this.hasText_ ? Yp(e.polygonBatch, /* @__PURE__ */ new Float32Array(), t, this.customAttributes_, n) : null, lineStringInstructions: this.hasStroke_ || this.hasText_ ? Jp(e.lineStringBatch, /* @__PURE__ */ new Float32Array(), t, this.customAttributes_, n) : null, pointInstructions: this.hasSymbol_ || this.hasText_ ? qp(e.pointBatch, /* @__PURE__ */ new Float32Array(), t, this.customAttributes_, n) : null +======= + polygonInstructions: this.hasFill_ || this.hasText_ ? ym(e.polygonBatch, /* @__PURE__ */ new Float32Array(), t, this.customAttributes_, n) : null, + lineStringInstructions: this.hasStroke_ || this.hasText_ ? vm(e.lineStringBatch, /* @__PURE__ */ new Float32Array(), t, this.customAttributes_, n) : null, + pointInstructions: this.hasSymbol_ || this.hasText_ ? _m(e.pointBatch, /* @__PURE__ */ new Float32Array(), t, this.customAttributes_, n) : null +>>>>>>> Stashed changes +======= + polygonInstructions: this.hasFill_ || this.hasText_ ? ym(e.polygonBatch, /* @__PURE__ */ new Float32Array(), t, this.customAttributes_, n) : null, + lineStringInstructions: this.hasStroke_ || this.hasText_ ? vm(e.lineStringBatch, /* @__PURE__ */ new Float32Array(), t, this.customAttributes_, n) : null, + pointInstructions: this.hasSymbol_ || this.hasText_ ? _m(e.pointBatch, /* @__PURE__ */ new Float32Array(), t, this.customAttributes_, n) : null +>>>>>>> Stashed changes }; } generateBuffersForType_(e, t, n) { @@ -13362,22 +23781,56 @@ var _m = { let r; switch (t) { case "Polygon": +<<<<<<< Updated upstream +<<<<<<< Updated upstream r = Vp.GENERATE_POLYGON_BUFFERS; break; case "LineString": - r = Vp.GENERATE_LINE_STRING_BUFFERS; + r = Vp.GENERATE_LINE_STRING_BUFFERS; + break; + case "Point": r = Vp.GENERATE_POINT_BUFFERS; +======= + r = dm.GENERATE_POLYGON_BUFFERS; + break; + case "LineString": + r = dm.GENERATE_LINE_STRING_BUFFERS; + break; + case "Point": r = dm.GENERATE_POINT_BUFFERS; +>>>>>>> Stashed changes +======= + r = dm.GENERATE_POLYGON_BUFFERS; + break; + case "LineString": + r = dm.GENERATE_LINE_STRING_BUFFERS; break; - case "Point": r = Vp.GENERATE_POINT_BUFFERS; + case "Point": r = dm.GENERATE_POINT_BUFFERS; +>>>>>>> Stashed changes } let i = { type: r, renderInstructions: e.buffer, renderInstructionsTransform: n, +<<<<<<< Updated upstream +<<<<<<< Updated upstream customAttributesSize: Kp(this.customAttributes_) }; return gm(mm(), i, [e.buffer]).then((e) => { if (!this.helper_.getGL()) return; let t = e, n = new Af(yf, Sf).fromArrayBuffer(t.indicesBuffer), r = new Af(vf, Sf).fromArrayBuffer(t.vertexAttributesBuffer), i = new Af(vf, Sf).fromArrayBuffer(t.instanceAttributesBuffer); +======= + customAttributesSize: gm(this.customAttributes_) + }; + return Bm(Rm(), i, [e.buffer]).then((e) => { + if (!this.helper_.getGL()) return; + let t = e, n = new ep(Uf, Kf).fromArrayBuffer(t.indicesBuffer), r = new ep(Hf, Kf).fromArrayBuffer(t.vertexAttributesBuffer), i = new ep(Hf, Kf).fromArrayBuffer(t.instanceAttributesBuffer); +>>>>>>> Stashed changes +======= + customAttributesSize: gm(this.customAttributes_) + }; + return Bm(Rm(), i, [e.buffer]).then((e) => { + if (!this.helper_.getGL()) return; + let t = e, n = new ep(Uf, Kf).fromArrayBuffer(t.indicesBuffer), r = new ep(Hf, Kf).fromArrayBuffer(t.vertexAttributesBuffer), i = new ep(Hf, Kf).fromArrayBuffer(t.instanceAttributesBuffer); +>>>>>>> Stashed changes return this.helper_.flushBufferData(n), this.helper_.flushBufferData(r), this.helper_.flushBufferData(i), [ n, r, @@ -13392,7 +23845,15 @@ var _m = { ...e, [t]: this.customAttributes_[t].size || 1 }), {}), l = { +<<<<<<< Updated upstream +<<<<<<< Updated upstream type: Hp.BUILD_INSTRUCTIONS, +======= + type: fm.BUILD_INSTRUCTIONS, +>>>>>>> Stashed changes +======= + type: fm.BUILD_INSTRUCTIONS, +>>>>>>> Stashed changes polygonRenderInstructions: a, lineStringRenderInstructions: o, pointRenderInstructions: s, @@ -13402,7 +23863,15 @@ var _m = { renderInstructionsTransform: n, resolution: r }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream return gm(this.textOverlayWorker_, l, i).then((e) => e.instructionsSetKey); +======= + return Bm(this.textOverlayWorker_, l, i).then((e) => e.instructionsSetKey); +>>>>>>> Stashed changes +======= + return Bm(this.textOverlayWorker_, l, i).then((e) => e.instructionsSetKey); +>>>>>>> Stashed changes } render(e, t, n) { for (let r of this.renderPasses_) r.fillRenderPass && e.polygonBuffers && this.renderInternal_(e.polygonBuffers[0], e.polygonBuffers[1], e.polygonBuffers[2], r.fillRenderPass, t, n), r.strokeRenderPass && e.lineStringBuffers && this.renderInternal_(e.lineStringBuffers[0], e.lineStringBuffers[1], e.lineStringBuffers[2], r.strokeRenderPass, t, n), r.symbolRenderPass && e.pointBuffers && this.renderInternal_(e.pointBuffers[0], e.pointBuffers[1], e.pointBuffers[2], r.symbolRenderPass, t, n); @@ -13423,11 +23892,27 @@ var _m = { finalizeTextRender(e) { if (!this.hasText_) return Promise.resolve(); let t = { +<<<<<<< Updated upstream +<<<<<<< Updated upstream type: Hp.RENDER, frameState: Xp(e), batchesToRender: this.textOverlayRenderList_ }; return gm(this.textOverlayWorker_, t).then((e) => { +======= + type: fm.RENDER, + frameState: bm(e), + batchesToRender: this.textOverlayRenderList_ + }; + return Bm(this.textOverlayWorker_, t).then((e) => { +>>>>>>> Stashed changes +======= + type: fm.RENDER, + frameState: bm(e), + batchesToRender: this.textOverlayRenderList_ + }; + return Bm(this.textOverlayWorker_, t).then((e) => { +>>>>>>> Stashed changes let t = e; if (t.imageData) { this.textOverlayRenderFrameState_ = t.frameState; @@ -13450,7 +23935,15 @@ var _m = { } disposeTextInstructions(e) { this.textOverlayWorker_?.postMessage({ +<<<<<<< Updated upstream +<<<<<<< Updated upstream type: Hp.DISPOSE_INSTRUCTIONS, +======= + type: fm.DISPOSE_INSTRUCTIONS, +>>>>>>> Stashed changes +======= + type: fm.DISPOSE_INSTRUCTIONS, +>>>>>>> Stashed changes instructionsSetKey: e }); } @@ -13458,10 +23951,24 @@ var _m = { this.textOverlayWorker_?.terminate(), super.disposeInternal(); } }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream function ym(e) { return Array.isArray(e) ? e.some((e) => "builder" in e && !("sourceRule" in e)) ? null : e.some((e) => "builder" in e) ? e.map((e) => e.sourceRule) : e : "builder" in e ? "sourceRule" in e ? [e.sourceRule] : null : e; } function bm(e, t) { +======= +function Um(e) { + return Array.isArray(e) ? e.some((e) => "builder" in e && !("sourceRule" in e)) ? null : e.some((e) => "builder" in e) ? e.map((e) => e.sourceRule) : e : "builder" in e ? "sourceRule" in e ? [e.sourceRule] : null : e; +} +function Wm(e, t) { +>>>>>>> Stashed changes +======= +function Um(e) { + return Array.isArray(e) ? e.some((e) => "builder" in e && !("sourceRule" in e)) ? null : e.some((e) => "builder" in e) ? e.map((e) => e.sourceRule) : e : "builder" in e ? "sourceRule" in e ? [e.sourceRule] : null : e; +} +function Wm(e, t) { +>>>>>>> Stashed changes let n = Array.isArray(e) ? e : [e]; if ("style" in n[0]) { let e = [], r = n, i = []; @@ -13469,7 +23976,15 @@ function bm(e, t) { let r = Array.isArray(n.style) ? n.style : [n.style], a = n.filter; n.else && i.length && (a = ["all", ...i.map((e) => ["!", e])], n.filter && a.push(n.filter), a.length < 3 && (a = a[1])), n.filter && i.push(n.filter); let o = r.map((e) => ({ +<<<<<<< Updated upstream +<<<<<<< Updated upstream ...cm(e, t, a), +======= + ...Mm(e, t, a), +>>>>>>> Stashed changes +======= + ...Mm(e, t, a), +>>>>>>> Stashed changes sourceRule: n })); e.push(...o); @@ -13477,13 +23992,29 @@ function bm(e, t) { return e; } return "builder" in n[0] ? n : n.map((e) => ({ +<<<<<<< Updated upstream +<<<<<<< Updated upstream ...cm(e, t, null), +======= + ...Mm(e, t, null), +>>>>>>> Stashed changes +======= + ...Mm(e, t, null), +>>>>>>> Stashed changes sourceRule: { style: e } })); } //#endregion //#region node_modules/ol/source/VectorEventType.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var xm = { +======= +var Gm = { +>>>>>>> Stashed changes +======= +var Gm = { +>>>>>>> Stashed changes ADDFEATURE: "addfeature", CHANGEFEATURE: "changefeature", CLEAR: "clear", @@ -13491,7 +24022,15 @@ var xm = { FEATURESLOADSTART: "featuresloadstart", FEATURESLOADEND: "featuresloadend", FEATURESLOADERROR: "featuresloaderror" +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, Sm = /* @__PURE__ */ new Uint8Array(4), Cm = class { +======= +}, Km = /* @__PURE__ */ new Uint8Array(4), qm = class { +>>>>>>> Stashed changes +======= +}, Km = /* @__PURE__ */ new Uint8Array(4), qm = class { +>>>>>>> Stashed changes constructor(e, t) { this.helper_ = e; let n = e.getGL(); @@ -13514,10 +24053,24 @@ var xm = { return this.data_; } readPixel(e, t) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (e < 0 || t < 0 || e > this.size_[0] || t >= this.size_[1]) return Sm[0] = 0, Sm[1] = 0, Sm[2] = 0, Sm[3] = 0, Sm; this.readAll(); let n = Math.floor(e) + (this.size_[1] - Math.floor(t) - 1) * this.size_[0]; return Sm[0] = this.data_[n * 4], Sm[1] = this.data_[n * 4 + 1], Sm[2] = this.data_[n * 4 + 2], Sm[3] = this.data_[n * 4 + 3], Sm; +======= + if (e < 0 || t < 0 || e > this.size_[0] || t >= this.size_[1]) return Km[0] = 0, Km[1] = 0, Km[2] = 0, Km[3] = 0, Km; + this.readAll(); + let n = Math.floor(e) + (this.size_[1] - Math.floor(t) - 1) * this.size_[0]; + return Km[0] = this.data_[n * 4], Km[1] = this.data_[n * 4 + 1], Km[2] = this.data_[n * 4 + 2], Km[3] = this.data_[n * 4 + 3], Km; +>>>>>>> Stashed changes +======= + if (e < 0 || t < 0 || e > this.size_[0] || t >= this.size_[1]) return Km[0] = 0, Km[1] = 0, Km[2] = 0, Km[3] = 0, Km; + this.readAll(); + let n = Math.floor(e) + (this.size_[1] - Math.floor(t) - 1) * this.size_[0]; + return Km[0] = this.data_[n * 4], Km[1] = this.data_[n * 4 + 1], Km[2] = this.data_[n * 4 + 2], Km[3] = this.data_[n * 4 + 3], Km; +>>>>>>> Stashed changes } getTexture() { return this.texture_; @@ -13532,11 +24085,21 @@ var xm = { let e = this.size_, t = this.helper_.getGL(); this.texture_ = this.helper_.createTexture(e, null, this.texture_), t.bindFramebuffer(t.FRAMEBUFFER, this.framebuffer_), t.viewport(0, 0, e[0], e[1]), t.framebufferTexture2D(t.FRAMEBUFFER, t.COLOR_ATTACHMENT0, t.TEXTURE_2D, this.texture_, 0), t.bindRenderbuffer(t.RENDERBUFFER, this.depthbuffer_), t.renderbufferStorage(t.RENDERBUFFER, t.DEPTH_COMPONENT16, e[0], e[1]), t.framebufferRenderbuffer(t.FRAMEBUFFER, t.DEPTH_ATTACHMENT, t.RENDERBUFFER, this.depthbuffer_), this.data_ = new Uint8Array(e[0] * e[1] * 4); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, wm = { +======= +}, Jm = { +>>>>>>> Stashed changes +======= +}, Jm = { +>>>>>>> Stashed changes PATTERN_ORIGIN_X_DOUBLE: "u_df_patternOriginX", PATTERN_ORIGIN_Y_DOUBLE: "u_df_patternOriginY", PATTERN_SCALE_RATIO_DOUBLE: "u_df_patternScaleRatio", ONE: "u_one" +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, Tm = [0, 0], Em = [0, 0], Dm = Kr(), Om = ff(); function km(e, t, n, r) { Xr(Dm, t), Jr(Dm, n), e.setUniformMatrixValue(If.PROJECTION_MATRIX, mf(Om, Dm)), ei(Dm, Dm), e.setUniformMatrixValue(If.INVERT_PROJECTION_MATRIX, mf(Om, Dm)), Tm[0] = 0, Tm[1] = 0; @@ -13549,6 +24112,32 @@ function km(e, t, n, r) { //#region node_modules/ol/renderer/webgl/worldUtil.js function Am(e, t) { let n = e.viewState.projection, r = t.getSource().getWrapX() && n.canWrapX(), i = n.getExtent(), a = e.extent, o = r ? R(i) : null, s = r ? Math.ceil((a[2] - i[2]) / o) + 1 : 1; +======= +}, Ym = [0, 0], Xm = [0, 0], Zm = qr(), Qm = If(); +function $m(e, t, n, r) { + Zr(Zm, t), Yr(Zm, n), e.setUniformMatrixValue(op.PROJECTION_MATRIX, Rf(Qm, Zm)), ti(Zm, Zm), e.setUniformMatrixValue(op.INVERT_PROJECTION_MATRIX, Rf(Qm, Zm)), Ym[0] = 0, Ym[1] = 0; + let i = r.size, a = r.viewState.resolution, o = r.viewState.center; + ei(Zm, i[0] / 2, i[1] / 2, 1 / a, 1 / a, 0, -o[0], -o[1]), z(Zm, Ym), Xm[0] = Yp(Ym[0]), Xm[1] = Jp(Ym[0]), e.setUniformFloatVec2(Jm.PATTERN_ORIGIN_X_DOUBLE, Xm), Xm[0] = Yp(Ym[1]), Xm[1] = Jp(Ym[1]), e.setUniformFloatVec2(Jm.PATTERN_ORIGIN_Y_DOUBLE, Xm); + let s = 2 ** ((r.viewState.zoom + .5) % 1 - .5); + Ym[0] = Yp(s), Ym[1] = Jp(s), e.setUniformFloatVec2(Jm.PATTERN_SCALE_RATIO_DOUBLE, Ym); +} +//#endregion +//#region node_modules/ol/renderer/webgl/worldUtil.js +======= +}, Ym = [0, 0], Xm = [0, 0], Zm = qr(), Qm = If(); +function $m(e, t, n, r) { + Zr(Zm, t), Yr(Zm, n), e.setUniformMatrixValue(op.PROJECTION_MATRIX, Rf(Qm, Zm)), ti(Zm, Zm), e.setUniformMatrixValue(op.INVERT_PROJECTION_MATRIX, Rf(Qm, Zm)), Ym[0] = 0, Ym[1] = 0; + let i = r.size, a = r.viewState.resolution, o = r.viewState.center; + ei(Zm, i[0] / 2, i[1] / 2, 1 / a, 1 / a, 0, -o[0], -o[1]), z(Zm, Ym), Xm[0] = Yp(Ym[0]), Xm[1] = Jp(Ym[0]), e.setUniformFloatVec2(Jm.PATTERN_ORIGIN_X_DOUBLE, Xm), Xm[0] = Yp(Ym[1]), Xm[1] = Jp(Ym[1]), e.setUniformFloatVec2(Jm.PATTERN_ORIGIN_Y_DOUBLE, Xm); + let s = 2 ** ((r.viewState.zoom + .5) % 1 - .5); + Ym[0] = Yp(s), Ym[1] = Jp(s), e.setUniformFloatVec2(Jm.PATTERN_SCALE_RATIO_DOUBLE, Ym); +} +//#endregion +//#region node_modules/ol/renderer/webgl/worldUtil.js +>>>>>>> Stashed changes +function eh(e, t) { + let n = e.viewState.projection, r = t.getSource().getWrapX() && n.canWrapX(), i = n.getExtent(), a = e.extent, o = r ? I(i) : null, s = r ? Math.ceil((a[2] - i[2]) / o) + 1 : 1; +>>>>>>> Stashed changes return [ r ? Math.floor((a[0] - i[0]) / o) : 0, s, @@ -13557,6 +24146,8 @@ function Am(e, t) { } //#endregion //#region node_modules/ol/renderer/webgl/VectorLayer.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var jm = { ...If, ...wm, @@ -13567,17 +24158,53 @@ var jm = { constructor(e, t) { let n = { [jm.RENDER_EXTENT]: [ +======= +var th = { + ...op, + ...Jm, + ...Nm, + RENDER_EXTENT: "u_renderExtent", + GLOBAL_ALPHA: "u_globalAlpha" +}, nh = class extends _p { + constructor(e, t) { + let n = { + [th.RENDER_EXTENT]: [ +>>>>>>> Stashed changes +======= +var th = { + ...op, + ...Jm, + ...Nm, + RENDER_EXTENT: "u_renderExtent", + GLOBAL_ALPHA: "u_globalAlpha" +}, nh = class extends _p { + constructor(e, t) { + let n = { + [th.RENDER_EXTENT]: [ +>>>>>>> Stashed changes 0, 0, 0, 0 ], +<<<<<<< Updated upstream +<<<<<<< Updated upstream [jm.GLOBAL_ALPHA]: 1, [jm.ONE]: 1 +======= + [th.GLOBAL_ALPHA]: 1, + [th.ONE]: 1 +>>>>>>> Stashed changes +======= + [th.GLOBAL_ALPHA]: 1, + [th.ONE]: 1 +>>>>>>> Stashed changes }; super(e, { uniforms: n, postProcesses: t.postProcesses ?? [] +<<<<<<< Updated upstream +<<<<<<< Updated upstream }), this.hitDetectionEnabled_ = !t.disableHitDetection, this.hitRenderTarget_, this.sourceRevision_ = -1, this.layerRevision_ = -1, this.skipNextTextRender_ = !1, this.previousExtent_ = at(), this.currentTransform_ = Kr(), this.currentFrameStateTransform_ = Kr(), this.styleVariables_ = {}, this.style_ = [], this.hasText_ = !1, this.styleRenderer_ = null, this.buffers_ = null, this.batch_ = new Np(), this.initialFeaturesAdded_ = !1, this.sourceListenKeys_ = null, this.applyOptions_(t); } addInitialFeatures_(e) { @@ -13587,21 +24214,61 @@ var jm = { i(t, xm.CHANGEFEATURE, this.handleSourceFeatureChanged_.bind(this, r), this), i(t, xm.REMOVEFEATURE, this.handleSourceFeatureDelete_, this), i(t, xm.CLEAR, this.handleSourceFeatureClear_, this) +======= +======= +>>>>>>> Stashed changes + }), this.hitDetectionEnabled_ = !t.disableHitDetection, this.hitRenderTarget_, this.sourceRevision_ = -1, this.layerRevision_ = -1, this.skipNextTextRender_ = !1, this.previousExtent_ = We(), this.currentTransform_ = qr(), this.currentFrameStateTransform_ = qr(), this.styleVariables_ = {}, this.style_ = [], this.hasText_ = !1, this.styleRenderer_ = null, this.buffers_ = null, this.batch_ = new rm(), this.initialFeaturesAdded_ = !1, this.sourceListenKeys_ = null, this.applyOptions_(t); + } + addInitialFeatures_(e) { + let t = this.getLayer().getSource(), n = hr(), r; + n && (r = lr(n, e.viewState.projection)), this.batch_.addFeatures(t.getFeatures(), r), this.sourceListenKeys_ = [ + A(t, Gm.ADDFEATURE, this.handleSourceFeatureAdded_.bind(this, r)), + A(t, Gm.CHANGEFEATURE, this.handleSourceFeatureChanged_.bind(this, r), this), + A(t, Gm.REMOVEFEATURE, this.handleSourceFeatureDelete_, this), + A(t, Gm.CLEAR, this.handleSourceFeatureClear_, this) +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes ]; } applyOptions_(e) { this.styleVariables_ = e.variables, this.style_ = e.style; +<<<<<<< Updated upstream +<<<<<<< Updated upstream let t = ym(this.style_), n = !!t && um(t); n && !this.hasText_ ? this.setPostProcesses([dm(() => this.styleRenderer_.getTextOverlayCanvas(), () => this.styleRenderer_.getTextOverlayFrameState()), ...this.getPostProcesses()]) : !n && this.hasText_ && this.setPostProcesses(this.getPostProcesses().slice(1)), this.hasText_ = n; } createRenderers_() { this.buffers_ = null, this.styleRenderer_ = new vm(this.style_, this.styleVariables_, this.helper, this.hitDetectionEnabled_); +======= + let t = Um(this.style_), n = !!t && Pm(t); + n && !this.hasText_ ? this.setPostProcesses([Fm(() => this.styleRenderer_.getTextOverlayCanvas(), () => this.styleRenderer_.getTextOverlayFrameState()), ...this.getPostProcesses()]) : !n && this.hasText_ && this.setPostProcesses(this.getPostProcesses().slice(1)), this.hasText_ = n; + } + createRenderers_() { + this.buffers_ = null, this.styleRenderer_ = new Hm(this.style_, this.styleVariables_, this.helper, this.hitDetectionEnabled_); +>>>>>>> Stashed changes +======= + let t = Um(this.style_), n = !!t && Pm(t); + n && !this.hasText_ ? this.setPostProcesses([Fm(() => this.styleRenderer_.getTextOverlayCanvas(), () => this.styleRenderer_.getTextOverlayFrameState()), ...this.getPostProcesses()]) : !n && this.hasText_ && this.setPostProcesses(this.getPostProcesses().slice(1)), this.hasText_ = n; + } + createRenderers_() { + this.buffers_ = null, this.styleRenderer_ = new Hm(this.style_, this.styleVariables_, this.helper, this.hitDetectionEnabled_); +>>>>>>> Stashed changes } reset(e) { this.applyOptions_(e), this.helper && this.createRenderers_(), super.reset(e); } afterHelperCreated() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.styleRenderer_ ? this.styleRenderer_.setHelper(this.helper, this.buffers_) : this.createRenderers_(), this.hitDetectionEnabled_ && (this.hitRenderTarget_ = new Cm(this.helper)); +======= + this.styleRenderer_ ? this.styleRenderer_.setHelper(this.helper, this.buffers_) : this.createRenderers_(), this.hitDetectionEnabled_ && (this.hitRenderTarget_ = new qm(this.helper)); +>>>>>>> Stashed changes +======= + this.styleRenderer_ ? this.styleRenderer_.setHelper(this.helper, this.buffers_) : this.createRenderers_(), this.hitDetectionEnabled_ && (this.hitRenderTarget_ = new qm(this.helper)); +>>>>>>> Stashed changes } handleSourceFeatureAdded_(e, t) { let n = t.feature; @@ -13619,12 +24286,28 @@ var jm = { this.batch_.clear(); } applyUniforms_(e, t) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream km(this.helper, this.currentFrameStateTransform_, e, t); +======= + $m(this.helper, this.currentFrameStateTransform_, e, t); +>>>>>>> Stashed changes +======= + $m(this.helper, this.currentFrameStateTransform_, e, t); +>>>>>>> Stashed changes } renderFrame(e) { let t = this.helper.getGL(); this.preRender(t, e); +<<<<<<< Updated upstream +<<<<<<< Updated upstream let n = this.getLayer(), [r, i, a] = Am(e, n); +======= + let n = this.getLayer(), [r, i, a] = eh(e, n); +>>>>>>> Stashed changes +======= + let n = this.getLayer(), [r, i, a] = eh(e, n); +>>>>>>> Stashed changes this.helper.prepareDraw(e), this.renderWorlds(e, !1, r, i, a), this.hasText_ && this.styleRenderer_.finalizeTextRender(e).then(() => { if (this.skipNextTextRender_) { this.skipNextTextRender_ = !1; @@ -13637,11 +24320,27 @@ var jm = { } prepareFrameInternal(e) { this.initialFeaturesAdded_ ||= (this.addInitialFeatures_(e), !0); +<<<<<<< Updated upstream +<<<<<<< Updated upstream let t = this.getLayer(), n = t.getSource(), r = e.viewState, i = !e.viewHints[V.ANIMATING] && !e.viewHints[V.INTERACTING], a = !ut(this.previousExtent_, e.extent), o = this.sourceRevision_ < n.getRevision(), s = this.layerRevision_ < t.getRevision(); if (this.sourceRevision_ = n.getRevision(), this.layerRevision_ = t.getRevision(), (s || a || o) && (this.skipNextTextRender_ = !1), i && (a || o)) { let i = r.projection, a = r.resolution, o = t instanceof cu ? t.getRenderBuffer() : 0, s = Qe(e.extent, o * a), c = kr(); c ? n.loadFeatures(Mr(s, c), Pr(a, i), c) : n.loadFeatures(s, a, i), this.ready = !1; let l = this.helper.makeProjectionTransform(e, Kr(), !0); +======= + let t = this.getLayer(), n = t.getSource(), r = e.viewState, i = !e.viewHints[Lr.ANIMATING] && !e.viewHints[Lr.INTERACTING], a = !Ye(this.previousExtent_, e.extent), o = this.sourceRevision_ < n.getRevision(), s = this.layerRevision_ < t.getRevision(); + if (this.sourceRevision_ = n.getRevision(), this.layerRevision_ = t.getRevision(), (s || a || o) && (this.skipNextTextRender_ = !1), i && (a || o)) { + let i = r.projection, a = r.resolution, o = t instanceof Al ? t.getRenderBuffer() : 0, s = Le(e.extent, o * a), c = hr(); + c ? n.loadFeatures(vr(s, c), br(a, i), c) : n.loadFeatures(s, a, i), this.ready = !1; + let l = this.helper.makeProjectionTransform(e, qr(), !0); +>>>>>>> Stashed changes +======= + let t = this.getLayer(), n = t.getSource(), r = e.viewState, i = !e.viewHints[Lr.ANIMATING] && !e.viewHints[Lr.INTERACTING], a = !Ye(this.previousExtent_, e.extent), o = this.sourceRevision_ < n.getRevision(), s = this.layerRevision_ < t.getRevision(); + if (this.sourceRevision_ = n.getRevision(), this.layerRevision_ = t.getRevision(), (s || a || o) && (this.skipNextTextRender_ = !1), i && (a || o)) { + let i = r.projection, a = r.resolution, o = t instanceof Al ? t.getRenderBuffer() : 0, s = Le(e.extent, o * a), c = hr(); + c ? n.loadFeatures(vr(s, c), br(a, i), c) : n.loadFeatures(s, a, i), this.ready = !1; + let l = this.helper.makeProjectionTransform(e, qr(), !0); +>>>>>>> Stashed changes this.styleRenderer_.generateBuffers(this.batch_, l, e.viewState.resolution).then((e) => { this.buffers_ && this.disposeBuffers(this.buffers_), this.buffers_ = e, this.ready = !0, this.getLayer()?.changed(); }), this.previousExtent_ = e.extent.slice(); @@ -13652,14 +24351,22 @@ var jm = { let a = n; t && (this.hitRenderTarget_.setSize([Math.floor(e.size[0] / 2), Math.floor(e.size[1] / 2)]), this.helper.prepareDrawToRenderTarget(e, this.hitRenderTarget_, !0)); do - this.helper.makeProjectionTransform(e, this.currentFrameStateTransform_), Qr(this.currentFrameStateTransform_, a * i, 0), this.buffers_ && this.styleRenderer_.render(this.buffers_, e, () => { + this.helper.makeProjectionTransform(e, this.currentFrameStateTransform_), $r(this.currentFrameStateTransform_, a * i, 0), this.buffers_ && this.styleRenderer_.render(this.buffers_, e, () => { this.applyUniforms_(this.buffers_.invertVerticesTransform, e), this.helper.applyHitDetectionUniform(t); }); while (++a < r); } forEachFeatureAtCoordinate(e, t, n, r, i) { +<<<<<<< Updated upstream if (z(this.hitDetectionEnabled_, "`forEachFeatureAtCoordinate` cannot be used on a WebGL layer if the hit detection logic has been disabled using the `disableHitDetection: true` option."), !this.styleRenderer_ || !this.hitDetectionEnabled_) return; let a = B(t.coordinateToPixelTransform, e.slice()), o = this.hitRenderTarget_.readPixel(a[0] / 2, a[1] / 2), s = Wp([ +======= + if (R(this.hitDetectionEnabled_, "`forEachFeatureAtCoordinate` cannot be used on a WebGL layer if the hit detection logic has been disabled using the `disableHitDetection: true` option."), !this.styleRenderer_ || !this.hitDetectionEnabled_) return; + let a = z(t.coordinateToPixelTransform, e.slice()), o = this.hitRenderTarget_.readPixel(a[0] / 2, a[1] / 2), s = mm([ +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes o[0] / 255, o[1] / 255, o[2] / 255, @@ -13680,25 +24387,59 @@ var jm = { }), null), this.styleRenderer_ && this.styleRenderer_.dispose(), super.disposeInternal(); } renderDeclutter() {} +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, Nm = { BLUR: "blur", GRADIENT: "gradient", RADIUS: "radius" }, Pm = [ +======= +}, rh = { + BLUR: "blur", + GRADIENT: "gradient", + RADIUS: "radius" +}, ih = [ +>>>>>>> Stashed changes +======= +}, rh = { + BLUR: "blur", + GRADIENT: "gradient", + RADIUS: "radius" +}, ih = [ +>>>>>>> Stashed changes "#00f", "#0ff", "#0f0", "#ff0", "#f00" +<<<<<<< Updated upstream +<<<<<<< Updated upstream ], Fm = class extends cu { constructor(e) { e ||= {}; let t = Object.assign({}, e); delete t.gradient, delete t.radius, delete t.blur, delete t.weight, super(t), this.on, this.once, this.un, this.filter_ = e.filter ?? !0, this.styleVariables_ = e.variables || {}, this.gradient_ = null, this.addChangeListener(Nm.GRADIENT, this.handleGradientChanged_), this.setGradient(e.gradient ? e.gradient : Pm), this.setBlur(e.blur === void 0 ? 15 : e.blur), this.setRadius(e.radius === void 0 ? 8 : e.radius); +======= +], ah = class extends Al { + constructor(e) { + e ||= {}; + let t = Object.assign({}, e); + delete t.gradient, delete t.radius, delete t.blur, delete t.weight, super(t), this.on, this.once, this.un, this.filter_ = e.filter ?? !0, this.styleVariables_ = e.variables || {}, this.gradient_ = null, this.addChangeListener(rh.GRADIENT, this.handleGradientChanged_), this.setGradient(e.gradient ? e.gradient : ih), this.setBlur(e.blur === void 0 ? 15 : e.blur), this.setRadius(e.radius === void 0 ? 8 : e.radius); +>>>>>>> Stashed changes +======= +], ah = class extends Al { + constructor(e) { + e ||= {}; + let t = Object.assign({}, e); + delete t.gradient, delete t.radius, delete t.blur, delete t.weight, super(t), this.on, this.once, this.un, this.filter_ = e.filter ?? !0, this.styleVariables_ = e.variables || {}, this.gradient_ = null, this.addChangeListener(rh.GRADIENT, this.handleGradientChanged_), this.setGradient(e.gradient ? e.gradient : ih), this.setBlur(e.blur === void 0 ? 15 : e.blur), this.setRadius(e.radius === void 0 ? 8 : e.radius); +>>>>>>> Stashed changes let n = e.weight ? e.weight : "weight"; this.weight_ = n, this.setRenderOrder(null); } getBlur() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return this.get(Nm.BLUR); } getGradient() { @@ -13713,17 +24454,65 @@ var jm = { setBlur(e) { let t = this.get(Nm.BLUR); if (this.set(Nm.BLUR, e), typeof e == "number" && typeof t == "number") { +======= + return this.get(rh.BLUR); + } + getGradient() { + return this.get(rh.GRADIENT); + } + getRadius() { + return this.get(rh.RADIUS); + } + handleGradientChanged_() { + this.gradient_ = oh(this.getGradient()); + } + setBlur(e) { + let t = this.get(rh.BLUR); + if (this.set(rh.BLUR, e), typeof e == "number" && typeof t == "number") { +>>>>>>> Stashed changes +======= + return this.get(rh.BLUR); + } + getGradient() { + return this.get(rh.GRADIENT); + } + getRadius() { + return this.get(rh.RADIUS); + } + handleGradientChanged_() { + this.gradient_ = oh(this.getGradient()); + } + setBlur(e) { + let t = this.get(rh.BLUR); + if (this.set(rh.BLUR, e), typeof e == "number" && typeof t == "number") { +>>>>>>> Stashed changes this.changed(); return; } this.clearRenderer(); } setGradient(e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream this.set(Nm.GRADIENT, e); } setRadius(e) { let t = this.get(Nm.RADIUS); if (this.set(Nm.RADIUS, e), typeof e == "number" && typeof t == "number") { +======= + this.set(rh.GRADIENT, e); + } + setRadius(e) { + let t = this.get(rh.RADIUS); + if (this.set(rh.RADIUS, e), typeof e == "number" && typeof t == "number") { +>>>>>>> Stashed changes +======= + this.set(rh.GRADIENT, e); + } + setRadius(e) { + let t = this.get(rh.RADIUS); + if (this.set(rh.RADIUS, e), typeof e == "number" && typeof t == "number") { +>>>>>>> Stashed changes this.changed(); return; } @@ -13736,7 +24525,15 @@ var jm = { this.weight_ = e, this.changed(), this.clearRenderer(); } createRenderer() { +<<<<<<< Updated upstream +<<<<<<< Updated upstream let e = new Op(), t = op(this.styleVariables_), n = $s(this.styleVariables_), r = Q(t, this.filter_, Bs, n), i = Q(t, this.getRadius(), U), a = Q(t, this.getBlur(), U), o = {}; +======= + let e = new Qp(), t = Ap(this.styleVariables_), n = vs(this.styleVariables_), r = Z(t, this.filter_, as, n), i = Z(t, this.getRadius(), V), a = Z(t, this.getBlur(), V), o = {}; +>>>>>>> Stashed changes +======= + let e = new Qp(), t = Ap(this.styleVariables_), n = vs(this.styleVariables_), r = Z(t, this.filter_, as, n), i = Z(t, this.getRadius(), V), a = Z(t, this.getBlur(), V), o = {}; +>>>>>>> Stashed changes typeof this.getBlur() == "number" && (a = "a_blur", o.a_blur = () => this.getBlur(), e.addUniform("a_blur", "float")), typeof this.getRadius() == "number" && (i = "a_radius", o.a_radius = () => this.getRadius(), e.addUniform("a_radius", "float")); let s = {}, c = null; if (typeof this.weight_ == "string" || typeof this.weight_ == "function") { @@ -13748,16 +24545,32 @@ var jm = { return n === void 0 ? 1 : Bt(n, 0, 1); } }, c = "a_prop_weight", e.addAttribute("a_prop_weight", "float"); - } else c = Q(t, [ + } else c = Z(t, [ "clamp", this.weight_, 0, 1 +<<<<<<< Updated upstream +<<<<<<< Updated upstream ], U); let l = `(${i} / max(1., ${a}))`; e.setSymbolSizeExpression(`vec2(${i} + ${a}) * 2.`).setSymbolColorExpression(`vec4(smoothstep(0., 1., (1. - length(coordsPx * 2. / v_quadSizePx)) * ${l}) * ${c})`).setStrokeColorExpression(`vec4(smoothstep(0., 1., (1. - length(currentRadiusPx * 2. / v_width)) * ${l}) * ${c})`).setStrokeWidthExpression(`(${i} + ${a}) * 2.`).setFillColorExpression(`vec4(${c})`), n.mCoordinate ? e.setFragmentDiscardExpression(`!${r}`) : e.setShapeDiscardExpression(`!${r}`), xp(e, t); let u = Cp(t), d = Sp(t, this.styleVariables_); return new Mm(this, { +======= + ], V); + let l = `(${i} / max(1., ${a}))`; + e.setSymbolSizeExpression(`vec2(${i} + ${a}) * 2.`).setSymbolColorExpression(`vec4(smoothstep(0., 1., (1. - length(coordsPx * 2. / v_quadSizePx)) * ${l}) * ${c})`).setStrokeColorExpression(`vec4(smoothstep(0., 1., (1. - length(currentRadiusPx * 2. / v_width)) * ${l}) * ${c})`).setStrokeWidthExpression(`(${i} + ${a}) * 2.`).setFillColorExpression(`vec4(${c})`), n.mCoordinate ? e.setFragmentDiscardExpression(`!${r}`) : e.setShapeDiscardExpression(`!${r}`), Gp(e, t); + let u = qp(t), d = Kp(t, this.styleVariables_); + return new nh(this, { +>>>>>>> Stashed changes +======= + ], V); + let l = `(${i} / max(1., ${a}))`; + e.setSymbolSizeExpression(`vec2(${i} + ${a}) * 2.`).setSymbolColorExpression(`vec4(smoothstep(0., 1., (1. - length(coordsPx * 2. / v_quadSizePx)) * ${l}) * ${c})`).setStrokeColorExpression(`vec4(smoothstep(0., 1., (1. - length(currentRadiusPx * 2. / v_width)) * ${l}) * ${c})`).setStrokeWidthExpression(`(${i} + ${a}) * 2.`).setFillColorExpression(`vec4(${c})`), n.mCoordinate ? e.setFragmentDiscardExpression(`!${r}`) : e.setShapeDiscardExpression(`!${r}`), Gp(e, t); + let u = qp(t), d = Kp(t, this.styleVariables_); + return new nh(this, { +>>>>>>> Stashed changes className: this.getClassName(), variables: this.styleVariables_, style: { @@ -13786,14 +24599,30 @@ var jm = { } renderDeclutter() {} }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream function Im(e) { let t = ge(1, 256), n = t.createLinearGradient(0, 0, 1, 256), r = 1 / (e.length - 1); +======= +======= +>>>>>>> Stashed changes +function oh(e) { + let t = y(1, 256), n = t.createLinearGradient(0, 0, 1, 256), r = 1 / (e.length - 1); +>>>>>>> Stashed changes for (let t = 0, i = e.length; t < i; ++t) n.addColorStop(t * r, e[t]); return t.fillStyle = n, t.fillRect(0, 0, 1, 256), t.canvas; } //#endregion //#region node_modules/ol-ext/util/input/Base.js +<<<<<<< Updated upstream +<<<<<<< Updated upstream var Lm = class extends A { +======= +var sh = class extends we { +>>>>>>> Stashed changes +======= +var sh = class extends we { +>>>>>>> Stashed changes constructor(e) { e ||= {}, super(); var t = this.input = e.input; @@ -13828,7 +24657,15 @@ var Lm = class extends A { getInputElement() { return this.input; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, Rm = class extends Lm { +======= +}, ch = class extends sh { +>>>>>>> Stashed changes +======= +}, ch = class extends sh { +>>>>>>> Stashed changes constructor(e) { e ||= {}, super(e); var t = this.element = document.createElement("label"); @@ -13843,16 +24680,32 @@ var Lm = class extends A { isChecked() { return this.input.checked; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, zm = class extends Rm { constructor(e) { e ||= {}, super(e), this.element.className = ("ol-ext-toggle-switch " + (e.className || "")).trim(); } }, Bm = class extends Rm { +======= +}, lh = class extends ch { + constructor(e) { + e ||= {}, super(e), this.element.className = ("ol-ext-toggle-switch " + (e.className || "")).trim(); + } +}, uh = class extends ch { +>>>>>>> Stashed changes +======= +}, lh = class extends ch { + constructor(e) { + e ||= {}, super(e), this.element.className = ("ol-ext-toggle-switch " + (e.className || "")).trim(); + } +}, uh = class extends ch { +>>>>>>> Stashed changes constructor(e) { e ||= {}, super(e), this.element.className = ("ol-ext-check ol-ext-radio " + (e.className || "")).trim(); } -}, $ = {}; -$.create = function(e, t) { +}, Q = {}; +Q.create = function(e, t) { t ||= {}; var n; if (e === "TEXT") n = document.createTextNode(t.html || ""), t.parent && t.parent.appendChild(n); @@ -13870,21 +24723,21 @@ $.create = function(e, t) { t.parent && t.parent.appendChild(n); break; case "options": - if (/select/i.test(e)) for (var i in t.options) $.create("OPTION", { + if (/select/i.test(e)) for (var i in t.options) Q.create("OPTION", { html: i, value: t.options[i], parent: n }); break; case "style": - $.setStyle(n, t.style); + Q.setStyle(n, t.style); break; case "change": case "click": - $.addListener(n, r, t[r]); + Q.addListener(n, r, t[r]); break; case "on": - for (var a in t.on) $.addListener(n, a, t.on[a]); + for (var a in t.on) Q.addListener(n, a, t.on[a]); break; case "checked": n.checked = !!t.checked; @@ -13892,44 +24745,66 @@ $.create = function(e, t) { default: n.setAttribute(r, t[r]); } return n; -}, $.createSwitch = function(e) { - var t = $.create("INPUT", { +}, Q.createSwitch = function(e) { + var t = Q.create("INPUT", { type: "checkbox", on: e.on, click: e.click, change: e.change, parent: e.parent }); +<<<<<<< Updated upstream +<<<<<<< Updated upstream return new zm(Object.assign({ input: t }, e || {})), t; }, $.createCheck = function(e) { var t = $.create("INPUT", { +======= + return new lh(Object.assign({ input: t }, e || {})), t; +}, Q.createCheck = function(e) { + var t = Q.create("INPUT", { +>>>>>>> Stashed changes +======= + return new lh(Object.assign({ input: t }, e || {})), t; +}, Q.createCheck = function(e) { + var t = Q.create("INPUT", { +>>>>>>> Stashed changes name: e.name, type: e.type === "radio" ? "radio" : "checkbox", on: e.on, parent: e.parent }), n = Object.assign({ input: t }, e || {}); +<<<<<<< Updated upstream +<<<<<<< Updated upstream return e.type === "radio" ? new Bm(n) : new Rm(n), t; }, $.setHTML = function(e, t) { +======= + return e.type === "radio" ? new uh(n) : new ch(n), t; +}, Q.setHTML = function(e, t) { +>>>>>>> Stashed changes +======= + return e.type === "radio" ? new uh(n) : new ch(n), t; +}, Q.setHTML = function(e, t) { +>>>>>>> Stashed changes t instanceof Element ? e.appendChild(t) : t !== void 0 && (e.innerHTML = t); -}, $.appendText = function(e, t) { +}, Q.appendText = function(e, t) { e.appendChild(document.createTextNode(t || "")); -}, $.addListener = function(e, t, n, r) { +}, Q.addListener = function(e, t, n, r) { typeof t == "string" && (t = t.split(" ")), t.forEach(function(t) { e.addEventListener(t, n, r); }); -}, $.removeListener = function(e, t, n) { +}, Q.removeListener = function(e, t, n) { typeof t == "string" && (t = t.split(" ")), t.forEach(function(t) { e.removeEventListener(t, n); }); -}, $.show = function(e) { +}, Q.show = function(e) { e.style.display = ""; -}, $.hide = function(e) { +}, Q.hide = function(e) { e.style.display = "none"; -}, $.hidden = function(e) { - return $.getStyle(e, "display") === "none"; -}, $.toggle = function(e) { +}, Q.hidden = function(e) { + return Q.getStyle(e, "display") === "none"; +}, Q.toggle = function(e) { e.style.display = e.style.display === "none" ? "" : "none"; -}, $.setStyle = function(e, t) { +}, Q.setStyle = function(e, t) { for (var n in t) switch (n) { case "top": case "left": @@ -13943,7 +24818,7 @@ $.create = function(e, t) { break; default: e.style[n] = t[n]; } -}, $.getStyle = function(e, t) { +}, Q.getStyle = function(e, t) { var n, r = (e.ownerDocument || document).defaultView; if (r && r.getComputedStyle) t = t.replace(/([A-Z])/g, "-$1").toLowerCase(), n = r.getComputedStyle(e, null).getPropertyValue(t); else if (e.currentStyle && (t = t.replace(/-(\w)/g, function(e, t) { @@ -13953,11 +24828,11 @@ $.create = function(e, t) { return e.runtimeStyle.left = e.currentStyle.left, e.style.left = t || 0, t = e.style.pixelLeft + "px", e.style.left = n, e.runtimeStyle.left = r, t; })(n); return /px$/.test(n) ? parseInt(n) : n; -}, $.outerHeight = function(e) { - return e.offsetHeight + $.getStyle(e, "marginBottom"); -}, $.outerWidth = function(e) { - return e.offsetWidth + $.getStyle(e, "marginLeft"); -}, $.offsetRect = function(e) { +}, Q.outerHeight = function(e) { + return e.offsetHeight + Q.getStyle(e, "marginBottom"); +}, Q.outerWidth = function(e) { + return e.offsetWidth + Q.getStyle(e, "marginLeft"); +}, Q.offsetRect = function(e) { var t = e.getBoundingClientRect(); return { top: t.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0), @@ -13965,20 +24840,20 @@ $.create = function(e, t) { height: t.height || t.bottom - t.top, width: t.width || t.right - t.left }; -}, $.getFixedOffset = function(e) { +}, Q.getFixedOffset = function(e) { var t = { left: 0, top: 0 }, n = function(e) { if (!e) return t; - if ($.getStyle(e, "position") === "absolute" && $.getStyle(e, "transform") !== "none") { + if (Q.getStyle(e, "position") === "absolute" && Q.getStyle(e, "transform") !== "none") { var r = e.getBoundingClientRect(); return t.left += r.left, t.top += r.top, t; } return n(e.offsetParent); }; return n(e.offsetParent); -}, $.positionRect = function(e, t) { +}, Q.positionRect = function(e, t) { var n = 0, r = 0, i = function(a) { if (a) return n += a.offsetLeft, r += a.offsetTop, i(a.offsetParent); var o = { @@ -13988,7 +24863,7 @@ $.create = function(e, t) { return t && (o.top -= window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0, o.left -= window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0), o.bottom = o.top + e.offsetHeight, o.right = o.top + e.offsetWidth, o; }; return i(e.offsetParent); -}, $.scrollDiv = function(e, t) { +}, Q.scrollDiv = function(e, t) { t ||= {}; var n = !1, r = 0, i, a = 0, o = typeof t.onmove == "function" ? t.onmove : function() {}, s = t.vertical ? "screenY" : "screenX", c = t.vertical ? "scrollTop" : "scrollLeft", l = !1, u, d, f = 0, p = function() { y && (f++, setTimeout(m)); @@ -13999,7 +24874,7 @@ $.create = function(e, t) { u = t / n, y.style.height = u * 100 + "%", y.style.top = e.scrollTop / n * 100 + "%", v.style.height = t + "px", t > n - .5 ? v.classList.add("ol-100pc") : v.classList.remove("ol-100pc"); } }, h = function(t) { - t.target.classList.contains("ol-noscroll") || (l = !1, n = t[s], a = /* @__PURE__ */ new Date(), e.classList.add("ol-move"), t.preventDefault(), window.addEventListener("pointermove", g), $.addListener(window, ["pointerup", "pointercancel"], x)); + t.target.classList.contains("ol-noscroll") || (l = !1, n = t[s], a = /* @__PURE__ */ new Date(), e.classList.add("ol-move"), t.preventDefault(), window.addEventListener("pointermove", g), Q.addListener(window, ["pointerup", "pointercancel"], x)); }, g = function(t) { if (n !== !1) { var f = (d ? -1 / u : 1) * (n - t[s]); @@ -14015,18 +24890,18 @@ $.create = function(e, t) { }, v, y; if (t.vertical && t.minibar) { var b = function(n) { - e.removeEventListener("pointermove", b), e.parentNode.classList.add("ol-miniscroll"), y = $.create("DIV"), v = $.create("DIV", { + e.removeEventListener("pointermove", b), e.parentNode.classList.add("ol-miniscroll"), y = Q.create("DIV"), v = Q.create("DIV", { className: "ol-scroll", html: y }), e.parentNode.insertBefore(v, e), y.addEventListener("pointerdown", function(e) { d = !0, h(e); - }), t.mousewheel && ($.addListener(v, [ + }), t.mousewheel && (Q.addListener(v, [ "mousewheel", "DOMMouseScroll", "onmousewheel" ], function(e) { S(e); - }), $.addListener(y, [ + }), Q.addListener(y, [ "mousewheel", "DOMMouseScroll", "onmousewheel" @@ -14038,7 +24913,7 @@ $.create = function(e, t) { p(); }); } - e.style["touch-action"] = "none", e.style.overflow = "hidden", e.classList.add("ol-scrolldiv"), $.addListener(e, ["pointerdown"], function(e) { + e.style["touch-action"] = "none", e.style.overflow = "hidden", e.classList.add("ol-scrolldiv"), Q.addListener(e, ["pointerdown"], function(e) { d = !1, h(e); }), e.addEventListener("click", function(t) { e.classList.contains("ol-move") && (t.preventDefault(), t.stopPropagation()); @@ -14046,17 +24921,17 @@ $.create = function(e, t) { var x = function(i) { a = /* @__PURE__ */ new Date() - a, a > 100 || d ? r = 0 : a > 0 && (r = ((r || 0) + (n - i[s]) / a) / 2), _(t.animate === !1 ? 0 : r * 200), n = !1, r = 0, a = 0, e.classList.contains("ol-move") ? e.classList.remove("ol-hasClick") : (e.classList.add("ol-hasClick"), setTimeout(function() { e.classList.remove("ol-hasClick"); - }, 500)), d = !1, window.removeEventListener("pointermove", g), $.removeListener(window, ["pointerup", "pointercancel"], x); + }, 500)), d = !1, window.removeEventListener("pointermove", g), Q.removeListener(window, ["pointerup", "pointercancel"], x); }, S = function(t) { var n = Math.max(-1, Math.min(1, t.wheelDelta || -t.detail)); return e.classList.add("ol-move"), e[c] -= n * 30, e.classList.remove("ol-move"), !1; }; - return t.mousewheel && $.addListener(e, [ + return t.mousewheel && Q.addListener(e, [ "mousewheel", "DOMMouseScroll", "onmousewheel" ], S), { refresh: p }; -}, $.dispatchEvent = function(e, t) { +}, Q.dispatchEvent = function(e, t) { var n; try { n = new CustomEvent(e); @@ -14064,25 +24939,43 @@ $.create = function(e, t) { n = document.createEvent("CustomEvent"), n.initCustomEvent(e, !0, !0, {}); } t.dispatchEvent(n); +<<<<<<< Updated upstream +<<<<<<< Updated upstream }, $.setCursor = function(e, t) { e instanceof hu && (e = e.getTargetElement()), !("ontouchstart" in window) && e instanceof Element && (e.style.cursor = t); }; //#endregion //#region node_modules/ol-ext/control/LayerSwitcher.js var Vm = class extends Oe { +======= +}, Q.setCursor = function(e, t) { + e instanceof Rl && (e = e.getTargetElement()), !("ontouchstart" in window) && e instanceof Element && (e.style.cursor = t); +}; +//#endregion +//#region node_modules/ol-ext/control/LayerSwitcher.js +var dh = class extends Te { +>>>>>>> Stashed changes +======= +}, Q.setCursor = function(e, t) { + e instanceof Rl && (e = e.getTargetElement()), !("ontouchstart" in window) && e instanceof Element && (e.style.cursor = t); +}; +//#endregion +//#region node_modules/ol-ext/control/LayerSwitcher.js +var dh = class extends Te { +>>>>>>> Stashed changes constructor(e) { e ||= {}; - var t = $.create("DIV", { className: e.switcherClass || "ol-layerswitcher" }); + var t = Q.create("DIV", { className: e.switcherClass || "ol-layerswitcher" }); super({ element: t, target: e.target }); var n = this; - this.dcount = 0, this.show_progress = e.show_progress, this.oninfo = typeof e.oninfo == "function" ? e.oninfo : null, this.onextent = typeof e.onextent == "function" ? e.onextent : null, this.hasextent = e.extent || e.onextent, this.hastrash = e.trash, this.reordering = e.reordering !== !1, this._layers = [], this._layerGroup = e.layerGroup && e.layerGroup.getLayers ? e.layerGroup : null, this.onchangeCheck = typeof e.onchangeCheck == "function" ? e.onchangeCheck : null, typeof e.displayInLayerSwitcher == "function" && (this.displayInLayerSwitcher = e.displayInLayerSwitcher), e.target || (t.classList.add("ol-unselectable"), t.classList.add("ol-control"), t.classList.add(e.collapsed === !1 ? "ol-forceopen" : "ol-collapsed"), e.counter && t.classList.add("ol-counter"), this.counter = $.create("SPAN", { + this.dcount = 0, this.show_progress = e.show_progress, this.oninfo = typeof e.oninfo == "function" ? e.oninfo : null, this.onextent = typeof e.onextent == "function" ? e.onextent : null, this.hasextent = e.extent || e.onextent, this.hastrash = e.trash, this.reordering = e.reordering !== !1, this._layers = [], this._layerGroup = e.layerGroup && e.layerGroup.getLayers ? e.layerGroup : null, this.onchangeCheck = typeof e.onchangeCheck == "function" ? e.onchangeCheck : null, typeof e.displayInLayerSwitcher == "function" && (this.displayInLayerSwitcher = e.displayInLayerSwitcher), e.target || (t.classList.add("ol-unselectable"), t.classList.add("ol-control"), t.classList.add(e.collapsed === !1 ? "ol-forceopen" : "ol-collapsed"), e.counter && t.classList.add("ol-counter"), this.counter = Q.create("SPAN", { class: "ol-counter", text: 0, parent: t - }), this.button = $.create("BUTTON", { + }), this.button = Q.create("BUTTON", { type: "button", parent: t }), this.button.addEventListener("touchstart", function(e) { @@ -14105,29 +24998,29 @@ var Vm = class extends Oe { type: "toggle", collapsed: !1 }); - })), e.minibar && (e.noScroll = !0), e.noScroll || (this.topv = $.create("DIV", { + })), e.minibar && (e.noScroll = !0), e.noScroll || (this.topv = Q.create("DIV", { className: "ol-switchertopdiv", parent: t, click: function() { n.overflow("+50%"); } - }), this.botv = $.create("DIV", { + }), this.botv = Q.create("DIV", { className: "ol-switcherbottomdiv", parent: t, click: function() { n.overflow("-50%"); } - })), this._noScroll = e.noScroll), this.panel_ = $.create("UL", { className: "panel" }), this.panelContainer_ = $.create("DIV", { + })), this._noScroll = e.noScroll), this.panel_ = Q.create("UL", { className: "panel" }), this.panelContainer_ = Q.create("DIV", { className: "panel-container", html: this.panel_, parent: t - }), !e.target && !e.noScroll && $.addListener(this.panel_, "mousewheel DOMMouseScroll onmousewheel", function(e) { + }), !e.target && !e.noScroll && Q.addListener(this.panel_, "mousewheel DOMMouseScroll onmousewheel", function(e) { n.overflow(Math.max(-1, Math.min(1, e.wheelDelta || -e.detail))) && (e.stopPropagation(), e.preventDefault()); - }), this.header_ = $.create("LI", { + }), this.header_ = Q.create("LI", { className: "ol-header", parent: this.panel_ }), this.set("drawDelay", e.drawDelay || 0), this.set("selection", e.selection), e.minibar && setTimeout(function() { - var e = $.scrollDiv(this.panelContainer_, { + var e = Q.scrollDiv(this.panelContainer_, { mousewheel: !0, vertical: !0, minibar: !0 @@ -14169,18 +25062,18 @@ var Vm = class extends Oe { return this.element.classList.contains("ol-forceopen"); } setHeader(e) { - $.setHTML(this.header_, e); + Q.setHTML(this.header_, e); } overflow(e) { if (this.button && !this._noScroll) { - if ($.hidden(this.panel_)) { - $.setStyle(this.element, { height: "auto" }); + if (Q.hidden(this.panel_)) { + Q.setStyle(this.element, { height: "auto" }); return; } - var t = $.outerHeight(this.element), n = $.outerHeight(this.panel_), r = this.button.offsetTop + $.outerHeight(this.button), i = this.panel_.offsetTop - r; + var t = Q.outerHeight(this.element), n = Q.outerHeight(this.panel_), r = this.button.offsetTop + Q.outerHeight(this.button), i = this.panel_.offsetTop - r; if (n > t - r) { - $.setStyle(this.element, { height: "100%" }); - var a = this.panel_.querySelectorAll("li.ol-visible .li-content")[0], o = a ? 2 * $.getStyle(a, "height") : 0; + Q.setStyle(this.element, { height: "100%" }); + var a = this.panel_.querySelectorAll("li.ol-visible .li-content")[0], o = a ? 2 * Q.getStyle(a, "height") : 0; switch (e) { case 1: i += o; @@ -14193,9 +25086,9 @@ var Vm = class extends Oe { break; case "-50%": i -= Math.round(t / 2); } - return i + n <= t - 3 * r / 2 ? (i = t - 3 * r / 2 - n, $.hide(this.botv)) : $.show(this.botv), i >= 0 ? (i = 0, $.hide(this.topv)) : $.show(this.topv), $.setStyle(this.panel_, { top: i + "px" }), !0; + return i + n <= t - 3 * r / 2 ? (i = t - 3 * r / 2 - n, Q.hide(this.botv)) : Q.show(this.botv), i >= 0 ? (i = 0, Q.hide(this.topv)) : Q.show(this.topv), Q.setStyle(this.panel_, { top: i + "px" }), !0; } - return $.setStyle(this.element, { height: "auto" }), $.setStyle(this.panel_, { top: 0 }), $.hide(this.botv), $.hide(this.topv), !1; + return Q.setStyle(this.element, { height: "auto" }), Q.setStyle(this.panel_, { top: 0 }), Q.hide(this.botv), Q.hide(this.topv), !1; } return !1; } @@ -14300,10 +25193,10 @@ var Vm = class extends Oe { } n.parentNode.querySelectorAll("li").forEach(function(e) { e.classList.remove("dropover"), e.classList.remove("dropover-after"), e.classList.remove("dropover-before"); - }), n.classList.remove("drag"), n.parentNode.classList.remove("drag"), t.element.classList.remove("drag"), c && c.remove(), $.removeListener(document, "mousemove touchmove", f), $.removeListener(document, "mouseup touchend touchcancel", d); + }), n.classList.remove("drag"), n.parentNode.classList.remove("drag"), t.element.classList.remove("drag"), c && c.remove(), Q.removeListener(document, "mousemove touchmove", f), Q.removeListener(document, "mouseup touchend touchcancel", d); } function f(e) { - if (a = e.pageY || e.touches && e.touches.length && e.touches[0].pageY || e.changedTouches && e.changedTouches.length && e.changedTouches[0].pageY, r && Math.abs(o - a) > 2 && (r = !1, n.classList.add("drag"), l = t._getLayerForLI(n), s = !1, u = t._getLayerForLI(n.parentNode.parentNode), c = $.create("LI", { + if (a = e.pageY || e.touches && e.touches.length && e.touches[0].pageY || e.changedTouches && e.changedTouches.length && e.changedTouches[0].pageY, r && Math.abs(o - a) > 2 && (r = !1, n.classList.add("drag"), l = t._getLayerForLI(n), s = !1, u = t._getLayerForLI(n.parentNode.parentNode), c = Q.create("LI", { className: "ol-dragover", html: n.innerHTML, style: { @@ -14311,8 +25204,8 @@ var Vm = class extends Oe { "z-index": 1e4, left: n.offsetLeft, opacity: .5, - width: $.outerWidth(n), - height: $.getStyle(n, "height") + width: Q.outerWidth(n), + height: Q.getStyle(n, "height") }, parent: i }), t.element.classList.add("drag"), t.dispatchEvent({ @@ -14320,32 +25213,32 @@ var Vm = class extends Oe { layer: l, group: u })), !r) { - e.preventDefault(), e.stopPropagation(), $.setStyle(c, { top: a - $.offsetRect(i).top + i.scrollTop + 5 }); + e.preventDefault(), e.stopPropagation(), Q.setStyle(c, { top: a - Q.offsetRect(i).top + i.scrollTop + 5 }); var d; if (!e.touches) d = e.target, e.target.shadowRoot && (d = e.composedPath()[0]); else for (d = document.elementFromPoint(e.touches[0].clientX, e.touches[0].clientY); d.shadowRoot;) d = d.shadowRoot.elementFromPoint(e.touches[0].clientX, e.touches[0].clientY); for (d.classList.contains("ol-switcherbottomdiv") ? t.overflow(-1) : d.classList.contains("ol-switchertopdiv") && t.overflow(1); d && d.tagName !== "LI";) d = d.parentNode; (!d || !d.classList.contains("dropover")) && n.parentNode.querySelectorAll("li").forEach(function(e) { e.classList.remove("dropover"), e.classList.remove("dropover-after"), e.classList.remove("dropover-before"); - }), d && d.parentNode.classList.contains("drag") && d !== n ? (s = t._getLayerForLI(d), s && !s.get("allwaysOnTop") == !l.get("allwaysOnTop") ? (d.classList.add("dropover"), d.classList.add(n.offsetTop < d.offsetTop ? "dropover-after" : "dropover-before")) : s = !1, $.show(c)) : (s = !1, d === n ? $.hide(c) : $.show(c)), s ? c.classList.remove("forbidden") : c.classList.add("forbidden"); + }), d && d.parentNode.classList.contains("drag") && d !== n ? (s = t._getLayerForLI(d), s && !s.get("allwaysOnTop") == !l.get("allwaysOnTop") ? (d.classList.add("dropover"), d.classList.add(n.offsetTop < d.offsetTop ? "dropover-after" : "dropover-before")) : s = !1, Q.show(c)) : (s = !1, d === n ? Q.hide(c) : Q.show(c)), s ? c.classList.remove("forbidden") : c.classList.add("forbidden"); } } - $.addListener(document, "mousemove touchmove", f), $.addListener(document, "mouseup touchend touchcancel", d); + Q.addListener(document, "mousemove touchmove", f), Q.addListener(document, "mouseup touchend touchcancel", d); } dragOpacity_(e) { e.stopPropagation(), e.preventDefault(); var t = this, n = e.target, r = this._getLayerForLI(n.parentNode.parentNode.parentNode); if (!r) return; - var i = e.pageX || e.touches && e.touches.length && e.touches[0].pageX || e.changedTouches && e.changedTouches.length && e.changedTouches[0].pageX, a = $.getStyle(n, "left") - i; + var i = e.pageX || e.touches && e.touches.length && e.touches[0].pageX || e.changedTouches && e.changedTouches.length && e.changedTouches[0].pageX, a = Q.getStyle(n, "left") - i; t.dragging_ = !0; function o() { - $.removeListener(document, "mouseup touchend touchcancel", o), $.removeListener(document, "mousemove touchmove", s), t.dragging_ = !1; + Q.removeListener(document, "mouseup touchend touchcancel", o), Q.removeListener(document, "mousemove touchmove", s), t.dragging_ = !1; } function s(e) { - var t = (a + (e.pageX || e.touches && e.touches.length && e.touches[0].pageX || e.changedTouches && e.changedTouches.length && e.changedTouches[0].pageX)) / $.getStyle(n.parentNode, "width"), i = Math.max(0, Math.min(1, t)); - $.setStyle(n, { left: i * 100 + "%" }), n.parentNode.nextElementSibling.innerHTML = Math.round(i * 100), r.setOpacity(i); + var t = (a + (e.pageX || e.touches && e.touches.length && e.touches[0].pageX || e.changedTouches && e.changedTouches.length && e.changedTouches[0].pageX)) / Q.getStyle(n.parentNode, "width"), i = Math.max(0, Math.min(1, t)); + Q.setStyle(n, { left: i * 100 + "%" }), n.parentNode.nextElementSibling.innerHTML = Math.round(i * 100), r.setOpacity(i); } - $.addListener(document, "mouseup touchend touchcancel", o), $.addListener(document, "mousemove touchmove", s); + Q.addListener(document, "mouseup touchend touchcancel", o), Q.addListener(document, "mousemove touchmove", s); } drawList(e, t) { var n = this, r = t.getArray(), i = function(e) { @@ -14379,18 +25272,18 @@ var Vm = class extends Oe { this._setLayerForLI(null, c); return; } - var u = $.create("LI", { + var u = Q.create("LI", { className: (c.getVisible() ? "ol-visible " : " ") + (c.get("baseLayer") ? "baselayer" : ""), parent: e }); this._setLayerForLI(u, c), this._selectedLayer === c && u.classList.add("ol-layer-select"); - var d = $.create("DIV", { + var d = Q.create("DIV", { className: "ol-layerswitcher-buttons", parent: u - }), f = $.create("DIV", { + }), f = Q.create("DIV", { className: "li-content", parent: u - }), p = $.create("INPUT", { + }), p = Q.create("INPUT", { type: c.get("baseLayer") ? "radio" : "checkbox", className: "ol-visibility", checked: c.getVisible(), @@ -14441,7 +25334,7 @@ var Vm = class extends Oe { parent: f }); c === n._focus && (p.focus(), n.overflow()); - var m = $.create("LABEL", { + var m = Q.create("LABEL", { title: c.get("title") || c.get("name"), click: i, style: { userSelect: "none" }, @@ -14449,13 +25342,13 @@ var Vm = class extends Oe { }); if (m.addEventListener("selectstart", function() { return !1; - }), $.create("SPAN", { + }), Q.create("SPAN", { html: c.get("title") || c.get("name"), click: function(e) { this.get("selection") && (e.stopPropagation(), this.selectLayer(c)); }.bind(this), parent: m - }), this.reordering && (l < r.length - 1 && (c.get("allwaysOnTop") || !r[l + 1].get("allwaysOnTop")) || l > 0 && (!c.get("allwaysOnTop") || r[l - 1].get("allwaysOnTop"))) && $.create("DIV", { + }), this.reordering && (l < r.length - 1 && (c.get("allwaysOnTop") || !r[l + 1].get("allwaysOnTop")) || l > 0 && (!c.get("allwaysOnTop") || r[l - 1].get("allwaysOnTop"))) && Q.create("DIV", { className: "layerup ol-noscroll", title: this.tip.up, on: { "mousedown touchstart": function(e) { @@ -14466,7 +25359,7 @@ var Vm = class extends Oe { var h = 0; c.getLayers().forEach(function(e) { n.displayInLayerSwitcher(e) && h++; - }), h && $.create("DIV", { + }), h && Q.create("DIV", { className: c.get("openInLayerSwitcher") ? "collapse-layers" : "expend-layers", title: this.tip.plus, click: function() { @@ -14476,56 +25369,66 @@ var Vm = class extends Oe { parent: d }); } - if (this.oninfo && $.create("DIV", { + if (this.oninfo && Q.create("DIV", { className: "layerInfo", title: this.tip.info, click: a, parent: d - }), this.hastrash && !c.get("noSwitcherDelete") && $.create("DIV", { + }), this.hastrash && !c.get("noSwitcherDelete") && Q.create("DIV", { className: "layerTrash", title: this.tip.trash, click: s, parent: d }), this.hasextent && r[l].getExtent()) { var g = r[l].getExtent(); - g.length == 4 && g[0] < g[2] && g[1] < g[3] && $.create("DIV", { + g.length == 4 && g[0] < g[2] && g[1] < g[3] && Q.create("DIV", { className: "layerExtent", title: this.tip.extent, click: o, parent: d }); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream if (this.show_progress && c instanceof Co) { var _ = $.create("DIV", { +======= + if (this.show_progress && c instanceof Lu) { + var _ = Q.create("DIV", { +>>>>>>> Stashed changes +======= + if (this.show_progress && c instanceof Lu) { + var _ = Q.create("DIV", { +>>>>>>> Stashed changes className: "layerswitcher-progress", parent: f }); - this.setprogress_(c), c.layerswitcher_progress = $.create("DIV", { parent: _ }); + this.setprogress_(c), c.layerswitcher_progress = Q.create("DIV", { parent: _ }); } - var v = $.create("DIV", { + var v = Q.create("DIV", { className: "layerswitcher-opacity", click: function(e) { if (e.target === this) { e.stopPropagation(), e.preventDefault(); - var t = Math.max(0, Math.min(1, e.offsetX / $.getStyle(this, "width"))); + var t = Math.max(0, Math.min(1, e.offsetX / Q.getStyle(this, "width"))); n._getLayerForLI(this.parentNode.parentNode).setOpacity(t), this.parentNode.querySelectorAll(".layerswitcher-opacity-label")[0].innerHTML = Math.round(t * 100); } }, parent: f }); - if ($.create("DIV", { + if (Q.create("DIV", { className: "layerswitcher-opacity-cursor ol-noscroll", style: { left: c.getOpacity() * 100 + "%" }, on: { "mousedown touchstart": function(e) { n.dragOpacity_(e); } }, parent: v - }), $.create("DIV", { + }), Q.create("DIV", { className: "layerswitcher-opacity-label", html: Math.round(c.getOpacity() * 100), parent: f }), c.getLayers && (u.classList.add("ol-layer-group"), c.get("openInLayerSwitcher") === !0)) { - var y = $.create("UL", { parent: u }); + var y = Q.create("UL", { parent: u }); this.drawList(y, c.getLayers()); } u.classList.add(this.getLayerClass(c)), this.dispatchEvent({ @@ -14538,7 +25441,15 @@ var Vm = class extends Oe { this.viewChange(), e === this.panel_ && (this.overflow(""), this._focus = null); } getLayerClass(e) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream return e ? e.getLayers ? "ol-layer-group" : e instanceof rf ? "ol-layer-vector" : e instanceof cf ? "ol-layer-vectortile" : e instanceof Co ? "ol-layer-tile" : e instanceof df ? "ol-layer-image" : e instanceof Fm ? "ol-layer-heatmap" : e.getFeatures ? "ol-layer-vectorimage" : "unknown" : "none"; +======= + return e ? e.getLayers ? "ol-layer-group" : e instanceof Of ? "ol-layer-vector" : e instanceof Mf ? "ol-layer-vectortile" : e instanceof Lu ? "ol-layer-tile" : e instanceof Ff ? "ol-layer-image" : e instanceof ah ? "ol-layer-heatmap" : e.getFeatures ? "ol-layer-vectorimage" : "unknown" : "none"; +>>>>>>> Stashed changes +======= + return e ? e.getLayers ? "ol-layer-group" : e instanceof Of ? "ol-layer-vector" : e instanceof Mf ? "ol-layer-vectortile" : e instanceof Lu ? "ol-layer-tile" : e instanceof Ff ? "ol-layer-image" : e instanceof ah ? "ol-layer-heatmap" : e.getFeatures ? "ol-layer-vectorimage" : "unknown" : "none"; +>>>>>>> Stashed changes } selectLayer(e, t) { if (!e) { @@ -14556,7 +25467,7 @@ var Vm = class extends Oe { setprogress_(e) { if (!e.layerswitcher_progress) { var t = 0, n = 0, r = function() { - n === t ? (n = t = 0, $.setStyle(e.layerswitcher_progress, { width: 0 })) : $.setStyle(e.layerswitcher_progress, { width: (t / n * 100).toFixed(1) + "%" }); + n === t ? (n = t = 0, Q.setStyle(e.layerswitcher_progress, { width: 0 })) : Q.setStyle(e.layerswitcher_progress, { width: (t / n * 100).toFixed(1) + "%" }); }; e.getSource().on("tileloadstart", function() { n++, r(); @@ -14568,7 +25479,15 @@ var Vm = class extends Oe { } } }; +<<<<<<< Updated upstream +<<<<<<< Updated upstream Vm.prototype.tip = { +======= +dh.prototype.tip = { +>>>>>>> Stashed changes +======= +dh.prototype.tip = { +>>>>>>> Stashed changes up: "up/down", down: "down", info: "informations...", @@ -14577,6 +25496,7 @@ Vm.prototype.tip = { plus: "expand/shrink" }; //#endregion +<<<<<<< Updated upstream //#region src/api/tileserver.js async function Hm() { let e = await fetch("/tileserver/session_id"); @@ -15030,6 +25950,13 @@ var ch = function(e) { } } }, dh = class extends Oe { +======= +//#region node_modules/ol-ext/control/Button.js +var fh = class extends Te { +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes constructor(e) { e ||= {}; var t = document.createElement("div"); @@ -15043,7 +25970,7 @@ var ch = function(e) { }), t.appendChild(r), !e.title && r.firstElementChild && (r.title = r.firstElementChild.title), e.title && this.set("title", e.title), e.title && this.set("title", e.title), e.name && this.set("name", e.name), e.attributes || {}) this.button_.setAttribute(i, e.attributes[i]); } setVisible(e) { - e ? $.show(this.element) : $.hide(this.element); + e ? Q.show(this.element) : Q.hide(this.element); } getDisable() { var e = this.element.querySelector("button"); @@ -15056,12 +25983,12 @@ var ch = function(e) { this.button_.setAttribute("title", e); } setHtml(e) { - $.setHTML(this.button_, e); + Q.setHTML(this.button_, e); } getButtonElement() { return this.button_; } -}, fh = class extends dh { +}, ph = class extends fh { constructor(e) { e ||= {}, e.toggleFn && (e.onToggle = e.toggleFn), e.handleClick = function() { t.toggle(), e.onToggle && e.onToggle.call(t, t.getActive()); @@ -15117,6 +26044,8 @@ var ch = function(e) { } }; //#endregion +<<<<<<< Updated upstream +<<<<<<< Updated upstream //#region src/utils/colours.js function ph(e) { let t = e.replace("#", ""); @@ -16367,12 +27296,39 @@ function Hh({ viewerApp: e, panel: t, toggle: n, closeButton: r, tabs: i, tabPan //#region src/main.js function Uh(e, t, n) { return new Wu({ +======= +======= +>>>>>>> Stashed changes +//#region src/main.js +async function mh() { + let e = await fetch("/tileserver/session_id"); + if (!e.ok) throw Error("Failed to create TileServer session."); + return (await e.json()).session_id; +} +async function hh(e) { + let t = new FormData(); + if (t.append("slide_path", e), !(await fetch("/tileserver/slide", { + method: "PUT", + body: t + })).ok) throw Error(`Failed to load slide: ${e}`); + let n = await fetch("/tileserver/slide"); + if (!n.ok) throw Error("Failed to retrieve slide metadata."); + return n.json(); +} +function gh(e, t, n) { + return new dd({ +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes url: `/tileserver/layer/slide/${e}/zoomify/{TileGroup}/{z}-{x}-{y}@1x.jpg?v=${n}`, size: t.slide_dimensions, crossOrigin: "anonymous", zDirection: -1 }); } +<<<<<<< Updated upstream +<<<<<<< Updated upstream var Wh = document.getElementById("map"), Gh = document.querySelector(".viewer-app"), Kh = document.getElementById("viewer-panel"), qh = document.getElementById("viewer-panel-toggle"), Jh = document.getElementById("viewer-files"), Yh = document.getElementById("layer-editor"), Xh = document.getElementById("layer-editor-toggle"), Zh = document.getElementById("layer-editor-list"), Qh = document.getElementById("settings-panel"), $h = document.getElementById("settings-toggle"), eg = document.getElementById("settings-close"), tg = document.querySelectorAll(".settings-tab"), ng = document.querySelectorAll(".settings-tab-panel"), rg = document.getElementById("settings-zoom-visible"), ig = document.getElementById("settings-zoom-level-visible"), ag = document.getElementById("settings-rotation-visible"), og = document.getElementById("settings-graticule-visible"), sg = document.getElementById("settings-screen-space-graticule-visible"), cg = document.getElementById("reset-view-button"), lg = document.querySelector(".reset-view-control"), ug = document.getElementById("settings-reset-view-visible"), dg = document.getElementById("settings-fullscreen-visible"), fg = document.getElementById("settings-mouse-position-visible"), pg = document.getElementById("settings-overview-map-visible"), mg = document.getElementById("settings-overview-map-size"), hg = document.getElementById("settings-mouse-wheel-zoom-sensitivity"), gg = document.getElementById("settings-zoom-button-step"), _g = document.getElementById("settings-scale-bar-enabled"), vg = document.getElementById("settings-theme"), yg = document.getElementById("settings-grid-theme"), bg = document.getElementById("settings-grid-opacity"), xg = document.getElementById("settings-grid-opacity-value"), Sg = document.getElementById("settings-grid-spacing"), Cg = document.getElementById("settings-grid-labels-visible"), wg = document.getElementById("settings-control-opacity"), Tg = document.getElementById("settings-control-opacity-value"), Eg = document.getElementById("settings-reset-defaults"), Dg = document.getElementById("settings-scale-bar-colour"), Og = document.getElementById("settings-scale-bar-opacity"), kg = document.getElementById("settings-scale-bar-opacity-value"), Ag = document.getElementById("settings-scale-bar-size"), jg = document.getElementById("settings-scale-bar-units"); if (Wh === null || Gh === null) throw Error("The OpenLayers viewer could not be found."); if (Kh === null || qh === null || Yh === null || Xh === null || Zh === null || Qh === null || $h === null || eg === null || rg === null || ig === null || ag === null || og === null || sg === null || cg === null || lg === null || ug === null || dg === null || fg === null || pg === null || mg === null || hg === null || gg === null || vg === null || yg === null || bg === null || xg === null || Sg === null || Cg === null || wg === null || Tg === null || Eg === null || _g === null || Dg === null || Og === null || kg === null || Ag === null || jg === null || Jh === null) throw Error("The OpenLayers viewer controls could not be found."); @@ -16466,11 +27422,56 @@ if (Gg !== null) { Wg.updateActionState(); var Kg = Fg.map((e) => { let t = new Wu({ +======= +======= +>>>>>>> Stashed changes +var _h = document.getElementById("map"), vh = document.querySelector(".viewer-app"), yh = document.getElementById("viewer-panel"), bh = document.getElementById("viewer-panel-toggle"), xh = document.getElementById("current-slide"), Sh = document.getElementById("layer-editor"), Ch = document.getElementById("layer-editor-toggle"), wh = document.getElementById("layer-editor-list"); +if (_h === null || vh === null) throw Error("The OpenLayers viewer could not be found."); +if (yh === null || bh === null || Sh === null || Ch === null || wh === null || xh === null) throw Error("The OpenLayers viewer controls could not be found."); +bh.addEventListener("click", () => { + let e = yh.classList.toggle("hidden"); + bh.classList.toggle("active", !e); +}), Ch.addEventListener("click", () => { + let e = Sh.classList.toggle("hidden"); + Ch.classList.toggle("active", !e); +}); +var Th = JSON.parse(_h.dataset.layers ?? "[]"), Eh = null, Dh = Date.now(), Oh = Date.now(), kh = null, Ah = null, jh = {}, Mh = /* @__PURE__ */ new Set(); +function Nh(e) { + let t = e.split(/[\\/]/).pop() ?? e, n = t.lastIndexOf("."); + return n <= 0 ? t : t.slice(0, n); +} +function Ph() { + if (Ah === null) { + xh.textContent = "No slide selected", xh.removeAttribute("title"); + return; + } + xh.textContent = Ah.split(/[\\/]/).pop() || Ah, xh.title = Ah; +} +var Fh = new URLSearchParams(window.location.search).get("slide"); +if (Fh !== null) { + Ah = Fh, Eh = await mh(); + let e = await hh(Fh); + kh = e, Th = [{ + name: "slide", + url: `/tileserver/layer/slide/${Eh}/zoomify/{TileGroup}/{z}-{x}-{y}@1x.jpg?v=${Dh}`, + size: e.slide_dimensions, + mpp: e.mpp[0] + }]; +} else Th.length === 0 && (Eh = await mh()); +Ph(); +var Ih = Th.map((e) => { + let t = new dd({ +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes url: e.url, size: e.size, crossOrigin: "anonymous", zDirection: -1 }); +<<<<<<< Updated upstream +<<<<<<< Updated upstream return new Co({ title: e.name, source: t @@ -16485,27 +27486,86 @@ if (Jg !== null) { units: "pixels", extent: Xg, metersPerUnit: Fg[0].mpp * 1e-6, +======= + return new Lu({ + title: e.name, + source: t + }); +======= + return new Lu({ + title: e.name, + source: t + }); +>>>>>>> Stashed changes +}), Lh = Ih[0]; +Lh === void 0 && (Lh = new Lu({ title: "slide" }), Ih.push(Lh)), Lh.setZIndex(0); +var Rh = Lh.getSource(), zh, Bh, Vh; +if (Rh !== null) { + let e = Rh.getTileGrid(); + zh = e.getResolutions(), Bh = e.getExtent(), Vh = new qt({ + code: "ZoomifyProjection", + units: "pixels", + extent: Bh, + metersPerUnit: Th[0].mpp * 1e-6, +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes getPointResolution(e) { return e; } }); +<<<<<<< Updated upstream +<<<<<<< Updated upstream } else Yg = [1], Xg = [ +======= +} else zh = [1], Bh = [ +>>>>>>> Stashed changes +======= +} else zh = [1], Bh = [ +>>>>>>> Stashed changes 0, -1, 1, 0 +<<<<<<< Updated upstream +<<<<<<< Updated upstream ], Zg = new cn({ code: "ZoomifyProjectionEmpty", units: "pixels", extent: Xg, +======= +], Vh = new qt({ + code: "ZoomifyProjectionEmpty", + units: "pixels", + extent: Bh, +>>>>>>> Stashed changes +======= +], Vh = new qt({ + code: "ZoomifyProjectionEmpty", + units: "pixels", + extent: Bh, +>>>>>>> Stashed changes metersPerUnit: 1, getPointResolution(e) { return e; } }); +<<<<<<< Updated upstream +<<<<<<< Updated upstream var Qg = .1; function $g(e) { let t = e[2] - e[0], n = e[3] - e[1], r = t * Qg, i = n * Qg; +======= +var Hh = .1; +function Uh(e) { + let t = e[2] - e[0], n = e[3] - e[1], r = t * Hh, i = n * Hh; +>>>>>>> Stashed changes +======= +var Hh = .1; +function Uh(e) { + let t = e[2] - e[0], n = e[3] - e[1], r = t * Hh, i = n * Hh; +>>>>>>> Stashed changes return [ e[0] - r, e[1] - i, @@ -16513,15 +27573,31 @@ function $g(e) { e[3] + i ]; } +<<<<<<< Updated upstream +<<<<<<< Updated upstream mr(Zg); var e_ = new uo({ projection: Zg, resolutions: Yg, extent: $g(Xg), +======= +======= +>>>>>>> Stashed changes +er(Vh); +var Wh = new ua({ + projection: Vh, + resolutions: zh, + extent: Uh(Bh), +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes constrainOnlyCenter: !0, smoothExtentConstraint: !0, smoothResolutionConstraint: !1, center: [.5, -.5], +<<<<<<< Updated upstream +<<<<<<< Updated upstream resolution: Yg[0] }), t_ = new hu({ target: Wh, @@ -16766,5 +27842,409 @@ Object.assign(window, { setAnnotationColors: O_, switchSlide: T_, view: e_ +======= +======= +>>>>>>> Stashed changes + resolution: zh[0] +}), $ = new Rl({ + target: _h, + layers: Ih, + view: Wh +}), Gh = _h.querySelector(".ol-zoom"), Kh = _h.querySelector(".ol-zoom-out"); +if (Gh === null || Kh === null) throw Error("The OpenLayers zoom control could not be found."); +var qh = document.createElement("div"); +qh.className = "ol-zoom-level", Gh.insertBefore(qh, Kh); +function Jh() { + let e = $.getView().getZoom(); + e !== void 0 && (qh.textContent = `${Number.isInteger(e) ? e.toString() : e.toFixed(1)}x`); +} +Jh(); +var Yh = new Jl({ + units: "metric", + minWidth: 100 +}); +$.addControl(Yh); +var Xh = new Lu(); +Rh !== null && Xh.setSource(Rh); +var Zh = 300, Qh = 250; +function $h(e, t) { + let n = [(t[0] + t[2]) / 2, (t[1] + t[3]) / 2], r = t[2] - t[0], i = t[3] - t[1], a = Math.max(r / Zh, i / Qh), o = new ua({ + projection: e, + center: n, + resolution: a, + resolutions: [a], + constrainOnlyCenter: !0 + }); + return o.on("change:center", () => { + let e = o.getCenter(); + e !== void 0 && (e[0] !== n[0] || e[1] !== n[1]) && o.setCenter(n); + }), o; +} +var eg = document.createElement("span"); +eg.className = "overview-toggle-icon", eg.innerHTML = ""; +var tg = document.createElement("span"); +tg.className = "overview-toggle-icon", tg.innerHTML = ""; +var ng = new Wl({ + className: "ol-overviewmap ol-custom-overviewmap", + layers: [Xh], + collapsed: !1, + collapsible: !0, + collapseLabel: eg, + label: tg, + rotateWithView: !1, + tipLabel: "Toggle overview map", + view: $h(Vh, Bh) +}); +$.addControl(ng); +var rg = ng.getOverviewMap(), ig = new wr({ + coordinateFormat: (e) => Ft([e[0], -e[1]], "{x}, {y}", 0), + className: "ol-mouse-position", + placeholder: "\xA0" +}); +$.addControl(ig); +var ag = new va({ + autoHide: !1, + className: "ol-rotate" +}); +$.addControl(ag); +var og = new Oe({ source: vh }); +$.addControl(og); +var sg = new dh(); +$.addControl(sg); +var cg = 64, lg = 64, ug = new Bc({ + stroke: new zc({ + color: "rgba(0, 0, 0, 0.5)", + width: 1 + }), + text: new Kc({ + font: "12px Calibri,sans-serif", + fill: new Ic({ color: "rgba(0, 0, 0, 1)" }), + stroke: new zc({ + color: "rgba(255, 255, 255, 1)", + width: 3 + }) + }) +}); +function dg(e) { + return new md({ + projection: e, + margin: lg, + style: ug, + spacing: cg, + formatCoord: (e, t) => (e = t === "left" || t === "right" ? -Math.floor(e) : Math.floor(e), e >= 1e6 && (e = e.toExponential(3), e = e.replace("+", "")), e) + }); +} +var fg = dg(Vh), pg = cg, mg = lg; +function hg(e) { + return new md({ + projection: e.getCode(), + spacing: pg, + margin: mg, + style: ug, + formatCoord(e, t) { + let n = $.getView().calculateExtent($.getSize()), r = $.getView().getResolution(), i = n[0] + r * mg, a = n[3] - r * mg, o; + if (o = t === "left" || t === "right" ? -(e - a) : e - i, o = Math.floor(o / r / pg), t === "left" || t === "right") { + let e = ""; + do + e += String.fromCharCode(65 + o % 26), o = Math.floor(o / 26); + while (o > 0); + return e.split("").reverse().join(""); + } + return o; + } + }); +} +var gg = hg(Vh), _g = new ph({ + html: "", + className: "ol-graticule", + title: "Toggle Graticule", + onToggle(e) { + _g.element.classList.toggle("active", e), e ? (vg.setActive(!1), vg.element.classList.remove("active"), gg.setMap(null), fg.setMap($)) : fg.setMap(null); + } +}); +$.addControl(_g); +var vg = new ph({ + html: "", + className: "ol-screen-space-graticule", + title: "Toggle Screen Space Graticule", + onToggle(e) { + vg.element.classList.toggle("active", e), e ? (_g.setActive(!1), _g.element.classList.remove("active"), fg.setMap(null), gg.setMap($)) : gg.setMap(null); + } +}); +$.addControl(vg); +function yg(e) { + let t = _h.querySelector(".ol-zoom-in"), n = _h.querySelector(".ol-zoom-out"), r = ag.element.querySelector("button"), i = _g.element.querySelector("button"), a = vg.element.querySelector("button"); + for (let o of [ + t, + n, + r, + i, + a + ]) o !== null && (o.disabled = !e); + Yh.element.classList.toggle("viewer-control-hidden", !e), ig.element.classList.toggle("viewer-control-hidden", !e), ng.element.classList.toggle("viewer-control-hidden", !e), e || (_g.setActive(!1), vg.setActive(!1), _g.element.classList.remove("active"), vg.element.classList.remove("active"), fg.setMap(null), gg.setMap(null)), e && requestAnimationFrame(() => { + rg.updateSize(), rg.renderSync(); + }); +} +if (yg(Rh !== null), Rh !== null) { + $.getView().fit(Bh); + let e = Sg(); + e !== null && ($.getView().setCenter(e.center), $.getView().setZoom(e.zoom)); +} +$.on("moveend", () => { + Cg(), Jh(); +}); +function bg() { + for (let e of Object.values(jh)) { + e.setSource(null), $.removeLayer(e); + let t = Ih.indexOf(e); + t !== -1 && Ih.splice(t, 1); + } + for (let e of Object.keys(jh)) delete jh[e]; + Mh.clear(), Og(); +} +async function xg() { + if (!(await fetch("/tileserver/clear_overlays", { method: "PUT" })).ok) throw Error("Failed to clear overlays."); + bg(); +} +function Sg() { + let e = new URLSearchParams(window.location.search), t = Number(e.get("x")), n = Number(e.get("y")), r = Number(e.get("zoom")); + return e.get("x") === null || e.get("y") === null || e.get("zoom") === null || !Number.isFinite(t) || !Number.isFinite(n) || !Number.isFinite(r) ? null : { + center: [t, n], + zoom: r + }; +} +function Cg() { + if (Ah === null) return; + let e = $.getView(), t = e.getCenter(), n = e.getZoom(); + if (t === void 0 || n === void 0) return; + let r = new URL(window.location.href); + r.searchParams.set("slide", Ah), r.searchParams.set("x", t[0].toFixed(2)), r.searchParams.set("y", t[1].toFixed(2)), r.searchParams.set("zoom", n.toString()); + let i = r.searchParams.toString().replace(/%2F/gi, "/"); + window.history.replaceState({}, "", `${r.pathname}?${i}${r.hash}`); +} +async function wg() { + if (Eh === null) throw Error("No TileServer session is available."); + if (!(await fetch("/tileserver/slide", { method: "DELETE" })).ok) throw Error("Failed to remove the current slide."); + bg(), Ah = null, kh = null, Th.length = 0, Ph(), Dh += 1, Oh += 1, Lh.setSource(null), Xh.setSource(null), Og(); + let e = [ + 0, + -1, + 1, + 0 + ], t = [1], n = new qt({ + code: "ZoomifyProjectionEmpty", + units: "pixels", + extent: e, + metersPerUnit: 1, + getPointResolution(e) { + return e; + } + }); + er(n); + let r = new ua({ + projection: n, + resolutions: t, + constrainOnlyCenter: !0, + center: [.5, -.5], + resolution: t[0] + }); + $.setView(r), rg.setView($h(n, e)), _g.setActive(!1), vg.setActive(!1), _g.element.classList.remove("active"), vg.element.classList.remove("active"), fg.setMap(null), gg.setMap(null), fg = dg(n), gg = hg(n), window.graticule = fg, window.screenSpaceGraticule = gg; + let i = new URL(window.location.href); + i.search = "", i.hash = "", window.history.replaceState({}, "", i), yg(!1), Jh(); +} +async function Tg(e) { + if (Eh === null) throw Error("Dynamic slide switching requires a TileServer session."); + bg(); + let t = await hh(e); + Ah = e, Ph(), kh = t, Dh += 1; + let n = gh(Eh, t, Dh), r = n.getTileGrid(), i = r.getExtent(), a = r.getResolutions(), o = new qt({ + code: "ZoomifyProjection", + units: "pixels", + extent: i, + metersPerUnit: t.mpp[0] * 1e-6 + }); + er(o); + let s = [(i[0] + i[2]) / 2, (i[1] + i[3]) / 2], c = new ua({ + projection: o, + resolutions: a, + extent: Uh(i), + constrainOnlyCenter: !0, + smoothExtentConstraint: !0, + smoothResolutionConstraint: !1, + center: s, + resolution: a[0] + }); + c.fit(i, { size: $.getSize() }), $.setView(c), rg.setView($h(o, i)); + let l = _g.getActive(), u = vg.getActive(); + fg.setMap(null), gg.setMap(null), fg = dg(o), gg = hg(o), l && fg.setMap($), u && gg.setMap($), Lh.setSource(n), Xh.setSource(n), Og(), window.graticule = fg, window.screenSpaceGraticule = gg, yg(!0), Cg(), Jh(); +} +function Eg() { + let e = []; + Lh.getSource() !== null && e.push({ + id: "slide", + name: Nh(Ah ?? "slide"), + layer: Lh + }); + let t = Object.entries(jh).map(([e, t]) => ({ + id: e, + name: e, + layer: t + })).sort((e, t) => (e.layer.getZIndex() ?? 0) - (t.layer.getZIndex() ?? 0)); + return e.push(...t), e; +} +function Dg(e, t) { + if (e === "slide") return; + let n = Eg().filter((e) => e.id !== "slide"), r = n.findIndex((t) => t.id === e); + if (r === -1) return; + let i = t === "up" ? r - 1 : r + 1; + if (i < 0 || i >= n.length) return; + let a = n[r].layer, o = n[i].layer, s = a.getZIndex() ?? 0, c = o.getZIndex() ?? 0; + a.setZIndex(c), o.setZIndex(s), Og(); +} +function Og() { + wh.replaceChildren(); + let e = Eg(), t = e.filter((e) => e.id !== "slide"); + if (e.length === 0) { + let e = document.createElement("div"); + e.className = "layer-editor-empty", e.textContent = "No layers loaded", wh.appendChild(e); + return; + } + e.forEach(({ id: e, name: n, layer: r }) => { + let i = document.createElement("div"); + i.className = "layer-editor-item"; + let a = document.createElement("div"); + a.className = "layer-editor-item-header"; + let o = document.createElement("input"); + o.className = "layer-editor-visibility", o.type = "checkbox", o.checked = r.getVisible(), o.title = `Toggle ${n}`, o.addEventListener("change", () => { + r.setVisible(o.checked); + }); + let s = document.createElement("span"); + if (s.className = "layer-editor-name", s.textContent = n, s.title = n, a.append(o, s), e !== "slide") { + let r = t.findIndex((t) => t.id === e), i = document.createElement("div"); + i.className = "layer-editor-order"; + let o = document.createElement("button"); + o.type = "button", o.title = "Move layer up", o.innerHTML = "", o.disabled = r === 0, o.addEventListener("click", () => { + Dg(e, "up"); + }); + let s = document.createElement("button"); + s.type = "button", s.title = "Move layer down", s.innerHTML = "", s.disabled = r === t.length - 1, s.addEventListener("click", () => { + Dg(e, "down"); + }); + let c = document.createElement("button"); + c.type = "button", c.title = `Remove ${n}`, c.innerHTML = "", c.addEventListener("click", () => { + Ag(e).catch((e) => { + console.error(e); + }); + }), i.append(o, s, c), a.appendChild(i); + } + let c = document.createElement("div"); + c.className = "layer-editor-opacity"; + let l = document.createElement("input"); + l.className = "layer-editor-slider", l.type = "range", l.min = "0", l.max = "1", l.step = "0.05", l.value = r.getOpacity().toString(); + let u = document.createElement("span"); + u.className = "layer-editor-value", u.textContent = `${Math.round(r.getOpacity() * 100)}%`, l.addEventListener("input", () => { + let e = Number(l.value); + r.setOpacity(e), u.textContent = `${Math.round(e * 100)}%`; + }), c.append(l, u), i.append(a, c), wh.appendChild(i); + }); +} +Og(); +async function kg(e) { + if (Eh === null || kh === null) throw Error("Dynamic overlay loading requires a loaded slide."); + let t = e.split(".").pop().toLowerCase(); + if (t === "npy" || t === "mha") throw Error("Registration overlays are not supported yet."); + let n = [ + "db", + "dat", + "geojson" + ].includes(t), r = Nh(e); + if (r === "slide") throw Error("The overlay name \"slide\" is reserved."); + let i = new FormData(); + i.append("overlay_path", e), i.append("layer_name", r); + let a = await fetch("/tileserver/overlay", { + method: "PUT", + body: i + }); + if (!a.ok) throw Error(`Failed to load overlay: ${e}`); + let o = await a.json(); + n ? Mh.add(r) : Mh.delete(r), Oh += 1; + let s = new dd({ + url: `/tileserver/layer/${encodeURIComponent(r)}/${Eh}/zoomify/{TileGroup}/{z}-{x}-{y}@1x.jpg?v=${Oh}`, + size: kh.slide_dimensions, + crossOrigin: "anonymous", + zDirection: -1 + }); + if (jh[r] !== void 0) jh[r].setSource(s), jh[r].setVisible(!0); + else { + let e = [Lh, ...Object.values(jh)], t = Math.max(...e.map((e) => e.getZIndex() ?? 0)), n = new Lu({ + title: r, + source: s, + opacity: .75 + }); + n.setZIndex(t + 1), jh[r] = n, $.addLayer(n), Ih.push(n); + } + return Og(), o; +} +async function Ag(e) { + let t = jh[e]; + if (t === void 0) throw Error(`Overlay is not loaded: ${e}`); + let n = t.getSource(); + if (t.setSource(null), !(await fetch(`/tileserver/overlay/${encodeURIComponent(e)}`, { method: "DELETE" })).ok) throw t.setSource(n), Error(`Failed to remove overlay: ${e}`); + $.removeLayer(t); + let r = Ih.indexOf(t); + r !== -1 && Ih.splice(r, 1), Mh.delete(e), delete jh[e], Og(); +} +async function jg(e) { + if (Mh.size === 0) throw Error("No annotation overlay is loaded."); + let t = new FormData(); + if (t.append("cmap", JSON.stringify({ + keys: Object.keys(e), + values: Object.values(e) + })), !(await fetch("/tileserver/cmap", { + method: "PUT", + body: t + })).ok) throw Error("Failed to update annotation colours."); + Oh += 1; + for (let e of Mh) { + let t = jh[e]; + if (t === void 0) continue; + let n = new dd({ + url: `/tileserver/layer/${encodeURIComponent(e)}/${Eh}/zoomify/{TileGroup}/{z}-{x}-{y}@1x.jpg?v=${Oh}`, + size: kh.slide_dimensions, + crossOrigin: "anonymous", + zDirection: -1 + }); + t.setSource(n); + } +} +Object.assign(window, { + clearOverlays: xg, + extent: Bh, + fullscreen: og, + graticule: fg, + graticuleToggle: _g, + layerSwitcher: sg, + layers: Ih, + layersData: Th, + loadOverlay: kg, + map: $, + mousePositionControl: ig, + overlayLayers: jh, + overviewMapControl: ng, + projection: Vh, + removeOverlay: Ag, + removeSlide: wg, + resolutions: zh, + rotate: ag, + scaleLineControl: Yh, + screenSpaceGraticule: gg, + screenSpaceGraticuleToggle: vg, + setAnnotationColors: jg, + switchSlide: Tg, + view: Wh +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes }); //#endregion diff --git a/tiatoolbox/data/visualization/static/openlayers/viewer_legacy.css b/tiatoolbox/data/visualization/static/openlayers/viewer_legacy.css index 8e7a4d4279..76ac53caa6 100644 --- a/tiatoolbox/data/visualization/static/openlayers/viewer_legacy.css +++ b/tiatoolbox/data/visualization/static/openlayers/viewer_legacy.css @@ -1,2 +1,2 @@ -:root,:host{--ol-background-color:white;--ol-accent-background-color:#f5f5f5;--ol-subtle-background-color:#80808040;--ol-partial-background-color:#ffffffbf;--ol-foreground-color:#333;--ol-subtle-foreground-color:#666;--ol-brand-color:#0af}.ol-box{box-sizing:border-box;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color);border-radius:2px}.ol-mouse-position{position:absolute;top:8px;right:8px}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;padding:2px;position:absolute;bottom:8px;left:8px}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-align:center;will-change:contents, width;border-top:none;margin:1px;font-size:10px;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{background-color:var(--ol-foreground-color);float:right;z-index:10;width:1px;height:15px}.ol-scale-step-text{z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:10px;position:absolute;bottom:-5px}.ol-scale-text{text-align:center;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:12px;position:absolute;bottom:25px}.ol-scale-singlebar{z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color);height:10px;position:relative}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset;overflow:hidden}.ol-viewport{touch-action:pan-x pan-y}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{background-color:var(--ol-subtle-background-color);border-radius:4px;position:absolute}.ol-zoom{top:.5em;left:.5em}.ol-rotate{transition:opacity .25s linear,visibility linear;top:.5em;right:.5em}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{top:.5em;right:.5em}.ol-control button{color:var(--ol-subtle-foreground-color);font-weight:700;font-size:inherit;text-align:center;background-color:var(--ol-background-color);border:none;border-radius:2px;width:1.375em;height:1.375em;margin:1px;padding:0;line-height:.4em;text-decoration:none;display:block}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{will-change:transform;font-weight:400;display:block}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-decoration:none}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;flex-flow:row-reverse;align-items:center;max-width:calc(100% - 1.3em);display:flex;bottom:.5em;right:.5em}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);margin:0;padding:1px .5em;font-size:12px}.ol-attribution li{list-style:none;display:inline}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{border-radius:4px 0 0;bottom:0;right:0}.ol-attribution.ol-uncollapsible img{max-height:1.6em;margin-top:-.2em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{height:200px;top:4.5em;left:.5em}.ol-zoomslider button{height:10px;position:relative}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{bottom:.5em;left:.5em}.ol-overviewmap.ol-uncollapsible{border-radius:0 4px 0 0;bottom:0;left:0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);width:150px;height:150px}.ol-overviewmap:not(.ol-collapsed) button{position:absolute;bottom:0;left:0}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.ol-overviewmap .ol-viewport:hover{cursor:pointer}.ol-control i{cursor:default}.ol-control.ol-bar{white-space:nowrap;min-width:1em;min-height:1em;position:absolute;top:.5em;left:50%;transform:translate(-50%)}.ol-control.ol-toggle .ol-option-bar{display:none}.ol-control.ol-bar .ol-control{vertical-align:middle;background-color:#0000;margin:0;padding:0;display:inline-block;position:relative;inset:auto;transform:none}.ol-control.ol-bar .ol-bar{position:static}.ol-control.ol-bar .ol-control button{outline:none;margin:2px 1px}.ol-control.ol-bar.ol-left{top:50%;left:.5em;transform:translateY(-50%)}.ol-control.ol-bar.ol-left .ol-control{display:block}.ol-control.ol-bar.ol-right{top:50%;left:auto;right:.5em;transform:translateY(-50%)}.ol-control.ol-bar.ol-right .ol-control{display:block}.ol-control.ol-bar.ol-bottom{top:auto;bottom:.5em}.ol-control.ol-bar.ol-top.ol-left,.ol-control.ol-bar.ol-top.ol-right{top:4.5em;transform:none}.ol-touch .ol-control.ol-bar.ol-top.ol-left,.ol-touch .ol-control.ol-bar.ol-top.ol-right{top:5.5em}.ol-control.ol-bar.ol-bottom.ol-left,.ol-control.ol-bar.ol-bottom.ol-right{top:auto;bottom:.5em;transform:none}.ol-control.ol-bar.ol-group{margin:1px 1px 1px 0}.ol-control.ol-bar.ol-right .ol-group,.ol-control.ol-bar.ol-left .ol-group{margin:1px 1px 0}.ol-control.ol-bar.ol-group button{border-radius:0;margin:0 0 0 1px}.ol-control.ol-bar.ol-right.ol-group button,.ol-control.ol-bar.ol-left.ol-group button,.ol-control.ol-bar.ol-right .ol-group button,.ol-control.ol-bar.ol-left .ol-group button{margin:0 0 1px}.ol-control.ol-bar.ol-group .ol-control:first-child>button{border-radius:5px 0 0 5px}.ol-control.ol-bar.ol-group .ol-control:last-child>button{border-radius:0 5px 5px 0}.ol-control.ol-bar.ol-left.ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-right.ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-left .ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-right .ol-group .ol-control:first-child>button{border-radius:5px 5px 0 0}.ol-control.ol-bar.ol-left.ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-right.ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-left .ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-right .ol-group .ol-control:last-child>button{border-radius:0 0 5px 5px}.ol-control.ol-bar .ol-rotate{opacity:1;visibility:visible}.ol-control.ol-bar .ol-rotate button{display:block}.ol-control.ol-bar .ol-toggle.ol-active>button,.ol-control.ol-bar .ol-toggle.ol-active button:hover{color:#fff;background-color:#0af}.ol-control.ol-toggle button:disabled{background-color:#ccc}.ol-control.ol-bar .ol-control.ol-option-bar{background-color:#fffc;border-radius:0;margin:5px 0;display:none;position:absolute;top:100%;left:0;box-shadow:0 0 0 1px #003c8880,1px 1px 2px #00000080}.ol-control.ol-bar .ol-option-bar:before{content:"";pointer-events:none;border:.5em solid #0000;border-bottom-color:#003c8880;position:absolute;bottom:100%;left:.3em}.ol-control.ol-bar .ol-option-bar .ol-control{display:table-cell}.ol-control.ol-bar .ol-control .ol-bar{display:none}.ol-control.ol-bar .ol-control.ol-active>.ol-option-bar{display:block}.ol-control.ol-bar .ol-control.ol-collapsed ul{display:none}.ol-control.ol-bar .ol-control.ol-text-button>div:hover,.ol-control.ol-bar .ol-control.ol-text-button>div{color:#003c8880;background-color:#0000;width:auto;min-width:1.375em;margin:0}.ol-control.ol-bar .ol-control.ol-text-button{border-left:1px solid #003c88cc;border-radius:0;font-size:.9em}.ol-control.ol-bar .ol-control.ol-text-button:first-child{border-left:0}.ol-control.ol-bar .ol-control.ol-text-button>div{padding:.11em .3em;font-family:Arial,Helvetica,sans-serif;font-size:1.14em;font-weight:400}.ol-control.ol-bar .ol-control.ol-text-button div:hover{color:#003c88}.ol-control.ol-bar.ol-bottom .ol-option-bar{top:auto;bottom:100%}.ol-control.ol-bar.ol-bottom .ol-option-bar:before{border-color:#003c8880 #0000 #0000;top:100%;bottom:auto}.ol-control.ol-bar.ol-left .ol-option-bar{margin:0 5px;top:0;bottom:auto;left:100%}.ol-control.ol-bar.ol-left .ol-option-bar:before{border-color:#0000 #003c8880 #0000 #0000;inset:.3em 100% auto auto}.ol-control.ol-bar.ol-right .ol-option-bar{margin:0 5px;inset:0 100% auto auto}.ol-control.ol-bar.ol-right .ol-option-bar:before{border-color:#0000 #0000 #0000 #003c8880;top:.3em;bottom:auto;left:100%}.ol-control.ol-bar.ol-left .ol-option-bar .ol-option-bar,.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar{margin:5px 0;inset:100% auto auto .3em}.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar{left:auto;right:.3em}.ol-control.ol-bar.ol-left .ol-option-bar .ol-option-bar:before,.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar:before{border-color:#0000 #0000 #003c8880;inset:auto auto 100% .3em}.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar:before{left:auto;right:.3em}.ol-control-title{position:absolute;top:0;left:0;right:0}.ol-center-position{background-color:#fffc;padding:.1em 1em;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.ol-compassctrl{display:none;top:1em;left:auto;right:1em}.ol-compassctrl.ol-visible{display:block!important}.ol-ext-dialog{opacity:0;z-index:1000;background-color:#00000080;width:150%;height:100%;transition:opacity .2s,top 0s .2s;position:fixed;top:-100%;left:0;pointer-events:none!important}.ol-ext-dialog.ol-visible{opacity:1;transition:opacity .2s,top;top:0;pointer-events:all!important}.ol-viewport .ol-ext-dialog{position:absolute}.ol-ext-dialog>form>h2{text-overflow:ellipsis;white-space:nowrap;margin:0 .5em .5em 0;display:none;overflow:hidden}.ol-ext-dialog>form.ol-title>h2{display:block}.ol-ext-dialog>form{box-sizing:border-box;background-color:#fff;border:1px solid #333;min-width:5em;max-width:60%;min-height:3em;max-height:100%;padding:1em;transition:top .2s,transform .2s;position:absolute;top:0;left:33.33%;overflow:hidden auto;transform:translate(-50%,-30%);box-shadow:3px 3px 4px #00000080}dialog.ol-ext-dialog>form{width:max-content;max-width:90%;left:50%}.ol-ext-dialog>form.ol-closebox{padding-top:1.5em}.ol-ext-dialog>form.ol-title{padding-top:1em}.ol-ext-dialog>form.ol-button{padding-bottom:.5em}.ol-ext-dialog.ol-zoom>form{top:30%;transform:translate(-50%,-30%)scale(0)}.ol-ext-dialog.ol-visible>form{top:30%}.ol-ext-dialog.ol-zoom.ol-visible>form{transform:translate(-50%,-30%)scale(1)}.ol-ext-dialog>form .ol-content{overflow:hidden auto}.ol-ext-dialog>form .ol-closebox{cursor:pointer;width:1em;height:1em;display:none;position:absolute;top:.5em;right:.5em}.ol-ext-dialog>form.ol-closebox .ol-closebox{display:block}.ol-ext-dialog>form .ol-closebox:before,.ol-ext-dialog>form .ol-closebox:after{content:"";background-color:currentColor;border-radius:.1em;width:1em;height:.1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-ext-dialog>form .ol-closebox:before{transform:translate(-50%,-50%)rotate(-45deg)}.ol-ext-dialog>form .ol-buttons{text-align:right;overflow-x:hidden}.ol-ext-dialog>form .ol-buttons input{color:#003c88;cursor:pointer;background:0 0;border:0;border-radius:.25em;margin-top:.5em;padding:.5em;font-size:1em}.ol-ext-dialog>form .ol-buttons input:hover{background-color:#003c881a}.ol-ext-dialog>form .ol-buttons input[type=submit]{font-weight:700}.ol-ext-dialog .ol-progress-message{text-align:center;padding-bottom:.5em;font-size:.9em}.ol-ext-dialog .ol-progress-bar{border:1px solid #369;width:20em;max-width:100%;height:1em;margin:.5em auto 0;padding:2px;overflow:hidden}.ol-ext-dialog .ol-progress-bar>div{background:#369;width:50%;height:100%;transition:width .3s}.ol-ext-dialog .ol-progress-bar>div.notransition{transition:unset}.ol-ext-dialog.ol-fullscreen-dialog form{text-align:center;max-width:calc(66.6% - 2em);-webkit-box-shadow:none;box-shadow:none;color:#fff;background:0 0;border:none;inset:1em;transform:none}.ol-ext-dialog.ol-fullscreen-dialog form .ol-closebox{font-size:2em;top:0;right:0}.ol-ext-dialog.ol-fullscreen-dialog .ol-closebox:before,.ol-ext-dialog.ol-fullscreen-dialog .ol-closebox:after{border:.1em solid}.ol-ext-dialog.ol-fullscreen-dialog img,.ol-ext-dialog.ol-fullscreen-dialog video{max-width:100%}body>.ol-ext-dialog .ol-content{max-height:calc(100vh - 10em)}body>.ol-ext-dialog>form{overflow:visible}.ol-editbar .ol-button button{box-sizing:border-box;vertical-align:middle;font-style:normal;display:inline-block;position:relative}.ol-editbar .ol-button button:before,.ol-editbar .ol-button button:after{content:"";box-sizing:border-box;background-color:currentColor;border-width:0;position:absolute}.ol-editbar .ol-button button:focus{outline:none}.ol-editbar .ol-selection>button:before{background-color:#0000;border:.25em solid #0000;border-top:0 solid;border-bottom:.65em solid;width:.6em;height:1em;top:.35em;left:.5em;transform:translate(-50%,-50%)rotate(-30deg);box-shadow:0 .6em 0 -.23em}.ol-editbar .ol-selection0>button:after{background-color:#0000;border:.05em solid #0000;border-top:0 solid;border-bottom:.7em solid;width:.28em;height:.6em;top:.5em;left:.7em;transform:rotate(-45deg)}.ol-editbar .ol-delete button:after,.ol-editbar .ol-delete button:before{width:1em;height:.2em;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-editbar .ol-delete button:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-editbar .ol-info button:before{border-radius:.03em;width:.25em;height:.6em;top:.47em;left:50%;transform:translate(-50%)}.ol-editbar .ol-info button:after{border-radius:.03em;width:.25em;height:.2em;top:.12em;left:50%;transform:translate(-50%);box-shadow:-.1em .35em,-.1em .82em,.1em .82em}.ol-editbar .ol-drawpoint button:before{background-color:#0000;border:.15em solid;border-radius:50%;width:.7em;height:.7em;top:.2em;left:50%;transform:translate(-50%)}.ol-editbar .ol-drawpoint button:after{background-color:#0000;border:.2em solid #0000;border-top:.4em solid;border-bottom:0 solid;width:.4em;height:.4em;top:.8em;left:50%;transform:translate(-50%)}.ol-editbar .ol-drawline>button:before,.ol-editbar .ol-drawpolygon>button:before,.ol-editbar .ol-drawhole>button:before{background-color:#0000;border:.13em solid;border-width:.2em .13em .09em;width:.8em;height:.8em;top:.2em;left:.25em;transform:rotate(10deg)perspective(1em)rotateX(40deg)}.ol-editbar .ol-drawline>button:before{border-bottom:0}.ol-editbar .ol-drawline>button:after,.ol-editbar .ol-drawhole>button:after,.ol-editbar .ol-drawpolygon>button:after{width:.3em;height:.3em;top:.2em;left:.25em;box-shadow:-.2em .55em,.6em .1em,.65em .7em}.ol-editbar .ol-drawhole>button:after{box-shadow:-.2em .55em,.6em .1em,.65em .7em,.25em .35em}.ol-editbar .ol-offset>button i,.ol-editbar .ol-transform>button i{width:.9em;height:.9em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-editbar .ol-offset>button i{width:.8em;height:.8em}.ol-editbar .ol-offset>button i:before,.ol-editbar .ol-transform>button i:before,.ol-editbar .ol-transform>button i:after{content:"";background-color:currentColor;width:.1em;height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg);box-shadow:.5em 0 0 .1em,-.5em 0 0 .1em}.ol-editbar .ol-offset>button i:before{box-shadow:.45em 0 0 .1em,-.45em 0 0 .1em}.ol-editbar .ol-transform>button i:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-editbar .ol-split>button:before{border-radius:50%;width:.3em;height:.3em;top:.81em;left:.75em;box-shadow:.1em -.4em,-.15em -.25em}.ol-editbar .ol-split>button:after{background-color:#0000;border:.2em solid;border-width:0 .2em .2em 0;border-radius:.1em;width:.8em;height:.8em;top:.15em;left:-.1em;transform:rotate(20deg)scaleY(.6)rotate(-45deg)}.ol-editbar .ol-drawregular>button:before{background-color:#0000;border:.1em solid;width:.9em;height:.9em;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div{cursor:pointer;vertical-align:text-bottom;border:.5em solid #0000;border-color:#0000 currentColor;display:inline-block}.ol-editbar .ol-drawregular .ol-bar:before,.ol-control.ol-bar.ol-editbar .ol-drawregular .ol-bar{left:50%;transform:translate(-50%)}.ol-editbar .ol-drawregular .ol-bar .ol-text-button{text-align:center;min-width:6em}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div:first-child{border-width:.5em .5em .5em 0;margin:0 .5em 0 0}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div:last-child{border-width:.5em 0 .5em .5em;margin:0 0 0 .5em}.ol-feature-list{position:relative}.ol-control.ol-feature-list{width:100%;position:absolute;bottom:0;left:0}.ol-control.ol-feature-list>button:before{content:"";background-image:linear-gradient(90deg,currentColor,#0000);width:60%;height:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 2.5px}.ol-control.ol-feature-list.ol-collapsed{width:auto;bottom:.5em;left:.5em}.ol-feature-list .ol-content{clear:both;background-color:#f4f6f8}.ol-feature-list.ol-collapsed .ol-content>*{display:none}.ol-feature-list .ol-header{position:relative;overflow:hidden}.ol-feature-list.ol-collapsed .ol-header{display:block}.ol-control.ol-feature-list>button,.ol-control.ol-feature-list.ol-collapsed .ol-content{display:none}.ol-control.ol-feature-list.ol-collapsed>button{display:block}.ol-feature-list .ol-sizer{cursor:row-resize;background-color:#ccc;border:1px solid #f4f6f8;border-width:1px 0;width:100%;height:1px;position:relative}.ol-feature-list.ol-bottom .ol-sizer{position:absolute;bottom:0}.ol-feature-list .ol-sizer:before{content:"";z-index:1;background-color:#ddd;border:3px solid #0000;border-width:3px 1.5em;border-radius:2px;width:1.5em;height:4px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 -1px #aaa,inset 0 1px #aaa}.ol-feature-list .ol-sizer:hover:before{background-color:#ccc}.ol-feature-list .ol-content .ol-header p{vertical-align:middle;white-space:nowrap;text-overflow:ellipsis;width:calc(100% - 2em);margin:.1em .25em;display:inline-block;overflow:hidden}.ol-feature-list .ol-content .ol-header .ol-buttons{position:absolute;top:50%;right:0;transform:translateY(-50%)}.ol-feature-list .ol-content .ol-header button{vertical-align:middle;box-sizing:border-box;background:0 0;border:0;width:1em;height:1em;margin:0 .2em;position:relative}.ol-feature-list .ol-content .ol-header button.ol-closebox:before,.ol-feature-list .ol-content .ol-header button.ol-closebox:after{content:"";background:currentColor;width:.1em;height:1em;font-style:normal;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-feature-list .ol-content .ol-header button.ol-closebox:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox{border:1px solid}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox:before{transform:translate(-50%,-50%)rotate(90deg)}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox:after{display:none}.ol-feature-list .ol-scroll-container{height:10em;min-height:3em;overflow:auto}.ol-feature-list .ol-scroll-container:focus{outline:unset}.ol-feature-list table{border-collapse:collapse;white-space:nowrap;background-color:#fff;position:relative}.ol-feature-list table thead{background-color:#f4f6f8;position:sticky;top:0;overflow:hidden}.ol-feature-list table tr{box-sizing:border-box;height:1.4em}.ol-feature-list table tbody tr:hover{cursor:pointer;background-color:#eee}.ol-feature-list table tbody tr.ol-selected{background-color:#eee}.ol-feature-list table td{border:0 solid #ddd;border-width:0 0 1px 1px;width:100px;overflow:hidden}.ol-feature-list table td.number{text-align:right}.ol-feature-list table td.undefined{text-align:center;background-color:#fafafa}.ol-feature-list table tr:hover td,.ol-feature-list table .ol-selected td{background-color:#0000}.ol-feature-list thead td{position:relative}.ol-feature-list thead td.sort{padding-right:1.5em}.ol-feature-list thead td p{margin:0;display:inline-block}.ol-feature-list table td button{background-color:#0000;border:0;width:1.2em;height:1.4em;margin:.1em 0;padding:0;position:absolute;top:0;right:0}.ol-feature-list thead td button.sort:before{content:"⇅";cursor:pointer;font-size:1em;font-style:normal;font-weight:400;line-height:1em}.ol-feature-list thead td button.sortup:before{content:"↧"}.ol-feature-list thead td button.sortdown:before{content:"↥"}.ol-gauge{background-color:#ffffff80;padding:.1em .5em;top:.5em;left:50%;transform:translate(-50%)}.ol-gauge>*{vertical-align:middle;display:inline-block}.ol-gauge>span{margin:0 .5em 0 0}.ol-gauge>div{border:1px solid #003c8880;border-radius:3px;width:200px;padding:1px;display:inline-block}.ol-gauge button{max-width:100%;height:.8em;margin:0}.ol-control.ol-bookmark{background-color:#ffffff80;top:.5em;left:3em}.ol-control.ol-bookmark button{position:relative}.ol-control.ol-bookmark>button:before{content:"";border:5px solid;border-top-width:10px;border-bottom:4px solid #0000;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-bookmark>div{min-width:5em;display:block}.ol-control.ol-bookmark.ol-collapsed>div{display:none}.ol-control.ol-bookmark input{margin:0 .5em .5em;padding:0 .5em;font-size:.9em}.ol-control.ol-bookmark ul{min-width:10em;margin:0 0 .5em;padding:0;list-style:none}.ol-control.ol-bookmark li{color:#003c88cc;cursor:default;clear:both;padding:0 .2em 0 .5em;font-size:.9em}.ol-control.ol-bookmark li:hover{color:#fff;background-color:#003c8880}.ol-control.ol-bookmark>div button{float:right;cursor:pointer;background-color:#0000;border-radius:0;width:1em;height:.8em}.ol-control.ol-bookmark>div button:before{content:"⨯";color:#936;border-radius:0;font-size:1.2em;line-height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-bookmark ul li button,.ol-bookmark input{display:none}.ol-bookmark.ol-editable ul li button,.ol-bookmark.ol-editable input{display:block}.ol-control.ol-geobt{inset:auto .5em 3em auto}.ol-touch .ol-control.ol-geobt{bottom:3.5em}.ol-control.ol-geobt button:before{content:"";background:0 0;border:.16em solid;border-radius:50%;width:.4em;height:.4em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-geobt button:after{content:"";background:0 0;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.42em 0,-.42em 0,0 .42em,0 -.42em}.ol-control.ol-bar.ol-geobar .ol-control{vertical-align:middle;display:inline-block}.ol-control.ol-bar.ol-geobar .ol-bar{display:none}.ol-bar.ol-geobar.ol-active .ol-bar{display:inline-block}.ol-bar.ol-geobar .geolocBt button:before,.ol-bar.ol-geobar .geolocBt button:after{content:"";border-top:.3em solid;border-bottom:0 solid #0000;border-left:.2em solid #0000;border-right:.8em solid #0000;font-size:1.2em;display:block;position:absolute;top:.45em;left:.15em;transform:rotate(-30deg)}.ol-bar.ol-geobar .geolocBt button:after{border-width:0 .8em .3em .2em;border-color:#0000 #0000 currentColor;transform:rotate(-61deg)}.ol-bar.ol-geobar .startBt button:before{content:"";background-color:#800;border-radius:50%;width:1em;height:1em;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-bar.ol-geobar .pauseBt button:before,.ol-bar.ol-geobar .pauseBt button:after{content:"";background-color:currentColor;width:.25em;height:1em;display:block;position:absolute;top:50%;left:35%;transform:translate(-50%,-50%)}.ol-bar.ol-geobar .pauseBt button:after{left:65%}.ol-control.ol-bar.ol-geobar .centerBt,.ol-control.ol-bar.ol-geobar .pauseBt,.ol-bar.ol-geobar.pauseTrack .startBt,.ol-bar.ol-geobar.centerTrack .startBt,.ol-bar.ol-geobar.centerTrack.pauseTrack .pauseBt,.ol-bar.ol-geobar.centerTrack .pauseBt{display:none}.ol-bar.ol-geobar.pauseTrack .pauseBt,.ol-bar.ol-geobar.centerTrack .centerBt{display:inline-block}.ol-control.ol-globe{opacity:.7;transform-origin:0 100%;border-radius:50%;position:absolute;bottom:.5em;left:.5em;transform:scale(.5)}.ol-control.ol-globe:hover{opacity:.9}.ol-control.ol-globe .panel{cursor:pointer;background-color:#fff;border-radius:50%;width:170px;height:170px;display:block;overflow:hidden;box-shadow:0 0 10px 5px #ffffff80}.ol-control.ol-globe .panel .ol-viewport{border-radius:50%}.ol-control.ol-globe .ol-pointer{z-index:1;background-color:#fff;border:10px solid red;border-radius:50%;width:10px;height:10px;transition:opacity .15s,top,left;display:block;position:absolute;top:50%;left:50%;transform:translate(-15px,-40px)}.ol-control.ol-globe .ol-pointer.hidden{opacity:0;transition:opacity .15s,top 3s,left 5s}.ol-control.ol-globe .ol-pointer:before{content:"";border-radius:50%;width:0;height:0;display:block;position:absolute;top:23px;left:0;box-shadow:6px 6px 10px 5px #000}.ol-control.ol-globe .ol-pointer:after{content:"";border:10px solid #0000;border-top:20px solid red;border-bottom:0 solid red;width:0;height:0;display:block;position:absolute;top:100%;left:-50%}.ol-control.ol-globe .panel:before{content:"";z-index:1;border-radius:50%;width:100%;height:100%;display:block;position:absolute;top:0;left:0;box-shadow:inset -20px -20px 80px 2px #000000b3}.ol-control.ol-globe .panel:after{content:"";z-index:1;border-radius:50%;width:20%;height:0;display:block;position:absolute;top:20%;left:23%;transform:rotate(-40deg);box-shadow:0 0 20px 7px #fff}.ol-control.ol-globe.ol-collapsed .panel{display:none}.ol-control-top.ol-globe{transform-origin:0 0;top:5em;bottom:auto}.ol-control-right.ol-globe{transform-origin:100% 100%;left:auto;right:.5em}.ol-control-right.ol-control-top.ol-globe{transform-origin:100% 0;left:auto;right:.5em}.ol-gridreference{background:#fff;border:1px solid #000;max-height:100%;top:0;right:0;overflow:auto}.ol-gridreference input{width:100%}.ol-gridreference ul{margin:0;padding:0;list-style:none}.ol-gridreference li{cursor:pointer;padding:0 .5em}.ol-gridreference ul li:hover{background-color:#ccc}.ol-gridreference li.ol-title,.ol-gridreference li.ol-title:hover{color:#fff;cursor:default;background:#003c8880}.ol-gridreference ul li .ol-ref{margin-left:.5em}.ol-gridreference ul li .ol-ref:before{content:"("}.ol-gridreference ul li .ol-ref:after{content:")"}.ol-control.ol-imageline{border-radius:0;padding:0;transition:all .3s;bottom:0;left:0;right:0;overflow:visible}.ol-control.ol-imageline.ol-collapsed{transform:translateY(100%)}.ol-imageline>div{white-space:nowrap;scroll-behavior:smooth;width:100%;height:4em;position:relative;overflow:hidden}.ol-imageline>div.ol-move{scroll-behavior:unset}.ol-control.ol-imageline button{margin:.65em;position:absolute;top:-1em;transform:translateY(-100%);box-shadow:0 0 0 .15em #fff6}.ol-control.ol-imageline button:before{content:"";border:.15em solid;border-width:.15em .15em 0 0;width:.4em;height:.4em;position:absolute;top:40%;left:50%;transform:translate(-50%,-50%)rotate(135deg)}.ol-control.ol-imageline.ol-collapsed button:before{top:60%;transform:translate(-50%,-50%)rotate(-45deg)}.ol-imageline,.ol-imageline:hover{background-color:#000000bf}.ol-imageline.ol-arrow:after,.ol-imageline.ol-arrow:before{content:"";z-index:1;opacity:.8;pointer-events:none;border:1em solid #fff;border-left:0 solid #000;border-right:.6em solid #000;position:absolute;top:50%;left:.2em;transform:translateY(-50%);box-shadow:-.6em 0 0 1em #fff}.ol-imageline.ol-arrow:after{border-width:1em 0 1em .6em;left:auto;right:.2em;box-shadow:.6em 0 0 1em #fff}.ol-imageline.ol-scroll0.ol-arrow:before,.ol-imageline.ol-scroll1.ol-arrow:after{display:none}.ol-imageline .ol-image{cursor:pointer;height:100%;display:inline-block;position:relative}.ol-imageline img{box-sizing:border-box;opacity:0;border:.25em solid #0000;max-height:100%;transition:all 1s}.ol-imageline img.ol-loaded{opacity:1}.ol-imageline .ol-image.select{background-color:#fff}.ol-imageline .ol-image span{color:#fff;white-space:normal;text-align:center;background-color:#00000080;width:125%;max-height:2.4em;font-size:.8em;line-height:1.2em;display:none;position:absolute;bottom:0;left:50%;overflow:hidden;transform:translate(-50%)scaleX(.8)}.ol-imageline .ol-image:hover span{display:block}.ol-control.ol-routing.ol-isochrone .ol-method-time,.ol-control.ol-routing.ol-isochrone .ol-method-distance,.ol-control.ol-routing.ol-isochrone>button{position:relative}.ol-control.ol-routing.ol-isochrone .ol-method-time:before,.ol-control.ol-routing.ol-isochrone>button:before{content:"";clip:unset;border:.1em solid;border-radius:50%;width:.8em;height:.8em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 -.5em 0 -.35em,.4em -.35em 0 -.35em}.ol-control.ol-routing.ol-isochrone .ol-method-time:after,.ol-control.ol-routing.ol-isochrone>button:after{content:"";-webkit-box-shadow:none;box-shadow:none;box-sizing:border-box;clip:unset;border:.3em solid #0000;border-right-color:currentColor;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-60deg)}.ol-control.ol-routing.ol-isochrone .ol-method-distance:before{content:"";box-sizing:border-box;border:.1em solid;width:1em;height:.5em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-30deg)}.ol-control.ol-routing.ol-isochrone .ol-method-distance:after{content:"";width:.1em;height:.15em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-30deg);box-shadow:inset 0 -.15em,0 .1em,.25em .1em,-.25em .1em}.ol-control.ol-routing.ol-isochrone .ol-direction-direct:before,.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:before{content:"";box-sizing:border-box;border:.1em solid;border-radius:50%;width:.3em;height:.3em;position:absolute;top:50%;left:30%;transform:translate(-50%,-50%);box-shadow:.25em 0 0 -.05em}.ol-control.ol-routing.ol-isochrone .ol-direction-direct:after,.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:after{content:"";border:.4em solid #0000;border-left-color:currentColor;border-right:0 solid;position:absolute;top:50%;left:70%;transform:translate(-50%,-50%)}.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:after{border-width:.4em .4em .4em 0}.ol-control.ol-isochrone.ol-collapsed .content{display:none}.ol-control.ol-isochrone input[type=number]{text-align:right;width:3em;margin:0 .1em}.ol-control.ol-isochrone .ol-distance input[type=number]{width:5em}.ol-isochrone .ol-time,.ol-isochrone .ol-distance{display:none}.ol-isochrone .ol-time.selected,.ol-isochrone .ol-distance.selected{display:block}.ol-control.ol-layerswitcher-popup{text-align:left;position:absolute;top:3em;right:.5em}.ol-control.ol-layerswitcher-popup .panel{clear:both;background:#fff}.ol-layerswitcher-popup .panel{margin:0;padding:.25em;list-style:none;overflow:hidden}.ol-layerswitcher-popup .panel ul{padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher-popup.ol-collapsed .panel{display:none}.ol-layerswitcher-popup.ol-forceopen .panel{display:block}.ol-layerswitcher-popup button{float:right;background-color:#fff;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACE1BMVEX///8A//8AgICA//8AVVVAQID///8rVVVJtttgv98nTmJ2xNgkW1ttyNsmWWZmzNZYxM4gWGgeU2JmzNNr0N1Rwc0eU2VXxdEhV2JqytQeVmMhVmNoydUfVGUgVGQfVGQfVmVqy9hqy9dWw9AfVWRpydVry9YhVmMgVGNUw9BrytchVWRexdGw294gVWQgVmUhVWPd4N6HoaZsy9cfVmQgVGRrytZsy9cgVWQgVWMgVWRsy9YfVWNsy9YgVWVty9YgVWVry9UgVWRsy9Zsy9UfVWRsy9YgVWVty9YgVWRty9Vsy9aM09sgVWRTws/AzM0gVWRtzNYgVWRuy9Zsy9cgVWRGcHxty9bb5ORbxdEgVWRty9bn6OZTws9mydRfxtLX3Nva5eRix9NFcXxOd4JPeINQeIMiVmVUws9Vws9Vw9BXw9BYxNBaxNBbxNBcxdJexdElWWgmWmhjyNRlx9IqXGtoipNpytVqytVryNNrytZsjZUuX210k5t1y9R2zNR3y9V4lp57zth9zdaAnKOGoaeK0NiNpquV09mesrag1tuitbmj1tuj19uktrqr2d2svcCu2d2xwMO63N+7x8nA3uDC3uDFz9DK4eHL4eLN4eIyYnDX5OM5Z3Tb397e4uDf4uHf5uXi5ePi5+Xj5+Xk5+Xm5+Xm6OY6aHXQ19fT4+NfhI1Ww89gx9Nhx9Nsy9ZWw9Dpj2abAAAAWnRSTlMAAQICAwQEBgcIDQ0ODhQZGiAiIyYpKywvNTs+QklPUlNUWWJjaGt0dnd+hIWFh4mNjZCSm6CpsbW2t7nDzNDT1dje5efr7PHy9PT29/j4+Pn5+vr8/f39/f6DPtKwAAABTklEQVR4Xr3QVWPbMBSAUTVFZmZmhhSXMjNvkhwqMzMzMzPDeD+xASvObKePPa+ffHVl8PlsnE0+qPpBuQjVJjno6pZpSKXYl7/bZyFaQxhf98hHDKEppwdWIW1frFnrxSOWHFfWesSEWC6R/P4zOFrix3TzDFLlXRTR8c0fEEJ1/itpo7SVO9Jdr1DVxZ0USyjZsEY5vZfiiAC0UoTGOrm9PZLuRl8X+Dq1HQtoFbJZbv61i+Poblh/97TC7n0neCcK0ETNUrz1/xPHf+DNAW9Ac6t8O8WH3Vp98f5lCaYKAOFZMLyHL4Y0fe319idMNgMMp+zWVSybUed/+/h7I4wRAG1W6XDy4XmjR9HnzvDRZXUAYDFOhC1S/Hh+fIXxen+eO+AKqbs+wAo30zDTDvDxKoJN88sjUzDFAvBzEUGFsnADoIvAJzoh2BZ8sner+Ke/vwECuQAAAABJRU5ErkJggg==);background-position:50%;background-repeat:no-repeat;width:38px;height:38px}.ol-layerswitcher-popup li{color:#369;cursor:pointer;padding:.25em 1em;font-family:Trebuchet MS,Helvetica,sans-serif}.ol-layerswitcher-popup li.ol-header{display:none}.ol-layerswitcher-popup li.select,.ol-layerswitcher-popup li.ol-visible{color:#fff;background:#003c88b3}.ol-layerswitcher-popup li:hover{color:#fff;background:#003c88e6}.ol-control.ol-layerswitcher.ol-layer-shop{height:calc(100% - 4em);max-height:unset;background-color:#0000;max-width:16em;overflow:visible;pointer-events:none!important}.ol-control.ol-layerswitcher>*{pointer-events:auto}.ol-control.ol-layer-shop>button,.ol-control.ol-layer-shop .panel-container{box-shadow:0 0 0 3px #ffffff80}.ol-control.ol-layerswitcher.ol-layer-shop .panel-container{border:2px solid #369;border-width:2px 0;max-height:calc(100% - 6.5em);padding:0;overflow-y:scroll}.ol-control.ol-layer-shop .panel{box-sizing:border-box;margin:.25em .5em;padding:0}.ol-control.ol-layerswitcher.ol-layer-shop .panel-container.ol-scrolldiv{overflow:hidden}.ol-control.ol-layer-shop .ol-scroll{opacity:.5;background-color:#0000004d}.ol-layerswitcher.ol-layer-shop ul.panel li.ol-header{display:none}.ol-layerswitcher.ol-layer-shop ul.panel li{margin-right:0;padding-right:0}.ol-layerswitcher.ol-layer-shop .layerup{box-sizing:border-box;color:#003c88;background-color:#0000;border-radius:3px;width:1.4em;height:1.5em;margin:0}.ol-layerswitcher.ol-layer-shop .layerup:hover{background-color:#003c884d}.ol-layerswitcher.ol-layer-shop .layerup:before{background-color:currentColor;border:0;width:1em;height:2px;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 -4px,0 4px}.ol-layerswitcher.ol-layer-shop .layerup:after{content:unset}.ol-control.ol-layer-shop .ol-title-bar{box-sizing:border-box;text-overflow:ellipsis;white-space:nowrap;text-align:right;transform-origin:100% 0;background-color:#ffffff80;max-width:14.6em;height:calc(2.8em - 4px);padding:.7em .5em;font-size:.9em;transition:transform .1s,width;overflow:hidden;transform:scaleY(1.1)}.ol-control.ol-layer-shop:hover .ol-title-bar{background-color:#ffffffb3}.ol-control.ol-layer-shop.ol-collapsed .ol-title-bar{max-width:10em;transform:scale(.9,1.1)}.ol-control.ol-layer-shop.ol-forceopen .ol-title-bar{max-width:14.6em;transform:scaleY(1.1)}.ol-control.ol-layer-shop .ol-bar{clear:both;text-align:right;z-index:10;background-color:#fff;height:1.75em;position:relative;box-shadow:0 0 0 3px #ffffff80}.ol-control.ol-layer-shop.ol-collapsed .ol-scroll,.ol-control.ol-layer-shop.ol-collapsed .ol-bar{border-width:2px 0 0;display:none}.ol-control.ol-layer-shop.ol-forceopen .ol-scroll,.ol-control.ol-layer-shop.ol-forceopen .ol-bar{display:block}.ol-control.ol-layer-shop .ol-bar>*{vertical-align:middle;background-color:#0000;margin-top:.25em;font-size:.9em;display:inline-block}.ol-layer-shop .ol-bar .ol-button,.ol-touch .ol-layer-shop .ol-bar .ol-button{top:unset;left:unset;bottom:unset;right:unset;margin:0;position:relative}.ol-layer-shop .ol-bar button{color:#003c88;background-color:#fff}.ol-layer-shop .ol-bar button:hover{background-color:#003c8833}.ol-touch .ol-layerswitcher.ol-layer-shop>button{font-size:1.7em}.ol-touch .ol-layer-shop .ol-bar{height:2em}.ol-touch .ol-layer-shop .ol-control button{font-size:1.4em}.ol-touch .ol-control.ol-layer-shop .panel{max-height:calc(100% - 7em)}.ol-touch .ol-control.ol-layer-shop .panel label{height:1.8em}.ol-touch .ol-control.ol-layer-shop .panel label span{margin-left:.5em;padding-top:.25em}.ol-touch .ol-control.ol-layer-shop .panel label:before,.ol-touch .ol-control.ol-layer-shop .panel label:after{z-index:1;font-size:1.3em}.ol-control.ol-layerswitcher{text-align:left;box-sizing:border-box;max-height:calc(100% - 6em);position:absolute;top:3em;right:.5em;overflow:hidden}.ol-control.ol-layerswitcher .ol-switchertopdiv,.ol-control.ol-layerswitcher .ol-switcherbottomdiv{display:block}.ol-control.ol-layerswitcher.ol-collapsed .ol-switchertopdiv,.ol-control.ol-layerswitcher.ol-collapsed .ol-switcherbottomdiv{display:none}.ol-layerswitcher.ol-forceopen.ol-collapsed .ol-switchertopdiv,.ol-layerswitcher.ol-forceopen.ol-collapsed .ol-switcherbottomdiv{display:block}.ol-control.ol-layerswitcher .ol-switchertopdiv,.ol-control.ol-layerswitcher .ol-switcherbottomdiv{z-index:2;opacity:1;cursor:pointer;box-sizing:border-box;background:#fff;border-top:2px solid #0000;border-bottom:2px solid #369;height:45px;margin:0 2px;position:absolute;top:0;left:0;right:0}.ol-control.ol-layerswitcher .ol-switcherbottomdiv{border-top:2px solid #369;border-bottom:2px solid #0000;height:2em;top:auto;bottom:0}.ol-control.ol-layerswitcher .ol-switchertopdiv:before,.ol-control.ol-layerswitcher .ol-switcherbottomdiv:before{content:"";opacity:.8;border:10px solid #0000;width:0;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-layerswitcher .ol-switchertopdiv:hover:before,.ol-control.ol-layerswitcher .ol-switcherbottomdiv:hover:before{opacity:1}.ol-control.ol-layerswitcher .ol-switchertopdiv:before{border-top:0;border-bottom-color:#369}.ol-control.ol-layerswitcher .ol-switcherbottomdiv:before{border-top-color:#369;border-bottom:0}.ol-control.ol-layerswitcher .panel-container{clear:both;background-color:#fff;border-radius:0 0 2px 2px;padding:.5em .5em 0;display:block}.ol-layerswitcher .panel{margin:0;padding:0;font-family:Tahoma,Geneva,sans-serif;font-size:.9em;list-style:none;transition:top .3s;position:relative;top:0;overflow:hidden}.ol-layerswitcher .panel ul{clear:both;padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher input[type=radio],.ol-layerswitcher input[type=checkbox]{opacity:0;width:0;height:0;position:absolute}.ol-layerswitcher .panel li{-weblit-transition:-webkit-transform .2s linear;clear:both;box-sizing:border-box;border:1px solid #0000;transition:transform .2s linear;display:block}.ol-layerswitcher .panel li.ol-layer-select{background-color:#003c8833;margin:0 -.5em;padding:0 .5em}.ol-layerswitcher .panel li.drag{opacity:.5;transform:scale(.8)}.ol-dragover{opacity:.8;background:#33669980}.ol-layerswitcher .panel li.forbidden,.forbidden .ol-layerswitcher-buttons div,.forbidden .layerswitcher-opacity div{background:#ff000080;color:red!important}.ol-layerswitcher.drag,.ol-layerswitcher.drag *{cursor:not-allowed!important;cursor:no-drop!important}.ol-layerswitcher.drag .panel li.dropover,.ol-layerswitcher.drag .panel li.dropover *{cursor:pointer!important;cursor:n-resize!important;cursor:ns-resize!important;cursor:-webkit-grab!important;cursor:grab!important;cursor:-webkit-grabbing!important;cursor:grabbing!important}.ol-layerswitcher .panel li.dropover{background:#33669980}.ol-layerswitcher .panel li label{white-space:nowrap;text-overflow:ellipsis;max-width:12em;height:1.4em;padding:0 0 0 1.7em;display:inline-block;position:relative;overflow:hidden}.ol-layerswitcher .panel li label span{text-overflow:ellipsis;width:100%;height:100%;padding-right:.2em;display:inline-block;overflow:hidden}.ol-layerswitcher [type=radio]+label:before,.ol-layerswitcher [type=checkbox]+label:before,.ol-layerswitcher [type=radio]:checked+label:after,.ol-layerswitcher [type=checkbox]:checked+label:after{content:"";box-sizing:border-box;background:#fff;border:2px solid #369;width:1.2em;height:1.2em;position:absolute;top:.1em;left:.1em}.ol-layerswitcher li:has(>div.li-content>.ol-visibility:focus){border-color:#369;box-shadow:inset 0 0 0 1px #369}.ol-layerswitcher [type=radio]+label:before,.ol-layerswitcher [type=radio]+label:after{border-radius:50%}.ol-layerswitcher [type=radio]:checked+label:after{background:#369;width:.6em;height:.6em;margin:.3em}.ol-layerswitcher [type=checkbox]:checked+label:after{background:0 0;border:3px solid #369;border-width:0 3px 3px 0;width:.7em;height:1em;top:-.05em;left:.55em;transform:rotate(45deg);box-shadow:1px 0 1px 1px #fff}.ol-layerswitcher .panel li.ol-layer-hidden{opacity:.6}.ol-layerswitcher.ol-collapsed .panel-container{display:none}.ol-layerswitcher.ol-forceopen .panel-container{display:block}.ol-control.ol-layerswitcher .ol-counter{z-index:22;text-align:left;font-size:.65em;line-height:1.5em;display:none;position:absolute;top:0;right:.3em}.ol-control.ol-layerswitcher.ol-counter .ol-counter{display:block}.ol-control.ol-layer-shop .ol-counter{text-align:center;background:#fff;border-radius:50%;width:1.5em;line-height:1.5em;transform:translate(50%,-50%);box-shadow:.5px .5px 2px}.ol-layerswitcher-image>button,.ol-layerswitcher>button{float:right;z-index:10;background-color:#fff;font-size:1.7em;position:relative}.ol-touch .ol-layerswitcher-image>button,.ol-touch .ol-layerswitcher>button{font-size:2.5em}.ol-layerswitcher-image>button:before,.ol-layerswitcher-image>button:after,.ol-layerswitcher>button:before,.ol-layerswitcher>button:after{content:"";border-radius:.15em;width:.75em;height:.75em;position:absolute;transform:scaleY(.8)rotate(45deg)}.ol-layerswitcher-image>button:before,.ol-layerswitcher>button:before{background:#e2e4e1;top:.32em;left:.34em;box-shadow:.1em .1em #325158}.ol-layerswitcher-image>button:after,.ol-layerswitcher>button:after{background:#83bcc5 radial-gradient(circle at .85em .6em,#70b3be 0 .65em,#83bcc5 .65em);top:.22em;left:.34em}.ol-layerswitcher-buttons{float:right;text-align:right;display:block}.ol-layerswitcher-buttons>div{cursor:pointer;text-align:center;vertical-align:middle;color:#fff;background:#369;width:1em;height:1em;margin:2px;line-height:1em;display:inline-block;position:relative}.ol-layerswitcher .panel li>div{display:inline-block;position:relative}.ol-layerswitcher .ol-separator{width:0;height:0;margin:0;padding:0;display:block}.ol-layerswitcher .layerup{float:right;opacity:.5;cursor:move;cursor:ns-resize;background-color:#369;height:2.5em}.ol-layerswitcher .layerup:before,.ol-layerswitcher .layerup:after{content:"";border:.4em solid #0000;border-top-color:#fff;border-bottom:0 solid #fff;width:0;height:0;position:absolute;bottom:3px;left:.1em}.ol-layerswitcher .layerup:after{border-width:0 .4em .4em;top:3px;bottom:auto}.ol-layerswitcher .layerInfo{background:#369;border-radius:100%}.ol-layerswitcher .layerInfo:before{color:#fff;content:"i";text-align:center;width:1.25em;font-size:.8em;font-weight:700;display:block;position:absolute;top:0;left:0}.ol-layerswitcher .layerTrash{background:#369}.ol-layerswitcher .layerTrash:before{color:#fff;content:"×";text-align:center;margin:-.5em 0;font-size:1em;line-height:1em;position:absolute;top:50%;left:0;right:0}.ol-layerswitcher .layerExtent{background:#369}.ol-layerswitcher .layerExtent:before{content:"";border-bottom:1px solid #fff;border-right:1px solid #fff;display:block;position:absolute;inset:6px 2px 3px 6px}.ol-layerswitcher .layerExtent:after{content:"";border-top:1px solid #fff;border-left:1px solid #fff;display:block;position:absolute;inset:3px 6px 6px 2px}.ol-layerswitcher .expend-layers,.ol-layerswitcher .collapse-layers{background-color:#0000;margin:0 2px}.ol-layerswitcher .expend-layers:before,.ol-layerswitcher .collapse-layers:before{content:"";background:#369;width:100%;height:4px;margin-top:-2px;position:absolute;top:50%;left:0}.ol-layerswitcher .expend-layers:after{content:"";background:#369;width:4px;height:100%;margin-left:-2px;position:absolute;top:0;left:50%}.ol-layerswitcher .layerswitcher-opacity{box-sizing:border-box;background:#69c;cursor:pointer;background:linear-gradient(90deg,#003c8800,#003c8899);border:1px solid #369;border-radius:3px;width:120px;height:3px;margin:5px 1em 10px 7px;position:relative;box-shadow:1px 1px 1px #00000080}.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor,.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor:before{z-index:1;background:#003c8880;border-radius:50%;width:20px;height:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor:before{content:"";width:50%;height:50%;position:absolute}.ol-touch .ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor{width:26px;height:26px}.ol-layerswitcher .layerswitcher-opacity-label{font-size:.8em;display:none;position:absolute;bottom:5px;right:-2.5em}.ol-layerswitcher .layerswitcher-opacity-label:after{content:"%"}.ol-layerswitcher .layerswitcher-progress{width:120px;margin:-4px 1em 2px 7px;display:block}.ol-layerswitcher .layerswitcher-progress div{background-color:#369;width:0;height:2px;display:block}.ol-control.ol-layerswitcher-image{text-align:left;transition:all .2s;position:absolute;top:1em;right:.5em}.ol-control.ol-layerswitcher-image.ol-collapsed{transition:none;top:3em}.ol-layerswitcher-image .panel{margin:0;padding:.25em;list-style:none;overflow:hidden}.ol-layerswitcher-image .panel ul{padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher-image.ol-collapsed .panel{display:none}.ol-layerswitcher-image.ol-forceopen .panel{clear:both;display:block}.ol-layerswitcher-image button{float:right;display:none}.ol-layerswitcher-image.ol-collapsed button{display:block;position:relative}.ol-layerswitcher-image li{vertical-align:middle;cursor:pointer;background-color:#fff;border:3px solid #0000;border-radius:4px;width:64px;height:64px;margin:2px;display:inline-block;position:relative;overflow:hidden;box-shadow:1px 1px 4px #00000080}.ol-layerswitcher-image li.ol-layer-hidden{opacity:.5;border-color:#555}.ol-layerswitcher-image li.ol-header{display:none}.ol-layerswitcher-image li img{max-width:100%;position:absolute}.ol-layerswitcher-image li.select,.ol-layerswitcher-image li.ol-visible{border:3px solid red}.ol-layerswitcher-image li p{display:none}.ol-layerswitcher-image li:hover p{color:#fff;text-align:center;background-color:#00000080;height:1.2em;margin:0;font-family:Verdana,Geneva,sans-serif;font-size:.8em;display:block;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.ol-control.ol-legend{z-index:1;background-color:#fff9;max-width:90%;max-height:90%;bottom:.5em;left:.5em;overflow:hidden auto}.ol-control.ol-legend:hover{background-color:#fffc}.ol-control.ol-legend.ol-empty,.ol-control.ol-legend.ol-collapsed{overflow:hidden}.ol-control.ol-legend button{display:none;position:relative}.ol-control.ol-legend.ol-empty button,.ol-control.ol-legend.ol-collapsed button{display:block}.ol-control.ol-legend.ol-uncollapsible button{display:none}.ol-control.ol-legend>ul,.ol-control.ol-legend>canvas{margin:2px}.ol-control.ol-legend button.ol-closebox{cursor:pointer;z-index:1;background:0 0;display:block;position:absolute;top:0;right:0}.ol-control.ol-legend.ol-empty button.ol-closebox,.ol-control.ol-legend.ol-uncollapsible button.ol-closebox,.ol-control.ol-legend.ol-collapsed button.ol-closebox{display:none}.ol-control.ol-legend button.ol-closebox:before{content:"×";color:#003c8880;background:0 0;font-size:1.3em}.ol-control.ol-legend button.ol-closebox:hover:before{color:#003c88}.ol-control.ol-legend .ol-legendImg{display:block}.ol-control.ol-legend.ol-empty .ol-legendImg,.ol-control.ol-legend.ol-collapsed .ol-legendImg{display:none}.ol-control.ol-legend.ol-uncollapsible .ol-legendImg{display:block}.ol-control.ol-legend>button:first-child:before,.ol-control.ol-legend>button:first-child:after{content:"";background-color:currentColor;width:.2em;height:.2em;position:absolute;top:.25em;left:.2em;box-shadow:0 .35em,0 .7em}.ol-control.ol-legend button:first-child:after{width:.6em;height:.15em;top:.27em;left:.55em}ul.ol-legend{width:100%;margin:0;padding:0;list-style:none;position:absolute;top:0;left:0}.ol-control.ol-legend.ol-empty ul,.ol-control.ol-legend.ol-collapsed ul{display:none}.ol-control.ol-legend.ol-uncollapsible ul{display:block}ul.ol-legend li.ol-title{text-align:center;font-weight:700}ul.ol-legend li.ol-title>div:first-child{width:0!important}ul.ol-legend li{white-space:nowrap;padding:0;overflow:hidden}ul.ol-legend li div{vertical-align:top;display:inline-block}.ol-control.ol-legend .ol-legend{display:inline-block}.ol-control.ol-legend.ol-empty .ol-legend,.ol-control.ol-legend.ol-collapsed .ol-legend{display:none}.ol-control.ol-legend.ol-empty button{opacity:.4}.ol-control.ol-mapzone{text-align:left;box-sizing:border-box;max-height:calc(100% - 6em);position:absolute;top:.5em;right:.5em;overflow:hidden}.ol-control.ol-mapzone.ol-collapsed{top:3em}.ol-control.ol-mapzone button{float:right;margin-top:2.5em;position:relative}.ol-touch .ol-control.ol-mapzone button{margin-top:1.67em}.ol-control.ol-mapzone.ol-collapsed button{margin-top:0}.ol-control.ol-mapzone button i{border:.1em solid;border-radius:50%;width:.9em;height:.9em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-control.ol-mapzone button i:before{content:"";background-color:currentColor;border-radius:50%;width:.4em;height:.4em;position:absolute;top:.3em;left:.5em;box-shadow:.05em .3em 0 -.051em,-.05em -.35em 0 -.1em,-.5em -.35em 0 0,-.65em .1em 0 -.03em,-.65em -.05em 0 -.05em}.ol-mapzone>div{width:5em;height:5em;margin:0 .2em 0 0;display:inline-block;position:relative}.ol-mapzone>div:focus{box-shadow:0 0 0 .2em #369}.ol-control.ol-mapzone.ol-collapsed>div{display:none}.ol-mapzone>div p{color:#fff;text-align:center;transform-origin:0 0;cursor:default;width:160%;margin:0;font-family:Lucida Grande,Verdana,Geneva,Lucida,Arial,Helvetica,sans-serif;font-weight:700;position:absolute;bottom:0;overflow:hidden;transform:scaleX(.625)}.ol-notification{background:0 0;border:0;width:150%;margin:0;padding:0;bottom:0}.ol-notification>div,.ol-notification>div:hover{color:#fff;text-align:center;box-sizing:border-box;opacity:1;background-color:#000c;border-radius:4px 4px 0 0;min-width:5em;max-width:calc(66% - 4em);min-height:1em;max-height:5em;padding:.2em .5em;transition:all .3s;position:absolute;bottom:0;left:33.33%;transform:translate(-50%)}.ol-notification.ol-collapsed>div{opacity:0;bottom:-5em}.ol-notification a{color:#9cf;cursor:pointer}.ol-notification .ol-close,.ol-notification .ol-close:hover{padding-right:1.5em}.ol-notification .closeBox{position:absolute;top:0;right:.3em}.ol-notification .closeBox:before{content:"×"}.ol-overlay{color:#fff;box-sizing:border-box;z-index:1;opacity:0;cursor:default;pointer-events:none;z-index:9;background-color:#0006;width:100%;height:100%;padding:1em;transition:all .5s;display:none;position:absolute;top:0;left:0;overflow:hidden}.ol-overlay.slide-up{transform:translateY(100%)}.ol-overlay.slide-down{transform:translateY(-100%)}.ol-overlay.slide-left{transform:translate(-100%)}.ol-overlay.slide-right{transform:translate(100%)}.ol-overlay.zoom{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)}.ol-overlay.zoomout{transform:scale(3)}.ol-overlay.zoomrotate{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)rotate(360deg)}.ol-overlay.stretch{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scaleX(0)}.ol-overlay.stretchy{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scaleY(0)}.ol-overlay.wipe{opacity:1}.ol-overlay.flip{transform:perspective(600px)rotateY(180deg)}.ol-overlay.card{opacity:.5;transform:translate(-80%,100%)rotate(-.5turn)}.ol-overlay.book{transform-origin:10%;transform:perspective(600px)rotateY(-180deg)scaleX(.6)}.ol-overlay.book.visible{transform-origin:10%}.ol-overlay.ol-visible{opacity:1;pointer-events:all;inset:0;transform:none}.ol-overlay .ol-closebox{cursor:pointer;z-index:1;width:1em;height:1em;position:absolute;top:1em;right:1em}.ol-overlay .ol-closebox:before{content:"❌";text-align:center;vertical-align:middle;display:block}.ol-overlay .ol-fullscreen-image{position:absolute;inset:0}.ol-overlay .ol-fullscreen-image img{box-sizing:border-box;max-width:100%;max-height:100%;padding:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlay .ol-fullscreen-image.ol-has-title img{padding-bottom:3em}.ol-overlay .ol-fullscreen-image p{text-align:center;background-color:#00000080;margin:0;padding:.5em;position:absolute;bottom:0;left:0;right:0}.ol-control.ol-overview{text-align:left;position:absolute;bottom:.5em;left:.5em}.ol-control.ol-overview .panel{cursor:pointer;background-color:#fff;border:1px solid #369;width:150px;height:150px;margin:2px;display:block}.ol-overview:not(.ol-collapsed) button{z-index:2;position:absolute;bottom:2px;left:2px}.ol-control.ol-overview.ol-collapsed .panel{display:none}.ol-overview.ol-collapsed button:before{content:"»"}.ol-overview button:before{content:"«"}.ol-control-right.ol-overview{left:auto;right:.5em}.ol-control-right.ol-overview:not(.ol-collapsed) button{left:auto;right:2px}.ol-control-right.ol-overview.ol-collapsed button:before{content:"«"}.ol-control-right.ol-overview button:before{content:"»"}.ol-control-top.ol-overview{top:5em;bottom:auto}.ol-control-top.ol-overview:not(.ol-collapsed) button{top:2px;bottom:auto}.ol-permalink{position:absolute;top:.5em;right:2.5em}.ol-touch .ol-permalink{right:3em}.ol-permalink button i{width:1em;height:1em;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-permalink button i:before{content:"↗";box-sizing:border-box;border:0 solid;border-width:1px 0 0 1px;width:.3em;height:1em;padding:0 .2em;position:absolute;top:0;left:0}.ol-permalink button i:after{content:"";box-sizing:border-box;border:1px solid;border-width:0 1px 1px 0;width:1em;height:.3em;padding:.2em;position:absolute;bottom:0;right:0}.ol-control.ol-print{top:.5em;left:3em}.ol-control.ol-print button:before{content:"";width:.9em;height:.35em;position:absolute;top:50%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 .1em,inset .55em 0,0 .2em 0 -.1em}.ol-control.ol-print button:after{content:"";width:.7em;height:.6em;position:absolute;top:25%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 .15em}.ol-ext-print-dialog{width:100%;height:100%}.ol-ext-print-dialog>form .ol-closebox{z-index:1;color:#999;left:16.5em;right:auto}.ol-ext-print-dialog .ol-content[data-status=printing]{opacity:.5}.ol-ext-print-dialog .ol-content .ol-error{color:#ff0;text-align:center;background:#b00;margin:0 -1em;padding:1em .5em;font-weight:700;display:none}.ol-ext-print-dialog .ol-content[data-status=error] .ol-error{display:block}.ol-ext-print-dialog>form,.ol-ext-print-dialog.ol-visible>form{max-width:100%;max-height:100%;width:unset;background-color:#eee;padding:0;transition:none;inset:1em;transform:none}.ol-ext-print-dialog .ol-print-map{width:calc(100% - 18em);position:absolute;top:0;bottom:0;right:0;overflow:hidden}.ol-ext-print-dialog .ol-print-map .ol-page{box-sizing:border-box;background:#fff;position:absolute;top:50%;left:50%}.ol-ext-print-dialog .ol-print-map .ol-page.margin{box-sizing:content-box}.ol-ext-print-dialog .ol-map{width:100%;height:100%}.ol-ext-print-dialog .ol-print-map .ol-control{display:none!important}.ol-ext-print-dialog .ol-print-param{box-sizing:border-box;background-color:#fff;width:18em;padding:1em;position:absolute;top:0;bottom:0;left:0;overflow-x:hidden}.ol-ext-print-dialog .ol-print-param h2{color:#003c88b3;font-size:1.1em;display:block}.ol-ext-print-dialog .ol-print-param ul{padding:0;list-style:none}.ol-ext-print-dialog .ol-print-param li{margin:.5em 0;font-size:.9em;position:relative}.ol-ext-print-dialog .ol-print-param li.hidden{display:none}.ol-ext-print-dialog .ol-print-param label{vertical-align:middle;width:8em;display:inline-block}.ol-ext-print-dialog select{vertical-align:middle;outline:none}.ol-ext-print-dialog .ol-orientation{text-align:center}.ol-ext-print-dialog .ol-orientation label{cursor:pointer;width:7em;position:relative}.ol-ext-print-dialog .ol-orientation input{opacity:0;width:0;height:0;position:absolute}.ol-ext-print-dialog .ol-orientation span{width:80%;padding:3.5em 0 .2em;display:block;position:relative}.ol-ext-print-dialog .ol-orientation span:before{content:"";color:#333;opacity:.5;background-color:currentColor;border:1px solid;border-radius:0 1em 0 0;width:2em;height:2.6em;position:absolute;bottom:1.5em;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:inset 1.3em -1.91em #ddd}.ol-ext-print-dialog .ol-orientation .landscape span:before{width:2.6em;height:2em;margin:.2em 0;box-shadow:inset 1.91em -1.3em #ddd}.ol-ext-print-dialog .ol-orientation input:checked+span{opacity:1;box-shadow:0 0 .2em #00000080}.ol-ext-print-dialog .ol-ext-toggle-switch span{position:absolute;top:50%;right:-2em;transform:translateY(-50%)}.ol-print-title input[type=text]{width:calc(100% - 6em);margin-top:.5em;margin-left:6em}.ol-ext-print-dialog .ol-size option:first-child{font-style:italic}.ol-ext-print-dialog .ol-saveas,.ol-ext-print-dialog .ol-savelegend{text-align:center}.ol-ext-print-dialog .ol-saveas select,.ol-ext-print-dialog .ol-savelegend select{color:#fff;background-color:#003c88b3;border:0;max-width:12em;margin:1em 0 0;padding:.5em;font-size:1em;font-weight:700}.ol-ext-print-dialog .ol-saveas select option,.ol-ext-print-dialog .ol-savelegend select option{color:#666;background-color:#fff}.ol-ext-print-dialog .ol-savelegend select{margin-top:0}.ol-ext-print-dialog .ol-ext-buttons{text-align:right;border-top:1px solid #ccc;margin:0 -1em;padding:.8em .5em}.ol-ext-print-dialog button{color:#333;background:0 0;border:1px solid #999;margin:0 .2em;padding:.3em 1em;font-size:1em}.ol-ext-print-dialog button[type=submit]{color:#fff;background-color:#003c88b3;font-weight:700}.ol-ext-print-dialog .ol-clipboard-copy{pointer-events:none;color:#fff;opacity:0;background-color:#00000080;border-radius:1em;width:fit-content;padding:.5em 1em;transition:all;position:absolute;top:0;left:50%;transform:translate(-50%)}.ol-ext-print-dialog .ol-clipboard-copy.visible{animation:1s ol-clipboard-copy}.ol-ext-print-dialog .ol-print-map .ol-control.ol-canvas-control,.ol-ext-print-dialog .ol-print-map .ol-control.ol-print-compass{display:block!important}.ol-ext-print-dialog .ol-print-map .ol-control.olext-print-compass{width:60px;height:60px;margin:20px;top:0;right:0}.ol-ext-print-dialog .ol-orientation input:focus-visible+span,.ol-ext-print-dialog select:focus-visible{outline:2px solid #000}@keyframes ol-clipboard-copy{0%{opacity:0;top:0}80%{opacity:1;top:-3em}to{opacity:0;top:-3em}}@media print{body.ol-print-document{margin:0!important;padding:0!important}body.ol-print-document>*{display:none!important}body.ol-print-document>.ol-ext-print-dialog{display:block!important}body.ol-print-document>.ol-ext-print-dialog .ol-content{max-height:unset!important;max-width:unset!important;width:unset!important;height:unset!important}.ol-ext-print-dialog>form,.ol-ext-print-dialog{position:unset;-webkit-box-shadow:none;box-shadow:none;border:0;background:0 0!important}.ol-ext-print-dialog>form>*,.ol-ext-print-dialog .ol-print-param{background:0 0;display:none!important}.ol-ext-print-dialog .ol-content{background:0 0;border:0;display:block!important}.ol-ext-print-dialog .ol-print-map{position:unset;background:0 0;width:auto;overflow:visible}.ol-ext-print-dialog .ol-print-map .ol-page{position:unset;-webkit-box-shadow:none!important;box-shadow:none!important;transform:none!important}}@media (width<=25em){.ol-ext-print-dialog .ol-print-param{width:13em}.ol-ext-print-dialog .ol-print-map{width:calc(100% - 13em)}.ol-ext-print-dialog .ol-print-param .ol-print-title input[type=text]{width:100%;margin:0}}.ol-ext-print-dialog2x .ol-map,.ol-ext-print-dialog2x .ol-map2{width:100%;height:50%}.ol-ext-print-dialog2x[data-orientation=landscape] .ol-map,.ol-ext-print-dialog2x[data-orientation=landscape] .ol-map2{width:50%;height:100%;display:inline-block}.ol-ext-print-dialog2x[data-clip-map] .ol-map,.ol-ext-print-dialog2x[data-swipe-orientation] .ol-map{width:100%!important;height:100%!important}.ol-ext-print-dialog2x[data-clip-map] .ol-map2,.ol-ext-print-dialog2x[data-swipe-orientation] .ol-map2{top:-100%;left:0;width:100%!important;height:100%!important;position:relative!important}.ol-profile{-webkit-user-select:none;user-select:none;position:relative}.ol-control.ol-profile{text-align:right;position:absolute;top:.5em;right:3em;overflow:hidden}.ol-profile .ol-zoom-out{cursor:pointer;border:1px solid #000;border-radius:2px;width:1em;height:1em;padding:0;position:absolute;top:10px;right:10px}.ol-profile .ol-zoom-out:before{content:"";background:currentColor;width:60%;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-profile .ol-inner{padding:.5em;font-size:.8em;position:relative}.ol-control.ol-profile .ol-inner{background-color:#ffffffb3;margin:2.3em 2px 2px;display:block}.ol-control.ol-profile.ol-collapsed .ol-inner{display:none}.ol-profile canvas{display:block}.ol-profile button{display:block;position:absolute;right:0;overflow:hidden}.ol-profile button i{width:1em;height:1em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-profile button i:before,.ol-profile button i:after{content:"";background-color:currentColor;width:1em;height:.9em;display:block;position:absolute;transform:scaleX(.8)translate(-.25em,.5em)rotate(45deg)}.ol-profile button i:after{transform:scaleX(.8)translate(.35em,.7em)rotate(45deg)}.ol-profile.ol-collapsed button{position:static}.ol-profile .ol-profilebar,.ol-profile .ol-profilecursor{pointer-events:none;width:1px;display:none;position:absolute}.ol-profile .ol-profilecursor{width:0;height:0}.ol-profile .ol-profilecursor:before{content:"";pointer-events:none;width:5px;height:5px;margin:-2px;display:block}.ol-profile .ol-profilebar,.ol-profile .ol-profilecursor:before{background:red}.ol-profile table{text-align:center;border-collapse:collapse;width:100%;margin-top:.5em}.ol-profile table tr{border-top:1px solid #00000040;margin:.1em 0}.ol-profile table td{padding:2px}.ol-profile table span{display:block}.ol-profile table span.elevationGain,.ol-profile table span.elevationLoss{display:inline-block}.ol-profilepopup{white-space:nowrap;background-color:#ffffff80;margin:.5em;padding:0 .5em;position:absolute;top:-1em}.ol-profilepopup.ol-left{right:0}.ol-profile table .track-info{display:table-row}.ol-profile table .point-info,.ol-profile .over table .track-info{display:none}.ol-profile .over table .point-info{display:table-row}.ol-profile p{text-align:center;margin:0}.ol-control.ol-progress-bar{background-color:#0000;padding:0;position:absolute;inset:0;pointer-events:none!important}.ol-control.ol-progress-bar>.ol-bar{box-sizing:border-box;background-color:#003c8880;width:0;height:.5em;transition:width .2s;position:absolute;bottom:0;left:0}.ol-progress-bar>.ol-waiting{display:none}.ol-viewport .ol-control.ol-progress-bar>.ol-waiting{color:#fff;font-size:2em;animation:1s linear infinite ol-progress-bar-blink;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes ol-progress-bar-blink{0%,30%{visibility:hidden}to{visibility:visible}}.ol-control.ol-routing{max-height:90%;top:.5em;left:3em;overflow-y:auto}.ol-touch .ol-control.ol-routing{left:3.5em}.ol-control.ol-routing.ol-searching{opacity:.5}.ol-control.ol-routing .ol-car,.ol-control.ol-routing>button{position:relative}.ol-control.ol-routing .ol-car:after,.ol-control.ol-routing>button:after{content:"";clip:rect(0 1em .5em -1em);border-radius:40% 50% 0 0/50% 70% 0 0;width:.78em;height:.6em;position:absolute;top:.35em;left:.4em;box-shadow:inset 0 0 0 .065em,-.35em .14em 0 -.09em,inset 0 -.37em,inset -.14em .005em}.ol-control.ol-routing .ol-car:before,.ol-control.ol-routing>button:before{content:"";border-radius:50%;width:.28em;height:.28em;position:absolute;top:.73em;left:.2em;box-shadow:inset 0 0 0 1em,.65em 0}.ol-control.ol-routing .ol-pedestrian:after{content:"";border-top:.2em solid #0000;width:.3em;height:.4em;position:absolute;top:.25em;left:50%;transform:translate(-50%);box-shadow:inset .3em 0,.1em .5em 0 -.1em,-.1em .5em 0 -.1em,.25em .1em 0 -.1em,-.25em .1em 0 -.1em}.ol-control.ol-routing .ol-pedestrian:before{content:"";background-color:currentColor;border-radius:50%;width:.3em;height:.3em;position:absolute;top:.1em;left:50%;transform:translate(-50%)}.ol-control.ol-routing .content{margin:.5em}.ol-control.ol-routing.ol-collapsed .content,.ol-routing .ol-search.ol-collapsed ul,.ol-routing .ol-search ul .copy{display:none}.ol-routing .content .search-input>div>*{vertical-align:top;display:inline-block}.ol-routing .ol-result ul{list-style:none;display:block}.ol-routing .ol-result li{min-height:1.65em;position:relative}.ol-routing .ol-result li i{font-size:.8em;font-weight:700;display:block}.ol-routing .ol-result li:before{content:"";transform-origin:50% 125%;border:.4em solid #0000;border-top-width:.6em;border-bottom:.6em solid #369;position:absolute;top:-.8em;left:-1.75em;box-shadow:0 .65em 0 -.25em #369}.ol-routing .ol-result li:after{content:"";background:#369;border-radius:.1em;width:.25em;height:.6em;position:absolute;top:.6em;left:-1.5em}.ol-routing .ol-result li.R:before{transform:rotate(90deg)}.ol-routing .ol-result li.FR:before{transform:rotate(45deg)}.ol-routing .ol-result li.L:before{transform:rotate(-90deg)}.ol-routing .ol-result li.FL:before{transform:rotate(-45deg)}.ol-routing .content>i{vertical-align:middle;margin:0 .3em 0 .1em;font-style:normal}.ol-routing .ol-button,.ol-routing .ol-button:focus,.ol-routing .ol-pedestrian,.ol-routing .ol-car{color:#003c88;opacity:.5;vertical-align:middle;cursor:pointer;background-color:#0000;outline:none;width:1.4em;height:1.4em;margin:0 .1em;font-size:1.1em;display:inline-block;position:relative}.ol-routing .ol-constraints{display:block}.ol-routing .ol-button:hover,.ol-routing .ol-button.selected,.ol-routing i.selected{opacity:1;background:0 0}.ol-routing .ol-method{display:block}.ol-control.ol-routing{background-color:#ffffff40}.ol-control.ol-routing:hover{background-color:#ffffffbf}.search-input>div>button:before{content:"±"}.ol-viewport .ol-scale{text-align:center;transform-origin:0 0;background-color:#ffffffbf;bottom:2.5em;left:.5em;transform:scaleX(.8)}.ol-viewport .ol-scale input{text-align:center;background:0 0;border:0;width:8em}.ol-search{top:.5em;left:3em}.ol-touch .ol-search{left:3.5em}.ol-search button{float:left;top:2px;left:2px}.ol-control.ol-search>button:before{content:"";box-sizing:border-box;background-color:#0000;border:.12em solid;border-radius:100%;width:.7em;height:.7em;position:absolute;top:.35em;left:.35em}.ol-control.ol-search>button:after{content:"";background-color:currentColor;border-radius:.05em;width:.45em;height:.15em;position:absolute;top:1.1em;left:.95em;transform:rotate(45deg);box-shadow:-.18em 0 0 -.03em}.ol-search button.ol-revers{float:none;vertical-align:bottom;background-image:none;display:inline-block;position:relative;top:0;left:0}.ol-search.ol-revers button.ol-revers{background-color:#00883c80}.ol-control.ol-search.ol-collapsed button.ol-revers{display:none}.ol-search button.ol-revers:before{content:"";box-sizing:border-box;border:.1em solid;border-radius:50%;width:.55em;height:.55em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-search button.ol-revers:after{content:"";background-color:#0000;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.35em 0,0 .35em,-.35em 0,0 -.35em}.ol-search input{box-sizing:border-box;border:0;height:1.375em;margin:1px 1px 1px 2px;padding-left:.3em;font-size:1.14em;transition:all .1s;display:inline-block}.ol-touch .ol-search input,.ol-touch .ol-search ul{font-size:1.5em}.ol-search.ol-revers>ul,.ol-control.ol-search.ol-collapsed>*{display:none}.ol-control.ol-search.ol-collapsed>button{display:block}.ol-search ul{clear:both;cursor:pointer;z-index:1;background:#fff;max-width:17em;margin:0;padding:0;list-style:none;display:block;overflow-x:hidden}.ol-search ul li{white-space:nowrap;text-overflow:ellipsis;padding:.1em .5em;overflow:hidden}.ol-search ul li.select,.ol-search ul li:hover{color:#fff;background-color:#003c8880}.ol-search ul li img{float:left;max-height:2em}.ol-search li.copy{color:#fff;background:#00000080}.ol-search li.copy a{color:#fff;text-decoration:none}.ol-search.searching:before{content:"";z-index:2;background:red;height:3px;animation:.5s linear infinite alternate ol-pulse;position:absolute;top:1.6em;left:0}@keyframes ol-pulse{0%{left:0;right:95%}50%{left:30%;right:30%}to{left:95%;right:0}}.ol-control.ol-search.IGNF-parcelle{background-color:#ffffffb3;padding-bottom:.2em}.ol-search.IGNF-parcelle input{width:14.5em}.ol-search.IGNF-parcelle input:read-only{opacity:.8;background:#ccc}.ol-search.IGNF-parcelle.ol-collapsed-list>ul.autocomplete{display:none}.ol-search.IGNF-parcelle label{clear:both;display:block}.ol-search.IGNF-parcelle>div input{text-align:right}.ol-search.IGNF-parcelle>div input,.ol-search.IGNF-parcelle>div label{box-sizing:border-box;text-overflow:ellipsis;width:4em;margin:.1em;font-size:1em;display:inline-block;overflow:hidden}.ol-search.IGNF-parcelle>div label{letter-spacing:-.04em}.ol-search.IGNF-parcelle ul.autocomplete-page{text-align:center;width:100%;margin-top:.5em;display:none}.ol-search.IGNF-parcelle.ol-collapsed-list ul.autocomplete-parcelle,.ol-search.IGNF-parcelle.ol-collapsed-list ul.autocomplete-page{display:block}.ol-search.IGNF-parcelle.ol-collapsed ul.autocomplete-page,.ol-search.IGNF-parcelle.ol-collapsed ul.autocomplete-parcelle,.ol-search.IGNF-parcelle ul.autocomplete-parcelle{display:none}.ol-search.IGNF-parcelle ul.autocomplete-page li{color:#fff;background:#003c8880;border-radius:50%;width:1.3em;height:1.3em;margin:0 .1em;padding:.1em;display:inline-block}.ol-search.IGNF-parcelle ul.autocomplete-page li.selected{background:#003c88}.ol-searchgps input.search,.ol-searchcoord input.search{display:none}.ol-control.ol-searchgps>button:first-child,.ol-control.ol-searchcoord>button:first-child{background-image:none}.ol-control.ol-searchgps>button:first-child:before,.ol-control.ol-searchcoord>button:first-child:before{content:"x/y";position:unset;border:unset;border-radius:0;width:auto;height:auto;display:block;transform:scaleX(.8)}.ol-control.ol-searchgps>button:first-child:after,.ol-control.ol-searchcoord>button:first-child:after{content:unset}.ol-control.ol-searchgps .ol-latitude,.ol-control.ol-searchgps .ol-longitude,.ol-control.ol-searchcoord .ol-latitude,.ol-control.ol-searchcoord .ol-longitude{clear:both}.ol-control.ol-searchgps .ol-latitude label,.ol-control.ol-searchgps .ol-longitude label,.ol-control.ol-searchcoord .ol-latitude label,.ol-control.ol-searchcoord .ol-longitude label{text-align:right;transform-origin:0 0;width:5.5em;margin:0 -.8em 0 0;display:inline-block;transform:scaleX(.8)}.ol-control.ol-searchcoord .ol-latitude label,.ol-control.ol-searchcoord .ol-longitude label{width:2em;margin:0}.ol-control.ol-searchgps .ol-latitude input,.ol-control.ol-searchgps .ol-longitude input{max-width:10em}.ol-control.ol-searchgps .ol-ext-toggle-switch{cursor:pointer;float:right;margin:.5em;font-size:.9em}.ol-searchgps .ol-decimal{margin-right:.7em;display:inline-block}.ol-searchgps .ol-dms,.ol-searchgps.ol-dms .ol-decimal{text-align:right;width:3em;display:none}.ol-searchgps.ol-dms .ol-dms{display:inline-block}.ol-searchgps span.ol-dms{text-align:left;width:.5em}.ol-searchgps.ol-control.ol-collapsed button.ol-geoloc,.ol-searchgps.ol-control.ol-collapsed button.ol-centerloc,.ol-searchcoord.ol-control.ol-collapsed button.ol-centerloc,.ol-searchcoord.ol-control.ol-collapsed button.ol-geoloc{display:none}.ol-searchgps button.ol-geoloc,.ol-searchgps button.ol-centerloc,.ol-searchcoord button.ol-centerloc,.ol-searchcoord button.ol-geoloc{float:right;background-image:none;margin-right:3px;position:relative;top:0}.ol-searchgps button.ol-geoloc:before,.ol-searchcoord button.ol-geoloc:before{content:"";border:.1em solid;border-radius:50%;width:.6em;height:.6em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-searchgps button.ol-geoloc:after,.ol-searchcoord button.ol-geoloc:after{content:"";background-color:#0000;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.45em 0,-.45em 0,0 -.45em,0 .45em,.25em 0,-.25em 0,0 -.25em,0 .25em}.ol-searchgps button.ol-centerloc:before,.ol-searchcoord button.ol-centerloc:before{content:"📍";border:0;width:auto;height:auto;padding:0;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-searchgps button.ol-centerloc:after,.ol-searchcoord button.ol-centerloc:after{display:none}.ol-control.ol-select{background-color:#ffffff80;top:.5em;left:3em}.ol-control.ol-select:hover{background-color:#ffffffb3}.ol-touch .ol-control.ol-select{left:3.5em}.ol-control.ol-select>button:before{content:"A";box-sizing:content-box;text-align:center;background-color:#0000;border:.2em solid;border-radius:100%;width:1em;height:1em;font-size:.6em;font-weight:400;line-height:1em;position:absolute;top:.5em;left:.5em}.ol-control.ol-select>button:after{content:"";background-color:currentColor;border-radius:.05em;width:.45em;height:.15em;position:absolute;top:1.15em;left:1em;transform:rotate(45deg);box-shadow:-.18em 0 0 -.03em}.ol-select>div button{float:right;width:auto;height:1.2em;padding:0 .5em;font-weight:400;line-height:1.2em}.ol-select .ol-delete{vertical-align:middle;cursor:pointer;width:1.5em;height:1em;display:inline-block;position:relative}.ol-select .ol-delete:before{content:"×";text-align:center;width:100%;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-select input{font-size:1em}.ol-control.ol-select select{max-width:10em;font-size:1em}.ol-control.ol-select select option.ol-default{color:#999;font-style:italic}.ol-control.ol-select>div{margin:.25em;display:block}.ol-control.ol-select.ol-collapsed>div{display:none}.ol-control.ol-select.ol-select-check{max-width:20em}.ol-control.ol-select label.ol-ext-check{margin-right:1em}.ol-control.ol-select label.ol-ext-toggle-switch span{font-size:1.1em}.ol-select ul{margin:0;padding:0;list-style:none}.ol-control.ol-select input[type=search],.ol-control.ol-select input[type=text]{width:8em}.ol-select .ol-autocomplete{display:inline}.ol-select .ol-autocomplete ul{background:#fff;border:1px solid #999;min-width:10em;font-size:.85em;display:block;position:absolute}.ol-select .ol-autocomplete ul li{padding:0 .5em}.ol-select .ol-autocomplete ul li:hover{color:#fff;background:#003c8880}.ol-select ul.ol-hidden{display:none}.ol-select-multi li>div:hover,.ol-select-multi li>div.ol-control.ol-select{top:unset;left:unset;background:0 0;position:relative}.ol-select-multi li>div>button,.ol-select-multi li>div .ol-ok{display:none}.ol-select-multi li .ol-control.ol-select.ol-collapsed>div,.ol-select-multi li>div>div{display:block}.ol-control.ol-status{color:#fff;box-sizing:border-box;background:#0003;border-radius:0;width:100%;padding:.3em 3em;font-size:.9em;display:none;top:0;left:0;pointer-events:none!important}.ol-control.ol-status.ol-visible{display:initial}.ol-control.ol-status.ol-bottom{top:auto;bottom:0}.ol-control.ol-status.ol-left{width:auto;padding:.3em .5em .3em 3em;top:0;bottom:0}.ol-control.ol-status.ol-right{width:auto;padding:.3em 3em .3em .5em;inset:0 0 0 auto}.ol-control.ol-status.ol-center{top:50%;transform:translateY(-50%)}.ol-control.ol-storymap{background-color:#ffffff80;border-radius:.5em;max-width:35%;height:auto;position:absolute;top:.5em;bottom:.5em;left:.5em}.ol-storymap{height:100%;padding:0;position:relative;overflow:hidden}.ol-storymap>div{scroll-behavior:smooth;-webkit-user-select:none;user-select:none;height:100%;padding:0;position:relative;overflow:hidden}.ol-storymap>div.ol-move{scroll-behavior:unset}.ol-control.ol-storymap .chapter{padding:.5em;position:relative;overflow:hidden}.ol-control.ol-storymap .chapter:last-child{margin-bottom:100%}.ol-storymap .chapter{cursor:pointer;opacity:.4}.ol-storymap .chapter.ol-select{cursor:default;opacity:1;background-color:#fffc}.ol-storymap .ol-scroll-top,.ol-storymap .ol-scroll-next{color:#003c8880;text-align:center;cursor:pointer;min-height:1.7em;position:relative}.ol-storymap .ol-scroll-next span{padding-bottom:1.4em;display:block}.ol-storymap .ol-scroll-top span{padding-top:1.4em;display:block}.ol-storymap .ol-scroll-top:before,.ol-storymap .ol-scroll-next:before{content:"";pointer-events:none;border:.3em solid;border-color:#0000 currentColor currentColor #0000;border-radius:.3em;width:.8em;height:.8em;animation:.35s linear infinite alternate ol-bounce-bottom;display:block;position:absolute;left:50%;transform:translate(-50%)rotate(45deg)}.ol-storymap .ol-scroll-top:before{border-color:currentColor #0000 #0000 currentColor;animation:.35s linear infinite alternate ol-bounce-top}@keyframes ol-bounce-top{0%{top:-.2em}to{top:.5em}}@keyframes ol-bounce-bottom{0%{bottom:-.2em}to{bottom:.5em}}.ol-storymap img[data-title]{cursor:pointer}.ol-storymap.scrollLine,.ol-storymap.scrollBox{background-color:#0000;border-radius:0;max-width:40%;top:0;bottom:0}.ol-storymap.scrollLine .chapter,.ol-storymap.scrollBox .chapter{background-color:#fff;margin:100% 0}.ol-storymap.scrollLine .chapter:first-child,.ol-storymap.scrollBox .chapter:first-child{margin-top:3em}.ol-storymap.scrollLine .chapter.ol-select,.ol-storymap.scrollLine .chapter,.ol-storymap.scrollBox .chapter.ol-select,.ol-storymap.scrollBox .chapter{opacity:1}.ol-storymap.scrollLine .ol-scrolldiv,.ol-storymap.scrollBox .ol-scrolldiv{padding-right:30px}.ol-storymap.scrollLine:before,.ol-storymap.scrollBox:before{content:"";background-color:#fff;width:2px;height:100%;position:absolute;top:0;bottom:0;right:14px}.ol-storymap.scrollLine .ol-scroll,.ol-storymap.scrollBox .ol-scroll{width:1px;padding:0;transition:none;right:15px;overflow:visible;opacity:1!important;display:block!important}.ol-storymap.scrollLine .ol-scroll>div{-webkit-box-shadow:unset;box-shadow:unset;background-color:#0000;left:50%;overflow:visible;transform:translate(-50%)}.ol-storymap.scrollLine .ol-scroll>div:before{content:"";background-color:#0af;border:2px solid #fff;border-radius:50%;width:10px;height:10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-storymap.scrollBox .ol-scroll>div{display:none}.ol-storymap.scrollBox .chapter:after{content:"";box-sizing:border-box;z-index:1;border:5px solid #0000;border-radius:50%;width:20px;height:20px;position:absolute;top:min(30%,5em);right:-24.5px;box-shadow:0 0 0 2px #fff,inset 0 0 0 15px #0af}.ol-swipe{-ms-touch-action:none;touch-action:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-swipe:before{content:"";z-index:-1;background:#fff;width:4px;position:absolute;top:-5000px;bottom:-5000px;left:50%;transform:translate(-2px)}.ol-swipe.horizontal:before{width:auto;height:4px;inset:50% -5000px auto}.ol-swipe,.ol-swipe button{cursor:ew-resize}.ol-swipe.horizontal,.ol-swipe.horizontal button{cursor:ns-resize}.ol-swipe:after,.ol-swipe button:before,.ol-swipe button:after{content:"";background:currentColor;width:2px;position:absolute;top:25%;bottom:25%;left:50%;transform:translate(-1px)}.ol-swipe button:after{transform:translate(4px)}.ol-swipe button:before{transform:translate(-6px)}.ol-control.ol-timeline{background-color:#fff6;transition:all .3s;bottom:0;left:0;right:0}.ol-control.ol-timeline.ol-collapsed{transform:translateY(100%)}.ol-timeline{padding:2px 0 0;overflow:hidden}.ol-timeline .ol-scroll{scroll-behavior:smooth;height:6em;padding:0 50%;line-height:1em;overflow:hidden}.ol-timeline .ol-scroll.ol-move{scroll-behavior:unset}.ol-timeline.ol-hasbutton .ol-scroll{margin-left:1.5em;padding:0 calc(50% - .75em)}.ol-timeline .ol-buttons{z-index:10;background:#ffffff80;width:1.5em;display:none;position:absolute;top:0;bottom:0;left:0}.ol-timeline.ol-hasbutton .ol-buttons{display:block}.ol-timeline .ol-buttons button{margin:1px;font-size:1em;position:relative}.ol-timeline .ol-buttons .ol-zoom-in:before,.ol-timeline .ol-buttons .ol-zoom-out:before{content:"+";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-timeline .ol-buttons .ol-zoom-out:before{content:"−"}.ol-timeline .ol-scroll>div{height:100%;position:relative}.ol-timeline .ol-scroll .ol-times{background:#ffffff80;height:1em;position:absolute;bottom:0;left:-1000px;right:-1000px}.ol-timeline .ol-scroll .ol-time{color:#999;font-size:.7em;position:absolute;bottom:0;transform:translate(-50%)}.ol-timeline .ol-scroll .ol-time.ol-year{color:#666;z-index:1}.ol-timeline .ol-scroll .ol-time:before{content:"";border-left:1px solid;height:500px;position:absolute;bottom:1.2em;left:50%}.ol-timeline .ol-scroll .ol-features{margin:0 0 0 200px;position:absolute;inset:0 -1000px 1em -200px;overflow:hidden}.ol-timeline .ol-scroll .ol-feature{color:#999;cursor:pointer;box-sizing:border-box;background:#fff;border:1px solid #ccc;max-width:3em;min-height:1em;max-height:2.4em;padding:0 .5em 0 0;font-size:.7em;line-height:1.2em;transition:all .3s;position:absolute;top:0;overflow:hidden}.ol-timeline.ol-zoomhover .ol-scroll .ol-feature:hover,.ol-timeline.ol-zoomhover .ol-scroll .ol-feature.ol-select{z-index:1;background:#eee;transform:scale(1.2)}.ol-timeline .ol-center-date{z-index:2;pointer-events:none;opacity:.4;background-color:red;width:2px;height:100%;display:none;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.ol-timeline.ol-hasbutton .ol-center-date{left:calc(50% + .75em)}.ol-timeline.ol-pointer .ol-center-date{display:block}.ol-timeline.ol-pointer .ol-center-date:before,.ol-timeline.ol-pointer .ol-center-date:after{content:"";border:.3em solid #0000;border-width:.3em .25em;position:absolute;left:50%;transform:translate(-50%)}.ol-timeline.ol-pointer .ol-center-date:before{border-top-color:red;top:0}.ol-timeline.ol-pointer .ol-center-date:after{border-bottom-color:red;bottom:0}.ol-timeline.ol-interval .ol-center-date{box-sizing:content-box;opacity:.2;background-color:#0000;border:0 solid #000;border-width:0 10000px;display:block}.ol-control.ol-videorec{white-space:nowrap;top:0;left:50%;transform:translate(-50%)}.ol-control.ol-videorec button{vertical-align:middle;display:inline-block;position:relative}.ol-control.ol-videorec button:before{content:"";background-color:currentColor;width:.8em;height:.8em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-videorec button.ol-start:before{background-color:#c00;border-radius:50%;width:.9em;height:.9em}.ol-control.ol-videorec button.ol-pause:before{background-color:#0000;width:.2em;box-shadow:-.2em 0,.2em 0}.ol-control.ol-videorec button.ol-resume:before{box-sizing:border-box;background:0 0;border:.4em solid #0000;border-left:.6em solid;border-right-width:0;width:auto}.ol-control.ol-videorec button.ol-stop,.ol-control.ol-videorec button.ol-pause,.ol-control.ol-videorec button.ol-resume,.ol-control.ol-videorec[data-state=rec] .ol-start,.ol-control.ol-videorec[data-state=pause] .ol-start{display:none}.ol-control.ol-videorec[data-state=rec] .ol-stop,.ol-control.ol-videorec[data-state=pause] .ol-stop,.ol-control.ol-videorec[data-state=rec] .ol-pause,.ol-control.ol-videorec[data-state=pause] .ol-resume{display:inline-block}.ol-control.ol-wmscapabilities{top:.5em;right:2.5em}.ol-touch .ol-control.ol-wmscapabilities{right:3em}.ol-control.ol-wmscapabilities.ol-hidden{display:none}.ol-control.ol-wmscapabilities button:before{content:"+";position:absolute;top:calc(50% - .35em);left:50%;transform:translate(-50%,-50%)}.ol-control.ol-wmscapabilities button:after{content:"";background:0 0;border:.15em solid #0000;border-width:0 .15em .15em 0;border-radius:.1em 0;width:.75em;height:.75em;position:absolute;top:calc(50% - .05em);left:50%;transform:scaleY(.6)translate(-50%,-50%)rotate(45deg);box-shadow:inset -.18em -.18em,-.4em .1em 0 -.25em,.1em -.35em 0 -.25em,.15em .15em}.ol-wmscapabilities .ol-searching{opacity:.5}.ol-wmscapabilities .ol-searching .ol-url:after{content:"";background-color:currentColor;border-radius:50%;width:.7em;height:.7em;animation:2s linear infinite ol-wmscapabilities-rotate;display:block;position:absolute;top:6em;left:calc(50% - .35em);box-shadow:0 1em,0 -1em,1em 0,-1em 0}@keyframes ol-wmscapabilities-rotate{to{transform:rotate(360deg)}}.ol-wmscapabilities .ol-url input{box-sizing:border-box;width:calc(100% - 10em);min-width:min(100%,20em)}.ol-wmscapabilities .ol-url select{width:2em;height:100%;padding:1px}.ol-wmscapabilities .ol-url button{width:7.5em;margin-left:.5em}.ol-wmscapabilities .ol-result{margin-top:.5em;display:none}.ol-wmscapabilities .ol-result.ol-visible{display:block}.ol-wmscapabilities .ol-select-list{box-sizing:border-box;border:1px solid #369;border-radius:0;width:calc(100% - 120px);max-height:14.5em;font-size:1em;position:relative;overflow-x:hidden}.ol-wmscapabilities .ol-select-list option{cursor:pointer;box-sizing:border-box;text-overflow:ellipsis;width:100%;padding:.1em .5em 0;overflow:hidden}.ol-wmscapabilities .ol-select-list .level-1{padding-left:1em}.ol-wmscapabilities .ol-select-list .level-2{padding-left:1.5em}.ol-wmscapabilities .ol-select-list .level-3{padding-left:2em}.ol-wmscapabilities .ol-select-list .level-4{padding-left:2.5em}.ol-wmscapabilities .ol-select-list .level-5{padding-left:3em}.ol-wmscapabilities .ol-select-list .ol-info{font-style:italic}.ol-wmscapabilities .ol-select-list .ol-title{background-color:#003c881a}.ol-wmscapabilities .ol-select-list option:hover{color:#fff;background-color:#003c8880}.ol-wmscapabilities .ol-select-list .selected{color:#fff;background-color:#003c88b3}.ol-wmscapabilities .ol-preview{float:right;color:#666;text-align:center;background:#003c881a;width:100px;margin-left:10px;padding:0 5px 5px}.ol-wmscapabilities .ol-preview.tainted{float:right;color:#666;text-align:center;background:#88003c1a;width:100px;margin-left:10px;padding:0 5px 5px}.ol-wmscapabilities .ol-preview img{background:#fff;width:100%;display:block}.ol-wmscapabilities .ol-legend{max-width:100%;display:none}.ol-wmscapabilities .ol-legend.visible{display:block}.ol-wmscapabilities .ol-buttons{clear:both;text-align:right}.ol-wmscapabilities .ol-data p{margin:0}.ol-wmscapabilities .ol-data p.ol-title{margin:1em 0 .5em;font-weight:700}.ol-wmscapabilities .ol-error{color:#800}.ol-wmscapabilities ul.ol-wmsform{padding:0;list-style:none;display:none}.ol-wmscapabilities ul.ol-wmsform.visible{display:block}.ol-wmscapabilities .ol-wmsform label{text-align:right;width:calc(40% - .5em);margin-right:.5em;display:inline-block}.ol-wmscapabilities .ol-wmsform input{box-sizing:border-box;width:60%;display:inline-block}.ol-wmscapabilities .ol-wmsform input[type=checkbox]{width:auto}.ol-wmscapabilities .ol-wmsform button{float:right;margin:1em 0}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] input{width:calc(60% - 2em)}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button{vertical-align:middle;color:#444;width:2em;height:1.6em;margin:0;position:relative}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:before,.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:after{content:"";border:.1em solid;width:.25em;height:.9em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)skewY(-15deg)}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:after{transform:translate(.4em)translate(-50%,-50%)skewY(15deg);box-shadow:-.8em .25em}.ol-ext-dialog.ol-wmscapabilities form{width:600px;min-height:15em;top:15%;transform:translate(-50%,-15%)}.ol-ext-dialog.ol-wmscapabilities .ol-content{max-height:calc(100vh - 6em)}.ol-ext-dialog.ol-wmtscapabilities [data-param=map],.ol-ext-dialog [data-param=style]{display:none}.ol-ext-dialog.ol-wmtscapabilities [data-param=style]{display:list-item}.ol-ext-dialog.ol-wmtscapabilities [data-param=proj],.ol-ext-dialog.ol-wmtscapabilities [data-param=version]{opacity:.6;pointer-events:none}.ol-ext-dialog.ol-wmscapabilities button.ol-wmsform{text-align:center;width:1.8em}.ol-ext-dialog.ol-wmscapabilities button.ol-wmsform:before{content:"+"}.ol-ext-dialog.ol-wmscapabilities .ol-form button.ol-wmsform:before{content:"-"}.ol-ext-dialog.ol-wmscapabilities .ol-form button.ol-load,.ol-ext-dialog.ol-wmscapabilities .ol-form .ol-legend{display:none}.ol-ext-dialog.ol-wmscapabilities .ol-form ul.ol-wmsform{clear:both;display:block}.ol-target-overlay .ol-target{border:1px solid #0000;width:0;height:20px;display:block;box-shadow:0 0 1px 1px #fff}.ol-target-overlay .ol-target:after,.ol-target-overlay .ol-target:before{content:"";border:1px solid #369;width:20px;height:0;display:block;position:absolute;top:10px;left:-10px;box-shadow:0 0 1px 1px #fff}.ol-target-overlay .ol-target:after{-webkit-box-shadow:none;box-shadow:none;width:0;height:20px;top:0;left:0}.ol-overlaycontainer .ol-touch-cursor{cursor:pointer;background:#fff6;border-radius:50%;width:56px;height:56px;margin:6px;box-shadow:inset 0 0 0 5px #369}.ol-overlaycontainer .ol-touch-cursor:after{content:"";transform-origin:100% 100%;background:radial-gradient(circle at 100% 100%,#0000,#0000 70%,#369 70%,#369);width:50%;height:50%;position:absolute;top:0;left:0}.ol-overlaycontainer .ol-touch-cursor-center{margin-top:16px;margin-left:-28px}.ol-overlaycontainer .ol-touch-cursor-center:after{transform:rotate(45deg)}.ol-overlaycontainer .ol-touch-cursor-right{margin-left:-62px}.ol-overlaycontainer .ol-touch-cursor-right:after{transform:rotate(90deg)}.ol-overlaycontainer .ol-touch-cursor .ol-button{color:#369;cursor:pointer;background:#fff6;border-radius:50%;width:55%;height:55%;transition:all .5s,opacity,background;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)scale(0);box-shadow:inset 0 0 0 3px}.ol-overlaycontainer .ol-touch-cursor.active.disable .ol-button{opacity:.8;background:#3693}.ol-overlaycontainer .ol-touch-cursor.active .ol-button{transform:translate(-50%,-50%)scale(1)}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-0{top:-18%;left:118%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-1{top:50%;left:140%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-2{top:120%;left:120%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-3{top:140%;left:50%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-4{top:118%;left:-18%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-5{top:50%;left:-40%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-6{top:-18%;left:-18%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-7{top:-40%;left:50%}.ol-overlaycontainer .ol-touch-cursor .ol-button:before{content:"";text-align:center;width:1.5em;height:1em;line-height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-add:before,.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-remove:before{content:"−";font-size:1.375em;font-weight:700;line-height:.95em}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-add:before{content:"+"}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-x:before{content:"×";font-size:1.2em;font-weight:700}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-move:before{content:"✥";font-size:1.2em}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-check:before{content:"✓";font-weight:700}.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-x,.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-remove,.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-check{opacity:.8;background:#3693}.ol-overlaycontainer .ol-touch-cursor .ol-button>div{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlaycontainer .ol-touch-cursor .ol-button-type:before{content:"⇎";font-weight:700}.mapboxgl-canvas:focus{outline:none}.ol-perspective-map{width:200%;height:200%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-perspective-map .ol-layer{z-index:-1!important}.ol-perspective-map .ol-layers{transform:translateY(0)perspective(200px)rotateX(0)scaleY(1)}.ol-perspective-map .ol-overlaycontainer,.ol-perspective-map .ol-overlaycontainer-stopevent{top:50%;left:50%;transform:translate(-50%,-50%);width:50%!important;height:50%!important}.ol-overlay-container .ol-magnify{z-index:0;background:#00000080;border:3px solid #369;border-radius:50%;width:150px;height:150px;position:relative;overflow:hidden;box-shadow:5px 5px 5px #00000080}.ol-overlay-container .ol-magnify:before{content:"";z-index:1;border-radius:50%;width:100%;height:100%;display:block;position:absolute;top:0;left:0;box-shadow:inset 0 0 40px 2px #00000040}.ol-overlay-container .ol-magnify:after{content:"";z-index:1;border-radius:50%;width:20%;height:0;display:block;position:absolute;top:20%;left:23%;transform:rotate(-40deg);box-shadow:0 0 20px 7px #fff}.ol-popup.anim{visibility:hidden}.ol-popup.anim.visible{visibility:visible}.ol-popup.anim.visible>div{visibility:visible;animation:.4s ol-popup_bounce;transform:none}@keyframes ol-popup_bounce{0%{transform:scale(0)}50%{transform:scale(1.1)}80%{transform:scale(.95)}to{transform:scale(1)}}.ol-popup.anim.ol-popup-bottom.ol-popup-left>div{transform-origin:0 100%}.ol-popup.anim.ol-popup-bottom.ol-popup-right>div{transform-origin:100% 100%}.ol-popup.anim.ol-popup-bottom.ol-popup-center>div{transform-origin:50% 100%}.ol-popup.anim.ol-popup-top.ol-popup-left>div{transform-origin:0 0}.ol-popup.anim.ol-popup-top.ol-popup-right>div{transform-origin:100% 0}.ol-popup.anim.ol-popup-top.ol-popup-center>div{transform-origin:50% 0}.ol-popup.anim.ol-popup-middle.ol-popup-left>div{transform-origin:0}.ol-popup.anim.ol-popup-middle.ol-popup-right>div{transform-origin:100%}.ol-popup{-webkit-user-select:none;user-select:none;font-size:.9em}.ol-popup .ol-popup-content{cursor:default;padding:.25em .5em;overflow:hidden}.ol-popup.hasclosebox .ol-popup-content{margin-right:1.7em}.ol-popup .ol-popup-content:after{clear:both;content:"";height:0;font-size:0;display:block}.ol-popup .anchor{pointer-events:none;background:red;width:0;height:0;margin:-11px 22px;display:block;position:absolute}.ol-popup .anchor:after,.ol-popup .anchor:before{position:absolute}.ol-popup-right .anchor:after,.ol-popup-right .anchor:before{right:0}.ol-popup-top .anchor{top:0}.ol-popup-bottom .anchor{bottom:0}.ol-popup-right .anchor{right:0}.ol-popup-left .anchor{left:0}.ol-popup-center .anchor{left:50%;margin-left:0!important}.ol-popup-middle .anchor{top:50%;margin-top:0!important}.ol-popup-center.ol-popup-middle .anchor{display:none}.ol-popup.ol-fixed{margin:0!important;inset:.5em .5em auto auto!important;transform:none!important}.ol-popup.ol-fixed .anchor{display:none}.ol-popup.ol-fixed.anim>div{animation:none}.ol-popup .ol-fix{float:right;cursor:pointer;background:#fff;width:1em;height:.9em;margin:.2em;position:relative}.ol-popup .ol-fix:before{content:"";box-sizing:border-box;border:.1em solid #666;border-right-width:.3em;width:.8em;height:.7em;margin:.1em;display:block}.ol-popup.shadow{box-shadow:2px 2px 2px 2px #00000080}.ol-popup .closeBox{color:#fff;cursor:pointer;float:right;background-color:#003c8880;border:0;border-radius:2px;width:1.4em;height:1.4em;margin:5px 5px 0 0;padding:0;font-size:.9em;font-weight:700;display:none;position:relative}.ol-popup.hasclosebox .closeBox{display:block}.ol-popup .closeBox:hover{background-color:#003c88b3}.ol-popup .closeBox:after{content:"×";text-align:center;width:100%;margin:-.5em 0;font-size:1.5em;line-height:1em;position:absolute;top:50%;left:0;right:0}.ol-popup.modifytouch{background-color:#eee}.ol-popup.modifytouch .ol-popup-content{white-space:nowrap;padding:0 .25em;font-size:.85em}.ol-popup.modifytouch .ol-popup-content a{text-decoration:none}.ol-popup.tooltips{background-color:#ffa}.ol-popup.tooltips .ol-popup-content{white-space:nowrap;padding:0 .25em;font-size:.85em}.ol-popup.default>div{background-color:#fff;border:1px solid #69f;border-radius:5px}.ol-popup.default{margin:-11px 0;transform:translateY(-22px)}.ol-popup-top.ol-popup.default{margin:11px 0;transform:none}.ol-popup-left.default{margin:-11px -22px;transform:translateY(-22px)}.ol-popup-top.ol-popup-left.default{margin:11px -22px;transform:none}.ol-popup-right.default{margin:-11px 22px;transform:translate(44px,-22px)}.ol-popup-top.ol-popup-right.default{margin:11px 22px;transform:translate(44px)}.ol-popup-middle.default{margin:0 10px;transform:none}.ol-popup-middle.ol-popup-right.default{margin:0 -10px;transform:translate(-20px)}.ol-popup.default .anchor{color:#69f}.ol-popup.default .anchor:after,.ol-popup.default .anchor:before{content:"";border:11px solid;border-color:currentColor #0000;margin:0 -11px}.ol-popup.default .anchor:after{border-width:11px;border-color:#fff #0000;margin:2px -11px}.ol-popup-top.default .anchor:before,.ol-popup-top.default .anchor:after{border-top:0;top:0}.ol-popup-bottom.default .anchor:before,.ol-popup-bottom.default .anchor:after{border-bottom:0;bottom:0}.ol-popup-middle.default .anchor:before{border-color:#0000 currentColor;margin:-11px -33px}.ol-popup-middle.default .anchor:after{border-color:#0000 #fff;margin:-11px -31px}.ol-popup-middle.ol-popup-left.default .anchor:before,.ol-popup-middle.ol-popup-left.default .anchor:after{border-left:0}.ol-popup-middle.ol-popup-right.default .anchor:before,.ol-popup-middle.ol-popup-right.default .anchor:after{border-right:0}.ol-popup.placemark{color:#c00;margin:-.65em 0;transform:translateY(-1.3em)}.ol-popup.placemark>div{width:2em;height:2em;min-width:unset;box-sizing:border-box;background-color:#fff;border:0;border-radius:50%;font-size:15px;position:relative;box-shadow:inset 0 0 0 .45em}.ol-popup.placemark .ol-popup-content{cursor:default;text-align:center;width:1em;height:1em;padding:.25em 0;line-height:1em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-popup.placemark .anchor{margin:0}.ol-popup.placemark .anchor:before{content:"";background:0 0;border-radius:50%;width:1em;height:.5em;margin:-.5em;box-shadow:0 1em .5em #00000080}.ol-popup.placemark .anchor:after{content:"";border:.7em solid #0000;border-top:1em solid;border-bottom:0 solid;margin:-.75em -.7em;bottom:0}.ol-popup.placemark.shield>div{border-radius:.2em}.ol-popup.placemark.shield .anchor:after{border-width:.8em 1em 0;margin:-.7em -1em}.ol-popup.placemark.blazon>div{border-radius:.2em}.ol-popup.placemark.pushpin{margin:-2.2em 0;transform:translateY(-4em)}.ol-popup.placemark.pushpin>div{border-radius:0;width:1.1em;box-shadow:inset 2em 0;background:0 0!important}.ol-popup.placemark.pushpin>div:before{content:"";pointer-events:none;border:.5em solid #0000;border-top:.3em solid;border-bottom-color:currentColor;width:1.3em;height:1.5em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-popup.placemark.needle{margin:-2em 0;transform:translateY(-4em)}.ol-popup.placemark.pushpin .anchor,.ol-popup.placemark.needle .anchor{margin:-1.2em}.ol-popup.placemark.pushpin .anchor:after,.ol-popup.placemark.needle .anchor:after{border-style:solid;border-width:2em .15em 0;width:.1em;margin:-.55em -.2em}.ol-popup.placemark.pushpin .anchor:before,.ol-popup.placemark.needle .anchor:before{margin:-.75em -.5em}.ol-popup.placemark.flagv{margin:-2em 1em;transform:translateY(-4em)}.ol-popup.placemark.flagv>div{-webkit-box-shadow:none;box-shadow:none;background-color:#0000;border-radius:0}.ol-popup.placemark.flagv>div:before{content:"";pointer-events:none;border:1em solid #0000;border-left:2em solid;position:absolute}.ol-popup.placemark.flagv .anchor{margin:-1.4em}.ol-popup.placemark.flag{margin:-2em 1em;transform:translateY(-4em)}.ol-popup.placemark.flag>div{border-radius:0;transform-origin:0 150%!important}.ol-popup.placemark.flag .anchor{margin:-1.4em}.ol-popup.placemark.flagv .anchor:after,.ol-popup.placemark.flag .anchor:after{border-style:solid;border-width:2em .15em 0;width:.1em;margin:-.55em -1em}.ol-popup.placemark.flagv .anchor:before,.ol-popup.placemark.flag .anchor:before{margin:-.75em -1.25em}.ol-popup.placemark.flag.finish{margin:-2em 1em}.ol-popup.placemark.flag.finish>div{background-image:linear-gradient(45deg,currentColor 25%,#0000 25% 75%,currentColor 75%,currentColor),linear-gradient(45deg,currentColor 25%,#0000 25% 75%,currentColor 75%,currentColor);background-position:.5em 0,0 .5em;background-size:1em 1em;box-shadow:inset 0 0 0 .25em}.ol-popup.black .closeBox{color:#f80;background-color:#00000080;border-radius:5px}.ol-popup.black .closeBox:hover{color:#da2;background-color:#000000b3}.ol-popup.black{margin:-20px 0;transform:translateY(-40px)}.ol-popup.black>div{color:#fff;background-color:#0009;border-radius:5px}.ol-popup-top.ol-popup.black{margin:20px 0;transform:none}.ol-popup-left.black{margin:-20px -22px;transform:translateY(-40px)}.ol-popup-top.ol-popup-left.black{margin:20px -22px;transform:none}.ol-popup-right.black{margin:-20px 22px;transform:translate(44px,-40px)}.ol-popup-top.ol-popup-right.black{margin:20px 22px;transform:translate(44px)}.ol-popup-middle.black{margin:0 11px;transform:none}.ol-popup-left.ol-popup-middle.black{transform:none}.ol-popup-right.ol-popup-middle.black{margin:0 -11px;transform:translate(-22px)}.ol-popup.black .anchor{color:#0009;margin:-20px 11px}.ol-popup.black .anchor:before{content:"";border:20px solid;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.black .anchor:before{border-top:0;top:0}.ol-popup-bottom.black .anchor:before{border-bottom:0;bottom:0}.ol-popup-middle.black .anchor:before{border-color:#0000 currentColor;margin:-20px -22px}.ol-popup-middle.ol-popup-left.black .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.black .anchor:before{border-right:0}.ol-popup-center.black .anchor:before{margin:0 -10px}.ol-popup.tips .closeBox{color:#fff;background-color:red;border-radius:50%;width:1.2em;height:1.2em}.ol-popup.tips .closeBox:hover{background-color:#f40}.ol-popup.tips{margin:-20px 0;transform:translateY(-40px)}.ol-popup.tips>div{color:#333;background-color:#cea;border:5px solid #ad7;border-radius:5px}.ol-popup-top.ol-popup.tips{margin:20px 0;transform:none}.ol-popup-left.tips{margin:-20px -22px;transform:translateY(-40px)}.ol-popup-top.ol-popup-left.tips{margin:20px -22px;transform:none}.ol-popup-right.tips{margin:-20px 22px;transform:translate(44px,-40px)}.ol-popup-top.ol-popup-right.tips{margin:20px 22px;transform:translate(44px)}.ol-popup-middle.tips{margin:0;transform:none}.ol-popup-left.ol-popup-middle.tips{margin:0 22px;transform:none}.ol-popup-right.ol-popup-middle.tips{margin:0 -22px;transform:translate(-44px)}.ol-popup.tips .anchor{color:#ad7;margin:-18px 22px}.ol-popup.tips .anchor:before{content:"";border:20px solid;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.tips .anchor:before{border-top:0;top:0}.ol-popup-bottom.tips .anchor:before{border-bottom:0;bottom:0}.ol-popup-center.tips .anchor:before{border-width:20px 6px;margin:0 -6px}.ol-popup-left.tips .anchor:before{border-left:0;margin-left:0}.ol-popup-right.tips .anchor:before{border-right:0;margin-right:0}.ol-popup-middle.tips .anchor:before{border-width:6px 20px;border-color:#0000 currentColor;margin:-6px -41px}.ol-popup-middle.ol-popup-left.tips .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.tips .anchor:before{border-right:0}.ol-popup.warning .closeBox{color:#fff;background-color:red;border-radius:50%;font-size:.83em}.ol-popup.warning .closeBox:hover{background-color:#f40}.ol-popup.warning{color:#900;background-color:#fd0;border:4px dashed red;border-radius:3px;margin:-28px 10px;transform:translateY(-56px)}.ol-popup-top.ol-popup.warning{margin:28px 10px;transform:none}.ol-popup-left.warning{margin:-28px -22px;transform:translateY(-56px)}.ol-popup-top.ol-popup-left.warning{margin:28px -22px;transform:none}.ol-popup-right.warning{margin:-28px 22px;transform:translate(44px,-56px)}.ol-popup-top.ol-popup-right.warning{margin:28px 22px;transform:translate(44px)}.ol-popup-middle.warning{margin:0;transform:none}.ol-popup-left.ol-popup-middle.warning{margin:0 22px;transform:none}.ol-popup-right.ol-popup-middle.warning{margin:0 -22px;transform:translate(-44px)}.ol-popup.warning .anchor{margin:-33px 7px}.ol-popup.warning .anchor:before{content:"";border:30px solid red;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.warning .anchor:before{border-top:0;top:0}.ol-popup-bottom.warning .anchor:before{border-bottom:0;bottom:0}.ol-popup-center.warning .anchor:before{margin:0 -21px}.ol-popup-middle.warning .anchor:before{border-width:10px 22px;border-color:#0000 red;margin:-10px -33px}.ol-popup-middle.ol-popup-left.warning .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.warning .anchor:before{border-right:0}.ol-popup .ol-popupfeature table{width:100%}.ol-popup .ol-popupfeature table td{text-overflow:ellipsis;max-width:25em;overflow:hidden}.ol-popup .ol-popupfeature table td img{max-width:100px;max-height:100px}.ol-popup .ol-popupfeature tr:nth-child(odd){background-color:#eee}.ol-popup .ol-popupfeature .ol-zoombt{color:#003c8880;background:0 0;border:0;outline:none;width:2em;height:2em;display:inline-block;position:relative}.ol-popup .ol-popupfeature .ol-zoombt:before{content:"";box-sizing:border-box;background-color:#0000;border:.17em solid;border-radius:100%;width:1em;height:1em;position:absolute;top:.3em;left:.3em}.ol-popup .ol-popupfeature .ol-zoombt:after{content:"";box-sizing:border-box;border-style:solid;border-width:.1em .3em;border-radius:.03em;position:absolute;top:1.35em;left:1.15em;transform:rotate(45deg);box-shadow:-.2em 0 0 -.04em}.ol-popup .ol-popupfeature .ol-count{float:right;margin:.25em 0}.ol-popup .ol-popupfeature .ol-prev,.ol-popup .ol-popupfeature .ol-next{vertical-align:bottom;cursor:pointer;border:.5em solid #0000;border-left-color:#003c8880;border-right:0 solid #003c8880;margin:0 .5em;display:inline-block}.ol-popup .ol-popupfeature .ol-prev{border-width:.5em .5em .5em 0}.ol-popup.tooltips.black{background-color:#0000}.ol-popup.tooltips.black>div{background-color:#00000080;padding:.2em .5em;transform:scaleY(1.3)}.ol-popup-middle.tooltips.black .anchor:before{border-width:5px 10px;margin:-5px -21px}.ol-popup-center.ol-popup-middle,.ol-popup-top.ol-popup-left.ol-fixPopup,.ol-popup-top.ol-popup-right.ol-fixPopup,.ol-popup.ol-fixPopup{margin:0}.ol-miniscroll{position:relative}.ol-miniscroll:hover .ol-scroll{opacity:.5;transition:opacity 1s}.ol-miniscroll .ol-scroll{-ms-touch-action:none;touch-action:none;opacity:0;z-index:1;border-radius:9px;width:9px;height:auto;max-height:100%;transition:opacity 1s .5s;position:absolute;right:0;overflow:hidden}.ol-miniscroll .ol-scroll>div{-ms-touch-action:none;touch-action:none;box-sizing:border-box;cursor:pointer;border:2px solid #0000;border-radius:9px/12px;width:9px;height:9px;position:absolute;top:0;right:0;box-shadow:inset 10px 0}.ol-miniscroll .ol-scroll.ol-100pc{opacity:0}.ol-viewport canvas.ol-fixedoverlay{width:100%;height:100%;position:absolute;top:0;left:0}.ol-ext-toggle-switch{cursor:pointer;position:relative}.ol-ext-toggle-switch input[type=radio],.ol-ext-toggle-switch input[type=checkbox]{opacity:0;width:0;height:0;margin:0;padding:0;display:inline-block}.ol-ext-toggle-switch span{color:#003c8880;cursor:pointer;vertical-align:middle;background-color:#ccc;border-radius:1em;width:1.6em;height:1em;margin:-.15em .2em .15em;font-size:1.3em;transition:all .4s,background-color,border-color,box-shadow;display:inline-block;position:relative}.ol-ext-toggle-switch span:before{content:"";box-sizing:border-box;background-color:#fff;border:2px solid #ccc;border-radius:1em;width:1em;height:1em;transition:all .4s;display:block;position:absolute;top:50%;left:0;transform:translateY(-50%)}.ol-ext-toggle-switch:hover span{background-color:#999}.ol-ext-toggle-switch:hover span:before{border-color:#999}.ol-ext-toggle-switch input:checked+span{background-color:currentColor}.ol-ext-toggle-switch input:checked+span:before{border-color:currentColor;transform:translate(.6em,-50%)}.ol-ext-check{display:inline-block;position:relative}.ol-ext-check input{opacity:0;cursor:pointer;width:0;height:0;margin:0;padding:0;display:inline-block;position:absolute}.ol-ext-check span{color:#003c8880;vertical-align:middle;background-color:#ccc;width:1em;height:1em;margin:-.1em .5em .1em;display:inline-block;position:relative}.ol-ext-check:hover span{background-color:#999}.ol-ext-checkbox input:checked~span{background-color:currentColor}.ol-ext-checkbox input:checked~span:before{content:"";width:.5em;height:.8em;position:absolute;top:50%;left:50%;transform:translateY(-.1em)translate(-50%,-50%)rotate(45deg);box-shadow:inset -.2em -.2em #fff}.ol-ext-radio span{border-radius:50%;width:1.1em;height:1.1em}.ol-ext-radio:hover input:checked~span{background-color:#ccc}.ol-ext-radio input:checked~span:before{content:"";background-color:currentColor;border-radius:50%;width:50%;height:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-ext-toggle-switch input:focus-visible+span,.ol-ext-check input:focus-visible+span{box-shadow:inset 0 0 0 1px #fff,0 0 0 1.8px #000c}.ol-collection-list{margin:0;padding:0;list-style:none}.ol-collection-list li{padding:0 2em 0 1em;position:relative}.ol-collection-list li:hover{background-color:#003c8833}.ol-collection-list li.ol-select{color:#fff;background-color:#003c8880}.ol-collection-list li .ol-order{-ms-touch-action:none;touch-action:none;cursor:n-resize;-webkit-user-select:none;user-select:none;width:2em;height:100%;position:absolute;top:50%;right:0;transform:translateY(-50%)}.ol-collection-list li .ol-order:before{content:"";background-color:currentColor;border-radius:2px;width:18px;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 5px,0 -5px}.ol-collection-list li>input.ol-input-focus{opacity:0;z-index:-1;width:0;height:0;position:absolute}.ol-collection-list li:has(>input.ol-input-focus:focus){outline:2px solid #369}.ol-ext-colorpicker.ol-popup{background-color:#0000;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 -1px,5px 4px;background-size:10px 10px;width:2em;height:1.5em}.ol-ext-colorpicker .ol-tabbar{background-color:#eee;border-bottom:1px solid #999;display:none}.ol-ext-colorpicker.ol-tab .ol-tabbar{display:block}.ol-ext-colorpicker .ol-tabbar>div{cursor:pointer;background-color:#fff;border:1px solid #999;border-radius:2px 2px 0 0;padding:0 .5em;display:inline-block;position:relative;top:1px}.ol-ext-colorpicker .ol-tabbar>div:first-child{border-bottom-color:#fff}.ol-ext-colorpicker.ol-picker-tab .ol-tabbar>div:first-child{border-bottom-color:#999}.ol-ext-colorpicker.ol-picker-tab .ol-tabbar>div:nth-child(2){border-bottom-color:#fff}.ol-ext-colorpicker.ol-popup.ol-tab .ol-popup{width:180px}.ol-ext-colorpicker.ol-tab .ol-palette{margin:0 10px}.ol-ext-colorpicker.ol-tab .ol-container{display:none}.ol-ext-colorpicker.ol-tab.ol-picker-tab .ol-container{display:block}.ol-ext-colorpicker.ol-tab.ol-picker-tab .ol-palette{display:none}.ol-ext-colorpicker.ol-popup .ol-popup{width:340px}.ol-ext-colorpicker.ol-popup .ol-vignet{content:"";pointer-events:none;background-color:currentColor;border:0;width:100%;height:100%;position:absolute;top:0;left:0}.ol-ext-colorpicker .ol-container{vertical-align:top;display:inline-block;position:relative}.ol-ext-colorpicker .ol-cursor{pointer-events:none}.ol-ext-colorpicker .ol-picker{cursor:crosshair;background-color:currentColor;background-image:-webkit-gradient(linear, left top, left bottom, from(0), color-stop(#000), to(transparent)), -webkit-gradient(linear, left top, right top, from(#fff), to(transparent));background-image:linear-gradient(#0000,#000),linear-gradient(90deg,#fff,#0000);border:5px solid #fff;width:150px;height:150px;position:relative}.ol-ext-colorpicker .ol-picker .ol-cursor{border:1px solid #000000b3;border-radius:50%;width:10px;height:10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #ffffffb3}.ol-ext-colorpicker .ol-slider{cursor:crosshair;background-color:#fff;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 -1px,5px 4px;background-size:10px 10px;border:0 solid #fff;border-width:0 5px;width:150px;height:10px;margin:5px 0 10px;position:relative}.ol-ext-colorpicker .ol-slider>div{pointer-events:none;background-image:linear-gradient(45deg,#0000,#fff);width:100%;height:100%}.ol-ext-colorpicker .ol-slider .ol-cursor{background:0 0;border:1px solid #000;width:4px;height:12px;position:absolute;top:50%;left:0;transform:translate(-50%,-50%)}.ol-ext-colorpicker .ol-tint{cursor:crosshair;box-sizing:border-box;background-image:-webkit-gradient(linear, left top, left bottom, from(0), color-stop(red), color-stop(#f0f), color-stop(#00f), color-stop(#0ff), color-stop(#0f0), color-stop(#ff0), to(red));background-image:linear-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red);border:5px solid #fff;border-width:5px 0;width:10px;height:150px;position:absolute;top:0;right:5px}.ol-ext-colorpicker .ol-tint .ol-cursor{border:1px solid #000;width:12px;height:4px;position:absolute;top:0;left:50%;transform:translate(-50%,-50%)}.ol-ext-colorpicker .ol-clear{border:2px solid #999;width:10px;height:10px;position:absolute;top:163px;right:4px}.ol-ext-colorpicker .ol-clear:before,.ol-ext-colorpicker .ol-clear:after{content:"";background-color:#999;width:15px;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-ext-colorpicker .ol-clear:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-ext-colorpicker.ol-nopacity .ol-slider,.ol-ext-colorpicker.ol-nopacity .ol-clear,.ol-ext-colorpicker.ol-nopacity .ol-alpha{display:none}.ol-ext-colorpicker .ol-rgb{width:170px;padding:5px;display:none;position:relative}.ol-ext-colorpicker .ol-rgb input{box-sizing:border-box;border:1px solid #999;border-radius:2px;width:25%;padding:0 0 0 2px;font-size:13px}.ol-ext-colorpicker .ol-rgb input:first-child{background-color:#ff00001a}.ol-ext-colorpicker .ol-rgb input:nth-child(2){background-color:#00ff001a}.ol-ext-colorpicker .ol-rgb input:nth-child(3){background-color:#0000ff1f}.ol-ext-colorpicker button,.ol-ext-colorpicker .ol-txt-color{text-align:center;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:170px;margin:0 5px 5px;padding:0;font-size:13px;display:block}.ol-ext-colorpicker .ol-txtcolor{width:170px;margin:0 5px}.ol-ext-colorpicker .ol-txtcolor input.ol-txt-color{width:100%;margin:0}.ol-ext-colorpicker.eyedropper .ol-txtcolor input.ol-txt-color{width:calc(100% - 2em);height:2em;margin:0;display:inline-block}.ol-ext-colorpicker button{background-color:#eee}.ol-ext-colorpicker button:hover{background-color:#e9e9e9}.ol-ext-colorpicker button.ol-eyedropper{vertical-align:middle;width:2em;height:2em;margin:0;display:inline-block;position:relative}.ol-ext-colorpicker button.ol-eyedropper:before{content:"";background-color:#999;width:100%;height:100%;position:absolute;top:0;left:0;-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20width='24'%20height='24'%3e%3cpath%20d='m18.203%203.676%202.121%202.121a1%201%200%200%201%200%201.414l-2.828%202.829%201.767%201.768-1.414%201.414-1.414-1.414L7.243%2021H3v-4.243l9.192-9.192-1.414-1.414%201.414-1.414%201.768%201.767%202.829-2.828a1%201%200%200%201%201.414%200Zm-4.596%205.303-8.564%208.564%201.414%201.414%208.564-8.564-1.414-1.414Z'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20width='24'%20height='24'%3e%3cpath%20d='m18.203%203.676%202.121%202.121a1%201%200%200%201%200%201.414l-2.828%202.829%201.767%201.768-1.414%201.414-1.414-1.414L7.243%2021H3v-4.243l9.192-9.192-1.414-1.414%201.414-1.414%201.768%201.767%202.829-2.828a1%201%200%200%201%201.414%200Zm-4.596%205.303-8.564%208.564%201.414%201.414%208.564-8.564-1.414-1.414Z'/%3e%3c/svg%3e");-webkit-mask-size:100% 100%;mask-size:100% 100%}.ol-ext-colorpicker .ol-txt-color.ol-error{background-color:#f003}.ol-ext-colorpicker .ol-palette{width:152px;padding:2px;display:inline-block}.ol-ext-colorpicker .ol-palette>div{cursor:pointer;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 0,5px 5px;background-size:10px 10px;border-radius:1px;width:15px;height:15px;margin:2px;display:inline-block;position:relative;box-shadow:0 0 2px #666}.ol-ext-colorpicker .ol-palette>div:before{content:"";background-color:currentColor;width:100%;height:100%;position:absolute}.ol-ext-colorpicker .ol-palette>div.ol-select:after{content:"";width:6px;height:12px;position:absolute;top:30%;left:50%;transform:translate(-50%,-50%)rotate(45deg);box-shadow:1px 1px #fff,2px 2px #000}.ol-ext-colorpicker .ol-palette>div:hover{box-shadow:0 0 2px 1px #d90}.ol-ext-colorpicker .ol-palette hr{margin:0}.ol-input-hidden{opacity:0;width:0;height:0;margin:0;padding:0;display:block;position:absolute}.ol-input-popup{display:inline-block;position:relative}.ol-input-popup .ol-popup{z-index:1;white-space:nowrap;background-color:#fff;margin:0;padding:0;list-style:none;display:none;position:absolute;left:-5px;box-shadow:1px 1px 3px 1px #999}.ol-input-popup.ol-hover:hover .ol-popup,.ol-input-popup.ol-focus .ol-popup{display:block}.ol-input-popup.ol-right .ol-popup{left:auto;right:-5px}.ol-input-popup.ol-middle .ol-popup{top:50%;transform:translateY(-50%)}.ol-input-popup .ol-popup li{padding:10px 5px;position:relative}.ol-input-popup li:hover,.ol-input-popup li.ol-selected{background-color:#ccc}.ol-input-popup.ol-fixed:hover .ol-popup,.ol-input-popup.ol-fixed .ol-popup{-webkit-box-shadow:unset;box-shadow:unset;vertical-align:middle;background-color:#0000;display:inline-block;position:relative;left:0}.ol-input-popup.ol-fixed.ol-left .ol-popup{float:left}.ol-input-popup>div{vertical-align:middle;border:1px solid #999;border-radius:2px;padding:3px 20px 3px 10px;display:inline-block;position:relative}.ol-input-popup>div:before{content:"";border:5px solid #0000;border-top-color:#999;position:absolute;top:50%;right:5px}.ol-ext-popup-input{vertical-align:top;display:inline-block}.ol-ext-popup-input.ol-popup{box-sizing:content-box;-webkit-user-select:none;user-select:none;vertical-align:middle;border:3px solid #fff;border-right-width:1em;border-radius:2px;width:2em;height:1.5em;display:inline-block;position:relative;box-shadow:0 0 2px 1px #666}.ol-ext-popup-input.ol-popup:after{content:"";pointer-events:none;border:.3em solid #0000;border-top:.5em solid #999;border-bottom:0 solid #999;position:absolute;top:50%;right:-.8em;transform:translateY(-50%)}.ol-ext-popup-input *{box-sizing:content-box}.ol-ext-popup-input.ol-popup .ol-popup{z-index:1;background-color:#fff;min-width:3em;min-height:3em;display:none;position:absolute;top:100%;left:0;box-shadow:1px 1px 3px 1px #999}.ol-ext-popup-input.ol-popup .ol-popup.ol-visible{display:block}.ol-ext-popup-input.ol-popup-fixed .ol-popup{position:fixed;top:auto;left:auto}.ol-input-popup.ol-size li{vertical-align:middle;height:100%;padding:5px;display:table-cell}.ol-input-popup.ol-size li>*{vertical-align:middle;background-color:#369;border-radius:50%;width:1em;height:1em}.ol-input-popup.ol-size li>.ol-option-0{color:#aaa;box-sizing:border-box;background-color:#0000;border:2px solid;width:1em;height:1em;position:relative}.ol-input-popup.ol-size li>:before{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-input-popup.ol-size li>.ol-option-0:before{content:"";background-color:#aaa;width:1em;height:2px;transform:translate(-50%,-50%)rotate(-45deg)}.ol-input-slider{display:inline-block;position:relative}.ol-input-slider .ol-popup{z-index:1;background-color:#fff;display:none;position:absolute;left:-5px;box-shadow:1px 1px 3px 1px #999}.ol-input-slider.ol-right .ol-popup{left:auto;right:-5px}.ol-input-slider.ol-hover:hover .ol-popup,.ol-input-slider.ol-focus .ol-popup{white-space:nowrap;display:block}.ol-input-slider.ol-hover:hover .ol-popup>*,.ol-input-slider.ol-focus .ol-popup>*{vertical-align:middle;display:inline-block}.ol-input-slider.ol-hover:hover .ol-popup>.ol-before,.ol-input-slider.ol-focus .ol-popup>.ol-before{margin-left:10px}.ol-input-slider.ol-hover:hover .ol-popup>.ol-after,.ol-input-slider.ol-focus .ol-popup>.ol-after{margin-right:10px}.ol-input-slider .ol-slider{vertical-align:middle;box-sizing:content-box;cursor:pointer;border:10px solid #0000;border-width:10px 15px;width:100px;height:3px;display:inline-block;position:relative;box-shadow:inset 0 0 0 1px #999}.ol-input-slider .ol-slider>.ol-cursor{pointer-events:none;background-color:#999;width:5px;height:10px;position:absolute;top:50%;transform:translate(-50%,-50%)}.ol-input-range .ol-slider{cursor:default;width:150px}.ol-input-range .ol-slider>.ol-cursor{pointer-events:all;cursor:pointer;background-color:#003c88;border-radius:50%;width:10px}.ol-input-range.ol-moving .ol-slider>.ol-cursor{pointer-events:none}.ol-input-range .ol-slider>.ol-back{pointer-events:none;background-color:#003c88;height:100%;position:absolute;top:50%;left:30%;right:20%;transform:translateY(-50%)}.ol-input-slider.ol-fixed:hover .ol-popup,.ol-input-slider.ol-fixed .ol-popup{-webkit-box-shadow:unset;box-shadow:unset;vertical-align:middle;background-color:#0000;display:inline-block;position:relative;left:0}.ol-input-slider.ol-fixed.ol-left .ol-popup{float:left}.ol-input-slider.ol-size .ol-slider{height:auto;-webkit-box-shadow:none;box-shadow:none}.ol-input-slider.ol-size .ol-slider .ol-back{color:#aaa;pointer-events:none;border-top:0 solid;border-bottom:20px solid;border-left:100px solid #0000;border-right:0 solid #0000;width:0}.ol-input-slider.ol-size .ol-slider>.ol-cursor{border:5px solid red;border-left:3px solid #0000;border-right:3px solid #0000;-o-border-image:initial;border-image:initial;background-color:#0000;width:2px;height:calc(100% + 4px);box-shadow:inset 3px 0 red}.ol-input-popup.ol-width li{padding:5px}.ol-input-popup.ol-width li>*{background-color:#369;width:100px;height:1em}.ol-input-popup.ol-width li>.ol-option-0{background-color:#0000;background-image:linear-gradient(90deg,#aaa 2px,#0000 2px);background-size:4px;height:1px;position:relative}html,body{height:100%;margin:0;padding:0}body{flex-direction:column;display:flex}.map{flex:1;width:100%;min-height:512px}.map .ol-custom-overviewmap,.map .ol-custom-overviewmap.ol-uncollapsible{inset:6pt 6pt auto auto}.ol-scale-bar{font-family:Calibri,sans-serif;bottom:6pt;left:6pt}.ol-mouse-position{z-index:100;background-color:#ffffff80;border-radius:3pt;padding:1pt;font-family:Calibri,sans-serif;position:absolute;inset:auto 6pt 6pt auto}.ol-layerswitcher,.ol-control.ol-layerswitcher{top:6pt;left:30pt;right:auto}.ol-layerswitcher button{float:left}.ol-rotate{position:absolute;top:47pt;left:6pt;right:auto}.ol-full-screen{position:absolute;top:70pt;left:6pt;right:auto}.ol-screen-space-graticule{position:absolute;top:93pt;left:6pt;right:auto}.ol-graticule{position:absolute;top:116pt;left:6pt;right:auto} +:root,:host{--ol-background-color:white;--ol-accent-background-color:#f5f5f5;--ol-subtle-background-color:#80808040;--ol-partial-background-color:#ffffffbf;--ol-foreground-color:#333;--ol-subtle-foreground-color:#666;--ol-brand-color:#0af}.ol-box{box-sizing:border-box;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color);border-radius:2px}.ol-mouse-position{position:absolute;top:8px;right:8px}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;padding:2px;position:absolute;bottom:8px;left:8px}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-align:center;will-change:contents, width;border-top:none;margin:1px;font-size:10px;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{background-color:var(--ol-foreground-color);float:right;z-index:10;width:1px;height:15px}.ol-scale-step-text{z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:10px;position:absolute;bottom:-5px}.ol-scale-text{text-align:center;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:12px;position:absolute;bottom:25px}.ol-scale-singlebar{z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color);height:10px;position:relative}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset;overflow:hidden}.ol-viewport{touch-action:pan-x pan-y}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{background-color:var(--ol-subtle-background-color);border-radius:4px;position:absolute}.ol-zoom{top:.5em;left:.5em}.ol-rotate{transition:opacity .25s linear,visibility linear;top:.5em;right:.5em}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{top:.5em;right:.5em}.ol-control button{color:var(--ol-subtle-foreground-color);font-weight:700;font-size:inherit;text-align:center;background-color:var(--ol-background-color);border:none;border-radius:2px;width:1.375em;height:1.375em;margin:1px;padding:0;line-height:.4em;text-decoration:none;display:block}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{will-change:transform;font-weight:400;display:block}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-decoration:none}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;flex-flow:row-reverse;align-items:center;max-width:calc(100% - 1.3em);display:flex;bottom:.5em;right:.5em}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);margin:0;padding:1px .5em;font-size:12px}.ol-attribution li{list-style:none;display:inline}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{border-radius:4px 0 0;bottom:0;right:0}.ol-attribution.ol-uncollapsible img{max-height:1.6em;margin-top:-.2em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{height:200px;top:4.5em;left:.5em}.ol-zoomslider button{height:10px;position:relative}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{bottom:.5em;left:.5em}.ol-overviewmap.ol-uncollapsible{border-radius:0 4px 0 0;bottom:0;left:0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);width:150px;height:150px}.ol-overviewmap:not(.ol-collapsed) button{position:absolute;bottom:0;left:0}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.ol-overviewmap .ol-viewport:hover{cursor:pointer}.ol-control i{cursor:default}.ol-control.ol-bar{white-space:nowrap;min-width:1em;min-height:1em;position:absolute;top:.5em;left:50%;transform:translate(-50%)}.ol-control.ol-toggle .ol-option-bar{display:none}.ol-control.ol-bar .ol-control{vertical-align:middle;background-color:#0000;margin:0;padding:0;display:inline-block;position:relative;inset:auto;transform:none}.ol-control.ol-bar .ol-bar{position:static}.ol-control.ol-bar .ol-control button{outline:none;margin:2px 1px}.ol-control.ol-bar.ol-left{top:50%;left:.5em;transform:translateY(-50%)}.ol-control.ol-bar.ol-left .ol-control{display:block}.ol-control.ol-bar.ol-right{top:50%;left:auto;right:.5em;transform:translateY(-50%)}.ol-control.ol-bar.ol-right .ol-control{display:block}.ol-control.ol-bar.ol-bottom{top:auto;bottom:.5em}.ol-control.ol-bar.ol-top.ol-left,.ol-control.ol-bar.ol-top.ol-right{top:4.5em;transform:none}.ol-touch .ol-control.ol-bar.ol-top.ol-left,.ol-touch .ol-control.ol-bar.ol-top.ol-right{top:5.5em}.ol-control.ol-bar.ol-bottom.ol-left,.ol-control.ol-bar.ol-bottom.ol-right{top:auto;bottom:.5em;transform:none}.ol-control.ol-bar.ol-group{margin:1px 1px 1px 0}.ol-control.ol-bar.ol-right .ol-group,.ol-control.ol-bar.ol-left .ol-group{margin:1px 1px 0}.ol-control.ol-bar.ol-group button{border-radius:0;margin:0 0 0 1px}.ol-control.ol-bar.ol-right.ol-group button,.ol-control.ol-bar.ol-left.ol-group button,.ol-control.ol-bar.ol-right .ol-group button,.ol-control.ol-bar.ol-left .ol-group button{margin:0 0 1px}.ol-control.ol-bar.ol-group .ol-control:first-child>button{border-radius:5px 0 0 5px}.ol-control.ol-bar.ol-group .ol-control:last-child>button{border-radius:0 5px 5px 0}.ol-control.ol-bar.ol-left.ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-right.ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-left .ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-right .ol-group .ol-control:first-child>button{border-radius:5px 5px 0 0}.ol-control.ol-bar.ol-left.ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-right.ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-left .ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-right .ol-group .ol-control:last-child>button{border-radius:0 0 5px 5px}.ol-control.ol-bar .ol-rotate{opacity:1;visibility:visible}.ol-control.ol-bar .ol-rotate button{display:block}.ol-control.ol-bar .ol-toggle.ol-active>button,.ol-control.ol-bar .ol-toggle.ol-active button:hover{color:#fff;background-color:#0af}.ol-control.ol-toggle button:disabled{background-color:#ccc}.ol-control.ol-bar .ol-control.ol-option-bar{background-color:#fffc;border-radius:0;margin:5px 0;display:none;position:absolute;top:100%;left:0;box-shadow:0 0 0 1px #003c8880,1px 1px 2px #00000080}.ol-control.ol-bar .ol-option-bar:before{content:"";pointer-events:none;border:.5em solid #0000;border-bottom-color:#003c8880;position:absolute;bottom:100%;left:.3em}.ol-control.ol-bar .ol-option-bar .ol-control{display:table-cell}.ol-control.ol-bar .ol-control .ol-bar{display:none}.ol-control.ol-bar .ol-control.ol-active>.ol-option-bar{display:block}.ol-control.ol-bar .ol-control.ol-collapsed ul{display:none}.ol-control.ol-bar .ol-control.ol-text-button>div:hover,.ol-control.ol-bar .ol-control.ol-text-button>div{color:#003c8880;background-color:#0000;width:auto;min-width:1.375em;margin:0}.ol-control.ol-bar .ol-control.ol-text-button{border-left:1px solid #003c88cc;border-radius:0;font-size:.9em}.ol-control.ol-bar .ol-control.ol-text-button:first-child{border-left:0}.ol-control.ol-bar .ol-control.ol-text-button>div{padding:.11em .3em;font-family:Arial,Helvetica,sans-serif;font-size:1.14em;font-weight:400}.ol-control.ol-bar .ol-control.ol-text-button div:hover{color:#003c88}.ol-control.ol-bar.ol-bottom .ol-option-bar{top:auto;bottom:100%}.ol-control.ol-bar.ol-bottom .ol-option-bar:before{border-color:#003c8880 #0000 #0000;top:100%;bottom:auto}.ol-control.ol-bar.ol-left .ol-option-bar{margin:0 5px;top:0;bottom:auto;left:100%}.ol-control.ol-bar.ol-left .ol-option-bar:before{border-color:#0000 #003c8880 #0000 #0000;inset:.3em 100% auto auto}.ol-control.ol-bar.ol-right .ol-option-bar{margin:0 5px;inset:0 100% auto auto}.ol-control.ol-bar.ol-right .ol-option-bar:before{border-color:#0000 #0000 #0000 #003c8880;top:.3em;bottom:auto;left:100%}.ol-control.ol-bar.ol-left .ol-option-bar .ol-option-bar,.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar{margin:5px 0;inset:100% auto auto .3em}.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar{left:auto;right:.3em}.ol-control.ol-bar.ol-left .ol-option-bar .ol-option-bar:before,.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar:before{border-color:#0000 #0000 #003c8880;inset:auto auto 100% .3em}.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar:before{left:auto;right:.3em}.ol-control-title{position:absolute;top:0;left:0;right:0}.ol-center-position{background-color:#fffc;padding:.1em 1em;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.ol-compassctrl{display:none;top:1em;left:auto;right:1em}.ol-compassctrl.ol-visible{display:block!important}.ol-ext-dialog{opacity:0;z-index:1000;background-color:#00000080;width:150%;height:100%;transition:opacity .2s,top 0s .2s;position:fixed;top:-100%;left:0;pointer-events:none!important}.ol-ext-dialog.ol-visible{opacity:1;transition:opacity .2s,top;top:0;pointer-events:all!important}.ol-viewport .ol-ext-dialog{position:absolute}.ol-ext-dialog>form>h2{text-overflow:ellipsis;white-space:nowrap;margin:0 .5em .5em 0;display:none;overflow:hidden}.ol-ext-dialog>form.ol-title>h2{display:block}.ol-ext-dialog>form{box-sizing:border-box;background-color:#fff;border:1px solid #333;min-width:5em;max-width:60%;min-height:3em;max-height:100%;padding:1em;transition:top .2s,transform .2s;position:absolute;top:0;left:33.33%;overflow:hidden auto;transform:translate(-50%,-30%);box-shadow:3px 3px 4px #00000080}dialog.ol-ext-dialog>form{width:max-content;max-width:90%;left:50%}.ol-ext-dialog>form.ol-closebox{padding-top:1.5em}.ol-ext-dialog>form.ol-title{padding-top:1em}.ol-ext-dialog>form.ol-button{padding-bottom:.5em}.ol-ext-dialog.ol-zoom>form{top:30%;transform:translate(-50%,-30%)scale(0)}.ol-ext-dialog.ol-visible>form{top:30%}.ol-ext-dialog.ol-zoom.ol-visible>form{transform:translate(-50%,-30%)scale(1)}.ol-ext-dialog>form .ol-content{overflow:hidden auto}.ol-ext-dialog>form .ol-closebox{cursor:pointer;width:1em;height:1em;display:none;position:absolute;top:.5em;right:.5em}.ol-ext-dialog>form.ol-closebox .ol-closebox{display:block}.ol-ext-dialog>form .ol-closebox:before,.ol-ext-dialog>form .ol-closebox:after{content:"";background-color:currentColor;border-radius:.1em;width:1em;height:.1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-ext-dialog>form .ol-closebox:before{transform:translate(-50%,-50%)rotate(-45deg)}.ol-ext-dialog>form .ol-buttons{text-align:right;overflow-x:hidden}.ol-ext-dialog>form .ol-buttons input{color:#003c88;cursor:pointer;background:0 0;border:0;border-radius:.25em;margin-top:.5em;padding:.5em;font-size:1em}.ol-ext-dialog>form .ol-buttons input:hover{background-color:#003c881a}.ol-ext-dialog>form .ol-buttons input[type=submit]{font-weight:700}.ol-ext-dialog .ol-progress-message{text-align:center;padding-bottom:.5em;font-size:.9em}.ol-ext-dialog .ol-progress-bar{border:1px solid #369;width:20em;max-width:100%;height:1em;margin:.5em auto 0;padding:2px;overflow:hidden}.ol-ext-dialog .ol-progress-bar>div{background:#369;width:50%;height:100%;transition:width .3s}.ol-ext-dialog .ol-progress-bar>div.notransition{transition:unset}.ol-ext-dialog.ol-fullscreen-dialog form{text-align:center;max-width:calc(66.6% - 2em);-webkit-box-shadow:none;box-shadow:none;color:#fff;background:0 0;border:none;inset:1em;transform:none}.ol-ext-dialog.ol-fullscreen-dialog form .ol-closebox{font-size:2em;top:0;right:0}.ol-ext-dialog.ol-fullscreen-dialog .ol-closebox:before,.ol-ext-dialog.ol-fullscreen-dialog .ol-closebox:after{border:.1em solid}.ol-ext-dialog.ol-fullscreen-dialog img,.ol-ext-dialog.ol-fullscreen-dialog video{max-width:100%}body>.ol-ext-dialog .ol-content{max-height:calc(100vh - 10em)}body>.ol-ext-dialog>form{overflow:visible}.ol-editbar .ol-button button{box-sizing:border-box;vertical-align:middle;font-style:normal;display:inline-block;position:relative}.ol-editbar .ol-button button:before,.ol-editbar .ol-button button:after{content:"";box-sizing:border-box;background-color:currentColor;border-width:0;position:absolute}.ol-editbar .ol-button button:focus{outline:none}.ol-editbar .ol-selection>button:before{background-color:#0000;border:.25em solid #0000;border-top:0 solid;border-bottom:.65em solid;width:.6em;height:1em;top:.35em;left:.5em;transform:translate(-50%,-50%)rotate(-30deg);box-shadow:0 .6em 0 -.23em}.ol-editbar .ol-selection0>button:after{background-color:#0000;border:.05em solid #0000;border-top:0 solid;border-bottom:.7em solid;width:.28em;height:.6em;top:.5em;left:.7em;transform:rotate(-45deg)}.ol-editbar .ol-delete button:after,.ol-editbar .ol-delete button:before{width:1em;height:.2em;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-editbar .ol-delete button:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-editbar .ol-info button:before{border-radius:.03em;width:.25em;height:.6em;top:.47em;left:50%;transform:translate(-50%)}.ol-editbar .ol-info button:after{border-radius:.03em;width:.25em;height:.2em;top:.12em;left:50%;transform:translate(-50%);box-shadow:-.1em .35em,-.1em .82em,.1em .82em}.ol-editbar .ol-drawpoint button:before{background-color:#0000;border:.15em solid;border-radius:50%;width:.7em;height:.7em;top:.2em;left:50%;transform:translate(-50%)}.ol-editbar .ol-drawpoint button:after{background-color:#0000;border:.2em solid #0000;border-top:.4em solid;border-bottom:0 solid;width:.4em;height:.4em;top:.8em;left:50%;transform:translate(-50%)}.ol-editbar .ol-drawline>button:before,.ol-editbar .ol-drawpolygon>button:before,.ol-editbar .ol-drawhole>button:before{background-color:#0000;border:.13em solid;border-width:.2em .13em .09em;width:.8em;height:.8em;top:.2em;left:.25em;transform:rotate(10deg)perspective(1em)rotateX(40deg)}.ol-editbar .ol-drawline>button:before{border-bottom:0}.ol-editbar .ol-drawline>button:after,.ol-editbar .ol-drawhole>button:after,.ol-editbar .ol-drawpolygon>button:after{width:.3em;height:.3em;top:.2em;left:.25em;box-shadow:-.2em .55em,.6em .1em,.65em .7em}.ol-editbar .ol-drawhole>button:after{box-shadow:-.2em .55em,.6em .1em,.65em .7em,.25em .35em}.ol-editbar .ol-offset>button i,.ol-editbar .ol-transform>button i{width:.9em;height:.9em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-editbar .ol-offset>button i{width:.8em;height:.8em}.ol-editbar .ol-offset>button i:before,.ol-editbar .ol-transform>button i:before,.ol-editbar .ol-transform>button i:after{content:"";background-color:currentColor;width:.1em;height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg);box-shadow:.5em 0 0 .1em,-.5em 0 0 .1em}.ol-editbar .ol-offset>button i:before{box-shadow:.45em 0 0 .1em,-.45em 0 0 .1em}.ol-editbar .ol-transform>button i:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-editbar .ol-split>button:before{border-radius:50%;width:.3em;height:.3em;top:.81em;left:.75em;box-shadow:.1em -.4em,-.15em -.25em}.ol-editbar .ol-split>button:after{background-color:#0000;border:.2em solid;border-width:0 .2em .2em 0;border-radius:.1em;width:.8em;height:.8em;top:.15em;left:-.1em;transform:rotate(20deg)scaleY(.6)rotate(-45deg)}.ol-editbar .ol-drawregular>button:before{background-color:#0000;border:.1em solid;width:.9em;height:.9em;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div{cursor:pointer;vertical-align:text-bottom;border:.5em solid #0000;border-color:#0000 currentColor;display:inline-block}.ol-editbar .ol-drawregular .ol-bar:before,.ol-control.ol-bar.ol-editbar .ol-drawregular .ol-bar{left:50%;transform:translate(-50%)}.ol-editbar .ol-drawregular .ol-bar .ol-text-button{text-align:center;min-width:6em}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div:first-child{border-width:.5em .5em .5em 0;margin:0 .5em 0 0}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div:last-child{border-width:.5em 0 .5em .5em;margin:0 0 0 .5em}.ol-feature-list{position:relative}.ol-control.ol-feature-list{width:100%;position:absolute;bottom:0;left:0}.ol-control.ol-feature-list>button:before{content:"";background-image:linear-gradient(90deg,currentColor,#0000);width:60%;height:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 2.5px}.ol-control.ol-feature-list.ol-collapsed{width:auto;bottom:.5em;left:.5em}.ol-feature-list .ol-content{clear:both;background-color:#f4f6f8}.ol-feature-list.ol-collapsed .ol-content>*{display:none}.ol-feature-list .ol-header{position:relative;overflow:hidden}.ol-feature-list.ol-collapsed .ol-header{display:block}.ol-control.ol-feature-list>button,.ol-control.ol-feature-list.ol-collapsed .ol-content{display:none}.ol-control.ol-feature-list.ol-collapsed>button{display:block}.ol-feature-list .ol-sizer{cursor:row-resize;background-color:#ccc;border:1px solid #f4f6f8;border-width:1px 0;width:100%;height:1px;position:relative}.ol-feature-list.ol-bottom .ol-sizer{position:absolute;bottom:0}.ol-feature-list .ol-sizer:before{content:"";z-index:1;background-color:#ddd;border:3px solid #0000;border-width:3px 1.5em;border-radius:2px;width:1.5em;height:4px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 -1px #aaa,inset 0 1px #aaa}.ol-feature-list .ol-sizer:hover:before{background-color:#ccc}.ol-feature-list .ol-content .ol-header p{vertical-align:middle;white-space:nowrap;text-overflow:ellipsis;width:calc(100% - 2em);margin:.1em .25em;display:inline-block;overflow:hidden}.ol-feature-list .ol-content .ol-header .ol-buttons{position:absolute;top:50%;right:0;transform:translateY(-50%)}.ol-feature-list .ol-content .ol-header button{vertical-align:middle;box-sizing:border-box;background:0 0;border:0;width:1em;height:1em;margin:0 .2em;position:relative}.ol-feature-list .ol-content .ol-header button.ol-closebox:before,.ol-feature-list .ol-content .ol-header button.ol-closebox:after{content:"";background:currentColor;width:.1em;height:1em;font-style:normal;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-feature-list .ol-content .ol-header button.ol-closebox:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox{border:1px solid}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox:before{transform:translate(-50%,-50%)rotate(90deg)}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox:after{display:none}.ol-feature-list .ol-scroll-container{height:10em;min-height:3em;overflow:auto}.ol-feature-list .ol-scroll-container:focus{outline:unset}.ol-feature-list table{border-collapse:collapse;white-space:nowrap;background-color:#fff;position:relative}.ol-feature-list table thead{background-color:#f4f6f8;position:sticky;top:0;overflow:hidden}.ol-feature-list table tr{box-sizing:border-box;height:1.4em}.ol-feature-list table tbody tr:hover{cursor:pointer;background-color:#eee}.ol-feature-list table tbody tr.ol-selected{background-color:#eee}.ol-feature-list table td{border:0 solid #ddd;border-width:0 0 1px 1px;width:100px;overflow:hidden}.ol-feature-list table td.number{text-align:right}.ol-feature-list table td.undefined{text-align:center;background-color:#fafafa}.ol-feature-list table tr:hover td,.ol-feature-list table .ol-selected td{background-color:#0000}.ol-feature-list thead td{position:relative}.ol-feature-list thead td.sort{padding-right:1.5em}.ol-feature-list thead td p{margin:0;display:inline-block}.ol-feature-list table td button{background-color:#0000;border:0;width:1.2em;height:1.4em;margin:.1em 0;padding:0;position:absolute;top:0;right:0}.ol-feature-list thead td button.sort:before{content:"⇅";cursor:pointer;font-size:1em;font-style:normal;font-weight:400;line-height:1em}.ol-feature-list thead td button.sortup:before{content:"↧"}.ol-feature-list thead td button.sortdown:before{content:"↥"}.ol-gauge{background-color:#ffffff80;padding:.1em .5em;top:.5em;left:50%;transform:translate(-50%)}.ol-gauge>*{vertical-align:middle;display:inline-block}.ol-gauge>span{margin:0 .5em 0 0}.ol-gauge>div{border:1px solid #003c8880;border-radius:3px;width:200px;padding:1px;display:inline-block}.ol-gauge button{max-width:100%;height:.8em;margin:0}.ol-control.ol-bookmark{background-color:#ffffff80;top:.5em;left:3em}.ol-control.ol-bookmark button{position:relative}.ol-control.ol-bookmark>button:before{content:"";border:5px solid;border-top-width:10px;border-bottom:4px solid #0000;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-bookmark>div{min-width:5em;display:block}.ol-control.ol-bookmark.ol-collapsed>div{display:none}.ol-control.ol-bookmark input{margin:0 .5em .5em;padding:0 .5em;font-size:.9em}.ol-control.ol-bookmark ul{min-width:10em;margin:0 0 .5em;padding:0;list-style:none}.ol-control.ol-bookmark li{color:#003c88cc;cursor:default;clear:both;padding:0 .2em 0 .5em;font-size:.9em}.ol-control.ol-bookmark li:hover{color:#fff;background-color:#003c8880}.ol-control.ol-bookmark>div button{float:right;cursor:pointer;background-color:#0000;border-radius:0;width:1em;height:.8em}.ol-control.ol-bookmark>div button:before{content:"⨯";color:#936;border-radius:0;font-size:1.2em;line-height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-bookmark ul li button,.ol-bookmark input{display:none}.ol-bookmark.ol-editable ul li button,.ol-bookmark.ol-editable input{display:block}.ol-control.ol-geobt{inset:auto .5em 3em auto}.ol-touch .ol-control.ol-geobt{bottom:3.5em}.ol-control.ol-geobt button:before{content:"";background:0 0;border:.16em solid;border-radius:50%;width:.4em;height:.4em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-geobt button:after{content:"";background:0 0;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.42em 0,-.42em 0,0 .42em,0 -.42em}.ol-control.ol-bar.ol-geobar .ol-control{vertical-align:middle;display:inline-block}.ol-control.ol-bar.ol-geobar .ol-bar{display:none}.ol-bar.ol-geobar.ol-active .ol-bar{display:inline-block}.ol-bar.ol-geobar .geolocBt button:before,.ol-bar.ol-geobar .geolocBt button:after{content:"";border-top:.3em solid;border-bottom:0 solid #0000;border-left:.2em solid #0000;border-right:.8em solid #0000;font-size:1.2em;display:block;position:absolute;top:.45em;left:.15em;transform:rotate(-30deg)}.ol-bar.ol-geobar .geolocBt button:after{border-width:0 .8em .3em .2em;border-color:#0000 #0000 currentColor;transform:rotate(-61deg)}.ol-bar.ol-geobar .startBt button:before{content:"";background-color:#800;border-radius:50%;width:1em;height:1em;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-bar.ol-geobar .pauseBt button:before,.ol-bar.ol-geobar .pauseBt button:after{content:"";background-color:currentColor;width:.25em;height:1em;display:block;position:absolute;top:50%;left:35%;transform:translate(-50%,-50%)}.ol-bar.ol-geobar .pauseBt button:after{left:65%}.ol-control.ol-bar.ol-geobar .centerBt,.ol-control.ol-bar.ol-geobar .pauseBt,.ol-bar.ol-geobar.pauseTrack .startBt,.ol-bar.ol-geobar.centerTrack .startBt,.ol-bar.ol-geobar.centerTrack.pauseTrack .pauseBt,.ol-bar.ol-geobar.centerTrack .pauseBt{display:none}.ol-bar.ol-geobar.pauseTrack .pauseBt,.ol-bar.ol-geobar.centerTrack .centerBt{display:inline-block}.ol-control.ol-globe{opacity:.7;transform-origin:0 100%;border-radius:50%;position:absolute;bottom:.5em;left:.5em;transform:scale(.5)}.ol-control.ol-globe:hover{opacity:.9}.ol-control.ol-globe .panel{cursor:pointer;background-color:#fff;border-radius:50%;width:170px;height:170px;display:block;overflow:hidden;box-shadow:0 0 10px 5px #ffffff80}.ol-control.ol-globe .panel .ol-viewport{border-radius:50%}.ol-control.ol-globe .ol-pointer{z-index:1;background-color:#fff;border:10px solid red;border-radius:50%;width:10px;height:10px;transition:opacity .15s,top,left;display:block;position:absolute;top:50%;left:50%;transform:translate(-15px,-40px)}.ol-control.ol-globe .ol-pointer.hidden{opacity:0;transition:opacity .15s,top 3s,left 5s}.ol-control.ol-globe .ol-pointer:before{content:"";border-radius:50%;width:0;height:0;display:block;position:absolute;top:23px;left:0;box-shadow:6px 6px 10px 5px #000}.ol-control.ol-globe .ol-pointer:after{content:"";border:10px solid #0000;border-top:20px solid red;border-bottom:0 solid red;width:0;height:0;display:block;position:absolute;top:100%;left:-50%}.ol-control.ol-globe .panel:before{content:"";z-index:1;border-radius:50%;width:100%;height:100%;display:block;position:absolute;top:0;left:0;box-shadow:inset -20px -20px 80px 2px #000000b3}.ol-control.ol-globe .panel:after{content:"";z-index:1;border-radius:50%;width:20%;height:0;display:block;position:absolute;top:20%;left:23%;transform:rotate(-40deg);box-shadow:0 0 20px 7px #fff}.ol-control.ol-globe.ol-collapsed .panel{display:none}.ol-control-top.ol-globe{transform-origin:0 0;top:5em;bottom:auto}.ol-control-right.ol-globe{transform-origin:100% 100%;left:auto;right:.5em}.ol-control-right.ol-control-top.ol-globe{transform-origin:100% 0;left:auto;right:.5em}.ol-gridreference{background:#fff;border:1px solid #000;max-height:100%;top:0;right:0;overflow:auto}.ol-gridreference input{width:100%}.ol-gridreference ul{margin:0;padding:0;list-style:none}.ol-gridreference li{cursor:pointer;padding:0 .5em}.ol-gridreference ul li:hover{background-color:#ccc}.ol-gridreference li.ol-title,.ol-gridreference li.ol-title:hover{color:#fff;cursor:default;background:#003c8880}.ol-gridreference ul li .ol-ref{margin-left:.5em}.ol-gridreference ul li .ol-ref:before{content:"("}.ol-gridreference ul li .ol-ref:after{content:")"}.ol-control.ol-imageline{border-radius:0;padding:0;transition:all .3s;bottom:0;left:0;right:0;overflow:visible}.ol-control.ol-imageline.ol-collapsed{transform:translateY(100%)}.ol-imageline>div{white-space:nowrap;scroll-behavior:smooth;width:100%;height:4em;position:relative;overflow:hidden}.ol-imageline>div.ol-move{scroll-behavior:unset}.ol-control.ol-imageline button{margin:.65em;position:absolute;top:-1em;transform:translateY(-100%);box-shadow:0 0 0 .15em #fff6}.ol-control.ol-imageline button:before{content:"";border:.15em solid;border-width:.15em .15em 0 0;width:.4em;height:.4em;position:absolute;top:40%;left:50%;transform:translate(-50%,-50%)rotate(135deg)}.ol-control.ol-imageline.ol-collapsed button:before{top:60%;transform:translate(-50%,-50%)rotate(-45deg)}.ol-imageline,.ol-imageline:hover{background-color:#000000bf}.ol-imageline.ol-arrow:after,.ol-imageline.ol-arrow:before{content:"";z-index:1;opacity:.8;pointer-events:none;border:1em solid #fff;border-left:0 solid #000;border-right:.6em solid #000;position:absolute;top:50%;left:.2em;transform:translateY(-50%);box-shadow:-.6em 0 0 1em #fff}.ol-imageline.ol-arrow:after{border-width:1em 0 1em .6em;left:auto;right:.2em;box-shadow:.6em 0 0 1em #fff}.ol-imageline.ol-scroll0.ol-arrow:before,.ol-imageline.ol-scroll1.ol-arrow:after{display:none}.ol-imageline .ol-image{cursor:pointer;height:100%;display:inline-block;position:relative}.ol-imageline img{box-sizing:border-box;opacity:0;border:.25em solid #0000;max-height:100%;transition:all 1s}.ol-imageline img.ol-loaded{opacity:1}.ol-imageline .ol-image.select{background-color:#fff}.ol-imageline .ol-image span{color:#fff;white-space:normal;text-align:center;background-color:#00000080;width:125%;max-height:2.4em;font-size:.8em;line-height:1.2em;display:none;position:absolute;bottom:0;left:50%;overflow:hidden;transform:translate(-50%)scaleX(.8)}.ol-imageline .ol-image:hover span{display:block}.ol-control.ol-routing.ol-isochrone .ol-method-time,.ol-control.ol-routing.ol-isochrone .ol-method-distance,.ol-control.ol-routing.ol-isochrone>button{position:relative}.ol-control.ol-routing.ol-isochrone .ol-method-time:before,.ol-control.ol-routing.ol-isochrone>button:before{content:"";clip:unset;border:.1em solid;border-radius:50%;width:.8em;height:.8em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 -.5em 0 -.35em,.4em -.35em 0 -.35em}.ol-control.ol-routing.ol-isochrone .ol-method-time:after,.ol-control.ol-routing.ol-isochrone>button:after{content:"";-webkit-box-shadow:none;box-shadow:none;box-sizing:border-box;clip:unset;border:.3em solid #0000;border-right-color:currentColor;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-60deg)}.ol-control.ol-routing.ol-isochrone .ol-method-distance:before{content:"";box-sizing:border-box;border:.1em solid;width:1em;height:.5em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-30deg)}.ol-control.ol-routing.ol-isochrone .ol-method-distance:after{content:"";width:.1em;height:.15em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-30deg);box-shadow:inset 0 -.15em,0 .1em,.25em .1em,-.25em .1em}.ol-control.ol-routing.ol-isochrone .ol-direction-direct:before,.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:before{content:"";box-sizing:border-box;border:.1em solid;border-radius:50%;width:.3em;height:.3em;position:absolute;top:50%;left:30%;transform:translate(-50%,-50%);box-shadow:.25em 0 0 -.05em}.ol-control.ol-routing.ol-isochrone .ol-direction-direct:after,.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:after{content:"";border:.4em solid #0000;border-left-color:currentColor;border-right:0 solid;position:absolute;top:50%;left:70%;transform:translate(-50%,-50%)}.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:after{border-width:.4em .4em .4em 0}.ol-control.ol-isochrone.ol-collapsed .content{display:none}.ol-control.ol-isochrone input[type=number]{text-align:right;width:3em;margin:0 .1em}.ol-control.ol-isochrone .ol-distance input[type=number]{width:5em}.ol-isochrone .ol-time,.ol-isochrone .ol-distance{display:none}.ol-isochrone .ol-time.selected,.ol-isochrone .ol-distance.selected{display:block}.ol-control.ol-layerswitcher-popup{text-align:left;position:absolute;top:3em;right:.5em}.ol-control.ol-layerswitcher-popup .panel{clear:both;background:#fff}.ol-layerswitcher-popup .panel{margin:0;padding:.25em;list-style:none;overflow:hidden}.ol-layerswitcher-popup .panel ul{padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher-popup.ol-collapsed .panel{display:none}.ol-layerswitcher-popup.ol-forceopen .panel{display:block}.ol-layerswitcher-popup button{float:right;background-color:#fff;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACE1BMVEX///8A//8AgICA//8AVVVAQID///8rVVVJtttgv98nTmJ2xNgkW1ttyNsmWWZmzNZYxM4gWGgeU2JmzNNr0N1Rwc0eU2VXxdEhV2JqytQeVmMhVmNoydUfVGUgVGQfVGQfVmVqy9hqy9dWw9AfVWRpydVry9YhVmMgVGNUw9BrytchVWRexdGw294gVWQgVmUhVWPd4N6HoaZsy9cfVmQgVGRrytZsy9cgVWQgVWMgVWRsy9YfVWNsy9YgVWVty9YgVWVry9UgVWRsy9Zsy9UfVWRsy9YgVWVty9YgVWRty9Vsy9aM09sgVWRTws/AzM0gVWRtzNYgVWRuy9Zsy9cgVWRGcHxty9bb5ORbxdEgVWRty9bn6OZTws9mydRfxtLX3Nva5eRix9NFcXxOd4JPeINQeIMiVmVUws9Vws9Vw9BXw9BYxNBaxNBbxNBcxdJexdElWWgmWmhjyNRlx9IqXGtoipNpytVqytVryNNrytZsjZUuX210k5t1y9R2zNR3y9V4lp57zth9zdaAnKOGoaeK0NiNpquV09mesrag1tuitbmj1tuj19uktrqr2d2svcCu2d2xwMO63N+7x8nA3uDC3uDFz9DK4eHL4eLN4eIyYnDX5OM5Z3Tb397e4uDf4uHf5uXi5ePi5+Xj5+Xk5+Xm5+Xm6OY6aHXQ19fT4+NfhI1Ww89gx9Nhx9Nsy9ZWw9Dpj2abAAAAWnRSTlMAAQICAwQEBgcIDQ0ODhQZGiAiIyYpKywvNTs+QklPUlNUWWJjaGt0dnd+hIWFh4mNjZCSm6CpsbW2t7nDzNDT1dje5efr7PHy9PT29/j4+Pn5+vr8/f39/f6DPtKwAAABTklEQVR4Xr3QVWPbMBSAUTVFZmZmhhSXMjNvkhwqMzMzMzPDeD+xASvObKePPa+ffHVl8PlsnE0+qPpBuQjVJjno6pZpSKXYl7/bZyFaQxhf98hHDKEppwdWIW1frFnrxSOWHFfWesSEWC6R/P4zOFrix3TzDFLlXRTR8c0fEEJ1/itpo7SVO9Jdr1DVxZ0USyjZsEY5vZfiiAC0UoTGOrm9PZLuRl8X+Dq1HQtoFbJZbv61i+Poblh/97TC7n0neCcK0ETNUrz1/xPHf+DNAW9Ac6t8O8WH3Vp98f5lCaYKAOFZMLyHL4Y0fe319idMNgMMp+zWVSybUed/+/h7I4wRAG1W6XDy4XmjR9HnzvDRZXUAYDFOhC1S/Hh+fIXxen+eO+AKqbs+wAo30zDTDvDxKoJN88sjUzDFAvBzEUGFsnADoIvAJzoh2BZ8sner+Ke/vwECuQAAAABJRU5ErkJggg==);background-position:50%;background-repeat:no-repeat;width:38px;height:38px}.ol-layerswitcher-popup li{color:#369;cursor:pointer;padding:.25em 1em;font-family:Trebuchet MS,Helvetica,sans-serif}.ol-layerswitcher-popup li.ol-header{display:none}.ol-layerswitcher-popup li.select,.ol-layerswitcher-popup li.ol-visible{color:#fff;background:#003c88b3}.ol-layerswitcher-popup li:hover{color:#fff;background:#003c88e6}.ol-control.ol-layerswitcher.ol-layer-shop{height:calc(100% - 4em);max-height:unset;background-color:#0000;max-width:16em;overflow:visible;pointer-events:none!important}.ol-control.ol-layerswitcher>*{pointer-events:auto}.ol-control.ol-layer-shop>button,.ol-control.ol-layer-shop .panel-container{box-shadow:0 0 0 3px #ffffff80}.ol-control.ol-layerswitcher.ol-layer-shop .panel-container{border:2px solid #369;border-width:2px 0;max-height:calc(100% - 6.5em);padding:0;overflow-y:scroll}.ol-control.ol-layer-shop .panel{box-sizing:border-box;margin:.25em .5em;padding:0}.ol-control.ol-layerswitcher.ol-layer-shop .panel-container.ol-scrolldiv{overflow:hidden}.ol-control.ol-layer-shop .ol-scroll{opacity:.5;background-color:#0000004d}.ol-layerswitcher.ol-layer-shop ul.panel li.ol-header{display:none}.ol-layerswitcher.ol-layer-shop ul.panel li{margin-right:0;padding-right:0}.ol-layerswitcher.ol-layer-shop .layerup{box-sizing:border-box;color:#003c88;background-color:#0000;border-radius:3px;width:1.4em;height:1.5em;margin:0}.ol-layerswitcher.ol-layer-shop .layerup:hover{background-color:#003c884d}.ol-layerswitcher.ol-layer-shop .layerup:before{background-color:currentColor;border:0;width:1em;height:2px;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 -4px,0 4px}.ol-layerswitcher.ol-layer-shop .layerup:after{content:unset}.ol-control.ol-layer-shop .ol-title-bar{box-sizing:border-box;text-overflow:ellipsis;white-space:nowrap;text-align:right;transform-origin:100% 0;background-color:#ffffff80;max-width:14.6em;height:calc(2.8em - 4px);padding:.7em .5em;font-size:.9em;transition:transform .1s,width;overflow:hidden;transform:scaleY(1.1)}.ol-control.ol-layer-shop:hover .ol-title-bar{background-color:#ffffffb3}.ol-control.ol-layer-shop.ol-collapsed .ol-title-bar{max-width:10em;transform:scale(.9,1.1)}.ol-control.ol-layer-shop.ol-forceopen .ol-title-bar{max-width:14.6em;transform:scaleY(1.1)}.ol-control.ol-layer-shop .ol-bar{clear:both;text-align:right;z-index:10;background-color:#fff;height:1.75em;position:relative;box-shadow:0 0 0 3px #ffffff80}.ol-control.ol-layer-shop.ol-collapsed .ol-scroll,.ol-control.ol-layer-shop.ol-collapsed .ol-bar{border-width:2px 0 0;display:none}.ol-control.ol-layer-shop.ol-forceopen .ol-scroll,.ol-control.ol-layer-shop.ol-forceopen .ol-bar{display:block}.ol-control.ol-layer-shop .ol-bar>*{vertical-align:middle;background-color:#0000;margin-top:.25em;font-size:.9em;display:inline-block}.ol-layer-shop .ol-bar .ol-button,.ol-touch .ol-layer-shop .ol-bar .ol-button{top:unset;left:unset;bottom:unset;right:unset;margin:0;position:relative}.ol-layer-shop .ol-bar button{color:#003c88;background-color:#fff}.ol-layer-shop .ol-bar button:hover{background-color:#003c8833}.ol-touch .ol-layerswitcher.ol-layer-shop>button{font-size:1.7em}.ol-touch .ol-layer-shop .ol-bar{height:2em}.ol-touch .ol-layer-shop .ol-control button{font-size:1.4em}.ol-touch .ol-control.ol-layer-shop .panel{max-height:calc(100% - 7em)}.ol-touch .ol-control.ol-layer-shop .panel label{height:1.8em}.ol-touch .ol-control.ol-layer-shop .panel label span{margin-left:.5em;padding-top:.25em}.ol-touch .ol-control.ol-layer-shop .panel label:before,.ol-touch .ol-control.ol-layer-shop .panel label:after{z-index:1;font-size:1.3em}.ol-control.ol-layerswitcher{text-align:left;box-sizing:border-box;max-height:calc(100% - 6em);position:absolute;top:3em;right:.5em;overflow:hidden}.ol-control.ol-layerswitcher .ol-switchertopdiv,.ol-control.ol-layerswitcher .ol-switcherbottomdiv{display:block}.ol-control.ol-layerswitcher.ol-collapsed .ol-switchertopdiv,.ol-control.ol-layerswitcher.ol-collapsed .ol-switcherbottomdiv{display:none}.ol-layerswitcher.ol-forceopen.ol-collapsed .ol-switchertopdiv,.ol-layerswitcher.ol-forceopen.ol-collapsed .ol-switcherbottomdiv{display:block}.ol-control.ol-layerswitcher .ol-switchertopdiv,.ol-control.ol-layerswitcher .ol-switcherbottomdiv{z-index:2;opacity:1;cursor:pointer;box-sizing:border-box;background:#fff;border-top:2px solid #0000;border-bottom:2px solid #369;height:45px;margin:0 2px;position:absolute;top:0;left:0;right:0}.ol-control.ol-layerswitcher .ol-switcherbottomdiv{border-top:2px solid #369;border-bottom:2px solid #0000;height:2em;top:auto;bottom:0}.ol-control.ol-layerswitcher .ol-switchertopdiv:before,.ol-control.ol-layerswitcher .ol-switcherbottomdiv:before{content:"";opacity:.8;border:10px solid #0000;width:0;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-layerswitcher .ol-switchertopdiv:hover:before,.ol-control.ol-layerswitcher .ol-switcherbottomdiv:hover:before{opacity:1}.ol-control.ol-layerswitcher .ol-switchertopdiv:before{border-top:0;border-bottom-color:#369}.ol-control.ol-layerswitcher .ol-switcherbottomdiv:before{border-top-color:#369;border-bottom:0}.ol-control.ol-layerswitcher .panel-container{clear:both;background-color:#fff;border-radius:0 0 2px 2px;padding:.5em .5em 0;display:block}.ol-layerswitcher .panel{margin:0;padding:0;font-family:Tahoma,Geneva,sans-serif;font-size:.9em;list-style:none;transition:top .3s;position:relative;top:0;overflow:hidden}.ol-layerswitcher .panel ul{clear:both;padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher input[type=radio],.ol-layerswitcher input[type=checkbox]{opacity:0;width:0;height:0;position:absolute}.ol-layerswitcher .panel li{-weblit-transition:-webkit-transform .2s linear;clear:both;box-sizing:border-box;border:1px solid #0000;transition:transform .2s linear;display:block}.ol-layerswitcher .panel li.ol-layer-select{background-color:#003c8833;margin:0 -.5em;padding:0 .5em}.ol-layerswitcher .panel li.drag{opacity:.5;transform:scale(.8)}.ol-dragover{opacity:.8;background:#33669980}.ol-layerswitcher .panel li.forbidden,.forbidden .ol-layerswitcher-buttons div,.forbidden .layerswitcher-opacity div{background:#ff000080;color:red!important}.ol-layerswitcher.drag,.ol-layerswitcher.drag *{cursor:not-allowed!important;cursor:no-drop!important}.ol-layerswitcher.drag .panel li.dropover,.ol-layerswitcher.drag .panel li.dropover *{cursor:pointer!important;cursor:n-resize!important;cursor:ns-resize!important;cursor:-webkit-grab!important;cursor:grab!important;cursor:-webkit-grabbing!important;cursor:grabbing!important}.ol-layerswitcher .panel li.dropover{background:#33669980}.ol-layerswitcher .panel li label{white-space:nowrap;text-overflow:ellipsis;max-width:12em;height:1.4em;padding:0 0 0 1.7em;display:inline-block;position:relative;overflow:hidden}.ol-layerswitcher .panel li label span{text-overflow:ellipsis;width:100%;height:100%;padding-right:.2em;display:inline-block;overflow:hidden}.ol-layerswitcher [type=radio]+label:before,.ol-layerswitcher [type=checkbox]+label:before,.ol-layerswitcher [type=radio]:checked+label:after,.ol-layerswitcher [type=checkbox]:checked+label:after{content:"";box-sizing:border-box;background:#fff;border:2px solid #369;width:1.2em;height:1.2em;position:absolute;top:.1em;left:.1em}.ol-layerswitcher li:has(>div.li-content>.ol-visibility:focus){border-color:#369;box-shadow:inset 0 0 0 1px #369}.ol-layerswitcher [type=radio]+label:before,.ol-layerswitcher [type=radio]+label:after{border-radius:50%}.ol-layerswitcher [type=radio]:checked+label:after{background:#369;width:.6em;height:.6em;margin:.3em}.ol-layerswitcher [type=checkbox]:checked+label:after{background:0 0;border:3px solid #369;border-width:0 3px 3px 0;width:.7em;height:1em;top:-.05em;left:.55em;transform:rotate(45deg);box-shadow:1px 0 1px 1px #fff}.ol-layerswitcher .panel li.ol-layer-hidden{opacity:.6}.ol-layerswitcher.ol-collapsed .panel-container{display:none}.ol-layerswitcher.ol-forceopen .panel-container{display:block}.ol-control.ol-layerswitcher .ol-counter{z-index:22;text-align:left;font-size:.65em;line-height:1.5em;display:none;position:absolute;top:0;right:.3em}.ol-control.ol-layerswitcher.ol-counter .ol-counter{display:block}.ol-control.ol-layer-shop .ol-counter{text-align:center;background:#fff;border-radius:50%;width:1.5em;line-height:1.5em;transform:translate(50%,-50%);box-shadow:.5px .5px 2px}.ol-layerswitcher-image>button,.ol-layerswitcher>button{float:right;z-index:10;background-color:#fff;font-size:1.7em;position:relative}.ol-touch .ol-layerswitcher-image>button,.ol-touch .ol-layerswitcher>button{font-size:2.5em}.ol-layerswitcher-image>button:before,.ol-layerswitcher-image>button:after,.ol-layerswitcher>button:before,.ol-layerswitcher>button:after{content:"";border-radius:.15em;width:.75em;height:.75em;position:absolute;transform:scaleY(.8)rotate(45deg)}.ol-layerswitcher-image>button:before,.ol-layerswitcher>button:before{background:#e2e4e1;top:.32em;left:.34em;box-shadow:.1em .1em #325158}.ol-layerswitcher-image>button:after,.ol-layerswitcher>button:after{background:#83bcc5 radial-gradient(circle at .85em .6em,#70b3be 0 .65em,#83bcc5 .65em);top:.22em;left:.34em}.ol-layerswitcher-buttons{float:right;text-align:right;display:block}.ol-layerswitcher-buttons>div{cursor:pointer;text-align:center;vertical-align:middle;color:#fff;background:#369;width:1em;height:1em;margin:2px;line-height:1em;display:inline-block;position:relative}.ol-layerswitcher .panel li>div{display:inline-block;position:relative}.ol-layerswitcher .ol-separator{width:0;height:0;margin:0;padding:0;display:block}.ol-layerswitcher .layerup{float:right;opacity:.5;cursor:move;cursor:ns-resize;background-color:#369;height:2.5em}.ol-layerswitcher .layerup:before,.ol-layerswitcher .layerup:after{content:"";border:.4em solid #0000;border-top-color:#fff;border-bottom:0 solid #fff;width:0;height:0;position:absolute;bottom:3px;left:.1em}.ol-layerswitcher .layerup:after{border-width:0 .4em .4em;top:3px;bottom:auto}.ol-layerswitcher .layerInfo{background:#369;border-radius:100%}.ol-layerswitcher .layerInfo:before{color:#fff;content:"i";text-align:center;width:1.25em;font-size:.8em;font-weight:700;display:block;position:absolute;top:0;left:0}.ol-layerswitcher .layerTrash{background:#369}.ol-layerswitcher .layerTrash:before{color:#fff;content:"×";text-align:center;margin:-.5em 0;font-size:1em;line-height:1em;position:absolute;top:50%;left:0;right:0}.ol-layerswitcher .layerExtent{background:#369}.ol-layerswitcher .layerExtent:before{content:"";border-bottom:1px solid #fff;border-right:1px solid #fff;display:block;position:absolute;inset:6px 2px 3px 6px}.ol-layerswitcher .layerExtent:after{content:"";border-top:1px solid #fff;border-left:1px solid #fff;display:block;position:absolute;inset:3px 6px 6px 2px}.ol-layerswitcher .expend-layers,.ol-layerswitcher .collapse-layers{background-color:#0000;margin:0 2px}.ol-layerswitcher .expend-layers:before,.ol-layerswitcher .collapse-layers:before{content:"";background:#369;width:100%;height:4px;margin-top:-2px;position:absolute;top:50%;left:0}.ol-layerswitcher .expend-layers:after{content:"";background:#369;width:4px;height:100%;margin-left:-2px;position:absolute;top:0;left:50%}.ol-layerswitcher .layerswitcher-opacity{box-sizing:border-box;background:#69c;cursor:pointer;background:linear-gradient(90deg,#003c8800,#003c8899);border:1px solid #369;border-radius:3px;width:120px;height:3px;margin:5px 1em 10px 7px;position:relative;box-shadow:1px 1px 1px #00000080}.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor,.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor:before{z-index:1;background:#003c8880;border-radius:50%;width:20px;height:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor:before{content:"";width:50%;height:50%;position:absolute}.ol-touch .ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor{width:26px;height:26px}.ol-layerswitcher .layerswitcher-opacity-label{font-size:.8em;display:none;position:absolute;bottom:5px;right:-2.5em}.ol-layerswitcher .layerswitcher-opacity-label:after{content:"%"}.ol-layerswitcher .layerswitcher-progress{width:120px;margin:-4px 1em 2px 7px;display:block}.ol-layerswitcher .layerswitcher-progress div{background-color:#369;width:0;height:2px;display:block}.ol-control.ol-layerswitcher-image{text-align:left;transition:all .2s;position:absolute;top:1em;right:.5em}.ol-control.ol-layerswitcher-image.ol-collapsed{transition:none;top:3em}.ol-layerswitcher-image .panel{margin:0;padding:.25em;list-style:none;overflow:hidden}.ol-layerswitcher-image .panel ul{padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher-image.ol-collapsed .panel{display:none}.ol-layerswitcher-image.ol-forceopen .panel{clear:both;display:block}.ol-layerswitcher-image button{float:right;display:none}.ol-layerswitcher-image.ol-collapsed button{display:block;position:relative}.ol-layerswitcher-image li{vertical-align:middle;cursor:pointer;background-color:#fff;border:3px solid #0000;border-radius:4px;width:64px;height:64px;margin:2px;display:inline-block;position:relative;overflow:hidden;box-shadow:1px 1px 4px #00000080}.ol-layerswitcher-image li.ol-layer-hidden{opacity:.5;border-color:#555}.ol-layerswitcher-image li.ol-header{display:none}.ol-layerswitcher-image li img{max-width:100%;position:absolute}.ol-layerswitcher-image li.select,.ol-layerswitcher-image li.ol-visible{border:3px solid red}.ol-layerswitcher-image li p{display:none}.ol-layerswitcher-image li:hover p{color:#fff;text-align:center;background-color:#00000080;height:1.2em;margin:0;font-family:Verdana,Geneva,sans-serif;font-size:.8em;display:block;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.ol-control.ol-legend{z-index:1;background-color:#fff9;max-width:90%;max-height:90%;bottom:.5em;left:.5em;overflow:hidden auto}.ol-control.ol-legend:hover{background-color:#fffc}.ol-control.ol-legend.ol-empty,.ol-control.ol-legend.ol-collapsed{overflow:hidden}.ol-control.ol-legend button{display:none;position:relative}.ol-control.ol-legend.ol-empty button,.ol-control.ol-legend.ol-collapsed button{display:block}.ol-control.ol-legend.ol-uncollapsible button{display:none}.ol-control.ol-legend>ul,.ol-control.ol-legend>canvas{margin:2px}.ol-control.ol-legend button.ol-closebox{cursor:pointer;z-index:1;background:0 0;display:block;position:absolute;top:0;right:0}.ol-control.ol-legend.ol-empty button.ol-closebox,.ol-control.ol-legend.ol-uncollapsible button.ol-closebox,.ol-control.ol-legend.ol-collapsed button.ol-closebox{display:none}.ol-control.ol-legend button.ol-closebox:before{content:"×";color:#003c8880;background:0 0;font-size:1.3em}.ol-control.ol-legend button.ol-closebox:hover:before{color:#003c88}.ol-control.ol-legend .ol-legendImg{display:block}.ol-control.ol-legend.ol-empty .ol-legendImg,.ol-control.ol-legend.ol-collapsed .ol-legendImg{display:none}.ol-control.ol-legend.ol-uncollapsible .ol-legendImg{display:block}.ol-control.ol-legend>button:first-child:before,.ol-control.ol-legend>button:first-child:after{content:"";background-color:currentColor;width:.2em;height:.2em;position:absolute;top:.25em;left:.2em;box-shadow:0 .35em,0 .7em}.ol-control.ol-legend button:first-child:after{width:.6em;height:.15em;top:.27em;left:.55em}ul.ol-legend{width:100%;margin:0;padding:0;list-style:none;position:absolute;top:0;left:0}.ol-control.ol-legend.ol-empty ul,.ol-control.ol-legend.ol-collapsed ul{display:none}.ol-control.ol-legend.ol-uncollapsible ul{display:block}ul.ol-legend li.ol-title{text-align:center;font-weight:700}ul.ol-legend li.ol-title>div:first-child{width:0!important}ul.ol-legend li{white-space:nowrap;padding:0;overflow:hidden}ul.ol-legend li div{vertical-align:top;display:inline-block}.ol-control.ol-legend .ol-legend{display:inline-block}.ol-control.ol-legend.ol-empty .ol-legend,.ol-control.ol-legend.ol-collapsed .ol-legend{display:none}.ol-control.ol-legend.ol-empty button{opacity:.4}.ol-control.ol-mapzone{text-align:left;box-sizing:border-box;max-height:calc(100% - 6em);position:absolute;top:.5em;right:.5em;overflow:hidden}.ol-control.ol-mapzone.ol-collapsed{top:3em}.ol-control.ol-mapzone button{float:right;margin-top:2.5em;position:relative}.ol-touch .ol-control.ol-mapzone button{margin-top:1.67em}.ol-control.ol-mapzone.ol-collapsed button{margin-top:0}.ol-control.ol-mapzone button i{border:.1em solid;border-radius:50%;width:.9em;height:.9em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-control.ol-mapzone button i:before{content:"";background-color:currentColor;border-radius:50%;width:.4em;height:.4em;position:absolute;top:.3em;left:.5em;box-shadow:.05em .3em 0 -.051em,-.05em -.35em 0 -.1em,-.5em -.35em 0 0,-.65em .1em 0 -.03em,-.65em -.05em 0 -.05em}.ol-mapzone>div{width:5em;height:5em;margin:0 .2em 0 0;display:inline-block;position:relative}.ol-mapzone>div:focus{box-shadow:0 0 0 .2em #369}.ol-control.ol-mapzone.ol-collapsed>div{display:none}.ol-mapzone>div p{color:#fff;text-align:center;transform-origin:0 0;cursor:default;width:160%;margin:0;font-family:Lucida Grande,Verdana,Geneva,Lucida,Arial,Helvetica,sans-serif;font-weight:700;position:absolute;bottom:0;overflow:hidden;transform:scaleX(.625)}.ol-notification{background:0 0;border:0;width:150%;margin:0;padding:0;bottom:0}.ol-notification>div,.ol-notification>div:hover{color:#fff;text-align:center;box-sizing:border-box;opacity:1;background-color:#000c;border-radius:4px 4px 0 0;min-width:5em;max-width:calc(66% - 4em);min-height:1em;max-height:5em;padding:.2em .5em;transition:all .3s;position:absolute;bottom:0;left:33.33%;transform:translate(-50%)}.ol-notification.ol-collapsed>div{opacity:0;bottom:-5em}.ol-notification a{color:#9cf;cursor:pointer}.ol-notification .ol-close,.ol-notification .ol-close:hover{padding-right:1.5em}.ol-notification .closeBox{position:absolute;top:0;right:.3em}.ol-notification .closeBox:before{content:"×"}.ol-overlay{color:#fff;box-sizing:border-box;z-index:1;opacity:0;cursor:default;pointer-events:none;z-index:9;background-color:#0006;width:100%;height:100%;padding:1em;transition:all .5s;display:none;position:absolute;top:0;left:0;overflow:hidden}.ol-overlay.slide-up{transform:translateY(100%)}.ol-overlay.slide-down{transform:translateY(-100%)}.ol-overlay.slide-left{transform:translate(-100%)}.ol-overlay.slide-right{transform:translate(100%)}.ol-overlay.zoom{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)}.ol-overlay.zoomout{transform:scale(3)}.ol-overlay.zoomrotate{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)rotate(360deg)}.ol-overlay.stretch{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scaleX(0)}.ol-overlay.stretchy{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scaleY(0)}.ol-overlay.wipe{opacity:1}.ol-overlay.flip{transform:perspective(600px)rotateY(180deg)}.ol-overlay.card{opacity:.5;transform:translate(-80%,100%)rotate(-.5turn)}.ol-overlay.book{transform-origin:10%;transform:perspective(600px)rotateY(-180deg)scaleX(.6)}.ol-overlay.book.visible{transform-origin:10%}.ol-overlay.ol-visible{opacity:1;pointer-events:all;inset:0;transform:none}.ol-overlay .ol-closebox{cursor:pointer;z-index:1;width:1em;height:1em;position:absolute;top:1em;right:1em}.ol-overlay .ol-closebox:before{content:"❌";text-align:center;vertical-align:middle;display:block}.ol-overlay .ol-fullscreen-image{position:absolute;inset:0}.ol-overlay .ol-fullscreen-image img{box-sizing:border-box;max-width:100%;max-height:100%;padding:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlay .ol-fullscreen-image.ol-has-title img{padding-bottom:3em}.ol-overlay .ol-fullscreen-image p{text-align:center;background-color:#00000080;margin:0;padding:.5em;position:absolute;bottom:0;left:0;right:0}.ol-control.ol-overview{text-align:left;position:absolute;bottom:.5em;left:.5em}.ol-control.ol-overview .panel{cursor:pointer;background-color:#fff;border:1px solid #369;width:150px;height:150px;margin:2px;display:block}.ol-overview:not(.ol-collapsed) button{z-index:2;position:absolute;bottom:2px;left:2px}.ol-control.ol-overview.ol-collapsed .panel{display:none}.ol-overview.ol-collapsed button:before{content:"»"}.ol-overview button:before{content:"«"}.ol-control-right.ol-overview{left:auto;right:.5em}.ol-control-right.ol-overview:not(.ol-collapsed) button{left:auto;right:2px}.ol-control-right.ol-overview.ol-collapsed button:before{content:"«"}.ol-control-right.ol-overview button:before{content:"»"}.ol-control-top.ol-overview{top:5em;bottom:auto}.ol-control-top.ol-overview:not(.ol-collapsed) button{top:2px;bottom:auto}.ol-permalink{position:absolute;top:.5em;right:2.5em}.ol-touch .ol-permalink{right:3em}.ol-permalink button i{width:1em;height:1em;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-permalink button i:before{content:"↗";box-sizing:border-box;border:0 solid;border-width:1px 0 0 1px;width:.3em;height:1em;padding:0 .2em;position:absolute;top:0;left:0}.ol-permalink button i:after{content:"";box-sizing:border-box;border:1px solid;border-width:0 1px 1px 0;width:1em;height:.3em;padding:.2em;position:absolute;bottom:0;right:0}.ol-control.ol-print{top:.5em;left:3em}.ol-control.ol-print button:before{content:"";width:.9em;height:.35em;position:absolute;top:50%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 .1em,inset .55em 0,0 .2em 0 -.1em}.ol-control.ol-print button:after{content:"";width:.7em;height:.6em;position:absolute;top:25%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 .15em}.ol-ext-print-dialog{width:100%;height:100%}.ol-ext-print-dialog>form .ol-closebox{z-index:1;color:#999;left:16.5em;right:auto}.ol-ext-print-dialog .ol-content[data-status=printing]{opacity:.5}.ol-ext-print-dialog .ol-content .ol-error{color:#ff0;text-align:center;background:#b00;margin:0 -1em;padding:1em .5em;font-weight:700;display:none}.ol-ext-print-dialog .ol-content[data-status=error] .ol-error{display:block}.ol-ext-print-dialog>form,.ol-ext-print-dialog.ol-visible>form{max-width:100%;max-height:100%;width:unset;background-color:#eee;padding:0;transition:none;inset:1em;transform:none}.ol-ext-print-dialog .ol-print-map{width:calc(100% - 18em);position:absolute;top:0;bottom:0;right:0;overflow:hidden}.ol-ext-print-dialog .ol-print-map .ol-page{box-sizing:border-box;background:#fff;position:absolute;top:50%;left:50%}.ol-ext-print-dialog .ol-print-map .ol-page.margin{box-sizing:content-box}.ol-ext-print-dialog .ol-map{width:100%;height:100%}.ol-ext-print-dialog .ol-print-map .ol-control{display:none!important}.ol-ext-print-dialog .ol-print-param{box-sizing:border-box;background-color:#fff;width:18em;padding:1em;position:absolute;top:0;bottom:0;left:0;overflow-x:hidden}.ol-ext-print-dialog .ol-print-param h2{color:#003c88b3;font-size:1.1em;display:block}.ol-ext-print-dialog .ol-print-param ul{padding:0;list-style:none}.ol-ext-print-dialog .ol-print-param li{margin:.5em 0;font-size:.9em;position:relative}.ol-ext-print-dialog .ol-print-param li.hidden{display:none}.ol-ext-print-dialog .ol-print-param label{vertical-align:middle;width:8em;display:inline-block}.ol-ext-print-dialog select{vertical-align:middle;outline:none}.ol-ext-print-dialog .ol-orientation{text-align:center}.ol-ext-print-dialog .ol-orientation label{cursor:pointer;width:7em;position:relative}.ol-ext-print-dialog .ol-orientation input{opacity:0;width:0;height:0;position:absolute}.ol-ext-print-dialog .ol-orientation span{width:80%;padding:3.5em 0 .2em;display:block;position:relative}.ol-ext-print-dialog .ol-orientation span:before{content:"";color:#333;opacity:.5;background-color:currentColor;border:1px solid;border-radius:0 1em 0 0;width:2em;height:2.6em;position:absolute;bottom:1.5em;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:inset 1.3em -1.91em #ddd}.ol-ext-print-dialog .ol-orientation .landscape span:before{width:2.6em;height:2em;margin:.2em 0;box-shadow:inset 1.91em -1.3em #ddd}.ol-ext-print-dialog .ol-orientation input:checked+span{opacity:1;box-shadow:0 0 .2em #00000080}.ol-ext-print-dialog .ol-ext-toggle-switch span{position:absolute;top:50%;right:-2em;transform:translateY(-50%)}.ol-print-title input[type=text]{width:calc(100% - 6em);margin-top:.5em;margin-left:6em}.ol-ext-print-dialog .ol-size option:first-child{font-style:italic}.ol-ext-print-dialog .ol-saveas,.ol-ext-print-dialog .ol-savelegend{text-align:center}.ol-ext-print-dialog .ol-saveas select,.ol-ext-print-dialog .ol-savelegend select{color:#fff;background-color:#003c88b3;border:0;max-width:12em;margin:1em 0 0;padding:.5em;font-size:1em;font-weight:700}.ol-ext-print-dialog .ol-saveas select option,.ol-ext-print-dialog .ol-savelegend select option{color:#666;background-color:#fff}.ol-ext-print-dialog .ol-savelegend select{margin-top:0}.ol-ext-print-dialog .ol-ext-buttons{text-align:right;border-top:1px solid #ccc;margin:0 -1em;padding:.8em .5em}.ol-ext-print-dialog button{color:#333;background:0 0;border:1px solid #999;margin:0 .2em;padding:.3em 1em;font-size:1em}.ol-ext-print-dialog button[type=submit]{color:#fff;background-color:#003c88b3;font-weight:700}.ol-ext-print-dialog .ol-clipboard-copy{pointer-events:none;color:#fff;opacity:0;background-color:#00000080;border-radius:1em;width:fit-content;padding:.5em 1em;transition:all;position:absolute;top:0;left:50%;transform:translate(-50%)}.ol-ext-print-dialog .ol-clipboard-copy.visible{animation:1s ol-clipboard-copy}.ol-ext-print-dialog .ol-print-map .ol-control.ol-canvas-control,.ol-ext-print-dialog .ol-print-map .ol-control.ol-print-compass{display:block!important}.ol-ext-print-dialog .ol-print-map .ol-control.olext-print-compass{width:60px;height:60px;margin:20px;top:0;right:0}.ol-ext-print-dialog .ol-orientation input:focus-visible+span,.ol-ext-print-dialog select:focus-visible{outline:2px solid #000}@keyframes ol-clipboard-copy{0%{opacity:0;top:0}80%{opacity:1;top:-3em}to{opacity:0;top:-3em}}@media print{body.ol-print-document{margin:0!important;padding:0!important}body.ol-print-document>*{display:none!important}body.ol-print-document>.ol-ext-print-dialog{display:block!important}body.ol-print-document>.ol-ext-print-dialog .ol-content{max-height:unset!important;max-width:unset!important;width:unset!important;height:unset!important}.ol-ext-print-dialog>form,.ol-ext-print-dialog{position:unset;-webkit-box-shadow:none;box-shadow:none;border:0;background:0 0!important}.ol-ext-print-dialog>form>*,.ol-ext-print-dialog .ol-print-param{background:0 0;display:none!important}.ol-ext-print-dialog .ol-content{background:0 0;border:0;display:block!important}.ol-ext-print-dialog .ol-print-map{position:unset;background:0 0;width:auto;overflow:visible}.ol-ext-print-dialog .ol-print-map .ol-page{position:unset;-webkit-box-shadow:none!important;box-shadow:none!important;transform:none!important}}@media (width<=25em){.ol-ext-print-dialog .ol-print-param{width:13em}.ol-ext-print-dialog .ol-print-map{width:calc(100% - 13em)}.ol-ext-print-dialog .ol-print-param .ol-print-title input[type=text]{width:100%;margin:0}}.ol-ext-print-dialog2x .ol-map,.ol-ext-print-dialog2x .ol-map2{width:100%;height:50%}.ol-ext-print-dialog2x[data-orientation=landscape] .ol-map,.ol-ext-print-dialog2x[data-orientation=landscape] .ol-map2{width:50%;height:100%;display:inline-block}.ol-ext-print-dialog2x[data-clip-map] .ol-map,.ol-ext-print-dialog2x[data-swipe-orientation] .ol-map{width:100%!important;height:100%!important}.ol-ext-print-dialog2x[data-clip-map] .ol-map2,.ol-ext-print-dialog2x[data-swipe-orientation] .ol-map2{top:-100%;left:0;width:100%!important;height:100%!important;position:relative!important}.ol-profile{-webkit-user-select:none;user-select:none;position:relative}.ol-control.ol-profile{text-align:right;position:absolute;top:.5em;right:3em;overflow:hidden}.ol-profile .ol-zoom-out{cursor:pointer;border:1px solid #000;border-radius:2px;width:1em;height:1em;padding:0;position:absolute;top:10px;right:10px}.ol-profile .ol-zoom-out:before{content:"";background:currentColor;width:60%;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-profile .ol-inner{padding:.5em;font-size:.8em;position:relative}.ol-control.ol-profile .ol-inner{background-color:#ffffffb3;margin:2.3em 2px 2px;display:block}.ol-control.ol-profile.ol-collapsed .ol-inner{display:none}.ol-profile canvas{display:block}.ol-profile button{display:block;position:absolute;right:0;overflow:hidden}.ol-profile button i{width:1em;height:1em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-profile button i:before,.ol-profile button i:after{content:"";background-color:currentColor;width:1em;height:.9em;display:block;position:absolute;transform:scaleX(.8)translate(-.25em,.5em)rotate(45deg)}.ol-profile button i:after{transform:scaleX(.8)translate(.35em,.7em)rotate(45deg)}.ol-profile.ol-collapsed button{position:static}.ol-profile .ol-profilebar,.ol-profile .ol-profilecursor{pointer-events:none;width:1px;display:none;position:absolute}.ol-profile .ol-profilecursor{width:0;height:0}.ol-profile .ol-profilecursor:before{content:"";pointer-events:none;width:5px;height:5px;margin:-2px;display:block}.ol-profile .ol-profilebar,.ol-profile .ol-profilecursor:before{background:red}.ol-profile table{text-align:center;border-collapse:collapse;width:100%;margin-top:.5em}.ol-profile table tr{border-top:1px solid #00000040;margin:.1em 0}.ol-profile table td{padding:2px}.ol-profile table span{display:block}.ol-profile table span.elevationGain,.ol-profile table span.elevationLoss{display:inline-block}.ol-profilepopup{white-space:nowrap;background-color:#ffffff80;margin:.5em;padding:0 .5em;position:absolute;top:-1em}.ol-profilepopup.ol-left{right:0}.ol-profile table .track-info{display:table-row}.ol-profile table .point-info,.ol-profile .over table .track-info{display:none}.ol-profile .over table .point-info{display:table-row}.ol-profile p{text-align:center;margin:0}.ol-control.ol-progress-bar{background-color:#0000;padding:0;position:absolute;inset:0;pointer-events:none!important}.ol-control.ol-progress-bar>.ol-bar{box-sizing:border-box;background-color:#003c8880;width:0;height:.5em;transition:width .2s;position:absolute;bottom:0;left:0}.ol-progress-bar>.ol-waiting{display:none}.ol-viewport .ol-control.ol-progress-bar>.ol-waiting{color:#fff;font-size:2em;animation:1s linear infinite ol-progress-bar-blink;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes ol-progress-bar-blink{0%,30%{visibility:hidden}to{visibility:visible}}.ol-control.ol-routing{max-height:90%;top:.5em;left:3em;overflow-y:auto}.ol-touch .ol-control.ol-routing{left:3.5em}.ol-control.ol-routing.ol-searching{opacity:.5}.ol-control.ol-routing .ol-car,.ol-control.ol-routing>button{position:relative}.ol-control.ol-routing .ol-car:after,.ol-control.ol-routing>button:after{content:"";clip:rect(0 1em .5em -1em);border-radius:40% 50% 0 0/50% 70% 0 0;width:.78em;height:.6em;position:absolute;top:.35em;left:.4em;box-shadow:inset 0 0 0 .065em,-.35em .14em 0 -.09em,inset 0 -.37em,inset -.14em .005em}.ol-control.ol-routing .ol-car:before,.ol-control.ol-routing>button:before{content:"";border-radius:50%;width:.28em;height:.28em;position:absolute;top:.73em;left:.2em;box-shadow:inset 0 0 0 1em,.65em 0}.ol-control.ol-routing .ol-pedestrian:after{content:"";border-top:.2em solid #0000;width:.3em;height:.4em;position:absolute;top:.25em;left:50%;transform:translate(-50%);box-shadow:inset .3em 0,.1em .5em 0 -.1em,-.1em .5em 0 -.1em,.25em .1em 0 -.1em,-.25em .1em 0 -.1em}.ol-control.ol-routing .ol-pedestrian:before{content:"";background-color:currentColor;border-radius:50%;width:.3em;height:.3em;position:absolute;top:.1em;left:50%;transform:translate(-50%)}.ol-control.ol-routing .content{margin:.5em}.ol-control.ol-routing.ol-collapsed .content,.ol-routing .ol-search.ol-collapsed ul,.ol-routing .ol-search ul .copy{display:none}.ol-routing .content .search-input>div>*{vertical-align:top;display:inline-block}.ol-routing .ol-result ul{list-style:none;display:block}.ol-routing .ol-result li{min-height:1.65em;position:relative}.ol-routing .ol-result li i{font-size:.8em;font-weight:700;display:block}.ol-routing .ol-result li:before{content:"";transform-origin:50% 125%;border:.4em solid #0000;border-top-width:.6em;border-bottom:.6em solid #369;position:absolute;top:-.8em;left:-1.75em;box-shadow:0 .65em 0 -.25em #369}.ol-routing .ol-result li:after{content:"";background:#369;border-radius:.1em;width:.25em;height:.6em;position:absolute;top:.6em;left:-1.5em}.ol-routing .ol-result li.R:before{transform:rotate(90deg)}.ol-routing .ol-result li.FR:before{transform:rotate(45deg)}.ol-routing .ol-result li.L:before{transform:rotate(-90deg)}.ol-routing .ol-result li.FL:before{transform:rotate(-45deg)}.ol-routing .content>i{vertical-align:middle;margin:0 .3em 0 .1em;font-style:normal}.ol-routing .ol-button,.ol-routing .ol-button:focus,.ol-routing .ol-pedestrian,.ol-routing .ol-car{color:#003c88;opacity:.5;vertical-align:middle;cursor:pointer;background-color:#0000;outline:none;width:1.4em;height:1.4em;margin:0 .1em;font-size:1.1em;display:inline-block;position:relative}.ol-routing .ol-constraints{display:block}.ol-routing .ol-button:hover,.ol-routing .ol-button.selected,.ol-routing i.selected{opacity:1;background:0 0}.ol-routing .ol-method{display:block}.ol-control.ol-routing{background-color:#ffffff40}.ol-control.ol-routing:hover{background-color:#ffffffbf}.search-input>div>button:before{content:"±"}.ol-viewport .ol-scale{text-align:center;transform-origin:0 0;background-color:#ffffffbf;bottom:2.5em;left:.5em;transform:scaleX(.8)}.ol-viewport .ol-scale input{text-align:center;background:0 0;border:0;width:8em}.ol-search{top:.5em;left:3em}.ol-touch .ol-search{left:3.5em}.ol-search button{float:left;top:2px;left:2px}.ol-control.ol-search>button:before{content:"";box-sizing:border-box;background-color:#0000;border:.12em solid;border-radius:100%;width:.7em;height:.7em;position:absolute;top:.35em;left:.35em}.ol-control.ol-search>button:after{content:"";background-color:currentColor;border-radius:.05em;width:.45em;height:.15em;position:absolute;top:1.1em;left:.95em;transform:rotate(45deg);box-shadow:-.18em 0 0 -.03em}.ol-search button.ol-revers{float:none;vertical-align:bottom;background-image:none;display:inline-block;position:relative;top:0;left:0}.ol-search.ol-revers button.ol-revers{background-color:#00883c80}.ol-control.ol-search.ol-collapsed button.ol-revers{display:none}.ol-search button.ol-revers:before{content:"";box-sizing:border-box;border:.1em solid;border-radius:50%;width:.55em;height:.55em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-search button.ol-revers:after{content:"";background-color:#0000;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.35em 0,0 .35em,-.35em 0,0 -.35em}.ol-search input{box-sizing:border-box;border:0;height:1.375em;margin:1px 1px 1px 2px;padding-left:.3em;font-size:1.14em;transition:all .1s;display:inline-block}.ol-touch .ol-search input,.ol-touch .ol-search ul{font-size:1.5em}.ol-search.ol-revers>ul,.ol-control.ol-search.ol-collapsed>*{display:none}.ol-control.ol-search.ol-collapsed>button{display:block}.ol-search ul{clear:both;cursor:pointer;z-index:1;background:#fff;max-width:17em;margin:0;padding:0;list-style:none;display:block;overflow-x:hidden}.ol-search ul li{white-space:nowrap;text-overflow:ellipsis;padding:.1em .5em;overflow:hidden}.ol-search ul li.select,.ol-search ul li:hover{color:#fff;background-color:#003c8880}.ol-search ul li img{float:left;max-height:2em}.ol-search li.copy{color:#fff;background:#00000080}.ol-search li.copy a{color:#fff;text-decoration:none}.ol-search.searching:before{content:"";z-index:2;background:red;height:3px;animation:.5s linear infinite alternate ol-pulse;position:absolute;top:1.6em;left:0}@keyframes ol-pulse{0%{left:0;right:95%}50%{left:30%;right:30%}to{left:95%;right:0}}.ol-control.ol-search.IGNF-parcelle{background-color:#ffffffb3;padding-bottom:.2em}.ol-search.IGNF-parcelle input{width:14.5em}.ol-search.IGNF-parcelle input:read-only{opacity:.8;background:#ccc}.ol-search.IGNF-parcelle.ol-collapsed-list>ul.autocomplete{display:none}.ol-search.IGNF-parcelle label{clear:both;display:block}.ol-search.IGNF-parcelle>div input{text-align:right}.ol-search.IGNF-parcelle>div input,.ol-search.IGNF-parcelle>div label{box-sizing:border-box;text-overflow:ellipsis;width:4em;margin:.1em;font-size:1em;display:inline-block;overflow:hidden}.ol-search.IGNF-parcelle>div label{letter-spacing:-.04em}.ol-search.IGNF-parcelle ul.autocomplete-page{text-align:center;width:100%;margin-top:.5em;display:none}.ol-search.IGNF-parcelle.ol-collapsed-list ul.autocomplete-parcelle,.ol-search.IGNF-parcelle.ol-collapsed-list ul.autocomplete-page{display:block}.ol-search.IGNF-parcelle.ol-collapsed ul.autocomplete-page,.ol-search.IGNF-parcelle.ol-collapsed ul.autocomplete-parcelle,.ol-search.IGNF-parcelle ul.autocomplete-parcelle{display:none}.ol-search.IGNF-parcelle ul.autocomplete-page li{color:#fff;background:#003c8880;border-radius:50%;width:1.3em;height:1.3em;margin:0 .1em;padding:.1em;display:inline-block}.ol-search.IGNF-parcelle ul.autocomplete-page li.selected{background:#003c88}.ol-searchgps input.search,.ol-searchcoord input.search{display:none}.ol-control.ol-searchgps>button:first-child,.ol-control.ol-searchcoord>button:first-child{background-image:none}.ol-control.ol-searchgps>button:first-child:before,.ol-control.ol-searchcoord>button:first-child:before{content:"x/y";position:unset;border:unset;border-radius:0;width:auto;height:auto;display:block;transform:scaleX(.8)}.ol-control.ol-searchgps>button:first-child:after,.ol-control.ol-searchcoord>button:first-child:after{content:unset}.ol-control.ol-searchgps .ol-latitude,.ol-control.ol-searchgps .ol-longitude,.ol-control.ol-searchcoord .ol-latitude,.ol-control.ol-searchcoord .ol-longitude{clear:both}.ol-control.ol-searchgps .ol-latitude label,.ol-control.ol-searchgps .ol-longitude label,.ol-control.ol-searchcoord .ol-latitude label,.ol-control.ol-searchcoord .ol-longitude label{text-align:right;transform-origin:0 0;width:5.5em;margin:0 -.8em 0 0;display:inline-block;transform:scaleX(.8)}.ol-control.ol-searchcoord .ol-latitude label,.ol-control.ol-searchcoord .ol-longitude label{width:2em;margin:0}.ol-control.ol-searchgps .ol-latitude input,.ol-control.ol-searchgps .ol-longitude input{max-width:10em}.ol-control.ol-searchgps .ol-ext-toggle-switch{cursor:pointer;float:right;margin:.5em;font-size:.9em}.ol-searchgps .ol-decimal{margin-right:.7em;display:inline-block}.ol-searchgps .ol-dms,.ol-searchgps.ol-dms .ol-decimal{text-align:right;width:3em;display:none}.ol-searchgps.ol-dms .ol-dms{display:inline-block}.ol-searchgps span.ol-dms{text-align:left;width:.5em}.ol-searchgps.ol-control.ol-collapsed button.ol-geoloc,.ol-searchgps.ol-control.ol-collapsed button.ol-centerloc,.ol-searchcoord.ol-control.ol-collapsed button.ol-centerloc,.ol-searchcoord.ol-control.ol-collapsed button.ol-geoloc{display:none}.ol-searchgps button.ol-geoloc,.ol-searchgps button.ol-centerloc,.ol-searchcoord button.ol-centerloc,.ol-searchcoord button.ol-geoloc{float:right;background-image:none;margin-right:3px;position:relative;top:0}.ol-searchgps button.ol-geoloc:before,.ol-searchcoord button.ol-geoloc:before{content:"";border:.1em solid;border-radius:50%;width:.6em;height:.6em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-searchgps button.ol-geoloc:after,.ol-searchcoord button.ol-geoloc:after{content:"";background-color:#0000;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.45em 0,-.45em 0,0 -.45em,0 .45em,.25em 0,-.25em 0,0 -.25em,0 .25em}.ol-searchgps button.ol-centerloc:before,.ol-searchcoord button.ol-centerloc:before{content:"📍";border:0;width:auto;height:auto;padding:0;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-searchgps button.ol-centerloc:after,.ol-searchcoord button.ol-centerloc:after{display:none}.ol-control.ol-select{background-color:#ffffff80;top:.5em;left:3em}.ol-control.ol-select:hover{background-color:#ffffffb3}.ol-touch .ol-control.ol-select{left:3.5em}.ol-control.ol-select>button:before{content:"A";box-sizing:content-box;text-align:center;background-color:#0000;border:.2em solid;border-radius:100%;width:1em;height:1em;font-size:.6em;font-weight:400;line-height:1em;position:absolute;top:.5em;left:.5em}.ol-control.ol-select>button:after{content:"";background-color:currentColor;border-radius:.05em;width:.45em;height:.15em;position:absolute;top:1.15em;left:1em;transform:rotate(45deg);box-shadow:-.18em 0 0 -.03em}.ol-select>div button{float:right;width:auto;height:1.2em;padding:0 .5em;font-weight:400;line-height:1.2em}.ol-select .ol-delete{vertical-align:middle;cursor:pointer;width:1.5em;height:1em;display:inline-block;position:relative}.ol-select .ol-delete:before{content:"×";text-align:center;width:100%;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-select input{font-size:1em}.ol-control.ol-select select{max-width:10em;font-size:1em}.ol-control.ol-select select option.ol-default{color:#999;font-style:italic}.ol-control.ol-select>div{margin:.25em;display:block}.ol-control.ol-select.ol-collapsed>div{display:none}.ol-control.ol-select.ol-select-check{max-width:20em}.ol-control.ol-select label.ol-ext-check{margin-right:1em}.ol-control.ol-select label.ol-ext-toggle-switch span{font-size:1.1em}.ol-select ul{margin:0;padding:0;list-style:none}.ol-control.ol-select input[type=search],.ol-control.ol-select input[type=text]{width:8em}.ol-select .ol-autocomplete{display:inline}.ol-select .ol-autocomplete ul{background:#fff;border:1px solid #999;min-width:10em;font-size:.85em;display:block;position:absolute}.ol-select .ol-autocomplete ul li{padding:0 .5em}.ol-select .ol-autocomplete ul li:hover{color:#fff;background:#003c8880}.ol-select ul.ol-hidden{display:none}.ol-select-multi li>div:hover,.ol-select-multi li>div.ol-control.ol-select{top:unset;left:unset;background:0 0;position:relative}.ol-select-multi li>div>button,.ol-select-multi li>div .ol-ok{display:none}.ol-select-multi li .ol-control.ol-select.ol-collapsed>div,.ol-select-multi li>div>div{display:block}.ol-control.ol-status{color:#fff;box-sizing:border-box;background:#0003;border-radius:0;width:100%;padding:.3em 3em;font-size:.9em;display:none;top:0;left:0;pointer-events:none!important}.ol-control.ol-status.ol-visible{display:initial}.ol-control.ol-status.ol-bottom{top:auto;bottom:0}.ol-control.ol-status.ol-left{width:auto;padding:.3em .5em .3em 3em;top:0;bottom:0}.ol-control.ol-status.ol-right{width:auto;padding:.3em 3em .3em .5em;inset:0 0 0 auto}.ol-control.ol-status.ol-center{top:50%;transform:translateY(-50%)}.ol-control.ol-storymap{background-color:#ffffff80;border-radius:.5em;max-width:35%;height:auto;position:absolute;top:.5em;bottom:.5em;left:.5em}.ol-storymap{height:100%;padding:0;position:relative;overflow:hidden}.ol-storymap>div{scroll-behavior:smooth;-webkit-user-select:none;user-select:none;height:100%;padding:0;position:relative;overflow:hidden}.ol-storymap>div.ol-move{scroll-behavior:unset}.ol-control.ol-storymap .chapter{padding:.5em;position:relative;overflow:hidden}.ol-control.ol-storymap .chapter:last-child{margin-bottom:100%}.ol-storymap .chapter{cursor:pointer;opacity:.4}.ol-storymap .chapter.ol-select{cursor:default;opacity:1;background-color:#fffc}.ol-storymap .ol-scroll-top,.ol-storymap .ol-scroll-next{color:#003c8880;text-align:center;cursor:pointer;min-height:1.7em;position:relative}.ol-storymap .ol-scroll-next span{padding-bottom:1.4em;display:block}.ol-storymap .ol-scroll-top span{padding-top:1.4em;display:block}.ol-storymap .ol-scroll-top:before,.ol-storymap .ol-scroll-next:before{content:"";pointer-events:none;border:.3em solid;border-color:#0000 currentColor currentColor #0000;border-radius:.3em;width:.8em;height:.8em;animation:.35s linear infinite alternate ol-bounce-bottom;display:block;position:absolute;left:50%;transform:translate(-50%)rotate(45deg)}.ol-storymap .ol-scroll-top:before{border-color:currentColor #0000 #0000 currentColor;animation:.35s linear infinite alternate ol-bounce-top}@keyframes ol-bounce-top{0%{top:-.2em}to{top:.5em}}@keyframes ol-bounce-bottom{0%{bottom:-.2em}to{bottom:.5em}}.ol-storymap img[data-title]{cursor:pointer}.ol-storymap.scrollLine,.ol-storymap.scrollBox{background-color:#0000;border-radius:0;max-width:40%;top:0;bottom:0}.ol-storymap.scrollLine .chapter,.ol-storymap.scrollBox .chapter{background-color:#fff;margin:100% 0}.ol-storymap.scrollLine .chapter:first-child,.ol-storymap.scrollBox .chapter:first-child{margin-top:3em}.ol-storymap.scrollLine .chapter.ol-select,.ol-storymap.scrollLine .chapter,.ol-storymap.scrollBox .chapter.ol-select,.ol-storymap.scrollBox .chapter{opacity:1}.ol-storymap.scrollLine .ol-scrolldiv,.ol-storymap.scrollBox .ol-scrolldiv{padding-right:30px}.ol-storymap.scrollLine:before,.ol-storymap.scrollBox:before{content:"";background-color:#fff;width:2px;height:100%;position:absolute;top:0;bottom:0;right:14px}.ol-storymap.scrollLine .ol-scroll,.ol-storymap.scrollBox .ol-scroll{width:1px;padding:0;transition:none;right:15px;overflow:visible;opacity:1!important;display:block!important}.ol-storymap.scrollLine .ol-scroll>div{-webkit-box-shadow:unset;box-shadow:unset;background-color:#0000;left:50%;overflow:visible;transform:translate(-50%)}.ol-storymap.scrollLine .ol-scroll>div:before{content:"";background-color:#0af;border:2px solid #fff;border-radius:50%;width:10px;height:10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-storymap.scrollBox .ol-scroll>div{display:none}.ol-storymap.scrollBox .chapter:after{content:"";box-sizing:border-box;z-index:1;border:5px solid #0000;border-radius:50%;width:20px;height:20px;position:absolute;top:min(30%,5em);right:-24.5px;box-shadow:0 0 0 2px #fff,inset 0 0 0 15px #0af}.ol-swipe{-ms-touch-action:none;touch-action:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-swipe:before{content:"";z-index:-1;background:#fff;width:4px;position:absolute;top:-5000px;bottom:-5000px;left:50%;transform:translate(-2px)}.ol-swipe.horizontal:before{width:auto;height:4px;inset:50% -5000px auto}.ol-swipe,.ol-swipe button{cursor:ew-resize}.ol-swipe.horizontal,.ol-swipe.horizontal button{cursor:ns-resize}.ol-swipe:after,.ol-swipe button:before,.ol-swipe button:after{content:"";background:currentColor;width:2px;position:absolute;top:25%;bottom:25%;left:50%;transform:translate(-1px)}.ol-swipe button:after{transform:translate(4px)}.ol-swipe button:before{transform:translate(-6px)}.ol-control.ol-timeline{background-color:#fff6;transition:all .3s;bottom:0;left:0;right:0}.ol-control.ol-timeline.ol-collapsed{transform:translateY(100%)}.ol-timeline{padding:2px 0 0;overflow:hidden}.ol-timeline .ol-scroll{scroll-behavior:smooth;height:6em;padding:0 50%;line-height:1em;overflow:hidden}.ol-timeline .ol-scroll.ol-move{scroll-behavior:unset}.ol-timeline.ol-hasbutton .ol-scroll{margin-left:1.5em;padding:0 calc(50% - .75em)}.ol-timeline .ol-buttons{z-index:10;background:#ffffff80;width:1.5em;display:none;position:absolute;top:0;bottom:0;left:0}.ol-timeline.ol-hasbutton .ol-buttons{display:block}.ol-timeline .ol-buttons button{margin:1px;font-size:1em;position:relative}.ol-timeline .ol-buttons .ol-zoom-in:before,.ol-timeline .ol-buttons .ol-zoom-out:before{content:"+";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-timeline .ol-buttons .ol-zoom-out:before{content:"−"}.ol-timeline .ol-scroll>div{height:100%;position:relative}.ol-timeline .ol-scroll .ol-times{background:#ffffff80;height:1em;position:absolute;bottom:0;left:-1000px;right:-1000px}.ol-timeline .ol-scroll .ol-time{color:#999;font-size:.7em;position:absolute;bottom:0;transform:translate(-50%)}.ol-timeline .ol-scroll .ol-time.ol-year{color:#666;z-index:1}.ol-timeline .ol-scroll .ol-time:before{content:"";border-left:1px solid;height:500px;position:absolute;bottom:1.2em;left:50%}.ol-timeline .ol-scroll .ol-features{margin:0 0 0 200px;position:absolute;inset:0 -1000px 1em -200px;overflow:hidden}.ol-timeline .ol-scroll .ol-feature{color:#999;cursor:pointer;box-sizing:border-box;background:#fff;border:1px solid #ccc;max-width:3em;min-height:1em;max-height:2.4em;padding:0 .5em 0 0;font-size:.7em;line-height:1.2em;transition:all .3s;position:absolute;top:0;overflow:hidden}.ol-timeline.ol-zoomhover .ol-scroll .ol-feature:hover,.ol-timeline.ol-zoomhover .ol-scroll .ol-feature.ol-select{z-index:1;background:#eee;transform:scale(1.2)}.ol-timeline .ol-center-date{z-index:2;pointer-events:none;opacity:.4;background-color:red;width:2px;height:100%;display:none;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.ol-timeline.ol-hasbutton .ol-center-date{left:calc(50% + .75em)}.ol-timeline.ol-pointer .ol-center-date{display:block}.ol-timeline.ol-pointer .ol-center-date:before,.ol-timeline.ol-pointer .ol-center-date:after{content:"";border:.3em solid #0000;border-width:.3em .25em;position:absolute;left:50%;transform:translate(-50%)}.ol-timeline.ol-pointer .ol-center-date:before{border-top-color:red;top:0}.ol-timeline.ol-pointer .ol-center-date:after{border-bottom-color:red;bottom:0}.ol-timeline.ol-interval .ol-center-date{box-sizing:content-box;opacity:.2;background-color:#0000;border:0 solid #000;border-width:0 10000px;display:block}.ol-control.ol-videorec{white-space:nowrap;top:0;left:50%;transform:translate(-50%)}.ol-control.ol-videorec button{vertical-align:middle;display:inline-block;position:relative}.ol-control.ol-videorec button:before{content:"";background-color:currentColor;width:.8em;height:.8em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-videorec button.ol-start:before{background-color:#c00;border-radius:50%;width:.9em;height:.9em}.ol-control.ol-videorec button.ol-pause:before{background-color:#0000;width:.2em;box-shadow:-.2em 0,.2em 0}.ol-control.ol-videorec button.ol-resume:before{box-sizing:border-box;background:0 0;border:.4em solid #0000;border-left:.6em solid;border-right-width:0;width:auto}.ol-control.ol-videorec button.ol-stop,.ol-control.ol-videorec button.ol-pause,.ol-control.ol-videorec button.ol-resume,.ol-control.ol-videorec[data-state=rec] .ol-start,.ol-control.ol-videorec[data-state=pause] .ol-start{display:none}.ol-control.ol-videorec[data-state=rec] .ol-stop,.ol-control.ol-videorec[data-state=pause] .ol-stop,.ol-control.ol-videorec[data-state=rec] .ol-pause,.ol-control.ol-videorec[data-state=pause] .ol-resume{display:inline-block}.ol-control.ol-wmscapabilities{top:.5em;right:2.5em}.ol-touch .ol-control.ol-wmscapabilities{right:3em}.ol-control.ol-wmscapabilities.ol-hidden{display:none}.ol-control.ol-wmscapabilities button:before{content:"+";position:absolute;top:calc(50% - .35em);left:50%;transform:translate(-50%,-50%)}.ol-control.ol-wmscapabilities button:after{content:"";background:0 0;border:.15em solid #0000;border-width:0 .15em .15em 0;border-radius:.1em 0;width:.75em;height:.75em;position:absolute;top:calc(50% - .05em);left:50%;transform:scaleY(.6)translate(-50%,-50%)rotate(45deg);box-shadow:inset -.18em -.18em,-.4em .1em 0 -.25em,.1em -.35em 0 -.25em,.15em .15em}.ol-wmscapabilities .ol-searching{opacity:.5}.ol-wmscapabilities .ol-searching .ol-url:after{content:"";background-color:currentColor;border-radius:50%;width:.7em;height:.7em;animation:2s linear infinite ol-wmscapabilities-rotate;display:block;position:absolute;top:6em;left:calc(50% - .35em);box-shadow:0 1em,0 -1em,1em 0,-1em 0}@keyframes ol-wmscapabilities-rotate{to{transform:rotate(360deg)}}.ol-wmscapabilities .ol-url input{box-sizing:border-box;width:calc(100% - 10em);min-width:min(100%,20em)}.ol-wmscapabilities .ol-url select{width:2em;height:100%;padding:1px}.ol-wmscapabilities .ol-url button{width:7.5em;margin-left:.5em}.ol-wmscapabilities .ol-result{margin-top:.5em;display:none}.ol-wmscapabilities .ol-result.ol-visible{display:block}.ol-wmscapabilities .ol-select-list{box-sizing:border-box;border:1px solid #369;border-radius:0;width:calc(100% - 120px);max-height:14.5em;font-size:1em;position:relative;overflow-x:hidden}.ol-wmscapabilities .ol-select-list option{cursor:pointer;box-sizing:border-box;text-overflow:ellipsis;width:100%;padding:.1em .5em 0;overflow:hidden}.ol-wmscapabilities .ol-select-list .level-1{padding-left:1em}.ol-wmscapabilities .ol-select-list .level-2{padding-left:1.5em}.ol-wmscapabilities .ol-select-list .level-3{padding-left:2em}.ol-wmscapabilities .ol-select-list .level-4{padding-left:2.5em}.ol-wmscapabilities .ol-select-list .level-5{padding-left:3em}.ol-wmscapabilities .ol-select-list .ol-info{font-style:italic}.ol-wmscapabilities .ol-select-list .ol-title{background-color:#003c881a}.ol-wmscapabilities .ol-select-list option:hover{color:#fff;background-color:#003c8880}.ol-wmscapabilities .ol-select-list .selected{color:#fff;background-color:#003c88b3}.ol-wmscapabilities .ol-preview{float:right;color:#666;text-align:center;background:#003c881a;width:100px;margin-left:10px;padding:0 5px 5px}.ol-wmscapabilities .ol-preview.tainted{float:right;color:#666;text-align:center;background:#88003c1a;width:100px;margin-left:10px;padding:0 5px 5px}.ol-wmscapabilities .ol-preview img{background:#fff;width:100%;display:block}.ol-wmscapabilities .ol-legend{max-width:100%;display:none}.ol-wmscapabilities .ol-legend.visible{display:block}.ol-wmscapabilities .ol-buttons{clear:both;text-align:right}.ol-wmscapabilities .ol-data p{margin:0}.ol-wmscapabilities .ol-data p.ol-title{margin:1em 0 .5em;font-weight:700}.ol-wmscapabilities .ol-error{color:#800}.ol-wmscapabilities ul.ol-wmsform{padding:0;list-style:none;display:none}.ol-wmscapabilities ul.ol-wmsform.visible{display:block}.ol-wmscapabilities .ol-wmsform label{text-align:right;width:calc(40% - .5em);margin-right:.5em;display:inline-block}.ol-wmscapabilities .ol-wmsform input{box-sizing:border-box;width:60%;display:inline-block}.ol-wmscapabilities .ol-wmsform input[type=checkbox]{width:auto}.ol-wmscapabilities .ol-wmsform button{float:right;margin:1em 0}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] input{width:calc(60% - 2em)}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button{vertical-align:middle;color:#444;width:2em;height:1.6em;margin:0;position:relative}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:before,.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:after{content:"";border:.1em solid;width:.25em;height:.9em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)skewY(-15deg)}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:after{transform:translate(.4em)translate(-50%,-50%)skewY(15deg);box-shadow:-.8em .25em}.ol-ext-dialog.ol-wmscapabilities form{width:600px;min-height:15em;top:15%;transform:translate(-50%,-15%)}.ol-ext-dialog.ol-wmscapabilities .ol-content{max-height:calc(100vh - 6em)}.ol-ext-dialog.ol-wmtscapabilities [data-param=map],.ol-ext-dialog [data-param=style]{display:none}.ol-ext-dialog.ol-wmtscapabilities [data-param=style]{display:list-item}.ol-ext-dialog.ol-wmtscapabilities [data-param=proj],.ol-ext-dialog.ol-wmtscapabilities [data-param=version]{opacity:.6;pointer-events:none}.ol-ext-dialog.ol-wmscapabilities button.ol-wmsform{text-align:center;width:1.8em}.ol-ext-dialog.ol-wmscapabilities button.ol-wmsform:before{content:"+"}.ol-ext-dialog.ol-wmscapabilities .ol-form button.ol-wmsform:before{content:"-"}.ol-ext-dialog.ol-wmscapabilities .ol-form button.ol-load,.ol-ext-dialog.ol-wmscapabilities .ol-form .ol-legend{display:none}.ol-ext-dialog.ol-wmscapabilities .ol-form ul.ol-wmsform{clear:both;display:block}.ol-target-overlay .ol-target{border:1px solid #0000;width:0;height:20px;display:block;box-shadow:0 0 1px 1px #fff}.ol-target-overlay .ol-target:after,.ol-target-overlay .ol-target:before{content:"";border:1px solid #369;width:20px;height:0;display:block;position:absolute;top:10px;left:-10px;box-shadow:0 0 1px 1px #fff}.ol-target-overlay .ol-target:after{-webkit-box-shadow:none;box-shadow:none;width:0;height:20px;top:0;left:0}.ol-overlaycontainer .ol-touch-cursor{cursor:pointer;background:#fff6;border-radius:50%;width:56px;height:56px;margin:6px;box-shadow:inset 0 0 0 5px #369}.ol-overlaycontainer .ol-touch-cursor:after{content:"";transform-origin:100% 100%;background:radial-gradient(circle at 100% 100%,#0000,#0000 70%,#369 70%,#369);width:50%;height:50%;position:absolute;top:0;left:0}.ol-overlaycontainer .ol-touch-cursor-center{margin-top:16px;margin-left:-28px}.ol-overlaycontainer .ol-touch-cursor-center:after{transform:rotate(45deg)}.ol-overlaycontainer .ol-touch-cursor-right{margin-left:-62px}.ol-overlaycontainer .ol-touch-cursor-right:after{transform:rotate(90deg)}.ol-overlaycontainer .ol-touch-cursor .ol-button{color:#369;cursor:pointer;background:#fff6;border-radius:50%;width:55%;height:55%;transition:all .5s,opacity,background;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)scale(0);box-shadow:inset 0 0 0 3px}.ol-overlaycontainer .ol-touch-cursor.active.disable .ol-button{opacity:.8;background:#3693}.ol-overlaycontainer .ol-touch-cursor.active .ol-button{transform:translate(-50%,-50%)scale(1)}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-0{top:-18%;left:118%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-1{top:50%;left:140%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-2{top:120%;left:120%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-3{top:140%;left:50%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-4{top:118%;left:-18%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-5{top:50%;left:-40%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-6{top:-18%;left:-18%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-7{top:-40%;left:50%}.ol-overlaycontainer .ol-touch-cursor .ol-button:before{content:"";text-align:center;width:1.5em;height:1em;line-height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-add:before,.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-remove:before{content:"−";font-size:1.375em;font-weight:700;line-height:.95em}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-add:before{content:"+"}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-x:before{content:"×";font-size:1.2em;font-weight:700}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-move:before{content:"✥";font-size:1.2em}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-check:before{content:"✓";font-weight:700}.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-x,.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-remove,.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-check{opacity:.8;background:#3693}.ol-overlaycontainer .ol-touch-cursor .ol-button>div{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlaycontainer .ol-touch-cursor .ol-button-type:before{content:"⇎";font-weight:700}.mapboxgl-canvas:focus{outline:none}.ol-perspective-map{width:200%;height:200%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-perspective-map .ol-layer{z-index:-1!important}.ol-perspective-map .ol-layers{transform:translateY(0)perspective(200px)rotateX(0)scaleY(1)}.ol-perspective-map .ol-overlaycontainer,.ol-perspective-map .ol-overlaycontainer-stopevent{top:50%;left:50%;transform:translate(-50%,-50%);width:50%!important;height:50%!important}.ol-overlay-container .ol-magnify{z-index:0;background:#00000080;border:3px solid #369;border-radius:50%;width:150px;height:150px;position:relative;overflow:hidden;box-shadow:5px 5px 5px #00000080}.ol-overlay-container .ol-magnify:before{content:"";z-index:1;border-radius:50%;width:100%;height:100%;display:block;position:absolute;top:0;left:0;box-shadow:inset 0 0 40px 2px #00000040}.ol-overlay-container .ol-magnify:after{content:"";z-index:1;border-radius:50%;width:20%;height:0;display:block;position:absolute;top:20%;left:23%;transform:rotate(-40deg);box-shadow:0 0 20px 7px #fff}.ol-popup.anim{visibility:hidden}.ol-popup.anim.visible{visibility:visible}.ol-popup.anim.visible>div{visibility:visible;animation:.4s ol-popup_bounce;transform:none}@keyframes ol-popup_bounce{0%{transform:scale(0)}50%{transform:scale(1.1)}80%{transform:scale(.95)}to{transform:scale(1)}}.ol-popup.anim.ol-popup-bottom.ol-popup-left>div{transform-origin:0 100%}.ol-popup.anim.ol-popup-bottom.ol-popup-right>div{transform-origin:100% 100%}.ol-popup.anim.ol-popup-bottom.ol-popup-center>div{transform-origin:50% 100%}.ol-popup.anim.ol-popup-top.ol-popup-left>div{transform-origin:0 0}.ol-popup.anim.ol-popup-top.ol-popup-right>div{transform-origin:100% 0}.ol-popup.anim.ol-popup-top.ol-popup-center>div{transform-origin:50% 0}.ol-popup.anim.ol-popup-middle.ol-popup-left>div{transform-origin:0}.ol-popup.anim.ol-popup-middle.ol-popup-right>div{transform-origin:100%}.ol-popup{-webkit-user-select:none;user-select:none;font-size:.9em}.ol-popup .ol-popup-content{cursor:default;padding:.25em .5em;overflow:hidden}.ol-popup.hasclosebox .ol-popup-content{margin-right:1.7em}.ol-popup .ol-popup-content:after{clear:both;content:"";height:0;font-size:0;display:block}.ol-popup .anchor{pointer-events:none;background:red;width:0;height:0;margin:-11px 22px;display:block;position:absolute}.ol-popup .anchor:after,.ol-popup .anchor:before{position:absolute}.ol-popup-right .anchor:after,.ol-popup-right .anchor:before{right:0}.ol-popup-top .anchor{top:0}.ol-popup-bottom .anchor{bottom:0}.ol-popup-right .anchor{right:0}.ol-popup-left .anchor{left:0}.ol-popup-center .anchor{left:50%;margin-left:0!important}.ol-popup-middle .anchor{top:50%;margin-top:0!important}.ol-popup-center.ol-popup-middle .anchor{display:none}.ol-popup.ol-fixed{margin:0!important;inset:.5em .5em auto auto!important;transform:none!important}.ol-popup.ol-fixed .anchor{display:none}.ol-popup.ol-fixed.anim>div{animation:none}.ol-popup .ol-fix{float:right;cursor:pointer;background:#fff;width:1em;height:.9em;margin:.2em;position:relative}.ol-popup .ol-fix:before{content:"";box-sizing:border-box;border:.1em solid #666;border-right-width:.3em;width:.8em;height:.7em;margin:.1em;display:block}.ol-popup.shadow{box-shadow:2px 2px 2px 2px #00000080}.ol-popup .closeBox{color:#fff;cursor:pointer;float:right;background-color:#003c8880;border:0;border-radius:2px;width:1.4em;height:1.4em;margin:5px 5px 0 0;padding:0;font-size:.9em;font-weight:700;display:none;position:relative}.ol-popup.hasclosebox .closeBox{display:block}.ol-popup .closeBox:hover{background-color:#003c88b3}.ol-popup .closeBox:after{content:"×";text-align:center;width:100%;margin:-.5em 0;font-size:1.5em;line-height:1em;position:absolute;top:50%;left:0;right:0}.ol-popup.modifytouch{background-color:#eee}.ol-popup.modifytouch .ol-popup-content{white-space:nowrap;padding:0 .25em;font-size:.85em}.ol-popup.modifytouch .ol-popup-content a{text-decoration:none}.ol-popup.tooltips{background-color:#ffa}.ol-popup.tooltips .ol-popup-content{white-space:nowrap;padding:0 .25em;font-size:.85em}.ol-popup.default>div{background-color:#fff;border:1px solid #69f;border-radius:5px}.ol-popup.default{margin:-11px 0;transform:translateY(-22px)}.ol-popup-top.ol-popup.default{margin:11px 0;transform:none}.ol-popup-left.default{margin:-11px -22px;transform:translateY(-22px)}.ol-popup-top.ol-popup-left.default{margin:11px -22px;transform:none}.ol-popup-right.default{margin:-11px 22px;transform:translate(44px,-22px)}.ol-popup-top.ol-popup-right.default{margin:11px 22px;transform:translate(44px)}.ol-popup-middle.default{margin:0 10px;transform:none}.ol-popup-middle.ol-popup-right.default{margin:0 -10px;transform:translate(-20px)}.ol-popup.default .anchor{color:#69f}.ol-popup.default .anchor:after,.ol-popup.default .anchor:before{content:"";border:11px solid;border-color:currentColor #0000;margin:0 -11px}.ol-popup.default .anchor:after{border-width:11px;border-color:#fff #0000;margin:2px -11px}.ol-popup-top.default .anchor:before,.ol-popup-top.default .anchor:after{border-top:0;top:0}.ol-popup-bottom.default .anchor:before,.ol-popup-bottom.default .anchor:after{border-bottom:0;bottom:0}.ol-popup-middle.default .anchor:before{border-color:#0000 currentColor;margin:-11px -33px}.ol-popup-middle.default .anchor:after{border-color:#0000 #fff;margin:-11px -31px}.ol-popup-middle.ol-popup-left.default .anchor:before,.ol-popup-middle.ol-popup-left.default .anchor:after{border-left:0}.ol-popup-middle.ol-popup-right.default .anchor:before,.ol-popup-middle.ol-popup-right.default .anchor:after{border-right:0}.ol-popup.placemark{color:#c00;margin:-.65em 0;transform:translateY(-1.3em)}.ol-popup.placemark>div{width:2em;height:2em;min-width:unset;box-sizing:border-box;background-color:#fff;border:0;border-radius:50%;font-size:15px;position:relative;box-shadow:inset 0 0 0 .45em}.ol-popup.placemark .ol-popup-content{cursor:default;text-align:center;width:1em;height:1em;padding:.25em 0;line-height:1em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-popup.placemark .anchor{margin:0}.ol-popup.placemark .anchor:before{content:"";background:0 0;border-radius:50%;width:1em;height:.5em;margin:-.5em;box-shadow:0 1em .5em #00000080}.ol-popup.placemark .anchor:after{content:"";border:.7em solid #0000;border-top:1em solid;border-bottom:0 solid;margin:-.75em -.7em;bottom:0}.ol-popup.placemark.shield>div{border-radius:.2em}.ol-popup.placemark.shield .anchor:after{border-width:.8em 1em 0;margin:-.7em -1em}.ol-popup.placemark.blazon>div{border-radius:.2em}.ol-popup.placemark.pushpin{margin:-2.2em 0;transform:translateY(-4em)}.ol-popup.placemark.pushpin>div{border-radius:0;width:1.1em;box-shadow:inset 2em 0;background:0 0!important}.ol-popup.placemark.pushpin>div:before{content:"";pointer-events:none;border:.5em solid #0000;border-top:.3em solid;border-bottom-color:currentColor;width:1.3em;height:1.5em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-popup.placemark.needle{margin:-2em 0;transform:translateY(-4em)}.ol-popup.placemark.pushpin .anchor,.ol-popup.placemark.needle .anchor{margin:-1.2em}.ol-popup.placemark.pushpin .anchor:after,.ol-popup.placemark.needle .anchor:after{border-style:solid;border-width:2em .15em 0;width:.1em;margin:-.55em -.2em}.ol-popup.placemark.pushpin .anchor:before,.ol-popup.placemark.needle .anchor:before{margin:-.75em -.5em}.ol-popup.placemark.flagv{margin:-2em 1em;transform:translateY(-4em)}.ol-popup.placemark.flagv>div{-webkit-box-shadow:none;box-shadow:none;background-color:#0000;border-radius:0}.ol-popup.placemark.flagv>div:before{content:"";pointer-events:none;border:1em solid #0000;border-left:2em solid;position:absolute}.ol-popup.placemark.flagv .anchor{margin:-1.4em}.ol-popup.placemark.flag{margin:-2em 1em;transform:translateY(-4em)}.ol-popup.placemark.flag>div{border-radius:0;transform-origin:0 150%!important}.ol-popup.placemark.flag .anchor{margin:-1.4em}.ol-popup.placemark.flagv .anchor:after,.ol-popup.placemark.flag .anchor:after{border-style:solid;border-width:2em .15em 0;width:.1em;margin:-.55em -1em}.ol-popup.placemark.flagv .anchor:before,.ol-popup.placemark.flag .anchor:before{margin:-.75em -1.25em}.ol-popup.placemark.flag.finish{margin:-2em 1em}.ol-popup.placemark.flag.finish>div{background-image:linear-gradient(45deg,currentColor 25%,#0000 25% 75%,currentColor 75%,currentColor),linear-gradient(45deg,currentColor 25%,#0000 25% 75%,currentColor 75%,currentColor);background-position:.5em 0,0 .5em;background-size:1em 1em;box-shadow:inset 0 0 0 .25em}.ol-popup.black .closeBox{color:#f80;background-color:#00000080;border-radius:5px}.ol-popup.black .closeBox:hover{color:#da2;background-color:#000000b3}.ol-popup.black{margin:-20px 0;transform:translateY(-40px)}.ol-popup.black>div{color:#fff;background-color:#0009;border-radius:5px}.ol-popup-top.ol-popup.black{margin:20px 0;transform:none}.ol-popup-left.black{margin:-20px -22px;transform:translateY(-40px)}.ol-popup-top.ol-popup-left.black{margin:20px -22px;transform:none}.ol-popup-right.black{margin:-20px 22px;transform:translate(44px,-40px)}.ol-popup-top.ol-popup-right.black{margin:20px 22px;transform:translate(44px)}.ol-popup-middle.black{margin:0 11px;transform:none}.ol-popup-left.ol-popup-middle.black{transform:none}.ol-popup-right.ol-popup-middle.black{margin:0 -11px;transform:translate(-22px)}.ol-popup.black .anchor{color:#0009;margin:-20px 11px}.ol-popup.black .anchor:before{content:"";border:20px solid;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.black .anchor:before{border-top:0;top:0}.ol-popup-bottom.black .anchor:before{border-bottom:0;bottom:0}.ol-popup-middle.black .anchor:before{border-color:#0000 currentColor;margin:-20px -22px}.ol-popup-middle.ol-popup-left.black .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.black .anchor:before{border-right:0}.ol-popup-center.black .anchor:before{margin:0 -10px}.ol-popup.tips .closeBox{color:#fff;background-color:red;border-radius:50%;width:1.2em;height:1.2em}.ol-popup.tips .closeBox:hover{background-color:#f40}.ol-popup.tips{margin:-20px 0;transform:translateY(-40px)}.ol-popup.tips>div{color:#333;background-color:#cea;border:5px solid #ad7;border-radius:5px}.ol-popup-top.ol-popup.tips{margin:20px 0;transform:none}.ol-popup-left.tips{margin:-20px -22px;transform:translateY(-40px)}.ol-popup-top.ol-popup-left.tips{margin:20px -22px;transform:none}.ol-popup-right.tips{margin:-20px 22px;transform:translate(44px,-40px)}.ol-popup-top.ol-popup-right.tips{margin:20px 22px;transform:translate(44px)}.ol-popup-middle.tips{margin:0;transform:none}.ol-popup-left.ol-popup-middle.tips{margin:0 22px;transform:none}.ol-popup-right.ol-popup-middle.tips{margin:0 -22px;transform:translate(-44px)}.ol-popup.tips .anchor{color:#ad7;margin:-18px 22px}.ol-popup.tips .anchor:before{content:"";border:20px solid;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.tips .anchor:before{border-top:0;top:0}.ol-popup-bottom.tips .anchor:before{border-bottom:0;bottom:0}.ol-popup-center.tips .anchor:before{border-width:20px 6px;margin:0 -6px}.ol-popup-left.tips .anchor:before{border-left:0;margin-left:0}.ol-popup-right.tips .anchor:before{border-right:0;margin-right:0}.ol-popup-middle.tips .anchor:before{border-width:6px 20px;border-color:#0000 currentColor;margin:-6px -41px}.ol-popup-middle.ol-popup-left.tips .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.tips .anchor:before{border-right:0}.ol-popup.warning .closeBox{color:#fff;background-color:red;border-radius:50%;font-size:.83em}.ol-popup.warning .closeBox:hover{background-color:#f40}.ol-popup.warning{color:#900;background-color:#fd0;border:4px dashed red;border-radius:3px;margin:-28px 10px;transform:translateY(-56px)}.ol-popup-top.ol-popup.warning{margin:28px 10px;transform:none}.ol-popup-left.warning{margin:-28px -22px;transform:translateY(-56px)}.ol-popup-top.ol-popup-left.warning{margin:28px -22px;transform:none}.ol-popup-right.warning{margin:-28px 22px;transform:translate(44px,-56px)}.ol-popup-top.ol-popup-right.warning{margin:28px 22px;transform:translate(44px)}.ol-popup-middle.warning{margin:0;transform:none}.ol-popup-left.ol-popup-middle.warning{margin:0 22px;transform:none}.ol-popup-right.ol-popup-middle.warning{margin:0 -22px;transform:translate(-44px)}.ol-popup.warning .anchor{margin:-33px 7px}.ol-popup.warning .anchor:before{content:"";border:30px solid red;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.warning .anchor:before{border-top:0;top:0}.ol-popup-bottom.warning .anchor:before{border-bottom:0;bottom:0}.ol-popup-center.warning .anchor:before{margin:0 -21px}.ol-popup-middle.warning .anchor:before{border-width:10px 22px;border-color:#0000 red;margin:-10px -33px}.ol-popup-middle.ol-popup-left.warning .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.warning .anchor:before{border-right:0}.ol-popup .ol-popupfeature table{width:100%}.ol-popup .ol-popupfeature table td{text-overflow:ellipsis;max-width:25em;overflow:hidden}.ol-popup .ol-popupfeature table td img{max-width:100px;max-height:100px}.ol-popup .ol-popupfeature tr:nth-child(odd){background-color:#eee}.ol-popup .ol-popupfeature .ol-zoombt{color:#003c8880;background:0 0;border:0;outline:none;width:2em;height:2em;display:inline-block;position:relative}.ol-popup .ol-popupfeature .ol-zoombt:before{content:"";box-sizing:border-box;background-color:#0000;border:.17em solid;border-radius:100%;width:1em;height:1em;position:absolute;top:.3em;left:.3em}.ol-popup .ol-popupfeature .ol-zoombt:after{content:"";box-sizing:border-box;border-style:solid;border-width:.1em .3em;border-radius:.03em;position:absolute;top:1.35em;left:1.15em;transform:rotate(45deg);box-shadow:-.2em 0 0 -.04em}.ol-popup .ol-popupfeature .ol-count{float:right;margin:.25em 0}.ol-popup .ol-popupfeature .ol-prev,.ol-popup .ol-popupfeature .ol-next{vertical-align:bottom;cursor:pointer;border:.5em solid #0000;border-left-color:#003c8880;border-right:0 solid #003c8880;margin:0 .5em;display:inline-block}.ol-popup .ol-popupfeature .ol-prev{border-width:.5em .5em .5em 0}.ol-popup.tooltips.black{background-color:#0000}.ol-popup.tooltips.black>div{background-color:#00000080;padding:.2em .5em;transform:scaleY(1.3)}.ol-popup-middle.tooltips.black .anchor:before{border-width:5px 10px;margin:-5px -21px}.ol-popup-center.ol-popup-middle,.ol-popup-top.ol-popup-left.ol-fixPopup,.ol-popup-top.ol-popup-right.ol-fixPopup,.ol-popup.ol-fixPopup{margin:0}.ol-miniscroll{position:relative}.ol-miniscroll:hover .ol-scroll{opacity:.5;transition:opacity 1s}.ol-miniscroll .ol-scroll{-ms-touch-action:none;touch-action:none;opacity:0;z-index:1;border-radius:9px;width:9px;height:auto;max-height:100%;transition:opacity 1s .5s;position:absolute;right:0;overflow:hidden}.ol-miniscroll .ol-scroll>div{-ms-touch-action:none;touch-action:none;box-sizing:border-box;cursor:pointer;border:2px solid #0000;border-radius:9px/12px;width:9px;height:9px;position:absolute;top:0;right:0;box-shadow:inset 10px 0}.ol-miniscroll .ol-scroll.ol-100pc{opacity:0}.ol-viewport canvas.ol-fixedoverlay{width:100%;height:100%;position:absolute;top:0;left:0}.ol-ext-toggle-switch{cursor:pointer;position:relative}.ol-ext-toggle-switch input[type=radio],.ol-ext-toggle-switch input[type=checkbox]{opacity:0;width:0;height:0;margin:0;padding:0;display:inline-block}.ol-ext-toggle-switch span{color:#003c8880;cursor:pointer;vertical-align:middle;background-color:#ccc;border-radius:1em;width:1.6em;height:1em;margin:-.15em .2em .15em;font-size:1.3em;transition:all .4s,background-color,border-color,box-shadow;display:inline-block;position:relative}.ol-ext-toggle-switch span:before{content:"";box-sizing:border-box;background-color:#fff;border:2px solid #ccc;border-radius:1em;width:1em;height:1em;transition:all .4s;display:block;position:absolute;top:50%;left:0;transform:translateY(-50%)}.ol-ext-toggle-switch:hover span{background-color:#999}.ol-ext-toggle-switch:hover span:before{border-color:#999}.ol-ext-toggle-switch input:checked+span{background-color:currentColor}.ol-ext-toggle-switch input:checked+span:before{border-color:currentColor;transform:translate(.6em,-50%)}.ol-ext-check{display:inline-block;position:relative}.ol-ext-check input{opacity:0;cursor:pointer;width:0;height:0;margin:0;padding:0;display:inline-block;position:absolute}.ol-ext-check span{color:#003c8880;vertical-align:middle;background-color:#ccc;width:1em;height:1em;margin:-.1em .5em .1em;display:inline-block;position:relative}.ol-ext-check:hover span{background-color:#999}.ol-ext-checkbox input:checked~span{background-color:currentColor}.ol-ext-checkbox input:checked~span:before{content:"";width:.5em;height:.8em;position:absolute;top:50%;left:50%;transform:translateY(-.1em)translate(-50%,-50%)rotate(45deg);box-shadow:inset -.2em -.2em #fff}.ol-ext-radio span{border-radius:50%;width:1.1em;height:1.1em}.ol-ext-radio:hover input:checked~span{background-color:#ccc}.ol-ext-radio input:checked~span:before{content:"";background-color:currentColor;border-radius:50%;width:50%;height:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-ext-toggle-switch input:focus-visible+span,.ol-ext-check input:focus-visible+span{box-shadow:inset 0 0 0 1px #fff,0 0 0 1.8px #000c}.ol-collection-list{margin:0;padding:0;list-style:none}.ol-collection-list li{padding:0 2em 0 1em;position:relative}.ol-collection-list li:hover{background-color:#003c8833}.ol-collection-list li.ol-select{color:#fff;background-color:#003c8880}.ol-collection-list li .ol-order{-ms-touch-action:none;touch-action:none;cursor:n-resize;-webkit-user-select:none;user-select:none;width:2em;height:100%;position:absolute;top:50%;right:0;transform:translateY(-50%)}.ol-collection-list li .ol-order:before{content:"";background-color:currentColor;border-radius:2px;width:18px;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 5px,0 -5px}.ol-collection-list li>input.ol-input-focus{opacity:0;z-index:-1;width:0;height:0;position:absolute}.ol-collection-list li:has(>input.ol-input-focus:focus){outline:2px solid #369}.ol-ext-colorpicker.ol-popup{background-color:#0000;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 -1px,5px 4px;background-size:10px 10px;width:2em;height:1.5em}.ol-ext-colorpicker .ol-tabbar{background-color:#eee;border-bottom:1px solid #999;display:none}.ol-ext-colorpicker.ol-tab .ol-tabbar{display:block}.ol-ext-colorpicker .ol-tabbar>div{cursor:pointer;background-color:#fff;border:1px solid #999;border-radius:2px 2px 0 0;padding:0 .5em;display:inline-block;position:relative;top:1px}.ol-ext-colorpicker .ol-tabbar>div:first-child{border-bottom-color:#fff}.ol-ext-colorpicker.ol-picker-tab .ol-tabbar>div:first-child{border-bottom-color:#999}.ol-ext-colorpicker.ol-picker-tab .ol-tabbar>div:nth-child(2){border-bottom-color:#fff}.ol-ext-colorpicker.ol-popup.ol-tab .ol-popup{width:180px}.ol-ext-colorpicker.ol-tab .ol-palette{margin:0 10px}.ol-ext-colorpicker.ol-tab .ol-container{display:none}.ol-ext-colorpicker.ol-tab.ol-picker-tab .ol-container{display:block}.ol-ext-colorpicker.ol-tab.ol-picker-tab .ol-palette{display:none}.ol-ext-colorpicker.ol-popup .ol-popup{width:340px}.ol-ext-colorpicker.ol-popup .ol-vignet{content:"";pointer-events:none;background-color:currentColor;border:0;width:100%;height:100%;position:absolute;top:0;left:0}.ol-ext-colorpicker .ol-container{vertical-align:top;display:inline-block;position:relative}.ol-ext-colorpicker .ol-cursor{pointer-events:none}.ol-ext-colorpicker .ol-picker{cursor:crosshair;background-color:currentColor;background-image:-webkit-gradient(linear, left top, left bottom, from(0), color-stop(#000), to(transparent)), -webkit-gradient(linear, left top, right top, from(#fff), to(transparent));background-image:linear-gradient(#0000,#000),linear-gradient(90deg,#fff,#0000);border:5px solid #fff;width:150px;height:150px;position:relative}.ol-ext-colorpicker .ol-picker .ol-cursor{border:1px solid #000000b3;border-radius:50%;width:10px;height:10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #ffffffb3}.ol-ext-colorpicker .ol-slider{cursor:crosshair;background-color:#fff;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 -1px,5px 4px;background-size:10px 10px;border:0 solid #fff;border-width:0 5px;width:150px;height:10px;margin:5px 0 10px;position:relative}.ol-ext-colorpicker .ol-slider>div{pointer-events:none;background-image:linear-gradient(45deg,#0000,#fff);width:100%;height:100%}.ol-ext-colorpicker .ol-slider .ol-cursor{background:0 0;border:1px solid #000;width:4px;height:12px;position:absolute;top:50%;left:0;transform:translate(-50%,-50%)}.ol-ext-colorpicker .ol-tint{cursor:crosshair;box-sizing:border-box;background-image:-webkit-gradient(linear, left top, left bottom, from(0), color-stop(red), color-stop(#f0f), color-stop(#00f), color-stop(#0ff), color-stop(#0f0), color-stop(#ff0), to(red));background-image:linear-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red);border:5px solid #fff;border-width:5px 0;width:10px;height:150px;position:absolute;top:0;right:5px}.ol-ext-colorpicker .ol-tint .ol-cursor{border:1px solid #000;width:12px;height:4px;position:absolute;top:0;left:50%;transform:translate(-50%,-50%)}.ol-ext-colorpicker .ol-clear{border:2px solid #999;width:10px;height:10px;position:absolute;top:163px;right:4px}.ol-ext-colorpicker .ol-clear:before,.ol-ext-colorpicker .ol-clear:after{content:"";background-color:#999;width:15px;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-ext-colorpicker .ol-clear:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-ext-colorpicker.ol-nopacity .ol-slider,.ol-ext-colorpicker.ol-nopacity .ol-clear,.ol-ext-colorpicker.ol-nopacity .ol-alpha{display:none}.ol-ext-colorpicker .ol-rgb{width:170px;padding:5px;display:none;position:relative}.ol-ext-colorpicker .ol-rgb input{box-sizing:border-box;border:1px solid #999;border-radius:2px;width:25%;padding:0 0 0 2px;font-size:13px}.ol-ext-colorpicker .ol-rgb input:first-child{background-color:#ff00001a}.ol-ext-colorpicker .ol-rgb input:nth-child(2){background-color:#00ff001a}.ol-ext-colorpicker .ol-rgb input:nth-child(3){background-color:#0000ff1f}.ol-ext-colorpicker button,.ol-ext-colorpicker .ol-txt-color{text-align:center;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:170px;margin:0 5px 5px;padding:0;font-size:13px;display:block}.ol-ext-colorpicker .ol-txtcolor{width:170px;margin:0 5px}.ol-ext-colorpicker .ol-txtcolor input.ol-txt-color{width:100%;margin:0}.ol-ext-colorpicker.eyedropper .ol-txtcolor input.ol-txt-color{width:calc(100% - 2em);height:2em;margin:0;display:inline-block}.ol-ext-colorpicker button{background-color:#eee}.ol-ext-colorpicker button:hover{background-color:#e9e9e9}.ol-ext-colorpicker button.ol-eyedropper{vertical-align:middle;width:2em;height:2em;margin:0;display:inline-block;position:relative}.ol-ext-colorpicker button.ol-eyedropper:before{content:"";background-color:#999;width:100%;height:100%;position:absolute;top:0;left:0;-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20width='24'%20height='24'%3e%3cpath%20d='m18.203%203.676%202.121%202.121a1%201%200%200%201%200%201.414l-2.828%202.829%201.767%201.768-1.414%201.414-1.414-1.414L7.243%2021H3v-4.243l9.192-9.192-1.414-1.414%201.414-1.414%201.768%201.767%202.829-2.828a1%201%200%200%201%201.414%200Zm-4.596%205.303-8.564%208.564%201.414%201.414%208.564-8.564-1.414-1.414Z'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20width='24'%20height='24'%3e%3cpath%20d='m18.203%203.676%202.121%202.121a1%201%200%200%201%200%201.414l-2.828%202.829%201.767%201.768-1.414%201.414-1.414-1.414L7.243%2021H3v-4.243l9.192-9.192-1.414-1.414%201.414-1.414%201.768%201.767%202.829-2.828a1%201%200%200%201%201.414%200Zm-4.596%205.303-8.564%208.564%201.414%201.414%208.564-8.564-1.414-1.414Z'/%3e%3c/svg%3e");-webkit-mask-size:100% 100%;mask-size:100% 100%}.ol-ext-colorpicker .ol-txt-color.ol-error{background-color:#f003}.ol-ext-colorpicker .ol-palette{width:152px;padding:2px;display:inline-block}.ol-ext-colorpicker .ol-palette>div{cursor:pointer;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 0,5px 5px;background-size:10px 10px;border-radius:1px;width:15px;height:15px;margin:2px;display:inline-block;position:relative;box-shadow:0 0 2px #666}.ol-ext-colorpicker .ol-palette>div:before{content:"";background-color:currentColor;width:100%;height:100%;position:absolute}.ol-ext-colorpicker .ol-palette>div.ol-select:after{content:"";width:6px;height:12px;position:absolute;top:30%;left:50%;transform:translate(-50%,-50%)rotate(45deg);box-shadow:1px 1px #fff,2px 2px #000}.ol-ext-colorpicker .ol-palette>div:hover{box-shadow:0 0 2px 1px #d90}.ol-ext-colorpicker .ol-palette hr{margin:0}.ol-input-hidden{opacity:0;width:0;height:0;margin:0;padding:0;display:block;position:absolute}.ol-input-popup{display:inline-block;position:relative}.ol-input-popup .ol-popup{z-index:1;white-space:nowrap;background-color:#fff;margin:0;padding:0;list-style:none;display:none;position:absolute;left:-5px;box-shadow:1px 1px 3px 1px #999}.ol-input-popup.ol-hover:hover .ol-popup,.ol-input-popup.ol-focus .ol-popup{display:block}.ol-input-popup.ol-right .ol-popup{left:auto;right:-5px}.ol-input-popup.ol-middle .ol-popup{top:50%;transform:translateY(-50%)}.ol-input-popup .ol-popup li{padding:10px 5px;position:relative}.ol-input-popup li:hover,.ol-input-popup li.ol-selected{background-color:#ccc}.ol-input-popup.ol-fixed:hover .ol-popup,.ol-input-popup.ol-fixed .ol-popup{-webkit-box-shadow:unset;box-shadow:unset;vertical-align:middle;background-color:#0000;display:inline-block;position:relative;left:0}.ol-input-popup.ol-fixed.ol-left .ol-popup{float:left}.ol-input-popup>div{vertical-align:middle;border:1px solid #999;border-radius:2px;padding:3px 20px 3px 10px;display:inline-block;position:relative}.ol-input-popup>div:before{content:"";border:5px solid #0000;border-top-color:#999;position:absolute;top:50%;right:5px}.ol-ext-popup-input{vertical-align:top;display:inline-block}.ol-ext-popup-input.ol-popup{box-sizing:content-box;-webkit-user-select:none;user-select:none;vertical-align:middle;border:3px solid #fff;border-right-width:1em;border-radius:2px;width:2em;height:1.5em;display:inline-block;position:relative;box-shadow:0 0 2px 1px #666}.ol-ext-popup-input.ol-popup:after{content:"";pointer-events:none;border:.3em solid #0000;border-top:.5em solid #999;border-bottom:0 solid #999;position:absolute;top:50%;right:-.8em;transform:translateY(-50%)}.ol-ext-popup-input *{box-sizing:content-box}.ol-ext-popup-input.ol-popup .ol-popup{z-index:1;background-color:#fff;min-width:3em;min-height:3em;display:none;position:absolute;top:100%;left:0;box-shadow:1px 1px 3px 1px #999}.ol-ext-popup-input.ol-popup .ol-popup.ol-visible{display:block}.ol-ext-popup-input.ol-popup-fixed .ol-popup{position:fixed;top:auto;left:auto}.ol-input-popup.ol-size li{vertical-align:middle;height:100%;padding:5px;display:table-cell}.ol-input-popup.ol-size li>*{vertical-align:middle;background-color:#369;border-radius:50%;width:1em;height:1em}.ol-input-popup.ol-size li>.ol-option-0{color:#aaa;box-sizing:border-box;background-color:#0000;border:2px solid;width:1em;height:1em;position:relative}.ol-input-popup.ol-size li>:before{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-input-popup.ol-size li>.ol-option-0:before{content:"";background-color:#aaa;width:1em;height:2px;transform:translate(-50%,-50%)rotate(-45deg)}.ol-input-slider{display:inline-block;position:relative}.ol-input-slider .ol-popup{z-index:1;background-color:#fff;display:none;position:absolute;left:-5px;box-shadow:1px 1px 3px 1px #999}.ol-input-slider.ol-right .ol-popup{left:auto;right:-5px}.ol-input-slider.ol-hover:hover .ol-popup,.ol-input-slider.ol-focus .ol-popup{white-space:nowrap;display:block}.ol-input-slider.ol-hover:hover .ol-popup>*,.ol-input-slider.ol-focus .ol-popup>*{vertical-align:middle;display:inline-block}.ol-input-slider.ol-hover:hover .ol-popup>.ol-before,.ol-input-slider.ol-focus .ol-popup>.ol-before{margin-left:10px}.ol-input-slider.ol-hover:hover .ol-popup>.ol-after,.ol-input-slider.ol-focus .ol-popup>.ol-after{margin-right:10px}.ol-input-slider .ol-slider{vertical-align:middle;box-sizing:content-box;cursor:pointer;border:10px solid #0000;border-width:10px 15px;width:100px;height:3px;display:inline-block;position:relative;box-shadow:inset 0 0 0 1px #999}.ol-input-slider .ol-slider>.ol-cursor{pointer-events:none;background-color:#999;width:5px;height:10px;position:absolute;top:50%;transform:translate(-50%,-50%)}.ol-input-range .ol-slider{cursor:default;width:150px}.ol-input-range .ol-slider>.ol-cursor{pointer-events:all;cursor:pointer;background-color:#003c88;border-radius:50%;width:10px}.ol-input-range.ol-moving .ol-slider>.ol-cursor{pointer-events:none}.ol-input-range .ol-slider>.ol-back{pointer-events:none;background-color:#003c88;height:100%;position:absolute;top:50%;left:30%;right:20%;transform:translateY(-50%)}.ol-input-slider.ol-fixed:hover .ol-popup,.ol-input-slider.ol-fixed .ol-popup{-webkit-box-shadow:unset;box-shadow:unset;vertical-align:middle;background-color:#0000;display:inline-block;position:relative;left:0}.ol-input-slider.ol-fixed.ol-left .ol-popup{float:left}.ol-input-slider.ol-size .ol-slider{height:auto;-webkit-box-shadow:none;box-shadow:none}.ol-input-slider.ol-size .ol-slider .ol-back{color:#aaa;pointer-events:none;border-top:0 solid;border-bottom:20px solid;border-left:100px solid #0000;border-right:0 solid #0000;width:0}.ol-input-slider.ol-size .ol-slider>.ol-cursor{border:5px solid red;border-left:3px solid #0000;border-right:3px solid #0000;-o-border-image:initial;border-image:initial;background-color:#0000;width:2px;height:calc(100% + 4px);box-shadow:inset 3px 0 red}.ol-input-popup.ol-width li{padding:5px}.ol-input-popup.ol-width li>*{background-color:#369;width:100px;height:1em}.ol-input-popup.ol-width li>.ol-option-0{background-color:#0000;background-image:linear-gradient(90deg,#aaa 2px,#0000 2px);background-size:4px;height:1px;position:relative}html,body{height:100%;margin:0;padding:0}body{font-family:Calibri,sans-serif}.viewer-app{--viewer-control-background:#111;--viewer-control-surface-background:#222;--viewer-control-hover-background:#333;--viewer-control-pressed-background:#555;--viewer-control-selected-background:#163a59;--viewer-control-selected-hover-background:#1f5278;--viewer-control-selected-pressed-background:#555;--viewer-control-foreground:#fff;--viewer-control-hover-foreground:#fff;--viewer-control-pressed-foreground:#fff;--viewer-control-selected-foreground:#fff;--viewer-control-muted-foreground:#ffffffb3;--viewer-control-subtle-foreground:#ffffff8c;--viewer-control-border:#555c;--viewer-control-focus-border:#787878f2;--viewer-control-foreground-shadow:#000000bf;width:100%;height:100%;position:relative;overflow:hidden}.viewer-app:fullscreen{background:#fff;width:100%;height:100%}.viewer-app:fullscreen{background:#fff;width:100%;height:100%}.map{width:100%;height:100%}.ol-zoom,.ol-rotate,.ol-full-screen,.ol-graticule,.ol-screen-space-graticule,.reset-view-control,.viewer-panel-control,.layer-editor-control,.settings-control{background:var(--viewer-control-background);border-radius:4px;padding:0;overflow:hidden;box-shadow:0 2px 7px #0000004d}.ol-zoom:hover,.ol-rotate:hover,.ol-full-screen:hover,.ol-graticule:hover,.ol-screen-space-graticule:hover,.reset-view-control:hover,.viewer-panel-control:hover,.layer-editor-control:hover,.settings-control:hover{background:var(--viewer-control-background)}.ol-zoom button,.ol-rotate button,.ol-full-screen button,.ol-graticule button,.ol-screen-space-graticule button,.reset-view-control button,.viewer-panel-control button,.layer-editor-control button,.settings-control button{background:var(--viewer-control-background);width:32px;height:32px;color:var(--viewer-control-foreground);cursor:pointer;border:0;margin:0}.ol-zoom button:hover:not(:disabled),.ol-rotate button:hover:not(:disabled),.ol-full-screen button:hover:not(:disabled),.ol-graticule button:hover:not(:disabled),.ol-screen-space-graticule button:hover:not(:disabled),.reset-view-control button:hover:not(:disabled),.viewer-panel-control button:hover:not(:disabled),.layer-editor-control button:hover:not(:disabled),.settings-control button:hover:not(:disabled){background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground);border-radius:4px;outline:none}.ol-zoom button:active:not(:disabled),.ol-rotate button:active:not(:disabled),.ol-full-screen button:active:not(:disabled),.ol-graticule button:active:not(:disabled),.ol-screen-space-graticule button:active:not(:disabled),.reset-view-control button:active:not(:disabled),.viewer-panel-control button:active:not(:disabled),.layer-editor-control button:active:not(:disabled),.settings-control button:active:not(:disabled){background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground);border-radius:4px;outline:none}.ol-zoom{flex-direction:row;display:flex}.ol-zoom.viewer-control-disabled{opacity:.4}.ol-zoom.viewer-control-disabled button:disabled,.ol-zoom.viewer-control-disabled button:disabled:hover,.ol-zoom.viewer-control-disabled button:disabled:active,.ol-zoom.viewer-control-disabled button:disabled:focus{opacity:1;background:0 0}.ol-zoom button{background:0 0;border-radius:0}.ol-zoom .ol-zoom-out{order:1}.ol-zoom .ol-zoom-out,.ol-zoom .ol-zoom-out:hover,.ol-zoom .ol-zoom-out:active,.ol-zoom .ol-zoom-out:focus{border-radius:4px 0 0 4px}.ol-zoom-level{box-sizing:border-box;border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);width:42px;height:24px;color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);text-align:center;appearance:textfield;border-radius:3px;order:2;margin:4px 3px;padding:0 3px;font-family:inherit;font-size:11px;font-weight:600}.ol-zoom-level::-webkit-inner-spin-button{appearance:none;margin:0}.ol-zoom-level::-webkit-outer-spin-button{appearance:none;margin:0}.ol-zoom-level:hover:not(:disabled){border-color:var(--viewer-control-focus-border)}.ol-zoom-level:focus{border-color:var(--viewer-control-focus-border);background:var(--viewer-control-hover-background);outline:none}.ol-zoom-level:disabled{opacity:1;cursor:default;background:0 0}.ol-zoom .ol-zoom-in{order:3}.ol-zoom .ol-zoom-in,.ol-zoom .ol-zoom-in:hover,.ol-zoom .ol-zoom-in:active,.ol-zoom .ol-zoom-in:focus{border-radius:0 4px 4px 0}.settings-control,.settings-control:hover{z-index:1002;background:0 0;top:8px;left:auto;right:8px}.settings-control button,.settings-control button:hover,.settings-control button:active,.settings-control button:focus,.settings-control button.active,.settings-control button.active:hover,.settings-control button.active:active,.settings-control button.active:focus{border-radius:4px}.viewer-tools-group{z-index:1000;border-radius:4px;flex-direction:column;width:32px;display:flex;position:absolute;top:80px;left:8px;overflow:hidden;box-shadow:0 2px 7px #0000004d}.viewer-tools-group .ol-rotate,.viewer-tools-group .ol-graticule,.viewer-tools-group .ol-screen-space-graticule{box-shadow:none;background:0 0;border-radius:0;margin:0;padding:0;position:static;inset:auto}.viewer-tools-group .ol-rotate:hover,.viewer-tools-group .ol-graticule:hover,.viewer-tools-group .ol-screen-space-graticule:hover{background:0 0}.viewer-tools-group button{border-radius:0!important}.reset-view-control{background:0 0;border-radius:4px}.reset-view-control:hover{background:0 0}.ol-full-screen{background:0 0;border-radius:4px}.ol-full-screen:hover{background:0 0}.ol-full-screen button,.ol-full-screen button:hover,.ol-full-screen button:active,.ol-full-screen button:focus,.reset-view-control button,.reset-view-control button:hover,.reset-view-control button:active,.reset-view-control button:focus{border-radius:4px}.ol-full-screen button,.reset-view-control button{justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;display:flex}.bottom-controls-group{z-index:1000;align-items:center;gap:8px;display:flex;position:absolute;bottom:8px;left:50%;transform:translate(-50%)}.bottom-controls-group .reset-view-control,.bottom-controls-group .ol-zoom,.bottom-controls-group .ol-full-screen{margin:0;position:static;inset:auto;transform:none}.ol-scale-line{background:var(--viewer-control-background);border-radius:4px;padding:5px 8px;font-family:Calibri,sans-serif;bottom:8px;left:8px;box-shadow:0 2px 7px #00000040}.ol-scale-line-inner{border:1px solid var(--viewer-control-foreground);color:var(--viewer-control-foreground);border-bottom:0;margin:0;font-size:14px;line-height:1.2}.ol-mouse-position{z-index:100;background:var(--viewer-control-background);color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);border-radius:4px;padding:6px 9px;font-family:Calibri,sans-serif;font-size:12px;position:absolute;inset:auto 8px 8px auto;box-shadow:0 2px 7px #0000004d}.ol-layerswitcher,.ol-control.ol-layerswitcher{display:none}.layer-editor-header,.viewer-panel-header{border-bottom:1px solid var(--viewer-control-border);padding:12px 14px;font-size:13px;font-weight:600}.left-panel-controls{z-index:1000;border-radius:4px;flex-direction:column;width:32px;display:flex;position:absolute;top:8px;left:8px;overflow:hidden;box-shadow:0 2px 7px #0000004d}.left-panel-controls .viewer-panel-control,.left-panel-controls .layer-editor-control{box-shadow:none;background:0 0;border-radius:0;margin:0;position:static;inset:auto}.left-panel-controls .viewer-panel-control:hover,.left-panel-controls .layer-editor-control:hover{background:0 0}.left-panel-controls .viewer-panel-control button,.left-panel-controls .viewer-panel-control button:hover,.left-panel-controls .viewer-panel-control button:active,.left-panel-controls .viewer-panel-control button:focus,.left-panel-controls .viewer-panel-control button.active,.left-panel-controls .viewer-panel-control button.active:hover,.left-panel-controls .viewer-panel-control button.active:active,.left-panel-controls .viewer-panel-control button.active:focus,.left-panel-controls .layer-editor-control button,.left-panel-controls .layer-editor-control button:hover,.left-panel-controls .layer-editor-control button:active,.left-panel-controls .layer-editor-control button:focus,.left-panel-controls .layer-editor-control button.active,.left-panel-controls .layer-editor-control button.active:hover,.left-panel-controls .layer-editor-control button.active:active,.left-panel-controls .layer-editor-control button.active:focus{border-radius:0}.layer-editor{z-index:1000;box-sizing:border-box;background:var(--viewer-control-background);width:240px;color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);border-radius:10px;position:absolute;top:8px;left:48px;overflow:hidden;box-shadow:0 3px 10px #00000059}.layer-editor.hidden{display:none}.layer-editor-list{padding:12px 14px}.layer-editor-empty{color:var(--viewer-control-muted-foreground);font-size:12px}.layer-editor-item{margin-bottom:14px}.layer-editor-item:last-child{margin-bottom:0}.layer-editor-item-header{align-items:center;gap:8px;margin-bottom:8px;display:flex}.layer-editor-visibility{accent-color:var(--viewer-control-selected-background);cursor:pointer;flex-shrink:0;margin:0}.layer-editor-name{min-width:0;color:var(--viewer-control-foreground);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;overflow:hidden}.layer-editor-order{flex-shrink:0;gap:3px;display:flex}.layer-editor-order button{background:var(--viewer-control-surface-background);width:22px;height:22px;color:var(--viewer-control-foreground);cursor:pointer;border:0;border-radius:4px;padding:0;font-size:9px}.layer-editor-order button:hover:not(:disabled){background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground);outline:none}.layer-editor-order button:active:not(:disabled){background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground);outline:none}.layer-editor-order button:focus{color:var(--viewer-control-foreground);outline:none}.layer-editor-order button:disabled{color:var(--viewer-control-subtle-foreground);cursor:default;pointer-events:none;outline:none}.layer-editor-opacity{align-items:center;gap:9px;display:flex}.layer-editor-slider{min-width:0;accent-color:var(--viewer-control-selected-background);cursor:pointer;flex:1;margin:0}.layer-editor-value{width:32px;color:var(--viewer-control-muted-foreground);text-align:right;flex-shrink:0;font-size:11px}.settings-panel{z-index:1100;box-sizing:border-box;background:var(--viewer-control-background);width:720px;max-width:calc(100vw - 80px);height:480px;max-height:calc(100vh - 80px);color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);border-radius:10px;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%);box-shadow:0 4px 18px #00000073}.settings-panel.hidden{display:none}.settings-panel-header{border-bottom:1px solid var(--viewer-control-border);justify-content:space-between;align-items:center;padding:8px 10px 8px 18px;font-size:16px;font-weight:600;display:flex}.settings-close{width:28px;height:28px;color:var(--viewer-control-foreground);cursor:pointer;background:0 0;border:0;border-radius:4px;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:14px;display:flex}.settings-close:hover{background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground)}.settings-close:active{background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground)}.settings-close:focus{outline:none}.settings-tabs{border-bottom:1px solid var(--viewer-control-border);padding:0 18px;display:flex}.settings-tab{color:var(--viewer-control-muted-foreground);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;padding:11px 16px;font-family:inherit;font-size:12px;font-weight:600}.settings-tab:hover{color:var(--viewer-control-hover-foreground);background:var(--viewer-control-hover-background)}.settings-tab.active{border-bottom-color:var(--viewer-control-selected-background);color:var(--viewer-control-selected-foreground);background:var(--viewer-control-selected-background)}.settings-tab:focus{outline:none}.settings-panel-body{height:calc(100% - 83px);overflow-y:auto}.settings-tab-panel{padding:0 20px 20px}.settings-tab-panel.hidden{display:none}.settings-option{border-bottom:1px solid var(--viewer-control-border);justify-content:space-between;align-items:center;gap:24px;padding:16px 0;display:flex}.settings-option:last-child{border-bottom:0}.settings-option-text{min-width:0}.settings-option-label{margin-bottom:3px;font-size:12px;font-weight:600}.settings-option-description{color:var(--viewer-control-muted-foreground);font-size:11px;line-height:1.35}.settings-switch{flex-shrink:0;width:38px;height:20px;position:relative}.settings-switch input{opacity:0;width:0;height:0;position:absolute}.settings-switch-slider{background:var(--viewer-control-surface-background);cursor:pointer;border-radius:10px;transition:background .15s;position:absolute;inset:0}.settings-switch-slider:before{background:var(--viewer-control-foreground);content:"";border-radius:50%;width:14px;height:14px;transition:transform .15s;position:absolute;top:3px;left:3px}.settings-switch input:checked+.settings-switch-slider{background:var(--viewer-control-selected-background)}.settings-switch input:checked+.settings-switch-slider:before{transform:translate(18px)}.settings-switch input:focus-visible+.settings-switch-slider{outline:2px solid var(--viewer-control-focus-border);outline-offset:2px}.settings-colour-input{border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);cursor:pointer;border-radius:4px;flex-shrink:0;width:38px;height:28px;padding:2px}.settings-colour-input::-webkit-color-swatch-wrapper{padding:0}.settings-colour-input::-webkit-color-swatch{border:0;border-radius:2px}.settings-colour-input::-moz-color-swatch{border:0;border-radius:2px}.settings-select{box-sizing:border-box;border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);width:150px;height:30px;color:var(--viewer-control-foreground);cursor:pointer;border-radius:4px;flex-shrink:0;padding:4px 8px;font-family:inherit;font-size:11px}.settings-select:hover{border-color:var(--viewer-control-focus-border)}.settings-select:focus{border-color:var(--viewer-control-focus-border);outline:none}.settings-reset-button{border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);height:30px;color:var(--viewer-control-foreground);cursor:pointer;border-radius:4px;flex-shrink:0;padding:4px 10px;font-family:inherit;font-size:11px}.settings-reset-button:hover{background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground)}.settings-reset-button:active{background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground)}.settings-reset-button:focus{border-color:var(--viewer-control-focus-border);outline:none}.settings-range-control{flex-shrink:0;align-items:center;gap:10px;width:190px;display:flex}.settings-range{min-width:0;accent-color:var(--viewer-control-selected-background);cursor:pointer;flex:1;margin:0}.settings-range-value{width:34px;color:var(--viewer-control-muted-foreground);text-align:right;flex-shrink:0;font-size:11px}.viewer-panel{z-index:1000;box-sizing:border-box;background:var(--viewer-control-background);width:240px;max-height:170px;color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);border-radius:10px;position:absolute;top:8px;left:48px;overflow:visible;box-shadow:0 3px 10px #00000059}.viewer-panel.hidden{display:none}.viewer-panel-section{border-bottom:1px solid var(--viewer-control-border);padding:9px 12px}.viewer-panel-section:last-child{border-bottom:0}.viewer-file-selectors{gap:6px;min-width:0;margin-bottom:6px;display:grid}.viewer-file-select{min-width:0;position:relative}.viewer-file-select-button{box-sizing:border-box;border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);width:100%;min-width:0;max-width:100%;height:30px;color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);text-align:left;cursor:pointer;border-radius:4px;align-items:center;padding:5px 24px 5px 7px;font-family:inherit;font-size:11px;display:flex;position:relative}.viewer-file-select-button:after{border-right:1px solid var(--viewer-control-muted-foreground);border-bottom:1px solid var(--viewer-control-muted-foreground);content:"";width:5px;height:5px;position:absolute;top:10px;right:9px;transform:rotate(45deg)}.viewer-file-select.open .viewer-file-select-button:after{top:13px;transform:rotate(225deg)}.viewer-file-select-button:hover:not(:disabled){background:var(--viewer-control-hover-background)}.viewer-file-select-button:focus{border-color:var(--viewer-control-focus-border);outline:none}.viewer-file-select-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.viewer-file-select.disabled{opacity:.4}.viewer-file-select-button:disabled{cursor:default}.viewer-file-select-menu{z-index:20;box-sizing:border-box;border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);border-radius:4px;width:320px;max-width:calc(100vw - 70px);padding:5px;position:absolute;top:calc(100% + 2px);left:0;box-shadow:0 3px 8px #00000059}.viewer-file-select-search{box-sizing:border-box;border:1px solid var(--viewer-control-border);background:var(--viewer-control-background);width:100%;min-width:0;height:28px;color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);border-radius:3px;padding:5px 7px;font-family:inherit;font-size:11px}.viewer-file-select-search::placeholder{color:var(--viewer-control-subtle-foreground);opacity:1}.viewer-file-select-search:focus{border-color:var(--viewer-control-focus-border);outline:none}.viewer-file-select-options{max-height:220px;margin-top:4px;overflow-y:auto}.viewer-file-select-option{width:100%;min-width:0;color:var(--viewer-control-foreground);text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:3px;padding:6px 7px;font-family:inherit;font-size:11px;display:block;overflow:hidden}.viewer-file-select-option:hover,.viewer-file-select-option.active{background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground)}.viewer-file-select-option.selected{background:var(--viewer-control-selected-background);color:var(--viewer-control-selected-foreground)}.viewer-file-select-option.selected:hover,.viewer-file-select-option.selected.active{background:var(--viewer-control-selected-hover-background);color:var(--viewer-control-selected-foreground)}.viewer-file-select-option:focus{outline:none}.viewer-file-select-empty{color:var(--viewer-control-subtle-foreground);padding:6px 7px;font-size:11px}.viewer-file-actions{grid-template-columns:1fr 1fr;gap:6px;display:grid}.viewer-file-actions button{background:var(--viewer-control-surface-background);min-width:0;height:30px;color:var(--viewer-control-foreground);cursor:pointer;border:0;border-radius:4px;padding:5px 7px;font-size:11px}.viewer-file-actions button:hover:not(:disabled){background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground)}.viewer-file-actions button:active:not(:disabled){background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground)}.viewer-file-actions button:disabled{opacity:.4;cursor:default}.map .ol-custom-overviewmap{--overview-map-width:300px;--overview-map-height:250px;width:var(--overview-map-width);height:calc(var(--overview-map-height) + 42px);background:0 0;border-radius:4px;padding:0;transition:width .18s,height .18s;inset:8px 8px auto auto;overflow:hidden}.map .ol-custom-overviewmap.ol-collapsed{width:72px;height:32px}.map .ol-custom-overviewmap .ol-overviewmap-map,.map .ol-custom-overviewmap.ol-collapsed .ol-overviewmap-map{width:var(--overview-map-width);height:var(--overview-map-height);box-sizing:border-box;border:2px solid var(--viewer-control-border);opacity:1;background:#fff;border-radius:4px;margin:0;transition:opacity .16s,transform .18s;display:block;position:absolute;top:40px;right:0;overflow:hidden;transform:translateY(0)}.map .ol-custom-overviewmap.ol-collapsed .ol-overviewmap-map{opacity:0;pointer-events:none;transform:translateY(-8px)}.map .ol-custom-overviewmap .ol-overviewmap-map .ol-viewport{background:#fff}.map .ol-custom-overviewmap .ol-overviewmap-box{box-sizing:border-box;border:3px dotted #163a59}.map .ol-custom-overviewmap button,.map .ol-custom-overviewmap:not(.ol-collapsed) button{z-index:2;background:var(--viewer-control-background);width:32px;height:32px;color:var(--viewer-control-foreground);cursor:pointer;border:0;border-radius:4px;margin:0;position:absolute;inset:0 40px auto auto}.map .ol-custom-overviewmap button:hover{background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground);outline:none}.map .ol-custom-overviewmap button:active{background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground);outline:none}.map .ol-custom-overviewmap button:focus{color:var(--viewer-control-foreground);outline:none}.overview-toggle-icon{justify-content:center;align-items:center;width:100%;height:100%;font-size:11px;transition:transform .18s;display:flex}.ol-control button:disabled,.ol-control button:disabled:hover,.ol-control button:disabled:active,.ol-control button:disabled:focus,.ol-control.ol-toggle button:disabled,.ol-control.ol-toggle button:disabled:hover,.ol-control.ol-toggle button:disabled:active,.ol-control.ol-toggle button:disabled:focus{background:var(--viewer-control-background);color:var(--viewer-control-foreground);opacity:.4;cursor:default;pointer-events:none;outline:none}.viewer-control-hidden{display:none!important}.ol-zoom button:focus:not(:active):not(:disabled){color:var(--viewer-control-foreground);box-shadow:none;background:0 0;outline:none}.ol-rotate button:focus:not(:active):not(:disabled),.reset-view-control button:focus:not(:active):not(:disabled),.map .ol-custom-overviewmap button:focus:not(:active),.ol-graticule:not(.active) button:focus:not(:active):not(:disabled),.ol-screen-space-graticule:not(.active) button:focus:not(:active):not(:disabled),.ol-full-screen button:not(.ol-full-screen-true):focus:not(:active),.viewer-panel-control button:not(.active):focus:not(:active),.layer-editor-control button:not(.active):focus:not(:active),.settings-control button:not(.active):focus:not(:active){background:var(--viewer-control-background);color:var(--viewer-control-foreground);box-shadow:none;outline:none}.ol-graticule.active button,.ol-screen-space-graticule.active button,.ol-full-screen button.ol-full-screen-true,.viewer-panel-control button.active,.layer-editor-control button.active,.settings-control button.active{background:var(--viewer-control-selected-background);color:var(--viewer-control-selected-foreground)}.ol-graticule.active button:hover,.ol-screen-space-graticule.active button:hover,.ol-full-screen button.ol-full-screen-true:hover,.viewer-panel-control button.active:hover,.layer-editor-control button.active:hover,.settings-control button.active:hover{background:var(--viewer-control-selected-hover-background);color:var(--viewer-control-selected-foreground)}.ol-graticule.active button:active,.ol-screen-space-graticule.active button:active,.ol-full-screen button.ol-full-screen-true:active,.viewer-panel-control button.active:active,.layer-editor-control button.active:active,.settings-control button.active:active{background:var(--viewer-control-selected-pressed-background);color:var(--viewer-control-selected-foreground)} /*$vite$:1*/ diff --git a/tiatoolbox/rust/utils/misc/Cargo.toml b/tiatoolbox/rust/utils/misc/Cargo.toml new file mode 100644 index 0000000000..25e5d1e1aa --- /dev/null +++ b/tiatoolbox/rust/utils/misc/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "misc" +version.workspace = true +edition.workspace = true + +[lib] +name = "misc" +crate-type = ["cdylib", "rlib"] + +[dependencies] +ndarray = "0.17.2" +numpy = "0.29.0" +ordered-float = "5.3.0" +pyo3 = { workspace = true, features = ["extension-module"] } +pythonize = "0.29.0" +serde_json = "1.0.151" diff --git a/tiatoolbox/rust/utils/misc/__init__.pyi b/tiatoolbox/rust/utils/misc/__init__.pyi new file mode 100644 index 0000000000..7f37b6f44e --- /dev/null +++ b/tiatoolbox/rust/utils/misc/__init__.pyi @@ -0,0 +1,10 @@ +# tiatoolbox/rust/utils/misc.pyi + +import numpy as np +from numpy.typing import NDArray + +def contrast_enhancer( + img: NDArray[np.uint8], + low_p: int, + high_p: int, +) -> NDArray[np.uint8]: ... diff --git a/tiatoolbox/rust/utils/misc/src/lib.rs b/tiatoolbox/rust/utils/misc/src/lib.rs new file mode 100644 index 0000000000..75b8078cdf --- /dev/null +++ b/tiatoolbox/rust/utils/misc/src/lib.rs @@ -0,0 +1,90 @@ +use ndarray::Axis; +use ndarray::{Array1, Array3}; +use numpy::PyReadonlyArrayDyn; +use numpy::PyUntypedArrayMethods; +use numpy::{IntoPyArray, PyArray3, PyReadonlyArray2, PyReadonlyArray3}; +use ordered_float::OrderedFloat; +use pyo3::FromPyObject; +use pyo3::prelude::*; +use pyo3::pyclass::CompareOp; +use pyo3::types::{PyDict, PyList}; +use pythonize::depythonize; +use serde_json::Value; +use std::collections::HashMap; + +fn rescale_intensity(x: f32, in_range_low: f32, in_range_high: f32, range: f32) -> u8 { + //asssumes out_min = 0 and out_max = 255 + if x <= in_range_low { + 0 + } else if x >= in_range_high { + 255 + } else { + (255.0 * ((x - in_range_low) / range)) as u8 + } +} + +fn rust_contrast_enhancer(img: Array3, low_p: u8, high_p: u8) -> Array3 { + /*Get tissue mask based on the luminosity of the input image. + + Args: + img: Array + Input image used to obtain tissue mask. + threshold (float): + Luminosity threshold used to determine tissue area. + + Returns: + tissue_mask + Binary tissue mask. + + */ + let img_out = img.to_owned(); + let len = img.len(); + let mut flat_img_out: Array1 = img_out.into_shape_with_order(len).unwrap(); + + if let Some(slice) = flat_img_out.as_slice_mut() { + slice.sort_unstable(); + } + + let lenf32: f32 = len as f32; + + let p_low_index: f32 = (lenf32 - 1.0) * low_p as f32 / 100.0; + let p_low_index_difference = p_low_index - p_low_index.floor(); + let mut p_low = (1.0 - p_low_index_difference) + * flat_img_out[p_low_index.floor() as usize] as f32 + + p_low_index_difference * flat_img_out[p_low_index.ceil() as usize] as f32; + + let p_high_index: f32 = (lenf32 - 1.0) * high_p as f32 / 100.0; + let p_high_index_difference = p_high_index - p_high_index.floor(); + let mut p_high = (1.0 - p_high_index_difference) + * flat_img_out[p_high_index.floor() as usize] as f32 + + p_high_index_difference * flat_img_out[p_high_index.ceil() as usize] as f32; + + if p_low >= p_high { + p_low = flat_img_out[0].into(); + p_high = flat_img_out[len - 1].into(); + } + + if p_high > p_low { + let range = p_high - p_low; + return img.mapv(|x| rescale_intensity(x.into(), p_low, p_high, range)); + } + + img +} + +#[pyfunction] +fn contrast_enhancer<'py>( + py: Python<'py>, + img: PyReadonlyArray3<'py, u8>, + low_p: u8, + high_p: u8, +) -> Bound<'py, PyArray3> { + let data = img.as_array().to_owned(); + rust_contrast_enhancer(data, low_p, high_p).into_pyarray(py) +} + +#[pymodule] +fn misc(m: &Bound<'_, PyModule>) -> PyResult<()> { + m.add_function(wrap_pyfunction!(contrast_enhancer, m)?)?; + Ok(()) +} diff --git a/tiatoolbox/utils/misc.py b/tiatoolbox/utils/misc.py index 6c8002ed59..5a065c1b10 100644 --- a/tiatoolbox/utils/misc.py +++ b/tiatoolbox/utils/misc.py @@ -31,6 +31,7 @@ from tqdm.auto import tqdm, trange from tqdm.dask import TqdmCallback +import tiatoolbox.rust.utils.misc as rmisc from tiatoolbox import logger from tiatoolbox.annotation.storage import Annotation, AnnotationStore, SQLiteStore from tiatoolbox.utils.exceptions import FileNotSupportedError @@ -430,6 +431,9 @@ def contrast_enhancer(img: np.ndarray, low_p: int = 2, high_p: int = 98) -> np.n if img.dtype != np.uint8: msg = "Image should be uint8." raise AssertionError(msg) + dimension_for_rust = 3 + if img.ndim == dimension_for_rust: + return rmisc.contrast_enhancer(img, low_p, high_p) img_out = img.copy() percentiles = np.array(np.percentile(img_out, (low_p, high_p))) p_low, p_high = percentiles[0], percentiles[1] @@ -1504,6 +1508,20 @@ def dict_to_store_semantic_segmentor( ) +def poly_geo_func(coords: list) -> list: + """Used solely for function semantic_segmentation_as_qupath_json.""" + geom = make_valid_poly( + feature2geometry( + { + "type": "Polygon", + "coordinates": coords, + } + ), + (0, 0), + ) + return mapping(geom) + + def _semantic_segmentations_as_qupath_json( layer_list: list, preds: da.Array, From 4412d4adc24db55a8e83c17b9c5532328a00b1bf Mon Sep 17 00:00:00 2001 From: hannah275 Date: Thu, 10 Sep 2026 15:26:15 +0100 Subject: [PATCH 02/14] Update viewer.js to remove stashed changes lines --- .../visualization/static/openlayers/viewer.js | 12166 +--------------- 1 file changed, 343 insertions(+), 11823 deletions(-) diff --git a/tiatoolbox/data/visualization/static/openlayers/viewer.js b/tiatoolbox/data/visualization/static/openlayers/viewer.js index 12c39c2a57..749056ca89 100644 --- a/tiatoolbox/data/visualization/static/openlayers/viewer.js +++ b/tiatoolbox/data/visualization/static/openlayers/viewer.js @@ -1793,160 +1793,15 @@ function z(e, t) { if (!e) throw Error(t); } //#endregion -<<<<<<< Updated upstream -======= -//#region node_modules/ol/structs/PriorityQueue.js -var Nr = Infinity, Pr = class { - constructor(e, t) { - this.priorityFunction_ = e, this.keyFunction_ = t, this.elements_ = [], this.priorities_ = [], this.queuedElements_ = {}; - } - clear() { - this.elements_.length = 0, this.priorities_.length = 0, k(this.queuedElements_); - } - dequeue() { - let e = this.elements_, t = this.priorities_, n = e[0]; - e.length == 1 ? (e.length = 0, t.length = 0) : (e[0] = e.pop(), t[0] = t.pop(), this.siftUp_(0)); - let r = this.keyFunction_(n); - return delete this.queuedElements_[r], n; - } - enqueue(e) { - R(!(this.keyFunction_(e) in this.queuedElements_), "Tried to enqueue an `element` that was already added to the queue"); - let t = this.priorityFunction_(e); - return t != Infinity && (this.elements_.push(e), this.priorities_.push(t), this.queuedElements_[this.keyFunction_(e)] = !0, this.siftDown_(0, this.elements_.length - 1), !0); - } - getCount() { - return this.elements_.length; - } - getLeftChildIndex_(e) { - return e * 2 + 1; - } - getRightChildIndex_(e) { - return e * 2 + 2; - } - getParentIndex_(e) { - return e - 1 >> 1; - } - heapify_() { - let e; - for (e = (this.elements_.length >> 1) - 1; e >= 0; e--) this.siftUp_(e); - } - isEmpty() { - return this.elements_.length === 0; - } - isKeyQueued(e) { - return e in this.queuedElements_; - } - isQueued(e) { - return this.isKeyQueued(this.keyFunction_(e)); - } - siftUp_(e) { - let t = this.elements_, n = this.priorities_, r = t.length, i = t[e], a = n[e], o = e; - for (; e < r >> 1;) { - let i = this.getLeftChildIndex_(e), a = this.getRightChildIndex_(e), o = a < r && n[a] < n[i] ? a : i; - t[e] = t[o], n[e] = n[o], e = o; - } - t[e] = i, n[e] = a, this.siftDown_(o, e); - } - siftDown_(e, t) { - let n = this.elements_, r = this.priorities_, i = n[t], a = r[t]; - for (; t > e;) { - let e = this.getParentIndex_(t); - if (r[e] > a) n[t] = n[e], r[t] = r[e], t = e; - else break; - } - n[t] = i, r[t] = a; - } - reprioritize() { - let e = this.priorityFunction_, t = this.elements_, n = this.priorities_, r = 0, i = t.length, a, o, s; - for (o = 0; o < i; ++o) a = t[o], s = e(a), s == Infinity ? delete this.queuedElements_[this.keyFunction_(a)] : (n[r] = s, t[r++] = a); - t.length = r, n.length = r, this.heapify_(); - } -}, Fr = class extends Pr { - constructor(e, t) { - super((t) => e.apply(null, t), (e) => e[0].getKey()), this.boundHandleTileChange_ = this.handleTileChange.bind(this), this.tileChangeCallback_ = t, this.tilesLoading_ = 0, this.tilesLoadingKeys_ = {}; - } - enqueue(e) { - let t = super.enqueue(e); - return t && e[0].addEventListener(M.CHANGE, this.boundHandleTileChange_), t; - } - getTilesLoading() { - return this.tilesLoading_; - } - handleTileChange(e) { - let t = e.target, n = t.getState(); - if (n === L.LOADED || n === L.ERROR || n === L.EMPTY) { - n !== L.ERROR && t.removeEventListener(M.CHANGE, this.boundHandleTileChange_); - let e = t.getKey(); - e in this.tilesLoadingKeys_ && (delete this.tilesLoadingKeys_[e], --this.tilesLoading_), this.tileChangeCallback_(); - } - } - loadMoreTiles(e, t) { - let n = 0; - for (; this.tilesLoading_ < e && n < t && this.getCount() > 0;) { - let e = this.dequeue()[0], t = e.getKey(); - e.getState() === L.IDLE && !(t in this.tilesLoadingKeys_) && (this.tilesLoadingKeys_[t] = !0, ++this.tilesLoading_, ++n, e.load()); - } - } -}; -function Ir(e, t, n, r, i) { - if (!e || !(n in e.wantedTiles) || !e.wantedTiles[n][t.getKey()]) return Nr; - let a = e.viewState.center, o = r[0] - a[0], s = r[1] - a[1]; - return 65536 * Math.log(i) + Math.sqrt(o * o + s * s) / i; -} -//#endregion -//#region node_modules/ol/ViewHint.js -var Lr = { - ANIMATING: 0, - INTERACTING: 1 -}, Rr = { - CENTER: "center", - RESOLUTION: "resolution", - ROTATION: "rotation" -}; -//#endregion -//#region node_modules/ol/centerconstraint.js -function zr(e, t, n) { - return (function(r, i, a, o, s) { - if (!r) return; - if (!i && !t) return r; - let c = t ? 0 : a[0] * i, l = t ? 0 : a[1] * i, u = s ? s[0] : 0, d = s ? s[1] : 0, f = e[0] + c / 2 + u, p = e[2] - c / 2 + u, m = e[1] + l / 2 + d, h = e[3] - l / 2 + d; - f > p && (f = (p + f) / 2, p = f), m > h && (m = (h + m) / 2, h = m); - let g = St(r[0], f, p), _ = St(r[1], m, h); - if (o && n && i) { - let e = 30 * i; - g += -e * Math.log(1 + Math.max(0, f - r[0]) / e) + e * Math.log(1 + Math.max(0, r[0] - p) / e), _ += -e * Math.log(1 + Math.max(0, m - r[1]) / e) + e * Math.log(1 + Math.max(0, r[1] - h) / e); - } - return [g, _]; - }); -} -function Br(e) { - return e; -} -//#endregion -//#region node_modules/ol/easing.js -function Vr(e) { - return e ** 3; -} -function Hr(e) { - return 1 - Vr(1 - e); -} -function Ur(e) { - return 3 * e * e - 2 * e * e * e; -} -function Wr(e) { - return e; -} -//#endregion ->>>>>>> Stashed changes //#region node_modules/ol/transform.js -var Gr = [ +var Wr = [ 1, 0, 0, 1, 0, 0 -], Kr = [ +], Gr = [ , , , @@ -1954,55 +1809,46 @@ var Gr = [ , , ]; -function qr() { - return Gr.slice(0); +function Kr() { + return Wr.slice(0); } -function Jr(e) { - return Xr(e, 1, 0, 0, 1, 0, 0); +function qr(e) { + return Yr(e, 1, 0, 0, 1, 0, 0); } -function Yr(e, t) { +function Jr(e, t) { let n = e[0], r = e[1], i = e[2], a = e[3], o = e[4], s = e[5], c = t[0], l = t[1], u = t[2], d = t[3], f = t[4], p = t[5]; return e[0] = n * c + i * l, e[1] = r * c + a * l, e[2] = n * u + i * d, e[3] = r * u + a * d, e[4] = n * f + i * p + o, e[5] = r * f + a * p + s, e; } -function Xr(e, t, n, r, i, a, o) { +function Yr(e, t, n, r, i, a, o) { return e[0] = t, e[1] = n, e[2] = r, e[3] = i, e[4] = a, e[5] = o, e; } -function Zr(e, t) { +function Xr(e, t) { 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; } -function z(e, t) { +function B(e, t) { let n = t[0], r = t[1]; return t[0] = e[0] * n + e[2] * r + e[4], t[1] = e[1] * n + e[3] * r + e[5], t; } -function Qr(e, t, n) { - return Yr(e, Xr(Kr, t, 0, 0, n, 0, 0)); +function Zr(e, t, n) { + return Jr(e, Yr(Gr, t, 0, 0, n, 0, 0)); } -function $r(e, t, n) { - return Yr(e, Xr(Kr, 1, 0, 0, 1, t, n)); +function Qr(e, t, n) { + return Jr(e, Yr(Gr, 1, 0, 0, 1, t, n)); } -function ei(e, t, n, r, i, a, o, s) { +function $r(e, t, n, r, i, a, o, s) { let c = Math.sin(a), l = Math.cos(a); return e[0] = r * l, e[1] = i * c, e[2] = -r * c, e[3] = i * l, e[4] = o * r * l - s * r * c + t, e[5] = o * i * c + s * i * l + n, e; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function ei(e, t) { let n = ti(t); z(n !== 0, "Transformation matrix cannot be inverted"); -======= -======= ->>>>>>> Stashed changes -function ti(e, t) { - let n = ni(t); - R(n !== 0, "Transformation matrix cannot be inverted"); ->>>>>>> Stashed changes let r = t[0], i = t[1], a = t[2], o = t[3], s = t[4], c = t[5]; return e[0] = o / n, e[1] = -i / n, e[2] = -a / n, e[3] = r / n, e[4] = (a * c - o * s) / n, e[5] = -(r * c - i * s) / n, e; } -function ni(e) { +function ti(e) { return e[0] * e[3] - e[1] * e[2]; } -var ri = [ +var ni = [ 1e5, 1e5, 1e5, @@ -2010,15 +1856,15 @@ var ri = [ 2, 2 ]; -function ii(e) { +function ri(e) { return "matrix(" + e.join(", ") + ")"; } -function ai(e) { +function ii(e) { return e.substring(7, e.length - 1).split(",").map(parseFloat); } -function oi(e, t) { - let n = ai(e), r = ai(t); - for (let e = 0; e < 6; ++e) if (Math.round((n[e] - r[e]) * ri[e]) !== 0) return !1; +function ai(e, t) { + let n = ii(e), r = ii(t); + for (let e = 0; e < 6; ++e) if (Math.round((n[e] - r[e]) * ni[e]) !== 0) return !1; return !0; } //#endregion @@ -2905,15 +2751,7 @@ function oa(e) { } //#endregion //#region node_modules/ol/geom/flat/transform.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function sa(e, t, n, r, i, a, o) { -======= -function si(e, t, n, r, i, a, o) { ->>>>>>> Stashed changes -======= -function si(e, t, n, r, i, a, o) { ->>>>>>> Stashed changes a ||= [], o ||= 2; let s = 0; for (let c = t; c < n; c += r) { @@ -2923,15 +2761,7 @@ function si(e, t, n, r, i, a, o) { } return a && a.length != s && (a.length = s), a; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function ca(e, t, n, r, i, a, o) { -======= -function ci(e, t, n, r, i, a, o) { ->>>>>>> Stashed changes -======= -function ci(e, t, n, r, i, a, o) { ->>>>>>> Stashed changes o ||= []; let s = Math.cos(i), c = Math.sin(i), l = a[0], u = a[1], d = 0; for (let i = t; i < n; i += r) { @@ -2941,15 +2771,7 @@ function ci(e, t, n, r, i, a, o) { } return o && o.length != d && (o.length = d), o; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function la(e, t, n, r, i, a, o, s) { -======= -function li(e, t, n, r, i, a, o, s) { ->>>>>>> Stashed changes -======= -function li(e, t, n, r, i, a, o, s) { ->>>>>>> Stashed changes s ||= []; let c = o[0], l = o[1], u = 0; for (let o = t; o < n; o += r) { @@ -2959,15 +2781,7 @@ function li(e, t, n, r, i, a, o, s) { } return s && s.length != u && (s.length = u), s; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function ua(e, t, n, r, i, a, o) { -======= -function ui(e, t, n, r, i, a, o) { ->>>>>>> Stashed changes -======= -function ui(e, t, n, r, i, a, o) { ->>>>>>> Stashed changes o ||= []; let s = 0; for (let c = t; c < n; c += r) { @@ -2978,15 +2792,7 @@ function ui(e, t, n, r, i, a, o) { } //#endregion //#region node_modules/ol/geom/Geometry.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var da = Kr(), fa = [NaN, NaN], pa = class extends A { -======= -var di = qr(), fi = [NaN, NaN], pi = class extends we { ->>>>>>> Stashed changes -======= -var di = qr(), fi = [NaN, NaN], pi = class extends we { ->>>>>>> Stashed changes constructor() { super(), this.extent_ = at(), this.extentRevision_ = -1, this.simplifiedGeometryMaxMinSquaredTolerance = 0, this.simplifiedGeometryRevision = 0, this.simplifyTransformedInternal = b((e, t, n) => { if (!n) return this.getSimplifiedGeometry(t); @@ -3004,15 +2810,7 @@ var di = qr(), fi = [NaN, NaN], pi = class extends we { return E(); } containsXY(e, t) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return this.closestPointXY(e, t, fa, Number.MIN_VALUE) === 0; -======= - return this.closestPointXY(e, t, fi, Number.MIN_VALUE) === 0; ->>>>>>> Stashed changes -======= - return this.closestPointXY(e, t, fi, Number.MIN_VALUE) === 0; ->>>>>>> Stashed changes } getClosestPoint(e, t) { return t ||= [NaN, NaN], this.closestPointXY(e[0], e[1], t, Infinity), t; @@ -3055,33 +2853,15 @@ var di = qr(), fi = [NaN, NaN], pi = class extends we { E(); } transform(e, t) { -<<<<<<< Updated upstream let n = gr(e), r = n.getUnits() == "tile-pixels" ? function(e, r, i) { let a = n.getExtent(), o = n.getWorldExtent(), s = Ct(o) / Ct(a); $r(da, o[0], o[3], s, -s, 0, 0, 0); let c = sa(e, 0, e.length, i, da, r), l = Tr(n, t); -======= - let n = nr(e), r = n.getUnits() == "tile-pixels" ? function(e, r, i) { - let a = n.getExtent(), o = n.getWorldExtent(), s = ct(o) / ct(a); - ei(di, o[0], o[3], s, -s, 0, 0, 0); - let c = si(e, 0, e.length, i, di, r), l = dr(n, t); -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes return l ? l(c, c, i) : c; } : Tr(n, t); return this.applyTransform(r), this; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, ma = class extends pa { -======= -}, mi = class extends pi { ->>>>>>> Stashed changes -======= -}, mi = class extends pi { ->>>>>>> Stashed changes constructor() { super(), this.layout = "XY", this.stride = 2, this.flatCoordinates; } @@ -3115,30 +2895,14 @@ var di = qr(), fi = [NaN, NaN], pi = class extends we { return this.stride; } setFlatCoordinates(e, t) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.stride = ga(e), this.layout = e, this.flatCoordinates = t; -======= - this.stride = gi(e), this.layout = e, this.flatCoordinates = t; ->>>>>>> Stashed changes -======= - this.stride = gi(e), this.layout = e, this.flatCoordinates = t; ->>>>>>> Stashed changes } setCoordinates(e, t) { E(); } setLayout(e, t, n) { let r; -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (e) r = ga(e); -======= - if (e) r = gi(e); ->>>>>>> Stashed changes -======= - if (e) r = gi(e); ->>>>>>> Stashed changes else { for (let e = 0; e < n; ++e) { if (t.length === 0) { @@ -3147,15 +2911,7 @@ var di = qr(), fi = [NaN, NaN], pi = class extends we { } t = t[0]; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream r = t.length, e = ha(r); -======= - r = t.length, e = hi(r); ->>>>>>> Stashed changes -======= - r = t.length, e = hi(r); ->>>>>>> Stashed changes } this.layout = e, this.stride = r; } @@ -3166,15 +2922,7 @@ var di = qr(), fi = [NaN, NaN], pi = class extends we { let n = this.getFlatCoordinates(); if (n) { let r = this.getStride(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream ca(n, 0, n.length, r, e, t, n), this.changed(); -======= - ci(n, 0, n.length, r, e, t, n), this.changed(); ->>>>>>> Stashed changes -======= - ci(n, 0, n.length, r, e, t, n), this.changed(); ->>>>>>> Stashed changes } } scale(e, t, n) { @@ -3182,23 +2930,13 @@ var di = qr(), fi = [NaN, NaN], pi = class extends we { let r = this.getFlatCoordinates(); if (r) { let i = this.getStride(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream la(r, 0, r.length, i, e, t, n, r), this.changed(); -======= - li(r, 0, r.length, i, e, t, n, r), this.changed(); ->>>>>>> Stashed changes -======= - li(r, 0, r.length, i, e, t, n, r), this.changed(); ->>>>>>> Stashed changes } } translate(e, t) { let n = this.getFlatCoordinates(); if (n) { let r = this.getStride(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream ua(n, 0, n.length, r, e, t, n), this.changed(); } } @@ -3220,52 +2958,6 @@ function _a(e, t, n) { //#endregion //#region node_modules/ol/geom/flat/area.js function va(e, t, n, r) { -======= - ui(n, 0, n.length, r, e, t, n), this.changed(); - } - } -}; -function hi(e) { - let t; - return e == 2 ? t = "XY" : e == 3 ? t = "XYZ" : e == 4 && (t = "XYZM"), t; -} -function gi(e) { - let t; - return e == "XY" ? t = 2 : e == "XYZ" || e == "XYM" ? t = 3 : e == "XYZM" && (t = 4), t; -} -function _i(e, t, n) { - let r = e.getFlatCoordinates(); - if (!r) return null; - let i = e.getStride(); - return si(r, 0, r.length, i, t, n); -} -//#endregion -//#region node_modules/ol/geom/flat/area.js -function vi(e, t, n, r) { ->>>>>>> Stashed changes -======= - ui(n, 0, n.length, r, e, t, n), this.changed(); - } - } -}; -function hi(e) { - let t; - return e == 2 ? t = "XY" : e == 3 ? t = "XYZ" : e == 4 && (t = "XYZM"), t; -} -function gi(e) { - let t; - return e == "XY" ? t = 2 : e == "XYZ" || e == "XYM" ? t = 3 : e == "XYZM" && (t = 4), t; -} -function _i(e, t, n) { - let r = e.getFlatCoordinates(); - if (!r) return null; - let i = e.getStride(); - return si(r, 0, r.length, i, t, n); -} -//#endregion -//#region node_modules/ol/geom/flat/area.js -function vi(e, t, n, r) { ->>>>>>> Stashed changes let i = 0, a = e[n - r], o = e[n - r + 1], s = 0, c = 0; for (; t < n; t += r) { let n = e[t] - a, r = e[t + 1] - o; @@ -3273,41 +2965,17 @@ function vi(e, t, n, r) { } return i / 2; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function ya(e, t, n, r) { let i = 0; for (let a = 0, o = n.length; a < o; ++a) { let o = n[a]; i += va(e, t, o, r), t = o; -======= -function yi(e, t, n, r) { - let i = 0; - for (let a = 0, o = n.length; a < o; ++a) { - let o = n[a]; - i += vi(e, t, o, r), t = o; ->>>>>>> Stashed changes -======= -function yi(e, t, n, r) { - let i = 0; - for (let a = 0, o = n.length; a < o; ++a) { - let o = n[a]; - i += vi(e, t, o, r), t = o; ->>>>>>> Stashed changes } return i; } //#endregion //#region node_modules/ol/geom/flat/closest.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function ba(e, t, n, r, i, a, o) { -======= -function bi(e, t, n, r, i, a, o) { ->>>>>>> Stashed changes -======= -function bi(e, t, n, r, i, a, o) { ->>>>>>> Stashed changes let s = e[t], c = e[t + 1], l = e[n] - s, u = e[n + 1] - c, d; if (l === 0 && u === 0) d = t; else { @@ -3322,15 +2990,7 @@ function bi(e, t, n, r, i, a, o) { for (let t = 0; t < r; ++t) o[t] = e[d + t]; o.length = r; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function xa(e, t, n, r, i) { -======= -function xi(e, t, n, r, i) { ->>>>>>> Stashed changes -======= -function xi(e, t, n, r, i) { ->>>>>>> Stashed changes let a = e[t], o = e[t + 1]; for (t += r; t < n; t += r) { let n = e[t], r = e[t + 1], s = Ht(a, o, n, r); @@ -3338,8 +2998,6 @@ function xi(e, t, n, r, i) { } return i; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Sa(e, t, n, r, i) { for (let a = 0, o = n.length; a < o; ++a) { let o = n[a]; @@ -3348,26 +3006,6 @@ function Sa(e, t, n, r, i) { return i; } function Ca(e, t, n, r, i, a, o, s, c, l, u) { -======= -function Si(e, t, n, r, i) { - for (let a = 0, o = n.length; a < o; ++a) { - let o = n[a]; - i = xi(e, t, o, r, i), t = o; - } - return i; -} -function Ci(e, t, n, r, i, a, o, s, c, l, u) { ->>>>>>> Stashed changes -======= -function Si(e, t, n, r, i) { - for (let a = 0, o = n.length; a < o; ++a) { - let o = n[a]; - i = xi(e, t, o, r, i), t = o; - } - return i; -} -function Ci(e, t, n, r, i, a, o, s, c, l, u) { ->>>>>>> Stashed changes if (t == n) return l; let d, f; if (i === 0) { @@ -3379,114 +3017,48 @@ function Ci(e, t, n, r, i, a, o, s, c, l, u) { } u ||= [NaN, NaN]; let p = t + r; -<<<<<<< Updated upstream -<<<<<<< Updated upstream for (; p < n;) if (ba(e, p - r, p, r, o, s, u), f = Ht(o, s, u[0], u[1]), f < l) { for (l = f, d = 0; d < r; ++d) c[d] = u[d]; c.length = r, p += r; } else p += r * Math.max((Math.sqrt(f) - Math.sqrt(l)) / i | 0, 1); if (a && (ba(e, n - r, t, r, o, s, u), f = Ht(o, s, u[0], u[1]), f < l)) { -======= - for (; p < n;) if (bi(e, p - r, p, r, o, s, u), f = wt(o, s, u[0], u[1]), f < l) { - for (l = f, d = 0; d < r; ++d) c[d] = u[d]; - c.length = r, p += r; - } else p += r * Math.max((Math.sqrt(f) - Math.sqrt(l)) / i | 0, 1); - if (a && (bi(e, n - r, t, r, o, s, u), f = wt(o, s, u[0], u[1]), f < l)) { ->>>>>>> Stashed changes -======= - for (; p < n;) if (bi(e, p - r, p, r, o, s, u), f = wt(o, s, u[0], u[1]), f < l) { - for (l = f, d = 0; d < r; ++d) c[d] = u[d]; - c.length = r, p += r; - } else p += r * Math.max((Math.sqrt(f) - Math.sqrt(l)) / i | 0, 1); - if (a && (bi(e, n - r, t, r, o, s, u), f = wt(o, s, u[0], u[1]), f < l)) { ->>>>>>> Stashed changes for (l = f, d = 0; d < r; ++d) c[d] = u[d]; c.length = r; } return l; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function wa(e, t, n, r, i, a, o, s, c, l, u) { u ||= [NaN, NaN]; for (let d = 0, f = n.length; d < f; ++d) { let f = n[d]; l = Ca(e, t, f, r, i, a, o, s, c, l, u), t = f; -======= -function wi(e, t, n, r, i, a, o, s, c, l, u) { - u ||= [NaN, NaN]; - for (let d = 0, f = n.length; d < f; ++d) { - let f = n[d]; - l = Ci(e, t, f, r, i, a, o, s, c, l, u), t = f; ->>>>>>> Stashed changes -======= -function wi(e, t, n, r, i, a, o, s, c, l, u) { - u ||= [NaN, NaN]; - for (let d = 0, f = n.length; d < f; ++d) { - let f = n[d]; - l = Ci(e, t, f, r, i, a, o, s, c, l, u), t = f; ->>>>>>> Stashed changes } return l; } //#endregion //#region node_modules/ol/geom/flat/deflate.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Ta(e, t, n, r) { for (let r = 0, i = n.length; r < i; ++r) e[t++] = n[r]; return t; } function Ea(e, t, n, r) { -======= -function Ti(e, t, n, r) { - for (let r = 0, i = n.length; r < i; ++r) e[t++] = n[r]; - return t; -} -function Ei(e, t, n, r) { ->>>>>>> Stashed changes -======= -function Ti(e, t, n, r) { - for (let r = 0, i = n.length; r < i; ++r) e[t++] = n[r]; - return t; -} -function Ei(e, t, n, r) { ->>>>>>> Stashed changes for (let i = 0, a = n.length; i < a; ++i) { let a = n[i]; for (let n = 0; n < r; ++n) e[t++] = a[n]; } return t; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Da(e, t, n, r, i) { i ||= []; let a = 0; for (let o = 0, s = n.length; o < s; ++o) { let s = Ea(e, t, n[o], r); -======= -function Di(e, t, n, r, i) { - i ||= []; - let a = 0; - for (let o = 0, s = n.length; o < s; ++o) { - let s = Ei(e, t, n[o], r); ->>>>>>> Stashed changes -======= -function Di(e, t, n, r, i) { - i ||= []; - let a = 0; - for (let o = 0, s = n.length; o < s; ++o) { - let s = Ei(e, t, n[o], r); ->>>>>>> Stashed changes i[a++] = s, t = s; } return i.length = a, i; } //#endregion //#region node_modules/ol/geom/flat/inflate.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Oa(e, t, n, r, i) { i = i === void 0 ? [] : i; let a = 0; @@ -3500,17 +3072,6 @@ function ka(e, t, n, r, i) { let s = n[o]; i[a++] = Oa(e, t, s, r, i[a]), t = s; } -======= -======= ->>>>>>> Stashed changes -function Oi(e, t, n, r, i) { - i = i === void 0 ? [] : i; - let a = 0; - for (let o = t; o < n; o += r) i[a++] = e.slice(o, o + r); -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes return i.length = a, i; } function Aa(e, t, n, r, i) { @@ -3518,55 +3079,18 @@ function Aa(e, t, n, r, i) { let a = 0; for (let o = 0, s = n.length; o < s; ++o) { let s = n[o]; -<<<<<<< Updated upstream -<<<<<<< Updated upstream i[a++] = s.length === 1 && s[0] === t ? [] : ka(e, t, s, r, i[a]), t = s[s.length - 1]; -======= -======= ->>>>>>> Stashed changes - i[a++] = Oi(e, t, s, r, i[a]), t = s; - } - return i.length = a, i; -} -function Ai(e, t, n, r, i) { - i = i === void 0 ? [] : i; - let a = 0; - for (let o = 0, s = n.length; o < s; ++o) { - let s = n[o]; - i[a++] = s.length === 1 && s[0] === t ? [] : ki(e, t, s, r, i[a]), t = s[s.length - 1]; -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes } return i.length = a, i; } //#endregion //#region node_modules/ol/geom/flat/contains.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function ja(e, t, n, r, i) { return !ht(i, function(i) { return !Ma(e, t, n, r, i[0], i[1]); }); } function Ma(e, t, n, r, i, a) { -======= -function ji(e, t, n, r, i) { - return !et(i, function(i) { - return !Mi(e, t, n, r, i[0], i[1]); - }); -} -function Mi(e, t, n, r, i, a) { ->>>>>>> Stashed changes -======= -function ji(e, t, n, r, i) { - return !et(i, function(i) { - return !Mi(e, t, n, r, i[0], i[1]); - }); -} -function Mi(e, t, n, r, i, a) { ->>>>>>> Stashed changes let o = 0, s = e[n - r], c = e[n - r + 1]; for (; t < n; t += r) { let n = e[t], r = e[t + 1]; @@ -3574,42 +3098,20 @@ function Mi(e, t, n, r, i, a) { } return o !== 0; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Na(e, t, n, r, i, a) { if (n.length === 0 || !Ma(e, t, n[0], r, i, a)) return !1; for (let t = 1, o = n.length; t < o; ++t) if (Ma(e, n[t - 1], n[t], r, i, a)) return !1; -======= -function Ni(e, t, n, r, i, a) { - if (n.length === 0 || !Mi(e, t, n[0], r, i, a)) return !1; - for (let t = 1, o = n.length; t < o; ++t) if (Mi(e, n[t - 1], n[t], r, i, a)) return !1; ->>>>>>> Stashed changes -======= -function Ni(e, t, n, r, i, a) { - if (n.length === 0 || !Mi(e, t, n[0], r, i, a)) return !1; - for (let t = 1, o = n.length; t < o; ++t) if (Mi(e, n[t - 1], n[t], r, i, a)) return !1; ->>>>>>> Stashed changes return !0; } //#endregion //#region node_modules/ol/geom/flat/segments.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Pa(e, t, n, r, i) { -======= -function Pi(e, t, n, r, i) { ->>>>>>> Stashed changes -======= -function Pi(e, t, n, r, i) { ->>>>>>> Stashed changes let a; for (t += r; t < n; t += r) if (a = i(e.slice(t - r, t), e.slice(t, t + r)), a) return a; return !1; } //#endregion //#region node_modules/ol/geom/flat/intersectsextent.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Fa(e, t, n, r, i, a) { return a ??= pt(at(), e, t, n, r), Ot(i, a) ? a[0] >= i[0] && a[2] <= i[2] || a[1] >= i[1] && a[3] <= i[3] || Pa(e, t, n, r, function(e, t) { return Mt(i, e, t); @@ -3622,38 +3124,11 @@ function La(e, t, n, r, i) { if (!Ia(e, t, n[0], r, i)) return !1; if (n.length === 1) return !0; for (let t = 1, a = n.length; t < a; ++t) if (ja(e, n[t - 1], n[t], r, i) && !Fa(e, n[t - 1], n[t], r, i)) return !1; -======= -======= ->>>>>>> Stashed changes -function Fi(e, t, n, r, i, a) { - return a ??= Qe(We(), e, t, n, r), pt(i, a) ? a[0] >= i[0] && a[2] <= i[2] || a[1] >= i[1] && a[3] <= i[3] || Pi(e, t, n, r, function(e, t) { - return _t(i, e, t); - }) : !1; -} -function Ii(e, t, n, r, i) { - return !!(Fi(e, t, n, r, i) || Mi(e, t, n, r, i[0], i[1]) || Mi(e, t, n, r, i[0], i[3]) || Mi(e, t, n, r, i[2], i[1]) || Mi(e, t, n, r, i[2], i[3])); -} -function Li(e, t, n, r, i) { - if (!Ii(e, t, n[0], r, i)) return !1; - if (n.length === 1) return !0; - for (let t = 1, a = n.length; t < a; ++t) if (ji(e, n[t - 1], n[t], r, i) && !Fi(e, n[t - 1], n[t], r, i)) return !1; -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes return !0; } //#endregion //#region node_modules/ol/geom/flat/simplify.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Ra(e, t, n, r, i, a, o) { -======= -function Ri(e, t, n, r, i, a, o) { ->>>>>>> Stashed changes -======= -function Ri(e, t, n, r, i, a, o) { ->>>>>>> Stashed changes let s = (n - t) / r; if (s < 3) { for (; t < n; t += r) a[o++] = e[t], a[o++] = e[t + 1]; @@ -3673,8 +3148,6 @@ function Ri(e, t, n, r, i, a, o) { for (let n = 0; n < s; ++n) c[n] && (a[o++] = e[t + n * r], a[o++] = e[t + n * r + 1]); return o; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function za(e, t, n, r, i, a, o, s) { for (let c = 0, l = n.length; c < l; ++c) { let l = n[c]; @@ -3695,50 +3168,6 @@ function Va(e, t, n, r, i, a, o) { while (l == s && u == c); for (; t < n;) { let n = Ba(e[t], i), d = Ba(e[t + 1], i); -======= -function zi(e, t, n, r, i, a, o, s) { - for (let c = 0, l = n.length; c < l; ++c) { - let l = n[c]; - o = Ri(e, t, l, r, i, a, o), s.push(o), t = l; - } - return o; -} -function Bi(e, t) { - return t * Math.round(e / t); -} -function Vi(e, t, n, r, i, a, o) { - if (t == n) return o; - let s = Bi(e[t], i), c = Bi(e[t + 1], i); - t += r, a[o++] = s, a[o++] = c; - let l, u; - do - if (l = Bi(e[t], i), u = Bi(e[t + 1], i), t += r, t == n) return a[o++] = l, a[o++] = u, o; - while (l == s && u == c); - for (; t < n;) { - let n = Bi(e[t], i), d = Bi(e[t + 1], i); ->>>>>>> Stashed changes -======= -function zi(e, t, n, r, i, a, o, s) { - for (let c = 0, l = n.length; c < l; ++c) { - let l = n[c]; - o = Ri(e, t, l, r, i, a, o), s.push(o), t = l; - } - return o; -} -function Bi(e, t) { - return t * Math.round(e / t); -} -function Vi(e, t, n, r, i, a, o) { - if (t == n) return o; - let s = Bi(e[t], i), c = Bi(e[t + 1], i); - t += r, a[o++] = s, a[o++] = c; - let l, u; - do - if (l = Bi(e[t], i), u = Bi(e[t + 1], i), t += r, t == n) return a[o++] = l, a[o++] = u, o; - while (l == s && u == c); - for (; t < n;) { - let n = Bi(e[t], i), d = Bi(e[t + 1], i); ->>>>>>> Stashed changes if (t += r, n == l && d == u) continue; let f = l - s, p = u - c, m = n - s, h = d - c; if (f * h == p * m && (f < 0 && m < f || f == m || f > 0 && m > f) && (p < 0 && h < p || p == h || p > 0 && h > p)) { @@ -3749,38 +3178,16 @@ function Vi(e, t, n, r, i, a, o) { } return a[o++] = l, a[o++] = u, o; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Ha(e, t, n, r, i, a, o, s) { for (let c = 0, l = n.length; c < l; ++c) { let l = n[c]; o = Va(e, t, l, r, i, a, o), s.push(o), t = l; -======= -function Hi(e, t, n, r, i, a, o, s) { - for (let c = 0, l = n.length; c < l; ++c) { - let l = n[c]; - o = Vi(e, t, l, r, i, a, o), s.push(o), t = l; ->>>>>>> Stashed changes -======= -function Hi(e, t, n, r, i, a, o, s) { - for (let c = 0, l = n.length; c < l; ++c) { - let l = n[c]; - o = Vi(e, t, l, r, i, a, o), s.push(o), t = l; ->>>>>>> Stashed changes } return o; } //#endregion //#region node_modules/ol/geom/LinearRing.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var Ua = class e extends ma { -======= -var Ui = class e extends mi { ->>>>>>> Stashed changes -======= -var Ui = class e extends mi { ->>>>>>> Stashed changes constructor(e, t) { super(), this.maxDelta_ = -1, this.maxDeltaRevision_ = -1, t !== void 0 && !Array.isArray(e[0]) ? this.setFlatCoordinates(t, e) : this.setCoordinates(e, t); } @@ -3788,8 +3195,6 @@ var Ui = class e extends mi { return new e(this.flatCoordinates.slice(), this.layout); } closestPointXY(e, t, n, r) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return r < et(this.getExtent(), e, t) ? r : (this.maxDeltaRevision_ != this.getRevision() && (this.maxDelta_ = Math.sqrt(xa(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0)), this.maxDeltaRevision_ = this.getRevision()), Ca(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.maxDelta_, !0, e, t, n, r)); } getArea() { @@ -3801,61 +3206,17 @@ var Ui = class e extends mi { getSimplifiedGeometryInternal(t) { let n = []; return n.length = Ra(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, t, n, 0), new e(n, "XY"); -======= - return r < ze(this.getExtent(), e, t) ? r : (this.maxDeltaRevision_ != this.getRevision() && (this.maxDelta_ = Math.sqrt(xi(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0)), this.maxDeltaRevision_ = this.getRevision()), Ci(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.maxDelta_, !0, e, t, n, r)); - } - getArea() { - return vi(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride); } - getCoordinates() { - return Oi(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride); + getType() { + return "LinearRing"; } - getSimplifiedGeometryInternal(t) { - let n = []; - return n.length = Ri(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, t, n, 0), new e(n, "XY"); ->>>>>>> Stashed changes -======= - return r < ze(this.getExtent(), e, t) ? r : (this.maxDeltaRevision_ != this.getRevision() && (this.maxDelta_ = Math.sqrt(xi(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0)), this.maxDeltaRevision_ = this.getRevision()), Ci(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.maxDelta_, !0, e, t, n, r)); + intersectsExtent(e) { + return Fa(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, e); } - getArea() { - return vi(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride); - } - getCoordinates() { - return Oi(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride); - } - getSimplifiedGeometryInternal(t) { - let n = []; - return n.length = Ri(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, t, n, 0), new e(n, "XY"); ->>>>>>> Stashed changes - } - getType() { - return "LinearRing"; - } - intersectsExtent(e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream - return Fa(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, e); - } - setCoordinates(e, t) { - this.setLayout(t, e, 1), this.flatCoordinates ||= [], this.flatCoordinates.length = Ea(this.flatCoordinates, 0, e, this.stride), this.changed(); + setCoordinates(e, t) { + this.setLayout(t, e, 1), this.flatCoordinates ||= [], this.flatCoordinates.length = Ea(this.flatCoordinates, 0, e, this.stride), this.changed(); } }, Wa = class e extends ma { -======= - return Fi(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, e); - } - setCoordinates(e, t) { - this.setLayout(t, e, 1), this.flatCoordinates ||= [], this.flatCoordinates.length = Ei(this.flatCoordinates, 0, e, this.stride), this.changed(); - } -}, Wi = class e extends mi { ->>>>>>> Stashed changes -======= - return Fi(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, e); - } - setCoordinates(e, t) { - this.setLayout(t, e, 1), this.flatCoordinates ||= [], this.flatCoordinates.length = Ei(this.flatCoordinates, 0, e, this.stride), this.changed(); - } -}, Wi = class e extends mi { ->>>>>>> Stashed changes constructor(e, t) { super(), this.setCoordinates(e, t); } @@ -3885,49 +3246,22 @@ var Ui = class e extends mi { return rt(e, this.flatCoordinates[0], this.flatCoordinates[1]); } setCoordinates(e, t) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.setLayout(t, e, 0), this.flatCoordinates ||= [], this.flatCoordinates.length = Ta(this.flatCoordinates, 0, e, this.stride), this.changed(); -======= - this.setLayout(t, e, 0), this.flatCoordinates ||= [], this.flatCoordinates.length = Ti(this.flatCoordinates, 0, e, this.stride), this.changed(); ->>>>>>> Stashed changes -======= - this.setLayout(t, e, 0), this.flatCoordinates ||= [], this.flatCoordinates.length = Ti(this.flatCoordinates, 0, e, this.stride), this.changed(); ->>>>>>> Stashed changes } }; //#endregion //#region node_modules/ol/geom/flat/interiorpoint.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Ga(e, t, n, r, i, a, o) { let s, c, l, d, f, p, m, h = i[a + 1], g = []; -======= -======= ->>>>>>> Stashed changes -function Gi(e, t, n, r, i, a, o) { - let s, c, l, u, d, f, p, m = i[a + 1], h = []; ->>>>>>> Stashed changes for (let i = 0, a = n.length; i < a; ++i) { let a = n[i]; for (d = e[a - r], p = e[a - r + 1], s = t; s < a; s += r) f = e[s], m = e[s + 1], (h <= p && m <= h || p <= h && h <= m) && (l = (h - p) / (m - p) * (f - d) + d, g.push(l)), d = f, p = m; } -<<<<<<< Updated upstream let _ = NaN, v = -Infinity; for (g.sort(u), d = g[0], s = 1, c = g.length; s < c; ++s) { f = g[s]; let i = Math.abs(f - d); i > v && (l = (d + f) / 2, Na(e, t, n, r, l, h) && (_ = l, v = i)), d = f; -======= - let g = NaN, _ = -Infinity; - for (h.sort(oe), u = h[0], s = 1, c = h.length; s < c; ++s) { - d = h[s]; - let i = Math.abs(d - u); - i > _ && (l = (u + d) / 2, Ni(e, t, n, r, l, m) && (g = l, _ = i)), u = d; -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes } return isNaN(_) && (_ = i[a]), o ? (o.push(_, h, v), o) : [ _, @@ -3935,41 +3269,17 @@ function Gi(e, t, n, r, i, a, o) { v ]; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Ka(e, t, n, r, i) { let a = []; for (let o = 0, s = n.length; o < s; ++o) { let s = n[o]; a = Ga(e, t, s, r, i, 2 * o, a), t = s[s.length - 1]; -======= -function Ki(e, t, n, r, i) { - let a = []; - for (let o = 0, s = n.length; o < s; ++o) { - let s = n[o]; - a = Gi(e, t, s, r, i, 2 * o, a), t = s[s.length - 1]; ->>>>>>> Stashed changes -======= -function Ki(e, t, n, r, i) { - let a = []; - for (let o = 0, s = n.length; o < s; ++o) { - let s = n[o]; - a = Gi(e, t, s, r, i, 2 * o, a), t = s[s.length - 1]; ->>>>>>> Stashed changes } return a; } //#endregion //#region node_modules/ol/geom/flat/reverse.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function qa(e, t, n, r) { -======= -function qi(e, t, n, r) { ->>>>>>> Stashed changes -======= -function qi(e, t, n, r) { ->>>>>>> Stashed changes for (; t < n - r;) { for (let i = 0; i < r; ++i) { let a = e[t + i]; @@ -3980,15 +3290,7 @@ function qi(e, t, n, r) { } //#endregion //#region node_modules/ol/geom/flat/orient.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Ja(e, t, n, r) { -======= -function Ji(e, t, n, r) { ->>>>>>> Stashed changes -======= -function Ji(e, t, n, r) { ->>>>>>> Stashed changes let i = 0, a = e[n - r], o = e[n - r + 1]; for (; t < n; t += r) { let n = e[t], r = e[t + 1]; @@ -3996,24 +3298,10 @@ function Ji(e, t, n, r) { } return i === 0 ? void 0 : i > 0; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Ya(e, t, n, r, i) { i = i !== void 0 && i; for (let a = 0, o = n.length; a < o; ++a) { let o = n[a], s = Ja(e, t, o, r); -======= -function Yi(e, t, n, r, i) { - i = i !== void 0 && i; - for (let a = 0, o = n.length; a < o; ++a) { - let o = n[a], s = Ji(e, t, o, r); ->>>>>>> Stashed changes -======= -function Yi(e, t, n, r, i) { - i = i !== void 0 && i; - for (let a = 0, o = n.length; a < o; ++a) { - let o = n[a], s = Ji(e, t, o, r); ->>>>>>> Stashed changes if (a === 0) { if (i && s || !i && !s) return !1; } else if (i && !s || !i && s) return !1; @@ -4021,8 +3309,6 @@ function Yi(e, t, n, r, i) { } return !0; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Xa(e, t, n, r, i) { i = i !== void 0 && i; for (let a = 0, o = n.length; a < o; ++a) { @@ -4035,34 +3321,6 @@ function Za(e, t) { let n = [], r = 0, i = 0, a; for (let o = 0, s = t.length; o < s; ++o) { let s = t[o], c = Ja(e, r, s, 2); -======= -function Xi(e, t, n, r, i) { - i = i !== void 0 && i; - for (let a = 0, o = n.length; a < o; ++a) { - let o = n[a], s = Ji(e, t, o, r); - (a === 0 ? i && s || !i && !s : i && !s || !i && s) && qi(e, t, o, r), t = o; - } - return t; -} -function Zi(e, t) { - let n = [], r = 0, i = 0, a; - for (let o = 0, s = t.length; o < s; ++o) { - let s = t[o], c = Ji(e, r, s, 2); ->>>>>>> Stashed changes -======= -function Xi(e, t, n, r, i) { - i = i !== void 0 && i; - for (let a = 0, o = n.length; a < o; ++a) { - let o = n[a], s = Ji(e, t, o, r); - (a === 0 ? i && s || !i && !s : i && !s || !i && s) && qi(e, t, o, r), t = o; - } - return t; -} -function Zi(e, t) { - let n = [], r = 0, i = 0, a; - for (let o = 0, s = t.length; o < s; ++o) { - let s = t[o], c = Ji(e, r, s, 2); ->>>>>>> Stashed changes if (a === void 0 && (a = c), c === a) n.push(t.slice(i, o + 1)); else { if (n.length === 0) continue; @@ -4074,15 +3332,7 @@ function Zi(e, t) { } //#endregion //#region node_modules/ol/geom/Polygon.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var Qa = class e extends ma { -======= -var Qi = class e extends mi { ->>>>>>> Stashed changes -======= -var Qi = class e extends mi { ->>>>>>> Stashed changes constructor(e, t, n) { super(), this.ends_ = [], this.flatInteriorPointRevision_ = -1, this.flatInteriorPoint_ = null, this.maxDelta_ = -1, this.maxDeltaRevision_ = -1, this.orientedRevision_ = -1, this.orientedFlatCoordinates_ = null, t !== void 0 && n ? (this.setFlatCoordinates(t, e), this.ends_ = n) : this.setCoordinates(e, t); } @@ -4094,8 +3344,6 @@ var Qi = class e extends mi { return t.applyProperties(this), t; } closestPointXY(e, t, n, r) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return r < et(this.getExtent(), e, t) ? r : (this.maxDeltaRevision_ != this.getRevision() && (this.maxDelta_ = Math.sqrt(Sa(this.flatCoordinates, 0, this.ends_, this.stride, 0)), this.maxDeltaRevision_ = this.getRevision()), wa(this.flatCoordinates, 0, this.ends_, this.stride, this.maxDelta_, !0, e, t, n, r)); } containsXY(e, t) { @@ -4107,88 +3355,30 @@ var Qi = class e extends mi { getCoordinates(e) { let t; return e === void 0 ? t = this.flatCoordinates : (t = this.getOrientedFlatCoordinates().slice(), Xa(t, 0, this.ends_, this.stride, e)), ka(t, 0, this.ends_, this.stride); -======= - return r < ze(this.getExtent(), e, t) ? r : (this.maxDeltaRevision_ != this.getRevision() && (this.maxDelta_ = Math.sqrt(Si(this.flatCoordinates, 0, this.ends_, this.stride, 0)), this.maxDeltaRevision_ = this.getRevision()), wi(this.flatCoordinates, 0, this.ends_, this.stride, this.maxDelta_, !0, e, t, n, r)); - } - containsXY(e, t) { - return Ni(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, e, t); - } - getArea() { - return yi(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride); - } - getCoordinates(e) { - let t; - return e === void 0 ? t = this.flatCoordinates : (t = this.getOrientedFlatCoordinates().slice(), Xi(t, 0, this.ends_, this.stride, e)), ki(t, 0, this.ends_, this.stride); ->>>>>>> Stashed changes -======= - return r < ze(this.getExtent(), e, t) ? r : (this.maxDeltaRevision_ != this.getRevision() && (this.maxDelta_ = Math.sqrt(Si(this.flatCoordinates, 0, this.ends_, this.stride, 0)), this.maxDeltaRevision_ = this.getRevision()), wi(this.flatCoordinates, 0, this.ends_, this.stride, this.maxDelta_, !0, e, t, n, r)); - } - containsXY(e, t) { - return Ni(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, e, t); - } - getArea() { - return yi(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride); - } - getCoordinates(e) { - let t; - return e === void 0 ? t = this.flatCoordinates : (t = this.getOrientedFlatCoordinates().slice(), Xi(t, 0, this.ends_, this.stride, e)), ki(t, 0, this.ends_, this.stride); ->>>>>>> Stashed changes } getEnds() { return this.ends_; } getFlatInteriorPoint() { if (this.flatInteriorPointRevision_ != this.getRevision()) { -<<<<<<< Updated upstream let e = yt(this.getExtent()); this.flatInteriorPoint_ = Ga(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, e, 0), this.flatInteriorPointRevision_ = this.getRevision(); -======= - let e = it(this.getExtent()); - this.flatInteriorPoint_ = Gi(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, e, 0), this.flatInteriorPointRevision_ = this.getRevision(); -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes } return this.flatInteriorPoint_; } getInteriorPoint() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return new Wa(this.getFlatInteriorPoint(), "XYM"); -======= - return new Wi(this.getFlatInteriorPoint(), "XYM"); ->>>>>>> Stashed changes -======= - return new Wi(this.getFlatInteriorPoint(), "XYM"); ->>>>>>> Stashed changes } getLinearRingCount() { return this.ends_.length; } getLinearRing(e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return e < 0 || this.ends_.length <= e ? null : new Ua(this.flatCoordinates.slice(e === 0 ? 0 : this.ends_[e - 1], this.ends_[e]), this.layout); -======= - return e < 0 || this.ends_.length <= e ? null : new Ui(this.flatCoordinates.slice(e === 0 ? 0 : this.ends_[e - 1], this.ends_[e]), this.layout); ->>>>>>> Stashed changes -======= - return e < 0 || this.ends_.length <= e ? null : new Ui(this.flatCoordinates.slice(e === 0 ? 0 : this.ends_[e - 1], this.ends_[e]), this.layout); ->>>>>>> Stashed changes } getLinearRings() { let e = this.layout, t = this.flatCoordinates, n = this.ends_, r = [], i = 0; for (let a = 0, o = n.length; a < o; ++a) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let o = n[a], s = new Ua(t.slice(i, o), e); -======= - let o = n[a], s = new Ui(t.slice(i, o), e); ->>>>>>> Stashed changes -======= - let o = n[a], s = new Ui(t.slice(i, o), e); ->>>>>>> Stashed changes r.push(s), i = o; } return r; @@ -4196,36 +3386,18 @@ var Qi = class e extends mi { getOrientedFlatCoordinates() { if (this.orientedRevision_ != this.getRevision()) { let e = this.flatCoordinates; -<<<<<<< Updated upstream -<<<<<<< Updated upstream Ya(e, 0, this.ends_, this.stride) ? this.orientedFlatCoordinates_ = e : (this.orientedFlatCoordinates_ = e.slice(), this.orientedFlatCoordinates_.length = Xa(this.orientedFlatCoordinates_, 0, this.ends_, this.stride)), this.orientedRevision_ = this.getRevision(); -======= - Yi(e, 0, this.ends_, this.stride) ? this.orientedFlatCoordinates_ = e : (this.orientedFlatCoordinates_ = e.slice(), this.orientedFlatCoordinates_.length = Xi(this.orientedFlatCoordinates_, 0, this.ends_, this.stride)), this.orientedRevision_ = this.getRevision(); ->>>>>>> Stashed changes -======= - Yi(e, 0, this.ends_, this.stride) ? this.orientedFlatCoordinates_ = e : (this.orientedFlatCoordinates_ = e.slice(), this.orientedFlatCoordinates_.length = Xi(this.orientedFlatCoordinates_, 0, this.ends_, this.stride)), this.orientedRevision_ = this.getRevision(); ->>>>>>> Stashed changes } return this.orientedFlatCoordinates_; } getSimplifiedGeometryInternal(t) { let n = [], r = []; -<<<<<<< Updated upstream -<<<<<<< Updated upstream return n.length = Ha(this.flatCoordinates, 0, this.ends_, this.stride, Math.sqrt(t), n, 0, r), new e(n, "XY", r); -======= - return n.length = Hi(this.flatCoordinates, 0, this.ends_, this.stride, Math.sqrt(t), n, 0, r), new e(n, "XY", r); ->>>>>>> Stashed changes -======= - return n.length = Hi(this.flatCoordinates, 0, this.ends_, this.stride, Math.sqrt(t), n, 0, r), new e(n, "XY", r); ->>>>>>> Stashed changes } getType() { return "Polygon"; } intersectsExtent(e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return La(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, e); } setCoordinates(e, t) { @@ -4236,28 +3408,6 @@ var Qi = class e extends mi { }; function $a(e) { if (kt(e)) throw Error("Cannot create polygon from empty extent"); -======= - return Li(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, e); - } - setCoordinates(e, t) { - this.setLayout(t, e, 2), this.flatCoordinates ||= []; - let n = Di(this.flatCoordinates, 0, e, this.stride, this.ends_); - this.flatCoordinates.length = n.length === 0 ? 0 : n[n.length - 1], this.changed(); - } -}; -======= - return Li(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, e); - } - setCoordinates(e, t) { - this.setLayout(t, e, 2), this.flatCoordinates ||= []; - let n = Di(this.flatCoordinates, 0, e, this.stride, this.ends_); - this.flatCoordinates.length = n.length === 0 ? 0 : n[n.length - 1], this.changed(); - } -}; ->>>>>>> Stashed changes -function $i(e) { - if (mt(e)) throw Error("Cannot create polygon from empty extent"); ->>>>>>> Stashed changes let t = e[0], n = e[1], r = e[2], i = e[3], a = [ t, n, @@ -4270,8 +3420,6 @@ function $i(e) { t, n ]; -<<<<<<< Updated upstream -<<<<<<< Updated upstream return new Qa(a, "XY", [a.length]); } //#endregion @@ -4281,108 +3429,39 @@ function eo(e, t, n, r) { return r ? Math.min(e, Math.max(i, a)) : Math.min(e, Math.min(i, a)); } function to(e, t, n) { -======= - return new Qi(a, "XY", [a.length]); -} -//#endregion -//#region node_modules/ol/resolutionconstraint.js -======= - return new Qi(a, "XY", [a.length]); -} -//#endregion -//#region node_modules/ol/resolutionconstraint.js ->>>>>>> Stashed changes -function ea(e, t, n, r) { - let i = I(t) / n[0], a = ct(t) / n[1]; - return r ? Math.min(e, Math.max(i, a)) : Math.min(e, Math.min(i, a)); -} -function ta(e, t, n) { -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes let r = Math.min(e, t); return r *= Math.log(1 + 50 * Math.max(0, e / t - 1)) / 50 + 1, n && (r = Math.max(r, n), r /= Math.log(1 + 50 * Math.max(0, n / e - 1)) / 50 + 1), Bt(r, n / 2, t * 2); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function no(e, t, n, r) { return t = t === void 0 || t, (function(i, a, o, s) { if (i !== void 0) { let c = e[0], l = e[e.length - 1], u = n ? eo(c, n, o, r) : c; if (s) return t ? to(i, u, l) : Bt(i, l, u); let d = Math.floor(f(e, Math.min(u, i), a)); -======= -function na(e, t, n, r) { - return t = t === void 0 || t, (function(i, a, o, s) { - if (i !== void 0) { -======= -function na(e, t, n, r) { - return t = t === void 0 || t, (function(i, a, o, s) { - if (i !== void 0) { ->>>>>>> Stashed changes - let c = e[0], l = e[e.length - 1], u = n ? ea(c, n, o, r) : c; - if (s) return t ? ta(i, u, l) : St(i, l, u); - let d = Math.floor(ce(e, Math.min(u, i), a)); ->>>>>>> Stashed changes return e[d] > u && d < e.length - 1 ? e[d + 1] : e[d]; } }); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function ro(e, t, n, r, i, a) { return r = r === void 0 || r, n = n === void 0 ? 0 : n, (function(o, s, c, l) { if (o !== void 0) { let u = i ? eo(t, i, c, a) : t; if (l) return r ? to(o, u, n) : Bt(o, n, u); -======= -function ra(e, t, n, r, i, a) { - return r = r === void 0 || r, n = n === void 0 ? 0 : n, (function(o, s, c, l) { - if (o !== void 0) { - let u = i ? ea(t, i, c, a) : t; - if (l) return r ? ta(o, u, n) : St(o, n, u); ->>>>>>> Stashed changes -======= -function ra(e, t, n, r, i, a) { - return r = r === void 0 || r, n = n === void 0 ? 0 : n, (function(o, s, c, l) { - if (o !== void 0) { - let u = i ? ea(t, i, c, a) : t; - if (l) return r ? ta(o, u, n) : St(o, n, u); ->>>>>>> Stashed changes let d = Math.ceil(Math.log(t / u) / Math.log(e) - 1e-9), f = -s * .499999999 + .5, p = Math.floor(Math.log(t / Math.min(u, o)) / Math.log(e) + f); return Bt(t / e ** +Math.max(d, p), n, u); } }); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function io(e, t, n, r, i) { return n = n === void 0 || n, (function(a, o, s, c) { if (a !== void 0) { let o = r ? eo(e, r, s, i) : e; return !n || !c ? Bt(a, t, o) : to(a, o, t); -======= -function ia(e, t, n, r, i) { - return n = n === void 0 || n, (function(a, o, s, c) { - if (a !== void 0) { - let o = r ? ea(e, r, s, i) : e; - return !n || !c ? St(a, t, o) : ta(a, o, t); ->>>>>>> Stashed changes -======= -function ia(e, t, n, r, i) { - return n = n === void 0 || n, (function(a, o, s, c) { - if (a !== void 0) { - let o = r ? ea(e, r, s, i) : e; - return !n || !c ? St(a, t, o) : ta(a, o, t); ->>>>>>> Stashed changes } }); } //#endregion //#region node_modules/ol/rotationconstraint.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function ao(e) { if (e !== void 0) return 0; } @@ -4390,81 +3469,31 @@ function oo(e) { if (e !== void 0) return e; } function so(e) { -======= -function aa(e) { - if (e !== void 0) return 0; -} -function oa(e) { - if (e !== void 0) return e; -} -function sa(e) { ->>>>>>> Stashed changes -======= -function aa(e) { - if (e !== void 0) return 0; -} -function oa(e) { - if (e !== void 0) return e; -} -function sa(e) { ->>>>>>> Stashed changes let t = 2 * Math.PI / e; return (function(e, n) { if (n) return e; if (e !== void 0) return e = Math.floor(e / t + .5) * t, e; }); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function co(e) { let t = e === void 0 ? Gt(5) : e; -======= -======= ->>>>>>> Stashed changes -function ca(e) { - let t = e === void 0 ? Dt(5) : e; ->>>>>>> Stashed changes return (function(e, n) { return n || e === void 0 ? e : Math.abs(e) <= t ? 0 : e; }); } //#endregion //#region node_modules/ol/View.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var lo = 0, uo = class extends A { -======= -var la = 0, ua = class extends we { ->>>>>>> Stashed changes -======= -var la = 0, ua = class extends we { ->>>>>>> Stashed changes constructor(e) { super(), this.on, this.once, this.un, e = Object.assign({}, e), this.hints_ = [0, 0], this.animations_ = [], this.updateAnimationKey_, this.projection_ = br(e.projection, "EPSG:3857"), this.viewportSize_ = [100, 100], this.targetCenter_ = null, this.targetResolution_, this.targetRotation_, this.nextCenter_ = null, this.nextResolution_, this.nextRotation_, this.cancelAnchor_ = void 0, e.projection && dr(), e.center && (e.center = jr(e.center, this.projection_)), e.extent && (e.extent = Nr(e.extent, this.projection_)), this.applyOptions_(e); } applyOptions_(e) { let t = Object.assign({}, e); -<<<<<<< Updated upstream -<<<<<<< Updated upstream for (let e in ia) delete t[e]; this.setProperties(t, !0); let n = mo(e); this.maxResolution_ = n.maxResolution, this.minResolution_ = n.minResolution, this.zoomFactor_ = n.zoomFactor, this.resolutions_ = e.resolutions, this.padding_ = e.padding, this.minZoom_ = n.minZoom; let r = po(e), i = n.constraint, a = ho(e); -======= - for (let e in Rr) delete t[e]; - this.setProperties(t, !0); - let n = pa(e); - this.maxResolution_ = n.maxResolution, this.minResolution_ = n.minResolution, this.zoomFactor_ = n.zoomFactor, this.resolutions_ = e.resolutions, this.padding_ = e.padding, this.minZoom_ = n.minZoom; - let r = fa(e), i = n.constraint, a = ma(e); ->>>>>>> Stashed changes -======= - for (let e in Rr) delete t[e]; - this.setProperties(t, !0); - let n = pa(e); - this.maxResolution_ = n.maxResolution, this.minResolution_ = n.minResolution, this.zoomFactor_ = n.zoomFactor, this.resolutions_ = e.resolutions, this.padding_ = e.padding, this.minZoom_ = n.minZoom; - let r = fa(e), i = n.constraint, a = ma(e); ->>>>>>> Stashed changes this.constraints_ = { center: r, resolution: i, @@ -4517,15 +3546,7 @@ var la = 0, ua = class extends we { e.center && this.setCenterInternal(e.center), e.zoom === void 0 ? e.resolution && this.setResolution(e.resolution) : this.setZoom(e.zoom), e.rotation !== void 0 && this.setRotation(e.rotation); } if (r === t) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream n && fo(n, !0); -======= - n && da(n, !0); ->>>>>>> Stashed changes -======= - n && da(n, !0); ->>>>>>> Stashed changes return; } let i = Date.now(), a = this.targetCenter_.slice(), o = this.targetResolution_, s = this.targetRotation_, c = []; @@ -4535,15 +3556,7 @@ var la = 0, ua = class extends we { complete: !1, anchor: e.anchor, duration: e.duration === void 0 ? 1e3 : e.duration, -<<<<<<< Updated upstream -<<<<<<< Updated upstream easing: e.easing || Me, -======= - easing: e.easing || Ur, ->>>>>>> Stashed changes -======= - easing: e.easing || Ur, ->>>>>>> Stashed changes callback: n }; if (e.center && (t.sourceCenter = a, t.targetCenter = e.center.slice(), a = t.targetCenter), e.zoom === void 0 ? e.resolution && (t.sourceResolution = o, t.targetResolution = e.resolution, o = t.targetResolution) : (t.sourceResolution = o, t.targetResolution = this.getResolutionForZoom(e.zoom), o = t.targetResolution), e.rotation !== void 0) { @@ -4551,8 +3564,6 @@ var la = 0, ua = class extends we { let n = Kt(e.rotation - s + Math.PI, 2 * Math.PI) - Math.PI; t.targetRotation = s + n, s = t.targetRotation; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream go(t) ? t.complete = !0 : i += t.duration, c.push(t); } this.animations_.push(c), this.setHint(V.ANIMATING, 1), this.updateAnimations_(); @@ -4569,42 +3580,6 @@ var la = 0, ua = class extends we { for (let t = 0, n = this.animations_.length; t < n; ++t) { let n = this.animations_[t]; if (n[0].callback && fo(n[0].callback, !1), !e) for (let t = 0, r = n.length; t < r; ++t) { -======= - ha(t) ? t.complete = !0 : i += t.duration, c.push(t); - } - this.animations_.push(c), this.setHint(Lr.ANIMATING, 1), this.updateAnimations_(); - } - getAnimating() { - return this.hints_[Lr.ANIMATING] > 0; - } - getInteracting() { - return this.hints_[Lr.INTERACTING] > 0; - } - cancelAnimations() { - this.setHint(Lr.ANIMATING, -this.hints_[Lr.ANIMATING]); - let e; - for (let t = 0, n = this.animations_.length; t < n; ++t) { - let n = this.animations_[t]; - if (n[0].callback && da(n[0].callback, !1), !e) for (let t = 0, r = n.length; t < r; ++t) { ->>>>>>> Stashed changes -======= - ha(t) ? t.complete = !0 : i += t.duration, c.push(t); - } - this.animations_.push(c), this.setHint(Lr.ANIMATING, 1), this.updateAnimations_(); - } - getAnimating() { - return this.hints_[Lr.ANIMATING] > 0; - } - getInteracting() { - return this.hints_[Lr.INTERACTING] > 0; - } - cancelAnimations() { - this.setHint(Lr.ANIMATING, -this.hints_[Lr.ANIMATING]); - let e; - for (let t = 0, n = this.animations_.length; t < n; ++t) { - let n = this.animations_[t]; - if (n[0].callback && da(n[0].callback, !1), !e) for (let t = 0, r = n.length; t < r; ++t) { ->>>>>>> Stashed changes let r = n[t]; if (!r.complete) { e = r.anchor; @@ -4650,21 +3625,9 @@ var la = 0, ua = class extends we { if (this.applyTargetState_(!0), t = !0, !a.complete) break; } if (i) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.animations_[n] = null, this.setHint(V.ANIMATING, -1), this.nextCenter_ = null, this.nextResolution_ = NaN, this.nextRotation_ = NaN; let e = r[0].callback; e && fo(e, !0); -======= - this.animations_[n] = null, this.setHint(Lr.ANIMATING, -1), this.nextCenter_ = null, this.nextResolution_ = NaN, this.nextRotation_ = NaN; - let e = r[0].callback; - e && da(e, !0); ->>>>>>> Stashed changes -======= - this.animations_[n] = null, this.setHint(Lr.ANIMATING, -1), this.nextCenter_ = null, this.nextResolution_ = NaN, this.nextRotation_ = NaN; - let e = r[0].callback; - e && da(e, !0); ->>>>>>> Stashed changes } } this.animations_ = this.animations_.filter(Boolean), t && this.updateAnimationKey_ === void 0 && (this.updateAnimationKey_ = requestAnimationFrame(this.updateAnimations_.bind(this))); @@ -4693,15 +3656,7 @@ var la = 0, ua = class extends we { return e && Ar(e, this.getProjection()); } getCenterInternal() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return this.get(ia.CENTER); -======= - return this.get(Rr.CENTER); ->>>>>>> Stashed changes -======= - return this.get(Rr.CENTER); ->>>>>>> Stashed changes } getConstraints() { return this.constraints_; @@ -4749,15 +3704,7 @@ var la = 0, ua = class extends we { return this.projection_; } getResolution() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return this.get(ia.RESOLUTION); -======= - return this.get(Rr.RESOLUTION); ->>>>>>> Stashed changes -======= - return this.get(Rr.RESOLUTION); ->>>>>>> Stashed changes } getResolutions() { return this.resolutions_; @@ -4778,15 +3725,7 @@ var la = 0, ua = class extends we { }); } getRotation() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return this.get(ia.ROTATION); -======= - return this.get(Rr.ROTATION); ->>>>>>> Stashed changes -======= - return this.get(Rr.ROTATION); ->>>>>>> Stashed changes } getValueForResolutionFunction(e) { let t = Math.log(e || 2), n = this.getConstrainedResolution(this.maxResolution_), r = this.minResolution_, i = Math.log(n / r) / t; @@ -4802,15 +3741,7 @@ var la = 0, ua = class extends we { let e = this.getProjection(), t = this.getResolution(), n = this.getRotation(), r = this.getCenterInternal(), i = this.padding_; if (i) { let e = this.getViewportSizeMinusPadding_(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream r = _o(r, this.getViewportSize_(), [e[0] / 2 + i[3], e[1] / 2 + i[0]], t, n); -======= - r = ga(r, this.getViewportSize_(), [e[0] / 2 + i[3], e[1] / 2 + i[0]], t, n); ->>>>>>> Stashed changes -======= - r = ga(r, this.getViewportSize_(), [e[0] / 2 + i[3], e[1] / 2 + i[0]], t, n); ->>>>>>> Stashed changes } return { center: r.slice(0), @@ -4851,23 +3782,10 @@ var la = 0, ua = class extends we { } fit(e, t) { let n; -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (z(Array.isArray(e) || typeof e.getSimplifiedGeometry == "function", "Invalid extent or geometry provided as `geometry`"), Array.isArray(e)) z(!kt(e), "Cannot fit empty extent provided as `geometry`"), n = $a(Nr(e, this.getProjection())); else if (e.getType() === "Circle") { let t = Nr(e.getExtent(), this.getProjection()); n = $a(t), n.rotate(this.getRotation(), yt(t)); -======= -======= ->>>>>>> Stashed changes - if (R(Array.isArray(e) || typeof e.getSimplifiedGeometry == "function", "Invalid extent or geometry provided as `geometry`"), Array.isArray(e)) R(!mt(e), "Cannot fit empty extent provided as `geometry`"), n = $i(yr(e, this.getProjection())); - else if (e.getType() === "Circle") { - let t = yr(e.getExtent(), this.getProjection()); - n = $i(t), n.rotate(this.getRotation(), it(t)); -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes } else { let t = kr(); n = t ? e.clone().transform(t, this.getProjection()) : e; @@ -4902,16 +3820,8 @@ var la = 0, ua = class extends we { s = isNaN(s) ? a : Math.max(s, a), s = this.getConstrainedResolution(s, +!i); let c = this.getRotation(), l = Math.sin(c), u = Math.cos(c), d = yt(o); d[0] += (r[1] - r[3]) / 2 * s, d[1] += (r[0] - r[2]) / 2 * s; -<<<<<<< Updated upstream let f = d[0] * u - d[1] * l, p = d[1] * u + d[0] * l, m = this.getConstrainedCenter([f, p], s), h = t.callback ? t.callback : y; t.duration === void 0 ? (this.targetResolution_ = s, this.targetCenter_ = m, this.applyTargetState_(!1, !0), fo(h, !0)) : this.animateInternal({ -======= - let f = d[0] * u - d[1] * l, p = d[1] * u + d[0] * l, m = this.getConstrainedCenter([f, p], s), h = t.callback ? t.callback : he; - t.duration === void 0 ? (this.targetResolution_ = s, this.targetCenter_ = m, this.applyTargetState_(!1, !0), da(h, !0)) : this.animateInternal({ -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes resolution: s, center: m, duration: t.duration, @@ -4922,28 +3832,12 @@ var la = 0, ua = class extends we { this.centerOnInternal(jr(e, this.getProjection()), t, n); } centerOnInternal(e, t, n) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.setCenterInternal(_o(e, t, n, this.getResolution(), this.getRotation())); -======= - this.setCenterInternal(ga(e, t, n, this.getResolution(), this.getRotation())); ->>>>>>> Stashed changes -======= - this.setCenterInternal(ga(e, t, n, this.getResolution(), this.getRotation())); ->>>>>>> Stashed changes } calculateCenterShift(e, t, n, r) { let i, a = this.padding_; if (a && e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let o = this.getViewportSizeMinusPadding_(-n), s = _o(e, r, [o[0] / 2 + a[3], o[1] / 2 + a[0]], t, n); -======= - let o = this.getViewportSizeMinusPadding_(-n), s = ga(e, r, [o[0] / 2 + a[3], o[1] / 2 + a[0]], t, n); ->>>>>>> Stashed changes -======= - let o = this.getViewportSizeMinusPadding_(-n), s = ga(e, r, [o[0] / 2 + a[3], o[1] / 2 + a[0]], t, n); ->>>>>>> Stashed changes i = [e[0] - s[0], e[1] - s[1]]; } return i; @@ -4996,15 +3890,7 @@ var la = 0, ua = class extends we { } applyTargetState_(e, t) { let n = this.getAnimating() || this.getInteracting() || t, r = this.constraints_.rotation(this.targetRotation_, n), i = this.getViewportSize_(r), a = this.constraints_.resolution(this.targetResolution_, 0, i, n), o = this.constraints_.center(this.targetCenter_, a, i, n, this.calculateCenterShift(this.targetCenter_, a, r, i)); -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.get(ia.ROTATION) !== r && this.set(ia.ROTATION, r), this.get(ia.RESOLUTION) !== a && (this.set(ia.RESOLUTION, a), this.set("zoom", this.getZoom(), !0)), (!o || !this.get(ia.CENTER) || !en(this.get(ia.CENTER), o)) && this.set(ia.CENTER, o), this.getAnimating() && !e && this.cancelAnimations(), this.cancelAnchor_ = void 0; -======= - this.get(Rr.ROTATION) !== r && this.set(Rr.ROTATION, r), this.get(Rr.RESOLUTION) !== a && (this.set(Rr.RESOLUTION, a), this.set("zoom", this.getZoom(), !0)), (!o || !this.get(Rr.CENTER) || !It(this.get(Rr.CENTER), o)) && this.set(Rr.CENTER, o), this.getAnimating() && !e && this.cancelAnimations(), this.cancelAnchor_ = void 0; ->>>>>>> Stashed changes -======= - this.get(Rr.ROTATION) !== r && this.set(Rr.ROTATION, r), this.get(Rr.RESOLUTION) !== a && (this.set(Rr.RESOLUTION, a), this.set("zoom", this.getZoom(), !0)), (!o || !this.get(Rr.CENTER) || !It(this.get(Rr.CENTER), o)) && this.set(Rr.CENTER, o), this.getAnimating() && !e && this.cancelAnimations(), this.cancelAnchor_ = void 0; ->>>>>>> Stashed changes } resolveConstraints(e, t, n) { e = e === void 0 ? 200 : e; @@ -5018,42 +3904,18 @@ var la = 0, ua = class extends we { center: s, resolution: o, duration: e, -<<<<<<< Updated upstream -<<<<<<< Updated upstream easing: je, -======= - easing: Hr, ->>>>>>> Stashed changes -======= - easing: Hr, ->>>>>>> Stashed changes anchor: n })); } beginInteraction() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.resolveConstraints(0), this.setHint(V.INTERACTING, 1); -======= - this.resolveConstraints(0), this.setHint(Lr.INTERACTING, 1); ->>>>>>> Stashed changes -======= - this.resolveConstraints(0), this.setHint(Lr.INTERACTING, 1); ->>>>>>> Stashed changes } endInteraction(e, t, n) { n &&= jr(n, this.getProjection()), this.endInteractionInternal(e, t, n); } endInteractionInternal(e, t, n) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.getInteracting() && (this.setHint(V.INTERACTING, -1), this.resolveConstraints(e, t, n)); -======= - this.getInteracting() && (this.setHint(Lr.INTERACTING, -1), this.resolveConstraints(e, t, n)); ->>>>>>> Stashed changes -======= - this.getInteracting() && (this.setHint(Lr.INTERACTING, -1), this.resolveConstraints(e, t, n)); ->>>>>>> Stashed changes } getConstrainedCenter(e, t) { let n = this.getViewportSize_(this.getRotation()); @@ -5069,43 +3931,19 @@ var la = 0, ua = class extends we { return this.constraints_.resolution(e, t, n); } }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream function fo(e, t) { -======= -function da(e, t) { ->>>>>>> Stashed changes -======= -function da(e, t) { ->>>>>>> Stashed changes setTimeout(function() { e(t); }, 0); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function po(e) { if (e.extent !== void 0) { let t = e.smoothExtentConstraint === void 0 || e.smoothExtentConstraint; return aa(e.extent, e.constrainOnlyCenter, t); -======= -function fa(e) { - if (e.extent !== void 0) { - let t = e.smoothExtentConstraint === void 0 || e.smoothExtentConstraint; - return zr(e.extent, e.constrainOnlyCenter, t); ->>>>>>> Stashed changes -======= -function fa(e) { - if (e.extent !== void 0) { - let t = e.smoothExtentConstraint === void 0 || e.smoothExtentConstraint; - return zr(e.extent, e.constrainOnlyCenter, t); ->>>>>>> Stashed changes } let t = br(e.projection, "EPSG:3857"); if (e.multiWorld !== !0 && t.isGlobal()) { let e = t.getExtent().slice(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream return e[0] = -Infinity, e[2] = Infinity, aa(e, !1, !1); } return oa; @@ -5118,34 +3956,6 @@ function mo(e) { } else { let s = (d ? Math.max(R(d), Ct(d)) : 360 * sn.degrees / u.getMetersPerUnit()) / 256 / 2 ** lo, m = s / 2 ** 28; n = e.maxResolution, n === void 0 ? n = s / o ** +i : i = 0, r = e.minResolution, r === void 0 && (r = e.maxZoom === void 0 ? m : e.maxResolution === void 0 ? s / o ** +a : n / o ** +a), a = i + Math.floor(Math.log(n / r) / Math.log(o)), r = n / o ** +(a - i), t = e.constrainResolution ? ro(o, n, r, c, !f && p, l) : io(n, r, c, !f && p, l); -======= - return e[0] = -Infinity, e[2] = Infinity, zr(e, !1, !1); - } - return Br; -} -function pa(e) { - let t, n, r, i = e.minZoom === void 0 ? la : e.minZoom, a = e.maxZoom === void 0 ? 28 : e.maxZoom, o = e.zoomFactor === void 0 ? 2 : e.zoomFactor, s = e.multiWorld !== void 0 && e.multiWorld, c = e.smoothResolutionConstraint === void 0 || e.smoothResolutionConstraint, l = e.showFullExtent !== void 0 && e.showFullExtent, u = or(e.projection, "EPSG:3857"), d = u.getExtent(), f = e.constrainOnlyCenter, p = e.extent; - if (!s && !p && u.isGlobal() && (f = !1, p = d), e.resolutions !== void 0) { - let o = e.resolutions; - n = o[i], r = o[a] === void 0 ? o[o.length - 1] : o[a], t = e.constrainResolution ? na(o, c, !f && p, l) : ia(n, r, c, !f && p, l); - } else { - let s = (d ? Math.max(I(d), ct(d)) : 360 * Kt.degrees / u.getMetersPerUnit()) / 256 / 2 ** la, m = s / 2 ** 28; - n = e.maxResolution, n === void 0 ? n = s / o ** +i : i = 0, r = e.minResolution, r === void 0 && (r = e.maxZoom === void 0 ? m : e.maxResolution === void 0 ? s / o ** +a : n / o ** +a), a = i + Math.floor(Math.log(n / r) / Math.log(o)), r = n / o ** +(a - i), t = e.constrainResolution ? ra(o, n, r, c, !f && p, l) : ia(n, r, c, !f && p, l); ->>>>>>> Stashed changes -======= - return e[0] = -Infinity, e[2] = Infinity, zr(e, !1, !1); - } - return Br; -} -function pa(e) { - let t, n, r, i = e.minZoom === void 0 ? la : e.minZoom, a = e.maxZoom === void 0 ? 28 : e.maxZoom, o = e.zoomFactor === void 0 ? 2 : e.zoomFactor, s = e.multiWorld !== void 0 && e.multiWorld, c = e.smoothResolutionConstraint === void 0 || e.smoothResolutionConstraint, l = e.showFullExtent !== void 0 && e.showFullExtent, u = or(e.projection, "EPSG:3857"), d = u.getExtent(), f = e.constrainOnlyCenter, p = e.extent; - if (!s && !p && u.isGlobal() && (f = !1, p = d), e.resolutions !== void 0) { - let o = e.resolutions; - n = o[i], r = o[a] === void 0 ? o[o.length - 1] : o[a], t = e.constrainResolution ? na(o, c, !f && p, l) : ia(n, r, c, !f && p, l); - } else { - let s = (d ? Math.max(I(d), ct(d)) : 360 * Kt.degrees / u.getMetersPerUnit()) / 256 / 2 ** la, m = s / 2 ** 28; - n = e.maxResolution, n === void 0 ? n = s / o ** +i : i = 0, r = e.minResolution, r === void 0 && (r = e.maxZoom === void 0 ? m : e.maxResolution === void 0 ? s / o ** +a : n / o ** +a), a = i + Math.floor(Math.log(n / r) / Math.log(o)), r = n / o ** +(a - i), t = e.constrainResolution ? ra(o, n, r, c, !f && p, l) : ia(n, r, c, !f && p, l); ->>>>>>> Stashed changes } return { constraint: t, @@ -5155,8 +3965,6 @@ function pa(e) { zoomFactor: o }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function ho(e) { if (e.enableRotation === void 0 || e.enableRotation) { let t = e.constrainRotation; @@ -5168,36 +3976,10 @@ function go(e) { return !(e.sourceCenter && e.targetCenter && !en(e.sourceCenter, e.targetCenter) || e.sourceResolution !== e.targetResolution || e.sourceRotation !== e.targetRotation); } function _o(e, t, n, r, i) { -======= -function ma(e) { - if (e.enableRotation === void 0 || e.enableRotation) { - let t = e.constrainRotation; - return t === void 0 || t === !0 ? ca() : t === !1 ? oa : typeof t == "number" ? sa(t) : oa; - } - return aa; -} -======= -function ma(e) { - if (e.enableRotation === void 0 || e.enableRotation) { - let t = e.constrainRotation; - return t === void 0 || t === !0 ? ca() : t === !1 ? oa : typeof t == "number" ? sa(t) : oa; - } - return aa; -} ->>>>>>> Stashed changes -function ha(e) { - return !(e.sourceCenter && e.targetCenter && !It(e.sourceCenter, e.targetCenter) || e.sourceResolution !== e.targetResolution || e.sourceRotation !== e.targetRotation); -} -function ga(e, t, n, r, i) { -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes let a = Math.cos(-i), o = Math.sin(-i), s = e[0] * a - e[1] * o, c = e[1] * a + e[0] * o; return s += (t[0] / 2 - n[0]) * r, c += (n[1] - t[1] / 2) * r, o = -o, [s * a - c * o, c * a + s * o]; } //#endregion -<<<<<<< Updated upstream //#region node_modules/ol/layer/Property.js var H = { OPACITY: "opacity", @@ -5211,13 +3993,6 @@ var H = { SOURCE: "source", MAP: "map" }, vo = class extends A { -======= -//#region node_modules/ol/control/Attribution.js -var _a = class extends Te { -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes constructor(e) { super(), this.on, this.once, this.un, this.background_ = e.background; let t = Object.assign({}, e); @@ -5538,103 +4313,22 @@ var xo = { this.dragListenerKeys_.push(i(e, Eo.POINTERMOVE, this.handlePointerMove_, this), i(e, Eo.POINTERUP, this.handlePointerUp_, this), i(this.element_, Eo.POINTERCANCEL, this.handlePointerUp_, this)), this.element_.getRootNode && this.element_.getRootNode() !== e && this.dragListenerKeys_.push(i(this.element_.getRootNode(), Eo.POINTERUP, this.handlePointerUp_, this)); } } -<<<<<<< Updated upstream handlePointerMove_(e) { if (this.isMoving_(e)) { this.updateActivePointers_(e), this.dragging_ = !0; let t = new To(Eo.POINTERDRAG, this.map_, e, this.dragging_, void 0, this.activePointers_); this.dispatchEvent(t); -======= - handleClick_(e) { - e.preventDefault(), this.handleToggle_(), this.userCollapsed_ = this.collapsed_; - } - handleToggle_() { - this.element.classList.toggle(o), this.collapsed_ ? T(this.collapseLabel_, this.label_) : T(this.label_, this.collapseLabel_), this.collapsed_ = !this.collapsed_, this.toggleButton_.setAttribute("aria-expanded", String(!this.collapsed_)); - } - getCollapsible() { - return this.collapsible_; - } - setCollapsible(e) { - this.collapsible_ !== e && (this.collapsible_ = e, this.element.classList.toggle("ol-uncollapsible"), this.userCollapsed_ && this.handleToggle_()); - } - setCollapsed(e) { - this.userCollapsed_ = e, !(!this.collapsible_ || this.collapsed_ === e) && this.handleToggle_(); - } - getCollapsed() { - return this.collapsed_; - } - render(e) { - this.updateElement_(e.frameState); - } -}, va = class extends Te { - constructor(e) { - e ||= {}, super({ - element: document.createElement("div"), - render: e.render, - target: e.target - }); - let n = e.className === void 0 ? "ol-rotate" : e.className, i = e.label === void 0 ? "⇧" : e.label, o = e.compassClassName === void 0 ? "ol-compass" : e.compassClassName; - this.label_ = null, typeof i == "string" ? (this.label_ = document.createElement("span"), this.label_.className = o, this.label_.textContent = i) : (this.label_ = i, this.label_.classList.add(o)); - let s = e.tipLabel ? e.tipLabel : "Reset rotation", c = document.createElement("button"); - c.className = n + "-reset", c.setAttribute("type", "button"), c.title = s, c.appendChild(this.label_), c.addEventListener(M.CLICK, this.handleClick_.bind(this), !1); - let l = n + " " + r + " " + a, u = this.element; - u.className = l, u.appendChild(c), this.callResetNorth_ = e.resetNorth ? e.resetNorth : void 0, this.duration_ = e.duration === void 0 ? 250 : e.duration, this.autoHide_ = e.autoHide === void 0 || e.autoHide, this.rotation_ = void 0, this.autoHide_ && this.element.classList.add(t); - } - handleClick_(e) { - e.preventDefault(), this.callResetNorth_ === void 0 ? this.resetNorth_() : this.callResetNorth_(); - } - resetNorth_() { - let e = this.getMap().getView(); - if (!e) return; - let t = e.getRotation(); - t !== void 0 && (this.duration_ > 0 && t % (2 * Math.PI) != 0 ? e.animate({ - rotation: 0, - duration: this.duration_, - easing: Hr - }) : e.setRotation(0)); - } - render(e) { - let n = e.frameState; - if (!n) return; - let r = n.viewState.rotation; - if (r != this.rotation_) { - let e = "rotate(" + r + "rad)"; - if (this.autoHide_) { - let e = this.element.classList.contains(t); - !e && r === 0 ? this.element.classList.add(t) : e && r !== 0 && this.element.classList.remove(t); - } - this.label_.style.transform = e; ->>>>>>> Stashed changes } } -<<<<<<< Updated upstream -<<<<<<< Updated upstream relayMoveEvent_(e) { this.originalPointerMoveEvent_ = e; let t = !!(this.down_ && this.isMoving_(e)); this.dispatchEvent(new To(Eo.POINTERMOVE, this.map_, e, t)); -======= -======= ->>>>>>> Stashed changes -}, ya = class extends Te { - constructor(e) { - e ||= {}, super({ - element: document.createElement("div"), - target: e.target - }); - let t = e.className === void 0 ? "ol-zoom" : e.className, n = e.delta === void 0 ? 1 : e.delta, i = e.zoomInClassName === void 0 ? t + "-in" : e.zoomInClassName, o = e.zoomOutClassName === void 0 ? t + "-out" : e.zoomOutClassName, s = e.zoomInLabel === void 0 ? "+" : e.zoomInLabel, c = e.zoomOutLabel === void 0 ? "–" : e.zoomOutLabel, l = e.zoomInTipLabel === void 0 ? "Zoom in" : e.zoomInTipLabel, u = e.zoomOutTipLabel === void 0 ? "Zoom out" : e.zoomOutTipLabel, d = document.createElement("button"); - d.className = i, d.setAttribute("type", "button"), d.title = l, d.appendChild(typeof s == "string" ? document.createTextNode(s) : s), d.addEventListener(M.CLICK, this.handleClick_.bind(this, n), !1); - let f = document.createElement("button"); - f.className = o, f.setAttribute("type", "button"), f.title = u, f.appendChild(typeof c == "string" ? document.createTextNode(c) : c), f.addEventListener(M.CLICK, this.handleClick_.bind(this, -n), !1); - let p = t + " " + r + " " + a, m = this.element; - m.className = p, m.appendChild(d), m.appendChild(f), this.duration_ = e.duration === void 0 ? 250 : e.duration; ->>>>>>> Stashed changes } handleTouchMove_(e) { let t = this.originalPointerMoveEvent_; (!t || t.defaultPrevented) && (typeof e.cancelable != "boolean" || e.cancelable === !0) && e.preventDefault(); } -<<<<<<< Updated upstream isMoving_(e) { return this.dragging_ || Math.abs(e.clientX - this.down_.clientX) > this.moveTolerance_ || Math.abs(e.clientY - this.down_.clientY) > this.moveTolerance_; } @@ -5746,35 +4440,6 @@ function No(e, t, n, r, i) { //#endregion //#region node_modules/ol/Kinetic.js var Po = class { -======= - zoomByDelta_(e) { - let t = this.getMap().getView(); - if (!t) return; - let n = t.getZoom(); - if (n !== void 0) { - let r = t.getConstrainedZoom(n + e); - this.duration_ > 0 ? (t.getAnimating() && t.cancelAnimations(), t.animate({ - zoom: r, - duration: this.duration_, - easing: Hr - })) : t.setZoom(r); - } - } -}; -//#endregion -//#region node_modules/ol/control/defaults.js -function ba(e) { - e ||= {}; - let t = new Or(); - return (e.zoom === void 0 || e.zoom) && t.push(new ya(e.zoomOptions)), (e.rotate === void 0 || e.rotate) && t.push(new va(e.rotateOptions)), (e.attribution === void 0 || e.attribution) && t.push(new _a(e.attributionOptions)), t; -} -//#endregion -//#region node_modules/ol/Kinetic.js -var xa = class { -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes constructor(e, t, n) { this.decay_ = e, this.minVelocity_ = t, this.delay_ = n, this.points_ = [], this.angle_ = 0, this.initialVelocity_ = 0; } @@ -5801,28 +4466,12 @@ var xa = class { getAngle() { return this.angle_; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, Fo = { ACTIVE: "active" }, Io = class extends A { -======= -}, Sa = { ACTIVE: "active" }, Ca = class extends we { ->>>>>>> Stashed changes -======= -}, Sa = { ACTIVE: "active" }, Ca = class extends we { ->>>>>>> Stashed changes constructor(e) { super(), this.on, this.once, this.un, e && e.handleEvent && (this.handleEvent = e.handleEvent), this.map_ = null, this.setActive(!0); } getActive() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return this.get(Fo.ACTIVE); -======= - return this.get(Sa.ACTIVE); ->>>>>>> Stashed changes -======= - return this.get(Sa.ACTIVE); ->>>>>>> Stashed changes } getMap() { return this.map_; @@ -5831,56 +4480,24 @@ var xa = class { return !0; } setActive(e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.set(Fo.ACTIVE, e); -======= - this.set(Sa.ACTIVE, e); ->>>>>>> Stashed changes -======= - this.set(Sa.ACTIVE, e); ->>>>>>> Stashed changes } setMap(e) { this.map_ = e; } }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Lo(e, t, n) { -======= -function wa(e, t, n) { ->>>>>>> Stashed changes -======= -function wa(e, t, n) { ->>>>>>> Stashed changes let r = e.getCenterInternal(); if (r) { let i = [r[0] + t[0], r[1] + t[1]]; e.animateInternal({ duration: n === void 0 ? 250 : n, -<<<<<<< Updated upstream -<<<<<<< Updated upstream easing: Ne, -======= - easing: Wr, ->>>>>>> Stashed changes -======= - easing: Wr, ->>>>>>> Stashed changes center: e.getConstrainedCenter(i) }); } } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Ro(e, t, n, r) { -======= -function Ta(e, t, n, r) { ->>>>>>> Stashed changes -======= -function Ta(e, t, n, r) { ->>>>>>> Stashed changes let i = e.getZoom(); if (i === void 0) return; let a = e.getConstrainedZoom(i + t), o = e.getResolutionForZoom(a); @@ -5888,28 +4505,12 @@ function Ta(e, t, n, r) { resolution: o, anchor: n, duration: r === void 0 ? 250 : r, -<<<<<<< Updated upstream -<<<<<<< Updated upstream easing: je -======= - easing: Hr ->>>>>>> Stashed changes -======= - easing: Hr ->>>>>>> Stashed changes }); } //#endregion //#region node_modules/ol/interaction/DoubleClickZoom.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var zo = class extends Io { -======= -var Ea = class extends Ca { ->>>>>>> Stashed changes -======= -var Ea = class extends Ca { ->>>>>>> Stashed changes constructor(e) { super(), e ||= {}, this.delta_ = e.delta ? e.delta : 1, this.duration_ = e.duration === void 0 ? 250 : e.duration; } @@ -5917,30 +4518,14 @@ var Ea = class extends Ca { let t = !1; if (e.type == Eo.DBLCLICK) { let n = e.originalEvent, r = e.map, i = e.coordinate, a = n.shiftKey ? -this.delta_ : this.delta_; -<<<<<<< Updated upstream -<<<<<<< Updated upstream Ro(r.getView(), a, i, this.duration_), n.preventDefault(), t = !0; -======= - Ta(r.getView(), a, i, this.duration_), n.preventDefault(), t = !0; ->>>>>>> Stashed changes -======= - Ta(r.getView(), a, i, this.duration_), n.preventDefault(), t = !0; ->>>>>>> Stashed changes } return !t; } }; //#endregion //#region node_modules/ol/events/condition.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Bo(e) { -======= -function Da(e) { ->>>>>>> Stashed changes -======= -function Da(e) { ->>>>>>> Stashed changes let t = arguments; return function(e) { let n = !0; @@ -5948,8 +4533,6 @@ function Da(e) { return n; }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream var Vo = function(e) { let t = e.originalEvent; return t.altKey && !(t.metaKey || t.ctrlKey) && t.shiftKey; @@ -5978,76 +4561,9 @@ var Vo = function(e) { let t = e.originalEvent; return "pointerId" in t && t.pointerType == "mouse"; }, Zo = function(e) { -======= -var Oa = function(e) { - let t = e.originalEvent; - return t.altKey && !(t.metaKey || t.ctrlKey) && t.shiftKey; -}, ka = function(e) { - let t = e.map.getTargetElement(), n = t.getRootNode(), r = e.map.getOwnerDocument().activeElement; - return n instanceof ShadowRoot ? n.host.contains(r) : t.contains(r); -}, Aa = function(e) { - let t = e.map.getTargetElement(), n = t.getRootNode(); - return !(n instanceof ShadowRoot ? n.host : t).hasAttribute("tabindex") || ka(e); -}, ja = pe, Ma = function(e) { - let t = e.originalEvent; - return "pointerId" in t && t.button == 0 && !(p && m && t.ctrlKey); -}, Na = function(e) { - let t = e.originalEvent; - return !t.altKey && !(t.metaKey || t.ctrlKey) && !t.shiftKey; -}, Pa = function(e) { - let t = e.originalEvent; - return m ? t.metaKey : t.ctrlKey; -}, Fa = function(e) { - let t = e.originalEvent; - return !t.altKey && !(t.metaKey || t.ctrlKey) && t.shiftKey; -}, Ia = function(e) { - let t = e.originalEvent, n = t.target.tagName; - return n !== "INPUT" && n !== "SELECT" && n !== "TEXTAREA" && !t.target.isContentEditable; -======= -var Oa = function(e) { - let t = e.originalEvent; - return t.altKey && !(t.metaKey || t.ctrlKey) && t.shiftKey; -}, ka = function(e) { - let t = e.map.getTargetElement(), n = t.getRootNode(), r = e.map.getOwnerDocument().activeElement; - return n instanceof ShadowRoot ? n.host.contains(r) : t.contains(r); -}, Aa = function(e) { - let t = e.map.getTargetElement(), n = t.getRootNode(); - return !(n instanceof ShadowRoot ? n.host : t).hasAttribute("tabindex") || ka(e); -}, ja = pe, Ma = function(e) { - let t = e.originalEvent; - return "pointerId" in t && t.button == 0 && !(p && m && t.ctrlKey); -}, Na = function(e) { - let t = e.originalEvent; - return !t.altKey && !(t.metaKey || t.ctrlKey) && !t.shiftKey; -}, Pa = function(e) { - let t = e.originalEvent; - return m ? t.metaKey : t.ctrlKey; -}, Fa = function(e) { - let t = e.originalEvent; - return !t.altKey && !(t.metaKey || t.ctrlKey) && t.shiftKey; -}, Ia = function(e) { - let t = e.originalEvent, n = t.target.tagName; - return n !== "INPUT" && n !== "SELECT" && n !== "TEXTAREA" && !t.target.isContentEditable; ->>>>>>> Stashed changes -}, La = function(e) { ->>>>>>> Stashed changes - let t = e.originalEvent; - return "pointerId" in t && t.pointerType == "mouse"; -}, Ra = function(e) { - let t = e.originalEvent; - return "pointerId" in t && t.pointerType == "mouse"; -}, Ra = function(e) { let t = e.originalEvent; return "pointerId" in t && t.isPrimary && t.button === 0; -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, Qo = class extends Io { -======= -}, za = class extends Ca { ->>>>>>> Stashed changes -======= -}, za = class extends Ca { ->>>>>>> Stashed changes constructor(e) { e ||= {}, super(e), e.handleDownEvent && (this.handleDownEvent = e.handleDownEvent), e.handleDragEvent && (this.handleDragEvent = e.handleDragEvent), e.handleMoveEvent && (this.handleMoveEvent = e.handleMoveEvent), e.handleUpEvent && (this.handleUpEvent = e.handleUpEvent), e.stopDown && (this.stopDown = e.stopDown), this.handlingDownUpSequence = !1, this.targetPointers = []; } @@ -6084,15 +4600,7 @@ var Oa = function(e) { e.activePointers && (this.targetPointers = e.activePointers); } }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream function $o(e) { -======= -function Ba(e) { ->>>>>>> Stashed changes -======= -function Ba(e) { ->>>>>>> Stashed changes let t = e.length, n = 0, r = 0; for (let i = 0; i < t; i++) n += e[i].clientX, r += e[i].clientY; return { @@ -6102,38 +4610,16 @@ function Ba(e) { } //#endregion //#region node_modules/ol/interaction/DragPan.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var es = class extends Qo { constructor(e) { super({ stopDown: v }), e ||= {}, this.kinetic_ = e.kinetic, this.lastCentroid = null, this.lastPointersCount_, this.panning_ = !1; let t = e.condition ? e.condition : Bo(Ko, Zo); this.condition_ = e.onFocusOnly ? Bo(Uo, t) : t, this.noKinetic_ = !1; -======= -======= ->>>>>>> Stashed changes -var Va = class extends za { - constructor(e) { - super({ stopDown: me }), e ||= {}, this.kinetic_ = e.kinetic, this.lastCentroid = null, this.lastPointersCount_, this.panning_ = !1; - let t = e.condition ? e.condition : Da(Na, Ra); - this.condition_ = e.onFocusOnly ? Da(Aa, t) : t, this.noKinetic_ = !1; -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes } handleDragEvent(e) { let t = e.map; this.panning_ || (this.panning_ = !0, t.getView().beginInteraction()); -<<<<<<< Updated upstream -<<<<<<< Updated upstream let n = this.targetPointers, r = t.getEventPixel($o(n)); -======= - let n = this.targetPointers, r = t.getEventPixel(Ba(n)); ->>>>>>> Stashed changes -======= - let n = this.targetPointers, r = t.getEventPixel(Ba(n)); ->>>>>>> Stashed changes if (n.length == this.lastPointersCount_) { if (this.kinetic_ && this.kinetic_.update(r[0], r[1]), this.lastCentroid) { let t = [this.lastCentroid[0] - r[0], r[1] - this.lastCentroid[1]], n = e.map.getView(); @@ -6150,15 +4636,7 @@ var Va = class extends za { n.animateInternal({ center: n.getConstrainedCenter(o), duration: 500, -<<<<<<< Updated upstream -<<<<<<< Updated upstream easing: je -======= - easing: Hr ->>>>>>> Stashed changes -======= - easing: Hr ->>>>>>> Stashed changes }); } return this.panning_ && (this.panning_ = !1, n.endInteraction()), !1; @@ -6172,8 +4650,6 @@ var Va = class extends za { } return !1; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, ts = class extends Qo { constructor(e) { e ||= {}, super({ stopDown: v }), this.condition_ = e.condition ? e.condition : Vo, this.lastAngle_ = void 0, this.duration_ = e.duration === void 0 ? 250 : e.duration; @@ -6182,26 +4658,6 @@ var Va = class extends za { if (!Xo(e)) return; let t = e.map, n = t.getView(); if (n.getConstraints().rotation === ao) return; -======= -}, Ha = class extends za { - constructor(e) { - e ||= {}, super({ stopDown: me }), this.condition_ = e.condition ? e.condition : Oa, this.lastAngle_ = void 0, this.duration_ = e.duration === void 0 ? 250 : e.duration; - } - handleDragEvent(e) { - if (!La(e)) return; - let t = e.map, n = t.getView(); - if (n.getConstraints().rotation === aa) return; ->>>>>>> Stashed changes -======= -}, Ha = class extends za { - constructor(e) { - e ||= {}, super({ stopDown: me }), this.condition_ = e.condition ? e.condition : Oa, this.lastAngle_ = void 0, this.duration_ = e.duration === void 0 ? 250 : e.duration; - } - handleDragEvent(e) { - if (!La(e)) return; - let t = e.map, n = t.getView(); - if (n.getConstraints().rotation === aa) return; ->>>>>>> Stashed changes let r = t.getSize(), i = e.pixel, a = Math.atan2(r[1] / 2 - i[1], i[0] - r[0] / 2); if (this.lastAngle_ !== void 0) { let e = a - this.lastAngle_; @@ -6210,30 +4666,12 @@ var Va = class extends za { this.lastAngle_ = a; } handleUpEvent(e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return !Xo(e) || (e.map.getView().endInteraction(this.duration_), !1); } handleDownEvent(e) { return Xo(e) && Go(e) && this.condition_(e) ? (e.map.getView().beginInteraction(), this.lastAngle_ = void 0, !0) : !1; } }, ns = class extends c { -======= - return !La(e) || (e.map.getView().endInteraction(this.duration_), !1); - } - handleDownEvent(e) { - return La(e) && Ma(e) && this.condition_(e) ? (e.map.getView().beginInteraction(), this.lastAngle_ = void 0, !0) : !1; - } -}, Ua = class extends ie { ->>>>>>> Stashed changes -======= - return !La(e) || (e.map.getView().endInteraction(this.duration_), !1); - } - handleDownEvent(e) { - return La(e) && Ma(e) && this.condition_(e) ? (e.map.getView().beginInteraction(), this.lastAngle_ = void 0, !0) : !1; - } -}, Ua = class extends ie { ->>>>>>> Stashed changes constructor(e) { super(), this.geometry_ = null, this.element_ = document.createElement("div"), this.element_.style.position = "absolute", this.element_.style.pointerEvents = "auto", this.element_.className = "ol-box " + e, this.map_ = null, this.startPixel_ = null, this.endPixel_ = null; } @@ -6263,34 +4701,16 @@ var Va = class extends za { t, [t[0], e[1]] ].map(this.map_.getCoordinateFromPixelInternal, this.map_); -<<<<<<< Updated upstream -<<<<<<< Updated upstream n[4] = n[0].slice(), this.geometry_ ? this.geometry_.setCoordinates([n]) : this.geometry_ = new Qa([n]); -======= - n[4] = n[0].slice(), this.geometry_ ? this.geometry_.setCoordinates([n]) : this.geometry_ = new Qi([n]); ->>>>>>> Stashed changes -======= - n[4] = n[0].slice(), this.geometry_ ? this.geometry_.setCoordinates([n]) : this.geometry_ = new Qi([n]); ->>>>>>> Stashed changes } getGeometry() { return this.geometry_; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, rs = { -======= -}, Wa = { ->>>>>>> Stashed changes -======= -}, Wa = { ->>>>>>> Stashed changes BOXSTART: "boxstart", BOXDRAG: "boxdrag", BOXEND: "boxend", BOXCANCEL: "boxcancel" -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, is = class extends S { constructor(e, t, n) { super(e), this.coordinate = t, this.mapBrowserEvent = n; @@ -6298,24 +4718,6 @@ var Va = class extends za { }, as = class extends Qo { constructor(e) { super(), this.on, this.once, this.un, e ??= {}, this.box_ = new ns(e.className || "ol-dragbox"), this.minArea_ = e.minArea ?? 64, e.onBoxEnd && (this.onBoxEnd = e.onBoxEnd), this.startPixel_ = null, this.condition_ = e.condition ?? Go, this.boxEndCondition_ = e.boxEndCondition ?? this.defaultBoxEndCondition; -======= -}, Ga = class extends ve { - constructor(e, t, n) { - super(e), this.coordinate = t, this.mapBrowserEvent = n; - } -}, Ka = class extends za { - constructor(e) { - super(), this.on, this.once, this.un, e ??= {}, this.box_ = new Ua(e.className || "ol-dragbox"), this.minArea_ = e.minArea ?? 64, e.onBoxEnd && (this.onBoxEnd = e.onBoxEnd), this.startPixel_ = null, this.condition_ = e.condition ?? Ma, this.boxEndCondition_ = e.boxEndCondition ?? this.defaultBoxEndCondition; ->>>>>>> Stashed changes -======= -}, Ga = class extends ve { - constructor(e, t, n) { - super(e), this.coordinate = t, this.mapBrowserEvent = n; - } -}, Ka = class extends za { - constructor(e) { - super(), this.on, this.once, this.un, e ??= {}, this.box_ = new Ua(e.className || "ol-dragbox"), this.minArea_ = e.minArea ?? 64, e.onBoxEnd && (this.onBoxEnd = e.onBoxEnd), this.startPixel_ = null, this.condition_ = e.condition ?? Ma, this.boxEndCondition_ = e.boxEndCondition ?? this.defaultBoxEndCondition; ->>>>>>> Stashed changes } defaultBoxEndCondition(e, t, n) { let r = n[0] - t[0], i = n[1] - t[1]; @@ -6325,21 +4727,11 @@ var Va = class extends za { return this.box_.getGeometry(); } handleDragEvent(e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.startPixel_ && (this.box_.setPixels(this.startPixel_, e.pixel), this.dispatchEvent(new is(rs.BOXDRAG, e.coordinate, e))); -======= - this.startPixel_ && (this.box_.setPixels(this.startPixel_, e.pixel), this.dispatchEvent(new Ga(Wa.BOXDRAG, e.coordinate, e))); ->>>>>>> Stashed changes -======= - this.startPixel_ && (this.box_.setPixels(this.startPixel_, e.pixel), this.dispatchEvent(new Ga(Wa.BOXDRAG, e.coordinate, e))); ->>>>>>> Stashed changes } handleUpEvent(e) { if (!this.startPixel_) return !1; let t = this.boxEndCondition_(e, this.startPixel_, e.pixel); -<<<<<<< Updated upstream -<<<<<<< Updated upstream return t && this.onBoxEnd(e), this.dispatchEvent(new is(t ? rs.BOXEND : rs.BOXCANCEL, e.coordinate, e)), this.box_.setMap(null), this.startPixel_ = null, !1; } handleDownEvent(e) { @@ -6356,42 +4748,6 @@ var Va = class extends za { constructor(e) { e ||= {}; let t = e.condition ? e.condition : Jo; -======= - return t && this.onBoxEnd(e), this.dispatchEvent(new Ga(t ? Wa.BOXEND : Wa.BOXCANCEL, e.coordinate, e)), this.box_.setMap(null), this.startPixel_ = null, !1; - } - handleDownEvent(e) { - return this.condition_(e) ? (this.startPixel_ = e.pixel, this.box_.setMap(e.map), this.box_.setPixels(this.startPixel_, this.startPixel_), this.dispatchEvent(new Ga(Wa.BOXSTART, e.coordinate, e)), !0) : !1; - } - onBoxEnd(e) {} - setActive(e) { - e || (this.box_.setMap(null), this.startPixel_ &&= (this.dispatchEvent(new Ga(Wa.BOXCANCEL, this.startPixel_, null)), null)), super.setActive(e); - } - setMap(e) { - this.getMap() && (this.box_.setMap(null), this.startPixel_ &&= (this.dispatchEvent(new Ga(Wa.BOXCANCEL, this.startPixel_, null)), null)), super.setMap(e); - } -}, qa = class extends Ka { - constructor(e) { - e ||= {}; - let t = e.condition ? e.condition : Fa; ->>>>>>> Stashed changes -======= - return t && this.onBoxEnd(e), this.dispatchEvent(new Ga(t ? Wa.BOXEND : Wa.BOXCANCEL, e.coordinate, e)), this.box_.setMap(null), this.startPixel_ = null, !1; - } - handleDownEvent(e) { - return this.condition_(e) ? (this.startPixel_ = e.pixel, this.box_.setMap(e.map), this.box_.setPixels(this.startPixel_, this.startPixel_), this.dispatchEvent(new Ga(Wa.BOXSTART, e.coordinate, e)), !0) : !1; - } - onBoxEnd(e) {} - setActive(e) { - e || (this.box_.setMap(null), this.startPixel_ &&= (this.dispatchEvent(new Ga(Wa.BOXCANCEL, this.startPixel_, null)), null)), super.setActive(e); - } - setMap(e) { - this.getMap() && (this.box_.setMap(null), this.startPixel_ &&= (this.dispatchEvent(new Ga(Wa.BOXCANCEL, this.startPixel_, null)), null)), super.setMap(e); - } -}, qa = class extends Ka { - constructor(e) { - e ||= {}; - let t = e.condition ? e.condition : Fa; ->>>>>>> Stashed changes super({ condition: t, className: e.className || "ol-dragzoom", @@ -6406,95 +4762,37 @@ var Va = class extends za { } t.fitInternal(n, { duration: this.duration_, -<<<<<<< Updated upstream -<<<<<<< Updated upstream easing: je }); } }, ss = { -======= - easing: Hr - }); - } -}, Ja = { ->>>>>>> Stashed changes -======= - easing: Hr - }); - } -}, Ja = { ->>>>>>> Stashed changes LEFT: "ArrowLeft", UP: "ArrowUp", RIGHT: "ArrowRight", DOWN: "ArrowDown" -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, cs = class extends Io { constructor(e) { super(), e ||= {}, this.defaultCondition_ = function(e) { return Ko(e) && Yo(e); -======= -}, Ya = class extends Ca { - constructor(e) { - super(), e ||= {}, this.defaultCondition_ = function(e) { - return Na(e) && Ia(e); ->>>>>>> Stashed changes -======= -}, Ya = class extends Ca { - constructor(e) { - super(), e ||= {}, this.defaultCondition_ = function(e) { - return Na(e) && Ia(e); ->>>>>>> Stashed changes }, this.condition_ = e.condition === void 0 ? this.defaultCondition_ : e.condition, this.duration_ = e.duration === void 0 ? 100 : e.duration, this.pixelDelta_ = e.pixelDelta === void 0 ? 128 : e.pixelDelta; } handleEvent(e) { let t = !1; if (e.type == s.KEYDOWN) { let n = e.originalEvent, r = n.key; -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (this.condition_(e) && (r == ss.DOWN || r == ss.LEFT || r == ss.RIGHT || r == ss.UP)) { let i = e.map.getView(), a = i.getResolution() * this.pixelDelta_, o = 0, s = 0; r == ss.DOWN ? s = -a : r == ss.LEFT ? o = -a : r == ss.RIGHT ? o = a : s = a; let c = [o, s]; tn(c, i.getRotation()), Lo(i, c, this.duration_), n.preventDefault(), t = !0; -======= - if (this.condition_(e) && (r == Ja.DOWN || r == Ja.LEFT || r == Ja.RIGHT || r == Ja.UP)) { - let i = e.map.getView(), a = i.getResolution() * this.pixelDelta_, o = 0, s = 0; - r == Ja.DOWN ? s = -a : r == Ja.LEFT ? o = -a : r == Ja.RIGHT ? o = a : s = a; - let c = [o, s]; - Lt(c, i.getRotation()), wa(i, c, this.duration_), n.preventDefault(), t = !0; ->>>>>>> Stashed changes -======= - if (this.condition_(e) && (r == Ja.DOWN || r == Ja.LEFT || r == Ja.RIGHT || r == Ja.UP)) { - let i = e.map.getView(), a = i.getResolution() * this.pixelDelta_, o = 0, s = 0; - r == Ja.DOWN ? s = -a : r == Ja.LEFT ? o = -a : r == Ja.RIGHT ? o = a : s = a; - let c = [o, s]; - Lt(c, i.getRotation()), wa(i, c, this.duration_), n.preventDefault(), t = !0; ->>>>>>> Stashed changes } } return !t; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, ls = class extends Io { constructor(e) { super(), e ||= {}, this.condition_ = e.condition ? e.condition : function(e) { return !qo(e) && Yo(e); -======= -}, Xa = class extends Ca { - constructor(e) { - super(), e ||= {}, this.condition_ = e.condition ? e.condition : function(e) { - return !Pa(e) && Ia(e); ->>>>>>> Stashed changes -======= -}, Xa = class extends Ca { - constructor(e) { - super(), e ||= {}, this.condition_ = e.condition ? e.condition : function(e) { - return !Pa(e) && Ia(e); ->>>>>>> Stashed changes }, this.delta_ = e.delta ? e.delta : 1, this.duration_ = e.duration === void 0 ? 100 : e.duration; } handleEvent(e) { @@ -6503,40 +4801,16 @@ var Va = class extends za { let n = e.originalEvent, r = n.key; if (this.condition_(e) && (r === "+" || r === "-")) { let i = e.map, a = r === "+" ? this.delta_ : -this.delta_; -<<<<<<< Updated upstream -<<<<<<< Updated upstream Ro(i.getView(), a, void 0, this.duration_), n.preventDefault(), t = !0; -======= - Ta(i.getView(), a, void 0, this.duration_), n.preventDefault(), t = !0; ->>>>>>> Stashed changes -======= - Ta(i.getView(), a, void 0, this.duration_), n.preventDefault(), t = !0; ->>>>>>> Stashed changes } } return !t; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, us = 40, ds = 300, fs = 3, ps = class extends Io { constructor(e) { e ||= {}, super(e), this.totalDelta_ = 0, this.lastDelta_ = 0, this.maxDelta_ = e.maxDelta === void 0 ? 1 : e.maxDelta, this.duration_ = e.duration === void 0 ? 250 : e.duration, this.timeout_ = e.timeout === void 0 ? 80 : e.timeout, this.useAnchor_ = e.useAnchor === void 0 || e.useAnchor, this.constrainResolution_ = e.constrainResolution !== void 0 && e.constrainResolution; let t = e.condition ? e.condition : Wo; this.condition_ = e.onFocusOnly ? Bo(Uo, t) : t, this.lastAnchor_ = null, this.startTime_ = void 0, this.timeoutId_, this.mode_ = void 0, this.trackpadEventGap_ = 400, this.trackpadTimeoutId_, this.deltaPerZoom_ = 300, this.ctrlKeyPressed_ = !1, this.ctrlKeyListenerKeys_ = []; -======= -}, Za = 40, Qa = 300, $a = 3, eo = class extends Ca { - constructor(e) { - e ||= {}, super(e), this.totalDelta_ = 0, this.lastDelta_ = 0, this.maxDelta_ = e.maxDelta === void 0 ? 1 : e.maxDelta, this.duration_ = e.duration === void 0 ? 250 : e.duration, this.timeout_ = e.timeout === void 0 ? 80 : e.timeout, this.useAnchor_ = e.useAnchor === void 0 || e.useAnchor, this.constrainResolution_ = e.constrainResolution !== void 0 && e.constrainResolution; - let t = e.condition ? e.condition : ja; - this.condition_ = e.onFocusOnly ? Da(Aa, t) : t, this.lastAnchor_ = null, this.startTime_ = void 0, this.timeoutId_, this.mode_ = void 0, this.trackpadEventGap_ = 400, this.trackpadTimeoutId_, this.deltaPerZoom_ = 300, this.ctrlKeyPressed_ = !1, this.ctrlKeyListenerKeys_ = []; ->>>>>>> Stashed changes -======= -}, Za = 40, Qa = 300, $a = 3, eo = class extends Ca { - constructor(e) { - e ||= {}, super(e), this.totalDelta_ = 0, this.lastDelta_ = 0, this.maxDelta_ = e.maxDelta === void 0 ? 1 : e.maxDelta, this.duration_ = e.duration === void 0 ? 250 : e.duration, this.timeout_ = e.timeout === void 0 ? 80 : e.timeout, this.useAnchor_ = e.useAnchor === void 0 || e.useAnchor, this.constrainResolution_ = e.constrainResolution !== void 0 && e.constrainResolution; - let t = e.condition ? e.condition : ja; - this.condition_ = e.onFocusOnly ? Da(Aa, t) : t, this.lastAnchor_ = null, this.startTime_ = void 0, this.timeoutId_, this.mode_ = void 0, this.trackpadEventGap_ = 400, this.trackpadTimeoutId_, this.deltaPerZoom_ = 300, this.ctrlKeyPressed_ = !1, this.ctrlKeyListenerKeys_ = []; ->>>>>>> Stashed changes } setMap(e) { if (this.ctrlKeyListenerKeys_.forEach(o), this.ctrlKeyListenerKeys_.length = 0, this.ctrlKeyPressed_ = !1, super.setMap(e), e) { @@ -6564,36 +4838,16 @@ var Va = class extends za { let i = n.deltaY; switch (n.deltaMode) { case WheelEvent.DOM_DELTA_LINE: -<<<<<<< Updated upstream -<<<<<<< Updated upstream i *= us; break; case WheelEvent.DOM_DELTA_PAGE: i *= ds; -======= - i *= Za; - break; - case WheelEvent.DOM_DELTA_PAGE: i *= Qa; ->>>>>>> Stashed changes -======= - i *= Za; - break; - case WheelEvent.DOM_DELTA_PAGE: i *= Qa; ->>>>>>> Stashed changes } if (i === 0) return !1; this.lastDelta_ = i; let a = Date.now(); this.startTime_ === void 0 && (this.startTime_ = a), (!this.mode_ || a - this.startTime_ > this.trackpadEventGap_) && (this.mode_ = Math.abs(i) < 4 ? "trackpad" : "wheel"); let o = t.getView(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (this.mode_ === "trackpad") return this.trackpadTimeoutId_ ? clearTimeout(this.trackpadTimeoutId_) : (o.getAnimating() && o.cancelAnimations(), o.beginInteraction()), this.trackpadTimeoutId_ = setTimeout(this.endInteraction_.bind(this), this.timeout_), r && (i *= fs), o.adjustZoom(-i / this.deltaPerZoom_, this.lastAnchor_ ? t.getCoordinateFromPixel(this.lastAnchor_) : null), this.startTime_ = a, !1; -======= - if (this.mode_ === "trackpad") return this.trackpadTimeoutId_ ? clearTimeout(this.trackpadTimeoutId_) : (o.getAnimating() && o.cancelAnimations(), o.beginInteraction()), this.trackpadTimeoutId_ = setTimeout(this.endInteraction_.bind(this), this.timeout_), r && (i *= $a), o.adjustZoom(-i / this.deltaPerZoom_, this.lastAnchor_ ? t.getCoordinateFromPixel(this.lastAnchor_) : null), this.startTime_ = a, !1; ->>>>>>> Stashed changes -======= - if (this.mode_ === "trackpad") return this.trackpadTimeoutId_ ? clearTimeout(this.trackpadTimeoutId_) : (o.getAnimating() && o.cancelAnimations(), o.beginInteraction()), this.trackpadTimeoutId_ = setTimeout(this.endInteraction_.bind(this), this.timeout_), r && (i *= $a), o.adjustZoom(-i / this.deltaPerZoom_, this.lastAnchor_ ? t.getCoordinateFromPixel(this.lastAnchor_) : null), this.startTime_ = a, !1; ->>>>>>> Stashed changes this.totalDelta_ += i; let c = Math.max(this.timeout_ - (a - this.startTime_), 0); return clearTimeout(this.timeoutId_), this.timeoutId_ = setTimeout(this.handleWheelZoom_.bind(this, t), c), !1; @@ -6601,29 +4855,13 @@ var Va = class extends za { handleWheelZoom_(e) { let t = e.getView(); t.getAnimating() && t.cancelAnimations(); -<<<<<<< Updated upstream let n = -Bt(this.totalDelta_, -this.maxDelta_ * this.deltaPerZoom_, this.maxDelta_ * this.deltaPerZoom_) / this.deltaPerZoom_; (t.getConstrainResolution() || this.constrainResolution_) && (n = n ? n > 0 ? 1 : -1 : 0), Ro(t, n, this.lastAnchor_ ? e.getCoordinateFromPixel(this.lastAnchor_) : null, this.duration_), this.mode_ = void 0, this.totalDelta_ = 0, this.lastAnchor_ = null, this.startTime_ = void 0, this.timeoutId_ = void 0; -======= - let n = -St(this.totalDelta_, -this.maxDelta_ * this.deltaPerZoom_, this.maxDelta_ * this.deltaPerZoom_) / this.deltaPerZoom_; - (t.getConstrainResolution() || this.constrainResolution_) && (n = n ? n > 0 ? 1 : -1 : 0), Ta(t, n, this.lastAnchor_ ? e.getCoordinateFromPixel(this.lastAnchor_) : null, this.duration_), this.mode_ = void 0, this.totalDelta_ = 0, this.lastAnchor_ = null, this.startTime_ = void 0, this.timeoutId_ = void 0; -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes } setMouseAnchor(e) { this.useAnchor_ = e, e || (this.lastAnchor_ = null); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, ms = class extends Qo { -======= -}, to = class extends za { ->>>>>>> Stashed changes -======= -}, to = class extends za { ->>>>>>> Stashed changes constructor(e) { e ||= {}; let t = e; @@ -6637,15 +4875,7 @@ var Va = class extends za { } this.lastAngle_ = i; let a = e.map, o = a.getView(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream o.getConstraints().rotation !== ao && (this.anchor_ = a.getCoordinateFromPixelInternal(a.getEventPixel($o(this.targetPointers))), this.rotating_ && (a.render(), o.adjustRotationInternal(t, this.anchor_))); -======= - o.getConstraints().rotation !== aa && (this.anchor_ = a.getCoordinateFromPixelInternal(a.getEventPixel(Ba(this.targetPointers))), this.rotating_ && (a.render(), o.adjustRotationInternal(t, this.anchor_))); ->>>>>>> Stashed changes -======= - o.getConstraints().rotation !== aa && (this.anchor_ = a.getCoordinateFromPixelInternal(a.getEventPixel(Ba(this.targetPointers))), this.rotating_ && (a.render(), o.adjustRotationInternal(t, this.anchor_))); ->>>>>>> Stashed changes } handleUpEvent(e) { return this.targetPointers.length < 2 ? (e.map.getView().endInteraction(this.duration_), !1) : !0; @@ -6657,15 +4887,7 @@ var Va = class extends za { } return !1; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, hs = class extends Qo { -======= -}, no = class extends za { ->>>>>>> Stashed changes -======= -}, no = class extends za { ->>>>>>> Stashed changes constructor(e) { e ||= {}; let t = e; @@ -6675,15 +4897,7 @@ var Va = class extends za { let t = 1, n = this.targetPointers[0], r = this.targetPointers[1], i = n.clientX - r.clientX, a = n.clientY - r.clientY, o = Math.sqrt(i * i + a * a); this.lastDistance_ !== void 0 && (t = this.lastDistance_ / o), this.lastDistance_ = o; let s = e.map, c = s.getView(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream t != 1 && (this.lastScaleDelta_ = t), this.anchor_ = s.getCoordinateFromPixelInternal(s.getEventPixel($o(this.targetPointers))), s.render(), c.adjustResolutionInternal(t, this.anchor_); -======= - t != 1 && (this.lastScaleDelta_ = t), this.anchor_ = s.getCoordinateFromPixelInternal(s.getEventPixel(Ba(this.targetPointers))), s.render(), c.adjustResolutionInternal(t, this.anchor_); ->>>>>>> Stashed changes -======= - t != 1 && (this.lastScaleDelta_ = t), this.anchor_ = s.getCoordinateFromPixelInternal(s.getEventPixel(Ba(this.targetPointers))), s.render(), c.adjustResolutionInternal(t, this.anchor_); ->>>>>>> Stashed changes } handleUpEvent(e) { if (this.targetPointers.length < 2) { @@ -6702,8 +4916,6 @@ var Va = class extends za { }; //#endregion //#region node_modules/ol/interaction/defaults.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function gs(e) { e ||= {}; let t = new N(), n = new Po(-.005, .05, 100); @@ -6731,168 +4943,17 @@ var _s = { super(e), this.layer = t; } }, ys = { LAYERS: "layers" }, bs = class r extends vo { -======= -function ro(e) { - e ||= {}; - let t = new Or(), n = new xa(-.005, .05, 100); - return (e.altShiftDragRotate === void 0 || e.altShiftDragRotate) && t.push(new Ha()), (e.doubleClickZoom === void 0 || e.doubleClickZoom) && t.push(new Ea({ - delta: e.zoomDelta, - duration: e.zoomDuration - })), (e.dragPan === void 0 || e.dragPan) && t.push(new Va({ - onFocusOnly: e.onFocusOnly, - kinetic: n - })), (e.pinchRotate === void 0 || e.pinchRotate) && t.push(new to()), (e.pinchZoom === void 0 || e.pinchZoom) && t.push(new no({ duration: e.zoomDuration })), (e.keyboard === void 0 || e.keyboard) && (t.push(new Ya()), t.push(new Xa({ - delta: e.zoomDelta, - duration: e.zoomDuration - }))), (e.mouseWheelZoom === void 0 || e.mouseWheelZoom) && t.push(new eo({ - onFocusOnly: e.onFocusOnly, - duration: e.zoomDuration -======= -function ro(e) { - e ||= {}; - let t = new Or(), n = new xa(-.005, .05, 100); - return (e.altShiftDragRotate === void 0 || e.altShiftDragRotate) && t.push(new Ha()), (e.doubleClickZoom === void 0 || e.doubleClickZoom) && t.push(new Ea({ - delta: e.zoomDelta, - duration: e.zoomDuration - })), (e.dragPan === void 0 || e.dragPan) && t.push(new Va({ - onFocusOnly: e.onFocusOnly, - kinetic: n - })), (e.pinchRotate === void 0 || e.pinchRotate) && t.push(new to()), (e.pinchZoom === void 0 || e.pinchZoom) && t.push(new no({ duration: e.zoomDuration })), (e.keyboard === void 0 || e.keyboard) && (t.push(new Ya()), t.push(new Xa({ - delta: e.zoomDelta, - duration: e.zoomDuration - }))), (e.mouseWheelZoom === void 0 || e.mouseWheelZoom) && t.push(new eo({ - onFocusOnly: e.onFocusOnly, - duration: e.zoomDuration ->>>>>>> Stashed changes - })), (e.shiftDragZoom === void 0 || e.shiftDragZoom) && t.push(new qa({ duration: e.zoomDuration })), t; -} -//#endregion -//#region node_modules/ol/layer/Property.js -var B = { - OPACITY: "opacity", - VISIBLE: "visible", - EXTENT: "extent", - Z_INDEX: "zIndex", - MAX_RESOLUTION: "maxResolution", - MIN_RESOLUTION: "minResolution", - MAX_ZOOM: "maxZoom", - MIN_ZOOM: "minZoom", - SOURCE: "source", - MAP: "map" -}, io = class extends we { - constructor(e) { - super(), this.on, this.once, this.un, this.background_ = e.background; - let t = Object.assign({}, e); - typeof e.properties == "object" && (delete t.properties, Object.assign(t, e.properties)), t[B.OPACITY] = e.opacity === void 0 ? 1 : e.opacity, R(typeof t[B.OPACITY] == "number", "Layer opacity must be a number"), t[B.VISIBLE] = e.visible === void 0 || e.visible, t[B.Z_INDEX] = e.zIndex, t[B.MAX_RESOLUTION] = e.maxResolution === void 0 ? Infinity : e.maxResolution, t[B.MIN_RESOLUTION] = e.minResolution === void 0 ? 0 : e.minResolution, t[B.MIN_ZOOM] = e.minZoom === void 0 ? -Infinity : e.minZoom, t[B.MAX_ZOOM] = e.maxZoom === void 0 ? Infinity : e.maxZoom, this.className_ = t.className === void 0 ? "ol-layer" : t.className, delete t.className, this.setProperties(t), this.state_ = null; - } - getBackground() { - return this.background_; - } - getClassName() { - return this.className_; - } - getLayerState(e) { - let t = this.state_ || { - layer: this, - managed: e === void 0 || e - }, n = this.getZIndex(); - return t.opacity = St(Math.round(this.getOpacity() * 100) / 100, 0, 1), t.visible = this.getVisible(), t.extent = this.getExtent(), t.zIndex = n === void 0 && !t.managed ? Infinity : n, t.maxResolution = this.getMaxResolution(), t.minResolution = Math.max(this.getMinResolution(), 0), t.minZoom = this.getMinZoom(), t.maxZoom = this.getMaxZoom(), this.state_ = t, t; - } - getLayersArray(e) { - return P(); - } - getLayerStatesArray(e) { - return P(); - } - getExtent() { - return this.get(B.EXTENT); - } - getMaxResolution() { - return this.get(B.MAX_RESOLUTION); - } - getMinResolution() { - return this.get(B.MIN_RESOLUTION); - } - getMinZoom() { - return this.get(B.MIN_ZOOM); - } - getMaxZoom() { - return this.get(B.MAX_ZOOM); - } - getOpacity() { - return this.get(B.OPACITY); - } - getSourceState() { - return P(); - } - getVisible() { - return this.get(B.VISIBLE); - } - getZIndex() { - return this.get(B.Z_INDEX); - } - setBackground(e) { - this.background_ = e, this.changed(); - } - setExtent(e) { - this.set(B.EXTENT, e); - } - setMaxResolution(e) { - this.set(B.MAX_RESOLUTION, e); - } - setMinResolution(e) { - this.set(B.MIN_RESOLUTION, e); - } - setMaxZoom(e) { - this.set(B.MAX_ZOOM, e); - } - setMinZoom(e) { - this.set(B.MIN_ZOOM, e); - } - setOpacity(e) { - R(typeof e == "number", "Layer opacity must be a number"), this.set(B.OPACITY, e); - } - setVisible(e) { - this.set(B.VISIBLE, e); - } - setZIndex(e) { - this.set(B.Z_INDEX, e); - } - disposeInternal() { - this.state_ &&= (this.state_.layer = null, null), super.disposeInternal(); - } -}, ao = { - ADDLAYER: "addlayer", - REMOVELAYER: "removelayer" -}, oo = class extends ve { - constructor(e, t) { - super(e), this.layer = t; - } -}, so = { LAYERS: "layers" }, co = class e extends io { -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes constructor(e) { e ||= {}; let t = Object.assign({}, e); delete t.layers; let n = e.layers; -<<<<<<< Updated upstream -<<<<<<< Updated upstream super(t), this.on, this.once, this.un, this.layersListenerKeys_ = [], this.listenerKeys_ = {}, this.addChangeListener(ys.LAYERS, this.handleLayersChanged_), n ? Array.isArray(n) ? n = new N(n.slice(), { unique: !0 }) : z(typeof n.getArray == "function", "Expected `layers` to be an array or a `Collection`") : n = new N(void 0, { unique: !0 }), this.setLayers(n); -======= - super(t), this.on, this.once, this.un, this.layersListenerKeys_ = [], this.listenerKeys_ = {}, this.addChangeListener(so.LAYERS, this.handleLayersChanged_), n ? Array.isArray(n) ? n = new Or(n.slice(), { unique: !0 }) : R(typeof n.getArray == "function", "Expected `layers` to be an array or a `Collection`") : n = new Or(void 0, { unique: !0 }), this.setLayers(n); ->>>>>>> Stashed changes -======= - super(t), this.on, this.once, this.un, this.layersListenerKeys_ = [], this.listenerKeys_ = {}, this.addChangeListener(so.LAYERS, this.handleLayersChanged_), n ? Array.isArray(n) ? n = new Or(n.slice(), { unique: !0 }) : R(typeof n.getArray == "function", "Expected `layers` to be an array or a `Collection`") : n = new Or(void 0, { unique: !0 }), this.setLayers(n); ->>>>>>> Stashed changes } handleLayerChange_() { this.changed(); } handleLayersChanged_() { -<<<<<<< Updated upstream this.layersListenerKeys_.forEach(o), this.layersListenerKeys_.length = 0; let t = this.getLayers(); this.layersListenerKeys_.push(i(t, e.ADD, this.handleLayersAdd_, this), i(t, e.REMOVE, this.handleLayersRemove_, this)); @@ -6925,63 +4986,14 @@ var B = { } getLayers() { return this.get(ys.LAYERS); -======= - this.layersListenerKeys_.forEach(j), this.layersListenerKeys_.length = 0; - let e = this.getLayers(); - this.layersListenerKeys_.push(A(e, Tr.ADD, this.handleLayersAdd_, this), A(e, Tr.REMOVE, this.handleLayersRemove_, this)); - for (let e in this.listenerKeys_) this.listenerKeys_[e].forEach(j); - k(this.listenerKeys_); - let t = e.getArray(); - for (let e = 0, n = t.length; e < n; e++) { - let n = t[e]; - this.registerLayerListeners_(n), this.dispatchEvent(new oo(ao.ADDLAYER, n)); - } - this.changed(); - } - registerLayerListeners_(t) { - let n = [A(t, re.PROPERTYCHANGE, this.handleLayerChange_, this), A(t, M.CHANGE, this.handleLayerChange_, this)]; - t instanceof e && n.push(A(t, ao.ADDLAYER, this.handleLayerGroupAdd_, this), A(t, ao.REMOVELAYER, this.handleLayerGroupRemove_, this)), this.listenerKeys_[F(t)] = n; - } - handleLayerGroupAdd_(e) { - this.dispatchEvent(new oo(ao.ADDLAYER, e.layer)); - } - handleLayerGroupRemove_(e) { - this.dispatchEvent(new oo(ao.REMOVELAYER, e.layer)); - } - handleLayersAdd_(e) { - let t = e.element; - this.registerLayerListeners_(t), this.dispatchEvent(new oo(ao.ADDLAYER, t)), this.changed(); - } - handleLayersRemove_(e) { - let t = e.element, n = F(t); - this.listenerKeys_[n].forEach(j), delete this.listenerKeys_[n], this.dispatchEvent(new oo(ao.REMOVELAYER, t)), this.changed(); - } - getLayers() { - return this.get(so.LAYERS); -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes } setLayers(e) { let t = this.getLayers(); if (t) { let e = t.getArray(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream for (let t = 0, n = e.length; t < n; ++t) this.dispatchEvent(new vs(_s.REMOVELAYER, e[t])); } this.set(ys.LAYERS, e); -======= - for (let t = 0, n = e.length; t < n; ++t) this.dispatchEvent(new oo(ao.REMOVELAYER, e[t])); - } - this.set(so.LAYERS, e); ->>>>>>> Stashed changes -======= - for (let t = 0, n = e.length; t < n; ++t) this.dispatchEvent(new oo(ao.REMOVELAYER, e[t])); - } - this.set(so.LAYERS, e); ->>>>>>> Stashed changes } getLayersArray(e) { return e = e === void 0 ? [] : e, this.getLayers().forEach(function(t) { @@ -7004,8 +5016,6 @@ var B = { getSourceState() { return "ready"; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }; //#endregion //#region node_modules/quickselect/index.js @@ -7028,288 +5038,79 @@ function Ss(e, t, n) { e[t] = e[n], e[n] = r; } function Cs(e, t) { -======= -======= ->>>>>>> Stashed changes -}, lo = { - PRERENDER: "prerender", - POSTRENDER: "postrender", - PRECOMPOSE: "precompose", - POSTCOMPOSE: "postcompose", - RENDERCOMPLETE: "rendercomplete" -}, uo = class extends io { - constructor(e) { - let t = Object.assign({}, e); - delete t.source, super(t), this.on, this.once, this.un, this.mapPrecomposeKey_ = null, this.mapRenderKey_ = null, this.sourceChangeKey_ = null, this.renderer_ = null, this.sourceReady_ = !1, this.rendered = !1, e.render && (this.render = e.render), e.map && this.setMap(e.map), this.addChangeListener(B.SOURCE, this.handleSourcePropertyChange_); - let n = e.source ? e.source : null; - this.setSource(n); - } - getLayersArray(e) { - return e ||= [], e.push(this), e; + return e < t ? -1 : +(e > t); +} +//#endregion +//#region node_modules/rbush/index.js +var ws = class { + constructor(e = 9) { + this._maxEntries = Math.max(4, e), this._minEntries = Math.max(2, Math.ceil(this._maxEntries * .4)), this.clear(); } - getLayerStatesArray(e) { - return e ||= [], e.push(this.getLayerState()), e; + all() { + return this._all(this.data, []); } - getSource() { - return this.get(B.SOURCE) || null; + search(e) { + let t = this.data, n = []; + if (!Is(e, t)) return n; + let r = this.toBBox, i = []; + for (; t;) { + for (let a = 0; a < t.children.length; a++) { + let o = t.children[a], s = t.leaf ? r(o) : o; + Is(e, s) && (t.leaf ? n.push(o) : Fs(e, s) ? this._all(o, n) : i.push(o)); + } + t = i.pop(); + } + return n; } - getRenderSource() { - return this.getSource(); + collides(e) { + let t = this.data; + if (!Is(e, t)) return !1; + let n = []; + for (; t;) { + for (let r = 0; r < t.children.length; r++) { + let i = t.children[r], a = t.leaf ? this.toBBox(i) : i; + if (Is(e, a)) { + if (t.leaf || Fs(e, a)) return !0; + n.push(i); + } + } + t = n.pop(); + } + return !1; } - getSourceState() { - let e = this.getSource(); - return e ? e.getState() : "undefined"; + load(e) { + if (!(e && e.length)) return this; + if (e.length < this._minEntries) { + for (let t = 0; t < e.length; t++) this.insert(e[t]); + return this; + } + let t = this._build(e.slice(), 0, e.length - 1, 0); + if (!this.data.children.length) this.data = t; + else if (this.data.height === t.height) this._splitRoot(this.data, t); + else { + if (this.data.height < t.height) { + let e = this.data; + this.data = t, t = e; + } + this._insert(t, this.data.height - t.height - 1, !0); + } + return this; } - handleSourceChange_() { - this.changed(), !(this.sourceReady_ || this.getSource().getState() !== "ready") && (this.sourceReady_ = !0, this.dispatchEvent("sourceready")); + insert(e) { + return e && this._insert(e, this.data.height - 1), this; } - handleSourcePropertyChange_() { - this.sourceChangeKey_ &&= (j(this.sourceChangeKey_), null), this.sourceReady_ = !1; - let e = this.getSource(); - e && (this.sourceChangeKey_ = A(e, M.CHANGE, this.handleSourceChange_, this), e.getState() === "ready" && (this.sourceReady_ = !0, setTimeout(() => { - this.dispatchEvent("sourceready"); - }, 0))), this.changed(); - } - getFeatures(e) { - return this.renderer_ ? this.renderer_.getFeatures(e) : Promise.resolve([]); - } - getData(e) { - return !this.renderer_ || !this.rendered ? null : this.renderer_.getData(e); - } - isVisible(e) { - let t, n = this.getMapInternal(); - !e && n && (e = n.getView()), t = e instanceof ua ? { - viewState: e.getState(), - extent: e.calculateExtent() - } : e, !t.layerStatesArray && n && (t.layerStatesArray = n.getLayerGroup().getLayerStatesArray()); - let r; - if (t.layerStatesArray) { - if (r = t.layerStatesArray.find((e) => e.layer === this), !r) return !1; - } else r = this.getLayerState(); - let i = this.getExtent(); - return fo(r, t.viewState) && (!i || pt(i, t.extent)); - } - getAttributions(e) { - if (!this.isVisible(e)) return []; - let t = this.getSource()?.getAttributions(); - if (!t) return []; - let n = t(e instanceof ua ? e.getViewStateAndExtent() : e); - return Array.isArray(n) || (n = [n]), n; - } - render(e, t) { - let n = this.getRenderer(); - return n.prepareFrame(e) ? (this.rendered = !0, n.renderFrame(e, t)) : null; - } - unrender() { - this.rendered = !1; - } - getDeclutter() {} - renderDeclutter(e, t) {} - renderDeferred(e) { - let t = this.getRenderer(); - t && t.renderDeferred(e); - } - setMapInternal(e) { - e || this.unrender(), this.set(B.MAP, e); - } - getMapInternal() { - return this.get(B.MAP); - } - setMap(e) { - this.mapPrecomposeKey_ &&= (j(this.mapPrecomposeKey_), null), e || this.changed(), this.mapRenderKey_ &&= (j(this.mapRenderKey_), null), e && (this.mapPrecomposeKey_ = A(e, lo.PRECOMPOSE, this.handlePrecompose_, this), this.mapRenderKey_ = A(this, M.CHANGE, e.render, e), this.changed()); - } - handlePrecompose_(e) { - let t = e.frameState.layerStatesArray, n = this.getLayerState(!1); - R(!t.some((e) => e.layer === n.layer), "A layer can only be added to the map once. Use either `layer.setMap()` or `map.addLayer()`, not both."), t.push(n); - } - setSource(e) { - this.set(B.SOURCE, e); - } - getRenderer() { - return this.renderer_ ||= this.createRenderer(), this.renderer_; - } - hasRenderer() { - return !!this.renderer_; - } - createRenderer() { - return null; - } - clearRenderer() { - this.renderer_ && (this.renderer_.dispose(), delete this.renderer_); - } - disposeInternal() { - this.clearRenderer(), this.setSource(null), super.disposeInternal(); - } -}; -function fo(e, t) { - if (!e.visible) return !1; - let n = t.resolution; - if (n < e.minResolution || n >= e.maxResolution) return !1; - let r = t.zoom; - return r > e.minZoom && r <= e.maxZoom; -} -//#endregion -//#region node_modules/quickselect/index.js -function po(e, t, n = 0, r = e.length - 1, i = ho) { - for (; r > n;) { - if (r - n > 600) { - let a = r - n + 1, o = t - n + 1, s = Math.log(a), c = .5 * Math.exp(2 * s / 3), l = .5 * Math.sqrt(s * c * (a - c) / a) * (o - a / 2 < 0 ? -1 : 1); - po(e, t, Math.max(n, Math.floor(t - o * c / a + l)), Math.min(r, Math.floor(t + (a - o) * c / a + l)), i); - } - let a = e[t], o = n, s = r; - for (mo(e, n, t), i(e[r], a) > 0 && mo(e, n, r); o < s;) { - for (mo(e, o, s), o++, s--; i(e[o], a) < 0;) o++; - for (; i(e[s], a) > 0;) s--; - } - i(e[n], a) === 0 ? mo(e, n, s) : (s++, mo(e, s, r)), s <= t && (n = s + 1), t <= s && (r = s - 1); - } -} -function mo(e, t, n) { - let r = e[t]; - e[t] = e[n], e[n] = r; -} -function ho(e, t) { -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes - return e < t ? -1 : +(e > t); -} -//#endregion -//#region node_modules/rbush/index.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream -var ws = class { -======= -var go = class { ->>>>>>> Stashed changes -======= -var go = class { ->>>>>>> Stashed changes - constructor(e = 9) { - this._maxEntries = Math.max(4, e), this._minEntries = Math.max(2, Math.ceil(this._maxEntries * .4)), this.clear(); - } - all() { - return this._all(this.data, []); - } - search(e) { - let t = this.data, n = []; -<<<<<<< Updated upstream -<<<<<<< Updated upstream - if (!Is(e, t)) return n; -======= - if (!Oo(e, t)) return n; ->>>>>>> Stashed changes -======= - if (!Oo(e, t)) return n; ->>>>>>> Stashed changes - let r = this.toBBox, i = []; - for (; t;) { - for (let a = 0; a < t.children.length; a++) { - let o = t.children[a], s = t.leaf ? r(o) : o; -<<<<<<< Updated upstream -<<<<<<< Updated upstream - Is(e, s) && (t.leaf ? n.push(o) : Fs(e, s) ? this._all(o, n) : i.push(o)); -======= - Oo(e, s) && (t.leaf ? n.push(o) : Do(e, s) ? this._all(o, n) : i.push(o)); ->>>>>>> Stashed changes -======= - Oo(e, s) && (t.leaf ? n.push(o) : Do(e, s) ? this._all(o, n) : i.push(o)); ->>>>>>> Stashed changes - } - t = i.pop(); - } - return n; - } - collides(e) { - let t = this.data; -<<<<<<< Updated upstream -<<<<<<< Updated upstream - if (!Is(e, t)) return !1; -======= - if (!Oo(e, t)) return !1; ->>>>>>> Stashed changes -======= - if (!Oo(e, t)) return !1; ->>>>>>> Stashed changes - let n = []; - for (; t;) { - for (let r = 0; r < t.children.length; r++) { - let i = t.children[r], a = t.leaf ? this.toBBox(i) : i; -<<<<<<< Updated upstream -<<<<<<< Updated upstream - if (Is(e, a)) { - if (t.leaf || Fs(e, a)) return !0; -======= - if (Oo(e, a)) { - if (t.leaf || Do(e, a)) return !0; ->>>>>>> Stashed changes -======= - if (Oo(e, a)) { - if (t.leaf || Do(e, a)) return !0; ->>>>>>> Stashed changes - n.push(i); - } - } - t = n.pop(); - } - return !1; - } - load(e) { - if (!(e && e.length)) return this; - if (e.length < this._minEntries) { - for (let t = 0; t < e.length; t++) this.insert(e[t]); - return this; - } - let t = this._build(e.slice(), 0, e.length - 1, 0); - if (!this.data.children.length) this.data = t; - else if (this.data.height === t.height) this._splitRoot(this.data, t); - else { - if (this.data.height < t.height) { - let e = this.data; - this.data = t, t = e; - } - this._insert(t, this.data.height - t.height - 1, !0); - } - return this; - } - insert(e) { - return e && this._insert(e, this.data.height - 1), this; - } - clear() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream - return this.data = Ls([]), this; -======= - return this.data = ko([]), this; ->>>>>>> Stashed changes -======= - return this.data = ko([]), this; ->>>>>>> Stashed changes + clear() { + return this.data = Ls([]), this; } remove(e, t) { if (!e) return this; let n = this.data, r = this.toBBox(e), i = [], a = [], o, s, c; for (; n || i.length;) { if (n || (n = i.pop(), s = i[i.length - 1], o = a.pop(), c = !0), n.leaf) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let r = Ts(e, n.children, t); if (r !== -1) return n.children.splice(r, 1), i.push(n), this._condense(i), this; } !c && !n.leaf && Fs(n, r) ? (i.push(n), a.push(o), o = 0, s = n, n = n.children[0]) : s ? (o++, n = s.children[o], c = !1) : n = null; -======= - let r = _o(e, n.children, t); - if (r !== -1) return n.children.splice(r, 1), i.push(n), this._condense(i), this; - } - !c && !n.leaf && Do(n, r) ? (i.push(n), a.push(o), o = 0, s = n, n = n.children[0]) : s ? (o++, n = s.children[o], c = !1) : n = null; ->>>>>>> Stashed changes -======= - let r = _o(e, n.children, t); - if (r !== -1) return n.children.splice(r, 1), i.push(n), this._condense(i), this; - } - !c && !n.leaf && Do(n, r) ? (i.push(n), a.push(o), o = 0, s = n, n = n.children[0]) : s ? (o++, n = s.children[o], c = !1) : n = null; ->>>>>>> Stashed changes } return this; } @@ -7335,8 +5136,6 @@ var go = class { } _build(e, t, n, r) { let i = n - t + 1, a = this._maxEntries, o; -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (i <= a) return o = Ls(e.slice(t, n + 1)), Es(o, this.toBBox), o; r || (r = Math.ceil(Math.log(i) / Math.log(a)), a = Math.ceil(i / a ** (r - 1))), o = Ls([]), o.leaf = !1, o.height = r; let s = Math.ceil(i / a), c = s * Math.ceil(Math.sqrt(a)); @@ -7344,52 +5143,18 @@ var go = class { for (let i = t; i <= n; i += c) { let t = Math.min(i + c - 1, n); Rs(e, i, t, s, this.compareMinY); -======= - if (i <= a) return o = ko(e.slice(t, n + 1)), vo(o, this.toBBox), o; - r || (r = Math.ceil(Math.log(i) / Math.log(a)), a = Math.ceil(i / a ** (r - 1))), o = ko([]), o.leaf = !1, o.height = r; - let s = Math.ceil(i / a), c = s * Math.ceil(Math.sqrt(a)); - Ao(e, t, n, c, this.compareMinX); - for (let i = t; i <= n; i += c) { - let t = Math.min(i + c - 1, n); - Ao(e, i, t, s, this.compareMinY); ->>>>>>> Stashed changes -======= - if (i <= a) return o = ko(e.slice(t, n + 1)), vo(o, this.toBBox), o; - r || (r = Math.ceil(Math.log(i) / Math.log(a)), a = Math.ceil(i / a ** (r - 1))), o = ko([]), o.leaf = !1, o.height = r; - let s = Math.ceil(i / a), c = s * Math.ceil(Math.sqrt(a)); - Ao(e, t, n, c, this.compareMinX); - for (let i = t; i <= n; i += c) { - let t = Math.min(i + c - 1, n); - Ao(e, i, t, s, this.compareMinY); ->>>>>>> Stashed changes for (let n = i; n <= t; n += s) { let i = Math.min(n + s - 1, t); o.children.push(this._build(e, n, i, r - 1)); } } -<<<<<<< Updated upstream -<<<<<<< Updated upstream return Es(o, this.toBBox), o; -======= - return vo(o, this.toBBox), o; ->>>>>>> Stashed changes -======= - return vo(o, this.toBBox), o; ->>>>>>> Stashed changes } _chooseSubtree(e, t, n, r) { for (; r.push(t), !(t.leaf || r.length - 1 === n);) { let n = Infinity, r = Infinity, i; for (let a = 0; a < t.children.length; a++) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let o = t.children[a], s = js(o), c = Ns(e, o) - s; -======= - let o = t.children[a], s = Co(o), c = To(e, o) - s; ->>>>>>> Stashed changes -======= - let o = t.children[a], s = Co(o), c = To(e, o) - s; ->>>>>>> Stashed changes c < r ? (r = c, n = s < n ? s : n, i = o) : c === r && s < n && (n = s, i = o); } t = i || t.children[0]; @@ -7398,74 +5163,32 @@ var go = class { } _insert(e, t, n) { let r = n ? e : this.toBBox(e), i = [], a = this._chooseSubtree(r, this.data, t, i); -<<<<<<< Updated upstream -<<<<<<< Updated upstream for (a.children.push(e), Os(a, r); t >= 0 && i[t].children.length > this._maxEntries;) this._split(i, t), t--; -======= - for (a.children.push(e), bo(a, r); t >= 0 && i[t].children.length > this._maxEntries;) this._split(i, t), t--; ->>>>>>> Stashed changes -======= - for (a.children.push(e), bo(a, r); t >= 0 && i[t].children.length > this._maxEntries;) this._split(i, t), t--; ->>>>>>> Stashed changes this._adjustParentBBoxes(r, i, t); } _split(e, t) { let n = e[t], r = n.children.length, i = this._minEntries; this._chooseSplitAxis(n, i, r); -<<<<<<< Updated upstream -<<<<<<< Updated upstream let a = this._chooseSplitIndex(n, i, r), o = Ls(n.children.splice(a, n.children.length - a)); o.height = n.height, o.leaf = n.leaf, Es(n, this.toBBox), Es(o, this.toBBox), t ? e[t - 1].children.push(o) : this._splitRoot(n, o); } _splitRoot(e, t) { this.data = Ls([e, t]), this.data.height = e.height + 1, this.data.leaf = !1, Es(this.data, this.toBBox); -======= - let a = this._chooseSplitIndex(n, i, r), o = ko(n.children.splice(a, n.children.length - a)); - o.height = n.height, o.leaf = n.leaf, vo(n, this.toBBox), vo(o, this.toBBox), t ? e[t - 1].children.push(o) : this._splitRoot(n, o); - } - _splitRoot(e, t) { - this.data = ko([e, t]), this.data.height = e.height + 1, this.data.leaf = !1, vo(this.data, this.toBBox); ->>>>>>> Stashed changes -======= - let a = this._chooseSplitIndex(n, i, r), o = ko(n.children.splice(a, n.children.length - a)); - o.height = n.height, o.leaf = n.leaf, vo(n, this.toBBox), vo(o, this.toBBox), t ? e[t - 1].children.push(o) : this._splitRoot(n, o); - } - _splitRoot(e, t) { - this.data = ko([e, t]), this.data.height = e.height + 1, this.data.leaf = !1, vo(this.data, this.toBBox); ->>>>>>> Stashed changes } _chooseSplitIndex(e, t, n) { let r, i = Infinity, a = Infinity; for (let o = t; o <= n - t; o++) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let t = Ds(e, 0, o, this.toBBox), s = Ds(e, o, n, this.toBBox), c = Ps(t, s), l = js(t) + js(s); -======= - let t = yo(e, 0, o, this.toBBox), s = yo(e, o, n, this.toBBox), c = Eo(t, s), l = Co(t) + Co(s); ->>>>>>> Stashed changes -======= - let t = yo(e, 0, o, this.toBBox), s = yo(e, o, n, this.toBBox), c = Eo(t, s), l = Co(t) + Co(s); ->>>>>>> Stashed changes c < i ? (i = c, r = o, a = l < a ? l : a) : c === i && l < a && (a = l, r = o); } return r || n - t; } _chooseSplitAxis(e, t, n) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let r = e.leaf ? this.compareMinX : ks, i = e.leaf ? this.compareMinY : As; -======= - let r = e.leaf ? this.compareMinX : xo, i = e.leaf ? this.compareMinY : So; ->>>>>>> Stashed changes -======= - let r = e.leaf ? this.compareMinX : xo, i = e.leaf ? this.compareMinY : So; ->>>>>>> Stashed changes this._allDistMargin(e, t, n, r) < this._allDistMargin(e, t, n, i) && e.children.sort(r); } _allDistMargin(e, t, n, r) { e.children.sort(r); -<<<<<<< Updated upstream -<<<<<<< Updated upstream let i = this.toBBox, a = Ds(e, 0, t, i), o = Ds(e, n - t, n, i), s = Ms(a) + Ms(o); for (let r = t; r < n - t; r++) { let t = e.children[r]; @@ -7474,32 +5197,10 @@ var go = class { for (let r = n - t - 1; r >= t; r--) { let t = e.children[r]; Os(o, e.leaf ? i(t) : t), s += Ms(o); -======= - let i = this.toBBox, a = yo(e, 0, t, i), o = yo(e, n - t, n, i), s = wo(a) + wo(o); - for (let r = t; r < n - t; r++) { - let t = e.children[r]; - bo(a, e.leaf ? i(t) : t), s += wo(a); - } - for (let r = n - t - 1; r >= t; r--) { - let t = e.children[r]; - bo(o, e.leaf ? i(t) : t), s += wo(o); ->>>>>>> Stashed changes -======= - let i = this.toBBox, a = yo(e, 0, t, i), o = yo(e, n - t, n, i), s = wo(a) + wo(o); - for (let r = t; r < n - t; r++) { - let t = e.children[r]; - bo(a, e.leaf ? i(t) : t), s += wo(a); - } - for (let r = n - t - 1; r >= t; r--) { - let t = e.children[r]; - bo(o, e.leaf ? i(t) : t), s += wo(o); ->>>>>>> Stashed changes } return s; } _adjustParentBBoxes(e, t, n) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream for (let r = n; r >= 0; r--) Os(t[r], e); } _condense(e) { @@ -7507,30 +5208,10 @@ var go = class { } }; function Ts(e, t, n) { -======= - for (let r = n; r >= 0; r--) bo(t[r], e); - } - _condense(e) { - for (let t = e.length - 1, n; t >= 0; t--) e[t].children.length === 0 ? t > 0 ? (n = e[t - 1].children, n.splice(n.indexOf(e[t]), 1)) : this.clear() : vo(e[t], this.toBBox); - } -}; -function _o(e, t, n) { ->>>>>>> Stashed changes -======= - for (let r = n; r >= 0; r--) bo(t[r], e); - } - _condense(e) { - for (let t = e.length - 1, n; t >= 0; t--) e[t].children.length === 0 ? t > 0 ? (n = e[t - 1].children, n.splice(n.indexOf(e[t]), 1)) : this.clear() : vo(e[t], this.toBBox); - } -}; -function _o(e, t, n) { ->>>>>>> Stashed changes if (!n) return t.indexOf(e); for (let r = 0; r < t.length; r++) if (n(e, t[r])) return r; return -1; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Es(e, t) { Ds(e, 0, e.children.length, t, e); } @@ -7571,90 +5252,6 @@ function Is(e, t) { return t.minX <= e.maxX && t.minY <= e.maxY && t.maxX >= e.minX && t.maxY >= e.minY; } function Ls(e) { -======= -function vo(e, t) { - yo(e, 0, e.children.length, t, e); -} -function yo(e, t, n, r, i) { - i ||= ko(null), i.minX = Infinity, i.minY = Infinity, i.maxX = -Infinity, i.maxY = -Infinity; - for (let a = t; a < n; a++) { - let t = e.children[a]; - bo(i, e.leaf ? r(t) : t); - } - return i; -} -function bo(e, t) { - return 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), e; -} -function xo(e, t) { - return e.minX - t.minX; -} -function So(e, t) { - return e.minY - t.minY; -} -function Co(e) { - return (e.maxX - e.minX) * (e.maxY - e.minY); -} -function wo(e) { - return e.maxX - e.minX + (e.maxY - e.minY); -} -function To(e, t) { - return (Math.max(t.maxX, e.maxX) - Math.min(t.minX, e.minX)) * (Math.max(t.maxY, e.maxY) - Math.min(t.minY, e.minY)); -} -function Eo(e, t) { - let n = Math.max(e.minX, t.minX), r = Math.max(e.minY, t.minY), i = Math.min(e.maxX, t.maxX), a = Math.min(e.maxY, t.maxY); - return Math.max(0, i - n) * Math.max(0, a - r); -} -function Do(e, t) { - return e.minX <= t.minX && e.minY <= t.minY && t.maxX <= e.maxX && t.maxY <= e.maxY; -} -function Oo(e, t) { - return t.minX <= e.maxX && t.minY <= e.maxY && t.maxX >= e.minX && t.maxY >= e.minY; -} -function ko(e) { ->>>>>>> Stashed changes -======= -function vo(e, t) { - yo(e, 0, e.children.length, t, e); -} -function yo(e, t, n, r, i) { - i ||= ko(null), i.minX = Infinity, i.minY = Infinity, i.maxX = -Infinity, i.maxY = -Infinity; - for (let a = t; a < n; a++) { - let t = e.children[a]; - bo(i, e.leaf ? r(t) : t); - } - return i; -} -function bo(e, t) { - return 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), e; -} -function xo(e, t) { - return e.minX - t.minX; -} -function So(e, t) { - return e.minY - t.minY; -} -function Co(e) { - return (e.maxX - e.minX) * (e.maxY - e.minY); -} -function wo(e) { - return e.maxX - e.minX + (e.maxY - e.minY); -} -function To(e, t) { - return (Math.max(t.maxX, e.maxX) - Math.min(t.minX, e.minX)) * (Math.max(t.maxY, e.maxY) - Math.min(t.minY, e.minY)); -} -function Eo(e, t) { - let n = Math.max(e.minX, t.minX), r = Math.max(e.minY, t.minY), i = Math.min(e.maxX, t.maxX), a = Math.min(e.maxY, t.maxY); - return Math.max(0, i - n) * Math.max(0, a - r); -} -function Do(e, t) { - return e.minX <= t.minX && e.minY <= t.minY && t.maxX <= e.maxX && t.maxY <= e.maxY; -} -function Oo(e, t) { - return t.minX <= e.maxX && t.minY <= e.maxY && t.maxX >= e.minX && t.maxY >= e.minY; -} -function ko(e) { ->>>>>>> Stashed changes return { children: e, height: 1, @@ -7665,21 +5262,11 @@ function ko(e) { maxY: -Infinity }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Rs(e, t, n, r, i) { -======= -function Ao(e, t, n, r, i) { ->>>>>>> Stashed changes -======= -function Ao(e, t, n, r, i) { ->>>>>>> Stashed changes let a = [t, n]; for (; a.length;) { if (n = a.pop(), t = a.pop(), n - t <= r) continue; let o = t + Math.ceil((n - t) / r / 2) * r; -<<<<<<< Updated upstream -<<<<<<< Updated upstream xs(e, o, t, n, i), a.push(t, o, o, n); } } @@ -7716,210 +5303,21 @@ var Zs = class { this.type = e, this.value = t; } }, Qs = class { -======= -======= ->>>>>>> Stashed changes - po(e, o, t, n, i), a.push(t, o, o, n); + constructor(e, t, ...n) { + this.type = e, this.operator = t, this.args = n; } +}; +function $s(e) { + return { + variables: /* @__PURE__ */ new Map(), + properties: /* @__PURE__ */ new Map(), + featureId: !1, + geometryType: !1, + mCoordinate: !1, + mapState: !1, + inputVariables: e + }; } -//#endregion -//#region node_modules/ol/color.js -var jo = [ - NaN, - NaN, - NaN, - 0 -], Mo; -function No() { - return Mo ||= y(1, 1, void 0, { - willReadFrequently: !0, - desynchronized: !0 - }), Mo; -} -var Po = /^rgba?\(\s*(\d+%?)\s+(\d+%?)\s+(\d+%?)(?:\s*\/\s*(\d+%|\d*\.\d+|[01]))?\s*\)$/i, Fo = /^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)(?:\s*,\s*(\d+%|\d*\.\d+|[01]))?\s*\)$/i, Io = /^rgba?\(\s*(\d+%)\s*,\s*(\d+%)\s*,\s*(\d+%)(?:\s*,\s*(\d+%|\d*\.\d+|[01]))?\s*\)$/i, Lo = /^#([\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i; -function Ro(e, t) { - return e.endsWith("%") ? Number(e.substring(0, e.length - 1)) / t : Number(e); -} -function zo(e) { - throw Error("failed to parse \"" + e + "\" as color"); -} -function Bo(e) { - if (e.toLowerCase().startsWith("rgb")) { - let t = e.match(Fo) || e.match(Po) || e.match(Io); - if (t) { - let e = t[4], n = 100 / 255; - return [ - St(Ro(t[1], n) + .5 | 0, 0, 255), - St(Ro(t[2], n) + .5 | 0, 0, 255), - St(Ro(t[3], n) + .5 | 0, 0, 255), - e === void 0 ? 1 : St(Ro(e, 100), 0, 1) - ]; - } - zo(e); - } - if (e.startsWith("#")) { - if (Lo.test(e)) { - let t = e.substring(1), n = t.length <= 4 ? 1 : 2, r = [ - 0, - 0, - 0, - 255 - ]; - for (let e = 0, i = t.length; e < i; e += n) { - let i = parseInt(t.substring(e, e + n), 16); - n === 1 && (i += i << 4), r[e / n] = i; - } - return r[3] /= 255, r; - } - zo(e); - } - let t = No(); - t.fillStyle = "#abcdef"; - let n = t.fillStyle; - t.fillStyle = e, t.fillStyle === n && (t.fillStyle = "#fedcba", n = t.fillStyle, t.fillStyle = e, t.fillStyle === n && zo(e)); - let r = t.fillStyle; - if (r.startsWith("#") || r.startsWith("rgba")) return Bo(r); - t.clearRect(0, 0, 1, 1), t.fillRect(0, 0, 1, 1); - let i = Array.from(t.getImageData(0, 0, 1, 1).data); - return i[3] = At(i[3] / 255, 3), i; -} -function Vo(e) { - return typeof e == "string" ? e : es(e); -} -var Ho = 1024, Uo = {}, Wo = 0; -function Go(e) { - if (e.length === 4) return e; - let t = e.slice(); - return t[3] = 1, t; -} -function Ko(e) { - return e > .0031308 ? e ** (1 / 2.4) * 269.025 - 14.025 : e * 3294.6; -} -function qo(e) { - return e > .2068965 ? e ** 3 : (e - 4 / 29) * (108 / 841); -} -function Jo(e) { - return e > 10.314724 ? ((e + 14.025) / 269.025) ** 2.4 : e / 3294.6; -} -function Yo(e) { - return e > .0088564 ? e ** (1 / 3) : e / (108 / 841) + 4 / 29; -} -function Xo(e) { - let t = Jo(e[0]), n = Jo(e[1]), r = Jo(e[2]), i = Yo(t * .222488403 + n * .716873169 + r * .06060791), a = 500 * (Yo(t * .452247074 + n * .399439023 + r * .148375274) - i), o = 200 * (i - Yo(t * .016863605 + n * .117638439 + r * .865350722)), s = 180 / Math.PI * Math.atan2(o, a); - return [ - 116 * i - 16, - Math.sqrt(a * a + o * o), - s < 0 ? s + 360 : s, - e[3] - ]; -} -function Zo(e) { - let t = (e[0] + 16) / 116, n = e[1], r = e[2] * Math.PI / 180, i = qo(t), a = qo(t + n / 500 * Math.cos(r)), o = qo(t - n / 200 * Math.sin(r)), s = Ko(a * 3.021973625 - i * 1.617392459 - o * .404875592), c = Ko(a * -.943766287 + i * 1.916279586 + o * .027607165), l = Ko(a * .069407491 - i * .22898585 + o * 1.159737864); - return [ - St(s + .5 | 0, 0, 255), - St(c + .5 | 0, 0, 255), - St(l + .5 | 0, 0, 255), - e[3] - ]; -} -function Qo(e) { - if (e === "none") return jo; - if (Uo.hasOwnProperty(e)) return Uo[e]; - if (Wo >= Ho) { - let e = 0; - for (let t in Uo) e++ & 3 || (delete Uo[t], --Wo); - } - let t = Bo(e); - t.length !== 4 && zo(e); - for (let n of t) isNaN(n) && zo(e); - return Uo[e] = t, ++Wo, t; -} -function $o(e) { - return Array.isArray(e) ? e : Qo(e); -} -function es(e) { - let t = e[0]; - t != (t | 0) && (t = t + .5 | 0); - let n = e[1]; - n != (n | 0) && (n = n + .5 | 0); - let r = e[2]; - r != (r | 0) && (r = r + .5 | 0); - let i = e[3] === void 0 ? 1 : Math.round(e[3] * 1e3) / 1e3; - return "rgba(" + t + "," + n + "," + r + "," + i + ")"; -} -//#endregion -//#region node_modules/ol/size.js -function ts(e) { - return e[0] > 0 && e[1] > 0; -} -function ns(e, t, n) { - return n === void 0 && (n = [0, 0]), n[0] = e[0] * t + .5 | 0, n[1] = e[1] * t + .5 | 0, n; -} -function rs(e, t) { - return Array.isArray(e) ? e : (t === void 0 ? t = [e, e] : (t[0] = e, t[1] = e), t); -} -//#endregion -//#region node_modules/ol/expr/expression.js -var is = 0, as = 1 << is++, V = 1 << is++, H = 1 << is++, U = 1 << is++, os = 1 << is++, ss = 1 << is++, cs = 2 ** is - 1, ls = { - [as]: "boolean", - [V]: "number", - [H]: "string", - [U]: "color", - [os]: "number[]", - [ss]: "size" -}, us = Object.keys(ls).map(Number).sort(oe); -function ds(e) { - return e in ls; -} -function fs(e) { - let t = []; - for (let n of us) ps(e, n) && t.push(ls[n]); - return t.length === 0 ? "untyped" : t.length < 3 ? t.join(" or ") : t.slice(0, -1).join(", ") + ", or " + t[t.length - 1]; -} -function ps(e, t) { - return (e & t) === t; -} -function ms(e, t) { - return !!(e & t); -} -function hs(e, t) { - return e === t; -} -var gs = class { - constructor(e, t) { - if (!ds(e)) throw Error(`literal expressions must have a specific type, got ${fs(e)}`); - this.type = e, this.value = t; - } -}, _s = class { -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes - constructor(e, t, ...n) { - this.type = e, this.operator = t, this.args = n; - } -}; -<<<<<<< Updated upstream -<<<<<<< Updated upstream -function $s(e) { -======= -function vs(e) { ->>>>>>> Stashed changes -======= -function vs(e) { ->>>>>>> Stashed changes - return { - variables: /* @__PURE__ */ new Map(), - properties: /* @__PURE__ */ new Map(), - featureId: !1, - geometryType: !1, - mCoordinate: !1, - mapState: !1, - inputVariables: e - }; -} -<<<<<<< Updated upstream -<<<<<<< Updated upstream function ec(e, t, n) { switch (typeof e) { case "boolean": @@ -7955,80 +5353,6 @@ function ec(e, t, n) { return new Zs(Vs, e); } var K = { -======= -function ys(e, t, n) { - switch (typeof e) { - case "boolean": - if (hs(t, H)) return new gs(H, e ? "true" : "false"); - if (!ps(t, as)) throw Error(`got a boolean, but expected ${fs(t)}`); - return new gs(as, e); - case "number": - if (hs(t, ss)) return new gs(ss, rs(e)); - if (hs(t, as)) return new gs(as, !!e); - if (hs(t, H)) return new gs(H, e.toString()); - if (!ps(t, V)) throw Error(`got a number, but expected ${fs(t)}`); - return new gs(V, e); - case "string": - if (hs(t, U)) return new gs(U, Qo(e)); - if (hs(t, as)) return new gs(as, !!e); - if (!ps(t, H)) throw Error(`got a string, but expected ${fs(t)}`); - return new gs(H, e); - } - if (!Array.isArray(e)) throw Error("expression must be an array or a primitive value"); - if (e.length === 0) throw Error("empty expression"); - if (typeof e[0] == "string") return Ls(e, t, n); - for (let t of e) if (typeof t != "number") throw Error("expected an array of numbers"); - if (hs(t, ss)) { - if (e.length !== 2) throw Error(`expected an array of two values for a size, got ${e.length}`); - return new gs(ss, e); - } - if (hs(t, U)) { - if (e.length === 3) return new gs(U, [...e, 1]); - if (e.length === 4) return new gs(U, e); - throw Error(`expected an array of 3 or 4 values for a color, got ${e.length}`); - } - if (!ps(t, os)) throw Error(`got an array of numbers, but expected ${fs(t)}`); - return new gs(os, e); -} -var W = { ->>>>>>> Stashed changes -======= -function ys(e, t, n) { - switch (typeof e) { - case "boolean": - if (hs(t, H)) return new gs(H, e ? "true" : "false"); - if (!ps(t, as)) throw Error(`got a boolean, but expected ${fs(t)}`); - return new gs(as, e); - case "number": - if (hs(t, ss)) return new gs(ss, rs(e)); - if (hs(t, as)) return new gs(as, !!e); - if (hs(t, H)) return new gs(H, e.toString()); - if (!ps(t, V)) throw Error(`got a number, but expected ${fs(t)}`); - return new gs(V, e); - case "string": - if (hs(t, U)) return new gs(U, Qo(e)); - if (hs(t, as)) return new gs(as, !!e); - if (!ps(t, H)) throw Error(`got a string, but expected ${fs(t)}`); - return new gs(H, e); - } - if (!Array.isArray(e)) throw Error("expression must be an array or a primitive value"); - if (e.length === 0) throw Error("empty expression"); - if (typeof e[0] == "string") return Ls(e, t, n); - for (let t of e) if (typeof t != "number") throw Error("expected an array of numbers"); - if (hs(t, ss)) { - if (e.length !== 2) throw Error(`expected an array of two values for a size, got ${e.length}`); - return new gs(ss, e); - } - if (hs(t, U)) { - if (e.length === 3) return new gs(U, [...e, 1]); - if (e.length === 4) return new gs(U, e); - throw Error(`expected an array of 3 or 4 values for a color, got ${e.length}`); - } - if (!ps(t, os)) throw Error(`got an array of numbers, but expected ${fs(t)}`); - return new gs(os, e); -} -var W = { ->>>>>>> Stashed changes Get: "get", Var: "var", Concat: "concat", @@ -8076,8 +5400,6 @@ var W = { Palette: "palette", ToString: "to-string", Has: "has" -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, tc = { [K.Get]: Y(q(1, Infinity), nc), [K.Var]: rc(), @@ -8128,133 +5450,15 @@ var W = { [K.ToString]: Y(q(1, 1), J(Bs | U | W | G)) }; function nc(e, t, n) { -======= -}, bs = { - [W.Get]: q(G(1, Infinity), xs), - [W.Var]: Ss(), - [W.Has]: q(G(1, Infinity), xs), - [W.Id]: q(Cs, Ds), - [W.Concat]: q(G(2, Infinity), K(H)), - [W.GeometryType]: q(ws, Ds), - [W.LineMetric]: q(Ts, Ds), - [W.Resolution]: q(Es, Ds), - [W.Zoom]: q(Es, Ds), - [W.Time]: q(Es, Ds), - [W.Any]: q(G(2, Infinity), K(as)), - [W.All]: q(G(2, Infinity), K(as)), - [W.Not]: q(G(1, 1), K(as)), - [W.Equal]: q(G(2, 2), ks()), - [W.NotEqual]: q(G(2, 2), ks()), - [W.GreaterThan]: q(G(2, 2), K(V)), - [W.GreaterThanOrEqualTo]: q(G(2, 2), K(V)), - [W.LessThan]: q(G(2, 2), K(V)), - [W.LessThanOrEqualTo]: q(G(2, 2), K(V)), - [W.Multiply]: q(G(2, Infinity), Os), - [W.Coalesce]: q(G(2, Infinity), Os), - [W.Divide]: q(G(2, 2), K(V)), - [W.Add]: q(G(2, Infinity), K(V)), - [W.Subtract]: q(G(2, 2), K(V)), - [W.Clamp]: q(G(3, 3), K(V)), - [W.Mod]: q(G(2, 2), K(V)), - [W.Pow]: q(G(2, 2), K(V)), - [W.Abs]: q(G(1, 1), K(V)), - [W.Floor]: q(G(1, 1), K(V)), - [W.Ceil]: q(G(1, 1), K(V)), - [W.Round]: q(G(1, 1), K(V)), - [W.Sin]: q(G(1, 1), K(V)), - [W.Cos]: q(G(1, 1), K(V)), - [W.Atan]: q(G(1, 2), K(V)), - [W.Sqrt]: q(G(1, 1), K(V)), - [W.Match]: q(G(4, Infinity), js, Ms), - [W.Between]: q(G(3, 3), K(V)), - [W.Interpolate]: q(G(6, Infinity), js, Ns), - [W.Case]: q(G(3, Infinity), As, Ps), - [W.In]: q(G(2, 2), Fs), - [W.Number]: q(G(1, Infinity), K(cs)), - [W.String]: q(G(1, Infinity), K(cs)), - [W.Array]: q(G(1, Infinity), K(V)), - [W.Color]: q(G(1, 4), K(V)), - [W.Band]: q(G(1, 3), K(V)), - [W.Palette]: q(G(2, 2), Is), - [W.ToString]: q(G(1, 1), K(as | V | H | U)) -}; -function xs(e, t, n) { ->>>>>>> Stashed changes -======= -}, bs = { - [W.Get]: q(G(1, Infinity), xs), - [W.Var]: Ss(), - [W.Has]: q(G(1, Infinity), xs), - [W.Id]: q(Cs, Ds), - [W.Concat]: q(G(2, Infinity), K(H)), - [W.GeometryType]: q(ws, Ds), - [W.LineMetric]: q(Ts, Ds), - [W.Resolution]: q(Es, Ds), - [W.Zoom]: q(Es, Ds), - [W.Time]: q(Es, Ds), - [W.Any]: q(G(2, Infinity), K(as)), - [W.All]: q(G(2, Infinity), K(as)), - [W.Not]: q(G(1, 1), K(as)), - [W.Equal]: q(G(2, 2), ks()), - [W.NotEqual]: q(G(2, 2), ks()), - [W.GreaterThan]: q(G(2, 2), K(V)), - [W.GreaterThanOrEqualTo]: q(G(2, 2), K(V)), - [W.LessThan]: q(G(2, 2), K(V)), - [W.LessThanOrEqualTo]: q(G(2, 2), K(V)), - [W.Multiply]: q(G(2, Infinity), Os), - [W.Coalesce]: q(G(2, Infinity), Os), - [W.Divide]: q(G(2, 2), K(V)), - [W.Add]: q(G(2, Infinity), K(V)), - [W.Subtract]: q(G(2, 2), K(V)), - [W.Clamp]: q(G(3, 3), K(V)), - [W.Mod]: q(G(2, 2), K(V)), - [W.Pow]: q(G(2, 2), K(V)), - [W.Abs]: q(G(1, 1), K(V)), - [W.Floor]: q(G(1, 1), K(V)), - [W.Ceil]: q(G(1, 1), K(V)), - [W.Round]: q(G(1, 1), K(V)), - [W.Sin]: q(G(1, 1), K(V)), - [W.Cos]: q(G(1, 1), K(V)), - [W.Atan]: q(G(1, 2), K(V)), - [W.Sqrt]: q(G(1, 1), K(V)), - [W.Match]: q(G(4, Infinity), js, Ms), - [W.Between]: q(G(3, 3), K(V)), - [W.Interpolate]: q(G(6, Infinity), js, Ns), - [W.Case]: q(G(3, Infinity), As, Ps), - [W.In]: q(G(2, 2), Fs), - [W.Number]: q(G(1, Infinity), K(cs)), - [W.String]: q(G(1, Infinity), K(cs)), - [W.Array]: q(G(1, Infinity), K(V)), - [W.Color]: q(G(1, 4), K(V)), - [W.Band]: q(G(1, 3), K(V)), - [W.Palette]: q(G(2, 2), Is), - [W.ToString]: q(G(1, 1), K(as | V | H | U)) -}; -function xs(e, t, n) { ->>>>>>> Stashed changes let r = e.length - 1, i = Array(r); for (let a = 0; a < r; ++a) { let r = e[a + 1]; switch (typeof r) { case "number": -<<<<<<< Updated upstream -<<<<<<< Updated upstream i[a] = new Zs(U, r); break; case "string": i[a] = new Zs(W, r); -======= - i[a] = new gs(V, r); - break; - case "string": - i[a] = new gs(H, r); ->>>>>>> Stashed changes -======= - i[a] = new gs(V, r); - break; - case "string": - i[a] = new gs(H, r); ->>>>>>> Stashed changes break; default: throw Error(`expected a string key or numeric array index for a get operation, got ${r}`); } @@ -8262,22 +5466,12 @@ function xs(e, t, n) { } return i; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function rc() { -======= -function Ss() { ->>>>>>> Stashed changes -======= -function Ss() { ->>>>>>> Stashed changes return function(e, t, n) { let r = e[1]; if (typeof r != "string") throw Error("expected a string argument for var operation"); let i = t, a = n.inputVariables?.[r]; if (a !== void 0) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let e = ec(a, Us, n); if (!(e instanceof Zs)) throw Error(`style variables should only be literal values (no expressions!), variable name: ${r}`); let o = e.type; @@ -8303,73 +5497,11 @@ function sc(e, t, n) { n.mapState = !0; } function cc(e, t, n) { -======= - let e = ys(a, cs, n); - if (!(e instanceof gs)) throw Error(`style variables should only be literal values (no expressions!), variable name: ${r}`); - let o = e.type; - if (typeof a == "string" && ms(i, U) && !ms(i, H) ? o = U : Array.isArray(a) && a.length === 2 && ms(i, ss) && !ms(i, os) && (o = ss), i &= o, i === 0) throw Error(`the type expected from the var operator (${fs(t)}) did not have any overlap with the type of the corresponding style variables (${fs(o)}), variable name: ${r}`); - } - if (n.variables.has(r)) { - let e = n.variables.get(r); - if (i &= e, i === 0) throw Error(`a new type expected from the var operator (${fs(t)}) did not have any overlap with the previous type expected for it (${fs(e)}), variable name: ${r}`); - } - return n.variables.set(r, i), new _s(i, "var", new gs(H, r)); - }; -} -function Cs(e, t, n) { - n.featureId = !0; -} -function ws(e, t, n) { - n.geometryType = !0; -} -function Ts(e, t, n) { - n.mCoordinate = !0; -} -function Es(e, t, n) { - n.mapState = !0; -} -function Ds(e, t, n) { ->>>>>>> Stashed changes -======= - let e = ys(a, cs, n); - if (!(e instanceof gs)) throw Error(`style variables should only be literal values (no expressions!), variable name: ${r}`); - let o = e.type; - if (typeof a == "string" && ms(i, U) && !ms(i, H) ? o = U : Array.isArray(a) && a.length === 2 && ms(i, ss) && !ms(i, os) && (o = ss), i &= o, i === 0) throw Error(`the type expected from the var operator (${fs(t)}) did not have any overlap with the type of the corresponding style variables (${fs(o)}), variable name: ${r}`); - } - if (n.variables.has(r)) { - let e = n.variables.get(r); - if (i &= e, i === 0) throw Error(`a new type expected from the var operator (${fs(t)}) did not have any overlap with the previous type expected for it (${fs(e)}), variable name: ${r}`); - } - return n.variables.set(r, i), new _s(i, "var", new gs(H, r)); - }; -} -function Cs(e, t, n) { - n.featureId = !0; -} -function ws(e, t, n) { - n.geometryType = !0; -} -function Ts(e, t, n) { - n.mCoordinate = !0; -} -function Es(e, t, n) { - n.mapState = !0; -} -function Ds(e, t, n) { ->>>>>>> Stashed changes let r = e[0]; if (e.length !== 1) throw Error(`expected no arguments for ${r} operation`); return []; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function q(e, t) { -======= -function G(e, t) { ->>>>>>> Stashed changes -======= -function G(e, t) { ->>>>>>> Stashed changes return function(n, r, i) { let a = n[0], o = n.length - 1; if (e === t) { @@ -8380,95 +5512,39 @@ function G(e, t) { } }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function lc(e, t, n) { let r = e.length - 1, i = Array(r); for (let a = 0; a < r; ++a) { let r = ec(e[a + 1], t, n); -======= -function Os(e, t, n) { - let r = e.length - 1, i = Array(r); - for (let a = 0; a < r; ++a) { - let r = ys(e[a + 1], t, n); ->>>>>>> Stashed changes -======= -function Os(e, t, n) { - let r = e.length - 1, i = Array(r); - for (let a = 0; a < r; ++a) { - let r = ys(e[a + 1], t, n); ->>>>>>> Stashed changes i[a] = r; } return i; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function J(e) { return function(t, n, r) { let i = t.length - 1, a = Array(i); for (let n = 0; n < i; ++n) { let i = ec(t[n + 1], e, r); -======= -function K(e) { - return function(t, n, r) { - let i = t.length - 1, a = Array(i); - for (let n = 0; n < i; ++n) { - let i = ys(t[n + 1], e, r); ->>>>>>> Stashed changes -======= -function K(e) { - return function(t, n, r) { - let i = t.length - 1, a = Array(i); - for (let n = 0; n < i; ++n) { - let i = ys(t[n + 1], e, r); ->>>>>>> Stashed changes a[n] = i; } return a; }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function uc() { return function(e, t, n) { let r = e[0], i = e.length - 1, a = Array(i), o = Us; for (let t = 0; t < i; ++t) { let r = ec(e[t + 1], o, n); -======= -function ks() { - return function(e, t, n) { - let r = e[0], i = e.length - 1, a = Array(i), o = cs; - for (let t = 0; t < i; ++t) { - let r = ys(e[t + 1], o, n); ->>>>>>> Stashed changes -======= -function ks() { - return function(e, t, n) { - let r = e[0], i = e.length - 1, a = Array(i), o = cs; - for (let t = 0; t < i; ++t) { - let r = ys(e[t + 1], o, n); ->>>>>>> Stashed changes o &= r.type; } if (o === 0) throw Error(`no common type was found among the arguments of ${r}`); for (let t = 0; t < i; ++t) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let r = ec(e[t + 1], o, n); -======= - let r = ys(e[t + 1], o, n); ->>>>>>> Stashed changes -======= - let r = ys(e[t + 1], o, n); ->>>>>>> Stashed changes a[t] = r; } return a; }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function dc(e, t, n) { let r = e[0], i = e.length - 1; if (i % 2 == 0) throw Error(`expected an odd number of arguments for ${r}, got ${i} instead`); @@ -8482,36 +5558,6 @@ function pc(e, t, n) { for (let t = 0; t < r - 2; t += 2) { try { let r = ec(e[t + 2], a, n); -======= -function As(e, t, n) { - let r = e[0], i = e.length - 1; - if (i % 2 == 0) throw Error(`expected an odd number of arguments for ${r}, got ${i} instead`); -} -function js(e, t, n) { - let r = e[0], i = e.length - 1; - if (i % 2 == 1) throw Error(`expected an even number of arguments for operation ${r}, got ${i} instead`); -} -function Ms(e, t, n) { - let r = e.length - 1, i = ys(e[e.length - 1], t, n), a = H | V | as, o = Array(r - 2); - for (let t = 0; t < r - 2; t += 2) { - try { - let r = ys(e[t + 2], a, n); ->>>>>>> Stashed changes -======= -function As(e, t, n) { - let r = e[0], i = e.length - 1; - if (i % 2 == 0) throw Error(`expected an odd number of arguments for ${r}, got ${i} instead`); -} -function js(e, t, n) { - let r = e[0], i = e.length - 1; - if (i % 2 == 1) throw Error(`expected an even number of arguments for operation ${r}, got ${i} instead`); -} -function Ms(e, t, n) { - let r = e.length - 1, i = ys(e[e.length - 1], t, n), a = H | V | as, o = Array(r - 2); - for (let t = 0; t < r - 2; t += 2) { - try { - let r = ys(e[t + 2], a, n); ->>>>>>> Stashed changes a &= r.type; } catch (e) { throw Error(`failed to parse argument ${t + 1} of match expression: ${e.message}`); @@ -8520,57 +5566,25 @@ function Ms(e, t, n) { } for (let t = 0; t < r - 2; t += 2) { try { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let r = ec(e[t + 2], a, n); -======= - let r = ys(e[t + 2], a, n); ->>>>>>> Stashed changes -======= - let r = ys(e[t + 2], a, n); ->>>>>>> Stashed changes o[t] = r; } catch (e) { throw Error(`failed to parse argument ${t + 1} of match expression: ${e.message}`); } try { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let r = ec(e[t + 3], i.type, n); -======= - let r = ys(e[t + 3], i.type, n); ->>>>>>> Stashed changes -======= - let r = ys(e[t + 3], i.type, n); ->>>>>>> Stashed changes o[t + 1] = r; } catch (e) { throw Error(`failed to parse argument ${t + 2} of match expression: ${e.message}`); } } return [ -<<<<<<< Updated upstream -<<<<<<< Updated upstream ec(e[1], a, n), -======= - ys(e[1], a, n), ->>>>>>> Stashed changes -======= - ys(e[1], a, n), ->>>>>>> Stashed changes ...o, i ]; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function mc(e, t, n) { -======= -function Ns(e, t, n) { ->>>>>>> Stashed changes -======= -function Ns(e, t, n) { ->>>>>>> Stashed changes let r = e[1], i; switch (r[0]) { case "linear": @@ -8583,50 +5597,22 @@ function Ns(e, t, n) { break; default: throw Error(`invalid interpolation type: ${JSON.stringify(r)}`); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream let a = new Zs(U, i), o; try { o = ec(e[2], U, n); -======= - let a = new gs(V, i), o; - try { - o = ys(e[2], V, n); ->>>>>>> Stashed changes -======= - let a = new gs(V, i), o; - try { - o = ys(e[2], V, n); ->>>>>>> Stashed changes } catch (e) { throw Error(`failed to parse argument 1 in interpolate expression: ${e.message}`); } let s = Array(e.length - 3); for (let r = 0; r < s.length; r += 2) { try { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let t = ec(e[r + 3], U, n); -======= - let t = ys(e[r + 3], V, n); ->>>>>>> Stashed changes -======= - let t = ys(e[r + 3], V, n); ->>>>>>> Stashed changes s[r] = t; } catch (e) { throw Error(`failed to parse argument ${r + 2} for interpolate expression: ${e.message}`); } try { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let i = ec(e[r + 4], t, n); -======= - let i = ys(e[r + 4], t, n); ->>>>>>> Stashed changes -======= - let i = ys(e[r + 4], t, n); ->>>>>>> Stashed changes s[r + 1] = i; } catch (e) { throw Error(`failed to parse argument ${r + 3} for interpolate expression: ${e.message}`); @@ -8638,41 +5624,17 @@ function Ns(e, t, n) { ...s ]; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function hc(e, t, n) { let r = ec(e[e.length - 1], t, n), i = Array(e.length - 1); for (let t = 0; t < i.length - 1; t += 2) { try { let r = ec(e[t + 1], Bs, n); -======= -function Ps(e, t, n) { - let r = ys(e[e.length - 1], t, n), i = Array(e.length - 1); - for (let t = 0; t < i.length - 1; t += 2) { - try { - let r = ys(e[t + 1], as, n); ->>>>>>> Stashed changes -======= -function Ps(e, t, n) { - let r = ys(e[e.length - 1], t, n), i = Array(e.length - 1); - for (let t = 0; t < i.length - 1; t += 2) { - try { - let r = ys(e[t + 1], as, n); ->>>>>>> Stashed changes i[t] = r; } catch (e) { throw Error(`failed to parse argument ${t} of case expression: ${e.message}`); } try { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let a = ec(e[t + 2], r.type, n); -======= - let a = ys(e[t + 2], r.type, n); ->>>>>>> Stashed changes -======= - let a = ys(e[t + 2], r.type, n); ->>>>>>> Stashed changes i[t + 1] = a; } catch (e) { throw Error(`failed to parse argument ${t + 1} of case expression: ${e.message}`); @@ -8680,67 +5642,27 @@ function Ps(e, t, n) { } return i[i.length - 1] = r, i; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function gc(e, t, n) { -======= -function Fs(e, t, n) { ->>>>>>> Stashed changes -======= -function Fs(e, t, n) { ->>>>>>> Stashed changes let r = e[2]; if (!Array.isArray(r)) throw Error("the second argument for the \"in\" operator must be an array"); let i; if (r[0] === "literal") { if (r = r[1], !Array.isArray(r)) throw Error("failed to parse \"in\" expression: the literal operator must be followed by an array"); } else if (typeof r[0] == "string") throw Error("for the \"in\" operator, a string array should be wrapped in a \"literal\" operator to disambiguate from expressions"); -<<<<<<< Updated upstream -<<<<<<< Updated upstream i = typeof r[0] == "string" ? W : U; let a = Array(r.length); for (let e = 0; e < a.length; e++) try { let t = ec(r[e], i, n); -======= - i = typeof r[0] == "string" ? H : V; - let a = Array(r.length); - for (let e = 0; e < a.length; e++) try { - let t = ys(r[e], i, n); ->>>>>>> Stashed changes -======= - i = typeof r[0] == "string" ? H : V; - let a = Array(r.length); - for (let e = 0; e < a.length; e++) try { - let t = ys(r[e], i, n); ->>>>>>> Stashed changes a[e] = t; } catch (t) { throw Error(`failed to parse haystack item ${e} for "in" expression: ${t.message}`); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream return [ec(e[1], i, n), ...a]; } function _c(e, t, n) { let r; try { r = ec(e[1], U, n); -======= - return [ys(e[1], i, n), ...a]; -} -function Is(e, t, n) { - let r; - try { - r = ys(e[1], V, n); ->>>>>>> Stashed changes -======= - return [ys(e[1], i, n), ...a]; -} -function Is(e, t, n) { - let r; - try { - r = ys(e[1], V, n); ->>>>>>> Stashed changes } catch (e) { throw Error(`failed to parse first argument in palette expression: ${e.message}`); } @@ -8750,40 +5672,16 @@ function Is(e, t, n) { for (let e = 0; e < a.length; e++) { let t; try { -<<<<<<< Updated upstream -<<<<<<< Updated upstream t = ec(i[e], G, n); } catch (t) { throw Error(`failed to parse color at index ${e} in palette expression: ${t.message}`); } if (!(t instanceof Zs)) throw Error(`the palette color at index ${e} must be a literal value`); -======= - t = ys(i[e], U, n); - } catch (t) { - throw Error(`failed to parse color at index ${e} in palette expression: ${t.message}`); - } - if (!(t instanceof gs)) throw Error(`the palette color at index ${e} must be a literal value`); ->>>>>>> Stashed changes -======= - t = ys(i[e], U, n); - } catch (t) { - throw Error(`failed to parse color at index ${e} in palette expression: ${t.message}`); - } - if (!(t instanceof gs)) throw Error(`the palette color at index ${e} must be a literal value`); ->>>>>>> Stashed changes a[e] = t; } return [r, ...a]; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Y(...e) { -======= -function q(...e) { ->>>>>>> Stashed changes -======= -function q(...e) { ->>>>>>> Stashed changes return function(t, n, r) { let i = t[0], a; for (let i = 0; i < e.length; i++) { @@ -8793,8 +5691,6 @@ function q(...e) { a = o; } } -<<<<<<< Updated upstream -<<<<<<< Updated upstream return new Qs(n, i, ...a); }; } @@ -8804,28 +5700,6 @@ function vc(e, t, n) { return i(e, t, n); } function yc(e) { -======= - return new _s(n, i, ...a); - }; -} -function Ls(e, t, n) { - let r = e[0], i = bs[r]; - if (!i) throw Error(`unknown operator: ${r}`); - return i(e, t, n); -} -function Rs(e) { ->>>>>>> Stashed changes -======= - return new _s(n, i, ...a); - }; -} -function Ls(e, t, n) { - let r = e[0], i = bs[r]; - if (!i) throw Error(`unknown operator: ${r}`); - return i(e, t, n); -} -function Rs(e) { ->>>>>>> Stashed changes if (!e) return ""; let t = e.getType(); switch (t) { @@ -8836,29 +5710,13 @@ function Rs(e) { case "MultiLineString": case "MultiPolygon": return t.substring(5); case "Circle": return "Polygon"; -<<<<<<< Updated upstream -<<<<<<< Updated upstream case "GeometryCollection": return yc(e.getGeometries()[0]); -======= - case "GeometryCollection": return Rs(e.getGeometries()[0]); ->>>>>>> Stashed changes -======= - case "GeometryCollection": return Rs(e.getGeometries()[0]); ->>>>>>> Stashed changes default: return ""; } } //#endregion //#region node_modules/ol/expr/cpu.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function bc() { -======= -function zs() { ->>>>>>> Stashed changes -======= -function zs() { ->>>>>>> Stashed changes return { variables: {}, properties: {}, @@ -8867,8 +5725,6 @@ function zs() { geometryType: "" }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function xc(e, t, n) { return Sc(ec(e, t, n), n); } @@ -8876,23 +5732,6 @@ function Sc(e, t) { if (e instanceof Zs) { if (e.type === G && typeof e.value == "string") { let t = Hi(e.value); -======= -function Bs(e, t, n) { - return Vs(ys(e, t, n), n); -} -======= -function Bs(e, t, n) { - return Vs(ys(e, t, n), n); -} ->>>>>>> Stashed changes -function Vs(e, t) { - if (e instanceof gs) { - if (e.type === U && typeof e.value == "string") { - let t = Qo(e.value); -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes return function() { return t; }; @@ -8903,8 +5742,6 @@ function Vs(e, t) { } let n = e.operator; switch (n) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream case K.Number: case K.String: case K.Coalesce: return Cc(e, t); @@ -8956,130 +5793,14 @@ function Cc(e, t) { for (let n = 0; n < r; ++n) i[n] = Sc(e.args[n], t); switch (n) { case K.Coalesce: return (e) => { -======= - case W.Number: - case W.String: - case W.Coalesce: return Hs(e, t); - case W.Get: - case W.Var: - case W.Has: return Us(e, t); - case W.Id: return (e) => e.featureId; - case W.GeometryType: return (e) => e.geometryType; - case W.Concat: { - let n = e.args.map((e) => Vs(e, t)); - return (e) => "".concat(...n.map((t) => t(e).toString())); - } - case W.Resolution: return (e) => e.resolution; - case W.Any: - case W.All: - case W.Between: - case W.In: - case W.Not: return Gs(e, t); - case W.Equal: - case W.NotEqual: - case W.LessThan: - case W.LessThanOrEqualTo: - case W.GreaterThan: - case W.GreaterThanOrEqualTo: return Ws(e, t); - case W.Multiply: - case W.Divide: - case W.Add: - case W.Subtract: - case W.Clamp: - case W.Mod: - case W.Pow: - case W.Abs: - case W.Floor: - case W.Ceil: - case W.Round: - case W.Sin: - case W.Cos: - case W.Atan: - case W.Sqrt: return Ks(e, t); - case W.Case: return qs(e, t); - case W.Match: return Js(e, t); - case W.Interpolate: return Ys(e, t); - case W.ToString: return Xs(e, t); - default: throw Error(`Unsupported operator ${n}`); - } -} -function Hs(e, t) { - let n = e.operator, r = e.args.length, i = Array(r); - for (let n = 0; n < r; ++n) i[n] = Vs(e.args[n], t); - switch (n) { - case W.Coalesce: return (e) => { ->>>>>>> Stashed changes -======= - case W.Number: - case W.String: - case W.Coalesce: return Hs(e, t); - case W.Get: - case W.Var: - case W.Has: return Us(e, t); - case W.Id: return (e) => e.featureId; - case W.GeometryType: return (e) => e.geometryType; - case W.Concat: { - let n = e.args.map((e) => Vs(e, t)); - return (e) => "".concat(...n.map((t) => t(e).toString())); - } - case W.Resolution: return (e) => e.resolution; - case W.Any: - case W.All: - case W.Between: - case W.In: - case W.Not: return Gs(e, t); - case W.Equal: - case W.NotEqual: - case W.LessThan: - case W.LessThanOrEqualTo: - case W.GreaterThan: - case W.GreaterThanOrEqualTo: return Ws(e, t); - case W.Multiply: - case W.Divide: - case W.Add: - case W.Subtract: - case W.Clamp: - case W.Mod: - case W.Pow: - case W.Abs: - case W.Floor: - case W.Ceil: - case W.Round: - case W.Sin: - case W.Cos: - case W.Atan: - case W.Sqrt: return Ks(e, t); - case W.Case: return qs(e, t); - case W.Match: return Js(e, t); - case W.Interpolate: return Ys(e, t); - case W.ToString: return Xs(e, t); - default: throw Error(`Unsupported operator ${n}`); - } -} -function Hs(e, t) { - let n = e.operator, r = e.args.length, i = Array(r); - for (let n = 0; n < r; ++n) i[n] = Vs(e.args[n], t); - switch (n) { - case W.Coalesce: return (e) => { ->>>>>>> Stashed changes for (let t = 0; t < r; ++t) { let n = i[t](e); if (n != null) return n; } throw Error("Expected one of the values to be non-null"); }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream case K.Number: case K.String: return (e) => { -======= - case W.Number: - case W.String: return (e) => { ->>>>>>> Stashed changes -======= - case W.Number: - case W.String: return (e) => { ->>>>>>> Stashed changes for (let t = 0; t < r; ++t) { let r = i[t](e); if (typeof r === n) return r; @@ -9089,24 +5810,10 @@ function Hs(e, t) { default: throw Error(`Unsupported assertion operator ${n}`); } } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function wc(e, t) { let n = e.args[0].value; switch (e.operator) { case K.Get: return (t) => { -======= -function Us(e, t) { - let n = e.args[0].value; - switch (e.operator) { - case W.Get: return (t) => { ->>>>>>> Stashed changes -======= -function Us(e, t) { - let n = e.args[0].value; - switch (e.operator) { - case W.Get: return (t) => { ->>>>>>> Stashed changes let r = e.args, i = t.properties[n]; for (let e = 1, t = r.length; e < t; ++e) { let t = r[e].value; @@ -9114,18 +5821,8 @@ function Us(e, t) { } return i; }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream case K.Var: return (e) => e.variables[n]; case K.Has: return (t) => { -======= - case W.Var: return (e) => e.variables[n]; - case W.Has: return (t) => { ->>>>>>> Stashed changes -======= - case W.Var: return (e) => e.variables[n]; - case W.Has: return (t) => { ->>>>>>> Stashed changes let r = e.args; if (!(n in t.properties)) return !1; let i = t.properties[n]; @@ -9139,8 +5836,6 @@ function Us(e, t) { default: throw Error(`Unsupported accessor operator ${e.operator}`); } } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Tc(e, t) { let n = e.operator, r = Sc(e.args[0], t), i = Sc(e.args[1], t); switch (n) { @@ -9176,132 +5871,30 @@ function Ec(e, t) { }; case K.Not: return (e) => !i[0](e); default: throw Error(`Unsupported logical operator ${n}`); -======= -function Ws(e, t) { - let n = e.operator, r = Vs(e.args[0], t), i = Vs(e.args[1], t); - switch (n) { -======= -function Ws(e, t) { - let n = e.operator, r = Vs(e.args[0], t), i = Vs(e.args[1], t); - switch (n) { ->>>>>>> Stashed changes - case W.Equal: return (e) => r(e) === i(e); - case W.NotEqual: return (e) => r(e) !== i(e); - case W.LessThan: return (e) => r(e) < i(e); - case W.LessThanOrEqualTo: return (e) => r(e) <= i(e); - case W.GreaterThan: return (e) => r(e) > i(e); - case W.GreaterThanOrEqualTo: return (e) => r(e) >= i(e); - default: throw Error(`Unsupported comparison operator ${n}`); -<<<<<<< Updated upstream ->>>>>>> Stashed changes } } function Dc(e, t) { let n = e.operator, r = e.args.length, i = Array(r); -<<<<<<< Updated upstream for (let n = 0; n < r; ++n) i[n] = Sc(e.args[n], t); switch (n) { case K.Multiply: return (e) => { -======= - for (let n = 0; n < r; ++n) i[n] = Vs(e.args[n], t); - switch (n) { - case W.Any: return (e) => { - for (let t = 0; t < r; ++t) if (i[t](e)) return !0; - return !1; - }; - case W.All: return (e) => { - for (let t = 0; t < r; ++t) if (!i[t](e)) return !1; - return !0; - }; - case W.Between: return (e) => { - let t = i[0](e), n = i[1](e), r = i[2](e); - return t >= n && t <= r; - }; - case W.In: return (e) => { - let t = i[0](e); - for (let n = 1; n < r; ++n) if (t === i[n](e)) return !0; - return !1; - }; - case W.Not: return (e) => !i[0](e); - default: throw Error(`Unsupported logical operator ${n}`); -======= ->>>>>>> Stashed changes - } -} -function Ks(e, t) { - let n = e.operator, r = e.args.length, i = Array(r); - for (let n = 0; n < r; ++n) i[n] = Vs(e.args[n], t); - switch (n) { -<<<<<<< Updated upstream - case W.Multiply: return (e) => { ->>>>>>> Stashed changes -======= - case W.Any: return (e) => { - for (let t = 0; t < r; ++t) if (i[t](e)) return !0; - return !1; - }; - case W.All: return (e) => { - for (let t = 0; t < r; ++t) if (!i[t](e)) return !1; - return !0; - }; - case W.Between: return (e) => { - let t = i[0](e), n = i[1](e), r = i[2](e); - return t >= n && t <= r; - }; - case W.In: return (e) => { - let t = i[0](e); - for (let n = 1; n < r; ++n) if (t === i[n](e)) return !0; - return !1; - }; - case W.Not: return (e) => !i[0](e); - default: throw Error(`Unsupported logical operator ${n}`); - } -} -function Ks(e, t) { - let n = e.operator, r = e.args.length, i = Array(r); - for (let n = 0; n < r; ++n) i[n] = Vs(e.args[n], t); - switch (n) { - case W.Multiply: return (e) => { ->>>>>>> Stashed changes let t = 1; for (let n = 0; n < r; ++n) t *= i[n](e); return t; }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream case K.Divide: return (e) => i[0](e) / i[1](e); case K.Add: return (e) => { -======= - case W.Divide: return (e) => i[0](e) / i[1](e); - case W.Add: return (e) => { ->>>>>>> Stashed changes -======= - case W.Divide: return (e) => i[0](e) / i[1](e); - case W.Add: return (e) => { ->>>>>>> Stashed changes let t = 0; for (let n = 0; n < r; ++n) t += i[n](e); return t; }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream case K.Subtract: return (e) => i[0](e) - i[1](e); case K.Clamp: return (e) => { -======= - case W.Subtract: return (e) => i[0](e) - i[1](e); - case W.Clamp: return (e) => { ->>>>>>> Stashed changes -======= - case W.Subtract: return (e) => i[0](e) - i[1](e); - case W.Clamp: return (e) => { ->>>>>>> Stashed changes let t = i[0](e), n = i[1](e); if (t < n) return n; let r = i[2](e); return t > r ? r : t; }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream case K.Mod: return (e) => i[0](e) % i[1](e); case K.Pow: return (e) => i[0](e) ** +i[1](e); case K.Abs: return (e) => Math.abs(i[0](e)); @@ -9318,103 +5911,33 @@ function Ks(e, t) { function Oc(e, t) { let n = e.args.length, r = Array(n); for (let i = 0; i < n; ++i) r[i] = Sc(e.args[i], t); -======= - case W.Mod: return (e) => i[0](e) % i[1](e); - case W.Pow: return (e) => i[0](e) ** +i[1](e); - case W.Abs: return (e) => Math.abs(i[0](e)); - case W.Floor: return (e) => Math.floor(i[0](e)); - case W.Ceil: return (e) => Math.ceil(i[0](e)); - case W.Round: return (e) => Math.round(i[0](e)); - case W.Sin: return (e) => Math.sin(i[0](e)); - case W.Cos: return (e) => Math.cos(i[0](e)); - case W.Atan: return r === 2 ? (e) => Math.atan2(i[0](e), i[1](e)) : (e) => Math.atan(i[0](e)); - case W.Sqrt: return (e) => Math.sqrt(i[0](e)); - default: throw Error(`Unsupported numeric operator ${n}`); - } -} -function qs(e, t) { - let n = e.args.length, r = Array(n); - for (let i = 0; i < n; ++i) r[i] = Vs(e.args[i], t); ->>>>>>> Stashed changes -======= - case W.Mod: return (e) => i[0](e) % i[1](e); - case W.Pow: return (e) => i[0](e) ** +i[1](e); - case W.Abs: return (e) => Math.abs(i[0](e)); - case W.Floor: return (e) => Math.floor(i[0](e)); - case W.Ceil: return (e) => Math.ceil(i[0](e)); - case W.Round: return (e) => Math.round(i[0](e)); - case W.Sin: return (e) => Math.sin(i[0](e)); - case W.Cos: return (e) => Math.cos(i[0](e)); - case W.Atan: return r === 2 ? (e) => Math.atan2(i[0](e), i[1](e)) : (e) => Math.atan(i[0](e)); - case W.Sqrt: return (e) => Math.sqrt(i[0](e)); - default: throw Error(`Unsupported numeric operator ${n}`); - } -} -function qs(e, t) { - let n = e.args.length, r = Array(n); - for (let i = 0; i < n; ++i) r[i] = Vs(e.args[i], t); ->>>>>>> Stashed changes return (e) => { for (let t = 0; t < n - 1; t += 2) if (r[t](e)) return r[t + 1](e); return r[n - 1](e); }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function kc(e, t) { let n = e.args.length, r = Array(n); for (let i = 0; i < n; ++i) r[i] = Sc(e.args[i], t); -======= -function Js(e, t) { - let n = e.args.length, r = Array(n); - for (let i = 0; i < n; ++i) r[i] = Vs(e.args[i], t); ->>>>>>> Stashed changes -======= -function Js(e, t) { - let n = e.args.length, r = Array(n); - for (let i = 0; i < n; ++i) r[i] = Vs(e.args[i], t); ->>>>>>> Stashed changes return (e) => { let t = r[0](e); for (let i = 1; i < n - 1; i += 2) if (t === r[i](e)) return r[i + 1](e); return r[n - 1](e); }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Ac(e, t) { let n = e.args.length, r = Array(n); for (let i = 0; i < n; ++i) r[i] = Sc(e.args[i], t); -======= -function Ys(e, t) { - let n = e.args.length, r = Array(n); - for (let i = 0; i < n; ++i) r[i] = Vs(e.args[i], t); ->>>>>>> Stashed changes -======= -function Ys(e, t) { - let n = e.args.length, r = Array(n); - for (let i = 0; i < n; ++i) r[i] = Vs(e.args[i], t); ->>>>>>> Stashed changes return (e) => { let t = r[0](e), i = r[1](e), a, o; for (let s = 2; s < n; s += 2) { let n = r[s](e), c = r[s + 1](e), l = Array.isArray(c); -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (l && (c = Fi(c)), n >= i) return s === 2 ? c : l ? Nc(t, i, a, o, n, c) : Mc(t, i, a, o, n, c); -======= - if (l && (c = Go(c)), n >= i) return s === 2 ? c : l ? Qs(t, i, a, o, n, c) : Zs(t, i, a, o, n, c); ->>>>>>> Stashed changes -======= - if (l && (c = Go(c)), n >= i) return s === 2 ? c : l ? Qs(t, i, a, o, n, c) : Zs(t, i, a, o, n, c); ->>>>>>> Stashed changes a = n, o = c; } return o; }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function jc(e, t) { let n = e.operator, r = e.args.length, i = Array(r); for (let n = 0; n < r; ++n) i[n] = Sc(e.args[n], t); @@ -9422,44 +5945,16 @@ function jc(e, t) { case K.ToString: return (t) => { let n = i[0](t); return e.args[0].type === G ? Wi(n) : n.toString(); -======= -function Xs(e, t) { - let n = e.operator, r = e.args.length, i = Array(r); - for (let n = 0; n < r; ++n) i[n] = Vs(e.args[n], t); - switch (n) { - case W.ToString: return (t) => { - let n = i[0](t); - return e.args[0].type === U ? es(n) : n.toString(); ->>>>>>> Stashed changes -======= -function Xs(e, t) { - let n = e.operator, r = e.args.length, i = Array(r); - for (let n = 0; n < r; ++n) i[n] = Vs(e.args[n], t); - switch (n) { - case W.ToString: return (t) => { - let n = i[0](t); - return e.args[0].type === U ? es(n) : n.toString(); ->>>>>>> Stashed changes }; default: throw Error(`Unsupported convert operator ${n}`); } } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Mc(e, t, n, r, i, a) { -======= -function Zs(e, t, n, r, i, a) { ->>>>>>> Stashed changes -======= -function Zs(e, t, n, r, i, a) { ->>>>>>> Stashed changes let o = i - n; if (o === 0) return r; let s = t - n; return r + (e === 1 ? s / o : (e ** +s - 1) / (e ** +o - 1)) * (a - r); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Nc(e, t, n, r, i, a) { if (i - n === 0) return r; let o = Bi(r), s = Bi(a), c = s[2] - o[2]; @@ -9473,68 +5968,6 @@ function Nc(e, t, n, r, i, a) { //#endregion //#region node_modules/ol/style/IconImageCache.js var Pc = class { -======= -function Qs(e, t, n, r, i, a) { - if (i - n === 0) return r; -======= -function Qs(e, t, n, r, i, a) { - if (i - n === 0) return r; ->>>>>>> Stashed changes - let o = Xo(r), s = Xo(a), c = s[2] - o[2]; - return c > 180 ? c -= 360 : c < -180 && (c += 360), Zo([ - Zs(e, t, n, o[0], i, s[0]), - Zs(e, t, n, o[1], i, s[1]), - o[2] + Zs(e, t, n, 0, i, c), - Zs(e, t, n, r[3], i, a[3]) - ]); -} -//#endregion -//#region node_modules/ol/ImageState.js -var J = { - IDLE: 0, - LOADING: 1, - LOADED: 2, - ERROR: 3, - EMPTY: 4 -}; -//#endregion -//#region node_modules/ol/Image.js -function $s(e, t, n) { - let r = e, i = !0, a = !1, o = !1, s = [ne(r, M.LOAD, function() { - o = !0, a || t(); - })]; - return r.src && _ ? (a = !0, r.decode().then(function() { - i && t(); - }).catch(function(e) { - i && (o ? t() : n()); - })) : s.push(ne(r, M.ERROR, n)), function() { - i = !1, s.forEach(j); - }; -} -function ec(e, t) { - return new Promise((n, r) => { - function i() { - o(), n(e); - } - function a() { - o(), r(/* @__PURE__ */ Error("Image load error")); - } - function o() { - e.removeEventListener("load", i), e.removeEventListener("error", a); - } - e.addEventListener("load", i), e.addEventListener("error", a), t && (e.src = t); - }); -} -function tc(e, t) { - return t && (e.src = t), e.src && _ ? new Promise((t, n) => e.decode().then(() => t(e)).catch((r) => e.complete && e.width ? t(e) : n(r))) : ec(e); -} -//#endregion -//#region node_modules/ol/style/IconImageCache.js -var nc = class { -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes constructor() { this.cache_ = {}, this.patternCache_ = {}, this.cacheSize_ = 0, this.maxCacheSize_ = 1024; } @@ -9554,8 +5987,6 @@ var nc = class { } } get(e, t) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let n = Fc(e, t); return n in this.cache_ ? this.cache_[n] : null; } @@ -9568,37 +5999,11 @@ var nc = class { this.cache_[i] = n, r && (n.getImageState() === L.IDLE && n.load(), n.getImageState() === L.LOADING ? n.ready().then(() => { this.patternCache_[i] = ve().createPattern(n.getImage(1), "repeat"); }) : this.patternCache_[i] = ve().createPattern(n.getImage(1), "repeat")), a || ++this.cacheSize_; -======= - let n = rc(e, t); - return n in this.cache_ ? this.cache_[n] : null; - } - getPattern(e, t) { - let n = rc(e, t); - return n in this.patternCache_ ? this.patternCache_[n] : null; - } - set(e, t, n, r) { -======= - let n = rc(e, t); - return n in this.cache_ ? this.cache_[n] : null; - } - getPattern(e, t) { - let n = rc(e, t); - return n in this.patternCache_ ? this.patternCache_[n] : null; - } - set(e, t, n, r) { ->>>>>>> Stashed changes - let i = rc(e, t), a = i in this.cache_; - this.cache_[i] = n, r && (n.getImageState() === J.IDLE && n.load(), n.getImageState() === J.LOADING ? n.ready().then(() => { - this.patternCache_[i] = x().createPattern(n.getImage(1), "repeat"); - }) : this.patternCache_[i] = x().createPattern(n.getImage(1), "repeat")), a || ++this.cacheSize_; ->>>>>>> Stashed changes } setSize(e) { this.maxCacheSize_ = e, this.expire(); } }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Fc(e, t) { let n = t ? Ui(t) : "null"; return e + ":" + n; @@ -9606,53 +6011,17 @@ function Fc(e, t) { var Ic = new Pc(), Lc = null, Rc = class extends C { constructor(e, t, n, r, i) { super(), this.hitDetectionImage_ = null, this.image_ = e, this.crossOrigin_ = n?.crossOrigin, this.referrerPolicy_ = n?.referrerPolicy, this.canvas_ = {}, this.color_ = i, this.imageState_ = r === void 0 ? L.IDLE : r, this.size_ = e && e.width && e.height ? [e.width, e.height] : null, this.src_ = t, this.tainted_, this.ready_ = null; -======= -function rc(e, t) { - let n = t ? $o(t) : "null"; - return e + ":" + n; -} -var ic = new nc(), ac = null, oc = class extends ye { - constructor(e, t, n, r, i) { - super(), this.hitDetectionImage_ = null, this.image_ = e, this.crossOrigin_ = n?.crossOrigin, this.referrerPolicy_ = n?.referrerPolicy, this.canvas_ = {}, this.color_ = i, this.imageState_ = r === void 0 ? J.IDLE : r, this.size_ = e && e.width && e.height ? [e.width, e.height] : null, this.src_ = t, this.tainted_, this.ready_ = null; ->>>>>>> Stashed changes -======= -function rc(e, t) { - let n = t ? $o(t) : "null"; - return e + ":" + n; -} -var ic = new nc(), ac = null, oc = class extends ye { - constructor(e, t, n, r, i) { - super(), this.hitDetectionImage_ = null, this.image_ = e, this.crossOrigin_ = n?.crossOrigin, this.referrerPolicy_ = n?.referrerPolicy, this.canvas_ = {}, this.color_ = i, this.imageState_ = r === void 0 ? J.IDLE : r, this.size_ = e && e.width && e.height ? [e.width, e.height] : null, this.src_ = t, this.tainted_, this.ready_ = null; ->>>>>>> Stashed changes } initializeImage_() { this.image_ = new Image(), this.crossOrigin_ !== null && (this.image_.crossOrigin = this.crossOrigin_), this.referrerPolicy_ !== void 0 && (this.image_.referrerPolicy = this.referrerPolicy_); } isTainted_() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (this.tainted_ === void 0 && this.imageState_ === L.LOADED) { Lc ||= ge(1, 1, void 0, { willReadFrequently: !0 }), Lc.drawImage(this.image_, 0, 0); try { Lc.getImageData(0, 0, 1, 1), this.tainted_ = !1; } catch { Lc = null, this.tainted_ = !0; -======= - if (this.tainted_ === void 0 && this.imageState_ === J.LOADED) { - ac ||= y(1, 1, void 0, { willReadFrequently: !0 }), ac.drawImage(this.image_, 0, 0); - try { - ac.getImageData(0, 0, 1, 1), this.tainted_ = !1; - } catch { - ac = null, this.tainted_ = !0; ->>>>>>> Stashed changes -======= - if (this.tainted_ === void 0 && this.imageState_ === J.LOADED) { - ac ||= y(1, 1, void 0, { willReadFrequently: !0 }), ac.drawImage(this.image_, 0, 0); - try { - ac.getImageData(0, 0, 1, 1), this.tainted_ = !1; - } catch { - ac = null, this.tainted_ = !0; ->>>>>>> Stashed changes } } return this.tainted_ === !0; @@ -9661,24 +6030,10 @@ var ic = new nc(), ac = null, oc = class extends ye { this.dispatchEvent(s.CHANGE); } handleImageError_() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.imageState_ = L.ERROR, this.dispatchChangeEvent_(); } handleImageLoad_() { this.imageState_ = L.LOADED, this.size_ = [this.image_.width, this.image_.height], this.dispatchChangeEvent_(); -======= - this.imageState_ = J.ERROR, this.dispatchChangeEvent_(); - } - handleImageLoad_() { - this.imageState_ = J.LOADED, this.size_ = [this.image_.width, this.image_.height], this.dispatchChangeEvent_(); ->>>>>>> Stashed changes -======= - this.imageState_ = J.ERROR, this.dispatchChangeEvent_(); - } - handleImageLoad_() { - this.imageState_ = J.LOADED, this.size_ = [this.image_.width, this.image_.height], this.dispatchChangeEvent_(); ->>>>>>> Stashed changes } getImage(e) { return this.image_ || this.initializeImage_(), this.replaceColor_(e), this.canvas_[e] ? this.canvas_[e] : this.image_; @@ -9708,39 +6063,19 @@ var ic = new nc(), ac = null, oc = class extends ye { return this.src_; } load() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (this.imageState_ === L.IDLE) { this.image_ || this.initializeImage_(), this.imageState_ = L.LOADING; -======= - if (this.imageState_ === J.IDLE) { - this.image_ || this.initializeImage_(), this.imageState_ = J.LOADING; ->>>>>>> Stashed changes -======= - if (this.imageState_ === J.IDLE) { - this.image_ || this.initializeImage_(), this.imageState_ = J.LOADING; ->>>>>>> Stashed changes try { this.src_ !== void 0 && (this.image_.src = this.src_); } catch { this.handleImageError_(); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.image_ instanceof HTMLImageElement && We(this.image_, this.src_).then((e) => { -======= - this.image_ instanceof HTMLImageElement && tc(this.image_, this.src_).then((e) => { ->>>>>>> Stashed changes -======= - this.image_ instanceof HTMLImageElement && tc(this.image_, this.src_).then((e) => { ->>>>>>> Stashed changes this.image_ = e, this.handleImageLoad_(); }).catch(this.handleImageError_.bind(this)); } } replaceColor_(e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (!this.color_ || this.canvas_[e] || this.imageState_ !== L.LOADED) return; let t = this.image_, n = ge(Math.ceil(t.width * e), Math.ceil(t.height * e)), r = n.canvas; n.scale(e, e), n.drawImage(t, 0, 0), n.globalCompositeOperation = "multiply", n.fillStyle = ji(this.color_), n.fillRect(0, 0, r.width / e, r.height / e), n.globalCompositeOperation = "destination-in", n.drawImage(t, 0, 0), this.canvas_[e] = r; @@ -9751,38 +6086,12 @@ var ic = new nc(), ac = null, oc = class extends ye { else { let t = () => { (this.imageState_ === L.LOADED || this.imageState_ === L.ERROR) && (this.removeEventListener(s.CHANGE, t), e()); -======= - if (!this.color_ || this.canvas_[e] || this.imageState_ !== J.LOADED) return; - let t = this.image_, n = y(Math.ceil(t.width * e), Math.ceil(t.height * e)), r = n.canvas; - n.scale(e, e), n.drawImage(t, 0, 0), n.globalCompositeOperation = "multiply", n.fillStyle = Vo(this.color_), n.fillRect(0, 0, r.width / e, r.height / e), n.globalCompositeOperation = "destination-in", n.drawImage(t, 0, 0), this.canvas_[e] = r; - } - ready() { - return this.ready_ ||= new Promise((e) => { - if (this.imageState_ === J.LOADED || this.imageState_ === J.ERROR) e(); - else { - let t = () => { - (this.imageState_ === J.LOADED || this.imageState_ === J.ERROR) && (this.removeEventListener(M.CHANGE, t), e()); ->>>>>>> Stashed changes -======= - if (!this.color_ || this.canvas_[e] || this.imageState_ !== J.LOADED) return; - let t = this.image_, n = y(Math.ceil(t.width * e), Math.ceil(t.height * e)), r = n.canvas; - n.scale(e, e), n.drawImage(t, 0, 0), n.globalCompositeOperation = "multiply", n.fillStyle = Vo(this.color_), n.fillRect(0, 0, r.width / e, r.height / e), n.globalCompositeOperation = "destination-in", n.drawImage(t, 0, 0), this.canvas_[e] = r; - } - ready() { - return this.ready_ ||= new Promise((e) => { - if (this.imageState_ === J.LOADED || this.imageState_ === J.ERROR) e(); - else { - let t = () => { - (this.imageState_ === J.LOADED || this.imageState_ === J.ERROR) && (this.removeEventListener(M.CHANGE, t), e()); ->>>>>>> Stashed changes }; this.addEventListener(s.CHANGE, t); } }), this.ready_; } }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream function zc(e, t, n, r, i, a) { let o = t === void 0 ? void 0 : Ic.get(t, i); return o || (o = new Rc(e, e && "src" in e ? e.src || void 0 : t, n, r, i), Ic.set(t, i, o, a)), a && o && !Ic.getPattern(t, i) && Ic.set(t, i, o, a), o; @@ -9804,65 +6113,11 @@ function Vc(e) { //#endregion //#region node_modules/ol/render/canvas.js var Hc = "10px sans-serif", Uc = "#000", Wc = "round", Gc = [], Kc = "round", qc = "#000", Jc = "center", Yc = "middle", Xc = [ -======= -function sc(e, t, n, r, i, a) { - let o = t === void 0 ? void 0 : ic.get(t, i); - return o || (o = new oc(e, e && "src" in e ? e.src || void 0 : t, n, r, i), ic.set(t, i, o, a)), a && o && !ic.getPattern(t, i) && ic.set(t, i, o, a), o; -} -//#endregion -//#region node_modules/ol/colorlike.js -function cc(e) { - return e ? Array.isArray(e) ? es(e) : typeof e == "object" && "src" in e ? lc(e) : e : null; -} -function lc(e) { - if (!e.offset || !e.size) return ic.getPattern(e.src, e.color); - let t = e.src + ":" + e.offset, n = ic.getPattern(t, e.color); - if (n) return n; - let r = ic.get(e.src, null); - if (r.getImageState() !== J.LOADED) return null; - let i = y(e.size[0], e.size[1]); - return i.drawImage(r.getImage(1), e.offset[0], e.offset[1], e.size[0], e.size[1], 0, 0, e.size[0], e.size[1]), sc(i.canvas, t, void 0, J.LOADED, e.color, !0), ic.getPattern(t, e.color); -} -//#endregion -//#region node_modules/ol/render/canvas.js -var uc = "10px sans-serif", dc = "#000", fc = "round", pc = [], mc = "round", hc = "#000", gc = "center", _c = "middle", vc = [ ->>>>>>> Stashed changes -======= -function sc(e, t, n, r, i, a) { - let o = t === void 0 ? void 0 : ic.get(t, i); - return o || (o = new oc(e, e && "src" in e ? e.src || void 0 : t, n, r, i), ic.set(t, i, o, a)), a && o && !ic.getPattern(t, i) && ic.set(t, i, o, a), o; -} -//#endregion -//#region node_modules/ol/colorlike.js -function cc(e) { - return e ? Array.isArray(e) ? es(e) : typeof e == "object" && "src" in e ? lc(e) : e : null; -} -function lc(e) { - if (!e.offset || !e.size) return ic.getPattern(e.src, e.color); - let t = e.src + ":" + e.offset, n = ic.getPattern(t, e.color); - if (n) return n; - let r = ic.get(e.src, null); - if (r.getImageState() !== J.LOADED) return null; - let i = y(e.size[0], e.size[1]); - return i.drawImage(r.getImage(1), e.offset[0], e.offset[1], e.size[0], e.size[1], 0, 0, e.size[0], e.size[1]), sc(i.canvas, t, void 0, J.LOADED, e.color, !0), ic.getPattern(t, e.color); -} -//#endregion -//#region node_modules/ol/render/canvas.js -var uc = "10px sans-serif", dc = "#000", fc = "round", pc = [], mc = "round", hc = "#000", gc = "center", _c = "middle", vc = [ ->>>>>>> Stashed changes 0, 0, 0, 0 -<<<<<<< Updated upstream -<<<<<<< Updated upstream ], Zc = new A(), Qc = null, $c, el = {}, tl = /* @__PURE__ */ new Set([ -======= -], yc = new we(), bc = null, xc, Sc = {}, Cc = /* @__PURE__ */ new Set([ ->>>>>>> Stashed changes -======= -], yc = new we(), bc = null, xc, Sc = {}, Cc = /* @__PURE__ */ new Set([ ->>>>>>> Stashed changes "serif", "sans-serif", "monospace", @@ -9877,24 +6132,10 @@ var uc = "10px sans-serif", dc = "#000", fc = "round", pc = [], mc = "round", hc "math", "fangsong" ]); -<<<<<<< Updated upstream -<<<<<<< Updated upstream function nl(e, t, n) { return `${e} ${t} 16px "${n}"`; } var rl = (function() { -======= -function wc(e, t, n) { - return `${e} ${t} 16px "${n}"`; -} -var Tc = (function() { ->>>>>>> Stashed changes -======= -function wc(e, t, n) { - return `${e} ${t} 16px "${n}"`; -} -var Tc = (function() { ->>>>>>> Stashed changes let e, t; async function r(e) { await t.ready; @@ -9906,23 +6147,10 @@ var Tc = (function() { } async function i() { await t.ready; -<<<<<<< Updated upstream -<<<<<<< Updated upstream let a = !0, o = Zc.getProperties(), s = Object.keys(o).filter((e) => o[e] < 100); for (let e = s.length - 1; e >= 0; --e) { let t = s[e], i = o[t]; i < 100 && (await r(t) ? (n(el), Zc.set(t, 100)) : (i += 10, Zc.set(t, i, !0), i < 100 && (a = !1))); -======= -======= ->>>>>>> Stashed changes - let i = !0, a = yc.getProperties(), o = Object.keys(a).filter((e) => a[e] < 100); - for (let e = o.length - 1; e >= 0; --e) { - let t = o[e], r = a[t]; - r < 100 && (await n(t) ? (k(Sc), yc.set(t, 100)) : (r += 10, yc.set(t, r, !0), r < 100 && (i = !1))); -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes } e = void 0, a || (e = setTimeout(i, 100)); } @@ -9932,26 +6160,12 @@ var Tc = (function() { if (!r) return; let a = r.families, o = !1; for (let e of a) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (tl.has(e)) continue; let t = nl(r.style, r.weight, e); Zc.get(t) === void 0 && (Zc.set(t, 0, !0), o = !0); -======= - if (Cc.has(e)) continue; - let t = wc(i.style, i.weight, e); - yc.get(t) === void 0 && (yc.set(t, 0, !0), o = !0); ->>>>>>> Stashed changes -======= - if (Cc.has(e)) continue; - let t = wc(i.style, i.weight, e); - yc.get(t) === void 0 && (yc.set(t, 0, !0), o = !0); ->>>>>>> Stashed changes } o && (clearTimeout(e), e = setTimeout(i, 100)); }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream })(), il = (function() { let e; return function(t) { @@ -9962,36 +6176,10 @@ var Tc = (function() { n = (isNaN(Number(e.lineHeight)) ? 1.2 : Number(e.lineHeight)) * (r.actualBoundingBoxAscent + r.actualBoundingBoxDescent); } else e || (e = document.createElement("div"), e.innerHTML = "M", e.style.minHeight = "0", e.style.maxHeight = "none", e.style.height = "auto", e.style.padding = "0", e.style.border = "none", e.style.position = "absolute", e.style.display = "block", e.style.left = "-99999px"), e.style.font = t, document.body.appendChild(e), n = e.offsetHeight, document.body.removeChild(e); el[t] = n; -======= -})(), Ec = (function() { - let e; - return function(t) { - let n = Sc[t]; - if (n == null) { - if (g) { - let e = u(t), r = Dc(t, "Žg"); - n = (isNaN(Number(e.lineHeight)) ? 1.2 : Number(e.lineHeight)) * (r.actualBoundingBoxAscent + r.actualBoundingBoxDescent); - } else e || (e = document.createElement("div"), e.innerHTML = "M", e.style.minHeight = "0", e.style.maxHeight = "none", e.style.height = "auto", e.style.padding = "0", e.style.border = "none", e.style.position = "absolute", e.style.display = "block", e.style.left = "-99999px"), e.style.font = t, document.body.appendChild(e), n = e.offsetHeight, document.body.removeChild(e); - Sc[t] = n; ->>>>>>> Stashed changes -======= -})(), Ec = (function() { - let e; - return function(t) { - let n = Sc[t]; - if (n == null) { - if (g) { - let e = u(t), r = Dc(t, "Žg"); - n = (isNaN(Number(e.lineHeight)) ? 1.2 : Number(e.lineHeight)) * (r.actualBoundingBoxAscent + r.actualBoundingBoxDescent); - } else e || (e = document.createElement("div"), e.innerHTML = "M", e.style.minHeight = "0", e.style.maxHeight = "none", e.style.height = "auto", e.style.padding = "0", e.style.border = "none", e.style.position = "absolute", e.style.display = "block", e.style.left = "-99999px"), e.style.font = t, document.body.appendChild(e), n = e.offsetHeight, document.body.removeChild(e); - Sc[t] = n; ->>>>>>> Stashed changes } return n; }; })(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream function al(e, t) { return Qc ||= ge(1, 1), e != $c && (Qc.font = e, $c = Qc.font), Qc.measureText(t); } @@ -10004,34 +6192,6 @@ function sl(e, t, n) { return n[t] = r, r; } function cl(e, t) { -======= -function Dc(e, t) { - return bc ||= y(1, 1), e != xc && (bc.font = e, xc = bc.font), bc.measureText(t); -} -function Oc(e, t) { - return Dc(e, t).width; -} -function kc(e, t, n) { - if (t in n) return n[t]; - let r = t.split("\n").reduce((t, n) => Math.max(t, Oc(e, n)), 0); - return n[t] = r, r; -} -function Ac(e, t) { ->>>>>>> Stashed changes -======= -function Dc(e, t) { - return bc ||= y(1, 1), e != xc && (bc.font = e, xc = bc.font), bc.measureText(t); -} -function Oc(e, t) { - return Dc(e, t).width; -} -function kc(e, t, n) { - if (t in n) return n[t]; - let r = t.split("\n").reduce((t, n) => Math.max(t, Oc(e, n)), 0); - return n[t] = r, r; -} -function Ac(e, t) { ->>>>>>> Stashed changes let n = [], r = [], i = [], a = 0, o = 0, s = 0, c = 0; for (let l = 0, u = t.length; l <= u; l += 2) { let d = t[l]; @@ -10039,21 +6199,9 @@ function Ac(e, t) { a = Math.max(a, o), i.push(o), o = 0, s += c, c = 0; continue; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream let f = t[l + 1] || e.font, p = ol(f, d); n.push(p), o += p; let m = il(f); -======= - let f = t[l + 1] || e.font, p = Oc(f, d); - n.push(p), o += p; - let m = Ec(f); ->>>>>>> Stashed changes -======= - let f = t[l + 1] || e.font, p = Oc(f, d); - n.push(p), o += p; - let m = Ec(f); ->>>>>>> Stashed changes r.push(m), c = Math.max(c, m); } return { @@ -10064,44 +6212,18 @@ function Ac(e, t) { lineWidths: i }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function ll(e, t, n, r, i, a, o, s, c, l, u) { e.save(), n !== 1 && (e.globalAlpha === void 0 ? e.globalAlpha = (e) => e.globalAlpha *= n : e.globalAlpha *= n), t && e.transform.apply(e, t), r.contextInstructions ? (e.translate(c, l), e.scale(u[0], u[1]), ul(r, e)) : u[0] < 0 || u[1] < 0 ? (e.translate(c, l), e.scale(u[0], u[1]), e.drawImage(r, i, a, o, s, 0, 0, o, s)) : e.drawImage(r, i, a, o, s, c, l, o * u[0], s * u[1]), e.restore(); } function ul(e, t) { -======= -function jc(e, t, n, r, i, a, o, s, c, l, u) { - e.save(), n !== 1 && (e.globalAlpha === void 0 ? e.globalAlpha = (e) => e.globalAlpha *= n : e.globalAlpha *= n), t && e.transform.apply(e, t), r.contextInstructions ? (e.translate(c, l), e.scale(u[0], u[1]), Mc(r, e)) : u[0] < 0 || u[1] < 0 ? (e.translate(c, l), e.scale(u[0], u[1]), e.drawImage(r, i, a, o, s, 0, 0, o, s)) : e.drawImage(r, i, a, o, s, c, l, o * u[0], s * u[1]), e.restore(); -} -function Mc(e, t) { ->>>>>>> Stashed changes -======= -function jc(e, t, n, r, i, a, o, s, c, l, u) { - e.save(), n !== 1 && (e.globalAlpha === void 0 ? e.globalAlpha = (e) => e.globalAlpha *= n : e.globalAlpha *= n), t && e.transform.apply(e, t), r.contextInstructions ? (e.translate(c, l), e.scale(u[0], u[1]), Mc(r, e)) : u[0] < 0 || u[1] < 0 ? (e.translate(c, l), e.scale(u[0], u[1]), e.drawImage(r, i, a, o, s, 0, 0, o, s)) : e.drawImage(r, i, a, o, s, c, l, o * u[0], s * u[1]), e.restore(); -} -function Mc(e, t) { ->>>>>>> Stashed changes let n = e.contextInstructions; for (let e = 0, r = n.length; e < r; e += 2) Array.isArray(n[e + 1]) ? t[n[e]].apply(t, n[e + 1]) : t[n[e]] = n[e + 1]; } //#endregion //#region node_modules/ol/style/Image.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var dl = class e { constructor(e) { this.opacity_ = e.opacity, this.rotateWithView_ = e.rotateWithView, this.rotation_ = e.rotation, this.scale_ = e.scale, this.scaleArray_ = pi(e.scale), this.displacement_ = e.displacement, this.declutterMode_ = e.declutterMode; -======= -var Nc = class e { - constructor(e) { - this.opacity_ = e.opacity, this.rotateWithView_ = e.rotateWithView, this.rotation_ = e.rotation, this.scale_ = e.scale, this.scaleArray_ = rs(e.scale), this.displacement_ = e.displacement, this.declutterMode_ = e.declutterMode; ->>>>>>> Stashed changes -======= -var Nc = class e { - constructor(e) { - this.opacity_ = e.opacity, this.rotateWithView_ = e.rotateWithView, this.rotation_ = e.rotation, this.scale_ = e.scale, this.scaleArray_ = rs(e.scale), this.displacement_ = e.displacement, this.declutterMode_ = e.declutterMode; ->>>>>>> Stashed changes } clone() { let t = this.getScale(); @@ -10172,15 +6294,7 @@ var Nc = class e { this.rotation_ = e; } setScale(e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.scale_ = e, this.scaleArray_ = pi(e); -======= - this.scale_ = e, this.scaleArray_ = rs(e); ->>>>>>> Stashed changes -======= - this.scale_ = e, this.scaleArray_ = rs(e); ->>>>>>> Stashed changes } listenImageChange(e) { E(); @@ -10194,15 +6308,7 @@ var Nc = class e { ready() { return Promise.resolve(); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, fl = class e extends dl { -======= -}, Pc = class e extends Nc { ->>>>>>> Stashed changes -======= -}, Pc = class e extends Nc { ->>>>>>> Stashed changes constructor(e) { super({ opacity: 1, @@ -10211,15 +6317,7 @@ var Nc = class e { scale: e.scale === void 0 ? 1 : e.scale, displacement: e.displacement === void 0 ? [0, 0] : e.displacement, declutterMode: e.declutterMode -<<<<<<< Updated upstream -<<<<<<< Updated upstream }), this.hitDetectionCanvas_ = null, this.fill_ = e.fill === void 0 ? null : e.fill, this.origin_ = [0, 0], this.points_ = e.points, this.radius = e.radius, this.radius2_ = e.radius2, this.angle_ = e.angle === void 0 ? 0 : e.angle, this.stroke_ = e.stroke === void 0 ? null : e.stroke, this.size_, this.renderOptions_, this.imageState_ = this.fill_ && this.fill_.loading() ? L.LOADING : L.LOADED, this.imageState_ === L.LOADING && this.ready().then(() => this.imageState_ = L.LOADED), this.render(); -======= - }), this.hitDetectionCanvas_ = null, this.fill_ = e.fill === void 0 ? null : e.fill, this.origin_ = [0, 0], this.points_ = e.points, this.radius = e.radius, this.radius2_ = e.radius2, this.angle_ = e.angle === void 0 ? 0 : e.angle, this.stroke_ = e.stroke === void 0 ? null : e.stroke, this.size_, this.renderOptions_, this.imageState_ = this.fill_ && this.fill_.loading() ? J.LOADING : J.LOADED, this.imageState_ === J.LOADING && this.ready().then(() => this.imageState_ = J.LOADED), this.render(); ->>>>>>> Stashed changes -======= - }), this.hitDetectionCanvas_ = null, this.fill_ = e.fill === void 0 ? null : e.fill, this.origin_ = [0, 0], this.points_ = e.points, this.radius = e.radius, this.radius2_ = e.radius2, this.angle_ = e.angle === void 0 ? 0 : e.angle, this.stroke_ = e.stroke === void 0 ? null : e.stroke, this.size_, this.renderOptions_, this.imageState_ = this.fill_ && this.fill_.loading() ? J.LOADING : J.LOADED, this.imageState_ === J.LOADING && this.ready().then(() => this.imageState_ = J.LOADED), this.render(); ->>>>>>> Stashed changes } clone() { let t = this.getScale(), n = new e({ @@ -10254,30 +6352,12 @@ var Nc = class e { return this.hitDetectionCanvas_ ||= this.createHitDetectionCanvas_(this.renderOptions_), this.hitDetectionCanvas_; } getImage(e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let t = this.fill_?.getKey(), n = `${e},${this.angle_},${this.radius},${this.radius2_},${this.points_},${t}` + Object.values(this.renderOptions_).join(","), r = Ic.get(n, null)?.getImage(1); -======= - let t = this.fill_?.getKey(), n = `${e},${this.angle_},${this.radius},${this.radius2_},${this.points_},${t}` + Object.values(this.renderOptions_).join(","), r = ic.get(n, null)?.getImage(1); ->>>>>>> Stashed changes -======= - let t = this.fill_?.getKey(), n = `${e},${this.angle_},${this.radius},${this.radius2_},${this.points_},${t}` + Object.values(this.renderOptions_).join(","), r = ic.get(n, null)?.getImage(1); ->>>>>>> Stashed changes if (!r) { let t = this.renderOptions_, i = Math.ceil(t.size * e), a = ge(i, i); this.draw_(t, a, e), r = a.canvas; -<<<<<<< Updated upstream -<<<<<<< Updated upstream let o = new Rc(r, void 0, null, L.LOADED, null); Ic.set(n, null, o), createImageBitmap(r).then((e) => { -======= - let o = new oc(r, void 0, null, J.LOADED, null); - ic.set(n, null, o), createImageBitmap(r).then((e) => { ->>>>>>> Stashed changes -======= - let o = new oc(r, void 0, null, J.LOADED, null); - ic.set(n, null, o), createImageBitmap(r).then((e) => { ->>>>>>> Stashed changes o.setImage(e); }); } @@ -10341,18 +6421,8 @@ var Nc = class e { return m * 2; } createRenderOptions() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let e = Wc, t = Kc, n = 0, r = null, i = 0, a, o = 0; this.stroke_ && (a = Bc(this.stroke_.getColor() ?? "#000"), o = this.stroke_.getWidth() ?? 1, r = this.stroke_.getLineDash(), i = this.stroke_.getLineDashOffset() ?? 0, t = this.stroke_.getLineJoin() ?? "round", e = this.stroke_.getLineCap() ?? "round", n = this.stroke_.getMiterLimit() ?? 10); -======= - let e = fc, t = mc, n = 0, r = null, i = 0, a, o = 0; - this.stroke_ && (a = cc(this.stroke_.getColor() ?? "#000"), o = this.stroke_.getWidth() ?? 1, r = this.stroke_.getLineDash(), i = this.stroke_.getLineDashOffset() ?? 0, t = this.stroke_.getLineJoin() ?? "round", e = this.stroke_.getLineCap() ?? "round", n = this.stroke_.getMiterLimit() ?? 10); ->>>>>>> Stashed changes -======= - let e = fc, t = mc, n = 0, r = null, i = 0, a, o = 0; - this.stroke_ && (a = cc(this.stroke_.getColor() ?? "#000"), o = this.stroke_.getWidth() ?? 1, r = this.stroke_.getLineDash(), i = this.stroke_.getLineDashOffset() ?? 0, t = this.stroke_.getLineJoin() ?? "round", e = this.stroke_.getLineCap() ?? "round", n = this.stroke_.getMiterLimit() ?? 10); ->>>>>>> Stashed changes let s = this.calculateLineJoinSize_(t, o, n), c = Math.max(this.radius, this.radius2_ || 0), l = Math.ceil(2 * c + s); return { strokeStyle: a, @@ -10373,15 +6443,7 @@ var Nc = class e { draw_(e, t, n) { if (t.scale(n, n), t.translate(e.size / 2, e.size / 2), this.createPath_(t), this.fill_) { let e = this.fill_.getColor(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream e === null && (e = Uc), t.fillStyle = Bc(e), t.fill(); -======= - e === null && (e = dc), t.fillStyle = cc(e), t.fill(); ->>>>>>> Stashed changes -======= - e === null && (e = dc), t.fillStyle = cc(e), t.fill(); ->>>>>>> Stashed changes } e.strokeStyle && (t.strokeStyle = e.strokeStyle, t.lineWidth = e.strokeWidth, e.lineDash && (t.setLineDash(e.lineDash), t.lineDashOffset = e.lineDashOffset), t.lineCap = e.lineCap, t.lineJoin = e.lineJoin, t.miterLimit = e.miterLimit, t.stroke()); } @@ -10389,15 +6451,7 @@ var Nc = class e { let t; if (this.fill_) { let n = this.fill_.getColor(), r = 0; -<<<<<<< Updated upstream -<<<<<<< Updated upstream typeof n == "string" && (n = Ui(n)), n === null ? r = 1 : Array.isArray(n) && (r = n.length === 4 ? n[3] : 1), r === 0 && (t = ge(e.size, e.size), this.drawHitDetectionCanvas_(e, t)); -======= - typeof n == "string" && (n = $o(n)), n === null ? r = 1 : Array.isArray(n) && (r = n.length === 4 ? n[3] : 1), r === 0 && (t = y(e.size, e.size), this.drawHitDetectionCanvas_(e, t)); ->>>>>>> Stashed changes -======= - typeof n == "string" && (n = $o(n)), n === null ? r = 1 : Array.isArray(n) && (r = n.length === 4 ? n[3] : 1), r === 0 && (t = y(e.size, e.size), this.drawHitDetectionCanvas_(e, t)); ->>>>>>> Stashed changes } return t ? t.canvas : this.getImage(1); } @@ -10416,28 +6470,12 @@ var Nc = class e { } } drawHitDetectionCanvas_(e, t) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream t.translate(e.size / 2, e.size / 2), this.createPath_(t), t.fillStyle = Uc, t.fill(), e.strokeStyle && (t.strokeStyle = e.strokeStyle, t.lineWidth = e.strokeWidth, e.lineDash && (t.setLineDash(e.lineDash), t.lineDashOffset = e.lineDashOffset), t.lineJoin = e.lineJoin, t.miterLimit = e.miterLimit, t.stroke()); -======= - t.translate(e.size / 2, e.size / 2), this.createPath_(t), t.fillStyle = dc, t.fill(), e.strokeStyle && (t.strokeStyle = e.strokeStyle, t.lineWidth = e.strokeWidth, e.lineDash && (t.setLineDash(e.lineDash), t.lineDashOffset = e.lineDashOffset), t.lineJoin = e.lineJoin, t.miterLimit = e.miterLimit, t.stroke()); ->>>>>>> Stashed changes -======= - t.translate(e.size / 2, e.size / 2), this.createPath_(t), t.fillStyle = dc, t.fill(), e.strokeStyle && (t.strokeStyle = e.strokeStyle, t.lineWidth = e.strokeWidth, e.lineDash && (t.setLineDash(e.lineDash), t.lineDashOffset = e.lineDashOffset), t.lineJoin = e.lineJoin, t.miterLimit = e.miterLimit, t.stroke()); ->>>>>>> Stashed changes } ready() { return this.fill_ ? this.fill_.ready() : Promise.resolve(); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, pl = class e extends fl { -======= -}, Fc = class e extends Pc { ->>>>>>> Stashed changes -======= -}, Fc = class e extends Pc { ->>>>>>> Stashed changes constructor(e) { e ||= { radius: 5 }, super({ points: Infinity, @@ -10464,15 +6502,7 @@ var Nc = class e { }); return n.setOpacity(this.getOpacity()), n; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, ml = class e { -======= -}, Ic = class e { ->>>>>>> Stashed changes -======= -}, Ic = class e { ->>>>>>> Stashed changes constructor(e) { e ||= {}, this.patternImage_ = null, this.color_ = null, e.color !== void 0 && this.setColor(e.color); } @@ -10485,38 +6515,16 @@ var Nc = class e { } setColor(e) { if (typeof e == "object" && e && "src" in e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let t = zc(null, e.src, { crossOrigin: "anonymous" }, void 0, e.offset ? null : e.color ? e.color : null, !(e.offset && e.size)); t.ready().then(() => { this.patternImage_ = null; }), t.getImageState() === L.IDLE && t.load(), t.getImageState() === L.LOADING && (this.patternImage_ = t); -======= - let t = sc(null, e.src, { crossOrigin: "anonymous" }, void 0, e.offset ? null : e.color ? e.color : null, !(e.offset && e.size)); - t.ready().then(() => { - this.patternImage_ = null; - }), t.getImageState() === J.IDLE && t.load(), t.getImageState() === J.LOADING && (this.patternImage_ = t); ->>>>>>> Stashed changes -======= - let t = sc(null, e.src, { crossOrigin: "anonymous" }, void 0, e.offset ? null : e.color ? e.color : null, !(e.offset && e.size)); - t.ready().then(() => { - this.patternImage_ = null; - }), t.getImageState() === J.IDLE && t.load(), t.getImageState() === J.LOADING && (this.patternImage_ = t); ->>>>>>> Stashed changes } this.color_ = e; } getKey() { let e = this.getColor(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream return e ? e instanceof CanvasPattern || e instanceof CanvasGradient ? O(e) : typeof e == "object" && "src" in e ? e.src + ":" + e.offset : Ui(e).toString() : ""; -======= - return e ? e instanceof CanvasPattern || e instanceof CanvasGradient ? F(e) : typeof e == "object" && "src" in e ? e.src + ":" + e.offset : $o(e).toString() : ""; ->>>>>>> Stashed changes -======= - return e ? e instanceof CanvasPattern || e instanceof CanvasGradient ? F(e) : typeof e == "object" && "src" in e ? e.src + ":" + e.offset : $o(e).toString() : ""; ->>>>>>> Stashed changes } loading() { return !!this.patternImage_; @@ -10527,24 +6535,10 @@ var Nc = class e { }; //#endregion //#region node_modules/ol/style/Icon.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function hl(e, t, n, r) { return n !== void 0 && r !== void 0 ? [n / e, r / t] : n === void 0 ? r === void 0 ? 1 : r / t : n / e; } var gl = class e extends dl { -======= -function Lc(e, t, n, r) { - return n !== void 0 && r !== void 0 ? [n / e, r / t] : n === void 0 ? r === void 0 ? 1 : r / t : n / e; -} -var Rc = class e extends Nc { ->>>>>>> Stashed changes -======= -function Lc(e, t, n, r) { - return n !== void 0 && r !== void 0 ? [n / e, r / t] : n === void 0 ? r === void 0 ? 1 : r / t : n / e; -} -var Rc = class e extends Nc { ->>>>>>> Stashed changes constructor(e) { e ||= {}; let t = e.opacity === void 0 ? 1 : e.opacity, n = e.rotation === void 0 ? 0 : e.rotation, r = e.scale === void 0 ? 1 : e.scale, i = e.rotateWithView !== void 0 && e.rotateWithView; @@ -10559,15 +6553,7 @@ var Rc = class e extends Nc { let a = e.img === void 0 ? null : e.img, o = e.src; z(!(o !== void 0 && a), "`image` and `src` cannot be provided at the same time"), (o === void 0 || o.length === 0) && a && (o = a.src || O(a)), z(o !== void 0 && o.length > 0, "A defined and non-empty `src` or `image` must be provided"), z(e.width === void 0 && e.height === void 0 || e.scale === void 0, "`width` or `height` cannot be provided together with `scale`"); let s; -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (e.src === void 0 ? a !== void 0 && (s = "complete" in a ? a.complete ? a.src ? L.LOADED : L.IDLE : L.LOADING : L.LOADED) : s = L.IDLE, this.color_ = e.color === void 0 ? null : Ui(e.color), this.iconImage_ = zc(a, o, { -======= - if (e.src === void 0 ? a !== void 0 && (s = "complete" in a ? a.complete ? a.src ? J.LOADED : J.IDLE : J.LOADING : J.LOADED) : s = J.IDLE, this.color_ = e.color === void 0 ? null : $o(e.color), this.iconImage_ = sc(a, o, { ->>>>>>> Stashed changes -======= - if (e.src === void 0 ? a !== void 0 && (s = "complete" in a ? a.complete ? a.src ? J.LOADED : J.IDLE : J.LOADING : J.LOADED) : s = J.IDLE, this.color_ = e.color === void 0 ? null : $o(e.color), this.iconImage_ = sc(a, o, { ->>>>>>> Stashed changes crossOrigin: this.crossOrigin_, referrerPolicy: this.referrerPolicy_ }, s, this.color_), this.offset_ = e.offset === void 0 ? [0, 0] : e.offset, this.offsetOrigin_ = e.offsetOrigin === void 0 ? "top-left" : e.offsetOrigin, this.origin_ = null, this.size_ = e.size === void 0 ? null : e.size, this.initialOptions_, e.width !== void 0 || e.height !== void 0) { @@ -10581,29 +6567,13 @@ var Rc = class e extends Nc { let t = () => { if (this.unlistenImageChange(t), !this.initialOptions_) return; let n = this.iconImage_.getSize(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.setScale(hl(n[0], n[1], e.width, e.height)); -======= - this.setScale(Lc(n[0], n[1], e.width, e.height)); ->>>>>>> Stashed changes -======= - this.setScale(Lc(n[0], n[1], e.width, e.height)); ->>>>>>> Stashed changes }; this.listenImageChange(t); return; } } -<<<<<<< Updated upstream -<<<<<<< Updated upstream t !== void 0 && this.setScale(hl(t, n, e.width, e.height)); -======= - t !== void 0 && this.setScale(Lc(t, n, e.width, e.height)); ->>>>>>> Stashed changes -======= - t !== void 0 && this.setScale(Lc(t, n, e.width, e.height)); ->>>>>>> Stashed changes } } clone() { @@ -10655,27 +6625,11 @@ var Rc = class e extends Nc { return this.color_; } setColor(e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let t = e ? Ui(e) : null; if (this.color_ === t || this.color_ && t && this.color_.length === t.length && this.color_.every((e, n) => e === t[n])) return; this.color_ = t; let n = this.getSrc(), r = n === void 0 ? this.getHitDetectionImage() : null, i = n === void 0 ? this.iconImage_.getImageState() : L.IDLE; this.iconImage_ = zc(r, n, { -======= - let t = e ? $o(e) : null; - if (this.color_ === t || this.color_ && t && this.color_.length === t.length && this.color_.every((e, n) => e === t[n])) return; - this.color_ = t; - let n = this.getSrc(), r = n === void 0 ? this.getHitDetectionImage() : null, i = n === void 0 ? this.iconImage_.getImageState() : J.IDLE; - this.iconImage_ = sc(r, n, { ->>>>>>> Stashed changes -======= - let t = e ? $o(e) : null; - if (this.color_ === t || this.color_ && t && this.color_.length === t.length && this.color_.every((e, n) => e === t[n])) return; - this.color_ = t; - let n = this.getSrc(), r = n === void 0 ? this.getHitDetectionImage() : null, i = n === void 0 ? this.iconImage_.getImageState() : J.IDLE; - this.iconImage_ = sc(r, n, { ->>>>>>> Stashed changes crossOrigin: this.crossOrigin_, referrerPolicy: this.referrerPolicy_ }, i, this.color_); @@ -10709,24 +6663,10 @@ var Rc = class e extends Nc { return this.iconImage_.getSrc(); } setSrc(e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.iconImage_ = zc(null, e, { crossOrigin: this.crossOrigin_, referrerPolicy: this.referrerPolicy_ }, L.IDLE, this.color_); -======= - this.iconImage_ = sc(null, e, { - crossOrigin: this.crossOrigin_, - referrerPolicy: this.referrerPolicy_ - }, J.IDLE, this.color_); ->>>>>>> Stashed changes -======= - this.iconImage_ = sc(null, e, { - crossOrigin: this.crossOrigin_, - referrerPolicy: this.referrerPolicy_ - }, J.IDLE, this.color_); ->>>>>>> Stashed changes } getSize() { return this.size_ ? this.size_ : this.iconImage_.getSize(); @@ -10734,28 +6674,12 @@ var Rc = class e extends Nc { getWidth() { let e = this.getScaleArray(); if (this.size_) return this.size_[0] * e[0]; -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (this.iconImage_.getImageState() == L.LOADED) return this.iconImage_.getSize()[0] * e[0]; -======= - if (this.iconImage_.getImageState() == J.LOADED) return this.iconImage_.getSize()[0] * e[0]; ->>>>>>> Stashed changes -======= - if (this.iconImage_.getImageState() == J.LOADED) return this.iconImage_.getSize()[0] * e[0]; ->>>>>>> Stashed changes } getHeight() { let e = this.getScaleArray(); if (this.size_) return this.size_[1] * e[1]; -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (this.iconImage_.getImageState() == L.LOADED) return this.iconImage_.getSize()[1] * e[1]; -======= - if (this.iconImage_.getImageState() == J.LOADED) return this.iconImage_.getSize()[1] * e[1]; ->>>>>>> Stashed changes -======= - if (this.iconImage_.getImageState() == J.LOADED) return this.iconImage_.getSize()[1] * e[1]; ->>>>>>> Stashed changes } setScale(e) { delete this.initialOptions_, super.setScale(e); @@ -10772,15 +6696,7 @@ var Rc = class e extends Nc { ready() { return this.iconImage_.ready(); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, _l = class e { -======= -}, zc = class e { ->>>>>>> Stashed changes -======= -}, zc = class e { ->>>>>>> Stashed changes constructor(e) { e ||= {}, this.color_ = e.color === void 0 ? null : e.color, this.lineCap_ = e.lineCap, this.lineDash_ = e.lineDash === void 0 ? null : e.lineDash, this.lineDashOffset_ = e.lineDashOffset, this.lineJoin_ = e.lineJoin, this.miterLimit_ = e.miterLimit, this.offset_ = e.offset, this.width_ = e.width; } @@ -10845,21 +6761,9 @@ var Rc = class e extends Nc { setWidth(e) { this.width_ = e; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, vl = class e { constructor(e) { e ||= {}, this.geometry_ = null, this.geometryFunction_ = Sl, e.geometry !== void 0 && this.setGeometry(e.geometry), this.fill_ = e.fill === void 0 ? null : e.fill, this.image_ = e.image === void 0 ? null : e.image, this.renderer_ = e.renderer === void 0 ? null : e.renderer, this.hitDetectionRenderer_ = e.hitDetectionRenderer === void 0 ? null : e.hitDetectionRenderer, this.stroke_ = e.stroke === void 0 ? null : e.stroke, this.text_ = e.text === void 0 ? null : e.text, this.zIndex_ = e.zIndex; -======= -}, Bc = class e { - constructor(e) { - e ||= {}, this.geometry_ = null, this.geometryFunction_ = Wc, e.geometry !== void 0 && this.setGeometry(e.geometry), this.fill_ = e.fill === void 0 ? null : e.fill, this.image_ = e.image === void 0 ? null : e.image, this.renderer_ = e.renderer === void 0 ? null : e.renderer, this.hitDetectionRenderer_ = e.hitDetectionRenderer === void 0 ? null : e.hitDetectionRenderer, this.stroke_ = e.stroke === void 0 ? null : e.stroke, this.text_ = e.text === void 0 ? null : e.text, this.zIndex_ = e.zIndex; ->>>>>>> Stashed changes -======= -}, Bc = class e { - constructor(e) { - e ||= {}, this.geometry_ = null, this.geometryFunction_ = Wc, e.geometry !== void 0 && this.setGeometry(e.geometry), this.fill_ = e.fill === void 0 ? null : e.fill, this.image_ = e.image === void 0 ? null : e.image, this.renderer_ = e.renderer === void 0 ? null : e.renderer, this.hitDetectionRenderer_ = e.hitDetectionRenderer === void 0 ? null : e.hitDetectionRenderer, this.stroke_ = e.stroke === void 0 ? null : e.stroke, this.text_ = e.text === void 0 ? null : e.text, this.zIndex_ = e.zIndex; ->>>>>>> Stashed changes } clone() { let t = this.getGeometry(); @@ -10923,29 +6827,13 @@ var Rc = class e extends Nc { return t.get(e); } : e ? e !== void 0 && (this.geometryFunction_ = function() { return e; -<<<<<<< Updated upstream -<<<<<<< Updated upstream }) : this.geometryFunction_ = Sl, this.geometry_ = e; -======= - }) : this.geometryFunction_ = Wc, this.geometry_ = e; ->>>>>>> Stashed changes -======= - }) : this.geometryFunction_ = Wc, this.geometry_ = e; ->>>>>>> Stashed changes } setZIndex(e) { this.zIndex_ = e; } }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream function yl(e) { -======= -function Vc(e) { ->>>>>>> Stashed changes -======= -function Vc(e) { ->>>>>>> Stashed changes let t; if (typeof e == "function") t = e; else { @@ -10956,8 +6844,6 @@ function Vc(e) { } return t; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream var bl = null; function xl(e, t) { if (!bl) { @@ -10967,28 +6853,6 @@ function xl(e, t) { }); bl = [new vl({ image: new pl({ -======= -var Hc = null; -function Uc(e, t) { - if (!Hc) { - let e = new Ic({ color: "rgba(255,255,255,0.4)" }), t = new zc({ - color: "#3399CC", - width: 1.25 - }); - Hc = [new Bc({ - image: new Fc({ ->>>>>>> Stashed changes -======= -var Hc = null; -function Uc(e, t) { - if (!Hc) { - let e = new Ic({ color: "rgba(255,255,255,0.4)" }), t = new zc({ - color: "#3399CC", - width: 1.25 - }); - Hc = [new Bc({ - image: new Fc({ ->>>>>>> Stashed changes fill: e, stroke: t, radius: 5 @@ -10997,40 +6861,16 @@ function Uc(e, t) { stroke: t })]; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream return bl; } function Sl(e) { -======= - return Hc; -} -function Wc(e) { ->>>>>>> Stashed changes -======= - return Hc; -} -function Wc(e) { ->>>>>>> Stashed changes return e.getGeometry(); } //#endregion //#region node_modules/ol/style/Text.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var Cl = "#333", wl = class e { constructor(e) { e ||= {}, this.font_ = e.font, this.rotation_ = e.rotation, this.rotateWithView_ = e.rotateWithView, this.keepUpright_ = e.keepUpright, this.scale_ = e.scale, this.scaleArray_ = pi(e.scale === void 0 ? 1 : e.scale), this.text_ = e.text, this.textAlign_ = e.textAlign, this.justify_ = e.justify, this.repeat_ = e.repeat, this.textBaseline_ = e.textBaseline, this.fill_ = e.fill === void 0 ? new ml({ color: Cl }) : e.fill, this.maxAngle_ = e.maxAngle === void 0 ? Math.PI / 4 : e.maxAngle, this.placement_ = e.placement === void 0 ? "point" : e.placement, this.overflow_ = !!e.overflow, this.stroke_ = e.stroke === void 0 ? null : e.stroke, this.offsetX_ = e.offsetX === void 0 ? 0 : e.offsetX, this.offsetY_ = e.offsetY === void 0 ? 0 : e.offsetY, this.backgroundFill_ = e.backgroundFill ? e.backgroundFill : null, this.backgroundStroke_ = e.backgroundStroke ? e.backgroundStroke : null, this.padding_ = e.padding === void 0 ? null : e.padding, this.declutterMode_ = e.declutterMode; -======= -var Gc = "#333", Kc = class e { - constructor(e) { - e ||= {}, this.font_ = e.font, this.rotation_ = e.rotation, this.rotateWithView_ = e.rotateWithView, this.keepUpright_ = e.keepUpright, this.scale_ = e.scale, this.scaleArray_ = rs(e.scale === void 0 ? 1 : e.scale), this.text_ = e.text, this.textAlign_ = e.textAlign, this.justify_ = e.justify, this.repeat_ = e.repeat, this.textBaseline_ = e.textBaseline, this.fill_ = e.fill === void 0 ? new Ic({ color: Gc }) : e.fill, this.maxAngle_ = e.maxAngle === void 0 ? Math.PI / 4 : e.maxAngle, this.placement_ = e.placement === void 0 ? "point" : e.placement, this.overflow_ = !!e.overflow, this.stroke_ = e.stroke === void 0 ? null : e.stroke, this.offsetX_ = e.offsetX === void 0 ? 0 : e.offsetX, this.offsetY_ = e.offsetY === void 0 ? 0 : e.offsetY, this.backgroundFill_ = e.backgroundFill ? e.backgroundFill : null, this.backgroundStroke_ = e.backgroundStroke ? e.backgroundStroke : null, this.padding_ = e.padding === void 0 ? null : e.padding, this.declutterMode_ = e.declutterMode; ->>>>>>> Stashed changes -======= -var Gc = "#333", Kc = class e { - constructor(e) { - e ||= {}, this.font_ = e.font, this.rotation_ = e.rotation, this.rotateWithView_ = e.rotateWithView, this.keepUpright_ = e.keepUpright, this.scale_ = e.scale, this.scaleArray_ = rs(e.scale === void 0 ? 1 : e.scale), this.text_ = e.text, this.textAlign_ = e.textAlign, this.justify_ = e.justify, this.repeat_ = e.repeat, this.textBaseline_ = e.textBaseline, this.fill_ = e.fill === void 0 ? new Ic({ color: Gc }) : e.fill, this.maxAngle_ = e.maxAngle === void 0 ? Math.PI / 4 : e.maxAngle, this.placement_ = e.placement === void 0 ? "point" : e.placement, this.overflow_ = !!e.overflow, this.stroke_ = e.stroke === void 0 ? null : e.stroke, this.offsetX_ = e.offsetX === void 0 ? 0 : e.offsetX, this.offsetY_ = e.offsetY === void 0 ? 0 : e.offsetY, this.backgroundFill_ = e.backgroundFill ? e.backgroundFill : null, this.backgroundStroke_ = e.backgroundStroke ? e.backgroundStroke : null, this.padding_ = e.padding === void 0 ? null : e.padding, this.declutterMode_ = e.declutterMode; ->>>>>>> Stashed changes } clone() { let t = this.getScale(); @@ -11048,15 +6888,7 @@ var Gc = "#333", Kc = class e { textAlign: this.getTextAlign(), justify: this.getJustify(), textBaseline: this.getTextBaseline(), -<<<<<<< Updated upstream -<<<<<<< Updated upstream fill: this.getFill() instanceof ml ? this.getFill().clone() : this.getFill(), -======= - fill: this.getFill() instanceof Ic ? this.getFill().clone() : this.getFill(), ->>>>>>> Stashed changes -======= - fill: this.getFill() instanceof Ic ? this.getFill().clone() : this.getFill(), ->>>>>>> Stashed changes stroke: this.getStroke() ? this.getStroke().clone() : void 0, offsetX: this.getOffsetX(), offsetY: this.getOffsetY(), @@ -11166,15 +6998,7 @@ var Gc = "#333", Kc = class e { this.rotation_ = e; } setScale(e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.scale_ = e, this.scaleArray_ = pi(e === void 0 ? 1 : e); -======= - this.scale_ = e, this.scaleArray_ = rs(e === void 0 ? 1 : e); ->>>>>>> Stashed changes -======= - this.scale_ = e, this.scaleArray_ = rs(e === void 0 ? 1 : e); ->>>>>>> Stashed changes } setStroke(e) { this.stroke_ = e; @@ -11203,37 +7027,17 @@ var Gc = "#333", Kc = class e { }; //#endregion //#region node_modules/ol/render/canvas/style.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Tl(e) { return !0; } function El(e, t) { t ??= $s(); let n = kl(e, t), r = bc(); -======= -function qc(e) { - return !0; -} -function Jc(e, t) { - t ??= vs(); - let n = Zc(e, t), r = zs(); ->>>>>>> Stashed changes -======= -function qc(e) { - return !0; -} -function Jc(e, t) { - t ??= vs(); - let n = Zc(e, t), r = zs(); ->>>>>>> Stashed changes return function(e, i) { if (r.properties = e.getPropertiesInternal(), r.resolution = i, t.featureId) { let t = e.getId(); t === void 0 ? r.featureId = null : r.featureId = t; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream return t.geometryType && (r.geometryType = yc(e.getGeometry())), n(r); }; } @@ -11242,40 +7046,12 @@ function Dl(e, t) { let n = e.length, r = Array(n); for (let i = 0; i < n; ++i) r[i] = Al(e[i], t); let i = bc(), a = Array(n); -======= - return t.geometryType && (r.geometryType = Rs(e.getGeometry())), n(r); - }; -} -function Yc(e, t) { - t ??= vs(); - let n = e.length, r = Array(n); - for (let i = 0; i < n; ++i) r[i] = Qc(e[i], t); - let i = zs(), a = Array(n); ->>>>>>> Stashed changes -======= - return t.geometryType && (r.geometryType = Rs(e.getGeometry())), n(r); - }; -} -function Yc(e, t) { - t ??= vs(); - let n = e.length, r = Array(n); - for (let i = 0; i < n; ++i) r[i] = Qc(e[i], t); - let i = zs(), a = Array(n); ->>>>>>> Stashed changes return function(e, o) { if (i.properties = e.getPropertiesInternal(), i.resolution = o, t.featureId) { let t = e.getId(); t === void 0 ? i.featureId = null : i.featureId = t; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream t.geometryType && (i.geometryType = yc(e.getGeometry())); -======= - t.geometryType && (i.geometryType = Rs(e.getGeometry())); ->>>>>>> Stashed changes -======= - t.geometryType && (i.geometryType = Rs(e.getGeometry())); ->>>>>>> Stashed changes let s = 0; for (let e = 0; e < n; ++e) { let t = r[e](i); @@ -11284,18 +7060,8 @@ function Yc(e, t) { return a.length = s, a; }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Ol(e, t) { if (t ??= $s(), !Array.isArray(e)) return Dl([e], t); -======= -function Xc(e, t) { - if (t ??= vs(), !Array.isArray(e)) return Yc([e], t); ->>>>>>> Stashed changes -======= -function Xc(e, t) { - if (t ??= vs(), !Array.isArray(e)) return Yc([e], t); ->>>>>>> Stashed changes let n = e.length; if ("style" in e[0]) { let r = Array(n); @@ -11304,8 +7070,6 @@ function Xc(e, t) { if (!("style" in n)) throw Error("Expected a list of rules with a style property"); r[t] = n; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream return El(r, t); } return Dl(e, t); @@ -11319,36 +7083,6 @@ function kl(e, t) { o = Array(e); for (let r = 0; r < e; ++r) o[r] = Al(n.style[r], t); } else o = [Al(n.style, t)]; -======= - return Jc(r, t); - } - return Yc(e, t); -} -function Zc(e, t) { - let n = e.length, r = Array(n); - for (let i = 0; i < n; ++i) { - let n = e[i], a = "filter" in n ? Bs(n.filter, as, t) : qc, o; - if (Array.isArray(n.style)) { - let e = n.style.length; - o = Array(e); - for (let r = 0; r < e; ++r) o[r] = Qc(n.style[r], t); - } else o = [Qc(n.style, t)]; ->>>>>>> Stashed changes -======= - return Jc(r, t); - } - return Yc(e, t); -} -function Zc(e, t) { - let n = e.length, r = Array(n); - for (let i = 0; i < n; ++i) { - let n = e[i], a = "filter" in n ? Bs(n.filter, as, t) : qc, o; - if (Array.isArray(n.style)) { - let e = n.style.length; - o = Array(e); - for (let r = 0; r < e; ++r) o[r] = Qc(n.style[r], t); - } else o = [Qc(n.style, t)]; ->>>>>>> Stashed changes r[i] = { filter: a, styles: o @@ -11369,23 +7103,10 @@ function Zc(e, t) { return i; }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Al(e, t) { let n = jl(e, "", t), i = Ml(e, "", t), a = Nl(e, t), o = Pl(e, t), s = zl(e, "z-index", t); if (!n && !i && !a && !o && !r(e)) throw Error("No fill, stroke, point, or text symbolizer properties in style: " + JSON.stringify(e)); let c = new vl(); -======= -======= ->>>>>>> Stashed changes -function Qc(e, t) { - let n = $c(e, "", t), r = el(e, "", t), i = tl(e, t), a = nl(e, t), o = sl(e, "z-index", t); - if (!n && !r && !i && !a && !te(e)) throw Error("No fill, stroke, point, or text symbolizer properties in style: " + JSON.stringify(e)); - let s = new Bc(); -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes return function(e) { let t = !0; if (n) { @@ -11407,8 +7128,6 @@ function Qc(e, t) { return s && c.setZIndex(s(e)), t ? null : c; }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function jl(e, t, n) { let r; if (t + "fill-pattern-src" in e) r = Vl(e, t + "fill-", n); @@ -11431,87 +7150,25 @@ function Ml(e, t, n) { if (i) { let t = i(e); if (t === xi) return null; -======= -function $c(e, t, n) { - let r; - if (t + "fill-pattern-src" in e) r = ll(e, t + "fill-", n); - else { - if (e[t + "fill-color"] === "none") return (e) => null; - r = dl(e, t + "fill-color", n); - } - if (!r) return null; - let i = new Ic(); - return function(e) { - let t = r(e); - return t === jo ? null : (i.setColor(t), i); + d.setColor(t); + } + if (r && d.setWidth(r(e)), a) { + let t = a(e); + if (t !== "butt" && t !== "round" && t !== "square") throw Error("Expected butt, round, or square line cap"); + d.setLineCap(t); + } + if (o) { + let t = o(e); + if (t !== "bevel" && t !== "round" && t !== "miter") throw Error("Expected bevel, round, or miter line join"); + d.setLineJoin(t); + } + return s && d.setLineDash(s(e)), c && d.setLineDashOffset(c(e)), l && d.setMiterLimit(l(e)), u && d.setOffset(u(e)), d; }; } -function el(e, t, n) { - let r = sl(e, t + "stroke-width", n), i = dl(e, t + "stroke-color", n); - if (!r && !i) return null; - let a = cl(e, t + "stroke-line-cap", n), o = cl(e, t + "stroke-line-join", n), s = fl(e, t + "stroke-line-dash", n), c = sl(e, t + "stroke-line-dash-offset", n), l = sl(e, t + "stroke-miter-limit", n), u = sl(e, t + "stroke-offset", n), d = new zc(); - return function(e) { - if (i) { - let t = i(e); - if (t === jo) return null; ->>>>>>> Stashed changes -======= -function $c(e, t, n) { - let r; - if (t + "fill-pattern-src" in e) r = ll(e, t + "fill-", n); - else { - if (e[t + "fill-color"] === "none") return (e) => null; - r = dl(e, t + "fill-color", n); - } - if (!r) return null; - let i = new Ic(); - return function(e) { - let t = r(e); - return t === jo ? null : (i.setColor(t), i); - }; -} -function el(e, t, n) { - let r = sl(e, t + "stroke-width", n), i = dl(e, t + "stroke-color", n); - if (!r && !i) return null; - let a = cl(e, t + "stroke-line-cap", n), o = cl(e, t + "stroke-line-join", n), s = fl(e, t + "stroke-line-dash", n), c = sl(e, t + "stroke-line-dash-offset", n), l = sl(e, t + "stroke-miter-limit", n), u = sl(e, t + "stroke-offset", n), d = new zc(); - return function(e) { - if (i) { - let t = i(e); - if (t === jo) return null; ->>>>>>> Stashed changes - d.setColor(t); - } - if (r && d.setWidth(r(e)), a) { - let t = a(e); - if (t !== "butt" && t !== "round" && t !== "square") throw Error("Expected butt, round, or square line cap"); - d.setLineCap(t); - } - if (o) { - let t = o(e); - if (t !== "bevel" && t !== "round" && t !== "miter") throw Error("Expected bevel, round, or miter line join"); - d.setLineJoin(t); - } - return s && d.setLineDash(s(e)), c && d.setLineDashOffset(c(e)), l && d.setMiterLimit(l(e)), u && d.setOffset(u(e)), d; - }; -} -<<<<<<< Updated upstream -<<<<<<< Updated upstream -function Nl(e, t) { - let n = "text-", r = Bl(e, "text-value", t); - if (!r) return null; - let i = jl(e, n, t), a = jl(e, "text-background-", t), o = Ml(e, n, t), s = Ml(e, "text-background-", t), c = Bl(e, "text-font", t), l = zl(e, "text-max-angle", t), u = zl(e, "text-offset-x", t), d = zl(e, "text-offset-y", t), f = Hl(e, "text-overflow", t), p = Bl(e, "text-placement", t), m = zl(e, "text-repeat", t), h = ql(e, "text-scale", t), g = Hl(e, "text-rotate-with-view", t), _ = zl(e, "text-rotation", t), v = Bl(e, "text-align", t), y = Bl(e, "text-justify", t), b = Bl(e, "text-baseline", t), x = Hl(e, "text-keep-upright", t), S = Wl(e, "text-padding", t), C = new wl({ declutterMode: eu(e, "text-declutter-mode") }); -======= -function tl(e, t) { - let n = "text-", r = cl(e, "text-value", t); - if (!r) return null; - let i = $c(e, n, t), a = $c(e, "text-background-", t), o = el(e, n, t), s = el(e, "text-background-", t), c = cl(e, "text-font", t), l = sl(e, "text-max-angle", t), u = sl(e, "text-offset-x", t), d = sl(e, "text-offset-y", t), f = ul(e, "text-overflow", t), p = cl(e, "text-placement", t), m = sl(e, "text-repeat", t), h = hl(e, "text-scale", t), g = ul(e, "text-rotate-with-view", t), _ = sl(e, "text-rotation", t), v = cl(e, "text-align", t), y = cl(e, "text-justify", t), b = cl(e, "text-baseline", t), x = ul(e, "text-keep-upright", t), S = fl(e, "text-padding", t), C = new Kc({ declutterMode: Sl(e, "text-declutter-mode") }); ->>>>>>> Stashed changes -======= -function tl(e, t) { - let n = "text-", r = cl(e, "text-value", t); - if (!r) return null; - let i = $c(e, n, t), a = $c(e, "text-background-", t), o = el(e, n, t), s = el(e, "text-background-", t), c = cl(e, "text-font", t), l = sl(e, "text-max-angle", t), u = sl(e, "text-offset-x", t), d = sl(e, "text-offset-y", t), f = ul(e, "text-overflow", t), p = cl(e, "text-placement", t), m = sl(e, "text-repeat", t), h = hl(e, "text-scale", t), g = ul(e, "text-rotate-with-view", t), _ = sl(e, "text-rotation", t), v = cl(e, "text-align", t), y = cl(e, "text-justify", t), b = cl(e, "text-baseline", t), x = ul(e, "text-keep-upright", t), S = fl(e, "text-padding", t), C = new Kc({ declutterMode: Sl(e, "text-declutter-mode") }); ->>>>>>> Stashed changes +function Nl(e, t) { + let n = "text-", r = Bl(e, "text-value", t); + if (!r) return null; + let i = jl(e, n, t), a = jl(e, "text-background-", t), o = Ml(e, n, t), s = Ml(e, "text-background-", t), c = Bl(e, "text-font", t), l = zl(e, "text-max-angle", t), u = zl(e, "text-offset-x", t), d = zl(e, "text-offset-y", t), f = Hl(e, "text-overflow", t), p = Bl(e, "text-placement", t), m = zl(e, "text-repeat", t), h = ql(e, "text-scale", t), g = Hl(e, "text-rotate-with-view", t), _ = zl(e, "text-rotation", t), v = Bl(e, "text-align", t), y = Bl(e, "text-justify", t), b = Bl(e, "text-baseline", t), x = Hl(e, "text-keep-upright", t), S = Wl(e, "text-padding", t), C = new wl({ declutterMode: eu(e, "text-declutter-mode") }); return function(e) { if (C.setText(r(e)), i && C.setFill(i(e)), a && C.setBackgroundFill(a(e)), o && C.setStroke(o(e)), s && C.setBackgroundStroke(s(e)), c && C.setFont(c(e)), l && C.setMaxAngle(l(e)), u && C.setOffsetX(u(e)), d && C.setOffsetY(d(e)), f && C.setOverflow(f(e)), p) { let t = p(e); @@ -11536,8 +7193,6 @@ function tl(e, t) { return S && C.setPadding(S(e)), x && C.setKeepUpright(x(e)), C; }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Pl(e, t) { return "icon-src" in e ? Fl(e, t) : "shape-points" in e ? Il(e, t) : "circle-radius" in e ? Ll(e, t) : null; } @@ -11545,20 +7200,6 @@ function Fl(e, t) { let n = "icon-src", r = nu(e[n], n), i = Gl(e, "icon-anchor", t), a = ql(e, "icon-scale", t), o = zl(e, "icon-opacity", t), s = Gl(e, "icon-displacement", t), c = zl(e, "icon-rotation", t), l = Hl(e, "icon-rotate-with-view", t), u = Zl(e, "icon-anchor-origin"), d = Ql(e, "icon-anchor-x-units"), f = Ql(e, "icon-anchor-y-units"), p = Rl(e, "icon-color"), m, h = null; p !== void 0 && (Array.isArray(p) && p.length > 0 && typeof p[0] == "string" ? h = Ul(e, "icon-color", t) : m = iu(p, "icon-color")); let g = Xl(e, "icon-cross-origin"), _ = $l(e, "icon-offset"), v = Zl(e, "icon-offset-origin"), y = Jl(e, "icon-width"), b = { -======= -======= ->>>>>>> Stashed changes -function nl(e, t) { - return "icon-src" in e ? rl(e, t) : "shape-points" in e ? il(e, t) : "circle-radius" in e ? al(e, t) : null; -} -function rl(e, t) { - let n = "icon-src", r = wl(e[n], n), i = pl(e, "icon-anchor", t), a = hl(e, "icon-scale", t), o = sl(e, "icon-opacity", t), s = pl(e, "icon-displacement", t), c = sl(e, "icon-rotation", t), l = ul(e, "icon-rotate-with-view", t), u = yl(e, "icon-anchor-origin"), d = bl(e, "icon-anchor-x-units"), f = bl(e, "icon-anchor-y-units"), p = ol(e, "icon-color"), m, h = null; - p !== void 0 && (Array.isArray(p) && p.length > 0 && typeof p[0] == "string" ? h = dl(e, "icon-color", t) : m = El(p, "icon-color")); - let g = vl(e, "icon-cross-origin"), _ = xl(e, "icon-offset"), v = yl(e, "icon-offset-origin"), y = gl(e, "icon-width"), b = { -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes src: r, anchorOrigin: u, anchorXUnits: d, @@ -11566,44 +7207,20 @@ function rl(e, t) { crossOrigin: g, offset: _, offsetOrigin: v, -<<<<<<< Updated upstream -<<<<<<< Updated upstream height: Jl(e, "icon-height"), width: y, size: Yl(e, "icon-size"), declutterMode: eu(e, "icon-declutter-mode") -======= - height: gl(e, "icon-height"), - width: y, - size: _l(e, "icon-size"), - declutterMode: Sl(e, "icon-declutter-mode") ->>>>>>> Stashed changes -======= - height: gl(e, "icon-height"), - width: y, - size: _l(e, "icon-size"), - declutterMode: Sl(e, "icon-declutter-mode") ->>>>>>> Stashed changes }, x = null; return function(e) { if (x) h && x.setColor(h(e)); else { let t = h ? h(e) : m; -<<<<<<< Updated upstream -<<<<<<< Updated upstream x = new gl(t === void 0 ? Object.assign({}, b) : Object.assign({}, b, { color: t })); -======= - x = new Rc(t === void 0 ? Object.assign({}, b) : Object.assign({}, b, { color: t })); ->>>>>>> Stashed changes -======= - x = new Rc(t === void 0 ? Object.assign({}, b) : Object.assign({}, b, { color: t })); ->>>>>>> Stashed changes } return o && x.setOpacity(o(e)), s && x.setDisplacement(s(e)), c && x.setRotation(c(e)), l && x.setRotateWithView(l(e)), a && x.setScale(a(e)), i && x.setAnchor(i(e)), x; }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Il(e, t) { let n = "shape-", r = "shape-points", i = "shape-radius", a = ru(e[r], r); if (!(i in e)) throw Error(`Expected a number for ${i}`); @@ -11613,100 +7230,33 @@ function Il(e, t) { radius2: u, angle: Jl(e, "shape-angle"), declutterMode: eu(e, "shape-declutter-mode") -======= -function il(e, t) { - let n = "shape-", r = "shape-points", i = "shape-radius", a = Tl(e[r], r); - if (!(i in e)) throw Error(`Expected a number for ${i}`); - let o = sl(e, i, t), s = typeof e[i] == "number" ? e[i] : 5, c = "shape-radius2", l = sl(e, c, t), u = typeof e[c] == "number" ? e[c] : void 0, d = $c(e, n, t), f = el(e, n, t), p = hl(e, "shape-scale", t), m = pl(e, "shape-displacement", t), h = sl(e, "shape-rotation", t), g = ul(e, "shape-rotate-with-view", t), _ = new Pc({ - points: a, - radius: s, - radius2: u, - angle: gl(e, "shape-angle"), - declutterMode: Sl(e, "shape-declutter-mode") ->>>>>>> Stashed changes -======= -function il(e, t) { - let n = "shape-", r = "shape-points", i = "shape-radius", a = Tl(e[r], r); - if (!(i in e)) throw Error(`Expected a number for ${i}`); - let o = sl(e, i, t), s = typeof e[i] == "number" ? e[i] : 5, c = "shape-radius2", l = sl(e, c, t), u = typeof e[c] == "number" ? e[c] : void 0, d = $c(e, n, t), f = el(e, n, t), p = hl(e, "shape-scale", t), m = pl(e, "shape-displacement", t), h = sl(e, "shape-rotation", t), g = ul(e, "shape-rotate-with-view", t), _ = new Pc({ - points: a, - radius: s, - radius2: u, - angle: gl(e, "shape-angle"), - declutterMode: Sl(e, "shape-declutter-mode") ->>>>>>> Stashed changes }); return function(e) { return o && _.setRadius(o(e)), l && _.setRadius2(l(e)), d && _.setFill(d(e)), f && _.setStroke(f(e)), m && _.setDisplacement(m(e)), h && _.setRotation(h(e)), g && _.setRotateWithView(g(e)), p && _.setScale(p(e)), _; }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Ll(e, t) { let n = "circle-", r = jl(e, n, t), i = Ml(e, n, t), a = zl(e, "circle-radius", t), o = ql(e, "circle-scale", t), s = Gl(e, "circle-displacement", t), c = zl(e, "circle-rotation", t), l = Hl(e, "circle-rotate-with-view", t), u = new pl({ radius: 5, declutterMode: eu(e, "circle-declutter-mode") -======= -function al(e, t) { - let n = "circle-", r = $c(e, n, t), i = el(e, n, t), a = sl(e, "circle-radius", t), o = hl(e, "circle-scale", t), s = pl(e, "circle-displacement", t), c = sl(e, "circle-rotation", t), l = ul(e, "circle-rotate-with-view", t), u = new Fc({ - radius: 5, - declutterMode: Sl(e, "circle-declutter-mode") ->>>>>>> Stashed changes -======= -function al(e, t) { - let n = "circle-", r = $c(e, n, t), i = el(e, n, t), a = sl(e, "circle-radius", t), o = hl(e, "circle-scale", t), s = pl(e, "circle-displacement", t), c = sl(e, "circle-rotation", t), l = ul(e, "circle-rotate-with-view", t), u = new Fc({ - radius: 5, - declutterMode: Sl(e, "circle-declutter-mode") ->>>>>>> Stashed changes }); return function(e) { return a && u.setRadius(a(e)), r && u.setFill(r(e)), i && u.setStroke(i(e)), s && u.setDisplacement(s(e)), c && u.setRotation(c(e)), l && u.setRotateWithView(l(e)), o && u.setScale(o(e)), u; }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Rl(e, t) { -======= -function ol(e, t) { ->>>>>>> Stashed changes -======= -function ol(e, t) { ->>>>>>> Stashed changes if (!(t in e)) return; let n = e[t]; return n === void 0 ? void 0 : n; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function zl(e, t, n) { let r = Rl(e, t); if (r === void 0) return; let i = xc(r, U, n); -======= -function sl(e, t, n) { - let r = ol(e, t); - if (r === void 0) return; -======= -function sl(e, t, n) { - let r = ol(e, t); - if (r === void 0) return; ->>>>>>> Stashed changes - let i = Bs(r, V, n); - return function(e) { - return Tl(i(e), t); - }; -} -function cl(e, t, n) { - let r = ol(e, t); - if (r === void 0) return null; - let i = Bs(r, H, n); -<<<<<<< Updated upstream ->>>>>>> Stashed changes return function(e) { return ru(i(e), t); }; } -<<<<<<< Updated upstream function Bl(e, t, n) { let r = Rl(e, t); if (r === void 0) return null; @@ -11717,18 +7267,6 @@ function Bl(e, t, n) { } function Vl(e, t, n) { let r = Bl(e, t + "pattern-src", n), i = Kl(e, t + "pattern-offset", n), a = Kl(e, t + "pattern-size", n), o = Ul(e, t + "color", n); -======= -function ll(e, t, n) { - let r = cl(e, t + "pattern-src", n), i = ml(e, t + "pattern-offset", n), a = ml(e, t + "pattern-size", n), o = dl(e, t + "color", n); ->>>>>>> Stashed changes -======= - return function(e) { - return wl(i(e), t); - }; -} -function ll(e, t, n) { - let r = cl(e, t + "pattern-src", n), i = ml(e, t + "pattern-offset", n), a = ml(e, t + "pattern-size", n), o = dl(e, t + "color", n); ->>>>>>> Stashed changes return function(e) { return { src: r(e), @@ -11738,32 +7276,16 @@ function ll(e, t, n) { }; }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Hl(e, t, n) { let r = Rl(e, t); if (r === void 0) return null; let i = xc(r, Bs, n); -======= -function ul(e, t, n) { - let r = ol(e, t); - if (r === void 0) return null; - let i = Bs(r, as, n); ->>>>>>> Stashed changes -======= -function ul(e, t, n) { - let r = ol(e, t); - if (r === void 0) return null; - let i = Bs(r, as, n); ->>>>>>> Stashed changes return function(e) { let n = i(e); if (typeof n != "boolean") throw Error(`Expected a boolean for ${t}`); return n; }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Ul(e, t, n) { let r = Rl(e, t); if (r === void 0) return null; @@ -11774,49 +7296,13 @@ function Ul(e, t, n) { } function Wl(e, t, n) { let r = Rl(e, t); -======= -function dl(e, t, n) { - let r = ol(e, t); - if (r === void 0) return null; - let i = Bs(r, U, n); - return function(e) { - return El(i(e), t); - }; -} -function fl(e, t, n) { - let r = ol(e, t); ->>>>>>> Stashed changes -======= -function dl(e, t, n) { - let r = ol(e, t); - if (r === void 0) return null; - let i = Bs(r, U, n); - return function(e) { - return El(i(e), t); - }; -} -function fl(e, t, n) { - let r = ol(e, t); ->>>>>>> Stashed changes if (r === void 0) return null; if (Array.isArray(r) && (r.length === 0 || typeof r[0] != "string")) { let e = r.map((e, r) => { if (typeof e == "number") return () => e; -<<<<<<< Updated upstream -<<<<<<< Updated upstream let i = xc(e, U, n); return function(e) { return ru(i(e), `${t}[${r}]`); -======= - let i = Bs(e, V, n); - return function(e) { - return Tl(i(e), `${t}[${r}]`); ->>>>>>> Stashed changes -======= - let i = Bs(e, V, n); - return function(e) { - return Tl(i(e), `${t}[${r}]`); ->>>>>>> Stashed changes }; }); return function(t) { @@ -11825,8 +7311,6 @@ function fl(e, t, n) { return n; }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream let i = xc(r, Vs, n); return function(e) { return tu(i(e), t); @@ -11838,38 +7322,10 @@ function Gl(e, t, n) { let i = xc(r, Vs, n); return function(e) { let n = tu(i(e), t); -======= - let i = Bs(r, os, n); - return function(e) { - return Cl(i(e), t); - }; -} -function pl(e, t, n) { - let r = ol(e, t); - if (r === void 0) return null; - let i = Bs(r, os, n); - return function(e) { - let n = Cl(i(e), t); ->>>>>>> Stashed changes -======= - let i = Bs(r, os, n); - return function(e) { - return Cl(i(e), t); - }; -} -function pl(e, t, n) { - let r = ol(e, t); - if (r === void 0) return null; - let i = Bs(r, os, n); - return function(e) { - let n = Cl(i(e), t); ->>>>>>> Stashed changes if (n.length !== 2) throw Error(`Expected two numbers for ${t}`); return n; }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Kl(e, t, n) { let r = Rl(e, t); if (r === void 0) return null; @@ -11882,48 +7338,17 @@ function ql(e, t, n) { let r = Rl(e, t); if (r === void 0) return null; let i = xc(r, Vs | U, n); -======= -======= ->>>>>>> Stashed changes -function ml(e, t, n) { - let r = ol(e, t); - if (r === void 0) return null; - let i = Bs(r, os, n); -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes return function(e) { return ou(i(e), t); }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Jl(e, t) { -======= -======= ->>>>>>> Stashed changes -function hl(e, t, n) { - let r = ol(e, t); - if (r === void 0) return null; - let i = Bs(r, os | V, n); - return function(e) { - return Ol(i(e), t); - }; -} -function gl(e, t) { -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes let n = e[t]; if (n !== void 0) { if (typeof n != "number") throw Error(`Expected a number for ${t}`); return n; } } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Yl(e, t) { let n = e[t]; if (n !== void 0) { @@ -11933,83 +7358,44 @@ function Yl(e, t) { } } function Xl(e, t) { -======= -======= ->>>>>>> Stashed changes -function _l(e, t) { ->>>>>>> Stashed changes let n = e[t]; if (n !== void 0) { - if (typeof n == "number") return rs(n); - if (!Array.isArray(n) || n.length !== 2 || typeof n[0] != "number" || typeof n[1] != "number") throw Error(`Expected a number or size array for ${t}`); + if (typeof n != "string") throw Error(`Expected a string for ${t}`); return n; } } function Zl(e, t) { let n = e[t]; if (n !== void 0) { - if (typeof n == "number") return rs(n); - if (!Array.isArray(n) || n.length !== 2 || typeof n[0] != "number" || typeof n[1] != "number") throw Error(`Expected a number or size array for ${t}`); + if (n !== "bottom-left" && n !== "bottom-right" && n !== "top-left" && n !== "top-right") throw Error(`Expected bottom-left, bottom-right, top-left, or top-right for ${t}`); return n; } } function Ql(e, t) { let n = e[t]; if (n !== void 0) { - if (typeof n != "string") throw Error(`Expected a string for ${t}`); + if (n !== "pixels" && n !== "fraction") throw Error(`Expected pixels or fraction for ${t}`); return n; } } function $l(e, t) { let n = e[t]; -<<<<<<< Updated upstream if (n !== void 0) return tu(n, t); -======= - if (n !== void 0) { - if (n !== "bottom-left" && n !== "bottom-right" && n !== "top-left" && n !== "top-right") throw Error(`Expected bottom-left, bottom-right, top-left, or top-right for ${t}`); - return n; - } ->>>>>>> Stashed changes } function eu(e, t) { let n = e[t]; -<<<<<<< Updated upstream - if (n !== void 0) return Cl(n, t); -======= - if (n !== void 0) { - if (n !== "pixels" && n !== "fraction") throw Error(`Expected pixels or fraction for ${t}`); - return n; - } ->>>>>>> Stashed changes -} -function Sl(e, t) { - let n = e[t]; - if (n !== void 0) return Cl(n, t); -} -function Sl(e, t) { - let n = e[t]; if (n !== void 0) { if (typeof n != "string") throw Error(`Expected a string for ${t}`); if (n !== "declutter" && n !== "obstacle" && n !== "none") throw Error(`Expected declutter, obstacle, or none for ${t}`); return n; } } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function tu(e, t) { -======= -function Cl(e, t) { ->>>>>>> Stashed changes -======= -function Cl(e, t) { ->>>>>>> Stashed changes if (!Array.isArray(e)) throw Error(`Expected an array for ${t}`); let n = e.length; for (let r = 0; r < n; ++r) if (typeof e[r] != "number") throw Error(`Expected an array of numbers for ${t}`); return e; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function nu(e, t) { if (typeof e != "string") throw Error(`Expected a string for ${t}`); return e; @@ -12035,60 +7421,6 @@ function ou(e, t) { //#endregion //#region node_modules/ol/layer/BaseVector.js var su = { RENDER_ORDER: "renderOrder" }, cu = class extends yo { -======= -function wl(e, t) { - if (typeof e != "string") throw Error(`Expected a string for ${t}`); - return e; -} -function Tl(e, t) { - if (typeof e != "number") throw Error(`Expected a number for ${t}`); - return e; -} -function El(e, t) { - if (typeof e == "string") return e; - let n = Cl(e, t), r = n.length; - if (r < 3 || r > 4) throw Error(`Expected a color with 3 or 4 values for ${t}`); - return n; -} -function Dl(e, t) { - let n = Cl(e, t); - if (n.length !== 2) throw Error(`Expected an array of two numbers for ${t}`); - return n; -} -function Ol(e, t) { - return typeof e == "number" ? e : Dl(e, t); -} -//#endregion -//#region node_modules/ol/layer/BaseVector.js -var kl = { RENDER_ORDER: "renderOrder" }, Al = class extends uo { ->>>>>>> Stashed changes -======= -function wl(e, t) { - if (typeof e != "string") throw Error(`Expected a string for ${t}`); - return e; -} -function Tl(e, t) { - if (typeof e != "number") throw Error(`Expected a number for ${t}`); - return e; -} -function El(e, t) { - if (typeof e == "string") return e; - let n = Cl(e, t), r = n.length; - if (r < 3 || r > 4) throw Error(`Expected a color with 3 or 4 values for ${t}`); - return n; -} -function Dl(e, t) { - let n = Cl(e, t); - if (n.length !== 2) throw Error(`Expected an array of two numbers for ${t}`); - return n; -} -function Ol(e, t) { - return typeof e == "number" ? e : Dl(e, t); -} -//#endregion -//#region node_modules/ol/layer/BaseVector.js -var kl = { RENDER_ORDER: "renderOrder" }, Al = class extends uo { ->>>>>>> Stashed changes constructor(e) { e ||= {}; let t = Object.assign({}, e); @@ -12104,15 +7436,7 @@ var kl = { RENDER_ORDER: "renderOrder" }, Al = class extends uo { return this.renderBuffer_; } getRenderOrder() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return this.get(su.RENDER_ORDER); -======= - return this.get(kl.RENDER_ORDER); ->>>>>>> Stashed changes -======= - return this.get(kl.RENDER_ORDER); ->>>>>>> Stashed changes } getStyle() { return this.style_; @@ -12128,8 +7452,6 @@ var kl = { RENDER_ORDER: "renderOrder" }, Al = class extends uo { } renderDeclutter(e, t) { let n = this.getDeclutter(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream n in e.declutter || (e.declutter[n] = new ws(9)), this.getRenderer().renderDeclutter(e, t); } setRenderOrder(e) { @@ -12139,35 +7461,11 @@ var kl = { RENDER_ORDER: "renderOrder" }, Al = class extends uo { this.style_ = e === void 0 ? xl : e; let t = lu(e); this.styleFunction_ = e === null ? void 0 : yl(t), this.changed(); -======= - n in e.declutter || (e.declutter[n] = new go(9)), this.getRenderer().renderDeclutter(e, t); - } - setRenderOrder(e) { - this.set(kl.RENDER_ORDER, e); - } - setStyle(e) { - this.style_ = e === void 0 ? Uc : e; - let t = jl(e); - this.styleFunction_ = e === null ? void 0 : Vc(t), this.changed(); ->>>>>>> Stashed changes -======= - n in e.declutter || (e.declutter[n] = new go(9)), this.getRenderer().renderDeclutter(e, t); - } - setRenderOrder(e) { - this.set(kl.RENDER_ORDER, e); - } - setStyle(e) { - this.style_ = e === void 0 ? Uc : e; - let t = jl(e); - this.styleFunction_ = e === null ? void 0 : Vc(t), this.changed(); ->>>>>>> Stashed changes } setDeclutter(e) { this.declutter_ = e ? String(e) : void 0, this.changed(); } }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream function lu(e) { if (e === void 0) return xl; if (!e) return null; @@ -12178,57 +7476,15 @@ function lu(e) { for (let r = 0; r < t; ++r) { let t = e[r]; if (!(t instanceof vl)) throw Error("Expected a list of style instances"); -======= -function jl(e) { - if (e === void 0) return Uc; - if (!e) return null; - if (typeof e == "function" || e instanceof Bc) return e; - if (Array.isArray(e) && e.length === 0) return []; - if (Array.isArray(e) && e[0] instanceof Bc) { - let t = e.length, n = Array(t); - for (let r = 0; r < t; ++r) { - let t = e[r]; - if (!(t instanceof Bc)) throw Error("Expected a list of style instances"); ->>>>>>> Stashed changes -======= -function jl(e) { - if (e === void 0) return Uc; - if (!e) return null; - if (typeof e == "function" || e instanceof Bc) return e; - if (Array.isArray(e) && e.length === 0) return []; - if (Array.isArray(e) && e[0] instanceof Bc) { - let t = e.length, n = Array(t); - for (let r = 0; r < t; ++r) { - let t = e[r]; - if (!(t instanceof Bc)) throw Error("Expected a list of style instances"); ->>>>>>> Stashed changes n[r] = t; } return n; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream return Ol(e); } //#endregion //#region node_modules/ol/renderer/Map.js var uu = class extends c { -======= -======= ->>>>>>> Stashed changes - return Xc(e); -} -//#endregion -//#region node_modules/ol/render/Event.js -var Ml = class extends ve { - constructor(e, t, n, r) { - super(e), this.inversePixelTransform = t, this.frameState = n, this.context = r; - } -}, Nl = class extends ie { -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes constructor(e) { super(), this.map_ = e; } @@ -12237,7 +7493,7 @@ var Ml = class extends ve { } calculateMatrices2D(e) { let t = e.viewState, n = e.coordinateToPixelTransform, r = e.pixelToCoordinateTransform; - ei(n, e.size[0] / 2, e.size[1] / 2, 1 / t.resolution, -1 / t.resolution, -t.rotation, -t.center[0], -t.center[1]), ti(r, n); + $r(n, e.size[0] / 2, e.size[1] / 2, 1 / t.resolution, -1 / t.resolution, -t.rotation, -t.center[0], -t.center[1]), ei(r, n); } forEachFeatureAtCoordinate(e, t, n, r, i, a, o, s) { let c, l = t.viewState; @@ -12252,15 +7508,7 @@ var Ml = class extends ve { let m = t.layerStatesArray, h = m.length, g = [], _ = []; for (let r = 0; r < p.length; r++) for (let i = h - 1; i >= 0; --i) { let a = m[i], d = a.layer; -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (d.hasRenderer() && bo(a, l) && o.call(s, d)) { -======= - if (d.hasRenderer() && fo(a, l) && o.call(s, d)) { ->>>>>>> Stashed changes -======= - if (d.hasRenderer() && fo(a, l) && o.call(s, d)) { ->>>>>>> Stashed changes let i = d.getRenderer(), o = d.getSource(); if (i && o) { let s = o.getWrapX() ? f : e, l = u.bind(null, a.managed); @@ -12283,8 +7531,6 @@ var Ml = class extends ve { E(); } scheduleExpireIconCache(e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream Ic.canExpireCache() && e.postRenderFunctions.push(du); } }; @@ -12300,48 +7546,11 @@ var fu = class extends uu { n.position = "absolute", n.width = "100%", n.height = "100%", n.zIndex = "0", this.element_.className = F + " ol-layers"; let r = e.getViewport(); r && r.insertBefore(this.element_, r.firstChild || null), this.children_ = [], this.renderedVisible_ = !0; -======= - ic.canExpireCache() && e.postRenderFunctions.push(Pl); - } -}; -function Pl(e, t) { - ic.expire(); -} -//#endregion -//#region node_modules/ol/renderer/Composite.js -var Fl = class extends Nl { - constructor(e) { -======= - ic.canExpireCache() && e.postRenderFunctions.push(Pl); - } -}; -function Pl(e, t) { - ic.expire(); -} -//#endregion -//#region node_modules/ol/renderer/Composite.js -var Fl = class extends Nl { - constructor(e) { ->>>>>>> Stashed changes - super(e), this.fontChangeListenerKey_ = A(yc, re.PROPERTYCHANGE, e.redrawText, e), this.element_ = g ? D() : document.createElement("div"); - let t = this.element_.style; - t.position = "absolute", t.width = "100%", t.height = "100%", t.zIndex = "0", this.element_.className = r + " ol-layers"; - let n = e.getViewport(); - n && n.insertBefore(this.element_, n.firstChild || null), this.children_ = [], this.renderedVisible_ = !0; ->>>>>>> Stashed changes } dispatchRenderEvent(e, t) { let n = this.getMap(); if (n.hasListener(e)) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let r = new Gi(e, void 0, t); -======= - let r = new Ml(e, void 0, t); ->>>>>>> Stashed changes -======= - let r = new Ml(e, void 0, t); ->>>>>>> Stashed changes n.dispatchEvent(r); } } @@ -12353,21 +7562,9 @@ var Fl = class extends Nl { this.renderedVisible_ &&= (this.element_.style.display = "none", !1); return; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.calculateMatrices2D(e), this.dispatchRenderEvent(Ki.PRECOMPOSE, e); let t = e.layerStatesArray.sort((e, t) => e.zIndex - t.zIndex); t.some((e) => e.layer instanceof cu && e.layer.getDeclutter()) && (e.declutter = {}); -======= - this.calculateMatrices2D(e), this.dispatchRenderEvent(lo.PRECOMPOSE, e); - let t = e.layerStatesArray.sort((e, t) => e.zIndex - t.zIndex); - t.some((e) => e.layer instanceof Al && e.layer.getDeclutter()) && (e.declutter = {}); ->>>>>>> Stashed changes -======= - this.calculateMatrices2D(e), this.dispatchRenderEvent(lo.PRECOMPOSE, e); - let t = e.layerStatesArray.sort((e, t) => e.zIndex - t.zIndex); - t.some((e) => e.layer instanceof Al && e.layer.getDeclutter()) && (e.declutter = {}); ->>>>>>> Stashed changes let n = e.viewState; this.children_.length = 0; let r = this.getMap().getTargetElement(), i; @@ -12377,15 +7574,7 @@ var Fl = class extends Nl { let i = t[r]; e.layerIndex = r; let s = i.layer, c = s.getSourceState(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (!bo(i, n) || c != "ready" && c != "undefined") { -======= - if (!fo(i, n) || c != "ready" && c != "undefined") { ->>>>>>> Stashed changes -======= - if (!fo(i, n) || c != "ready" && c != "undefined") { ->>>>>>> Stashed changes s.unrender(); continue; } @@ -12400,22 +7589,14 @@ var Fl = class extends Nl { let r = e.style.opacity || t.style.opacity; i.globalAlpha = r === "" ? 1 : Number(r); let a = t.style.transform; - if (a) i.transform(...ai(a)); + if (a) i.transform(...ii(a)); else { let e = parseFloat(t.style.width) / t.width, n = parseFloat(t.style.height) / t.height; i.transform(e, 0, 0, n, 0, 0); } i.drawImage(t, 0, 0), i.restore(); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.dispatchRenderEvent(Ki.POSTCOMPOSE, e), this.renderedVisible_ ||= (this.element_.style.display = "", !0), this.scheduleExpireIconCache(e); -======= - this.dispatchRenderEvent(lo.POSTCOMPOSE, e), this.renderedVisible_ ||= (this.element_.style.display = "", !0), this.scheduleExpireIconCache(e); ->>>>>>> Stashed changes -======= - this.dispatchRenderEvent(lo.POSTCOMPOSE, e), this.renderedVisible_ ||= (this.element_.style.display = "", !0), this.scheduleExpireIconCache(e); ->>>>>>> Stashed changes } declutter(e, t) { if (e.declutter) { @@ -12429,8 +7610,6 @@ var Fl = class extends Nl { }; //#endregion //#region node_modules/ol/Map.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function pu(e) { if (e instanceof yo) { e.setMapInternal(null); @@ -12457,59 +7636,6 @@ var hu = class extends A { t.view && !(t.view instanceof uo) && t.view.then(function(e) { r.setView(new uo(e)); }), this.controls.addEventListener(e.ADD, (e) => { -======= -function Il(e) { - if (e instanceof uo) { - e.setMapInternal(null); - return; - } - e instanceof co && e.getLayers().forEach(Il); -} -function Ll(e, t) { - if (e instanceof uo) { - e.setMapInternal(t); - return; - } - if (e instanceof co) { - let n = e.getLayers().getArray(); - for (let e = 0, r = n.length; e < r; ++e) Ll(n[e], t); - } -} -var Rl = class extends we { - constructor(t) { - super(), t ||= {}, this.on, this.once, this.un; - let n = zl(t); - this.renderComplete_ = !1, this.loaded_ = !0, this.boundHandleBrowserEvent_ = this.handleBrowserEvent.bind(this), this.maxTilesLoading_ = t.maxTilesLoading === void 0 ? 16 : t.maxTilesLoading, this.pixelRatio_ = t.pixelRatio === void 0 ? h : t.pixelRatio, this.postRenderTimeoutHandle_, this.animationDelayKey_, this.animationDelay_ = this.animationDelay_.bind(this), this.coordinateToPixelTransform_ = qr(), this.pixelToCoordinateTransform_ = qr(), this.frameIndex_ = 0, this.frameState_ = null, this.previousExtent_ = null, this.viewPropertyListenerKey_ = null, this.viewChangeListenerKey_ = null, this.layerGroupPropertyListenerKeys_ = null, g || (this.viewport_ = document.createElement("div"), this.viewport_.className = "ol-viewport" + ("ontouchstart" in window ? " ol-touch" : ""), this.viewport_.style.position = "relative", this.viewport_.style.overflow = "hidden", this.viewport_.style.width = "100%", this.viewport_.style.height = "100%", this.overlayContainer_ = document.createElement("div"), this.overlayContainer_.style.position = "absolute", this.overlayContainer_.style.zIndex = "0", this.overlayContainer_.style.width = "100%", this.overlayContainer_.style.height = "100%", this.overlayContainer_.style.pointerEvents = "none", this.overlayContainer_.className = "ol-overlaycontainer", this.viewport_.appendChild(this.overlayContainer_), this.overlayContainerStopEvent_ = document.createElement("div"), this.overlayContainerStopEvent_.style.position = "absolute", this.overlayContainerStopEvent_.style.zIndex = "0", this.overlayContainerStopEvent_.style.width = "100%", this.overlayContainerStopEvent_.style.height = "100%", this.overlayContainerStopEvent_.style.pointerEvents = "none", this.overlayContainerStopEvent_.className = "ol-overlaycontainer-stopevent", this.viewport_.appendChild(this.overlayContainerStopEvent_)), this.mapBrowserEventHandler_ = null, this.moveTolerance_ = t.moveTolerance, this.keyboardEventTarget_ = n.keyboardEventTarget, this.targetChangeHandlerKeys_ = null, this.targetElement_ = null, g || (this.resizeObserver_ = new ResizeObserver(() => this.updateSize())), this.controls = n.controls || (g ? new Or() : ba()), this.interactions = n.interactions || (g ? new Or() : ro({ onFocusOnly: !0 })), this.overlays_ = n.overlays, this.overlayIdIndex_ = {}, this.renderer_ = null, this.postRenderFunctions_ = [], this.tileQueue_ = new Fr(this.getTilePriority.bind(this), this.handleTileChange_.bind(this)), this.addChangeListener(e.LAYERGROUP, this.handleLayerGroupChanged_), this.addChangeListener(e.VIEW, this.handleViewChanged_), this.addChangeListener(e.SIZE, this.handleSizeChanged_), this.addChangeListener(e.TARGET, this.handleTargetChanged_), this.setProperties(n.values); - let r = this; -======= -function Il(e) { - if (e instanceof uo) { - e.setMapInternal(null); - return; - } - e instanceof co && e.getLayers().forEach(Il); -} -function Ll(e, t) { - if (e instanceof uo) { - e.setMapInternal(t); - return; - } - if (e instanceof co) { - let n = e.getLayers().getArray(); - for (let e = 0, r = n.length; e < r; ++e) Ll(n[e], t); - } -} -var Rl = class extends we { - constructor(t) { - super(), t ||= {}, this.on, this.once, this.un; - let n = zl(t); - this.renderComplete_ = !1, this.loaded_ = !0, this.boundHandleBrowserEvent_ = this.handleBrowserEvent.bind(this), this.maxTilesLoading_ = t.maxTilesLoading === void 0 ? 16 : t.maxTilesLoading, this.pixelRatio_ = t.pixelRatio === void 0 ? h : t.pixelRatio, this.postRenderTimeoutHandle_, this.animationDelayKey_, this.animationDelay_ = this.animationDelay_.bind(this), this.coordinateToPixelTransform_ = qr(), this.pixelToCoordinateTransform_ = qr(), this.frameIndex_ = 0, this.frameState_ = null, this.previousExtent_ = null, this.viewPropertyListenerKey_ = null, this.viewChangeListenerKey_ = null, this.layerGroupPropertyListenerKeys_ = null, g || (this.viewport_ = document.createElement("div"), this.viewport_.className = "ol-viewport" + ("ontouchstart" in window ? " ol-touch" : ""), this.viewport_.style.position = "relative", this.viewport_.style.overflow = "hidden", this.viewport_.style.width = "100%", this.viewport_.style.height = "100%", this.overlayContainer_ = document.createElement("div"), this.overlayContainer_.style.position = "absolute", this.overlayContainer_.style.zIndex = "0", this.overlayContainer_.style.width = "100%", this.overlayContainer_.style.height = "100%", this.overlayContainer_.style.pointerEvents = "none", this.overlayContainer_.className = "ol-overlaycontainer", this.viewport_.appendChild(this.overlayContainer_), this.overlayContainerStopEvent_ = document.createElement("div"), this.overlayContainerStopEvent_.style.position = "absolute", this.overlayContainerStopEvent_.style.zIndex = "0", this.overlayContainerStopEvent_.style.width = "100%", this.overlayContainerStopEvent_.style.height = "100%", this.overlayContainerStopEvent_.style.pointerEvents = "none", this.overlayContainerStopEvent_.className = "ol-overlaycontainer-stopevent", this.viewport_.appendChild(this.overlayContainerStopEvent_)), this.mapBrowserEventHandler_ = null, this.moveTolerance_ = t.moveTolerance, this.keyboardEventTarget_ = n.keyboardEventTarget, this.targetChangeHandlerKeys_ = null, this.targetElement_ = null, g || (this.resizeObserver_ = new ResizeObserver(() => this.updateSize())), this.controls = n.controls || (g ? new Or() : ba()), this.interactions = n.interactions || (g ? new Or() : ro({ onFocusOnly: !0 })), this.overlays_ = n.overlays, this.overlayIdIndex_ = {}, this.renderer_ = null, this.postRenderFunctions_ = [], this.tileQueue_ = new Fr(this.getTilePriority.bind(this), this.handleTileChange_.bind(this)), this.addChangeListener(e.LAYERGROUP, this.handleLayerGroupChanged_), this.addChangeListener(e.VIEW, this.handleViewChanged_), this.addChangeListener(e.SIZE, this.handleSizeChanged_), this.addChangeListener(e.TARGET, this.handleTargetChanged_), this.setProperties(n.values); - let r = this; ->>>>>>> Stashed changes - t.view && !(t.view instanceof ua) && t.view.then(function(e) { - r.setView(new ua(e)); - }), this.controls.addEventListener(Tr.ADD, (e) => { ->>>>>>> Stashed changes e.element.setMap(this); }), this.controls.addEventListener(e.REMOVE, (e) => { e.element.setMap(null); @@ -12538,15 +7664,7 @@ var Rl = class extends we { this.getLayerGroup().getLayers().push(e); } handleLayerAdd_(e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream mu(e.layer, this); -======= - Ll(e.layer, this); ->>>>>>> Stashed changes -======= - Ll(e.layer, this); ->>>>>>> Stashed changes } addOverlay(e) { this.getOverlays().push(e); @@ -12575,15 +7693,7 @@ var Rl = class extends we { let e = []; function t(n) { n.forEach(function(n) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream n instanceof bs ? t(n.getLayers()) : e.push(n); -======= - n instanceof co ? t(n.getLayers()) : e.push(n); ->>>>>>> Stashed changes -======= - n instanceof co ? t(n.getLayers()) : e.push(n); ->>>>>>> Stashed changes }); } return t(this.getLayers()), e; @@ -12616,7 +7726,7 @@ var Rl = class extends we { } getCoordinateFromPixelInternal(e) { let t = this.frameState_; - return t ? z(t.pixelToCoordinateTransform, e.slice()) : null; + return t ? B(t.pixelToCoordinateTransform, e.slice()) : null; } getControls() { return this.controls; @@ -12664,7 +7774,7 @@ var Rl = class extends we { } getPixelFromCoordinateInternal(e) { let t = this.frameState_; - return t ? z(t.coordinateToPixelTransform, e.slice(0, 2)) : null; + return t ? B(t.coordinateToPixelTransform, e.slice(0, 2)) : null; } getPixelRatio() { return this.pixelRatio_; @@ -12720,30 +7830,14 @@ var Rl = class extends we { handlePostRender() { let e = this.frameState_, t = this.tileQueue_; if (!t.isEmpty()) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let n = this.maxTilesLoading_, r = n, i = e ? e.viewHints : void 0, a = i ? i[V.ANIMATING] || i[V.INTERACTING] : !1; -======= - let n = this.maxTilesLoading_, r = n, i = e ? e.viewHints : void 0, a = i ? i[Lr.ANIMATING] || i[Lr.INTERACTING] : !1; ->>>>>>> Stashed changes -======= - let n = this.maxTilesLoading_, r = n, i = e ? e.viewHints : void 0, a = i ? i[Lr.ANIMATING] || i[Lr.INTERACTING] : !1; ->>>>>>> Stashed changes if (a) { let t = Date.now() - e.time > 8; n = t ? 0 : 8, r = t ? 0 : 2; } t.getTilesLoading() < n && (a && t.reprioritize(), t.loadMoreTiles(n, r)); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream e && this.renderer_ && !e.animate && (this.renderComplete_ ? (this.hasListener(Ki.RENDERCOMPLETE) && this.renderer_.dispatchRenderEvent(Ki.RENDERCOMPLETE, e), this.loaded_ === !1 && (this.loaded_ = !0, this.dispatchEvent(new wo(De.LOADEND, this, e)))) : this.loaded_ === !0 && (this.loaded_ = !1, this.dispatchEvent(new wo(De.LOADSTART, this, e)))); -======= - e && this.renderer_ && !e.animate && (this.renderComplete_ ? (this.hasListener(lo.RENDERCOMPLETE) && this.renderer_.dispatchRenderEvent(lo.RENDERCOMPLETE, e), this.loaded_ === !1 && (this.loaded_ = !0, this.dispatchEvent(new kr(N.LOADEND, this, e)))) : this.loaded_ === !0 && (this.loaded_ = !1, this.dispatchEvent(new kr(N.LOADSTART, this, e)))); ->>>>>>> Stashed changes -======= - e && this.renderer_ && !e.animate && (this.renderComplete_ ? (this.hasListener(lo.RENDERCOMPLETE) && this.renderer_.dispatchRenderEvent(lo.RENDERCOMPLETE, e), this.loaded_ === !1 && (this.loaded_ = !0, this.dispatchEvent(new kr(N.LOADEND, this, e)))) : this.loaded_ === !0 && (this.loaded_ = !1, this.dispatchEvent(new kr(N.LOADSTART, this, e)))); ->>>>>>> Stashed changes let n = this.postRenderFunctions_; if (e) for (let t = 0, r = n.length; t < r; ++t) n[t](this, e); n.length = 0; @@ -12764,20 +7858,10 @@ var Rl = class extends we { let e = this.getTarget(), t = typeof e == "string" ? document.getElementById(e) : e; if (this.targetElement_ = t, !t) this.renderer_ &&= (clearTimeout(this.postRenderTimeoutHandle_), this.postRenderTimeoutHandle_ = void 0, this.postRenderFunctions_.length = 0, this.renderer_.dispose(), null), this.animationDelayKey_ &&= (cancelAnimationFrame(this.animationDelayKey_), void 0); else { -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (Ee(t) || t.appendChild(this.viewport_), this.renderer_ ||= new fu(this), !Ee(t)) { this.mapBrowserEventHandler_ = new Oo(this, this.moveTolerance_); for (let e in Eo) this.mapBrowserEventHandler_.addEventListener(Eo[e], this.handleMapBrowserEvent.bind(this)); this.viewport_.addEventListener(s.CONTEXTMENU, this.boundHandleBrowserEvent_, !1), this.viewport_.addEventListener(s.WHEEL, this.boundHandleBrowserEvent_, he ? { passive: !1 } : !1); -======= -======= ->>>>>>> Stashed changes - if (O(t) || t.appendChild(this.viewport_), this.renderer_ ||= new Fl(this), !O(t)) { - this.mapBrowserEventHandler_ = new Mr(this, this.moveTolerance_); - for (let e in jr) this.mapBrowserEventHandler_.addEventListener(jr[e], this.handleMapBrowserEvent.bind(this)); - this.viewport_.addEventListener(M.CONTEXTMENU, this.boundHandleBrowserEvent_, !1), this.viewport_.addEventListener(M.WHEEL, this.boundHandleBrowserEvent_, v ? { passive: !1 } : !1); ->>>>>>> Stashed changes let e; if (this.keyboardEventTarget_) e = this.keyboardEventTarget_; else { @@ -12806,22 +7890,11 @@ var Rl = class extends we { handleLayerGroupChanged_() { this.layerGroupPropertyListenerKeys_ &&= (this.layerGroupPropertyListenerKeys_.forEach(o), null); let e = this.getLayerGroup(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream e && (this.handleLayerAdd_(new vs("addlayer", e)), this.layerGroupPropertyListenerKeys_ = [ i(e, t.PROPERTYCHANGE, this.render, this), i(e, s.CHANGE, this.render, this), i(e, "addlayer", this.handleLayerAdd_, this), i(e, "removelayer", this.handleLayerRemove_, this) -======= -======= ->>>>>>> Stashed changes - e && (this.handleLayerAdd_(new oo("addlayer", e)), this.layerGroupPropertyListenerKeys_ = [ - A(e, re.PROPERTYCHANGE, this.render, this), - A(e, M.CHANGE, this.render, this), - A(e, "addlayer", this.handleLayerAdd_, this), - A(e, "removelayer", this.handleLayerRemove_, this) ->>>>>>> Stashed changes ]), this.render(); } isRendered() { @@ -12854,30 +7927,14 @@ var Rl = class extends we { return this.getLayerGroup().getLayers().remove(e); } handleLayerRemove_(e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream pu(e.layer); -======= - Il(e.layer); ->>>>>>> Stashed changes -======= - Il(e.layer); ->>>>>>> Stashed changes } removeOverlay(e) { return this.getOverlays().remove(e); } renderFrame_(e) { let t = this.getSize(), n = this.getView(), r = this.frameState_, i = null; -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (t !== void 0 && di(t) && n && n.isDef()) { -======= - if (t !== void 0 && ts(t) && n && n.isDef()) { ->>>>>>> Stashed changes -======= - if (t !== void 0 && ts(t) && n && n.isDef()) { ->>>>>>> Stashed changes let r = n.getHints(this.frameState_ ? this.frameState_.viewHints : void 0), a = n.getState(); if (i = { animate: !1, @@ -12895,1534 +7952,86 @@ var Rl = class extends we { time: e, usedTiles: {}, viewState: a, - viewHints: r, - wantedTiles: {}, - mapId: O(this), - renderTargets: {} - }, a.nextCenter && a.nextResolution) { - let e = isNaN(a.nextRotation) ? a.rotation : a.nextRotation; - i.nextExtent = xt(a.nextCenter, a.nextResolution, e, t); - } - } -<<<<<<< Updated upstream -<<<<<<< Updated upstream - this.frameState_ = i, this.renderer_.renderFrame(i), i && (i.animate && this.render(), Array.prototype.push.apply(this.postRenderFunctions_, i.postRenderFunctions), r && (!this.previousExtent_ || !kt(this.previousExtent_) && !ut(i.extent, this.previousExtent_)) && (this.dispatchEvent(new wo(De.MOVESTART, this, r)), this.previousExtent_ = st(this.previousExtent_)), this.previousExtent_ && !i.viewHints[V.ANIMATING] && !i.viewHints[V.INTERACTING] && !ut(i.extent, this.previousExtent_) && (this.dispatchEvent(new wo(De.MOVEEND, this, i)), $e(i.extent, this.previousExtent_))), this.dispatchEvent(new wo(De.POSTRENDER, this, i)), this.renderComplete_ = (this.hasListener(De.LOADSTART) || this.hasListener(De.LOADEND) || this.hasListener(Ki.RENDERCOMPLETE)) && !this.tileQueue_.getTilesLoading() && !this.tileQueue_.getCount() && !this.getLoadingOrNotReady(), this.postRenderTimeoutHandle_ ||= setTimeout(() => { - this.postRenderTimeoutHandle_ = void 0, this.handlePostRender(); - }, 0); - } - setLayerGroup(e) { - let t = this.getLayerGroup(); - t && this.handleLayerRemove_(new vs("removelayer", t)), this.set(ko.LAYERGROUP, e); -======= -======= ->>>>>>> Stashed changes - this.frameState_ = i, this.renderer_.renderFrame(i), i && (i.animate && this.render(), Array.prototype.push.apply(this.postRenderFunctions_, i.postRenderFunctions), r && (!this.previousExtent_ || !mt(this.previousExtent_) && !Ye(i.extent, this.previousExtent_)) && (this.dispatchEvent(new kr(N.MOVESTART, this, r)), this.previousExtent_ = Ke(this.previousExtent_)), this.previousExtent_ && !i.viewHints[Lr.ANIMATING] && !i.viewHints[Lr.INTERACTING] && !Ye(i.extent, this.previousExtent_) && (this.dispatchEvent(new kr(N.MOVEEND, this, i)), Re(i.extent, this.previousExtent_))), this.dispatchEvent(new kr(N.POSTRENDER, this, i)), this.renderComplete_ = (this.hasListener(N.LOADSTART) || this.hasListener(N.LOADEND) || this.hasListener(lo.RENDERCOMPLETE)) && !this.tileQueue_.getTilesLoading() && !this.tileQueue_.getCount() && !this.getLoadingOrNotReady(), this.postRenderTimeoutHandle_ ||= setTimeout(() => { - this.postRenderTimeoutHandle_ = void 0, this.handlePostRender(); - }, 0); - } - setLayerGroup(t) { - let n = this.getLayerGroup(); - n && this.handleLayerRemove_(new oo("removelayer", n)), this.set(e.LAYERGROUP, t); -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes - } - setSize(e) { - this.set(ko.SIZE, e); - } - setTarget(e) { - this.set(ko.TARGET, e); - } -<<<<<<< Updated upstream - setView(e) { - if (!e || e instanceof uo) { - this.set(ko.VIEW, e); - return; - } - this.set(ko.VIEW, new uo()); - let t = this; - e.then(function(e) { - t.setView(new uo(e)); -======= - setView(t) { - if (!t || t instanceof ua) { - this.set(e.VIEW, t); - return; - } - this.set(e.VIEW, new ua()); - let n = this; - t.then(function(e) { - n.setView(new ua(e)); -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes - }); - } - updateSize() { - let e = this.getTargetElement(), t; - if (e) { - let n, r; - if (Ee(e)) { - let t = e.getContext("2d").getTransform(); - n = e.width / t.a, r = e.height / t.d; - } else { - let t = getComputedStyle(e); - n = e.offsetWidth - parseFloat(t.borderLeftWidth) - parseFloat(t.paddingLeft) - parseFloat(t.paddingRight) - parseFloat(t.borderRightWidth), r = e.offsetHeight - parseFloat(t.borderTopWidth) - parseFloat(t.paddingTop) - parseFloat(t.paddingBottom) - parseFloat(t.borderBottomWidth); - } -<<<<<<< Updated upstream -<<<<<<< Updated upstream - !isNaN(n) && !isNaN(r) && (t = [Math.max(0, n), Math.max(0, r)], !di(t) && (e.offsetWidth || e.offsetHeight || e.getClientRects().length) && zt("No map visible because the map container's width or height are 0.")); -======= - !isNaN(n) && !isNaN(r) && (t = [Math.max(0, n), Math.max(0, r)], !ts(t) && (e.offsetWidth || e.offsetHeight || e.getClientRects().length) && Gt("No map visible because the map container's width or height are 0.")); ->>>>>>> Stashed changes -======= - !isNaN(n) && !isNaN(r) && (t = [Math.max(0, n), Math.max(0, r)], !ts(t) && (e.offsetWidth || e.offsetHeight || e.getClientRects().length) && Gt("No map visible because the map container's width or height are 0.")); ->>>>>>> Stashed changes - } - let n = this.getSize(); - t && (!n || !h(t, n)) && (this.updateViewportSize_(t), this.setSize(t)); - } - updateViewportSize_(e) { - let t = this.getView(); - t && t.setViewportSize(e); - } -}; -<<<<<<< Updated upstream -<<<<<<< Updated upstream -function gu(e) { - let t = null; - e.keyboardEventTarget !== void 0 && (t = typeof e.keyboardEventTarget == "string" ? document.getElementById(e.keyboardEventTarget) : e.keyboardEventTarget); - let n = {}, r = e.layers && typeof e.layers.getLayers == "function" ? e.layers : new bs({ layers: e.layers }); - n[ko.LAYERGROUP] = r, n[ko.TARGET] = e.target, n[ko.VIEW] = e.view instanceof uo ? e.view : new uo(); - let i; - e.controls !== void 0 && (Array.isArray(e.controls) ? i = new N(e.controls.slice()) : (z(typeof e.controls.getArray == "function", "Expected `controls` to be an array or an `ol/Collection.js`"), i = e.controls)); -======= -======= ->>>>>>> Stashed changes -function zl(t) { - let n = null; - t.keyboardEventTarget !== void 0 && (n = typeof t.keyboardEventTarget == "string" ? document.getElementById(t.keyboardEventTarget) : t.keyboardEventTarget); - let r = {}, i = t.layers && typeof t.layers.getLayers == "function" ? t.layers : new co({ layers: t.layers }); - r[e.LAYERGROUP] = i, r[e.TARGET] = t.target, r[e.VIEW] = t.view instanceof ua ? t.view : new ua(); -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes - let a; - e.interactions !== void 0 && (Array.isArray(e.interactions) ? a = new N(e.interactions.slice()) : (z(typeof e.interactions.getArray == "function", "Expected `interactions` to be an array or an `ol/Collection.js`"), a = e.interactions)); - let o; - return e.overlays === void 0 ? o = new N() : Array.isArray(e.overlays) ? o = new N(e.overlays.slice()) : (z(typeof e.overlays.getArray == "function", "Expected `overlays` to be an array or an `ol/Collection.js`"), o = e.overlays), { - controls: i, - interactions: a, - keyboardEventTarget: t, - overlays: o, - values: n - }; -} -//#endregion -<<<<<<< Updated upstream -//#region node_modules/ol/tilegrid/TileGrid.js -var _u = [ - 0, - 0, - 0 -], vu = 5, yu = class { -======= -//#region node_modules/ol/Overlay.js -var Bl = { - ELEMENT: "element", - MAP: "map", - OFFSET: "offset", - POSITION: "position", - POSITIONING: "positioning" -}, Vl = class extends we { - constructor(e) { - super(), this.on, this.once, this.un, this.options = e, this.id = e.id, this.insertFirst = e.insertFirst === void 0 || e.insertFirst, this.stopEvent = e.stopEvent === void 0 || e.stopEvent, this.element = document.createElement("div"), this.element.className = e.className === void 0 ? "ol-overlay-container " + n : e.className, this.element.style.position = "absolute", this.element.style.pointerEvents = "auto", this.autoPan = e.autoPan === !0 ? {} : e.autoPan || void 0, this.rendered = { - transform_: "", - visible: !0 - }, this.mapPostrenderListenerKey = null, this.addChangeListener(Bl.ELEMENT, this.handleElementChanged), this.addChangeListener(Bl.MAP, this.handleMapChanged), this.addChangeListener(Bl.OFFSET, this.handleOffsetChanged), this.addChangeListener(Bl.POSITION, this.handlePositionChanged), this.addChangeListener(Bl.POSITIONING, this.handlePositioningChanged), e.element !== void 0 && this.setElement(e.element), this.setOffset(e.offset === void 0 ? [0, 0] : e.offset), this.setPositioning(e.positioning || "top-left"), e.position !== void 0 && this.setPosition(e.position); - } - getElement() { - return this.get(Bl.ELEMENT); - } - getId() { - return this.id; - } - getMap() { - return this.get(Bl.MAP) || null; - } - getOffset() { - return this.get(Bl.OFFSET); - } - getPosition() { - return this.get(Bl.POSITION); - } - getPositioning() { - return this.get(Bl.POSITIONING); - } - handleElementChanged() { - E(this.element); - let e = this.getElement(); - e && this.element.appendChild(e); - } - handleMapChanged() { - this.mapPostrenderListenerKey &&= (this.element?.remove(), j(this.mapPostrenderListenerKey), null); - let e = this.getMap(); - if (e) { - this.mapPostrenderListenerKey = A(e, N.POSTRENDER, this.render, this), this.updatePixelPosition(); - let t = this.stopEvent ? e.getOverlayContainerStopEvent() : e.getOverlayContainer(); - this.insertFirst ? t.insertBefore(this.element, t.childNodes[0] || null) : t.appendChild(this.element), this.performAutoPan(); - } - } - render() { - this.updatePixelPosition(); - } - handleOffsetChanged() { - this.updatePixelPosition(); - } - handlePositionChanged() { - this.updatePixelPosition(), this.performAutoPan(); - } - handlePositioningChanged() { - this.updatePixelPosition(); - } - setElement(e) { - this.set(Bl.ELEMENT, e); - } - setMap(e) { - this.set(Bl.MAP, e); - } - setOffset(e) { - this.set(Bl.OFFSET, e); - } - setPosition(e) { - this.set(Bl.POSITION, e); - } - performAutoPan() { - this.autoPan && this.panIntoView(this.autoPan); - } - panIntoView(e) { - let t = this.getMap(); - if (!t || !t.getTargetElement() || !this.get(Bl.POSITION)) return; - let n = this.getRect(t.getTargetElement(), t.getSize()), r = this.getElement(), i = this.getRect(r, [C(r), w(r)]); - e ||= {}; - let a = e.margin === void 0 ? 20 : e.margin; - if (!Ve(n, i)) { - let r = i[0] - n[0], o = n[2] - i[2], s = i[1] - n[1], c = n[3] - i[3], l = [0, 0]; - if (r < 0 ? l[0] = r - a : o < 0 && (l[0] = Math.abs(o) + a), s < 0 ? l[1] = s - a : c < 0 && (l[1] = Math.abs(c) + a), l[0] !== 0 || l[1] !== 0) { - let n = t.getView().getCenterInternal(), r = t.getPixelFromCoordinateInternal(n); - if (!r) return; - let i = [r[0] + l[0], r[1] + l[1]], a = e.animation || {}; - t.getView().animateInternal({ - center: t.getCoordinateFromPixelInternal(i), - duration: a.duration, - easing: a.easing - }); - } - } - } - getRect(e, t) { - let n = e.getBoundingClientRect(), r = n.left + window.pageXOffset, i = n.top + window.pageYOffset; - return [ - r, - i, - r + t[0], - i + t[1] - ]; - } - setPositioning(e) { - this.set(Bl.POSITIONING, e); - } - setVisible(e) { - this.rendered.visible !== e && (this.element.style.display = e ? "" : "none", this.rendered.visible = e); - } - updatePixelPosition() { - let e = this.getMap(), t = this.getPosition(); - if (!e || !e.isRendered() || !t) { - this.setVisible(!1); - return; - } - let n = e.getPixelFromCoordinate(t), r = e.getSize(); - this.updateRenderedPosition(n, r); - } - updateRenderedPosition(e, t) { - let n = this.element.style, r = this.getOffset(), i = this.getPositioning(); - this.setVisible(!0); - let a = `${e[0] + r[0]}px`, o = `${e[1] + r[1]}px`, s = "0%", c = "0%"; - i == "bottom-right" || i == "center-right" || i == "top-right" ? s = "-100%" : (i == "bottom-center" || i == "center-center" || i == "top-center") && (s = "-50%"), i == "bottom-left" || i == "bottom-center" || i == "bottom-right" ? c = "-100%" : (i == "center-left" || i == "center-center" || i == "center-right") && (c = "-50%"); - let l = `translate(${s}, ${c}) translate(${a}, ${o})`; - this.rendered.transform_ != l && (this.rendered.transform_ = l, n.transform = l); - } - getOptions() { - return this.options; - } -}, Hl = .75, Ul = .1, Wl = class extends Te { - constructor(e) { - e ||= {}, super({ - element: document.createElement("div"), - render: e.render, - target: e.target - }), this.boundHandleRotationChanged_ = this.handleRotationChanged_.bind(this), this.collapsed_ = e.collapsed === void 0 || e.collapsed, this.collapsible_ = e.collapsible === void 0 || e.collapsible, this.collapsible_ || (this.collapsed_ = !1), this.rotateWithView_ = e.rotateWithView !== void 0 && e.rotateWithView, this.viewExtent_ = void 0; - let t = e.className === void 0 ? "ol-overviewmap" : e.className, n = e.tipLabel === void 0 ? "Overview map" : e.tipLabel, i = e.collapseLabel === void 0 ? "‹" : e.collapseLabel; - typeof i == "string" ? (this.collapseLabel_ = document.createElement("span"), this.collapseLabel_.textContent = i) : this.collapseLabel_ = i; - let s = e.label === void 0 ? "›" : e.label; - typeof s == "string" ? (this.label_ = document.createElement("span"), this.label_.textContent = s) : this.label_ = s; - let c = this.collapsible_ && !this.collapsed_ ? this.collapseLabel_ : this.label_, l = document.createElement("button"); - l.setAttribute("type", "button"), l.title = n, l.appendChild(c), l.addEventListener(M.CLICK, this.handleClick_.bind(this), !1), this.ovmapDiv_ = document.createElement("div"), this.ovmapDiv_.className = "ol-overviewmap-map", this.view_ = e.view; - let u = new Rl({ - view: e.view, - controls: new Or(), - interactions: new Or() - }); - this.ovmap_ = u, e.layers && e.layers.forEach(function(e) { - u.addLayer(e); - }); - let d = document.createElement("div"); - d.className = "ol-overviewmap-box", d.style.boxSizing = "border-box", this.boxOverlay_ = new Vl({ - position: [0, 0], - positioning: "center-center", - element: d - }), this.ovmap_.addOverlay(this.boxOverlay_); - let f = t + " " + r + " " + a + (this.collapsed_ && this.collapsible_ ? " " + o : "") + (this.collapsible_ ? "" : " ol-uncollapsible"), p = this.element; - p.className = f, p.appendChild(this.ovmapDiv_), p.appendChild(l); - let m = this.boxOverlay_, h = this.boxOverlay_.getElement(), g = (e) => ({ - clientX: e.clientX, - clientY: e.clientY - }), _ = function(e) { - let t = g(e), n = u.getEventCoordinate(t); - m.setPosition(n); - }, v = (e) => { - let t = u.getEventCoordinateInternal(e), n = this.getMap(); - n.getView().setCenterInternal(t); - let r = n.getOwnerDocument(); - r.removeEventListener("pointermove", _), r.removeEventListener("pointerup", v); - }; - this.ovmapDiv_.addEventListener("pointerdown", (e) => { - let t = this.getMap().getOwnerDocument(); - e.target === h && t.addEventListener("pointermove", _), t.addEventListener("pointerup", v); - }); - } - setMap(e) { - let t = this.getMap(); - if (e !== t) { - if (t) { - let e = t.getView(); - e && this.unbindView_(e), this.ovmap_.setTarget(null); - } - if (super.setMap(e), e) { - this.ovmap_.setTarget(this.ovmapDiv_), this.listenerKeys.push(A(e, re.PROPERTYCHANGE, this.handleMapPropertyChange_, this)); - let t = e.getView(); - t && this.bindView_(t), this.ovmap_.isRendered() || this.updateBoxAfterOvmapIsRendered_(); - } - } - } - handleMapPropertyChange_(t) { - if (t.key === e.VIEW) { - let e = t.oldValue; - e && this.unbindView_(e); - let n = this.getMap().getView(); - this.bindView_(n); - } else !this.ovmap_.isRendered() && (t.key === e.TARGET || t.key === e.SIZE) && this.ovmap_.updateSize(); - } - bindView_(e) { - if (!this.view_) { - let t = new ua({ projection: e.getProjection() }); - this.ovmap_.setView(t); - } - e.addChangeListener(Rr.ROTATION, this.boundHandleRotationChanged_), this.handleRotationChanged_(), e.isDef() && (this.ovmap_.updateSize(), this.resetExtent_()); - } - unbindView_(e) { - e.removeChangeListener(Rr.ROTATION, this.boundHandleRotationChanged_); - } - handleRotationChanged_() { - this.rotateWithView_ && this.ovmap_.getView().setRotation(this.getMap().getView().getRotation()); - } - validateExtent_() { - let e = this.getMap(), t = this.ovmap_; - if (!e.isRendered() || !t.isRendered()) return; - let n = e.getSize(), r = e.getView().calculateExtentInternal(n); - if (this.viewExtent_ && Ye(r, this.viewExtent_)) return; - this.viewExtent_ = r; - let i = t.getSize(), a = t.getView().calculateExtentInternal(i), o = t.getPixelFromCoordinateInternal(dt(r)), s = t.getPixelFromCoordinateInternal(rt(r)), c = Math.abs(o[0] - s[0]), l = Math.abs(o[1] - s[1]), u = i[0], d = i[1]; - c < u * Ul || l < d * Ul || c > u * Hl || l > d * Hl ? this.resetExtent_() : Ve(a, r) || this.recenter_(); - } - resetExtent_() { - let e = this.getMap(), t = this.ovmap_, n = e.getSize(), r = e.getView().calculateExtentInternal(n), i = t.getView(); - gt(r, 1 / (2 ** (Math.log(Hl / Ul) / Math.LN2 / 2) * Ul)), i.fitInternal($i(r)); - } - recenter_() { - let e = this.getMap(), t = this.ovmap_, n = e.getView(); - t.getView().setCenterInternal(n.getCenterInternal()); - } - updateBox_() { - let e = this.getMap(), t = this.ovmap_; - if (!e.isRendered() || !t.isRendered()) return; - let n = e.getSize(), r = e.getView(), i = t.getView(), a = this.rotateWithView_ ? 0 : -r.getRotation(), o = this.boxOverlay_, s = this.boxOverlay_.getElement(), c = r.getCenter(), l = r.getResolution(), u = i.getResolution(), d = n[0] * l / u, f = n[1] * l / u; - if (o.setPosition(c), s) { - s.style.width = d + "px", s.style.height = f + "px"; - let e = "rotate(" + a + "rad)"; - s.style.transform = e; - } - } - updateBoxAfterOvmapIsRendered_() { - this.ovmapPostrenderKey_ ||= ne(this.ovmap_, N.POSTRENDER, (e) => { - delete this.ovmapPostrenderKey_, this.updateBox_(); - }); - } - handleClick_(e) { - e.preventDefault(), this.handleToggle_(); - } - handleToggle_() { - this.element.classList.toggle(o), this.collapsed_ ? T(this.collapseLabel_, this.label_) : T(this.label_, this.collapseLabel_), this.collapsed_ = !this.collapsed_; - let e = this.ovmap_; - if (!this.collapsed_) { - if (e.isRendered()) { - this.viewExtent_ = void 0, e.render(); - return; - } - e.updateSize(), this.resetExtent_(), this.updateBoxAfterOvmapIsRendered_(); - } - } - getCollapsible() { - return this.collapsible_; - } - setCollapsible(e) { - this.collapsible_ !== e && (this.collapsible_ = e, this.element.classList.toggle("ol-uncollapsible"), !e && this.collapsed_ && this.handleToggle_()); - } - setCollapsed(e) { - !this.collapsible_ || this.collapsed_ === e || this.handleToggle_(); - } - getCollapsed() { - return this.collapsed_; - } - getRotateWithView() { - return this.rotateWithView_; - } - setRotateWithView(e) { - this.rotateWithView_ !== e && (this.rotateWithView_ = e, this.getMap().getView().getRotation() !== 0 && (this.rotateWithView_ ? this.handleRotationChanged_() : this.ovmap_.getView().setRotation(0), this.viewExtent_ = void 0, this.validateExtent_(), this.updateBox_())); - } - getOverviewMap() { - return this.ovmap_; - } - render(e) { - this.validateExtent_(), this.updateBox_(); - } -}, Gl = "units", Kl = [ - 1, - 2, - 5 -], ql = 25.4 / .28, Jl = class extends Te { - constructor(e) { - e ||= {}; - let t = document.createElement("div"); - t.style.pointerEvents = "none", super({ - element: t, - render: e.render, - target: e.target - }), this.on, this.once, this.un; - let n = e.className === void 0 ? e.bar ? "ol-scale-bar" : "ol-scale-line" : e.className; - this.innerElement_ = document.createElement("div"), this.innerElement_.className = n + "-inner", this.element.className = n + " " + r, this.element.appendChild(this.innerElement_), this.viewState_ = null, this.minWidth_ = e.minWidth === void 0 ? 64 : e.minWidth, this.maxWidth_ = e.maxWidth, this.renderedVisible_ = !1, this.renderedWidth_ = void 0, this.renderedHTML_ = "", this.addChangeListener(Gl, this.handleUnitsChanged_), this.setUnits(e.units || "metric"), this.scaleBar_ = e.bar || !1, this.scaleBarSteps_ = e.steps || 4, this.scaleBarText_ = e.text || !1, this.dpi_ = e.dpi || void 0; - } - getUnits() { - return this.get(Gl); - } - handleUnitsChanged_() { - this.updateElement_(); - } - setUnits(e) { - this.set(Gl, e); - } - setDpi(e) { - this.dpi_ = e; - } - updateElement_() { - let e = this.viewState_; - if (!e) { - this.renderedVisible_ &&= (this.element.style.display = "none", !1); - return; - } - let t = e.center, n = e.projection, r = this.getUnits(), i = r == "degrees" ? "degrees" : "m", a = rr(n, e.resolution, t, i), o = this.minWidth_ * (this.dpi_ || ql) / ql, s = this.maxWidth_ === void 0 ? void 0 : this.maxWidth_ * (this.dpi_ || ql) / ql, c = o * a, l = ""; - if (r == "degrees") { - let e = Kt.degrees; - c *= e, c < e / 60 ? (l = "″", a *= 3600) : c < e ? (l = "′", a *= 60) : l = "°"; - } else if (r == "imperial") c < .9144 ? (l = "in", a /= .0254) : c < 1609.344 ? (l = "ft", a /= .3048) : (l = "mi", a /= 1609.344); - else if (r == "nautical") a /= 1852, l = "NM"; - else if (r == "metric") c < 1e-6 ? (l = "nm", a *= 1e9) : c < .001 ? (l = "μm", a *= 1e6) : c < 1 ? (l = "mm", a *= 1e3) : c < 1e3 ? l = "m" : (l = "km", a /= 1e3); - else if (r == "us") c < .9144 ? (l = "in", a *= 39.37) : c < 1609.344 ? (l = "ft", a /= .30480061) : (l = "mi", a /= 1609.3472); - else throw Error("Invalid units"); - let u = 3 * Math.floor(Math.log(o * a) / Math.log(10)), d, f, p, m = 0, h, g; - for (;;) { - p = Math.floor(u / 3); - let e = 10 ** p; - if (d = Kl[(u % 3 + 3) % 3] * e, f = Math.round(d / a), isNaN(f)) { - this.element.style.display = "none", this.renderedVisible_ = !1; - return; - } - if (s !== void 0 && f >= s) { - d = m, f = h, p = g; - break; - } - if (f >= o) break; - m = d, h = f, g = p, ++u; - } - let _ = this.scaleBar_ ? this.createScaleBar(f, d, l) : d.toFixed(p < 0 ? -p : 0) + " " + l; - this.renderedHTML_ != _ && (this.innerElement_.innerHTML = _, this.renderedHTML_ = _), this.renderedWidth_ != f && (this.innerElement_.style.width = f + "px", this.renderedWidth_ = f), this.renderedVisible_ ||= (this.element.style.display = "", !0); - } - createScaleBar(e, t, n) { - let r = this.getScaleForResolution(), i = r < 1 ? Math.round(1 / r).toLocaleString() + " : 1" : "1 : " + Math.round(r).toLocaleString(), a = this.scaleBarSteps_, o = e / a, s = [this.createMarker("absolute")]; - for (let r = 0; r < a; ++r) { - let i = r % 2 == 0 ? "ol-scale-singlebar-odd" : "ol-scale-singlebar-even"; - s.push(`
` + this.createMarker("relative") + (r % 2 == 0 || a === 2 ? this.createStepText(r, e, !1, t, n) : "") + "
"); - } - return s.push(this.createStepText(a, e, !0, t, n)), (this.scaleBarText_ ? `
` + i + "
" : "") + s.join(""); - } - createMarker(e) { - return `
`; - } - createStepText(e, t, n, r, i) { - let a = (e === 0 ? 0 : Math.round(r / this.scaleBarSteps_ * e * 100) / 100) + (e === 0 ? "" : " " + i), o = e === 0 ? -3 : t / this.scaleBarSteps_ * -1, s = e === 0 ? 0 : t / this.scaleBarSteps_ * 2; - return `
` + a + "
"; - } - getScaleForResolution() { - let e = rr(this.viewState_.projection, this.viewState_.resolution, this.viewState_.center, "m"), t = this.dpi_ || ql; - return 1e3 / 25.4 * e * t; - } - render(e) { - let t = e.frameState; - this.viewState_ = t ? t.viewState : null, this.updateElement_(); - } -}, Yl = class extends ye { - constructor(e, t, n) { - super(), n ||= {}, this.tileCoord = e, this.state = t, this.key = "", this.transition_ = n.transition === void 0 ? 250 : n.transition, this.transitionStarts_ = {}, this.interpolate = !!n.interpolate; - } - changed() { - this.dispatchEvent(M.CHANGE); - } - release() { - this.setState(L.EMPTY); - } - getKey() { - return this.key + "/" + this.tileCoord; - } - getTileCoord() { - return this.tileCoord; - } - getState() { - return this.state; - } - setState(e) { - if (this.state !== L.EMPTY) { - if (this.state !== L.ERROR && this.state > e) throw Error("Tile load sequence violation"); - this.state = e, this.changed(); - } - } - load() { - P(); - } - getAlpha(e, t) { - if (!this.transition_) return 1; - let n = this.transitionStarts_[e]; - if (!n) n = t, this.transitionStarts_[e] = n; - else if (n === -1) return 1; - let r = t - n + 1e3 / 60; - return r >= this.transition_ ? 1 : Vr(r / this.transition_); - } - inTransition(e) { - return this.transition_ ? this.transitionStarts_[e] !== -1 : !1; - } - endTransition(e) { - this.transition_ && (this.transitionStarts_[e] = -1); - } - disposeInternal() { - this.release(), super.disposeInternal(); - } -}; -//#endregion -//#region node_modules/ol/DataTile.js -function Xl(e) { - return e instanceof Image || e instanceof HTMLCanvasElement || e instanceof HTMLVideoElement || e instanceof ImageBitmap ? e : null; -} -var Zl = /* @__PURE__ */ Error("disposed"), Ql = [256, 256], $l = class extends Yl { - constructor(e) { - let t = L.IDLE; - super(e.tileCoord, t, { - transition: e.transition, - interpolate: e.interpolate - }), this.loader_ = e.loader, this.data_ = null, this.error_ = null, this.size_ = e.size || null, this.controller_ = e.controller || null; - } - getSize() { - if (this.size_) return this.size_; - let e = Xl(this.data_); - return e ? [e.width, e.height] : Ql; - } - getData() { - return this.data_; - } - getError() { - return this.error_; - } - load() { - if (this.state !== L.IDLE && this.state !== L.ERROR) return; - this.state = L.LOADING, this.changed(); - let e = this; - this.loader_().then(function(t) { - e.data_ = t, e.state = L.LOADED, e.changed(); - }).catch(function(t) { - e.error_ = t, e.state = L.ERROR, e.changed(); - }); - } - disposeInternal() { - this.controller_ &&= (this.controller_.abort(Zl), null), super.disposeInternal(); - } -}, eu = class extends Yl { - constructor(e, t, n, r, i, a) { - super(e, t, a), this.crossOrigin_ = r?.crossOrigin, this.referrerPolicy_ = r?.referrerPolicy, this.src_ = n, this.key = n, this.image_, g ? this.image_ = new OffscreenCanvas(1, 1) : (this.image_ = new Image(), this.crossOrigin_ !== null && (this.image_.crossOrigin = this.crossOrigin_), this.referrerPolicy_ !== void 0 && (this.image_.referrerPolicy = this.referrerPolicy_)), this.unlisten_ = null, this.tileLoadFunction_ = i; - } - getImage() { - return this.image_; - } - setImage(e) { - this.image_ = e, this.state = L.LOADED, this.unlistenImage_(), this.changed(); - } - getCrossOrigin() { - return this.crossOrigin_; - } - getReferrerPolicy() { - return this.referrerPolicy_; - } - handleImageError_() { - this.state = L.ERROR, this.unlistenImage_(), this.image_ = tu(), this.changed(); - } - handleImageLoad_() { - if (g) this.state = L.LOADED; - else { - let e = this.image_; - this.state = e.naturalWidth && e.naturalHeight ? L.LOADED : L.EMPTY; - } - this.unlistenImage_(), this.changed(); - } - load() { - this.state == L.ERROR && (this.state = L.IDLE, this.image_ = new Image(), this.crossOrigin_ !== null && (this.image_.crossOrigin = this.crossOrigin_), this.referrerPolicy_ !== void 0 && (this.image_.referrerPolicy = this.referrerPolicy_)), this.state == L.IDLE && (this.state = L.LOADING, this.changed(), this.tileLoadFunction_(this, this.src_), this.unlisten_ = $s(this.image_, this.handleImageLoad_.bind(this), this.handleImageError_.bind(this))); - } - unlistenImage_() { - this.unlisten_ &&= (this.unlisten_(), null); - } - disposeInternal() { - this.unlistenImage_(), this.image_ = null, super.disposeInternal(); - } -}; -function tu() { - let e = y(1, 1); - return e.fillStyle = "rgba(0,0,0,0)", e.fillRect(0, 0, 1, 1), e.canvas; -} -//#endregion -//#region node_modules/ol/TileRange.js -var nu = class { - constructor(e, t, n, r) { - this.minX = e, this.maxX = t, this.minY = n, this.maxY = r; - } - contains(e) { - return this.containsXY(e[1], e[2]); - } - containsTileRange(e) { - return this.minX <= e.minX && e.maxX <= this.maxX && this.minY <= e.minY && e.maxY <= this.maxY; - } - containsXY(e, t) { - return this.minX <= e && e <= this.maxX && this.minY <= t && t <= this.maxY; - } - equals(e) { - return this.minX == e.minX && this.minY == e.minY && this.maxX == e.maxX && this.maxY == e.maxY; - } - extend(e) { - e.minX < this.minX && (this.minX = e.minX), e.maxX > this.maxX && (this.maxX = e.maxX), e.minY < this.minY && (this.minY = e.minY), e.maxY > this.maxY && (this.maxY = e.maxY); - } - getHeight() { - return this.maxY - this.minY + 1; - } - getSize() { - return [this.getWidth(), this.getHeight()]; - } - getWidth() { - return this.maxX - this.minX + 1; - } - intersects(e) { - return this.minX <= e.maxX && this.maxX >= e.minX && this.minY <= e.maxY && this.maxY >= e.minY; - } -}; -function ru(e, t, n, r, i) { - return i === void 0 ? new nu(e, t, n, r) : (i.minX = e, i.maxX = t, i.minY = n, i.maxY = r, i); -} -//#endregion -//#region node_modules/ol/reproj.js -var iu, au = []; -function ou(e, t, n, r, i) { - e.beginPath(), e.moveTo(0, 0), e.lineTo(t, n), e.lineTo(r, i), e.closePath(), e.save(), e.clip(), e.fillRect(0, 0, Math.max(t, r) + 1, Math.max(n, i)), e.restore(); -} -function su(e, t) { - return Math.abs(e[t * 4] - 210) > 2 || Math.abs(e[t * 4 + 3] - 191.25) > 2; -} -function cu() { - if (iu === void 0) { - let e = y(6, 6, au); - e.globalCompositeOperation = "lighter", e.fillStyle = "rgba(210, 0, 0, 0.75)", ou(e, 4, 5, 4, 0), ou(e, 4, 5, 0, 5); - let t = e.getImageData(0, 0, 3, 3).data; - iu = su(t, 0) || su(t, 4) || su(t, 8), S(e), au.push(e.canvas); - } - return iu; -} -function lu(e, t, n, r) { - let i = fr(n, t, e), a = rr(t, r, n), o = t.getMetersPerUnit(); - o !== void 0 && (a *= o); - let s = e.getMetersPerUnit(); - s !== void 0 && (a /= s); - let c = e.getExtent(); - if (!c || Be(c, i)) { - let t = rr(e, a, i) / a; - isFinite(t) && t > 0 && (a /= t); - } - return a; -} -function uu(e, t, n, r) { - let i = lu(e, t, it(n), r); - return (!isFinite(i) || i <= 0) && et(n, function(n) { - return i = lu(e, t, n, r), isFinite(i) && i > 0; - }), i; -} -function du(e, t, n, r, i, a, o, s, c, l, u, d, f, p) { - let m = y(Math.round(n * e), Math.round(n * t), au); - if (d || (m.imageSmoothingEnabled = !1), c.length === 0) return m.canvas; - m.scale(n, n); - function h(e) { - return Math.round(e * n) / n; - } - m.globalCompositeOperation = "lighter"; - let g = We(); - c.forEach(function(e, t, n) { - Xe(g, e.extent); - }); - let _, v = n / r, b = (d ? 1 : 1 + 2 ** -24) / v; - if (!f || c.length !== 1 || l !== 0) { - if (_ = y(Math.round(I(g) * v), Math.round(ct(g) * v), au), d || (_.imageSmoothingEnabled = !1), i && p) { - let e = (i[0] - g[0]) * v, t = -(i[3] - g[3]) * v, n = I(i) * v, r = ct(i) * v; - _.rect(e, t, n, r), _.clip(); - } - c.forEach(function(e, t, n) { - if (e.image.width > 0 && e.image.height > 0) { - if (e.clipExtent) { - _.save(); - let t = (e.clipExtent[0] - g[0]) * v, n = -(e.clipExtent[3] - g[3]) * v, r = I(e.clipExtent) * v, i = ct(e.clipExtent) * v; - _.rect(d ? t : Math.round(t), d ? n : Math.round(n), d ? r : Math.round(t + r) - Math.round(t), d ? i : Math.round(n + i) - Math.round(n)), _.clip(); - } - let t = (e.extent[0] - g[0]) * v, n = -(e.extent[3] - g[3]) * v, r = I(e.extent) * v, i = ct(e.extent) * v; - _.drawImage(e.image, l, l, e.image.width - 2 * l, e.image.height - 2 * l, d ? t : Math.round(t), d ? n : Math.round(n), d ? r : Math.round(t + r) - Math.round(t), d ? i : Math.round(n + i) - Math.round(n)), e.clipExtent && _.restore(); - } - }); - } - let x = dt(o); - return s.getTriangles().forEach(function(e, t, n) { - let r = e.source, i = e.target, o = r[0][0], s = r[0][1], l = r[1][0], u = r[1][1], f = r[2][0], p = r[2][1], v = h((i[0][0] - x[0]) / a), y = h(-(i[0][1] - x[1]) / a), S = h((i[1][0] - x[0]) / a), C = h(-(i[1][1] - x[1]) / a), w = h((i[2][0] - x[0]) / a), T = h(-(i[2][1] - x[1]) / a), E = o, ee = s; - o = 0, s = 0, l -= E, u -= ee, f -= E, p -= ee; - let D = Tt([ - [ - l, - u, - 0, - 0, - S - v - ], - [ - f, - p, - 0, - 0, - w - v - ], - [ - 0, - 0, - l, - u, - C - y - ], - [ - 0, - 0, - f, - p, - T - y - ] - ]); - if (!D) return; - if (m.save(), m.beginPath(), cu() || !d) { - m.moveTo(S, C); - let e = v - S, t = y - C; - for (let n = 0; n < 4; n++) m.lineTo(S + h((n + 1) * e / 4), C + h(n * t / 3)), n != 3 && m.lineTo(S + h((n + 1) * e / 4), C + h((n + 1) * t / 3)); - m.lineTo(w, T); - } else m.moveTo(S, C), m.lineTo(v, y), m.lineTo(w, T); - m.clip(), m.transform(D[0], D[2], D[1], D[3], v, y), m.translate(g[0] - E, g[3] - ee); - let O; - if (_) O = _.canvas, m.scale(b, -b); - else { - let e = c[0], t = e.extent; - O = e.image, m.scale(I(t) / O.width, -ct(t) / O.height); - } - m.drawImage(O, 0, 0), m.restore(); - }), _ && (S(_), au.push(_.canvas)), u && (m.save(), m.globalCompositeOperation = "source-over", m.strokeStyle = "black", m.lineWidth = 1, s.getTriangles().forEach(function(e, t, n) { - let r = e.target, i = (r[0][0] - x[0]) / a, o = -(r[0][1] - x[1]) / a, s = (r[1][0] - x[0]) / a, c = -(r[1][1] - x[1]) / a, l = (r[2][0] - x[0]) / a, u = -(r[2][1] - x[1]) / a; - m.beginPath(), m.moveTo(s, c), m.lineTo(i, o), m.lineTo(l, u), m.closePath(), m.stroke(); - }), m.restore()), m.canvas; -} -//#endregion -//#region node_modules/ol/reproj/Triangulation.js -var fu = 10, pu = .25, mu = class { - constructor(e, t, n, r, i, a, o) { - this.sourceProj_ = e, this.targetProj_ = t; - let s = {}, c = o ? sr((e) => z(o, fr(e, this.targetProj_, this.sourceProj_))) : dr(this.targetProj_, this.sourceProj_); - this.transformInv_ = function(e) { - let t = e[0] + "/" + e[1]; - return s[t] || (s[t] = c(e)), s[t]; - }, this.maxSourceExtent_ = r, this.errorThresholdSquared_ = i * i, this.triangles_ = [], this.wrapsXInSource_ = !1, this.canWrapXInSource_ = this.sourceProj_.canWrapX() && !!r && !!this.sourceProj_.getExtent() && I(r) >= I(this.sourceProj_.getExtent()), this.sourceWorldWidth_ = this.sourceProj_.getExtent() ? I(this.sourceProj_.getExtent()) : null, this.targetWorldWidth_ = this.targetProj_.getExtent() ? I(this.targetProj_.getExtent()) : null; - let l = dt(n), u = ft(n), d = rt(n), f = nt(n), p = this.transformInv_(l), m = this.transformInv_(u), h = this.transformInv_(d), g = this.transformInv_(f), _ = fu + (a ? Math.max(0, Math.ceil(Math.log2(tt(n) / (a * a * 256 * 256)))) : 0); - if (this.addQuad_(l, u, d, f, p, m, h, g, _), this.wrapsXInSource_) { - let e = Infinity; - this.triangles_.forEach(function(t, n, r) { - e = Math.min(e, t.source[0][0], t.source[1][0], t.source[2][0]); - }), this.triangles_.forEach((t) => { - if (Math.max(t.source[0][0], t.source[1][0], t.source[2][0]) - e > this.sourceWorldWidth_ / 2) { - let n = [ - [t.source[0][0], t.source[0][1]], - [t.source[1][0], t.source[1][1]], - [t.source[2][0], t.source[2][1]] - ]; - n[0][0] - e > this.sourceWorldWidth_ / 2 && (n[0][0] -= this.sourceWorldWidth_), n[1][0] - e > this.sourceWorldWidth_ / 2 && (n[1][0] -= this.sourceWorldWidth_), n[2][0] - e > this.sourceWorldWidth_ / 2 && (n[2][0] -= this.sourceWorldWidth_); - let r = Math.min(n[0][0], n[1][0], n[2][0]); - Math.max(n[0][0], n[1][0], n[2][0]) - r < this.sourceWorldWidth_ / 2 && (t.source = n); - } - }); - } - s = {}; - } - addTriangle_(e, t, n, r, i, a) { - this.triangles_.push({ - source: [ - r, - i, - a - ], - target: [ - e, - t, - n - ] - }); - } - addQuad_(e, t, n, r, i, a, o, s, c) { - let l = Fe([ - i, - a, - o, - s - ]), u = this.sourceWorldWidth_ ? I(l) / this.sourceWorldWidth_ : null, d = this.sourceWorldWidth_, f = this.sourceProj_.canWrapX() && u > .5 && u < 1, p = !1; - if (c > 0 && (this.targetProj_.isGlobal() && this.targetWorldWidth_ && (p = I(Fe([ - e, - t, - n, - r - ])) / this.targetWorldWidth_ > pu || p), !f && this.sourceProj_.isGlobal() && u && (p = u > pu || p)), !p && this.maxSourceExtent_ && isFinite(l[0]) && isFinite(l[1]) && isFinite(l[2]) && isFinite(l[3]) && !pt(l, this.maxSourceExtent_)) return; - let m = 0; - if (!p && (!isFinite(i[0]) || !isFinite(i[1]) || !isFinite(a[0]) || !isFinite(a[1]) || !isFinite(o[0]) || !isFinite(o[1]) || !isFinite(s[0]) || !isFinite(s[1]))) { - if (c > 0) p = !0; - else if (m = (!isFinite(i[0]) || !isFinite(i[1]) ? 8 : 0) + (!isFinite(a[0]) || !isFinite(a[1]) ? 4 : 0) + (!isFinite(o[0]) || !isFinite(o[1]) ? 2 : 0) + +(!isFinite(s[0]) || !isFinite(s[1])), m != 1 && m != 2 && m != 4 && m != 8) return; - } - if (c > 0) { - if (!p) { - let t = [(e[0] + n[0]) / 2, (e[1] + n[1]) / 2], r = this.transformInv_(t), a; - a = f ? (Ot(i[0], d) + Ot(o[0], d)) / 2 - Ot(r[0], d) : (i[0] + o[0]) / 2 - r[0]; - let s = (i[1] + o[1]) / 2 - r[1]; - p = a * a + s * s > this.errorThresholdSquared_; - } - if (p) { - if (Math.abs(e[0] - n[0]) <= Math.abs(e[1] - n[1])) { - let l = [(t[0] + n[0]) / 2, (t[1] + n[1]) / 2], u = this.transformInv_(l), d = [(r[0] + e[0]) / 2, (r[1] + e[1]) / 2], f = this.transformInv_(d); - this.addQuad_(e, t, l, d, i, a, u, f, c - 1), this.addQuad_(d, l, n, r, f, u, o, s, c - 1); - } else { - let l = [(e[0] + t[0]) / 2, (e[1] + t[1]) / 2], u = this.transformInv_(l), d = [(n[0] + r[0]) / 2, (n[1] + r[1]) / 2], f = this.transformInv_(d); - this.addQuad_(e, l, d, r, i, u, f, s, c - 1), this.addQuad_(l, t, n, d, u, a, o, f, c - 1); - } - return; - } - } - if (f) { - if (!this.canWrapXInSource_) return; - this.wrapsXInSource_ = !0; - } - m & 11 || this.addTriangle_(e, n, r, i, o, s), m & 14 || this.addTriangle_(e, n, t, i, o, a), m && (m & 13 || this.addTriangle_(t, r, e, a, s, i), m & 7 || this.addTriangle_(t, r, n, a, s, o)); - } - calculateSourceExtent() { - let e = We(); - return this.triangles_.forEach(function(t, n, r) { - let i = t.source; - Ze(e, i[0]), Ze(e, i[1]), Ze(e, i[2]); - }), e; - } - getTriangles() { - return this.triangles_; - } -}, hu = .5, gu = class extends Yl { - constructor(e, t, n, r, i, a, o, s, c, l, u, d) { - super(i, L.IDLE, d), this.renderEdges_ = u !== void 0 && u, this.pixelRatio_ = o, this.gutter_ = s, this.canvas_ = null, this.sourceTileGrid_ = t, this.targetTileGrid_ = r, this.wrappedTileCoord_ = a || i, this.sourceTiles_ = [], this.sourcesListenerKeys_ = null, this.sourceZ_ = 0, this.clipExtent_ = e.canWrapX() ? e.getExtent() : void 0; - let f = r.getTileCoordExtent(this.wrappedTileCoord_), p = this.targetTileGrid_.getExtent(), m = this.sourceTileGrid_.getExtent(), h = p ? lt(f, p) : f; - if (tt(h) === 0) { - this.state = L.EMPTY; - return; - } - let g = e.getExtent(); - g && (m = m ? lt(m, g) : g); - let _ = r.getResolution(this.wrappedTileCoord_[0]), v = uu(e, n, h, _); - if (!isFinite(v) || v <= 0) { - this.state = L.EMPTY; - return; - } - let y = l === void 0 ? hu : l; - if (this.triangulation_ = new mu(e, n, h, m, v * y, _), this.triangulation_.getTriangles().length === 0) { - this.state = L.EMPTY; - return; - } - this.sourceZ_ = t.getZForResolution(v); - let b = this.triangulation_.calculateSourceExtent(); - if (m && (e.canWrapX() ? (b[1] = St(b[1], m[1], m[3]), b[3] = St(b[3], m[1], m[3])) : b = lt(b, m)), !tt(b)) this.state = L.EMPTY; - else { - let n = 0, r = 0; - e.canWrapX() && (n = I(g), r = Math.floor((b[0] - g[0]) / n)), bt(b.slice(), e, !0).forEach((e) => { - let i = t.getTileRangeForExtentAndZ(e, this.sourceZ_); - for (let e = i.minX; e <= i.maxX; e++) for (let t = i.minY; t <= i.maxY; t++) { - let i = r * n; - this.sourceTiles_.push({ - getTile: () => c(this.sourceZ_, e, t, o), - offset: i - }); - } - ++r; - }), this.sourceTiles_.length === 0 && (this.state = L.EMPTY); - } - } - getImage() { - return this.canvas_; - } - reproject_() { - let e = []; - if (this.sourceTiles_.forEach((t) => { - let n = t.tile; - if (n && n.getState() == L.LOADED) { - let r = this.sourceTileGrid_.getTileCoordExtent(n.tileCoord); - r[0] += t.offset, r[2] += t.offset; - let i = this.clipExtent_?.slice(); - i && (i[0] += t.offset, i[2] += t.offset), e.push({ - extent: r, - clipExtent: i, - image: n.getImage() - }); - } - }), this.sourceTiles_.length = 0, e.length === 0) this.state = L.ERROR; - else { - let t = this.wrappedTileCoord_[0], n = this.targetTileGrid_.getTileSize(t), r = typeof n == "number" ? n : n[0], i = typeof n == "number" ? n : n[1], a = this.targetTileGrid_.getResolution(t), o = this.sourceTileGrid_.getResolution(this.sourceZ_), s = this.targetTileGrid_.getTileCoordExtent(this.wrappedTileCoord_); - this.canvas_ = du(r, i, this.pixelRatio_, o, this.sourceTileGrid_.getExtent(), a, s, this.triangulation_, e, this.gutter_, this.renderEdges_, this.interpolate), this.state = L.LOADED; - } - this.changed(); - } - load() { - for (let e of this.sourceTiles_) e.tile = e.getTile(); - if (this.state == L.IDLE) { - this.state = L.LOADING, this.changed(); - let e = 0; - this.sourcesListenerKeys_ = [], this.sourceTiles_.forEach(({ tile: t }) => { - let n = t.getState(); - if (n == L.IDLE || n == L.LOADING) { - e++; - let n = A(t, M.CHANGE, (r) => { - let i = t.getState(); - (i == L.LOADED || i == L.ERROR || i == L.EMPTY) && (j(n), e--, e === 0 && (this.unlistenSources_(), this.reproject_())); - }); - this.sourcesListenerKeys_.push(n); - } - }), e === 0 ? setTimeout(this.reproject_.bind(this), 0) : this.sourceTiles_.forEach(function({ tile: e }, t, n) { - e.getState() == L.IDLE && e.load(); - }); - } - } - unlistenSources_() { - this.sourcesListenerKeys_.forEach(j), this.sourcesListenerKeys_ = null; - } - release() { - this.canvas_ &&= (S(this.canvas_.getContext("2d")), au.push(this.canvas_), null), this.sourceTiles_.length = 0, super.release(); - } -}, _u = class { - constructor(e) { - this.highWaterMark = e === void 0 ? 2048 : e, this.count_ = 0, this.entries_ = {}, this.oldest_ = null, this.newest_ = null; - } - deleteOldest() { - let e = this.pop(); - e instanceof ie && e.dispose(); - } - canExpireCache() { - return this.highWaterMark > 0 && this.getCount() > this.highWaterMark; - } - expireCache(e) { - for (; this.canExpireCache();) this.deleteOldest(); - } - clear() { - for (; this.oldest_;) this.deleteOldest(); - } - containsKey(e) { - return this.entries_.hasOwnProperty(e); - } - forEach(e) { - let t = this.oldest_; - for (; t;) e(t.value_, t.key_, this), t = t.newer; - } - get(e, t) { - let n = this.entries_[e]; - return R(n !== void 0, "Tried to get a value for a key that does not exist in the cache"), n === this.newest_ ? n.value_ : (n === this.oldest_ ? (this.oldest_ = this.oldest_.newer, this.oldest_.older = null) : (n.newer.older = n.older, n.older.newer = n.newer), n.newer = null, n.older = this.newest_, this.newest_.newer = n, this.newest_ = n, n.value_); - } - remove(e) { - let t = this.entries_[e]; - return R(t !== void 0, "Tried to get a value for a key that does not exist in the cache"), t === this.newest_ ? (this.newest_ = t.older, this.newest_ && (this.newest_.newer = null)) : t === this.oldest_ ? (this.oldest_ = t.newer, this.oldest_ && (this.oldest_.older = null)) : (t.newer.older = t.older, t.older.newer = t.newer), delete this.entries_[e], --this.count_, t.value_; - } - getCount() { - return this.count_; - } - getKeys() { - let e = Array(this.count_), t = 0, n; - for (n = this.newest_; n; n = n.older) e[t++] = n.key_; - return e; - } - getValues() { - let e = Array(this.count_), t = 0, n; - for (n = this.newest_; n; n = n.older) e[t++] = n.value_; - return e; - } - peekLast() { - return this.oldest_.value_; - } - peekLastKey() { - return this.oldest_.key_; - } - peekFirstKey() { - return this.newest_.key_; - } - peek(e) { - return this.entries_[e]?.value_; - } - pop() { - let e = this.oldest_; - return delete this.entries_[e.key_], e.newer && (e.newer.older = null), this.oldest_ = e.newer, this.oldest_ || (this.newest_ = null), --this.count_, e.value_; - } - replace(e, t) { - this.get(e), this.entries_[e].value_ = t; - } - set(e, t) { - R(!(e in this.entries_), "Tried to set a value for a key that is used already"); - let n = { - key_: e, - newer: null, - older: this.newest_, - value_: t - }; - this.newest_ ? this.newest_.newer = n : this.oldest_ = n, this.newest_ = n, this.entries_[e] = n, ++this.count_; - } - setSize(e) { - this.highWaterMark = e; - } -}; -//#endregion -//#region node_modules/ol/tilecoord.js -function vu(e, t, n, r) { - return r === void 0 ? [ - e, - t, - n - ] : (r[0] = e, r[1] = t, r[2] = n, r); -} -function yu(e, t, n) { - return e + "/" + t + "/" + n; -} -function bu(e, t, n, r, i) { - return `${F(e)},${t},${yu(n, r, i)}`; -} -function xu(e) { - return Su(e[0], e[1], e[2]); -} -function Su(e, t, n) { - return (t << e) + n; -} -function Cu(e, t) { - let n = e[0], r = e[1], i = e[2]; - if (t.getMinZoom() > n || n > t.getMaxZoom()) return !1; - let a = t.getFullTileRange(n); - return !a || a.containsXY(r, i); -} -//#endregion -//#region node_modules/ol/render/canvas/ZIndexContext.js -var wu = class { - constructor() { - this.instructions_ = [], this.zIndex = 0, this.offset_ = 0, this.pendingMethod_, this.context_ = new Proxy(x(), { - get: (e, t) => { - if (typeof e[t] == "function") return this.pendingMethod_ = t, this.pushMethodArgs_; - }, - set: (e, t, n) => (this.push_(t, n), !0) - }); - } - push_(...e) { - let t = this.instructions_, n = this.zIndex + this.offset_; - t[n] || (t[n] = []), t[n].push(...e); - } - pushMethodArgs_ = (...e) => { - this.push_(this.pendingMethod_, e); - }; - pushFunction(e) { - this.push_(e); - } - getContext() { - return this.context_; - } - draw(e) { - this.instructions_.forEach((t) => { - for (let n = 0, r = t.length; n < r; ++n) { - let r = t[n]; - if (typeof r == "function") { - r(e); - continue; - } - let i = t[++n]; - typeof e[r] == "function" ? e[r](...i) : e[r] = typeof i == "function" ? i(e) : i; - } - }); - } - clear() { - this.instructions_.length = 0, this.zIndex = 0, this.offset_ = 0; - } - offset() { - this.offset_ = this.instructions_.length, this.zIndex = 0; - } -}, Tu = 5, Eu = class extends be { - constructor(e) { - super(), this.ready = !0, this.boundHandleImageChange_ = this.handleImageChange_.bind(this), this.layer_ = e, this.staleKeys_ = [], this.maxStaleKeys = Tu, this.renderedSourceKey_; - } - getStaleKeys() { - return this.staleKeys_; - } - prependStaleKey(e) { - this.staleKeys_.unshift(e), this.staleKeys_.length > this.maxStaleKeys && (this.staleKeys_.length = this.maxStaleKeys); - } - updateStaleKeys(e) { - this.renderedSourceKey_ ? this.renderedSourceKey_ !== e && (this.prependStaleKey(this.renderedSourceKey_), this.renderedSourceKey_ = e) : this.renderedSourceKey_ = e; - } - getFeatures(e) { - return P(); - } - getData(e) { - return null; - } - prepareFrame(e) { - return P(); - } - renderFrame(e, t) { - return P(); - } - forEachFeatureAtCoordinate(e, t, n, r, i) {} - getLayer() { - return this.layer_; - } - handleFontsChanged() {} - handleImageChange_(e) { - let t = e.target; - (t.getState() === J.LOADED || t.getState() === J.ERROR) && this.renderIfReadyAndVisible(); - } - loadImage(e) { - let t = e.getState(); - return t != J.LOADED && t != J.ERROR && e.addEventListener(M.CHANGE, this.boundHandleImageChange_), t == J.IDLE && (e.load(), t = e.getState()), t == J.LOADED; - } - renderIfReadyAndVisible() { - let e = this.getLayer(); - e && e.getVisible() && e.getSourceState() === "ready" && e.changed(); - } - renderDeferred(e) {} - disposeInternal() { - delete this.layer_, super.disposeInternal(); - } -}, Du = [], Ou = null; -function ku() { - Ou = y(1, 1, void 0, { willReadFrequently: !0 }); -} -var Au = class extends Eu { - constructor(e) { - super(e), this.container = null, this.renderedResolution, this.tempTransform = qr(), this.pixelTransform = qr(), this.inversePixelTransform = qr(), this.context = null, this.deferredContext_ = null, this.containerReused = !1, this.frameState = null; - } - getImageData(e, t, n) { - Ou || ku(), Ou.clearRect(0, 0, 1, 1); - let r; - try { - Ou.drawImage(e, t, n, 1, 1, 0, 0, 1, 1), r = Ou.getImageData(0, 0, 1, 1).data; - } catch { - return Ou = null, null; - } - return r; - } - getBackground(e) { - let t = this.getLayer().getBackground(); - return typeof t == "function" && (t = t(e.viewState.resolution)), t || void 0; - } - useContainer(e, t, n, r, i) { - if (O(e) && this.pixelTransform[1] === 0 && this.pixelTransform[2] === 0 && this.pixelTransform[4] === 0 && this.pixelTransform[5] === 0 && e.width === r && e.height === i) { - let t = e, r = t.getContext("2d"); - if (r) { - this.container = e, this.context = r, this.containerReused = !0, n && (r.fillStyle = n, r.fillRect(0, 0, t.width, t.height)); - return; - } - } - let a = this.getLayer().getClassName(), o, s; - if (e && e.className === a && (!n || e && e.style.backgroundColor && de($o(e.style.backgroundColor), $o(n)))) { - let t = e.firstElementChild; - O(t) && (s = t.getContext("2d")); - } - if (s && oi(s.canvas.style.transform, t) ? (this.container = e, this.context = s, this.containerReused = !0) : this.containerReused ? (this.container = null, this.context = null, this.containerReused = !1) : this.container && (this.container.style.backgroundColor = null), !this.container) { - o = g ? D() : document.createElement("div"), o.className = a; - let e = o.style; - e.position = "absolute", e.width = "100%", e.height = "100%", s = y(); - let t = s.canvas; - o.appendChild(t), e = t.style, e.position = "absolute", e.left = "0", e.transformOrigin = "top left", this.container = o, this.context = s; - } - !this.containerReused && n && !this.container.style.backgroundColor && (this.container.style.backgroundColor = n); - } - clipUnrotated(e, t, n) { - let r = dt(n), i = ft(n), a = rt(n), o = nt(n); - z(t.coordinateToPixelTransform, r), z(t.coordinateToPixelTransform, i), z(t.coordinateToPixelTransform, a), z(t.coordinateToPixelTransform, o); - let s = this.inversePixelTransform; - z(s, r), z(s, i), z(s, a), z(s, o), e.save(), e.beginPath(), e.moveTo(Math.round(r[0]), Math.round(r[1])), e.lineTo(Math.round(i[0]), Math.round(i[1])), e.lineTo(Math.round(a[0]), Math.round(a[1])), e.lineTo(Math.round(o[0]), Math.round(o[1])), e.clip(); - } - prepareContainer(e, t) { - let n = e.extent, r = e.viewState.resolution, i = e.viewState.rotation, a = e.pixelRatio, o = Math.round(I(n) / r * a), s = Math.round(ct(n) / r * a); - ei(this.pixelTransform, e.size[0] / 2, e.size[1] / 2, 1 / a, 1 / a, i, -o / 2, -s / 2), ti(this.inversePixelTransform, this.pixelTransform); - let c = ii(this.pixelTransform), l = this.getBackground(e); - if (this.useContainer(t, c, l, o, s), !this.containerReused) { - let e = this.context.canvas; - e.width != o || e.height != s ? (e.width = o, e.height = s) : this.context.clearRect(0, 0, o, s), c !== e.style.transform && (e.style.transform = c); - } - } - dispatchRenderEvent_(e, t, n) { - let r = this.getLayer(); - if (r.hasListener(e)) { - let i = new Ml(e, this.inversePixelTransform, n, t); - r.dispatchEvent(i); - } - } - preRender(e, t) { - this.frameState = t, !t.declutter && this.dispatchRenderEvent_(lo.PRERENDER, e, t); - } - postRender(e, t) { - t.declutter || this.dispatchRenderEvent_(lo.POSTRENDER, e, t); - } - renderDeferredInternal(e) {} - getRenderContext(e) { - return e.declutter && !this.deferredContext_ && (this.deferredContext_ = new wu()), e.declutter ? this.deferredContext_.getContext() : this.context; - } - renderDeferred(e) { - e.declutter && (this.dispatchRenderEvent_(lo.PRERENDER, this.context, e), e.declutter && this.deferredContext_ && (this.deferredContext_.draw(this.context), this.deferredContext_.clear()), this.renderDeferredInternal(e), this.dispatchRenderEvent_(lo.POSTRENDER, this.context, e)); - } - getRenderTransform(e, t, n, r, i, a, o) { - let s = i / 2, c = a / 2, l = r / t, u = -l, d = -e[0] + o, f = -e[1]; - return ei(this.tempTransform, s, c, l, u, -n, d, f); - } - disposeInternal() { - delete this.frameState, super.disposeInternal(); - } -}; -//#endregion -//#region node_modules/ol/renderer/canvas/TileLayer.js -function ju(e, t, n) { - if (!(n in e)) return e[n] = /* @__PURE__ */ new Set([t]), !0; - let r = e[n], i = r.has(t); - return i || r.add(t), !i; -} -function Mu(e, t, n) { - let r = e[n]; - return r ? r.delete(t) : !1; -} -function Nu(e, t) { - let n = e.layerStatesArray[e.layerIndex]; - n.extent && (t = lt(t, yr(n.extent, e.viewState.projection))); - let r = n.layer.getRenderSource(); - if (!r.getWrapX()) { - let n = r.getTileGridForProjection(e.viewState.projection).getExtent(); - n && (t = lt(t, n)); - } - return t; -} -var Pu = class extends Au { - constructor(e, t) { - super(e), t ||= {}, this.extentChanged = !0, this.renderComplete = !1, this.renderedExtent_ = null, this.renderedPixelRatio, this.renderedProjection = null, this.renderedTiles = [], this.renderedSourceRevision_, this.tempExtent = We(), this.tempTileRange_ = new nu(0, 0, 0, 0), this.tempTileCoord_ = vu(0, 0, 0); - let n = t.cacheSize === void 0 ? 512 : t.cacheSize; - this.tileCache_ = new _u(n), this.sourceTileCache_ = null, this.layerExtent = null, this.maxStaleKeys = n * .5; - } - getTileCache() { - return this.tileCache_; - } - getSourceTileCache() { - return this.sourceTileCache_ ||= new _u(512), this.sourceTileCache_; - } - getOrCreateTile(e, t, n, r) { - let i = this.tileCache_, a = this.getLayer().getSource(), o = bu(a, a.getKey(), e, t, n), s; - if (i.containsKey(o)) s = i.get(o); - else { - let c = r.viewState.projection, l = a.getProjection(); - if (s = a.getTile(e, t, n, r.pixelRatio, c, !l || cr(l, c) ? void 0 : this.getSourceTileCache()), !s) return null; - i.set(o, s); - } - return s; - } - getTile(e, t, n, r) { - return this.getOrCreateTile(e, t, n, r) || null; - } - getData(e) { - let t = this.frameState; - if (!t) return null; - let n = this.getLayer(), r = z(t.pixelToCoordinateTransform, e.slice()), i = n.getExtent(); - if (i && !Be(i, r)) return null; - let a = t.viewState, o = n.getRenderSource(), s = o.getTileGridForProjection(a.projection), c = o.getTilePixelRatio(t.pixelRatio); - for (let e = s.getZForResolution(a.resolution); e >= s.getMinZoom(); --e) { - let n = s.getTileCoordForCoordAndZ(r, e), i = this.getTile(e, n[1], n[2], t); - if (!i || i.getState() !== L.LOADED) continue; - let l = s.getOrigin(e), u = rs(s.getTileSize(e)), d = s.getResolution(e), f; - if (i instanceof eu || i instanceof gu) f = i.getImage(); - else if (i instanceof $l) { - if (f = Xl(i.getData()), !f) continue; - } else continue; - let p = Math.floor(c * ((r[0] - l[0]) / d - n[1] * u[0])), m = Math.floor(c * ((l[1] - r[1]) / d - n[2] * u[1])), h = Math.round(c * o.getGutterForProjection(a.projection)); - return this.getImageData(f, p + h, m + h); - } - return null; - } - prepareFrame(e) { - this.renderedProjection ? e.viewState.projection !== this.renderedProjection && (this.tileCache_.clear(), this.renderedProjection = e.viewState.projection) : this.renderedProjection = e.viewState.projection; - let t = this.getLayer().getSource(); - if (!t) return !1; - let n = t.getRevision(); - return this.renderedSourceRevision_ ? this.renderedSourceRevision_ !== n && (this.renderedSourceRevision_ = n, this.renderedSourceKey_ === t.getKey() && (this.tileCache_.clear(), this.sourceTileCache_?.clear())) : this.renderedSourceRevision_ = n, !0; - } - enqueueTilesForNextExtent() { - return !0; - } - enqueueTiles(e, t, n, r, i) { - let a = e.viewState, o = this.getLayer(), s = o.getRenderSource(), c = s.getTileGridForProjection(a.projection), l = F(s); - l in e.wantedTiles || (e.wantedTiles[l] = {}); - let u = e.wantedTiles[l], d = o.getMapInternal(), f = Math.max(n - i, c.getMinZoom(), c.getZForResolution(Math.min(o.getMaxResolution(), d ? d.getView().getResolutionForZoom(Math.max(o.getMinZoom(), 0)) : c.getResolution(0)), s.zDirection)), p = a.rotation, m = p ? st(a.center, a.resolution, p, e.size) : void 0; - for (let i = n; i >= f; --i) { - let n = c.getTileRangeForExtentAndZ(t, i, this.tempTileRange_), a = c.getResolution(i); - for (let t = n.minX; t <= n.maxX; ++t) for (let o = n.minY; o <= n.maxY; ++o) { - if (p && !c.tileCoordIntersectsViewport([ - i, - t, - o - ], m)) continue; - let n = this.getTile(i, t, o, e); - if (!n || !ju(r, n, i)) continue; - let s = n.getKey(); - if (u[s] = !0, n.getState() === L.IDLE && !e.tileQueue.isKeyQueued(s)) { - let r = vu(i, t, o, this.tempTileCoord_); - e.tileQueue.enqueue([ - n, - l, - c.getTileCoordCenter(r), - a - ]); - } - } - } - } - findStaleTile_(e, t) { - let n = this.tileCache_, r = e[0], i = e[1], a = e[2], o = this.getStaleKeys(); - for (let e = 0; e < o.length; ++e) { - let s = bu(this.getLayer().getSource(), o[e], r, i, a); - if (n.containsKey(s)) { - let e = n.peek(s); - if (e.getState() === L.LOADED) return e.endTransition(F(this)), ju(t, e, r), !0; - } - } - return !1; - } - findAltTiles_(e, t, n, r) { - let i = e.getTileRangeForTileCoordAndZ(t, n, this.tempTileRange_); - if (!i) return !1; - let a = !0, o = this.tileCache_, s = this.getLayer().getRenderSource(), c = s.getKey(); - for (let e = i.minX; e <= i.maxX; ++e) for (let t = i.minY; t <= i.maxY; ++t) { - let i = bu(s, c, n, e, t), l = !1; - if (o.containsKey(i)) { - let e = o.peek(i); - e.getState() === L.LOADED && (ju(r, e, n), l = !0); - } - l || (a = !1); - } - return a; - } - renderFrame(e, t) { - this.renderComplete = !0; - let n = e.layerStatesArray[e.layerIndex], r = e.viewState, i = r.projection, a = r.resolution, o = r.center, s = e.pixelRatio, c = this.getLayer(), l = c.getSource(), u = l.getTileGridForProjection(i), d = u.getZForResolution(a, l.zDirection), f = u.getResolution(d); - this.updateStaleKeys(l.getKey()); - let p = e.extent, m = l.getTilePixelRatio(s); - this.prepareContainer(e, t); - let h = this.context.canvas.width, g = this.context.canvas.height; - this.layerExtent = n.extent ? yr(n.extent, i) : null, this.layerExtent && (p = lt(p, this.layerExtent)); - let _ = f * h / 2 / m, v = f * g / 2 / m, y = [ - o[0] - _, - o[1] - v, - o[0] + _, - o[1] + v - ], b = {}; - this.renderedTiles.length = 0; - let x = c.getPreload(); - if (e.nextExtent && this.enqueueTilesForNextExtent()) { - let t = u.getZForResolution(r.nextResolution, l.zDirection), n = Nu(e, e.nextExtent); - this.enqueueTiles(e, n, t, b, x); - } - let S = Nu(e, p); - if (this.enqueueTiles(e, S, d, b, 0), x > 0 && setTimeout(() => { - this.enqueueTiles(e, S, d - 1, b, x - 1); - }, 0), !(d in b)) return this.container; - let C = F(this), w = e.time; - for (let t of b[d]) { - let n = t.getState(); - if (n === L.EMPTY) continue; - let r = t.tileCoord; - if (n === L.LOADED && t.getAlpha(C, w) === 1) { - t.endTransition(C); - continue; - } - if (n !== L.ERROR && (this.renderComplete = !1), this.findStaleTile_(r, b)) { - Mu(b, t, d), e.animate = !0; - continue; - } - if (this.findAltTiles_(u, r, d + 1, b)) continue; - let i = u.getMinZoom(); - for (let e = d - 1; e >= i && !this.findAltTiles_(u, r, e, b); --e); - } - let T = f / a * s / m, E = this.getRenderContext(e); - ei(this.tempTransform, h / 2, g / 2, T, T, 0, -h / 2, -g / 2), this.layerExtent && this.clipUnrotated(E, e, this.layerExtent), l.getInterpolate() || (E.imageSmoothingEnabled = !1), this.preRender(E, e); - let ee = Object.keys(b).map(Number); - ee.sort(oe); - let D = [], O = [], k = []; - for (let t = ee.length - 1; t >= 0; --t) { - let n = ee[t], r = l.getTilePixelSize(n, s, i), a = u.getResolution(n) / f, o = r[0] * a * T, c = r[1] * a * T, p = u.getTileCoordForCoordAndZ(dt(y), n), h = u.getTileCoordExtent(p), g = z(this.tempTransform, [m * (h[0] - y[0]) / f, m * (y[3] - h[3]) / f]), _ = m * l.getGutterForProjection(i); - for (let t of b[n]) { - if (t.getState() !== L.LOADED) continue; - let r = t.tileCoord, i = p[1] - r[1], a = Math.round(g[0] - (i - 1) * o), s = p[2] - r[2], u = Math.round(g[1] - (s - 1) * c), f = Math.round(g[0] - i * o), m = Math.round(g[1] - s * c), h = a - f, v = u - m, y = n === d; - if (y && t.inTransition(C)) { - k.push({ - tile: t, - x: f, - y: m, - w: h, - h: v, - gutter: _ - }), this.renderedTiles.unshift(t), this.updateUsedTiles(e.usedTiles, l, t); - continue; - } - let b = [ - f, - m, - f + h, - m + v - ], x = []; - for (let e = 0, t = D.length; e < t; ++e) n < O[e] && pt(b, D[e]) && x.push(D[e]); - let S; - x.length > 0 && (S = xt(b, x)), D.push(b), O.push(n), this.drawTile(t, e, f, m, h, v, _, y, S), this.renderedTiles.unshift(t), this.updateUsedTiles(e.usedTiles, l, t); - } - } - for (let t = 0, n = k.length; t < n; ++t) { - let { tile: n, x: r, y: i, w: a, h: o, gutter: s } = k[t]; - this.drawTile(n, e, r, i, a, o, s, !0, void 0); - } - return this.renderedResolution = f, this.extentChanged = !this.renderedExtent_ || !Ye(this.renderedExtent_, y), this.renderedExtent_ = y, this.renderedPixelRatio = s, this.postRender(this.context, e), this.layerExtent && E.restore(), E.imageSmoothingEnabled = !0, this.renderComplete && e.postRenderFunctions.push((e, t) => { - let n = F(l), r = t.wantedTiles[n], i = r ? Object.keys(r).length : 0; - this.updateCacheSize(i), this.tileCache_.expireCache(), this.sourceTileCache_?.expireCache(); - }), this.container; - } - updateCacheSize(e) { - this.tileCache_.highWaterMark = Math.max(this.tileCache_.highWaterMark, e * 2); - } - drawTile(e, t, n, r, i, a, o, s, c) { - let l; - if (e instanceof $l) { - if (l = Xl(e.getData()), !l) throw Error("Rendering array data is not yet supported"); - } else l = this.getTileImage(e); - if (!l) return; - let u = this.getRenderContext(t), d = F(this), f = t.layerStatesArray[t.layerIndex], p = f.opacity * (s ? e.getAlpha(d, t.time) : 1), m = p !== u.globalAlpha; - m && (u.save(), u.globalAlpha = p); - let h = l.width - 2 * o, g = l.height - 2 * o; - if (c) { - let e = h / i, t = g / a; - for (let i = 0, a = c.length; i < a; ++i) { - let a = c[i], s = a[0], d = a[1], f = a[2] - a[0], p = a[3] - a[1]; - u.drawImage(l, o + (s - n) * e, o + (d - r) * t, f * e, p * t, s, d, f, p); - } - } else u.drawImage(l, o, o, h, g, n, r, i, a); - m && u.restore(), p === f.opacity ? s && e.endTransition(d) : t.animate = !0; - } - getImage() { - let e = this.context; - return e ? e.canvas : null; - } - getTileImage(e) { - return e.getImage(); - } - updateUsedTiles(e, t, n) { - let r = F(t); - r in e || (e[r] = {}), e[r][n.getKey()] = !0; - } -}, Fu = { - PRELOAD: "preload", - USE_INTERIM_TILES_ON_ERROR: "useInterimTilesOnError" -}, Iu = class extends uo { - constructor(e) { - e ||= {}; - let t = Object.assign({}, e), n = e.cacheSize; - delete e.cacheSize, delete t.preload, delete t.useInterimTilesOnError, super(t), this.on, this.once, this.un, this.cacheSize_ = n, this.setPreload(e.preload === void 0 ? 0 : e.preload), this.setUseInterimTilesOnError(e.useInterimTilesOnError === void 0 || e.useInterimTilesOnError); - } - getCacheSize() { - return this.cacheSize_; - } - getPreload() { - return this.get(Fu.PRELOAD); + viewHints: r, + wantedTiles: {}, + mapId: O(this), + renderTargets: {} + }, a.nextCenter && a.nextResolution) { + let e = isNaN(a.nextRotation) ? a.rotation : a.nextRotation; + i.nextExtent = xt(a.nextCenter, a.nextResolution, e, t); + } + } + this.frameState_ = i, this.renderer_.renderFrame(i), i && (i.animate && this.render(), Array.prototype.push.apply(this.postRenderFunctions_, i.postRenderFunctions), r && (!this.previousExtent_ || !kt(this.previousExtent_) && !ut(i.extent, this.previousExtent_)) && (this.dispatchEvent(new wo(De.MOVESTART, this, r)), this.previousExtent_ = st(this.previousExtent_)), this.previousExtent_ && !i.viewHints[V.ANIMATING] && !i.viewHints[V.INTERACTING] && !ut(i.extent, this.previousExtent_) && (this.dispatchEvent(new wo(De.MOVEEND, this, i)), $e(i.extent, this.previousExtent_))), this.dispatchEvent(new wo(De.POSTRENDER, this, i)), this.renderComplete_ = (this.hasListener(De.LOADSTART) || this.hasListener(De.LOADEND) || this.hasListener(Ki.RENDERCOMPLETE)) && !this.tileQueue_.getTilesLoading() && !this.tileQueue_.getCount() && !this.getLoadingOrNotReady(), this.postRenderTimeoutHandle_ ||= setTimeout(() => { + this.postRenderTimeoutHandle_ = void 0, this.handlePostRender(); + }, 0); } - setPreload(e) { - this.set(Fu.PRELOAD, e); + setLayerGroup(e) { + let t = this.getLayerGroup(); + t && this.handleLayerRemove_(new vs("removelayer", t)), this.set(ko.LAYERGROUP, e); } - getUseInterimTilesOnError() { - return this.get(Fu.USE_INTERIM_TILES_ON_ERROR); + setSize(e) { + this.set(ko.SIZE, e); } - setUseInterimTilesOnError(e) { - this.set(Fu.USE_INTERIM_TILES_ON_ERROR, e); + setTarget(e) { + this.set(ko.TARGET, e); } - getData(e) { - return super.getData(e); + setView(e) { + if (!e || e instanceof uo) { + this.set(ko.VIEW, e); + return; + } + this.set(ko.VIEW, new uo()); + let t = this; + e.then(function(e) { + t.setView(new uo(e)); + }); } -}, Lu = class extends Iu { - constructor(e) { - super(e); + updateSize() { + let e = this.getTargetElement(), t; + if (e) { + let n, r; + if (Ee(e)) { + let t = e.getContext("2d").getTransform(); + n = e.width / t.a, r = e.height / t.d; + } else { + let t = getComputedStyle(e); + n = e.offsetWidth - parseFloat(t.borderLeftWidth) - parseFloat(t.paddingLeft) - parseFloat(t.paddingRight) - parseFloat(t.borderRightWidth), r = e.offsetHeight - parseFloat(t.borderTopWidth) - parseFloat(t.paddingTop) - parseFloat(t.paddingBottom) - parseFloat(t.borderBottomWidth); + } + !isNaN(n) && !isNaN(r) && (t = [Math.max(0, n), Math.max(0, r)], !di(t) && (e.offsetWidth || e.offsetHeight || e.getClientRects().length) && zt("No map visible because the map container's width or height are 0.")); + } + let n = this.getSize(); + t && (!n || !h(t, n)) && (this.updateViewportSize_(t), this.setSize(t)); } - createRenderer() { - return new Pu(this, { cacheSize: this.getCacheSize() }); + updateViewportSize_(e) { + let t = this.getView(); + t && t.setViewportSize(e); } -}, Ru = [ +}; +function gu(e) { + let t = null; + e.keyboardEventTarget !== void 0 && (t = typeof e.keyboardEventTarget == "string" ? document.getElementById(e.keyboardEventTarget) : e.keyboardEventTarget); + let n = {}, r = e.layers && typeof e.layers.getLayers == "function" ? e.layers : new bs({ layers: e.layers }); + n[ko.LAYERGROUP] = r, n[ko.TARGET] = e.target, n[ko.VIEW] = e.view instanceof uo ? e.view : new uo(); + let i; + e.controls !== void 0 && (Array.isArray(e.controls) ? i = new N(e.controls.slice()) : (z(typeof e.controls.getArray == "function", "Expected `controls` to be an array or an `ol/Collection.js`"), i = e.controls)); + let a; + e.interactions !== void 0 && (Array.isArray(e.interactions) ? a = new N(e.interactions.slice()) : (z(typeof e.interactions.getArray == "function", "Expected `interactions` to be an array or an `ol/Collection.js`"), a = e.interactions)); + let o; + return e.overlays === void 0 ? o = new N() : Array.isArray(e.overlays) ? o = new N(e.overlays.slice()) : (z(typeof e.overlays.getArray == "function", "Expected `overlays` to be an array or an `ol/Collection.js`"), o = e.overlays), { + controls: i, + interactions: a, + keyboardEventTarget: t, + overlays: o, + values: n + }; +} +//#endregion +//#region node_modules/ol/tilegrid/TileGrid.js +var _u = [ 0, 0, 0 -], zu = 5, Bu = class { -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes +], vu = 5, yu = class { constructor(e) { let t = e.minZoom, n = e.resolutions; t === void 0 && n && (t = n.findIndex((e) => e !== void 0)), this.minZoom = t === void 0 ? 0 : t, this.resolutions_ = n, z(g(this.resolutions_, (e, t) => t - e, !0), "`resolutions` must be sorted in descending order"); @@ -14442,15 +8051,7 @@ var Pu = class extends Au { 0, 0 ], e.tileRanges === void 0 ? e.sizes === void 0 ? i && this.calculateTileRanges_(i) : this.fullTileRanges_ = e.sizes.map((e, t) => { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let n = new qe(Math.min(0, e[0]), Math.max(e[0] - 1, -1), Math.min(0, e[1]), Math.max(e[1] - 1, -1)); -======= - let n = new nu(Math.min(0, e[0]), Math.max(e[0] - 1, -1), Math.min(0, e[1]), Math.max(e[1] - 1, -1)); ->>>>>>> Stashed changes -======= - let n = new nu(Math.min(0, e[0]), Math.max(e[0] - 1, -1), Math.min(0, e[1]), Math.max(e[1] - 1, -1)); ->>>>>>> Stashed changes if (i) { let e = this.getTileRangeForExtentAndZ(i, t); n.minX = Math.max(e.minX, n.minX), n.maxX = Math.min(e.maxX, n.maxX), n.minY = Math.max(e.minY, n.minY), n.maxY = Math.min(e.maxY, n.maxY); @@ -14469,15 +8070,7 @@ var Pu = class extends Au { forEachTileCoordParentTileRange(e, t, n, r) { let i, a, o, s = null, c = e[0] - 1; for (this.zoomFactor_ === 2 ? (a = e[1], o = e[2]) : s = this.getTileCoordExtent(e, r); c >= this.minZoom;) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (a !== void 0 && o !== void 0 ? (a = Math.floor(a / 2), o = Math.floor(o / 2), i = Je(a, a, o, o, n)) : i = this.getTileRangeForExtentAndZ(s, c, n), t(c, i)) return !0; -======= - if (a !== void 0 && o !== void 0 ? (a = Math.floor(a / 2), o = Math.floor(o / 2), i = ru(a, a, o, o, n)) : i = this.getTileRangeForExtentAndZ(s, c, n), t(c, i)) return !0; ->>>>>>> Stashed changes -======= - if (a !== void 0 && o !== void 0 ? (a = Math.floor(a / 2), o = Math.floor(o / 2), i = ru(a, a, o, o, n)) : i = this.getTileRangeForExtentAndZ(s, c, n), t(c, i)) return !0; ->>>>>>> Stashed changes --c; } return !1; @@ -14507,15 +8100,7 @@ var Pu = class extends Au { if (e[0] < this.maxZoom) { if (this.zoomFactor_ === 2) { let n = e[1] * 2, r = e[2] * 2; -<<<<<<< Updated upstream -<<<<<<< Updated upstream return Je(n, n + 1, r, r + 1, t); -======= - return ru(n, n + 1, r, r + 1, t); ->>>>>>> Stashed changes -======= - return ru(n, n + 1, r, r + 1, t); ->>>>>>> Stashed changes } let r = this.getTileCoordExtent(e, n || this.tmpExtent_); return this.getTileRangeForExtentAndZ(r, e[0] + 1, t); @@ -14525,31 +8110,15 @@ var Pu = class extends Au { getTileRangeForTileCoordAndZ(e, t, n) { if (t > this.maxZoom || t < this.minZoom) return null; let r = e[0], i = e[1], a = e[2]; -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (t === r) return Je(i, a, i, a, n); if (this.zoomFactor_) { let e = this.zoomFactor_ ** +(t - r), o = Math.floor(i * e), s = Math.floor(a * e); return t < r ? Je(o, o, s, s, n) : Je(o, Math.floor(e * (i + 1)) - 1, s, Math.floor(e * (a + 1)) - 1, n); -======= - if (t === r) return ru(i, a, i, a, n); - if (this.zoomFactor_) { - let e = this.zoomFactor_ ** +(t - r), o = Math.floor(i * e), s = Math.floor(a * e); - return t < r ? ru(o, o, s, s, n) : ru(o, Math.floor(e * (i + 1)) - 1, s, Math.floor(e * (a + 1)) - 1, n); ->>>>>>> Stashed changes -======= - if (t === r) return ru(i, a, i, a, n); - if (this.zoomFactor_) { - let e = this.zoomFactor_ ** +(t - r), o = Math.floor(i * e), s = Math.floor(a * e); - return t < r ? ru(o, o, s, s, n) : ru(o, Math.floor(e * (i + 1)) - 1, s, Math.floor(e * (a + 1)) - 1, n); ->>>>>>> Stashed changes } let o = this.getTileCoordExtent(e, this.tmpExtent_); return this.getTileRangeForExtentAndZ(o, t, n); } getTileRangeForExtentAndZ(e, t, n) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.getTileCoordForXYAndZ_(e[0], e[3], t, !1, _u); let r = _u[1], i = _u[2]; this.getTileCoordForXYAndZ_(e[2], e[1], t, !0, _u); @@ -14563,63 +8132,17 @@ var Pu = class extends Au { getTileCoordExtent(e, t) { let n = this.getOrigin(e[0]), r = this.getResolution(e[0]), i = pi(this.getTileSize(e[0]), this.tmpSize_), a = n[0] + e[1] * i[0] * r, o = n[1] - (e[2] + 1) * i[1] * r; return ot(a, o, a + i[0] * r, o + i[1] * r, t); -======= - this.getTileCoordForXYAndZ_(e[0], e[3], t, !1, Ru); - let r = Ru[1], i = Ru[2]; - this.getTileCoordForXYAndZ_(e[2], e[1], t, !0, Ru); - let a = Ru[1], o = Ru[2]; - return ru(r, a, i, o, n); - } - getTileCoordCenter(e) { - let t = this.getOrigin(e[0]), n = this.getResolution(e[0]), r = rs(this.getTileSize(e[0]), this.tmpSize_); - return [t[0] + (e[1] + .5) * r[0] * n, t[1] - (e[2] + .5) * r[1] * n]; - } - getTileCoordExtent(e, t) { -======= - this.getTileCoordForXYAndZ_(e[0], e[3], t, !1, Ru); - let r = Ru[1], i = Ru[2]; - this.getTileCoordForXYAndZ_(e[2], e[1], t, !0, Ru); - let a = Ru[1], o = Ru[2]; - return ru(r, a, i, o, n); - } - getTileCoordCenter(e) { - let t = this.getOrigin(e[0]), n = this.getResolution(e[0]), r = rs(this.getTileSize(e[0]), this.tmpSize_); - return [t[0] + (e[1] + .5) * r[0] * n, t[1] - (e[2] + .5) * r[1] * n]; - } - getTileCoordExtent(e, t) { ->>>>>>> Stashed changes - let n = this.getOrigin(e[0]), r = this.getResolution(e[0]), i = rs(this.getTileSize(e[0]), this.tmpSize_), a = n[0] + e[1] * i[0] * r, o = n[1] - (e[2] + 1) * i[1] * r; - return Ge(a, o, a + i[0] * r, o + i[1] * r, t); ->>>>>>> Stashed changes } getTileCoordForCoordAndResolution(e, t, n) { return this.getTileCoordForXYAndResolution_(e[0], e[1], t, !1, n); } getTileCoordForXYAndResolution_(e, t, n, r, i) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let a = this.getZForResolution(n), o = n / this.getResolution(a), s = this.getOrigin(a), c = pi(this.getTileSize(a), this.tmpSize_), l = o * (e - s[0]) / n / c[0], u = o * (s[1] - t) / n / c[1]; return r ? (l = Xt(l, vu) - 1, u = Xt(u, vu) - 1) : (l = Yt(l, vu), u = Yt(u, vu)), hi(a, l, u, i); } getTileCoordForXYAndZ_(e, t, n, r, i) { let a = this.getOrigin(n), o = this.getResolution(n), s = pi(this.getTileSize(n), this.tmpSize_), c = (e - a[0]) / o / s[0], l = (a[1] - t) / o / s[1]; return r ? (c = Xt(c, vu) - 1, l = Xt(l, vu) - 1) : (c = Yt(c, vu), l = Yt(l, vu)), hi(n, c, l, i); -======= - let a = this.getZForResolution(n), o = n / this.getResolution(a), s = this.getOrigin(a), c = rs(this.getTileSize(a), this.tmpSize_), l = o * (e - s[0]) / n / c[0], u = o * (s[1] - t) / n / c[1]; - return r ? (l = Mt(l, zu) - 1, u = Mt(u, zu) - 1) : (l = jt(l, zu), u = jt(u, zu)), vu(a, l, u, i); - } - getTileCoordForXYAndZ_(e, t, n, r, i) { - let a = this.getOrigin(n), o = this.getResolution(n), s = rs(this.getTileSize(n), this.tmpSize_), c = (e - a[0]) / o / s[0], l = (a[1] - t) / o / s[1]; - return r ? (c = Mt(c, zu) - 1, l = Mt(l, zu) - 1) : (c = jt(c, zu), l = jt(l, zu)), vu(n, c, l, i); ->>>>>>> Stashed changes -======= - let a = this.getZForResolution(n), o = n / this.getResolution(a), s = this.getOrigin(a), c = rs(this.getTileSize(a), this.tmpSize_), l = o * (e - s[0]) / n / c[0], u = o * (s[1] - t) / n / c[1]; - return r ? (l = Mt(l, zu) - 1, u = Mt(u, zu) - 1) : (l = jt(l, zu), u = jt(u, zu)), vu(a, l, u, i); - } - getTileCoordForXYAndZ_(e, t, n, r, i) { - let a = this.getOrigin(n), o = this.getResolution(n), s = rs(this.getTileSize(n), this.tmpSize_), c = (e - a[0]) / o / s[0], l = (a[1] - t) / o / s[1]; - return r ? (c = Mt(c, zu) - 1, l = Mt(l, zu) - 1) : (c = jt(c, zu), l = jt(l, zu)), vu(n, c, l, i); ->>>>>>> Stashed changes } getTileCoordForCoordAndZ(e, t, n) { return this.getTileCoordForXYAndZ_(e[0], e[1], t, !1, n); @@ -14637,49 +8160,21 @@ var Pu = class extends Au { return Bt(f(this.resolutions_, e, t || 0), this.minZoom, this.maxZoom); } tileCoordIntersectsViewport(e, t) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return Ia(t, 0, t.length, 2, this.getTileCoordExtent(e)); -======= - return Ii(t, 0, t.length, 2, this.getTileCoordExtent(e)); ->>>>>>> Stashed changes -======= - return Ii(t, 0, t.length, 2, this.getTileCoordExtent(e)); ->>>>>>> Stashed changes } calculateTileRanges_(e) { let t = this.resolutions_.length, n = Array(t); for (let r = this.minZoom; r < t; ++r) n[r] = this.getTileRangeForExtentAndZ(e, r); this.fullTileRanges_ = n; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, bu = /\{z\}/g, xu = /\{x\}/g, Su = /\{y\}/g, Cu = /\{-y\}/g; function wu(e, t, n, r, i) { return e.replace(bu, t.toString()).replace(xu, n.toString()).replace(Su, r.toString()).replace(Cu, function() { -======= -}, Vu = /\{z\}/g, Hu = /\{x\}/g, Uu = /\{y\}/g, Wu = /\{-y\}/g; -function Gu(e, t, n, r, i) { - return e.replace(Vu, t.toString()).replace(Hu, n.toString()).replace(Uu, r.toString()).replace(Wu, function() { ->>>>>>> Stashed changes -======= -}, Vu = /\{z\}/g, Hu = /\{x\}/g, Uu = /\{y\}/g, Wu = /\{-y\}/g; -function Gu(e, t, n, r, i) { - return e.replace(Vu, t.toString()).replace(Hu, n.toString()).replace(Uu, r.toString()).replace(Wu, function() { ->>>>>>> Stashed changes if (i === void 0) throw Error("If the URL template has a {-y} placeholder, the grid extent must be known"); return (i - r).toString(); }); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Tu(e) { -======= -function Ku(e) { ->>>>>>> Stashed changes -======= -function Ku(e) { ->>>>>>> Stashed changes let t = [], n = /\{([a-z])-([a-z])\}/.exec(e); if (n) { let r = n[1].charCodeAt(0), i = n[2].charCodeAt(0), a; @@ -14695,15 +8190,7 @@ function Ku(e) { } //#endregion //#region node_modules/ol/tileurlfunction.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Eu(e, t) { -======= -function qu(e, t) { ->>>>>>> Stashed changes -======= -function qu(e, t) { ->>>>>>> Stashed changes return (function(n, r, i) { if (!n) return; let a, o = n[0]; @@ -14711,8 +8198,6 @@ function qu(e, t) { let e = t.getFullTileRange(o); e && (a = e.getHeight() - 1); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream return wu(e, o, n[1], n[2], a); }); } @@ -14724,38 +8209,10 @@ function Du(e, t) { function Ou(e) { return e.length === 1 ? e[0] : (function(t, n, r) { return t ? e[Kt(vi(t), e.length)](t, n, r) : void 0; -======= - return Gu(e, o, n[1], n[2], a); - }); -} -function Ju(e, t) { - let n = e.length, r = Array(n); - for (let i = 0; i < n; ++i) r[i] = qu(e[i], t); - return Yu(r); -} -function Yu(e) { - return e.length === 1 ? e[0] : (function(t, n, r) { - return t ? e[Ot(xu(t), e.length)](t, n, r) : void 0; ->>>>>>> Stashed changes -======= - return Gu(e, o, n[1], n[2], a); - }); -} -function Ju(e, t) { - let n = e.length, r = Array(n); - for (let i = 0; i < n; ++i) r[i] = qu(e[i], t); - return Yu(r); -} -function Yu(e) { - return e.length === 1 ? e[0] : (function(t, n, r) { - return t ? e[Ot(xu(t), e.length)](t, n, r) : void 0; ->>>>>>> Stashed changes }); } //#endregion //#region node_modules/ol/tilegrid.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function ku(e) { let t = e.getDefaultTileGrid(); return t || (t = Nu(e), e.setDefaultTileGrid(t)), t; @@ -14764,86 +8221,33 @@ function Au(e, t, n) { let r = t[0], i = e.getTileCoordCenter(t), a = Pu(n); if (!tt(a, i)) { let t = R(a), n = Math.ceil((a[0] - i[0]) / t); -======= -function Xu(e) { - let t = e.getDefaultTileGrid(); - return t || (t = ed(e), e.setDefaultTileGrid(t)), t; -} -======= -function Xu(e) { - let t = e.getDefaultTileGrid(); - return t || (t = ed(e), e.setDefaultTileGrid(t)), t; -} ->>>>>>> Stashed changes -function Zu(e, t, n) { - let r = t[0], i = e.getTileCoordCenter(t), a = td(n); - if (!Be(a, i)) { - let t = I(a), n = Math.ceil((a[0] - i[0]) / t); ->>>>>>> Stashed changes return i[0] += t * n, e.getTileCoordForCoordAndZ(i, r); } return t; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function ju(e, t, n, r) { r = r === void 0 ? "top-left" : r; let i = Mu(e, t, n); return new yu({ -======= -function Qu(e, t, n, r) { - r = r === void 0 ? "top-left" : r; - let i = $u(e, t, n); - return new Bu({ ->>>>>>> Stashed changes -======= -function Qu(e, t, n, r) { - r = r === void 0 ? "top-left" : r; - let i = $u(e, t, n); - return new Bu({ ->>>>>>> Stashed changes extent: e, origin: bt(e, r), resolutions: i, tileSize: n }); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Mu(e, t, n, r) { t = t === void 0 ? 42 : t, n = pi(n === void 0 ? 256 : n); let i = Ct(e), a = R(e); -======= -======= ->>>>>>> Stashed changes -function $u(e, t, n, r) { - t = t === void 0 ? 42 : t, n = rs(n === void 0 ? 256 : n); - let i = ct(e), a = I(e); ->>>>>>> Stashed changes r = r > 0 ? r : Math.max(a / n[0], i / n[1]); let o = t + 1, s = Array(o); for (let e = 0; e < o; ++e) s[e] = r / 2 ** e; return s; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Nu(e, t, n, r) { return ju(Pu(e), t, n, r); } function Pu(e) { e = gr(e); -======= -function ed(e, t, n, r) { - return Qu(td(e), t, n, r); -} -======= -function ed(e, t, n, r) { - return Qu(td(e), t, n, r); -} ->>>>>>> Stashed changes -function td(e) { - e = nr(e); ->>>>>>> Stashed changes let t = e.getExtent(); if (!t) { let n = 180 * sn.degrees / e.getMetersPerUnit(); @@ -14853,21 +8257,9 @@ function td(e) { } //#endregion //#region node_modules/ol/source/Source.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var Fu = class extends A { constructor(e) { super(), this.projection = gr(e.projection), this.attributions_ = Iu(e.attributions), this.attributionsCollapsible_ = e.attributionsCollapsible ?? !0, this.loading = !1, this.state_ = e.state === void 0 ? "ready" : e.state, this.wrapX_ = e.wrapX !== void 0 && e.wrapX, this.interpolate_ = !!e.interpolate, this.viewResolver = null, this.viewRejector = null; -======= -var nd = class extends we { - constructor(e) { - super(), this.projection = nr(e.projection), this.attributions_ = rd(e.attributions), this.attributionsCollapsible_ = e.attributionsCollapsible ?? !0, this.loading = !1, this.state_ = e.state === void 0 ? "ready" : e.state, this.wrapX_ = e.wrapX !== void 0 && e.wrapX, this.interpolate_ = !!e.interpolate, this.viewResolver = null, this.viewRejector = null; ->>>>>>> Stashed changes -======= -var nd = class extends we { - constructor(e) { - super(), this.projection = nr(e.projection), this.attributions_ = rd(e.attributions), this.attributionsCollapsible_ = e.attributionsCollapsible ?? !0, this.loading = !1, this.state_ = e.state === void 0 ? "ready" : e.state, this.wrapX_ = e.wrapX !== void 0 && e.wrapX, this.interpolate_ = !!e.interpolate, this.viewResolver = null, this.viewRejector = null; ->>>>>>> Stashed changes let t = this; this.viewPromise_ = new Promise(function(e, n) { t.viewResolver = e, t.viewRejector = n; @@ -14911,42 +8303,18 @@ var nd = class extends we { this.changed(); } setAttributions(e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.attributions_ = Iu(e), this.changed(); -======= - this.attributions_ = rd(e), this.changed(); ->>>>>>> Stashed changes -======= - this.attributions_ = rd(e), this.changed(); ->>>>>>> Stashed changes } setState(e) { this.state_ = e, this.changed(); } }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Iu(e) { -======= -function rd(e) { ->>>>>>> Stashed changes -======= -function rd(e) { ->>>>>>> Stashed changes return e ? typeof e == "function" ? e : (Array.isArray(e) || (e = [e]), (t) => e) : null; } //#endregion //#region node_modules/ol/source/Tile.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var Lu = class extends Fu { -======= -var id = class extends nd { ->>>>>>> Stashed changes -======= -var id = class extends nd { ->>>>>>> Stashed changes constructor(e) { super({ attributions: e.attributions, @@ -14955,15 +8323,7 @@ var id = class extends nd { state: e.state, wrapX: e.wrapX, interpolate: e.interpolate -<<<<<<< Updated upstream -<<<<<<< Updated upstream }), this.on, this.once, this.un, this.tilePixelRatio_ = e.tilePixelRatio === void 0 ? 1 : e.tilePixelRatio, this.tileGrid = e.tileGrid === void 0 ? null : e.tileGrid, this.tileGrid && pi(this.tileGrid.getTileSize(this.tileGrid.getMinZoom()), [256, 256]), this.tmpSize = [0, 0], this.key_ = e.key || O(this), this.tileOptions = { -======= - }), this.on, this.once, this.un, this.tilePixelRatio_ = e.tilePixelRatio === void 0 ? 1 : e.tilePixelRatio, this.tileGrid = e.tileGrid === void 0 ? null : e.tileGrid, this.tileGrid && rs(this.tileGrid.getTileSize(this.tileGrid.getMinZoom()), [256, 256]), this.tmpSize = [0, 0], this.key_ = e.key || F(this), this.tileOptions = { ->>>>>>> Stashed changes -======= - }), this.on, this.once, this.un, this.tilePixelRatio_ = e.tilePixelRatio === void 0 ? 1 : e.tilePixelRatio, this.tileGrid = e.tileGrid === void 0 ? null : e.tileGrid, this.tileGrid && rs(this.tileGrid.getTileSize(this.tileGrid.getMinZoom()), [256, 256]), this.tmpSize = [0, 0], this.key_ = e.key || F(this), this.tileOptions = { ->>>>>>> Stashed changes transition: e.transition, interpolate: e.interpolate }, this.zDirection = e.zDirection ? e.zDirection : 0; @@ -14988,51 +8348,23 @@ var id = class extends nd { return this.tileGrid; } getTileGridForProjection(e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return this.tileGrid ? this.tileGrid : ku(e); -======= - return this.tileGrid ? this.tileGrid : Xu(e); ->>>>>>> Stashed changes -======= - return this.tileGrid ? this.tileGrid : Xu(e); ->>>>>>> Stashed changes } getTilePixelRatio(e) { return this.tilePixelRatio_; } getTilePixelSize(e, t, n) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let r = this.getTileGridForProjection(n), i = this.getTilePixelRatio(t), a = pi(r.getTileSize(e), this.tmpSize); return i == 1 ? a : fi(a, i, this.tmpSize); } getTileCoordForTileUrlFunction(e, t) { let n = t === void 0 ? this.getProjection() : t, r = t === void 0 && this.tileGrid || this.getTileGridForProjection(n); return this.getWrapX() && n.isGlobal() && (e = Au(r, e, n)), bi(e, r) ? e : null; -======= - let r = this.getTileGridForProjection(n), i = this.getTilePixelRatio(t), a = rs(r.getTileSize(e), this.tmpSize); - return i == 1 ? a : ns(a, i, this.tmpSize); - } - getTileCoordForTileUrlFunction(e, t) { - let n = t === void 0 ? this.getProjection() : t, r = t === void 0 && this.tileGrid || this.getTileGridForProjection(n); - return this.getWrapX() && n.isGlobal() && (e = Zu(r, e, n)), Cu(e, r) ? e : null; ->>>>>>> Stashed changes -======= - let r = this.getTileGridForProjection(n), i = this.getTilePixelRatio(t), a = rs(r.getTileSize(e), this.tmpSize); - return i == 1 ? a : ns(a, i, this.tmpSize); - } - getTileCoordForTileUrlFunction(e, t) { - let n = t === void 0 ? this.getProjection() : t, r = t === void 0 && this.tileGrid || this.getTileGridForProjection(n); - return this.getWrapX() && n.isGlobal() && (e = Zu(r, e, n)), Cu(e, r) ? e : null; ->>>>>>> Stashed changes } clear() {} refresh() { this.clear(), super.refresh(); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, Ru = class extends S { constructor(e, t) { super(e), this.tile = t; @@ -15042,28 +8374,6 @@ var id = class extends nd { TILELOADEND: "tileloadend", TILELOADERROR: "tileloaderror" }, Bu = class e extends Lu { -======= -}, ad = class extends ve { - constructor(e, t) { - super(e), this.tile = t; - } -}, od = { - TILELOADSTART: "tileloadstart", - TILELOADEND: "tileloadend", - TILELOADERROR: "tileloaderror" -}, sd = class e extends id { ->>>>>>> Stashed changes -======= -}, ad = class extends ve { - constructor(e, t) { - super(e), this.tile = t; - } -}, od = { - TILELOADSTART: "tileloadstart", - TILELOADEND: "tileloadend", - TILELOADERROR: "tileloaderror" -}, sd = class e extends id { ->>>>>>> Stashed changes constructor(t) { super({ attributions: t.attributions, @@ -15090,16 +8400,8 @@ var id = class extends nd { return this.urls; } handleTileChange(e) { -<<<<<<< Updated upstream let t = e.target, n = O(t), r = t.getState(), i; r == I.LOADING ? (this.tileLoadingKeys_[n] = !0, i = zu.TILELOADSTART) : n in this.tileLoadingKeys_ && (delete this.tileLoadingKeys_[n], i = r == I.ERROR ? zu.TILELOADERROR : r == I.LOADED ? zu.TILELOADEND : void 0), i != null && this.dispatchEvent(new Ru(i, t)); -======= - let t = e.target, n = F(t), r = t.getState(), i; - r == L.LOADING ? (this.tileLoadingKeys_[n] = !0, i = od.TILELOADSTART) : n in this.tileLoadingKeys_ && (delete this.tileLoadingKeys_[n], i = r == L.ERROR ? od.TILELOADERROR : r == L.LOADED ? od.TILELOADEND : void 0), i != null && this.dispatchEvent(new ad(i, t)); -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes } setTileLoadFunction(e) { this.tileLoadFunction = e, this.changed(); @@ -15108,38 +8410,16 @@ var id = class extends nd { this.tileUrlFunction = e, t === void 0 ? this.changed() : this.setKey(t); } setUrl(e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let t = Tu(e); -======= - let t = Ku(e); ->>>>>>> Stashed changes -======= - let t = Ku(e); ->>>>>>> Stashed changes this.urls = t, this.setUrls(t); } setUrls(e) { this.urls = e; let t = e.join("\n"); -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.generateTileUrlFunction_ ? this.setTileUrlFunction(Du(e, this.tileGrid), t) : this.setKey(t); } tileUrlFunction(e, t, n) {} }, Vu = class extends Bu { -======= - this.generateTileUrlFunction_ ? this.setTileUrlFunction(Ju(e, this.tileGrid), t) : this.setKey(t); - } - tileUrlFunction(e, t, n) {} -}, cd = class extends sd { ->>>>>>> Stashed changes -======= - this.generateTileUrlFunction_ ? this.setTileUrlFunction(Ju(e, this.tileGrid), t) : this.setKey(t); - } - tileUrlFunction(e, t, n) {} -}, cd = class extends sd { ->>>>>>> Stashed changes constructor(e) { super({ attributions: e.attributions, @@ -15147,15 +8427,7 @@ var id = class extends nd { projection: e.projection, state: e.state, tileGrid: e.tileGrid, -<<<<<<< Updated upstream -<<<<<<< Updated upstream tileLoadFunction: e.tileLoadFunction ? e.tileLoadFunction : Hu, -======= - tileLoadFunction: e.tileLoadFunction ? e.tileLoadFunction : ld, ->>>>>>> Stashed changes -======= - tileLoadFunction: e.tileLoadFunction ? e.tileLoadFunction : ld, ->>>>>>> Stashed changes tilePixelRatio: e.tilePixelRatio, tileUrlFunction: e.tileUrlFunction, url: e.url, @@ -15166,15 +8438,7 @@ var id = class extends nd { key: e.key, attributionsCollapsible: e.attributionsCollapsible, zDirection: e.zDirection -<<<<<<< Updated upstream -<<<<<<< Updated upstream }), this.crossOrigin = e.crossOrigin === void 0 ? null : e.crossOrigin, this.referrerPolicy = e.referrerPolicy, this.tileClass = e.tileClass === void 0 ? Ge : e.tileClass, this.tileGridForProjection = {}, this.reprojectionErrorThreshold_ = e.reprojectionErrorThreshold, this.renderReprojectionEdges_ = !1; -======= - }), this.crossOrigin = e.crossOrigin === void 0 ? null : e.crossOrigin, this.referrerPolicy = e.referrerPolicy, this.tileClass = e.tileClass === void 0 ? eu : e.tileClass, this.tileGridForProjection = {}, this.reprojectionErrorThreshold_ = e.reprojectionErrorThreshold, this.renderReprojectionEdges_ = !1; ->>>>>>> Stashed changes -======= - }), this.crossOrigin = e.crossOrigin === void 0 ? null : e.crossOrigin, this.referrerPolicy = e.referrerPolicy, this.tileClass = e.tileClass === void 0 ? eu : e.tileClass, this.tileGridForProjection = {}, this.reprojectionErrorThreshold_ = e.reprojectionErrorThreshold, this.renderReprojectionEdges_ = !1; ->>>>>>> Stashed changes } getGutterForProjection(e) { return this.getProjection() && e && !Sr(this.getProjection(), e) ? 0 : this.getGutter(); @@ -15188,18 +8452,9 @@ var id = class extends nd { } getTileGridForProjection(e) { let t = this.getProjection(); -<<<<<<< Updated upstream if (this.tileGrid && (!t || Sr(t, e))) return this.tileGrid; let n = O(e); return n in this.tileGridForProjection || (this.tileGridForProjection[n] = ku(e)), this.tileGridForProjection[n]; -======= - if (this.tileGrid && (!t || cr(t, e))) return this.tileGrid; - let n = F(e); - return n in this.tileGridForProjection || (this.tileGridForProjection[n] = Xu(e)), this.tileGridForProjection[n]; -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes } createTile_(e, t, n, r, i, a) { let o = [ @@ -15219,27 +8474,11 @@ var id = class extends nd { e, t, n -<<<<<<< Updated upstream -<<<<<<< Updated upstream ], c = this.getKey(), l = new ui(o, this.getTileGridForProjection(o), i, this.getTileGridForProjection(i), s, this.getTileCoordForTileUrlFunction(s, i), this.getTilePixelRatio(r), this.getGutter(), (e, t, n, r) => this.getTileInternal(e, t, n, r, o, a), this.reprojectionErrorThreshold_, this.renderReprojectionEdges_, this.tileOptions); return l.key = c, l; } getTileInternal(e, t, n, r, i, a) { let o = this.getKey(), s = _i(this, o, e, t, n); -======= - ], c = this.getKey(), l = new gu(o, this.getTileGridForProjection(o), i, this.getTileGridForProjection(i), s, this.getTileCoordForTileUrlFunction(s, i), this.getTilePixelRatio(r), this.getGutter(), (e, t, n, r) => this.getTileInternal(e, t, n, r, o, a), this.reprojectionErrorThreshold_, this.renderReprojectionEdges_, this.tileOptions); - return l.key = c, l; - } - getTileInternal(e, t, n, r, i, a) { - let o = this.getKey(), s = bu(this, o, e, t, n); ->>>>>>> Stashed changes -======= - ], c = this.getKey(), l = new gu(o, this.getTileGridForProjection(o), i, this.getTileGridForProjection(i), s, this.getTileCoordForTileUrlFunction(s, i), this.getTilePixelRatio(r), this.getGutter(), (e, t, n, r) => this.getTileInternal(e, t, n, r, o, a), this.reprojectionErrorThreshold_, this.renderReprojectionEdges_, this.tileOptions); - return l.key = c, l; - } - getTileInternal(e, t, n, r, i, a) { - let o = this.getKey(), s = bu(this, o, e, t, n); ->>>>>>> Stashed changes if (a && a.containsKey(s)) return a.get(s); let c = this.createTile_(e, t, n, r, i, o); return a?.set(s, c), c; @@ -15255,16 +8494,8 @@ var id = class extends nd { } } }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Hu(e, t) { if (pe) { -======= -======= ->>>>>>> Stashed changes -function ld(e, t) { - if (g) { ->>>>>>> Stashed changes let n = e.getCrossOrigin(), r = "same-origin", i = "same-origin"; n === "anonymous" || n === "" ? (r = "cors", i = "omit") : n === "use-credentials" && (r = "cors", i = "include"); let a = { @@ -15287,15 +8518,7 @@ function ld(e, t) { } //#endregion //#region node_modules/ol/source/Zoomify.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var Uu = class extends Ge { -======= -var ud = class extends eu { ->>>>>>> Stashed changes -======= -var ud = class extends eu { ->>>>>>> Stashed changes constructor(e, t, n, r, i, a, o) { super(t, n, r, i, a, o), this.zoomifyImage_ = null, this.tileSize_ = e; } @@ -15310,15 +8533,7 @@ var ud = class extends eu { } return e; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, Wu = class extends Vu { -======= -}, dd = class extends cd { ->>>>>>> Stashed changes -======= -}, dd = class extends cd { ->>>>>>> Stashed changes constructor(e) { let t = e.size, n = e.tierSizeCalculation === void 0 ? "default" : e.tierSizeCalculation, r = e.tilePixelRatio || 1, i = t[0], a = t[1], o = [], s = e.tileSize || 256, c = s * r; switch (n) { @@ -15335,15 +8550,7 @@ var ud = class extends eu { let l = [r], u = [0]; for (let e = 1, t = o.length; e < t; e++) l.push(r << e), u.push(o[e - 1][0] * o[e - 1][1] + u[e - 1]); l.reverse(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream let d = new yu({ -======= - let d = new Bu({ ->>>>>>> Stashed changes -======= - let d = new Bu({ ->>>>>>> Stashed changes tileSize: s, extent: e.extent || [ 0, @@ -15354,15 +8561,7 @@ var ud = class extends eu { resolutions: l }), f = e.url; f && !f.includes("{TileGroup}") && !f.includes("{tileIndex}") && (f += "{TileGroup}/{z}-{x}-{y}.jpg"); -<<<<<<< Updated upstream -<<<<<<< Updated upstream let p = Tu(f), m = s * r; -======= - let p = Ku(f), m = s * r; ->>>>>>> Stashed changes -======= - let p = Ku(f), m = s * r; ->>>>>>> Stashed changes function h(e) { return (function(t, n, r) { if (!t) return; @@ -15378,15 +8577,7 @@ var ud = class extends eu { }); }); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream let g = Ou(p.map(h)), _ = Uu.bind(null, pi(s * r)); -======= - let g = Yu(p.map(h)), _ = ud.bind(null, rs(s * r)); ->>>>>>> Stashed changes -======= - let g = Yu(p.map(h)), _ = ud.bind(null, rs(s * r)); ->>>>>>> Stashed changes super({ attributions: e.attributions, cacheSize: e.cacheSize, @@ -15394,170 +8585,19 @@ var ud = class extends eu { referrerPolicy: e.referrerPolicy, interpolate: e.interpolate, projection: e.projection, - tilePixelRatio: r, - reprojectionErrorThreshold: e.reprojectionErrorThreshold, - tileClass: _, - tileGrid: d, - tileUrlFunction: g, - transition: e.transition - }), this.zDirection = e.zDirection; - let v = g(d.getTileCoordForCoordAndResolution(yt(d.getExtent()), l[l.length - 1]), 1, null), y = new Image(); - y.addEventListener("error", () => { - m = s, this.changed(); - }), y.src = v; - } -<<<<<<< Updated upstream -<<<<<<< Updated upstream -}, Gu = class { -======= -======= ->>>>>>> Stashed changes -}, fd = function(e) { - if (!e) return null; - var t = e.getViewport().getElementsByClassName("ol-fixedoverlay")[0]; - return t || (e.getViewport().querySelector(".ol-layers") ? (t = document.createElement("canvas"), t.className = "ol-fixedoverlay", e.getViewport().querySelector(".ol-layers").after(t), e.on("precompose", function(n) { - t.width = e.getSize()[0] * n.frameState.pixelRatio, t.height = e.getSize()[1] * n.frameState.pixelRatio; - })) : t = e.getViewport().querySelector("canvas")), t; -}, pd = class extends Te { - constructor(e) { - e ||= {}, super(e), this.setStyle(e.style); - } - setMap(e) { - this.getCanvas(e); - var t = this.getMap(); - if (this._listener &&= (xe(this._listener), null), super.setMap(e), t) try { - t.renderSync(); - } catch {} - e && (this._listener = e.on("postcompose", this._draw.bind(this))); - } - getCanvas(e) { - return fd(e); - } - getContext(e) { - var t = e.context; - if (!t && this.getMap()) { - var n = this.getMap().getViewport().getElementsByClassName("ol-fixedoverlay")[0]; - t = n ? n.getContext("2d") : null; - } - return t; - } - setStyle(e) { - this._style = e || new Bc({}); - } - getStyle() { - return this._style; - } - getStroke() { - return this._style.getStroke() || this._style.setStroke(new zc({ - color: "#000", - width: 1.25 - })), this._style.getStroke(); - } - getFill() { - return this._style.getFill() || this._style.setFill(new Ic({ color: "#fff" })), this._style.getFill(); - } - getTextStroke() { - var e = this._style.getText(); - return e ||= new Kc({}), e.getStroke() || e.setStroke(new zc({ - color: "#fff", - width: 3 - })), e.getStroke(); - } - getTextFill() { - var e = this._style.getText(); - return e ||= new Kc({}), e.getFill() || e.setFill(new Ic({ color: "#fff" })), e.getFill(); - } - getTextFont() { - var e = this._style.getText(); - return e ||= new Kc({}), e.getFont() || e.setFont("12px sans-serif"), e.getFont(); - } - _draw() { - console.warn("[CanvasBase] draw function not implemented."); - } -}, md = class extends pd { - constructor(e) { - e ||= {}; - var t = document.createElement("div"); - t.className = "ol-graticule ol-unselectable ol-hidden", super({ element: t }), this.set("projection", e.projection || "EPSG:4326"); - var n = new qt({ code: this.get("projection") }).getMetersPerUnit(); - for (this.fac = 1; n / this.fac > 10;) this.fac *= 10; - this.fac = 1e4 / this.fac, this.set("maxResolution", e.maxResolution || Infinity), this.set("step", e.step || .1), this.set("stepCoord", e.stepCoord || 1), this.set("spacing", e.spacing || 40), this.set("intervals", e.intervals), this.set("precision", e.precision), this.set("margin", e.margin || 0), this.set("borderWidth", e.borderWidth || 5), this.set("stroke", e.stroke !== !1), this.formatCoord = e.formatCoord || function(e) { - return e; - }, e.style instanceof Bc ? this.setStyle(e.style) : this.setStyle(new Bc({ - stroke: new zc({ - color: "#000", - width: 1 - }), - fill: new Ic({ color: "#fff" }), - text: new Kc({ - stroke: new zc({ - color: "#fff", - width: 2 - }), - fill: new Ic({ color: "#000" }) - }) - })); - } - setStyle(e) { - this._style = e; - } - _draw(e) { - if (!(this.get("maxResolution") < e.frameState.viewState.resolution)) { - for (var t = this.getContext(e), n = t.canvas, r = e.frameState.pixelRatio, i = n.width / r, a = n.height / r, o = this.get("projection"), s = this.getMap(), c = [ - s.getCoordinateFromPixel([0, 0]), - s.getCoordinateFromPixel([i, 0]), - s.getCoordinateFromPixel([i, a]), - s.getCoordinateFromPixel([0, a]) - ], l = -Infinity, u = Infinity, d = -Infinity, f = Infinity, p = 0, m; m = c[p]; p++) c[p] = fr(m, s.getView().getProjection(), o), l = Math.max(l, c[p][0]), u = Math.min(u, c[p][0]), d = Math.max(d, c[p][1]), f = Math.min(f, c[p][1]); - var h = this.get("spacing"), g = this.get("step"), _ = this.get("stepCoord"), v = this.get("borderWidth"), y = this.get("margin"); - if ((l - u) / g * h > i) { - var b = Math.round((l - u) / i * h / g); - g *= b, g > this.fac && (g = Math.round(g / this.fac) * this.fac); - } - var x = this.get("intervals"); - if (Array.isArray(x)) { - var S = x[0]; - for (let e = 0, t = x.length; e < t && !(g >= x[e]); ++e) S = x[e]; - g = S; - } - var C = this.get("precision"), w = g; - C > 0 && g > C && (w = g / Math.ceil(g / C)), u = Math.floor(u / g) * g - g, f = Math.floor(f / g) * g - g, l = Math.floor(l / g) * g + 2 * g, d = Math.floor(d / g) * g + 2 * g; - var T = nr(o).getExtent(); - T && (u < T[0] && (u = T[0]), f < T[1] && (f = T[1]), l > T[2] && (l = T[2] + g), d > T[3] && (d = T[3] + g)); - var E = this.getStyle().getStroke() && this.get("stroke"), ee = this.getStyle().getText(), D = this.getStyle().getFill(); - t.save(), t.scale(r, r), t.beginPath(), t.rect(y, y, i - 2 * y, a - 2 * y), t.clip(), t.beginPath(); - var O = { - top: [], - left: [], - bottom: [], - right: [] - }, k, te, A, ne, j; - for (k = u; k < l; k += g) for (ne = fr([k, f], o, s.getView().getProjection()), ne = s.getPixelFromCoordinate(ne), E && t.moveTo(ne[0], ne[1]), A = ne, te = f + w; te <= d; te += w) j = fr([k, te], o, s.getView().getProjection()), j = s.getPixelFromCoordinate(j), E && t.lineTo(j[0], j[1]), A[1] > 0 && j[1] < 0 && O.top.push([k, A]), A[1] > a && j[1] < a && O.bottom.push([k, A]), A = j; - for (te = f; te < d; te += g) for (ne = fr([u, te], o, s.getView().getProjection()), ne = s.getPixelFromCoordinate(ne), E && t.moveTo(ne[0], ne[1]), A = ne, k = u + w; k <= l; k += w) j = fr([k, te], o, s.getView().getProjection()), j = s.getPixelFromCoordinate(j), E && t.lineTo(j[0], j[1]), A[0] < 0 && j[0] > 0 && O.left.push([te, A]), A[0] < i && j[0] > i && O.right.push([te, A]), A = j; - if (E && (t.strokeStyle = this.getStyle().getStroke().getColor(), t.lineWidth = this.getStyle().getStroke().getWidth(), t.stroke()), ee) { - t.fillStyle = this.getStyle().getText().getFill().getColor(), t.strokeStyle = this.getStyle().getText().getStroke().getColor(), t.lineWidth = this.getStyle().getText().getStroke().getWidth(), t.font = this.getStyle().getText().getFont(), t.textAlign = "center", t.textBaseline = "hanging"; - var M, N, re = (D ? v : 0) + y + 2; - for (p = 0; M = O.top[p]; p++) Math.round(M[0] / this.get("step")) % _ || (N = this.formatCoord(M[0], "top"), t.strokeText(N, M[1][0], re), t.fillText(N, M[1][0], re)); - for (t.textBaseline = "alphabetic", p = 0; M = O.bottom[p]; p++) Math.round(M[0] / this.get("step")) % _ || (N = this.formatCoord(M[0], "bottom"), t.strokeText(N, M[1][0], a - re), t.fillText(N, M[1][0], a - re)); - for (t.textBaseline = "middle", t.textAlign = "left", p = 0; M = O.left[p]; p++) Math.round(M[0] / this.get("step")) % _ || (N = this.formatCoord(M[0], "left"), t.strokeText(N, re, M[1][1]), t.fillText(N, re, M[1][1])); - for (t.textAlign = "right", p = 0; M = O.right[p]; p++) Math.round(M[0] / this.get("step")) % _ || (N = this.formatCoord(M[0], "right"), t.strokeText(N, i - re, M[1][1]), t.fillText(N, i - re, M[1][1])); - } - if (D) { - var ie = this.getStyle().getFill().getColor(), ae, oe; - for ((oe = this.getStyle().getStroke()) ? ae = this.getStyle().getStroke().getColor() : (ae = ie, ie = "#fff"), t.strokeStyle = ae, t.lineWidth = oe ? oe.getWidth() : 1, p = 1; p < O.top.length; p++) t.beginPath(), t.rect(O.top[p - 1][1][0], y, O.top[p][1][0] - O.top[p - 1][1][0], v), t.fillStyle = Math.round(O.top[p][0] / g) % 2 ? ae : ie, t.fill(), t.stroke(); - for (p = 1; p < O.bottom.length; p++) t.beginPath(), t.rect(O.bottom[p - 1][1][0], a - v - y, O.bottom[p][1][0] - O.bottom[p - 1][1][0], v), t.fillStyle = Math.round(O.bottom[p][0] / g) % 2 ? ae : ie, t.fill(), t.stroke(); - for (p = 1; p < O.left.length; p++) t.beginPath(), t.rect(y, O.left[p - 1][1][1], v, O.left[p][1][1] - O.left[p - 1][1][1]), t.fillStyle = Math.round(O.left[p][0] / g) % 2 ? ae : ie, t.fill(), t.stroke(); - for (p = 1; p < O.right.length; p++) t.beginPath(), t.rect(i - v - y, O.right[p - 1][1][1], v, O.right[p][1][1] - O.right[p - 1][1][1]), t.fillStyle = Math.round(O.right[p][0] / g) % 2 ? ae : ie, t.fill(), t.stroke(); - t.beginPath(), t.fillStyle = ae, t.rect(y, y, v, v), t.rect(y, a - v - y, v, v), t.rect(i - v - y, y, v, v), t.rect(i - v - y, a - v - y, v, v), t.fill(); - } - t.restore(); - } + tilePixelRatio: r, + reprojectionErrorThreshold: e.reprojectionErrorThreshold, + tileClass: _, + tileGrid: d, + tileUrlFunction: g, + transition: e.transition + }), this.zDirection = e.zDirection; + let v = g(d.getTileCoordForCoordAndResolution(yt(d.getExtent()), l[l.length - 1]), 1, null), y = new Image(); + y.addEventListener("error", () => { + m = s, this.changed(); + }), y.src = v; } -}, hd = class { -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes +}, Gu = class { drawCustom(e, t, n, r, i) {} drawGeometry(e) {} setStyle(e) {} @@ -15574,7 +8614,7 @@ var ud = class extends eu { setFillStrokeStyle(e, t) {} setImageStyle(e, t) {} setTextStyle(e, t) {} -}, Y = { +}, X = { BEGIN_GEOMETRY: 0, BEGIN_PATH: 1, CIRCLE: 2, @@ -15588,15 +8628,7 @@ var ud = class extends eu { SET_FILL_STYLE: 10, SET_STROKE_STYLE: 11, STROKE: 12 -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, Ku = [X.FILL], qu = [X.STROKE], Ju = [X.BEGIN_PATH], Yu = [X.CLOSE_PATH], Xu = class extends Gu { -======= -}, gd = [Y.FILL], _d = [Y.STROKE], vd = [Y.BEGIN_PATH], yd = [Y.CLOSE_PATH], bd = class extends hd { ->>>>>>> Stashed changes -======= -}, gd = [Y.FILL], _d = [Y.STROKE], vd = [Y.BEGIN_PATH], yd = [Y.CLOSE_PATH], bd = class extends hd { ->>>>>>> Stashed changes constructor(e, t, n, r) { super(), this.tolerance = e, this.maxExtent = t, this.pixelRatio = r, this.maxLineWidth = 0, this.resolution = n, this.beginGeometryInstruction1_ = null, this.beginGeometryInstruction2_ = null, this.bufferedMaxExtent_ = null, this.instructions = [], this.coordinates = [], this.tmpCoordinate_ = [], this.hitDetectionInstructions = [], this.state = {}; } @@ -15638,148 +8670,84 @@ var ud = class extends eu { f = this.drawCustomCoordinates_(c, f, t[e], o, n), d.push(n); } this.instructions.push([ - Y.CUSTOM, + X.CUSTOM, s, d, e, n, -<<<<<<< Updated upstream -<<<<<<< Updated upstream Aa, -======= - Ai, ->>>>>>> Stashed changes -======= - Ai, ->>>>>>> Stashed changes i ]), this.hitDetectionInstructions.push([ - Y.CUSTOM, + X.CUSTOM, s, d, e, r || n, -<<<<<<< Updated upstream -<<<<<<< Updated upstream Aa, -======= - Ai, ->>>>>>> Stashed changes -======= - Ai, ->>>>>>> Stashed changes i ]); break; case "Polygon": case "MultiLineString": u = [], c = a == "Polygon" ? e.getOrientedFlatCoordinates() : e.getFlatCoordinates(), f = this.drawCustomCoordinates_(c, 0, e.getEnds(), o, u), this.instructions.push([ - Y.CUSTOM, + X.CUSTOM, s, u, e, n, -<<<<<<< Updated upstream -<<<<<<< Updated upstream ka, -======= - ki, ->>>>>>> Stashed changes -======= - ki, ->>>>>>> Stashed changes i ]), this.hitDetectionInstructions.push([ - Y.CUSTOM, + X.CUSTOM, s, u, e, r || n, -<<<<<<< Updated upstream -<<<<<<< Updated upstream ka, -======= - ki, ->>>>>>> Stashed changes -======= - ki, ->>>>>>> Stashed changes i ]); break; case "LineString": case "Circle": c = e.getFlatCoordinates(), l = this.appendFlatLineCoordinates(c, 0, c.length, o, !1, !1), this.instructions.push([ - Y.CUSTOM, + X.CUSTOM, s, l, e, n, -<<<<<<< Updated upstream -<<<<<<< Updated upstream Oa, -======= - Oi, ->>>>>>> Stashed changes -======= - Oi, ->>>>>>> Stashed changes i ]), this.hitDetectionInstructions.push([ - Y.CUSTOM, + X.CUSTOM, s, l, e, r || n, -<<<<<<< Updated upstream -<<<<<<< Updated upstream Oa, -======= - Oi, ->>>>>>> Stashed changes -======= - Oi, ->>>>>>> Stashed changes i ]); break; case "MultiPoint": c = e.getFlatCoordinates(), l = this.appendFlatPointCoordinates(c, o), l > s && (this.instructions.push([ - Y.CUSTOM, + X.CUSTOM, s, l, e, n, -<<<<<<< Updated upstream -<<<<<<< Updated upstream Oa, -======= - Oi, ->>>>>>> Stashed changes -======= - Oi, ->>>>>>> Stashed changes i ]), this.hitDetectionInstructions.push([ - Y.CUSTOM, + X.CUSTOM, s, l, e, r || n, -<<<<<<< Updated upstream -<<<<<<< Updated upstream Oa, -======= - Oi, ->>>>>>> Stashed changes -======= - Oi, ->>>>>>> Stashed changes i ])); break; case "Point": c = e.getFlatCoordinates(), this.coordinates.push(c[0], c[1]), l = this.coordinates.length, this.instructions.push([ - Y.CUSTOM, + X.CUSTOM, s, l, e, @@ -15787,7 +8755,7 @@ var ud = class extends eu { void 0, i ]), this.hitDetectionInstructions.push([ - Y.CUSTOM, + X.CUSTOM, s, l, e, @@ -15800,13 +8768,13 @@ var ud = class extends eu { } beginGeometry(e, t, n) { this.beginGeometryInstruction1_ = [ - Y.BEGIN_GEOMETRY, + X.BEGIN_GEOMETRY, t, 0, e, n ], this.instructions.push(this.beginGeometryInstruction1_), this.beginGeometryInstruction2_ = [ - Y.BEGIN_GEOMETRY, + X.BEGIN_GEOMETRY, t, 0, e, @@ -15824,35 +8792,17 @@ var ud = class extends eu { let e = this.hitDetectionInstructions; e.reverse(); let t, n = e.length, r, i, a = -1; -<<<<<<< Updated upstream -<<<<<<< Updated upstream for (t = 0; t < n; ++t) r = e[t], i = r[0], i == X.END_GEOMETRY ? a = t : i == X.BEGIN_GEOMETRY && (r[2] = t, p(this.hitDetectionInstructions, a, t), a = -1); -======= - for (t = 0; t < n; ++t) r = e[t], i = r[0], i == Y.END_GEOMETRY ? a = t : i == Y.BEGIN_GEOMETRY && (r[2] = t, le(this.hitDetectionInstructions, a, t), a = -1); ->>>>>>> Stashed changes -======= - for (t = 0; t < n; ++t) r = e[t], i = r[0], i == Y.END_GEOMETRY ? a = t : i == Y.BEGIN_GEOMETRY && (r[2] = t, le(this.hitDetectionInstructions, a, t), a = -1); ->>>>>>> Stashed changes } fillStyleToState(e, t = {}) { if (e) { let n = e.getColor(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream t.fillPatternScale = n && typeof n == "object" && "src" in n ? this.pixelRatio : 1, t.fillStyle = Bc(n || "#000") ?? void 0; -======= - t.fillPatternScale = n && typeof n == "object" && "src" in n ? this.pixelRatio : 1, t.fillStyle = cc(n || "#000") ?? void 0; ->>>>>>> Stashed changes -======= - t.fillPatternScale = n && typeof n == "object" && "src" in n ? this.pixelRatio : 1, t.fillStyle = cc(n || "#000") ?? void 0; ->>>>>>> Stashed changes } else t.fillStyle = void 0; return t; } strokeStyleToState(e, t = {}) { if (e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream t.strokeStyle = Bc(e.getColor() || qc); let n = e.getLineCap(); t.lineCap = n === void 0 ? Wc : n; @@ -15860,24 +8810,6 @@ var ud = class extends eu { t.lineDash = r ? r.slice() : Gc, t.lineDashOffset = e.getLineDashOffset() || 0; let i = e.getLineJoin(); t.lineJoin = i === void 0 ? Kc : i; -======= - t.strokeStyle = cc(e.getColor() || hc); - let n = e.getLineCap(); - t.lineCap = n === void 0 ? fc : n; - let r = e.getLineDash(); - t.lineDash = r ? r.slice() : pc, t.lineDashOffset = e.getLineDashOffset() || 0; - let i = e.getLineJoin(); - t.lineJoin = i === void 0 ? mc : i; ->>>>>>> Stashed changes -======= - t.strokeStyle = cc(e.getColor() || hc); - let n = e.getLineCap(); - t.lineCap = n === void 0 ? fc : n; - let r = e.getLineDash(); - t.lineDash = r ? r.slice() : pc, t.lineDashOffset = e.getLineDashOffset() || 0; - let i = e.getLineJoin(); - t.lineJoin = i === void 0 ? mc : i; ->>>>>>> Stashed changes let a = e.getWidth(); t.lineWidth = a === void 0 ? 1 : a; let o = e.getMiterLimit(); @@ -15890,7 +8822,7 @@ var ud = class extends eu { this.fillStyleToState(e, n), this.strokeStyleToState(t, n); } createFill(e) { - let t = e.fillStyle, n = [Y.SET_FILL_STYLE, t]; + let t = e.fillStyle, n = [X.SET_FILL_STYLE, t]; return typeof t != "string" && n.push(e.fillPatternScale), n; } applyStroke(e) { @@ -15898,7 +8830,7 @@ var ud = class extends eu { } createStroke(e) { return [ - Y.SET_STROKE_STYLE, + X.SET_STROKE_STYLE, e.strokeStyle, e.lineWidth * this.pixelRatio, e.lineCap, @@ -15918,7 +8850,7 @@ var ud = class extends eu { } endGeometry(e) { this.beginGeometryInstruction1_[2] = this.instructions.length, this.beginGeometryInstruction1_ = null, this.beginGeometryInstruction2_[2] = this.hitDetectionInstructions.length, this.beginGeometryInstruction2_ = null; - let t = [Y.END_GEOMETRY, e]; + let t = [X.END_GEOMETRY, e]; this.instructions.push(t), this.hitDetectionInstructions.push(t); } getBufferedMaxExtent() { @@ -15928,15 +8860,7 @@ var ud = class extends eu { } return this.bufferedMaxExtent_; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, Zu = class extends Xu { -======= -}, xd = class extends bd { ->>>>>>> Stashed changes -======= -}, xd = class extends bd { ->>>>>>> Stashed changes constructor(e, t, n, r) { super(e, t, n, r), this.hitDetectionImage_ = null, this.image_ = null, this.imagePixelRatio_ = void 0, this.anchorX_ = void 0, this.anchorY_ = void 0, this.height_ = void 0, this.opacity_ = void 0, this.originX_ = void 0, this.originY_ = void 0, this.rotateWithView_ = void 0, this.rotation_ = void 0, this.scale_ = void 0, this.width_ = void 0, this.declutterMode_ = void 0, this.declutterImageWithText_ = void 0; } @@ -15945,7 +8869,7 @@ var ud = class extends eu { this.beginGeometry(e, t, n); let r = e.getFlatCoordinates(), i = e.getStride(), a = this.coordinates.length, o = this.appendFlatPointCoordinates(r, i); this.instructions.push([ - Y.DRAW_IMAGE, + X.DRAW_IMAGE, a, o, this.image_, @@ -15962,7 +8886,7 @@ var ud = class extends eu { this.declutterMode_, this.declutterImageWithText_ ]), this.hitDetectionInstructions.push([ - Y.DRAW_IMAGE, + X.DRAW_IMAGE, a, o, this.hitDetectionImage_, @@ -15987,7 +8911,7 @@ var ud = class extends eu { for (let t = 0, n = r.length; t < n; t += e.getStride()) (!this.maxExtent || tt(this.maxExtent, r.slice(t, t + 2))) && i.push(r[t], r[t + 1]); let a = this.coordinates.length, o = this.appendFlatPointCoordinates(i, 2); this.instructions.push([ - Y.DRAW_IMAGE, + X.DRAW_IMAGE, a, o, this.image_, @@ -16004,7 +8928,7 @@ var ud = class extends eu { this.declutterMode_, this.declutterImageWithText_ ]), this.hitDetectionInstructions.push([ - Y.DRAW_IMAGE, + X.DRAW_IMAGE, a, o, this.hitDetectionImage_, @@ -16029,27 +8953,19 @@ var ud = class extends eu { let n = e.getAnchor(), r = e.getSize(), i = e.getOrigin(); this.imagePixelRatio_ = e.getPixelRatio(this.pixelRatio), this.anchorX_ = n[0], this.anchorY_ = n[1], this.hitDetectionImage_ = e.getHitDetectionImage(), this.image_ = e.getImage(this.pixelRatio), this.height_ = r[1], this.opacity_ = e.getOpacity(), this.originX_ = i[0], this.originY_ = i[1], this.rotateWithView_ = e.getRotateWithView(), this.rotation_ = e.getRotation(), this.scale_ = e.getScaleArray(), this.width_ = r[0], this.declutterMode_ = e.getDeclutterMode(), this.declutterImageWithText_ = t; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, Qu = class extends Xu { -======= -}, Sd = class extends bd { ->>>>>>> Stashed changes -======= -}, Sd = class extends bd { ->>>>>>> Stashed changes constructor(e, t, n, r) { super(e, t, n, r); } drawFlatCoordinates_(e, t, n, r, i) { let a = this.coordinates.length, o = this.appendFlatLineCoordinates(e, t, n, r, !1, !1); return this.instructions.push([ - Y.MOVE_TO_LINE_TO, + X.MOVE_TO_LINE_TO, a, o, i * this.pixelRatio ]), this.hitDetectionInstructions.push([ - Y.MOVE_TO_LINE_TO, + X.MOVE_TO_LINE_TO, a, o, i @@ -16059,66 +8975,28 @@ var ud = class extends eu { let r = this.state, i = r.strokeStyle, a = r.lineWidth, o = r.strokeOffset; if (i === void 0 || a === void 0) return; this.updateStrokeStyle(r, this.applyStroke), this.beginGeometry(e, t, n), this.hitDetectionInstructions.push([ -<<<<<<< Updated upstream -<<<<<<< Updated upstream X.SET_STROKE_STYLE, qc, -======= - Y.SET_STROKE_STYLE, - hc, ->>>>>>> Stashed changes -======= - Y.SET_STROKE_STYLE, - hc, ->>>>>>> Stashed changes r.lineWidth, r.lineCap, r.lineJoin, r.miterLimit, -<<<<<<< Updated upstream -<<<<<<< Updated upstream Gc, 0 ], Ju); let s = e.getFlatCoordinates(), c = e.getStride(); this.drawFlatCoordinates_(s, 0, s.length, c, o), this.hitDetectionInstructions.push(qu), this.endGeometry(t); -======= - pc, - 0 - ], vd); - let s = e.getFlatCoordinates(), c = e.getStride(); - this.drawFlatCoordinates_(s, 0, s.length, c, o), this.hitDetectionInstructions.push(_d), this.endGeometry(t); ->>>>>>> Stashed changes -======= - pc, - 0 - ], vd); - let s = e.getFlatCoordinates(), c = e.getStride(); - this.drawFlatCoordinates_(s, 0, s.length, c, o), this.hitDetectionInstructions.push(_d), this.endGeometry(t); ->>>>>>> Stashed changes } drawMultiLineString(e, t, n) { let r = this.state, i = r.strokeStyle, a = r.lineWidth, o = r.strokeOffset; if (i === void 0 || a === void 0) return; this.updateStrokeStyle(r, this.applyStroke), this.beginGeometry(e, t, n), this.hitDetectionInstructions.push([ -<<<<<<< Updated upstream -<<<<<<< Updated upstream X.SET_STROKE_STYLE, qc, -======= - Y.SET_STROKE_STYLE, - hc, ->>>>>>> Stashed changes -======= - Y.SET_STROKE_STYLE, - hc, ->>>>>>> Stashed changes r.lineWidth, r.lineCap, r.lineJoin, r.miterLimit, -<<<<<<< Updated upstream -<<<<<<< Updated upstream Gc, 0 ], Ju); @@ -16134,165 +9012,63 @@ var ud = class extends eu { e.lastStroke != null && e.lastStroke != this.coordinates.length && (this.instructions.push(qu), e.lastStroke = this.coordinates.length), e.lastStroke = 0, super.applyStroke(e), this.instructions.push(Ju); } }, $u = class extends Xu { -======= - pc, - 0 - ], vd); - let s = e.getEnds(), c = e.getFlatCoordinates(), l = e.getStride(), u = 0; - for (let e = 0, t = s.length; e < t; ++e) u = this.drawFlatCoordinates_(c, u, s[e], l, o); - this.hitDetectionInstructions.push(_d), this.endGeometry(t); - } - finish() { - let e = this.state; - return e.lastStroke != null && e.lastStroke != this.coordinates.length && this.instructions.push(_d), this.reverseHitDetectionInstructions(), this.state = null, super.finish(); - } - applyStroke(e) { - e.lastStroke != null && e.lastStroke != this.coordinates.length && (this.instructions.push(_d), e.lastStroke = this.coordinates.length), e.lastStroke = 0, super.applyStroke(e), this.instructions.push(vd); - } -}, Cd = class extends bd { ->>>>>>> Stashed changes -======= - pc, - 0 - ], vd); - let s = e.getEnds(), c = e.getFlatCoordinates(), l = e.getStride(), u = 0; - for (let e = 0, t = s.length; e < t; ++e) u = this.drawFlatCoordinates_(c, u, s[e], l, o); - this.hitDetectionInstructions.push(_d), this.endGeometry(t); - } - finish() { - let e = this.state; - return e.lastStroke != null && e.lastStroke != this.coordinates.length && this.instructions.push(_d), this.reverseHitDetectionInstructions(), this.state = null, super.finish(); - } - applyStroke(e) { - e.lastStroke != null && e.lastStroke != this.coordinates.length && (this.instructions.push(_d), e.lastStroke = this.coordinates.length), e.lastStroke = 0, super.applyStroke(e), this.instructions.push(vd); - } -}, Cd = class extends bd { ->>>>>>> Stashed changes constructor(e, t, n, r) { super(e, t, n, r); } drawFlatCoordinatess_(e, t, n, r, i) { let a = this.state, o = a.fillStyle !== void 0, s = a.strokeStyle !== void 0, c = n.length; -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.instructions.push(Ju), this.hitDetectionInstructions.push(Ju); -======= - this.instructions.push(vd), this.hitDetectionInstructions.push(vd); ->>>>>>> Stashed changes -======= - this.instructions.push(vd), this.hitDetectionInstructions.push(vd); ->>>>>>> Stashed changes for (let a = 0; a < c; ++a) { let o = n[a], c = this.coordinates.length, l = this.appendFlatLineCoordinates(e, t, o, r, !0, !s); this.instructions.push([ - Y.MOVE_TO_LINE_TO, + X.MOVE_TO_LINE_TO, c, l, i * this.pixelRatio, !0 ]), this.hitDetectionInstructions.push([ - Y.MOVE_TO_LINE_TO, + X.MOVE_TO_LINE_TO, c, l, i, !0 -<<<<<<< Updated upstream -<<<<<<< Updated upstream ]), s && (this.instructions.push(Yu), this.hitDetectionInstructions.push(Yu)), t = o; } return o && (this.instructions.push(Ku), this.hitDetectionInstructions.push(Ku)), s && (this.instructions.push(qu), this.hitDetectionInstructions.push(qu)), t; -======= - ]), s && (this.instructions.push(yd), this.hitDetectionInstructions.push(yd)), t = o; - } - return o && (this.instructions.push(gd), this.hitDetectionInstructions.push(gd)), s && (this.instructions.push(_d), this.hitDetectionInstructions.push(_d)), t; ->>>>>>> Stashed changes -======= - ]), s && (this.instructions.push(yd), this.hitDetectionInstructions.push(yd)), t = o; - } - return o && (this.instructions.push(gd), this.hitDetectionInstructions.push(gd)), s && (this.instructions.push(_d), this.hitDetectionInstructions.push(_d)), t; ->>>>>>> Stashed changes } drawCircle(e, t, n) { let r = this.state, i = r.fillStyle, a = r.strokeStyle, o = r.strokeOffset; if (i === void 0 && a === void 0 || this.handleStrokeOffset_(() => this.drawCircle(e, t, n))) return; -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.setFillStrokeStyles_(), this.beginGeometry(e, t, n), r.fillStyle !== void 0 && this.hitDetectionInstructions.push([X.SET_FILL_STYLE, Uc]), r.strokeStyle !== void 0 && this.hitDetectionInstructions.push([ X.SET_STROKE_STYLE, qc, -======= - this.setFillStrokeStyles_(), this.beginGeometry(e, t, n), r.fillStyle !== void 0 && this.hitDetectionInstructions.push([Y.SET_FILL_STYLE, dc]), r.strokeStyle !== void 0 && this.hitDetectionInstructions.push([ - Y.SET_STROKE_STYLE, - hc, ->>>>>>> Stashed changes -======= - this.setFillStrokeStyles_(), this.beginGeometry(e, t, n), r.fillStyle !== void 0 && this.hitDetectionInstructions.push([Y.SET_FILL_STYLE, dc]), r.strokeStyle !== void 0 && this.hitDetectionInstructions.push([ - Y.SET_STROKE_STYLE, - hc, ->>>>>>> Stashed changes r.lineWidth, r.lineCap, r.lineJoin, r.miterLimit, -<<<<<<< Updated upstream -<<<<<<< Updated upstream Gc, -======= - pc, ->>>>>>> Stashed changes -======= - pc, ->>>>>>> Stashed changes 0 ]); let s = e.getFlatCoordinates(), c = e.getStride(), l = this.coordinates.length; this.appendFlatLineCoordinates(s, 0, s.length, c, !1, !1); let u = [ - Y.CIRCLE, + X.CIRCLE, l, o ]; -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.instructions.push(Ju, u), this.hitDetectionInstructions.push(Ju, u), r.fillStyle !== void 0 && (this.instructions.push(Ku), this.hitDetectionInstructions.push(Ku)), r.strokeStyle !== void 0 && (this.instructions.push(qu), this.hitDetectionInstructions.push(qu)), this.endGeometry(t); -======= - this.instructions.push(vd, u), this.hitDetectionInstructions.push(vd, u), r.fillStyle !== void 0 && (this.instructions.push(gd), this.hitDetectionInstructions.push(gd)), r.strokeStyle !== void 0 && (this.instructions.push(_d), this.hitDetectionInstructions.push(_d)), this.endGeometry(t); ->>>>>>> Stashed changes -======= - this.instructions.push(vd, u), this.hitDetectionInstructions.push(vd, u), r.fillStyle !== void 0 && (this.instructions.push(gd), this.hitDetectionInstructions.push(gd)), r.strokeStyle !== void 0 && (this.instructions.push(_d), this.hitDetectionInstructions.push(_d)), this.endGeometry(t); ->>>>>>> Stashed changes } drawPolygon(e, t, n) { let r = this.state, i = r.fillStyle, a = r.strokeStyle, o = r.strokeOffset; if (i === void 0 && a === void 0 || this.handleStrokeOffset_(() => this.drawPolygon(e, t, n))) return; -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.setFillStrokeStyles_(), this.beginGeometry(e, t, n), r.fillStyle !== void 0 && this.hitDetectionInstructions.push([X.SET_FILL_STYLE, Uc]), r.strokeStyle !== void 0 && this.hitDetectionInstructions.push([ X.SET_STROKE_STYLE, qc, -======= - this.setFillStrokeStyles_(), this.beginGeometry(e, t, n), r.fillStyle !== void 0 && this.hitDetectionInstructions.push([Y.SET_FILL_STYLE, dc]), r.strokeStyle !== void 0 && this.hitDetectionInstructions.push([ - Y.SET_STROKE_STYLE, - hc, ->>>>>>> Stashed changes -======= - this.setFillStrokeStyles_(), this.beginGeometry(e, t, n), r.fillStyle !== void 0 && this.hitDetectionInstructions.push([Y.SET_FILL_STYLE, dc]), r.strokeStyle !== void 0 && this.hitDetectionInstructions.push([ - Y.SET_STROKE_STYLE, - hc, ->>>>>>> Stashed changes r.lineWidth, r.lineCap, r.lineJoin, r.miterLimit, -<<<<<<< Updated upstream -<<<<<<< Updated upstream Gc, -======= - pc, ->>>>>>> Stashed changes -======= - pc, ->>>>>>> Stashed changes 0 ]); let s = e.getEnds(), c = e.getOrientedFlatCoordinates(), l = e.getStride(); @@ -16301,34 +9077,14 @@ var ud = class extends eu { drawMultiPolygon(e, t, n) { let r = this.state, i = r.fillStyle, a = r.strokeStyle, o = r.strokeOffset; if (i === void 0 && a === void 0 || this.handleStrokeOffset_(() => this.drawMultiPolygon(e, t, n))) return; -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.setFillStrokeStyles_(), this.beginGeometry(e, t, n), r.fillStyle !== void 0 && this.hitDetectionInstructions.push([X.SET_FILL_STYLE, Uc]), r.strokeStyle !== void 0 && this.hitDetectionInstructions.push([ X.SET_STROKE_STYLE, qc, -======= - this.setFillStrokeStyles_(), this.beginGeometry(e, t, n), r.fillStyle !== void 0 && this.hitDetectionInstructions.push([Y.SET_FILL_STYLE, dc]), r.strokeStyle !== void 0 && this.hitDetectionInstructions.push([ - Y.SET_STROKE_STYLE, - hc, ->>>>>>> Stashed changes -======= - this.setFillStrokeStyles_(), this.beginGeometry(e, t, n), r.fillStyle !== void 0 && this.hitDetectionInstructions.push([Y.SET_FILL_STYLE, dc]), r.strokeStyle !== void 0 && this.hitDetectionInstructions.push([ - Y.SET_STROKE_STYLE, - hc, ->>>>>>> Stashed changes r.lineWidth, r.lineCap, r.lineJoin, r.miterLimit, -<<<<<<< Updated upstream -<<<<<<< Updated upstream Gc, -======= - pc, ->>>>>>> Stashed changes -======= - pc, ->>>>>>> Stashed changes 0 ]); let s = e.getEndss(), c = e.getOrientedFlatCoordinates(), l = e.getStride(), u = 0; @@ -16340,15 +9096,7 @@ var ud = class extends eu { let e = this.tolerance; if (e !== 0) { let t = this.coordinates; -<<<<<<< Updated upstream -<<<<<<< Updated upstream for (let n = 0, r = t.length; n < r; ++n) t[n] = Ba(t[n], e); -======= - for (let n = 0, r = t.length; n < r; ++n) t[n] = Bi(t[n], e); ->>>>>>> Stashed changes -======= - for (let n = 0, r = t.length; n < r; ++n) t[n] = Bi(t[n], e); ->>>>>>> Stashed changes } return super.finish(); } @@ -16360,18 +9108,8 @@ var ud = class extends eu { let t = this.state, n = t.fillStyle, r = t.strokeStyle, i = t.strokeOffset; return Math.abs(i) > 0 && n !== void 0 && r !== void 0 && (t.strokeStyle = void 0, t.strokeOffset = 0, e(), t.fillStyle = void 0, t.strokeStyle = r, t.strokeOffset = i, e(), t.fillStyle = n, !0); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, ed = 0, td = 1; function nd(e, t, n, r, i, a, o, s) { -======= -}, wd = 0, Td = 1; -function Ed(e, t, n, r, i, a, o, s) { ->>>>>>> Stashed changes -======= -}, wd = 0, Td = 1; -function Ed(e, t, n, r, i, a, o, s) { ->>>>>>> Stashed changes let c = o - i, l = s - a, u = 0, d = 1; if (c === 0) { if (i < e || i > n) return !1; @@ -16393,38 +9131,16 @@ function Ed(e, t, n, r, i, a, o, s) { } if (e > u && (u = e), n < d && (d = n), u > d) return !1; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream return ed = u, td = d, !0; } function rd(e, t, n, r) { -======= - return wd = u, Td = d, !0; -} -function Dd(e, t, n, r) { ->>>>>>> Stashed changes -======= - return wd = u, Td = d, !0; -} -function Dd(e, t, n, r) { ->>>>>>> Stashed changes let i = r[0], a = r[1], o = r[2], s = r[3], c = [], l = [], u = !1, d, f, p = 0; for (let r = 0, m = t.length; r < m; ++r) { let m = t[r], h = e[p], g = e[p + 1], _ = !1; for (let t = p + n; t < m; t += n) { let n = e[t], r = e[t + 1]; -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (nd(i, a, o, s, h, g, n, r)) { let e = n - h, t = r - g, i = h + ed * e, a = g + ed * t, o = h + td * e, s = g + td * t; -======= - if (Ed(i, a, o, s, h, g, n, r)) { - let e = n - h, t = r - g, i = h + wd * e, a = g + wd * t, o = h + Td * e, s = g + Td * t; ->>>>>>> Stashed changes -======= - if (Ed(i, a, o, s, h, g, n, r)) { - let e = n - h, t = r - g, i = h + wd * e, a = g + wd * t, o = h + Td * e, s = g + Td * t; ->>>>>>> Stashed changes u && _ && i === d && a === f ? c.push(o, s) : (u && l.push(c.length), c.push(i, a, o, s), u = !0), d = o, f = s, _ = !0; } h = n, g = r; @@ -16438,15 +9154,7 @@ function Dd(e, t, n, r) { } //#endregion //#region node_modules/ol/geom/flat/linechunk.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function id(e, t, n, r, i) { -======= -function Od(e, t, n, r, i) { ->>>>>>> Stashed changes -======= -function Od(e, t, n, r, i) { ->>>>>>> Stashed changes let a = [], o = n, s = 0, c = t.slice(n, 2); for (; s < e && o + i < r;) { let [n, r] = c.slice(-2), l = t[o + i], u = t[o + i + 1], d = Math.sqrt((l - n) * (l - n) + (u - r) * (u - r)); @@ -16463,15 +9171,7 @@ function Od(e, t, n, r, i) { } //#endregion //#region node_modules/ol/geom/flat/straightchunk.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function ad(e, t, n, r, i) { -======= -function kd(e, t, n, r, i) { ->>>>>>> Stashed changes -======= -function kd(e, t, n, r, i) { ->>>>>>> Stashed changes let a = n, o = n, s = 0, c = 0, l = n, u, d, f, p, m, h, g, _, v, y; for (d = n; d < r; d += i) { let n = t[d], r = t[d + 1]; @@ -16481,15 +9181,7 @@ function kd(e, t, n, r, i) { } //#endregion //#region node_modules/ol/render/canvas/TextBuilder.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var od = { -======= -var Ad = { ->>>>>>> Stashed changes -======= -var Ad = { ->>>>>>> Stashed changes left: 0, center: .5, right: 1, @@ -16499,8 +9191,6 @@ var Ad = { alphabetic: .8, ideographic: .8, bottom: 1 -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, sd = { Circle: $u, Default: Xu, @@ -16510,28 +9200,6 @@ var Ad = { Text: class extends Xu { constructor(e, t, n, r) { super(e, t, n, r), this.labels_ = null, this.text_ = "", this.textOffsetX_ = 0, this.textOffsetY_ = 0, this.textRotateWithView_ = void 0, this.textKeepUpright_ = void 0, this.textRotation_ = 0, this.textFillState_ = null, this.fillStates = {}, this.fillStates[Uc] = { fillStyle: Uc }, this.textStrokeState_ = null, this.strokeStates = {}, this.textState_ = {}, this.textStates = {}, this.textKey_ = "", this.fillKey_ = "", this.strokeKey_ = "", this.declutterMode_ = void 0, this.declutterImageWithText_ = void 0; -======= -}, jd = { - Circle: Cd, - Default: bd, - Image: xd, - LineString: Sd, - Polygon: Cd, - Text: class extends bd { - constructor(e, t, n, r) { - super(e, t, n, r), this.labels_ = null, this.text_ = "", this.textOffsetX_ = 0, this.textOffsetY_ = 0, this.textRotateWithView_ = void 0, this.textKeepUpright_ = void 0, this.textRotation_ = 0, this.textFillState_ = null, this.fillStates = {}, this.fillStates[dc] = { fillStyle: dc }, this.textStrokeState_ = null, this.strokeStates = {}, this.textState_ = {}, this.textStates = {}, this.textKey_ = "", this.fillKey_ = "", this.strokeKey_ = "", this.declutterMode_ = void 0, this.declutterImageWithText_ = void 0; ->>>>>>> Stashed changes -======= -}, jd = { - Circle: Cd, - Default: bd, - Image: xd, - LineString: Sd, - Polygon: Cd, - Text: class extends bd { - constructor(e, t, n, r) { - super(e, t, n, r), this.labels_ = null, this.text_ = "", this.textOffsetX_ = 0, this.textOffsetY_ = 0, this.textRotateWithView_ = void 0, this.textKeepUpright_ = void 0, this.textRotation_ = 0, this.textFillState_ = null, this.fillStates = {}, this.fillStates[dc] = { fillStyle: dc }, this.textStrokeState_ = null, this.strokeStates = {}, this.textState_ = {}, this.textStates = {}, this.textKey_ = "", this.fillKey_ = "", this.strokeKey_ = "", this.declutterMode_ = void 0, this.declutterImageWithText_ = void 0; ->>>>>>> Stashed changes } finish() { let e = super.finish(); @@ -16553,43 +9221,19 @@ var Ad = { i = []; for (let e = 0, n = t.length; e < n; ++e) i.push(t[e][0]); } -<<<<<<< Updated upstream if ((c == "LineString" || c == "MultiLineString") && !nt(this.getBufferedMaxExtent(), r)) { let e = rd(l, i, u, this.getBufferedMaxExtent()); -======= - if ((c == "LineString" || c == "MultiLineString") && !Ve(this.getBufferedMaxExtent(), r)) { - let e = Dd(l, i, u, this.getBufferedMaxExtent()); -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes if (l = e.flatCoordinates, i = e.ends, u = 2, i.length === 0) return; } this.beginGeometry(e, t, n); let d = a.repeat, f = d ? void 0 : a.textAlign, p = 0; for (let e = 0, t = i.length; e < t; ++e) { let t; -<<<<<<< Updated upstream -<<<<<<< Updated upstream t = d ? id(d * this.resolution, l, p, i[e], u) : [l.slice(p, i[e])]; for (let n = 0, r = t.length; n < r; ++n) { let r = t[n], c = 0, l = r.length; if (f == null) { let e = ad(a.maxAngle, r, 0, r.length, 2); -======= - t = d ? Od(d * this.resolution, l, p, i[e], u) : [l.slice(p, i[e])]; - for (let n = 0, r = t.length; n < r; ++n) { - let r = t[n], c = 0, l = r.length; - if (f == null) { - let e = kd(a.maxAngle, r, 0, r.length, 2); ->>>>>>> Stashed changes -======= - t = d ? Od(d * this.resolution, l, p, i[e], u) : [l.slice(p, i[e])]; - for (let n = 0, r = t.length; n < r; ++n) { - let r = t[n], c = 0, l = r.length; - if (f == null) { - let e = kd(a.maxAngle, r, 0, r.length, 2); ->>>>>>> Stashed changes c = e[0], l = e[1]; } for (let e = c; e < l; e += u) o.push(r[e], r[e + 1]); @@ -16637,15 +9281,7 @@ var Ad = { let d = a.backgroundFill ? this.createFill(this.fillStyleToState(a.backgroundFill)) : null, f = a.backgroundStroke ? this.createStroke(this.strokeStyleToState(a.backgroundStroke)) : null; this.beginGeometry(e, t, n); let p = a.padding; -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (p != Xc && (a.scale[0] < 0 || a.scale[1] < 0)) { -======= - if (p != vc && (a.scale[0] < 0 || a.scale[1] < 0)) { ->>>>>>> Stashed changes -======= - if (p != vc && (a.scale[0] < 0 || a.scale[1] < 0)) { ->>>>>>> Stashed changes let e = a.padding[0], t = a.padding[1], n = a.padding[2], r = a.padding[3]; a.scale[0] < 0 && (t = -t, r = -r), a.scale[1] < 0 && (e = -e, n = -n), p = [ e, @@ -16656,7 +9292,7 @@ var Ad = { } let m = this.pixelRatio; this.instructions.push([ - Y.DRAW_IMAGE, + X.DRAW_IMAGE, s, i, null, @@ -16672,15 +9308,7 @@ var Ad = { NaN, this.declutterMode_, this.declutterImageWithText_, -<<<<<<< Updated upstream -<<<<<<< Updated upstream p == Xc ? Xc : p.map(function(e) { -======= - p == vc ? vc : p.map(function(e) { ->>>>>>> Stashed changes -======= - p == vc ? vc : p.map(function(e) { ->>>>>>> Stashed changes return e * m; }), d, @@ -16694,18 +9322,8 @@ var Ad = { r ]); let h = 1 / m, g = d ? d.slice(0) : null; -<<<<<<< Updated upstream -<<<<<<< Updated upstream g && (g[1] = Uc), this.hitDetectionInstructions.push([ X.DRAW_IMAGE, -======= - g && (g[1] = dc), this.hitDetectionInstructions.push([ - Y.DRAW_IMAGE, ->>>>>>> Stashed changes -======= - g && (g[1] = dc), this.hitDetectionInstructions.push([ - Y.DRAW_IMAGE, ->>>>>>> Stashed changes s, i, null, @@ -16727,15 +9345,7 @@ var Ad = { this.text_, this.textKey_, this.strokeKey_, -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.fillKey_ ? Uc : this.fillKey_, -======= - this.fillKey_ ? dc : this.fillKey_, ->>>>>>> Stashed changes -======= - this.fillKey_ ? dc : this.fillKey_, ->>>>>>> Stashed changes this.textOffsetX_, this.textOffsetY_, r @@ -16767,17 +9377,9 @@ var Ad = { drawChars_(e, t) { let n = this.textStrokeState_, r = this.textState_, i = this.strokeKey_, a = this.textKey_, o = this.fillKey_; this.saveTextStates_(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream let s = this.pixelRatio, c = od[r.textBaseline], l = this.textOffsetX_ * s, u = this.textOffsetY_ * s, d = this.text_, f = n ? n.lineWidth * Math.abs(r.scale[0]) / 2 : 0; -======= - let s = this.pixelRatio, c = Ad[r.textBaseline], l = this.textOffsetX_ * s, u = this.textOffsetY_ * s, d = this.text_, f = n ? n.lineWidth * Math.abs(r.scale[0]) / 2 : 0; ->>>>>>> Stashed changes -======= - let s = this.pixelRatio, c = Ad[r.textBaseline], l = this.textOffsetX_ * s, u = this.textOffsetY_ * s, d = this.text_, f = n ? n.lineWidth * Math.abs(r.scale[0]) / 2 : 0; ->>>>>>> Stashed changes this.instructions.push([ - Y.DRAW_CHARS, + X.DRAW_CHARS, e, t, c, @@ -16795,20 +9397,12 @@ var Ad = { this.textKeepUpright_, l ]), this.hitDetectionInstructions.push([ - Y.DRAW_CHARS, + X.DRAW_CHARS, e, t, c, r.overflow, -<<<<<<< Updated upstream -<<<<<<< Updated upstream o && Uc, -======= - o && dc, ->>>>>>> Stashed changes -======= - o && dc, ->>>>>>> Stashed changes r.maxAngle, s, u, @@ -16827,22 +9421,12 @@ var Ad = { if (!e) this.text_ = ""; else { let t = e.getFill(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream t ? (r = this.textFillState_, r || (r = {}, this.textFillState_ = r), r.fillStyle = Bc(t.getColor() || "#000")) : (r = null, this.textFillState_ = r); -======= - t ? (r = this.textFillState_, r || (r = {}, this.textFillState_ = r), r.fillStyle = cc(t.getColor() || "#000")) : (r = null, this.textFillState_ = r); ->>>>>>> Stashed changes -======= - t ? (r = this.textFillState_, r || (r = {}, this.textFillState_ = r), r.fillStyle = cc(t.getColor() || "#000")) : (r = null, this.textFillState_ = r); ->>>>>>> Stashed changes let a = e.getStroke(); if (!a) i = null, this.textStrokeState_ = i; else { i = this.textStrokeState_, i || (i = {}, this.textStrokeState_ = i); let e = a.getLineDash(), t = a.getLineDashOffset(), n = a.getWidth(), r = a.getMiterLimit(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream i.lineCap = a.getLineCap() || "round", i.lineDash = e ? e.slice() : Gc, i.lineDashOffset = t === void 0 ? 0 : t, i.lineJoin = a.getLineJoin() || "round", i.lineWidth = n === void 0 ? 1 : n, i.miterLimit = r === void 0 ? 10 : r, i.strokeStyle = Bc(a.getColor() || "#000"); } n = this.textState_; @@ -16850,39 +9434,13 @@ var Ad = { rl(o); let s = e.getScaleArray(); n.overflow = e.getOverflow(), n.font = o, n.maxAngle = e.getMaxAngle(), n.placement = e.getPlacement(), n.textAlign = e.getTextAlign(), n.repeat = e.getRepeat(), n.justify = e.getJustify(), n.textBaseline = e.getTextBaseline() || "middle", n.backgroundFill = e.getBackgroundFill(), n.backgroundStroke = e.getBackgroundStroke(), n.padding = e.getPadding() || Xc, n.scale = s === void 0 ? [1, 1] : s; -======= - i.lineCap = a.getLineCap() || "round", i.lineDash = e ? e.slice() : pc, i.lineDashOffset = t === void 0 ? 0 : t, i.lineJoin = a.getLineJoin() || "round", i.lineWidth = n === void 0 ? 1 : n, i.miterLimit = r === void 0 ? 10 : r, i.strokeStyle = cc(a.getColor() || "#000"); - } - n = this.textState_; - let o = e.getFont() || "10px sans-serif"; - Tc(o); - let s = e.getScaleArray(); - n.overflow = e.getOverflow(), n.font = o, n.maxAngle = e.getMaxAngle(), n.placement = e.getPlacement(), n.textAlign = e.getTextAlign(), n.repeat = e.getRepeat(), n.justify = e.getJustify(), n.textBaseline = e.getTextBaseline() || "middle", n.backgroundFill = e.getBackgroundFill(), n.backgroundStroke = e.getBackgroundStroke(), n.padding = e.getPadding() || vc, n.scale = s === void 0 ? [1, 1] : s; ->>>>>>> Stashed changes -======= - i.lineCap = a.getLineCap() || "round", i.lineDash = e ? e.slice() : pc, i.lineDashOffset = t === void 0 ? 0 : t, i.lineJoin = a.getLineJoin() || "round", i.lineWidth = n === void 0 ? 1 : n, i.miterLimit = r === void 0 ? 10 : r, i.strokeStyle = cc(a.getColor() || "#000"); - } - n = this.textState_; - let o = e.getFont() || "10px sans-serif"; - Tc(o); - let s = e.getScaleArray(); - n.overflow = e.getOverflow(), n.font = o, n.maxAngle = e.getMaxAngle(), n.placement = e.getPlacement(), n.textAlign = e.getTextAlign(), n.repeat = e.getRepeat(), n.justify = e.getJustify(), n.textBaseline = e.getTextBaseline() || "middle", n.backgroundFill = e.getBackgroundFill(), n.backgroundStroke = e.getBackgroundStroke(), n.padding = e.getPadding() || vc, n.scale = s === void 0 ? [1, 1] : s; ->>>>>>> Stashed changes let c = e.getOffsetX(), l = e.getOffsetY(), u = e.getRotateWithView(), d = e.getKeepUpright(), f = e.getRotation(); this.text_ = e.getText() || "", this.textOffsetX_ = c === void 0 ? 0 : c, this.textOffsetY_ = l === void 0 ? 0 : l, this.textRotateWithView_ = u !== void 0 && u, this.textKeepUpright_ = d === void 0 || d, this.textRotation_ = f === void 0 ? 0 : f, this.strokeKey_ = i ? (typeof i.strokeStyle == "string" ? i.strokeStyle : O(i.strokeStyle)) + i.lineCap + i.lineDashOffset + "|" + i.lineWidth + i.lineJoin + i.miterLimit + "[" + i.lineDash.join() + "]" : "", this.textKey_ = n.font + n.scale + (n.textAlign || "?") + (n.repeat || "?") + (n.justify || "?") + (n.textBaseline || "?"), this.fillKey_ = r && r.fillStyle ? typeof r.fillStyle == "string" ? r.fillStyle : "|" + O(r.fillStyle) : ""; } this.declutterMode_ = e.getDeclutterMode(), this.declutterImageWithText_ = t; } } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, cd = class { -======= -}, Md = class { ->>>>>>> Stashed changes -======= -}, Md = class { ->>>>>>> Stashed changes constructor(e, t, n, r) { this.tolerance_ = e, this.maxExtent_ = t, this.pixelRatio_ = r, this.resolution_ = n, this.buildersByZIndex_ = {}; } @@ -16903,15 +9461,7 @@ var Ad = { r === void 0 && (r = {}, this.buildersByZIndex_[n] = r); let i = r[t]; if (i === void 0) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let e = sd[t]; -======= - let e = jd[t]; ->>>>>>> Stashed changes -======= - let e = jd[t]; ->>>>>>> Stashed changes i = new e(this.tolerance_, this.maxExtent_, this.resolution_, this.pixelRatio_), r[t] = i; } return i; @@ -16919,15 +9469,7 @@ var Ad = { }; //#endregion //#region node_modules/ol/geom/flat/length.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function ld(e, t, n, r) { -======= -function Nd(e, t, n, r) { ->>>>>>> Stashed changes -======= -function Nd(e, t, n, r) { ->>>>>>> Stashed changes let i = e[t], a = e[t + 1], o = 0; for (let s = t + r; s < n; s += r) { let t = e[s], n = e[s + 1]; @@ -16937,40 +9479,16 @@ function Nd(e, t, n, r) { } //#endregion //#region node_modules/ol/geom/flat/lineoffset.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function ud(e, t, n, r, i, a, o, s) { o ??= [], s ??= r; let c = e[t + r], l = e[t + r + 1], u = e[n - 2 * r], d = e[n - 2 * r + 1], f, p, m, h, g, _, v, y, b = 0; for (let x = t; x < n; x += r) { m = f, h = p, g = void 0, _ = void 0, x + r < n && (g = e[x + r], _ = e[x + r + 1]), a && x === t && (m = u, h = d), a && x === n - r && (g = c, _ = l), f = e[x], p = e[x + 1], [v, y] = dd(f, p, m, h, g, _, i), o[b++] = v, o[b++] = y; -======= -function Pd(e, t, n, r, i, a, o, s) { - o ??= [], s ??= r; - let c = e[t + r], l = e[t + r + 1], u = e[n - 2 * r], d = e[n - 2 * r + 1], f, p, m, h, g, _, v, y, b = 0; - for (let x = t; x < n; x += r) { - m = f, h = p, g = void 0, _ = void 0, x + r < n && (g = e[x + r], _ = e[x + r + 1]), a && x === t && (m = u, h = d), a && x === n - r && (g = c, _ = l), f = e[x], p = e[x + 1], [v, y] = Fd(f, p, m, h, g, _, i), o[b++] = v, o[b++] = y; ->>>>>>> Stashed changes -======= -function Pd(e, t, n, r, i, a, o, s) { - o ??= [], s ??= r; - let c = e[t + r], l = e[t + r + 1], u = e[n - 2 * r], d = e[n - 2 * r + 1], f, p, m, h, g, _, v, y, b = 0; - for (let x = t; x < n; x += r) { - m = f, h = p, g = void 0, _ = void 0, x + r < n && (g = e[x + r], _ = e[x + r + 1]), a && x === t && (m = u, h = d), a && x === n - r && (g = c, _ = l), f = e[x], p = e[x + 1], [v, y] = Fd(f, p, m, h, g, _, i), o[b++] = v, o[b++] = y; ->>>>>>> Stashed changes for (let t = 2; t < s; t++) o[b++] = e[x + t]; } return o.length != b && (o.length = b), o; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function dd(e, t, n, r, i, a, o) { -======= -function Fd(e, t, n, r, i, a, o) { ->>>>>>> Stashed changes -======= -function Fd(e, t, n, r, i, a, o) { ->>>>>>> Stashed changes let s, c; n !== void 0 && r !== void 0 ? (s = e - n, c = t - r) : i !== void 0 && a !== void 0 ? (s = i - e, c = a - t) : (s = 1, c = 0); let l = Math.hypot(s, c), u = s / l, d = c / l; @@ -16980,15 +9498,7 @@ function Fd(e, t, n, r, i, a, o) { let p = Math.cos(f / 2), m = Math.sin(f / 2), h = m * s + p * c, g = -p * s + m * c, _ = 1 / m * h, v = 1 / m * g; return [e + _ * o, t + v * o]; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function fd(e, t, n = !1) { -======= -function Id(e, t, n = !1) { ->>>>>>> Stashed changes -======= -function Id(e, t, n = !1) { ->>>>>>> Stashed changes for (let r = 0, i = e.length - 2; r < i; r += t) { let i = n && r === 0 ? e.length - 3 * t : e.length - 2 * t; for (let n = i; n > r + t; n -= t) { @@ -17006,27 +9516,11 @@ function Id(e, t, n = !1) { } //#endregion //#region node_modules/ol/geom/flat/textpath.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var pd; function md() { return pd ||= new Intl.Segmenter(void 0, { granularity: "grapheme" }), pd; } function hd(e, t, n, r, i, a, o, s, c, l, u, d, f = !0) { -======= -var Ld; -function Rd() { - return Ld ||= new Intl.Segmenter(void 0, { granularity: "grapheme" }), Ld; -} -function zd(e, t, n, r, i, a, o, s, c, l, u, d, f = !0) { ->>>>>>> Stashed changes -======= -var Ld; -function Rd() { - return Ld ||= new Intl.Segmenter(void 0, { granularity: "grapheme" }), Ld; -} -function zd(e, t, n, r, i, a, o, s, c, l, u, d, f = !0) { ->>>>>>> Stashed changes let p = e[t], m = e[t + 1], h = 0, g = 0, _ = 0, v = 0; function y() { h = p, g = m, t += r, p = e[t], m = e[t + 1], v += _, _ = Math.sqrt((p - h) * (p - h) + (m - g) * (m - g)); @@ -17046,16 +9540,8 @@ function zd(e, t, n, r, i, a, o, s, c, l, u, d, f = !0) { E, D ]; -<<<<<<< Updated upstream -<<<<<<< Updated upstream ca(e, 0, 4, 2, d, e, e), O = e[0] > e[2]; } else O = x > E; -======= -======= ->>>>>>> Stashed changes - ci(e, 0, 4, 2, d, e, e), D = e[0] > e[2]; - } else D = x > E; ->>>>>>> Stashed changes } let k = Math.PI, A = [], j = C + r === t; t = C, _ = 0, v = w, p = e[t], m = e[t + 1]; @@ -17068,16 +9554,8 @@ function zd(e, t, n, r, i, a, o, s, c, l, u, d, f = !0) { i ], A; i = i.replace(/\n/g, " "); -<<<<<<< Updated upstream -<<<<<<< Updated upstream let N = Array.from(md().segment(i), (e) => e.segment); for (let e = 0, i = N.length; e < i;) { -======= -======= ->>>>>>> Stashed changes - let ne = Array.from(Rd().segment(i), (e) => e.segment); - for (let e = 0, i = ne.length; e < i;) { ->>>>>>> Stashed changes y(); let d = Math.atan2(m - g, p - h); if (O && (d += d > 0 ? -k : k), M !== void 0) { @@ -17107,8 +9585,6 @@ function zd(e, t, n, r, i, a, o, s, c, l, u, d, f = !0) { } //#endregion //#region node_modules/ol/render/canvas/Executor.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var gd = at(), _d = [], vd = [], yd = [], bd = []; function xd(e) { return e[3].declutterBox; @@ -17126,44 +9602,6 @@ function Td(e, t, n) { var Ed = class { constructor(e, t, n, r, i) { this.overlaps = n, this.pixelRatio = t, this.resolution = e, this.alignAndScaleFill_, this.instructions = r.instructions, this.coordinates = r.coordinates, this.coordinateCache_ = {}, this.renderedTransform_ = Kr(), this.hitDetectionInstructions = r.hitDetectionInstructions, this.pixelCoordinates_ = null, this.viewRotation_ = 0, this.fillStates = r.fillStates || {}, this.strokeStates = r.strokeStates || {}, this.textStates = r.textStates || {}, this.widths_ = {}, this.labels_ = {}, this.zIndexContext_ = i ? new qi() : null; -======= -var Bd = We(), Vd = [], Hd = [], Ud = [], Wd = []; -function Gd(e) { - return e[3].declutterBox; -} -var Kd = /* @__PURE__ */ RegExp("[֑-ࣿיִ-﷿ﹰ-ﻼࠀ-࿿-]"); -function qd(e, t) { - return t === "start" ? t = Kd.test(e) ? "right" : "left" : t === "end" && (t = Kd.test(e) ? "left" : "right"), Ad[t]; -} -function Jd(e, t, n) { - return n > 0 && e.push("\n", ""), e.push(t, ""), e; -} -function Yd(e, t, n) { - return n % 2 == 0 && (e += t), e; -} -var Xd = class { - constructor(e, t, n, r, i) { - this.overlaps = n, this.pixelRatio = t, this.resolution = e, this.alignAndScaleFill_, this.instructions = r.instructions, this.coordinates = r.coordinates, this.coordinateCache_ = {}, this.renderedTransform_ = qr(), this.hitDetectionInstructions = r.hitDetectionInstructions, this.pixelCoordinates_ = null, this.viewRotation_ = 0, this.fillStates = r.fillStates || {}, this.strokeStates = r.strokeStates || {}, this.textStates = r.textStates || {}, this.widths_ = {}, this.labels_ = {}, this.zIndexContext_ = i ? new wu() : null; ->>>>>>> Stashed changes -======= -var Bd = We(), Vd = [], Hd = [], Ud = [], Wd = []; -function Gd(e) { - return e[3].declutterBox; -} -var Kd = /* @__PURE__ */ RegExp("[֑-ࣿיִ-﷿ﹰ-ﻼࠀ-࿿-]"); -function qd(e, t) { - return t === "start" ? t = Kd.test(e) ? "right" : "left" : t === "end" && (t = Kd.test(e) ? "left" : "right"), Ad[t]; -} -function Jd(e, t, n) { - return n > 0 && e.push("\n", ""), e.push(t, ""), e; -} -function Yd(e, t, n) { - return n % 2 == 0 && (e += t), e; -} -var Xd = class { - constructor(e, t, n, r, i) { - this.overlaps = n, this.pixelRatio = t, this.resolution = e, this.alignAndScaleFill_, this.instructions = r.instructions, this.coordinates = r.coordinates, this.coordinateCache_ = {}, this.renderedTransform_ = qr(), this.hitDetectionInstructions = r.hitDetectionInstructions, this.pixelCoordinates_ = null, this.viewRotation_ = 0, this.fillStates = r.fillStates || {}, this.strokeStates = r.strokeStates || {}, this.textStates = r.textStates || {}, this.widths_ = {}, this.labels_ = {}, this.zIndexContext_ = i ? new wu() : null; ->>>>>>> Stashed changes } getZIndexContext() { return this.zIndexContext_; @@ -17171,15 +9609,7 @@ var Xd = class { createLabel(e, t, n, r) { let i = e + t + n + r; if (this.labels_[i]) return this.labels_[i]; -<<<<<<< Updated upstream -<<<<<<< Updated upstream let a = r ? this.strokeStates[r] : null, o = n ? this.fillStates[n] : null, s = this.textStates[t], c = this.pixelRatio, l = [s.scale[0] * c, s.scale[1] * c], u = s.justify ? od[s.justify] : Cd(Array.isArray(e) ? e[0] : e, s.textAlign || "center"), d = r && a.lineWidth ? a.lineWidth : 0, f = Array.isArray(e) ? e : String(e).split("\n").reduce(wd, []), { width: p, height: m, widths: h, heights: g, lineWidths: _ } = cl(s, f), v = p + d, y = [], b = (v + 2) * l[0], x = (m + d) * l[1], S = { -======= - let a = r ? this.strokeStates[r] : null, o = n ? this.fillStates[n] : null, s = this.textStates[t], c = this.pixelRatio, l = [s.scale[0] * c, s.scale[1] * c], u = s.justify ? Ad[s.justify] : qd(Array.isArray(e) ? e[0] : e, s.textAlign || "center"), d = r && a.lineWidth ? a.lineWidth : 0, f = Array.isArray(e) ? e : String(e).split("\n").reduce(Jd, []), { width: p, height: m, widths: h, heights: g, lineWidths: _ } = Ac(s, f), v = p + d, y = [], b = (v + 2) * l[0], x = (m + d) * l[1], S = { ->>>>>>> Stashed changes -======= - let a = r ? this.strokeStates[r] : null, o = n ? this.fillStates[n] : null, s = this.textStates[t], c = this.pixelRatio, l = [s.scale[0] * c, s.scale[1] * c], u = s.justify ? Ad[s.justify] : qd(Array.isArray(e) ? e[0] : e, s.textAlign || "center"), d = r && a.lineWidth ? a.lineWidth : 0, f = Array.isArray(e) ? e : String(e).split("\n").reduce(Jd, []), { width: p, height: m, widths: h, heights: g, lineWidths: _ } = Ac(s, f), v = p + d, y = [], b = (v + 2) * l[0], x = (m + d) * l[1], S = { ->>>>>>> Stashed changes width: b < 0 ? Math.floor(b) : Math.ceil(b), height: x < 0 ? Math.floor(x) : Math.ceil(x), contextInstructions: y @@ -17209,21 +9639,9 @@ var Xd = class { calculateImageOrLabelDimensions_(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h) { o *= d[0], s *= d[1]; let g = n - o, _ = r - s, v = i + c > e ? e - c : i, y = a + l > t ? t - l : a, b = p[3] + v * d[0] + p[1], x = p[0] + y * d[1] + p[2], S = g - p[3], C = _ - p[0]; -<<<<<<< Updated upstream -<<<<<<< Updated upstream (m || u !== 0) && (_d[0] = S, bd[0] = S, _d[1] = C, vd[1] = C, vd[0] = S + b, yd[0] = vd[0], yd[1] = C + x, bd[1] = yd[1]); let w; return u === 0 ? ot(Math.min(S, S + b), Math.min(C, C + x), Math.max(S, S + b), Math.max(C, C + x), gd) : (w = $r(Kr(), n, r, 1, 1, u, -n, -r), B(w, _d), B(w, vd), B(w, yd), B(w, bd), ot(Math.min(_d[0], vd[0], yd[0], bd[0]), Math.min(_d[1], vd[1], yd[1], bd[1]), Math.max(_d[0], vd[0], yd[0], bd[0]), Math.max(_d[1], vd[1], yd[1], bd[1]), gd)), f && (g = Math.round(g), _ = Math.round(_)), { -======= - (m || u !== 0) && (Vd[0] = S, Wd[0] = S, Vd[1] = C, Hd[1] = C, Hd[0] = S + b, Ud[0] = Hd[0], Ud[1] = C + x, Wd[1] = Ud[1]); - let w; - return u === 0 ? Ge(Math.min(S, S + b), Math.min(C, C + x), Math.max(S, S + b), Math.max(C, C + x), Bd) : (w = ei(qr(), n, r, 1, 1, u, -n, -r), z(w, Vd), z(w, Hd), z(w, Ud), z(w, Wd), Ge(Math.min(Vd[0], Hd[0], Ud[0], Wd[0]), Math.min(Vd[1], Hd[1], Ud[1], Wd[1]), Math.max(Vd[0], Hd[0], Ud[0], Wd[0]), Math.max(Vd[1], Hd[1], Ud[1], Wd[1]), Bd)), f && (g = Math.round(g), _ = Math.round(_)), { ->>>>>>> Stashed changes -======= - (m || u !== 0) && (Vd[0] = S, Wd[0] = S, Vd[1] = C, Hd[1] = C, Hd[0] = S + b, Ud[0] = Hd[0], Ud[1] = C + x, Wd[1] = Ud[1]); - let w; - return u === 0 ? Ge(Math.min(S, S + b), Math.min(C, C + x), Math.max(S, S + b), Math.max(C, C + x), Bd) : (w = ei(qr(), n, r, 1, 1, u, -n, -r), z(w, Vd), z(w, Hd), z(w, Ud), z(w, Wd), Ge(Math.min(Vd[0], Hd[0], Ud[0], Wd[0]), Math.min(Vd[1], Hd[1], Ud[1], Wd[1]), Math.max(Vd[0], Hd[0], Ud[0], Wd[0]), Math.max(Vd[1], Hd[1], Ud[1], Wd[1]), Bd)), f && (g = Math.round(g), _ = Math.round(_)), { ->>>>>>> Stashed changes drawImageX: g, drawImageY: _, drawImageW: v, @@ -17231,23 +9649,10 @@ var Xd = class { originX: c, originY: l, declutterBox: { -<<<<<<< Updated upstream -<<<<<<< Updated upstream minX: gd[0], minY: gd[1], maxX: gd[2], maxY: gd[3], -======= -======= ->>>>>>> Stashed changes - minX: Bd[0], - minY: Bd[1], - maxX: Bd[2], - maxY: Bd[3], -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes value: h }, canvasTransform: w, @@ -17256,20 +9661,12 @@ var Xd = class { } replayImageOrLabel_(e, t, n, r, i, a, o) { let s = !!(a || o), c = r.declutterBox, l = o ? o[2] * r.scale[0] / 2 : 0; -<<<<<<< Updated upstream -<<<<<<< Updated upstream return c.minX - l <= t[0] && c.maxX + l >= 0 && c.minY - l <= t[1] && c.maxY + l >= 0 && (s && this.replayTextBackground_(e, _d, vd, yd, bd, a, o), ll(e, r.canvasTransform, i, n, r.originX, r.originY, r.drawImageW, r.drawImageH, r.drawImageX, r.drawImageY, r.scale)), !0; -======= - return c.minX - l <= t[0] && c.maxX + l >= 0 && c.minY - l <= t[1] && c.maxY + l >= 0 && (s && this.replayTextBackground_(e, Vd, Hd, Ud, Wd, a, o), jc(e, r.canvasTransform, i, n, r.originX, r.originY, r.drawImageW, r.drawImageH, r.drawImageX, r.drawImageY, r.scale)), !0; ->>>>>>> Stashed changes -======= - return c.minX - l <= t[0] && c.maxX + l >= 0 && c.minY - l <= t[1] && c.maxY + l >= 0 && (s && this.replayTextBackground_(e, Vd, Hd, Ud, Wd, a, o), jc(e, r.canvasTransform, i, n, r.originX, r.originY, r.drawImageW, r.drawImageH, r.drawImageX, r.drawImageY, r.scale)), !0; ->>>>>>> Stashed changes } fill_(e) { let t = this.alignAndScaleFill_; if (t) { - let n = z(this.renderedTransform_, [0, 0]), r = 512 * this.pixelRatio; + let n = B(this.renderedTransform_, [0, 0]), r = 512 * this.pixelRatio; e.save(), e.translate(n[0] % r, n[1] % r), t !== 1 && e.scale(t, t); } e.fill(), t && e.restore(); @@ -17278,15 +9675,7 @@ var Xd = class { e.strokeStyle = t[1], t[1] && (e.lineWidth = t[2], e.lineCap = t[3], e.lineJoin = t[4], e.miterLimit = t[5], e.lineDashOffset = t[7], e.setLineDash(t[6])); } drawLabelWithPointPlacement_(e, t, n, r) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let i = this.textStates[t], a = this.createLabel(e, t, r, n), o = this.strokeStates[n], s = this.pixelRatio, c = Cd(Array.isArray(e) ? e[0] : e, i.textAlign || "center"), l = od[i.textBaseline || "middle"], u = o && o.lineWidth ? o.lineWidth : 0; -======= - let i = this.textStates[t], a = this.createLabel(e, t, r, n), o = this.strokeStates[n], s = this.pixelRatio, c = qd(Array.isArray(e) ? e[0] : e, i.textAlign || "center"), l = Ad[i.textBaseline || "middle"], u = o && o.lineWidth ? o.lineWidth : 0; ->>>>>>> Stashed changes -======= - let i = this.textStates[t], a = this.createLabel(e, t, r, n), o = this.strokeStates[n], s = this.pixelRatio, c = qd(Array.isArray(e) ? e[0] : e, i.textAlign || "center"), l = Ad[i.textBaseline || "middle"], u = o && o.lineWidth ? o.lineWidth : 0; ->>>>>>> Stashed changes return { label: a, anchorX: c * (a.width / s - 2 * i.scale[0]) + 2 * (.5 - c) * u, @@ -17295,16 +9684,8 @@ var Xd = class { } execute_(e, t, n, r, i, a, o, s) { let c = this.zIndexContext_, l; -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.pixelCoordinates_ && h(n, this.renderedTransform_) ? l = this.pixelCoordinates_ : (this.pixelCoordinates_ ||= [], l = sa(this.coordinates, 0, this.coordinates.length, 2, n, this.pixelCoordinates_), Xr(this.renderedTransform_, n)); let u = 0, d = r.length, f = 0, p, m = [], g, _, v, y, b, x, S, C, w, T, E, D, O, k = 0, A = 0, j = this.coordinateCache_, M = this.viewRotation_, N = Math.round(Math.atan2(-n[1], n[0]) * 0xe8d4a51000) / 0xe8d4a51000, ee = { -======= -======= ->>>>>>> Stashed changes - this.pixelCoordinates_ && de(n, this.renderedTransform_) ? l = this.pixelCoordinates_ : (this.pixelCoordinates_ ||= [], l = si(this.coordinates, 0, this.coordinates.length, 2, n, this.pixelCoordinates_), Zr(this.renderedTransform_, n)); - let u = 0, d = r.length, f = 0, p, m = [], h, g, _, v, y, b, x, S, C, w, T, E, ee, D = 0, O = 0, k = this.coordinateCache_, te = this.viewRotation_, A = Math.round(Math.atan2(-n[1], n[0]) * 0xe8d4a51000) / 0xe8d4a51000, ne = { ->>>>>>> Stashed changes context: e, pixelRatio: this.pixelRatio, resolution: this.resolution, @@ -17313,8 +9694,6 @@ var Xd = class { for (; u < d;) { let n = r[u]; switch (n[0]) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream case X.BEGIN_GEOMETRY: F = n[1], re = n[3], F.getGeometry() ? o !== void 0 && !Ot(o, re.getExtent()) ? u = n[2] + 1 : ++u : u = n[2], c && (c.zIndex = n[4]); break; @@ -17325,39 +9704,17 @@ var Xd = class { f = n[1], v = n[2] ?? 0; let r = l[f], d = l[f + 1], h = l[f + 2] - v, ie = l[f + 3] - v, ae = h - r, oe = ie - d, se = Math.sqrt(ae * ae + oe * oe); e.moveTo(r + se, d), e.arc(r, d, se, 0, 2 * Math.PI, !0), ++u; -======= - case Y.BEGIN_GEOMETRY: - M = n[1], ie = n[3], M.getGeometry() ? o !== void 0 && !pt(o, ie.getExtent()) ? u = n[2] + 1 : ++u : u = n[2], c && (c.zIndex = n[4]); - break; - case Y.BEGIN_PATH: - D > j && (this.fill_(e), D = 0), O > j && (e.stroke(), O = 0), !D && !O && (e.beginPath(), y = NaN, b = NaN), ++u; - break; -======= - case Y.BEGIN_GEOMETRY: - M = n[1], ie = n[3], M.getGeometry() ? o !== void 0 && !pt(o, ie.getExtent()) ? u = n[2] + 1 : ++u : u = n[2], c && (c.zIndex = n[4]); break; - case Y.BEGIN_PATH: - D > j && (this.fill_(e), D = 0), O > j && (e.stroke(), O = 0), !D && !O && (e.beginPath(), y = NaN, b = NaN), ++u; - break; ->>>>>>> Stashed changes - case Y.CIRCLE: - f = n[1], _ = n[2] ?? 0; - let r = l[f], d = l[f + 1], ae = l[f + 2] - _, oe = l[f + 3] - _, se = ae - r, ce = oe - d, le = Math.sqrt(se * se + ce * ce); - e.moveTo(r + le, d), e.arc(r, d, le, 0, 2 * Math.PI, !0), ++u; ->>>>>>> Stashed changes - break; - case Y.CLOSE_PATH: + case X.CLOSE_PATH: e.closePath(), ++u; break; - case Y.CUSTOM: + case X.CUSTOM: f = n[1], p = n[2]; let ce = n[3], le = n[4], ue = n[5]; ee.geometry = ce, ee.feature = F, u in j || (j[u] = []); let de = j[u]; ue ? ue(l, f, p, 2, de) : (de[0] = l[f], de[1] = l[f + 1], de.length = 2), c && (c.zIndex = n[6]), le(de, ee), ++u; break; -<<<<<<< Updated upstream -<<<<<<< Updated upstream case X.DRAW_IMAGE: f = n[1], p = n[2], w = n[3], g = n[4], _ = n[5]; let fe = n[6], pe = n[7], me = n[8], he = n[9], ge = n[10], _e = n[11], ve = n[12], ye = n[13]; @@ -17367,38 +9724,15 @@ var Xd = class { T = n[19], E = n[20], D = n[21], O = n[22]; let e = this.drawLabelWithPointPlacement_(T, E, D, O); w = e.label, n[3] = w; -======= -======= ->>>>>>> Stashed changes - case Y.DRAW_IMAGE: - f = n[1], p = n[2], C = n[3], h = n[4], g = n[5]; - let me = n[6], he = n[7], ge = n[8], _e = n[9], ve = n[10], ye = n[11], be = n[12], xe = n[13]; - v = n[14] || "declutter"; - let P = n[15]; - if (!C && n.length >= 20) { - w = n[19], T = n[20], E = n[21], ee = n[22]; - let e = this.drawLabelWithPointPlacement_(w, T, E, ee); - C = e.label, n[3] = C; ->>>>>>> Stashed changes let t = n[23]; g = (e.anchorX - t) * this.pixelRatio, n[4] = g; let r = n[24]; _ = (e.anchorY - r) * this.pixelRatio, n[5] = _, fe = w.height, n[6] = fe, ye = w.width, n[13] = ye; } -<<<<<<< Updated upstream let xe; n.length > 25 && (xe = n[25]); let Se, Ce, we; n.length > 17 ? (Se = n[16], Ce = n[17], we = n[18]) : (Se = Xc, Ce = null, we = null), ge && N ? _e += M : !ge && !N && (_e -= M); -======= - let Se; - n.length > 25 && (Se = n[25]); - let F, Ce, we; - n.length > 17 ? (F = n[16], Ce = n[17], we = n[18]) : (F = vc, Ce = null, we = null), ve && A ? ye += te : !ve && !A && (ye -= te); -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes let Te = 0; for (; f < p; f += 2) { if (xe && xe[Te++] < ye / this.pixelRatio) continue; @@ -17422,16 +9756,8 @@ var Xd = class { }; continue; } -<<<<<<< Updated upstream let a = be[n]; e = a.args, t = a.declutterMode, delete be[n], i = xd(e); -======= - let a = P[n]; - e = a.args, t = a.declutterMode, delete P[n], i = Gd(e); -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes } let a, o; if (e && (t !== "declutter" || !s.collides(i)) && (a = !0), (y !== "declutter" || !s.collides(n.declutterBox)) && (o = !0), t === "declutter" && y === "declutter") { @@ -17443,14 +9769,12 @@ var Xd = class { } ++u; break; - case Y.DRAW_CHARS: + case X.DRAW_CHARS: let Ee = n[1], De = n[2], Oe = n[3], ke = n[4]; O = n[5]; let Ae = n[6], je = n[7], Me = n[8]; D = n[9]; let Ne = n[10]; -<<<<<<< Updated upstream -<<<<<<< Updated upstream T = n[11], Array.isArray(T) && (T = T.reduce(Td, "")), E = n[12]; let Pe = [n[13], n[13]]; y = n[14] || "declutter"; @@ -17465,24 +9789,6 @@ var Xd = class { l = i[r], o = l[4], c = this.createLabel(o, E, "", D), g = l[2] + (Re[0] < 0 ? -Ne : Ne) - Ie, _ = Oe * c.height + (.5 - Oe) * 2 * Ne * Re[1] / Re[0] - Me; let a = this.calculateImageOrLabelDimensions_(c.width, c.height, l[0], l[1], c.width, c.height, g, _, 0, 0, l[3], Pe, !1, Xc, !1, F); if (s && y === "declutter" && s.collides(a.declutterBox)) break drawChars; -======= -======= ->>>>>>> Stashed changes - w = n[11], Array.isArray(w) && (w = w.reduce(Yd, "")), T = n[12]; - let Pe = [n[13], n[13]]; - v = n[14] || "declutter"; - let Fe = n[15], Ie = n[16], Le = this.textStates[T], Re = Le.font, ze = [Le.scale[0] * je, Le.scale[1] * je], Be; - Re in this.widths_ ? Be = this.widths_[Re] : (Be = {}, this.widths_[Re] = Be); - let Ve = Nd(l, Ee, De, 2), He = Math.abs(ze[0]) * kc(Re, w, Be); - if (ke || He <= Ve) { - let n = this.textStates[T].textAlign, r = (Ve - He) * qd(w, n), i = zd(l, Ee, De, 2, w, r, Ae, Math.abs(ze[0]), kc, Re, Be, A ? 0 : this.viewRotation_, Fe); - drawChars: if (i) { - let n = [], r, a, o, c, l; - if (E) for (r = 0, a = i.length; r < a; ++r) { - l = i[r], o = l[4], c = this.createLabel(o, T, "", E), h = l[2] + (ze[0] < 0 ? -Ne : Ne) - Ie, g = Oe * c.height + (.5 - Oe) * 2 * Ne * ze[1] / ze[0] - Me; - let a = this.calculateImageOrLabelDimensions_(c.width, c.height, l[0], l[1], c.width, c.height, h, g, 0, 0, l[3], Pe, !1, vc, !1, M); - if (s && v === "declutter" && s.collides(a.declutterBox)) break drawChars; ->>>>>>> Stashed changes n.push([ e, t, @@ -17493,17 +9799,10 @@ var Xd = class { null ]); } -<<<<<<< Updated upstream if (O) for (r = 0, a = i.length; r < a; ++r) { l = i[r], o = l[4], c = this.createLabel(o, E, O, ""), g = l[2] - Ie, _ = Oe * c.height - Me; let a = this.calculateImageOrLabelDimensions_(c.width, c.height, l[0], l[1], c.width, c.height, g, _, 0, 0, l[3], Pe, !1, Xc, !1, F); if (s && y === "declutter" && s.collides(a.declutterBox)) break drawChars; -======= - if (ee) for (r = 0, a = i.length; r < a; ++r) { - l = i[r], o = l[4], c = this.createLabel(o, T, ee, ""), h = l[2] - Ie, g = Oe * c.height - Me; - let a = this.calculateImageOrLabelDimensions_(c.width, c.height, l[0], l[1], c.width, c.height, h, g, 0, 0, l[3], Pe, !1, vc, !1, M); - if (s && v === "declutter" && s.collides(a.declutterBox)) break drawChars; ->>>>>>> Stashed changes n.push([ e, t, @@ -17514,21 +9813,13 @@ var Xd = class { null ]); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream s && y !== "none" && s.load(n.map(xd)); -======= - s && v !== "none" && s.load(n.map(Gd)); ->>>>>>> Stashed changes -======= - s && v !== "none" && s.load(n.map(Gd)); ->>>>>>> Stashed changes for (let e = 0, t = n.length; e < t; ++e) this.replayImageOrLabel_.apply(this, n[e]); } } ++u; break; - case Y.END_GEOMETRY: + case X.END_GEOMETRY: if (a !== void 0) { F = n[1]; let e = a(F, re, y); @@ -17536,8 +9827,6 @@ var Xd = class { } ++u; break; -<<<<<<< Updated upstream -<<<<<<< Updated upstream case X.FILL: P ? k++ : this.fill_(e), ++u; break; @@ -17560,35 +9849,6 @@ var Xd = class { break; case X.STROKE: P ? A++ : e.stroke(), ++u; -======= - case Y.FILL: - j ? D++ : this.fill_(e), ++u; - break; -======= - case Y.FILL: - j ? D++ : this.fill_(e), ++u; - break; ->>>>>>> Stashed changes - case Y.MOVE_TO_LINE_TO: - f = n[1], p = n[2], _ = n[3]; - let Ue, We, Ge; - if (_) { - let e = (n[4] ?? !1) || Math.abs(l[f] - l[p - 2]) < 1e-6 && Math.abs(l[f + 1] - l[p - 1]) < 1e-6; - Pd(l, f, p, 2, _, e, m), Id(m, 2, e), Ue = m, We = 0, Ge = Ue.length; - } else Ue = l, We = f, Ge = p; - N = Ue[We], re = Ue[We + 1], e.moveTo(N, re), y = N + .5 | 0, b = re + .5 | 0; - for (let t = We + 2; t < Ge; t += 2) N = Ue[t], re = Ue[t + 1], x = N + .5 | 0, S = re + .5 | 0, (t == Ge - 2 || x !== y || S !== b) && (e.lineTo(N, re), y = x, b = S); - ++u; - break; - case Y.SET_FILL_STYLE: - this.alignAndScaleFill_ = n[2], D ? (this.fill_(e), D = 0, O &&= (e.stroke(), 0)) : O && n[1] && (e.stroke(), O = 0), e.fillStyle = n[1], ++u; - break; - case Y.SET_STROKE_STYLE: - D && n[1] && (this.fill_(e), D = 0), O &&= (e.stroke(), 0), this.setStrokeStyle_(e, n), ++u; - break; - case Y.STROKE: - j ? O++ : e.stroke(), ++u; ->>>>>>> Stashed changes break; default: ++u; } @@ -17601,40 +9861,20 @@ var Xd = class { executeHitDetection(e, t, n, r, i) { return this.viewRotation_ = n, this.execute_(e, [e.canvas.width, e.canvas.height], t, this.hitDetectionInstructions, !0, r, i); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, Dd = [ -======= -}, Zd = [ ->>>>>>> Stashed changes -======= -}, Zd = [ ->>>>>>> Stashed changes "Polygon", "Circle", "LineString", "Image", "Text", "Default" -<<<<<<< Updated upstream -<<<<<<< Updated upstream ], Od = ["Image", "Text"], kd = Dd.filter((e) => !Od.includes(e)), Ad = !1, jd = !1; function Md() { -======= -], Qd = ["Image", "Text"], $d = Zd.filter((e) => !Qd.includes(e)), ef = !1, tf = !1; -function nf() { ->>>>>>> Stashed changes -======= -], Qd = ["Image", "Text"], $d = Zd.filter((e) => !Qd.includes(e)), ef = !1, tf = !1; -function nf() { ->>>>>>> Stashed changes let e = 0, t = (t) => { let n = ge(1, 1, null, { willReadFrequently: t }), r = 0, i = performance.now(); for (; performance.now() - i < 50; ++r) n.fillStyle = `rgba(255,0,${r % 256},1)`, n.fillRect(0, 0, 1, 1), n.getImageData(0, 0, 1, 1); return e = r > e ? r : e, r; }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream Ad = { [t(!0)]: !0, [t(!1)]: !1, @@ -17642,26 +9882,8 @@ function nf() { }[e], jd = !0; } var Nd = class { -======= - ef = { - [t(!0)]: !0, - [t(!1)]: !1, - [t(void 0)]: void 0 - }[e], tf = !0; -} -var rf = class { ->>>>>>> Stashed changes -======= - ef = { - [t(!0)]: !0, - [t(!1)]: !1, - [t(void 0)]: void 0 - }[e], tf = !0; -} -var rf = class { ->>>>>>> Stashed changes constructor(e, t, n, r, i, a, o) { - this.maxExtent_ = e, this.overlaps_ = r, this.pixelRatio_ = n, this.resolution_ = t, this.renderBuffer_ = a, this.executorsByZIndex_ = {}, this.hitDetectionContext_ = null, this.hitDetectionTransform_ = qr(), this.renderedContext_ = null, this.deferredZIndexContexts_ = {}, this.createExecutors_(i, o); + this.maxExtent_ = e, this.overlaps_ = r, this.pixelRatio_ = n, this.resolution_ = t, this.renderBuffer_ = a, this.executorsByZIndex_ = {}, this.hitDetectionContext_ = null, this.hitDetectionTransform_ = Kr(), this.renderedContext_ = null, this.deferredZIndexContexts_ = {}, this.createExecutors_(i, o); } clip(e, t) { let n = this.getClipCoords(t); @@ -17674,15 +9896,7 @@ var rf = class { let i = e[n]; for (let e in i) { let n = i[e]; -<<<<<<< Updated upstream -<<<<<<< Updated upstream r[e] = new Ed(this.resolution_, this.pixelRatio_, this.overlaps_, n, t); -======= - r[e] = new Xd(this.resolution_, this.pixelRatio_, this.overlaps_, n, t); ->>>>>>> Stashed changes -======= - r[e] = new Xd(this.resolution_, this.pixelRatio_, this.overlaps_, n, t); ->>>>>>> Stashed changes } } } @@ -17694,8 +9908,6 @@ var rf = class { return !1; } forEachFeatureAtCoordinate(e, t, n, r, i, a) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream jd === !1 && Md(), r = Math.round(r); let o = r * 2 + 1, s = $r(this.hitDetectionTransform_, r + .5, r + .5, 1 / t, -1 / t, -n, -e[0], -e[1]), c = !this.hitDetectionContext_; c && (this.hitDetectionContext_ = ge(o, o, null, { willReadFrequently: Ad })); @@ -17705,19 +9917,6 @@ var rf = class { this.renderBuffer_ !== void 0 && (d = at(), ft(d, e), Qe(d, t * (this.renderBuffer_ + r), d)); let f = Fd(r), p; function m(e, t, n) { -======= -======= ->>>>>>> Stashed changes - tf === !1 && nf(), r = Math.round(r); - let o = r * 2 + 1, s = ei(this.hitDetectionTransform_, r + .5, r + .5, 1 / t, -1 / t, -n, -e[0], -e[1]), c = !this.hitDetectionContext_; - c && (this.hitDetectionContext_ = y(o, o, null, { willReadFrequently: ef })); - let l = this.hitDetectionContext_; - l.canvas.width !== o || l.canvas.height !== o ? (l.canvas.width = o, l.canvas.height = o) : c || l.clearRect(0, 0, o, o); - let u; - this.renderBuffer_ !== void 0 && (u = We(), Ze(u, e), Le(u, t * (this.renderBuffer_ + r), u)); - let d = of(r), f; - function p(e, t, n) { ->>>>>>> Stashed changes let s = l.getImageData(0, 0, o, o).data; for (let c = 0, u = f.length; c < u; c++) if (s[f[c]] > 0) { if (!a || n === "none" || p !== "Image" && p !== "Text" || a.includes(e)) { @@ -17728,24 +9927,12 @@ var rf = class { break; } } -<<<<<<< Updated upstream let h = Object.keys(this.executorsByZIndex_).map(Number); h.sort(u); let g, _, v, y, b; for (g = h.length - 1; g >= 0; --g) { let e = h[g].toString(); for (v = this.executorsByZIndex_[e], _ = Dd.length - 1; _ >= 0; --_) if (p = Dd[_], y = v[p], y !== void 0 && (b = y.executeHitDetection(l, s, n, m, d), b)) return b; -======= - let m = Object.keys(this.executorsByZIndex_).map(Number); - m.sort(oe); - let h, g, _, v, b; - for (h = m.length - 1; h >= 0; --h) { - let e = m[h].toString(); - for (_ = this.executorsByZIndex_[e], g = Zd.length - 1; g >= 0; --g) if (f = Zd[g], v = _[f], v !== void 0 && (b = v.executeHitDetection(l, s, n, p, u), b)) return b; -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes } } getClipCoords(e) { @@ -17761,33 +9948,15 @@ var rf = class { i, r ]; -<<<<<<< Updated upstream -<<<<<<< Updated upstream return sa(o, 0, 8, 2, e, o), o; -======= - return si(o, 0, 8, 2, e, o), o; ->>>>>>> Stashed changes -======= - return si(o, 0, 8, 2, e, o), o; ->>>>>>> Stashed changes } isEmpty() { return r(this.executorsByZIndex_); } execute(e, t, n, r, i, a, o) { let s = Object.keys(this.executorsByZIndex_).map(Number); -<<<<<<< Updated upstream -<<<<<<< Updated upstream s.sort(o ? d : u), a ||= Dd; let c = Dd.length; -======= - s.sort(o ? se : oe), a ||= Zd; - let c = Zd.length; ->>>>>>> Stashed changes -======= - s.sort(o ? se : oe), a ||= Zd; - let c = Zd.length; ->>>>>>> Stashed changes for (let l = 0, u = s.length; l < u; ++l) { let u = s[l].toString(), d = this.executorsByZIndex_[u]; for (let u = 0, f = a.length; u < f; ++u) { @@ -17796,15 +9965,7 @@ var rf = class { let a = o === null ? void 0 : p.getZIndexContext(), u = a ? a.getContext() : e, d = this.maxExtent_ && f !== "Image" && f !== "Text"; if (d && (u.save(), this.clip(u, n)), !a || f === "Text" || f === "Image" ? p.execute(u, t, n, r, i, o) : a.pushFunction((e) => p.execute(e, t, n, r, i, o)), d && u.restore(), a) { a.offset(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream let e = s[l] * c + Dd.indexOf(f); -======= - let e = s[l] * c + Zd.indexOf(f); ->>>>>>> Stashed changes -======= - let e = s[l] * c + Zd.indexOf(f); ->>>>>>> Stashed changes this.deferredZIndexContexts_[e] || (this.deferredZIndexContexts_[e] = []), this.deferredZIndexContexts_[e].push(a); } } @@ -17824,21 +9985,9 @@ var rf = class { e.draw(this.renderedContext_), e.clear(); }), e[t[n]].length = 0; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, Pd = {}; function Fd(e) { if (Pd[e] !== void 0) return Pd[e]; -======= -}, af = {}; -function of(e) { - if (af[e] !== void 0) return af[e]; ->>>>>>> Stashed changes -======= -}, af = {}; -function of(e) { - if (af[e] !== void 0) return af[e]; ->>>>>>> Stashed changes let t = e * 2 + 1, n = e * e, r = Array(n + 1); for (let i = 0; i <= e; ++i) for (let a = 0; a <= e; ++a) { let o = i * i + a * a; @@ -17848,8 +9997,6 @@ function of(e) { } let i = []; for (let e = 0, t = r.length; e < t; ++e) r[e] && i.push(...r[e]); -<<<<<<< Updated upstream -<<<<<<< Updated upstream return Pd[e] = i, i; } //#endregion @@ -17861,32 +10008,6 @@ var Id = class extends Gu { drawImages_(e, t, n, r) { if (!this.image_) return; let i = sa(e, t, n, r, this.transform_, this.pixelCoordinates_), a = this.context_, o = this.tmpLocalTransform_, s = a.globalAlpha; -======= - return af[e] = i, i; -} -//#endregion -//#region node_modules/ol/render/canvas/Immediate.js -var sf = class extends hd { - constructor(e, t, n, r, i, a, o) { - super(), this.context_ = e, this.pixelRatio_ = t, this.extent_ = n, this.transform_ = r, this.transformRotation_ = r ? At(Math.atan2(r[1], r[0]), 10) : 0, this.viewRotation_ = i, this.squaredTolerance_ = a, this.userTransform_ = o, this.contextFillState_ = null, this.contextStrokeState_ = null, this.contextTextState_ = null, this.fillState_ = null, this.strokeState_ = null, this.image_ = null, this.imageAnchorX_ = 0, this.imageAnchorY_ = 0, this.imageHeight_ = 0, this.imageOpacity_ = 0, this.imageOriginX_ = 0, this.imageOriginY_ = 0, this.imageRotateWithView_ = !1, this.imageRotation_ = 0, this.imageScale_ = [0, 0], this.imageWidth_ = 0, this.text_ = "", this.textOffsetX_ = 0, this.textOffsetY_ = 0, this.textRotateWithView_ = !1, this.textRotation_ = 0, this.textScale_ = [0, 0], this.textFillState_ = null, this.textStrokeState_ = null, this.textState_ = null, this.pixelCoordinates_ = [], this.tmpLocalTransform_ = qr(); - } - drawImages_(e, t, n, r) { - if (!this.image_) return; - let i = si(e, t, n, r, this.transform_, this.pixelCoordinates_), a = this.context_, o = this.tmpLocalTransform_, s = a.globalAlpha; ->>>>>>> Stashed changes -======= - return af[e] = i, i; -} -//#endregion -//#region node_modules/ol/render/canvas/Immediate.js -var sf = class extends hd { - constructor(e, t, n, r, i, a, o) { - super(), this.context_ = e, this.pixelRatio_ = t, this.extent_ = n, this.transform_ = r, this.transformRotation_ = r ? At(Math.atan2(r[1], r[0]), 10) : 0, this.viewRotation_ = i, this.squaredTolerance_ = a, this.userTransform_ = o, this.contextFillState_ = null, this.contextStrokeState_ = null, this.contextTextState_ = null, this.fillState_ = null, this.strokeState_ = null, this.image_ = null, this.imageAnchorX_ = 0, this.imageAnchorY_ = 0, this.imageHeight_ = 0, this.imageOpacity_ = 0, this.imageOriginX_ = 0, this.imageOriginY_ = 0, this.imageRotateWithView_ = !1, this.imageRotation_ = 0, this.imageScale_ = [0, 0], this.imageWidth_ = 0, this.text_ = "", this.textOffsetX_ = 0, this.textOffsetY_ = 0, this.textRotateWithView_ = !1, this.textRotation_ = 0, this.textScale_ = [0, 0], this.textFillState_ = null, this.textStrokeState_ = null, this.textState_ = null, this.pixelCoordinates_ = [], this.tmpLocalTransform_ = qr(); - } - drawImages_(e, t, n, r) { - if (!this.image_) return; - let i = si(e, t, n, r, this.transform_, this.pixelCoordinates_), a = this.context_, o = this.tmpLocalTransform_, s = a.globalAlpha; ->>>>>>> Stashed changes this.imageOpacity_ != 1 && (a.globalAlpha = s * this.imageOpacity_); let c = this.imageRotation_; this.transformRotation_ === 0 && (c -= this.viewRotation_), this.imageRotateWithView_ && (c += this.viewRotation_); @@ -17894,7 +10015,7 @@ var sf = class extends hd { let t = i[e] - this.imageAnchorX_, n = i[e + 1] - this.imageAnchorY_; if (c !== 0 || this.imageScale_[0] != 1 || this.imageScale_[1] != 1) { let e = t + this.imageAnchorX_, r = n + this.imageAnchorY_; - ei(o, e, r, 1, 1, c, -e, -r), a.save(), a.transform.apply(a, o), a.translate(e, r), a.scale(this.imageScale_[0], this.imageScale_[1]), a.drawImage(this.image_, this.imageOriginX_, this.imageOriginY_, this.imageWidth_, this.imageHeight_, -this.imageAnchorX_, -this.imageAnchorY_, this.imageWidth_, this.imageHeight_), a.restore(); + $r(o, e, r, 1, 1, c, -e, -r), a.save(), a.transform.apply(a, o), a.translate(e, r), a.scale(this.imageScale_[0], this.imageScale_[1]), a.drawImage(this.image_, this.imageOriginX_, this.imageOriginY_, this.imageWidth_, this.imageHeight_, -this.imageAnchorX_, -this.imageAnchorY_, this.imageWidth_, this.imageHeight_), a.restore(); } else a.drawImage(this.image_, this.imageOriginX_, this.imageOriginY_, this.imageWidth_, this.imageHeight_, t, n, this.imageWidth_, this.imageHeight_); } this.imageOpacity_ != 1 && (a.globalAlpha = s); @@ -17902,39 +10023,17 @@ var sf = class extends hd { drawText_(e, t, n, r) { if (!this.textState_ || this.text_ === "") return; this.textFillState_ && this.setContextFillState_(this.textFillState_), this.textStrokeState_ && this.setContextStrokeState_(this.textStrokeState_), this.setContextTextState_(this.textState_); -<<<<<<< Updated upstream -<<<<<<< Updated upstream let i = sa(e, t, n, r, this.transform_, this.pixelCoordinates_), a = this.context_, o = this.textRotation_; -======= - let i = si(e, t, n, r, this.transform_, this.pixelCoordinates_), a = this.context_, o = this.textRotation_; ->>>>>>> Stashed changes -======= - let i = si(e, t, n, r, this.transform_, this.pixelCoordinates_), a = this.context_, o = this.textRotation_; ->>>>>>> Stashed changes for (this.transformRotation_ === 0 && (o -= this.viewRotation_), this.textRotateWithView_ && (o += this.viewRotation_); t < n; t += r) { let e = i[t] + this.textOffsetX_, n = i[t + 1] + this.textOffsetY_; o !== 0 || this.textScale_[0] != 1 || this.textScale_[1] != 1 ? (a.save(), a.translate(e - this.textOffsetX_, n - this.textOffsetY_), a.rotate(o), a.translate(this.textOffsetX_, this.textOffsetY_), a.scale(this.textScale_[0], this.textScale_[1]), this.textStrokeState_ && a.strokeText(this.text_, 0, 0), this.textFillState_ && a.fillText(this.text_, 0, 0), a.restore()) : (this.textStrokeState_ && a.strokeText(this.text_, e, n), this.textFillState_ && a.fillText(this.text_, e, n)); } } moveToLineTo_(e, t, n, r, i, a) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let o = this.context_, s = sa(e, t, n, r, this.transform_, this.pixelCoordinates_); if (Math.abs(a) > 0) { let e = s.length, t = i || Math.abs(s[0] - s[e - 2]) < 1e-6 && Math.abs(s[1] - s[e - 1]) < 1e-6; s = ud(s, 0, e, 2, a, t, s), fd(s, 2, t); -======= - let o = this.context_, s = si(e, t, n, r, this.transform_, this.pixelCoordinates_); - if (Math.abs(a) > 0) { - let e = s.length, t = i || Math.abs(s[0] - s[e - 2]) < 1e-6 && Math.abs(s[1] - s[e - 1]) < 1e-6; - s = Pd(s, 0, e, 2, a, t, s), Id(s, 2, t); ->>>>>>> Stashed changes -======= - let o = this.context_, s = si(e, t, n, r, this.transform_, this.pixelCoordinates_); - if (Math.abs(a) > 0) { - let e = s.length, t = i || Math.abs(s[0] - s[e - 2]) < 1e-6 && Math.abs(s[1] - s[e - 1]) < 1e-6; - s = Pd(s, 0, e, 2, a, t, s), Id(s, 2, t); ->>>>>>> Stashed changes } o.moveTo(s[0], s[1]); let c = s.length; @@ -17950,15 +10049,7 @@ var sf = class extends hd { if (this.squaredTolerance_ && (e = e.simplifyTransformed(this.squaredTolerance_, this.userTransform_)), Ot(this.extent_, e.getExtent())) { if (this.fillState_ || this.strokeState_) { this.fillState_ && this.setContextFillState_(this.fillState_), this.strokeState_ && this.setContextStrokeState_(this.strokeState_); -<<<<<<< Updated upstream -<<<<<<< Updated upstream let t = _a(e, this.transform_, this.pixelCoordinates_), n = t[2] - t[0], r = t[3] - t[1], i = Math.sqrt(n * n + r * r), a = this.context_; -======= - let t = _i(e, this.transform_, this.pixelCoordinates_), n = t[2] - t[0], r = t[3] - t[1], i = Math.sqrt(n * n + r * r), a = this.context_; ->>>>>>> Stashed changes -======= - let t = _i(e, this.transform_, this.pixelCoordinates_), n = t[2] - t[0], r = t[3] - t[1], i = Math.sqrt(n * n + r * r), a = this.context_; ->>>>>>> Stashed changes a.beginPath(), a.arc(t[0], t[1], i, 0, 2 * Math.PI), this.fillState_ && a.fill(), this.strokeState_ && a.stroke(); } this.text_ !== "" && this.drawText_(e.getCenter(), 0, 2, 2); @@ -18092,15 +10183,7 @@ var sf = class extends hd { }); } setContextTextState_(e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let t = this.context_, n = this.contextTextState_, r = e.textAlign ? e.textAlign : Jc; -======= - let t = this.context_, n = this.contextTextState_, r = e.textAlign ? e.textAlign : gc; ->>>>>>> Stashed changes -======= - let t = this.context_, n = this.contextTextState_, r = e.textAlign ? e.textAlign : gc; ->>>>>>> Stashed changes n ? (n.font != e.font && (n.font = e.font, t.font = e.font), n.textAlign != r && (n.textAlign = r, t.textAlign = r), n.textBaseline != e.textBaseline && (n.textBaseline = e.textBaseline, t.textBaseline = e.textBaseline)) : (t.font = e.font, t.textAlign = r, t.textBaseline = e.textBaseline, this.contextTextState_ = { font: e.font, textAlign: r, @@ -18111,8 +10194,6 @@ var sf = class extends hd { if (!e) this.fillState_ = null; else { let t = e.getColor(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.fillState_ = { fillStyle: Bc(t || Uc) }; } if (!t) this.strokeState_ = null; @@ -18126,36 +10207,6 @@ var sf = class extends hd { lineWidth: (o === void 0 ? 1 : o) * this.pixelRatio_, miterLimit: s === void 0 ? 10 : s, strokeStyle: Bc(e || qc), -======= - this.fillState_ = { fillStyle: cc(t || dc) }; - } - if (!t) this.strokeState_ = null; - else { - let e = t.getColor(), n = t.getLineCap(), r = t.getLineDash(), i = t.getLineDashOffset(), a = t.getLineJoin(), o = t.getWidth(), s = t.getMiterLimit(), c = r || pc, l = t.getOffset(); - this.strokeState_ = { - lineCap: n === void 0 ? fc : n, - lineDash: this.pixelRatio_ === 1 ? c : c.map((e) => e * this.pixelRatio_), - lineDashOffset: (i || 0) * this.pixelRatio_, - lineJoin: a === void 0 ? mc : a, - lineWidth: (o === void 0 ? 1 : o) * this.pixelRatio_, - miterLimit: s === void 0 ? 10 : s, - strokeStyle: cc(e || hc), ->>>>>>> Stashed changes -======= - this.fillState_ = { fillStyle: cc(t || dc) }; - } - if (!t) this.strokeState_ = null; - else { - let e = t.getColor(), n = t.getLineCap(), r = t.getLineDash(), i = t.getLineDashOffset(), a = t.getLineJoin(), o = t.getWidth(), s = t.getMiterLimit(), c = r || pc, l = t.getOffset(); - this.strokeState_ = { - lineCap: n === void 0 ? fc : n, - lineDash: this.pixelRatio_ === 1 ? c : c.map((e) => e * this.pixelRatio_), - lineDashOffset: (i || 0) * this.pixelRatio_, - lineJoin: a === void 0 ? mc : a, - lineWidth: (o === void 0 ? 1 : o) * this.pixelRatio_, - miterLimit: s === void 0 ? 10 : s, - strokeStyle: cc(e || hc), ->>>>>>> Stashed changes strokeOffset: (l ?? 0) * this.pixelRatio_ }; } @@ -18178,23 +10229,13 @@ var sf = class extends hd { if (!t) this.textFillState_ = null; else { let e = t.getColor(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.textFillState_ = { fillStyle: Bc(e || Uc) }; -======= - this.textFillState_ = { fillStyle: cc(e || dc) }; ->>>>>>> Stashed changes -======= - this.textFillState_ = { fillStyle: cc(e || dc) }; ->>>>>>> Stashed changes } let n = e.getStroke(); if (!n) this.textStrokeState_ = null; else { let e = n.getColor(), t = n.getLineCap(), r = n.getLineDash(), i = n.getLineDashOffset(), a = n.getLineJoin(), o = n.getWidth(), s = n.getMiterLimit(); this.textStrokeState_ = { -<<<<<<< Updated upstream -<<<<<<< Updated upstream lineCap: t === void 0 ? Wc : t, lineDash: r || Gc, lineDashOffset: i || 0, @@ -18202,30 +10243,10 @@ var sf = class extends hd { lineWidth: o === void 0 ? 1 : o, miterLimit: s === void 0 ? 10 : s, strokeStyle: Bc(e || qc) -======= - lineCap: t === void 0 ? fc : t, - lineDash: r || pc, - lineDashOffset: i || 0, - lineJoin: a === void 0 ? mc : a, - lineWidth: o === void 0 ? 1 : o, - miterLimit: s === void 0 ? 10 : s, - strokeStyle: cc(e || hc) ->>>>>>> Stashed changes -======= - lineCap: t === void 0 ? fc : t, - lineDash: r || pc, - lineDashOffset: i || 0, - lineJoin: a === void 0 ? mc : a, - lineWidth: o === void 0 ? 1 : o, - miterLimit: s === void 0 ? 10 : s, - strokeStyle: cc(e || hc) ->>>>>>> Stashed changes }; } let r = e.getFont(), i = e.getOffsetX(), a = e.getOffsetY(), o = e.getRotateWithView(), s = e.getRotation(), c = e.getScaleArray(), l = e.getText(), u = e.getTextAlign(), d = e.getTextBaseline(); this.textState_ = { -<<<<<<< Updated upstream -<<<<<<< Updated upstream font: r === void 0 ? Hc : r, textAlign: u === void 0 ? Jc : u, textBaseline: d === void 0 ? Yc : d @@ -18238,28 +10259,6 @@ function Rd(e, t, n, r, i, a, o, s, c) { d.imageSmoothingEnabled = !1; let f = d.canvas, p = new Id(d, Ld, i, null, o, s, c ? Cr(kr(), c) : null), m = n.length, h = Math.floor(16777215 / m), g = {}; for (let e = 1; e <= m; ++e) { -======= - font: r === void 0 ? uc : r, - textAlign: u === void 0 ? gc : u, - textBaseline: d === void 0 ? _c : d - }, this.text_ = l === void 0 ? "" : Array.isArray(l) ? l.reduce((e, t, n) => e += n % 2 ? " " : t, "") : l, this.textOffsetX_ = i === void 0 ? 0 : this.pixelRatio_ * i, this.textOffsetY_ = a === void 0 ? 0 : this.pixelRatio_ * a, this.textRotateWithView_ = o !== void 0 && o, this.textRotation_ = s === void 0 ? 0 : s, this.textScale_ = [this.pixelRatio_ * c[0], this.pixelRatio_ * c[1]]; - } - } -======= - font: r === void 0 ? uc : r, - textAlign: u === void 0 ? gc : u, - textBaseline: d === void 0 ? _c : d - }, this.text_ = l === void 0 ? "" : Array.isArray(l) ? l.reduce((e, t, n) => e += n % 2 ? " " : t, "") : l, this.textOffsetX_ = i === void 0 ? 0 : this.pixelRatio_ * i, this.textOffsetY_ = a === void 0 ? 0 : this.pixelRatio_ * a, this.textRotateWithView_ = o !== void 0 && o, this.textRotation_ = s === void 0 ? 0 : s, this.textScale_ = [this.pixelRatio_ * c[0], this.pixelRatio_ * c[1]]; - } - } ->>>>>>> Stashed changes -}, cf = .5; -function lf(e, t, n, r, i, a, o, s, c) { - let l = c ? vr(i, c) : i, u = y(e[0] * cf, e[1] * cf); - u.imageSmoothingEnabled = !1; - let d = u.canvas, f = new sf(u, cf, i, null, o, s, c ? lr(hr(), c) : null), p = n.length, m = Math.floor(16777215 / p), h = {}; - for (let e = 1; e <= p; ++e) { ->>>>>>> Stashed changes let t = n[e - 1], i = t.getStyleFunction() || r; if (!i) continue; let o = i(t, a); @@ -18277,16 +10276,8 @@ function lf(e, t, n, r, i, a, o, s, c) { if (u) { let e = u.getImageSize(); if (!e) continue; -<<<<<<< Updated upstream let t = ge(e[0], e[1], void 0, { alpha: !1 }), n = t.canvas; t.fillStyle = s, t.fillRect(0, 0, n.width, n.height), i.setImage(new gl({ -======= - let t = y(e[0], e[1], void 0, { alpha: !1 }), n = t.canvas; - t.fillStyle = s, t.fillRect(0, 0, n.width, n.height), i.setImage(new Rc({ -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes img: n, anchor: u.getAnchor(), anchorXUnits: "pixels", @@ -18324,32 +10315,16 @@ function lf(e, t, n, r, i, a, o, s, c) { } return d.getImageData(0, 0, f.width, f.height); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function zd(e, t, n) { let r = []; if (n) { let i = Math.floor(Math.round(e[0]) * Ld), a = Math.floor(Math.round(e[1]) * Ld), o = (Bt(i, 0, n.width - 1) + Bt(a, 0, n.height - 1) * n.width) * 4, s = n.data[o], c = n.data[o + 1], l = n.data[o + 2] + 256 * (c + 256 * s), u = Math.floor(16777215 / t.length); -======= -function uf(e, t, n) { - let r = []; - if (n) { - let i = Math.floor(Math.round(e[0]) * cf), a = Math.floor(Math.round(e[1]) * cf), o = (St(i, 0, n.width - 1) + St(a, 0, n.height - 1) * n.width) * 4, s = n.data[o], c = n.data[o + 1], l = n.data[o + 2] + 256 * (c + 256 * s), u = Math.floor(16777215 / t.length); ->>>>>>> Stashed changes -======= -function uf(e, t, n) { - let r = []; - if (n) { - let i = Math.floor(Math.round(e[0]) * cf), a = Math.floor(Math.round(e[1]) * cf), o = (St(i, 0, n.width - 1) + St(a, 0, n.height - 1) * n.width) * 4, s = n.data[o], c = n.data[o + 1], l = n.data[o + 2] + 256 * (c + 256 * s), u = Math.floor(16777215 / t.length); ->>>>>>> Stashed changes l && l % u === 0 && r.push(t[l / u - 1]); } return r; } //#endregion //#region node_modules/ol/renderer/vector.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var Bd = .5, Vd = { Point: $d, LineString: Xd, @@ -18371,52 +10346,6 @@ function Wd(e, t) { return Bd * e / t; } function Gd(e, t, n, r, i) { -======= -var df = .5, ff = { - Point: wf, - LineString: xf, - Polygon: Ef, - MultiPoint: Tf, - MultiLineString: Sf, - MultiPolygon: Cf, - GeometryCollection: bf, - Circle: gf -}; -function pf(e, t) { - return parseInt(F(e), 10) - parseInt(F(t), 10); -} -function mf(e, t) { - let n = hf(e, t); - return n * n; -} -function hf(e, t) { - return df * e / t; -} -function gf(e, t, n, r, i) { ->>>>>>> Stashed changes -======= -var df = .5, ff = { - Point: wf, - LineString: xf, - Polygon: Ef, - MultiPoint: Tf, - MultiLineString: Sf, - MultiPolygon: Cf, - GeometryCollection: bf, - Circle: gf -}; -function pf(e, t) { - return parseInt(F(e), 10) - parseInt(F(t), 10); -} -function mf(e, t) { - let n = hf(e, t); - return n * n; -} -function hf(e, t) { - return df * e / t; -} -function gf(e, t, n, r, i) { ->>>>>>> Stashed changes let a = n.getFill(), o = n.getStroke(); if (a || o) { let s = e.getBuilder(n.getZIndex(), "Circle"); @@ -18428,33 +10357,15 @@ function gf(e, t, n, r, i) { a.setTextStyle(s), a.drawText(t, r, i); } } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Kd(e, t, n, r, i, a, o, s) { let c = [], l = n.getImage(); if (l) { let e = !0, t = l.getImageState(); t == L.LOADED || t == L.ERROR ? e = !1 : t == L.IDLE && l.load(), e && c.push(l.ready()); -======= -function _f(e, t, n, r, i, a, o, s) { - let c = [], l = n.getImage(); - if (l) { - let e = !0, t = l.getImageState(); - t == J.LOADED || t == J.ERROR ? e = !1 : t == J.IDLE && l.load(), e && c.push(l.ready()); ->>>>>>> Stashed changes -======= -function _f(e, t, n, r, i, a, o, s) { - let c = [], l = n.getImage(); - if (l) { - let e = !0, t = l.getImageState(); - t == J.LOADED || t == J.ERROR ? e = !1 : t == J.IDLE && l.load(), e && c.push(l.ready()); ->>>>>>> Stashed changes } let u = n.getFill(); u && u.loading() && c.push(u.ready()); let d = c.length > 0; -<<<<<<< Updated upstream -<<<<<<< Updated upstream return d && Promise.all(c).then(() => i(null)), qd(e, t, n, r, a, o, s), d; } function qd(e, t, n, r, i, a, o) { @@ -18471,48 +10382,10 @@ function Jd(e, t, n, r, i) { if (t.getType() == "GeometryCollection") { let a = t.getGeometries(); for (let t = 0, o = a.length; t < o; ++t) Jd(e, a[t], n, r, i); -======= - return d && Promise.all(c).then(() => i(null)), vf(e, t, n, r, a, o, s), d; -} -function vf(e, t, n, r, i, a, o) { - let s = n.getGeometryFunction()(t); - if (!s) return; - let c = s.simplifyTransformed(r, i); - if (n.getRenderer()) yf(e, c, n, t, o); - else { - let r = ff[c.getType()]; - r(e, c, n, t, o, a); - } -} -function yf(e, t, n, r, i) { - if (t.getType() == "GeometryCollection") { - let a = t.getGeometries(); - for (let t = 0, o = a.length; t < o; ++t) yf(e, a[t], n, r, i); ->>>>>>> Stashed changes -======= - return d && Promise.all(c).then(() => i(null)), vf(e, t, n, r, a, o, s), d; -} -function vf(e, t, n, r, i, a, o) { - let s = n.getGeometryFunction()(t); - if (!s) return; - let c = s.simplifyTransformed(r, i); - if (n.getRenderer()) yf(e, c, n, t, o); - else { - let r = ff[c.getType()]; - r(e, c, n, t, o, a); - } -} -function yf(e, t, n, r, i) { - if (t.getType() == "GeometryCollection") { - let a = t.getGeometries(); - for (let t = 0, o = a.length; t < o; ++t) yf(e, a[t], n, r, i); ->>>>>>> Stashed changes return; } e.getBuilder(n.getZIndex(), "Default").drawCustom(t, r, n.getRenderer(), n.getHitDetectionRenderer(), i); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Yd(e, t, n, r, i, a) { let o = t.getGeometriesArray(), s, c; for (s = 0, c = o.length; s < c; ++s) { @@ -18521,26 +10394,6 @@ function Yd(e, t, n, r, i, a) { } } function Xd(e, t, n, r, i) { -======= -function bf(e, t, n, r, i, a) { - let o = t.getGeometriesArray(), s, c; - for (s = 0, c = o.length; s < c; ++s) { - let t = ff[o[s].getType()]; - t(e, o[s], n, r, i, a); - } -} -function xf(e, t, n, r, i) { ->>>>>>> Stashed changes -======= -function bf(e, t, n, r, i, a) { - let o = t.getGeometriesArray(), s, c; - for (s = 0, c = o.length; s < c; ++s) { - let t = ff[o[s].getType()]; - t(e, o[s], n, r, i, a); - } -} -function xf(e, t, n, r, i) { ->>>>>>> Stashed changes let a = n.getStroke(); if (a) { let o = e.getBuilder(n.getZIndex(), "LineString"); @@ -18552,15 +10405,7 @@ function xf(e, t, n, r, i) { a.setTextStyle(o), a.drawText(t, r, i); } } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Zd(e, t, n, r, i) { -======= -function Sf(e, t, n, r, i) { ->>>>>>> Stashed changes -======= -function Sf(e, t, n, r, i) { ->>>>>>> Stashed changes let a = n.getStroke(); if (a) { let o = e.getBuilder(n.getZIndex(), "LineString"); @@ -18572,15 +10417,7 @@ function Sf(e, t, n, r, i) { a.setTextStyle(o), a.drawText(t, r, i); } } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Qd(e, t, n, r, i) { -======= -function Cf(e, t, n, r, i) { ->>>>>>> Stashed changes -======= -function Cf(e, t, n, r, i) { ->>>>>>> Stashed changes let a = n.getFill(), o = n.getStroke(); if (o || a) { let s = e.getBuilder(n.getZIndex(), "Polygon"); @@ -18592,24 +10429,10 @@ function Cf(e, t, n, r, i) { a.setTextStyle(s), a.drawText(t, r, i); } } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function $d(e, t, n, r, i, a) { let o = n.getImage(), s = n.getText(), c = s && s.getText(), l = a && o && c ? {} : void 0; if (o) { if (o.getImageState() != L.LOADED) return; -======= -function wf(e, t, n, r, i, a) { - let o = n.getImage(), s = n.getText(), c = s && s.getText(), l = a && o && c ? {} : void 0; - if (o) { - if (o.getImageState() != J.LOADED) return; ->>>>>>> Stashed changes -======= -function wf(e, t, n, r, i, a) { - let o = n.getImage(), s = n.getText(), c = s && s.getText(), l = a && o && c ? {} : void 0; - if (o) { - if (o.getImageState() != J.LOADED) return; ->>>>>>> Stashed changes let a = e.getBuilder(n.getZIndex(), "Image"); a.setImageStyle(o, l), a.drawPoint(t, r, i); } @@ -18618,24 +10441,10 @@ function wf(e, t, n, r, i, a) { a.setTextStyle(s, l), a.drawText(t, r, i); } } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function ef(e, t, n, r, i, a) { let o = n.getImage(), s = o && o.getOpacity() !== 0, c = n.getText(), l = c && c.getText(), u = a && s && l ? {} : void 0; if (s) { if (o.getImageState() != L.LOADED) return; -======= -function Tf(e, t, n, r, i, a) { - let o = n.getImage(), s = o && o.getOpacity() !== 0, c = n.getText(), l = c && c.getText(), u = a && s && l ? {} : void 0; - if (s) { - if (o.getImageState() != J.LOADED) return; ->>>>>>> Stashed changes -======= -function Tf(e, t, n, r, i, a) { - let o = n.getImage(), s = o && o.getOpacity() !== 0, c = n.getText(), l = c && c.getText(), u = a && s && l ? {} : void 0; - if (s) { - if (o.getImageState() != J.LOADED) return; ->>>>>>> Stashed changes let a = e.getBuilder(n.getZIndex(), "Image"); a.setImageStyle(o, u), a.drawMultiPoint(t, r, i); } @@ -18644,15 +10453,7 @@ function Tf(e, t, n, r, i, a) { a.setTextStyle(c, u), a.drawText(t, r, i); } } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function tf(e, t, n, r, i) { -======= -function Ef(e, t, n, r, i) { ->>>>>>> Stashed changes -======= -function Ef(e, t, n, r, i) { ->>>>>>> Stashed changes let a = n.getFill(), o = n.getStroke(); if (a || o) { let s = e.getBuilder(n.getZIndex(), "Polygon"); @@ -18666,21 +10467,11 @@ function Ef(e, t, n, r, i) { } //#endregion //#region node_modules/ol/renderer/canvas/VectorLayer.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var nf = class extends $i { -======= -var Df = class extends Au { ->>>>>>> Stashed changes -======= -var Df = class extends Au { ->>>>>>> Stashed changes constructor(e) { super(e), this.boundHandleStyleImageChange_ = this.handleStyleImageChange_.bind(this), this.animatingOrInteracting_, this.hitDetectionImageData_ = null, this.clipExtent_ = null, this.extendX_ = !1, this.renderedFeatures_ = null, this.renderedRevision_ = -1, this.renderedResolution_ = NaN, this.renderedExtent_ = at(), this.wrappedRenderedExtent_ = at(), this.renderedRotation_, this.renderedCenter_ = null, this.renderedProjection_ = null, this.renderedPixelRatio_ = 1, this.renderedRenderOrder_ = null, this.renderedFrameDeclutter_, this.replayGroup_ = null, this.replayGroupChanged = !0, this.clipping = !0, this.targetContext_ = null, this.opacity_ = 1; } renderWorlds(e, t, n) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let r = t.extent, i = t.viewState, a = i.center, o = i.resolution, s = i.projection, c = i.rotation, l = s.getExtent(), u = this.getLayer().getSource(), d = this.getLayer().getDeclutter(), f = t.pixelRatio, p = t.viewHints, m = !(p[V.ANIMATING] || p[V.INTERACTING]), h = this.context, g = Math.round(R(r) / o * f), _ = Math.round(Ct(r) / o * f), v = u.getWrapX() && s.canWrapX(), y = v ? R(l) : null, b = v ? Math.ceil((r[2] - l[2]) / y) + (this.extendX_ ? 2 : 1) : 1, x = v ? Math.floor((r[0] - l[0]) / y) - +!!this.extendX_ : 0; do { let r = this.getRenderTransform(a, o, 0, f, g, _, x * y); @@ -18689,39 +10480,11 @@ var Df = class extends Au { } setDrawContext_() { this.opacity_ !== 1 && (this.targetContext_ = this.context, this.context = ge(this.context.canvas.width, this.context.canvas.height, Xi)); -======= - let r = t.extent, i = t.viewState, a = i.center, o = i.resolution, s = i.projection, c = i.rotation, l = s.getExtent(), u = this.getLayer().getSource(), d = this.getLayer().getDeclutter(), f = t.pixelRatio, p = t.viewHints, m = !(p[Lr.ANIMATING] || p[Lr.INTERACTING]), h = this.context, g = Math.round(I(r) / o * f), _ = Math.round(ct(r) / o * f), v = u.getWrapX() && s.canWrapX(), y = v ? I(l) : null, b = v ? Math.ceil((r[2] - l[2]) / y) + (this.extendX_ ? 2 : 1) : 1, x = v ? Math.floor((r[0] - l[0]) / y) - +!!this.extendX_ : 0; - do { - let r = this.getRenderTransform(a, o, 0, f, g, _, x * y); - t.declutter && (r = r.slice(0)), e.execute(h, [h.canvas.width, h.canvas.height], r, c, m, n === void 0 ? Zd : n ? Qd : $d, n ? d && t.declutter[d] : void 0); - } while (++x < b); - } - setDrawContext_() { - this.opacity_ !== 1 && (this.targetContext_ = this.context, this.context = y(this.context.canvas.width, this.context.canvas.height, Du)); ->>>>>>> Stashed changes -======= - let r = t.extent, i = t.viewState, a = i.center, o = i.resolution, s = i.projection, c = i.rotation, l = s.getExtent(), u = this.getLayer().getSource(), d = this.getLayer().getDeclutter(), f = t.pixelRatio, p = t.viewHints, m = !(p[Lr.ANIMATING] || p[Lr.INTERACTING]), h = this.context, g = Math.round(I(r) / o * f), _ = Math.round(ct(r) / o * f), v = u.getWrapX() && s.canWrapX(), y = v ? I(l) : null, b = v ? Math.ceil((r[2] - l[2]) / y) + (this.extendX_ ? 2 : 1) : 1, x = v ? Math.floor((r[0] - l[0]) / y) - +!!this.extendX_ : 0; - do { - let r = this.getRenderTransform(a, o, 0, f, g, _, x * y); - t.declutter && (r = r.slice(0)), e.execute(h, [h.canvas.width, h.canvas.height], r, c, m, n === void 0 ? Zd : n ? Qd : $d, n ? d && t.declutter[d] : void 0); - } while (++x < b); - } - setDrawContext_() { - this.opacity_ !== 1 && (this.targetContext_ = this.context, this.context = y(this.context.canvas.width, this.context.canvas.height, Du)); ->>>>>>> Stashed changes } resetDrawContext_() { if (this.opacity_ !== 1 && this.targetContext_) { let e = this.targetContext_.globalAlpha; -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.targetContext_.globalAlpha = this.opacity_, this.targetContext_.drawImage(this.context.canvas, 0, 0), this.targetContext_.globalAlpha = e, ye(this.context), Xi.push(this.context.canvas), this.context = this.targetContext_, this.targetContext_ = null; -======= - this.targetContext_.globalAlpha = this.opacity_, this.targetContext_.drawImage(this.context.canvas, 0, 0), this.targetContext_.globalAlpha = e, S(this.context), Du.push(this.context.canvas), this.context = this.targetContext_, this.targetContext_ = null; ->>>>>>> Stashed changes -======= - this.targetContext_.globalAlpha = this.opacity_, this.targetContext_.drawImage(this.context.canvas, 0, 0), this.targetContext_.globalAlpha = e, S(this.context), Du.push(this.context.canvas), this.context = this.targetContext_, this.targetContext_ = null; ->>>>>>> Stashed changes } } renderDeclutter(e) { @@ -18736,15 +10499,7 @@ var Df = class extends Au { let r = e.viewState; this.prepareContainer(e, t); let i = this.context, a = this.replayGroup_, o = a && !a.isEmpty(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (!o && !(this.getLayer().hasListener(Ki.PRERENDER) || this.getLayer().hasListener(Ki.POSTRENDER))) return this.container; -======= - if (!o && !(this.getLayer().hasListener(lo.PRERENDER) || this.getLayer().hasListener(lo.POSTRENDER))) return this.container; ->>>>>>> Stashed changes -======= - if (!o && !(this.getLayer().hasListener(lo.PRERENDER) || this.getLayer().hasListener(lo.POSTRENDER))) return this.container; ->>>>>>> Stashed changes this.setDrawContext_(), this.preRender(i, e); let s = r.projection; this.clipExtent_ = null; @@ -18758,8 +10513,6 @@ var Df = class extends Au { getFeatures(e) { return new Promise((t) => { if (this.frameState && !this.hitDetectionImageData_ && !this.animatingOrInteracting_) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let e = this.frameState.size.slice(), t = this.renderedCenter_, n = this.renderedResolution_, r = this.renderedRotation_, i = this.renderedProjection_, a = this.wrappedRenderedExtent_, o = this.getLayer(), s = [], c = e[0] * Ld, l = e[1] * Ld; s.push(this.getRenderTransform(t, n, r, Ld, c, l, 0).slice()); let u = o.getSource(), d = i.getExtent(); @@ -18772,25 +10525,6 @@ var Df = class extends Au { this.hitDetectionImageData_ = Rd(e, s, this.renderedFeatures_, o.getStyleFunction(), a, n, r, Ud(n, this.renderedPixelRatio_), f ? i : null); } t(zd(e, this.renderedFeatures_, this.hitDetectionImageData_)); -======= -======= ->>>>>>> Stashed changes - let e = this.frameState.size.slice(), t = this.renderedCenter_, n = this.renderedResolution_, r = this.renderedRotation_, i = this.renderedProjection_, a = this.wrappedRenderedExtent_, o = this.getLayer(), s = [], c = e[0] * cf, l = e[1] * cf; - s.push(this.getRenderTransform(t, n, r, cf, c, l, 0).slice()); - let u = o.getSource(), d = i.getExtent(); - if (u.getWrapX() && i.canWrapX() && !Ve(d, a)) { - let e = a[0], i = I(d), o = 0, u; - for (; e < d[0];) --o, u = i * o, s.push(this.getRenderTransform(t, n, r, cf, c, l, u).slice()), e += i; - for (o = 0, e = a[2]; e > d[2];) ++o, u = i * o, s.push(this.getRenderTransform(t, n, r, cf, c, l, u).slice()), e -= i; - } - let f = hr(); - this.hitDetectionImageData_ = lf(e, s, this.renderedFeatures_, o.getStyleFunction(), a, n, r, mf(n, this.renderedPixelRatio_), f ? i : null); - } - t(uf(e, this.renderedFeatures_, this.hitDetectionImageData_)); -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes }); } forEachFeatureAtCoordinate(e, t, n, r, i) { @@ -18823,8 +10557,6 @@ var Df = class extends Au { prepareFrame(e) { let t = this.getLayer(), n = t.getSource(); if (!n) return !1; -<<<<<<< Updated upstream -<<<<<<< Updated upstream let r = e.viewHints[V.ANIMATING], i = e.viewHints[V.INTERACTING], a = t.getUpdateWhileAnimating(), o = t.getUpdateWhileInteracting(); if (this.ready && !a && r || !o && i) return this.animatingOrInteracting_ = !0, !0; this.animatingOrInteracting_ = !1; @@ -18832,21 +10564,6 @@ var Df = class extends Au { m === void 0 && (m = Hd); let g = c.center.slice(), _ = Qe(s, p * u), v = _.slice(), y = [_.slice()], b = l.getExtent(), x = n.getWrapX() && l.canWrapX(); if (this.extendX_ = !1, x) { -======= - let r = e.viewHints[Lr.ANIMATING], i = e.viewHints[Lr.INTERACTING], a = t.getUpdateWhileAnimating(), o = t.getUpdateWhileInteracting(); - if (this.ready && !a && r || !o && i) return this.animatingOrInteracting_ = !0, !0; - this.animatingOrInteracting_ = !1; - let s = e.extent, c = e.viewState, l = c.projection, u = c.resolution, d = e.pixelRatio, f = t.getRevision(), p = t.getRenderBuffer(), m = t.getRenderOrder(); -======= - let r = e.viewHints[Lr.ANIMATING], i = e.viewHints[Lr.INTERACTING], a = t.getUpdateWhileAnimating(), o = t.getUpdateWhileInteracting(); - if (this.ready && !a && r || !o && i) return this.animatingOrInteracting_ = !0, !0; - this.animatingOrInteracting_ = !1; - let s = e.extent, c = e.viewState, l = c.projection, u = c.resolution, d = e.pixelRatio, f = t.getRevision(), p = t.getRenderBuffer(), m = t.getRenderOrder(); ->>>>>>> Stashed changes - m === void 0 && (m = pf); - let h = c.center.slice(), g = Le(s, p * u), _ = g.slice(), v = [g.slice()], y = l.getExtent(), b = n.getWrapX() && l.canWrapX(); - if (this.extendX_ = !1, b) { ->>>>>>> Stashed changes let e = n.getExtent(); e && !kt(e) && (this.extendX_ = e[0] < b[0] || e[2] > b[2]); } @@ -18868,8 +10585,6 @@ var Df = class extends Au { } if (this.ready && this.renderedResolution_ == u && this.renderedPixelRatio_ === d && this.renderedRevision_ == f && this.renderedRenderOrder_ == m && this.renderedFrameDeclutter_ === !!e.declutter && nt(this.wrappedRenderedExtent_, _)) return h(this.renderedExtent_, v) || (this.hitDetectionImageData_ = null, this.renderedExtent_ = v), this.renderedCenter_ = g, this.replayGroupChanged = !1, !0; this.replayGroup_ = null; -<<<<<<< Updated upstream -<<<<<<< Updated upstream let S = new cd(Wd(u, d), _, u, d), C = kr(), w; if (C) { for (let e = 0, t = y.length; e < t; ++e) { @@ -18879,86 +10594,33 @@ var Df = class extends Au { w = Cr(C, l); } else for (let e = 0, t = y.length; e < t; ++e) n.loadFeatures(y[e], u, l); let T = Ud(u, d), E = !0, D = (e, n) => { -======= -======= ->>>>>>> Stashed changes - let x = new Md(hf(u, d), g, u, d), S = hr(), C; - if (S) { - for (let e = 0, t = v.length; e < t; ++e) { - let t = v[e], r = vr(t, l); - n.loadFeatures(r, br(u, l), S); - } - C = lr(S, l); - } else for (let e = 0, t = v.length; e < t; ++e) n.loadFeatures(v[e], u, l); - let w = mf(u, d), T = !0, E = (e, n) => { -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes let r, i = e.getStyleFunction() || t.getStyleFunction(); if (i && (r = i(e, u)), r) { let t = this.renderFeature(e, T, r, S, w, this.getLayer().getDeclutter(), n); E &&= !t; } -<<<<<<< Updated upstream }, O = Mr(_, l), k = n.getFeaturesInExtent(O); m && k.sort(m); for (let e = 0, t = k.length; e < t; ++e) D(k[e], e); this.renderedFeatures_ = k, this.ready = E; let A = S.finish(), j = new Nd(_, u, d, n.getOverlaps(), A, t.getRenderBuffer(), !!e.declutter); return this.renderedResolution_ = u, this.renderedRevision_ = f, this.renderedRenderOrder_ = m, this.renderedFrameDeclutter_ = !!e.declutter, this.renderedExtent_ = v, this.wrappedRenderedExtent_ = _, this.renderedCenter_ = g, this.renderedProjection_ = l, this.renderedPixelRatio_ = d, this.replayGroup_ = j, this.hitDetectionImageData_ = null, this.replayGroupChanged = !0, !0; -======= - }, ee = vr(g, l), D = n.getFeaturesInExtent(ee); - m && D.sort(m); - for (let e = 0, t = D.length; e < t; ++e) E(D[e], e); - this.renderedFeatures_ = D, this.ready = T; - let O = x.finish(), k = new rf(g, u, d, n.getOverlaps(), O, t.getRenderBuffer(), !!e.declutter); - return this.renderedResolution_ = u, this.renderedRevision_ = f, this.renderedRenderOrder_ = m, this.renderedFrameDeclutter_ = !!e.declutter, this.renderedExtent_ = _, this.wrappedRenderedExtent_ = g, this.renderedCenter_ = h, this.renderedProjection_ = l, this.renderedPixelRatio_ = d, this.replayGroup_ = k, this.hitDetectionImageData_ = null, this.replayGroupChanged = !0, !0; ->>>>>>> Stashed changes } renderFeature(e, t, n, r, i, a, o) { if (!n) return !1; let s = !1; -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (Array.isArray(n)) for (let c = 0, l = n.length; c < l; ++c) s = Kd(r, e, n[c], t, this.boundHandleStyleImageChange_, i, a, o) || s; else s = Kd(r, e, n, t, this.boundHandleStyleImageChange_, i, a, o); return s; } }, rf = class extends cu { -======= - if (Array.isArray(n)) for (let c = 0, l = n.length; c < l; ++c) s = _f(r, e, n[c], t, this.boundHandleStyleImageChange_, i, a, o) || s; - else s = _f(r, e, n, t, this.boundHandleStyleImageChange_, i, a, o); - return s; - } -}, Of = class extends Al { ->>>>>>> Stashed changes -======= - if (Array.isArray(n)) for (let c = 0, l = n.length; c < l; ++c) s = _f(r, e, n[c], t, this.boundHandleStyleImageChange_, i, a, o) || s; - else s = _f(r, e, n, t, this.boundHandleStyleImageChange_, i, a, o); - return s; - } -}, Of = class extends Al { ->>>>>>> Stashed changes constructor(e) { super(e); } createRenderer() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return new nf(this); } }, af = { -======= - return new Df(this); - } -}, kf = { ->>>>>>> Stashed changes -======= - return new Df(this); - } -}, kf = { ->>>>>>> Stashed changes image: [ "Polygon", "Circle", @@ -18968,15 +10630,7 @@ var Df = class extends Au { ], hybrid: ["Polygon", "LineString"], vector: [] -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, of = { -======= -}, Af = { ->>>>>>> Stashed changes -======= -}, Af = { ->>>>>>> Stashed changes hybrid: [ "Image", "Text", @@ -18990,17 +10644,9 @@ var Df = class extends Au { "Text", "Default" ] -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, sf = class extends ra { -======= -}, jf = class extends Pu { ->>>>>>> Stashed changes -======= -}, jf = class extends Pu { ->>>>>>> Stashed changes constructor(e, t) { - super(e, t), this.boundHandleStyleImageChange_ = this.handleStyleImageChange_.bind(this), this.renderedLayerRevision_, this.renderedPixelToCoordinateTransform_ = null, this.renderedRotation_, this.renderedOpacity_ = 1, this.tmpTransform_ = qr(), this.tileClipContexts_ = null; + super(e, t), this.boundHandleStyleImageChange_ = this.handleStyleImageChange_.bind(this), this.renderedLayerRevision_, this.renderedPixelToCoordinateTransform_ = null, this.renderedRotation_, this.renderedOpacity_ = 1, this.tmpTransform_ = Kr(), this.tileClipContexts_ = null; } enqueueTilesForNextExtent() { return this.getLayer().getRenderMode() !== "vector"; @@ -19011,15 +10657,7 @@ var Df = class extends Au { getTile(e, t, n, r) { let i = this.getOrCreateTile(e, t, n, r); if (!i) return null; -<<<<<<< Updated upstream -<<<<<<< Updated upstream let a = r.viewState, o = a.resolution, s = r.viewHints, c = this.getLayer().getSource(), l = c.getTileGridForProjection(a.projection), u = !(s[V.ANIMATING] || s[V.INTERACTING]), d = l.getZForResolution(o, c.zDirection) === e; -======= - let a = r.viewState, o = a.resolution, s = r.viewHints, c = this.getLayer().getSource(), l = c.getTileGridForProjection(a.projection), u = !(s[Lr.ANIMATING] || s[Lr.INTERACTING]), d = l.getZForResolution(o, c.zDirection) === e; ->>>>>>> Stashed changes -======= - let a = r.viewState, o = a.resolution, s = r.viewHints, c = this.getLayer().getSource(), l = c.getTileGridForProjection(a.projection), u = !(s[Lr.ANIMATING] || s[Lr.INTERACTING]), d = l.getZForResolution(o, c.zDirection) === e; ->>>>>>> Stashed changes return u && d ? i.wantedResolution = o : i.wantedResolution ||= l.getResolution(e), i; } prepareFrame(e) { @@ -19035,16 +10673,8 @@ var Df = class extends Au { let m = f[i]; if (m.getState() != I.LOADED) continue; let h = c.getProjection(), g = m.tileCoord, _ = u.getTileCoordExtent(g); -<<<<<<< Updated upstream n && h && !Sr(n, h) && (_ = Dr(_, h, n, 32)); let v = wt(d, _), y = Qe(v, r.getRenderBuffer() * o, this.tempExtent), b = ut(_, v) ? null : y, x = new cd(0, v, o, t), S = Ud(o, t), C = function(e, t) { -======= - n && h && !cr(n, h) && (_ = pr(_, h, n, 32)); - let v = lt(d, _), y = Le(v, r.getRenderBuffer() * o, this.tempExtent), b = Ye(_, v) ? null : y, x = new Md(0, v, o, t), S = mf(o, t), C = function(e, t) { -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes let n, i = e.getStyleFunction() || r.getStyleFunction(); if (i && (n = i(e, o)), n) { let r = this.renderFeature(e, S, n, x, l, t); @@ -19056,15 +10686,7 @@ var Df = class extends Au { let t = w[e]; n && m.projection && !Sr(n, m.projection) && (t = t.clone(), t.getGeometry().applyTransform(Tr(m.projection, n))), (!b || Ot(b, t.getGeometry().getExtent())) && C.call(this, t, e); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream let T = x.finish(), E = new Nd(r.getRenderMode() !== "vector" && l && f.length === 1 ? null : v, o, t, c.getOverlaps(), T, r.getRenderBuffer(), !0); -======= - let T = x.finish(), E = new rf(r.getRenderMode() !== "vector" && l && f.length === 1 ? null : v, o, t, c.getOverlaps(), T, r.getRenderBuffer(), !0); ->>>>>>> Stashed changes -======= - let T = x.finish(), E = new rf(r.getRenderMode() !== "vector" && l && f.length === 1 ? null : v, o, t, c.getOverlaps(), T, r.getRenderBuffer(), !0); ->>>>>>> Stashed changes e.executorGroups[p].push(E); } s.renderedRevision = i, s.renderedPixelRatio = t, s.renderedRenderOrder = a, s.renderedResolution = o; @@ -19102,15 +10724,7 @@ var Df = class extends Au { } getFeatures(e) { return this.renderedTiles.length === 0 ? Promise.resolve([]) : new Promise((t, n) => { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let r = this.getLayer(), i = r.getSource(), a = this.renderedProjection, o = a.getExtent(), s = this.renderedResolution, c = i.getTileGridForProjection(a), l = B(this.renderedPixelToCoordinateTransform_, e.slice()), u = c.getTileCoordForCoordAndResolution(l, s).toString(), d = this.renderedTiles.find((e) => e.tileCoord.toString() === u && e.getState() === I.LOADED); -======= - let r = this.getLayer(), i = r.getSource(), a = this.renderedProjection, o = a.getExtent(), s = this.renderedResolution, c = i.getTileGridForProjection(a), l = z(this.renderedPixelToCoordinateTransform_, e.slice()), u = c.getTileCoordForCoordAndResolution(l, s).toString(), d = this.renderedTiles.find((e) => e.tileCoord.toString() === u && e.getState() === L.LOADED); ->>>>>>> Stashed changes -======= - let r = this.getLayer(), i = r.getSource(), a = this.renderedProjection, o = a.getExtent(), s = this.renderedResolution, c = i.getTileGridForProjection(a), l = z(this.renderedPixelToCoordinateTransform_, e.slice()), u = c.getTileCoordForCoordAndResolution(l, s).toString(), d = this.renderedTiles.find((e) => e.tileCoord.toString() === u && e.getState() === L.LOADED); ->>>>>>> Stashed changes if (!d || d.loadingSourceTiles > 0) { t([]); return; @@ -19118,24 +10732,10 @@ var Df = class extends Au { i.getWrapX() && a.canWrapX() && !nt(o, c.getTileCoordExtent(d.tileCoord)) && rn(l, a); let f = O(r), p = Et(c.getTileCoordExtent(d.wrappedTileCoord)), m = [(l[0] - p[0]) / s, (p[1] - l[1]) / s], h = d.getSourceTiles().reduce((e, t) => e.concat(t.getFeatures()), []), g = d.hitDetectionImageData[f]; if (!g) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let e = pi(c.getTileSize(c.getZForResolution(s, i.zDirection))), t = this.renderedRotation_; g = Rd(e, [this.getRenderTransform(c.getTileCoordCenter(d.wrappedTileCoord), s, 0, Ld, e[0] * Ld, e[1] * Ld, 0)], h, r.getStyleFunction(), c.getTileCoordExtent(d.wrappedTileCoord), d.getReplayState(r).renderedResolution, t), d.hitDetectionImageData[f] = g; } t(zd(m, h, g)); -======= - let e = rs(c.getTileSize(c.getZForResolution(s, i.zDirection))), t = this.renderedRotation_; - g = lf(e, [this.getRenderTransform(c.getTileCoordCenter(d.wrappedTileCoord), s, 0, cf, e[0] * cf, e[1] * cf, 0)], h, r.getStyleFunction(), c.getTileCoordExtent(d.wrappedTileCoord), d.getReplayState(r).renderedResolution, t), d.hitDetectionImageData[f] = g; - } - t(uf(m, h, g)); ->>>>>>> Stashed changes -======= - let e = rs(c.getTileSize(c.getZForResolution(s, i.zDirection))), t = this.renderedRotation_; - g = lf(e, [this.getRenderTransform(c.getTileCoordCenter(d.wrappedTileCoord), s, 0, cf, e[0] * cf, e[1] * cf, 0)], h, r.getStyleFunction(), c.getTileCoordExtent(d.wrappedTileCoord), d.getReplayState(r).renderedResolution, t), d.hitDetectionImageData[f] = g; - } - t(uf(m, h, g)); ->>>>>>> Stashed changes }); } getFeaturesInExtent(e) { @@ -19170,24 +10770,10 @@ var Df = class extends Au { renderDeclutter(e, t) { let n = this.context, r = n.globalAlpha; n.globalAlpha = t.opacity; -<<<<<<< Updated upstream -<<<<<<< Updated upstream let i = e.viewHints, a = !(i[V.ANIMATING] || i[V.INTERACTING]), o = [this.context.canvas.width, this.context.canvas.height], s = this.getLayer().getDeclutter(), c = s ? e.declutter?.[s] : void 0, l = O(this.getLayer()), u = this.renderedTiles; for (let t = 0, n = u.length; t < n; ++t) { let n = u[t], r = n.executorGroups[l]; if (r) for (let t = r.length - 1; t >= 0; --t) r[t].execute(this.context, o, this.getTileRenderTransform(n, e), e.viewState.rotation, a, Od, c); -======= - let i = e.viewHints, a = !(i[Lr.ANIMATING] || i[Lr.INTERACTING]), o = [this.context.canvas.width, this.context.canvas.height], s = this.getLayer().getDeclutter(), c = s ? e.declutter?.[s] : void 0, l = F(this.getLayer()), u = this.renderedTiles; - for (let t = 0, n = u.length; t < n; ++t) { - let n = u[t], r = n.executorGroups[l]; - if (r) for (let t = r.length - 1; t >= 0; --t) r[t].execute(this.context, o, this.getTileRenderTransform(n, e), e.viewState.rotation, a, Qd, c); ->>>>>>> Stashed changes -======= - let i = e.viewHints, a = !(i[Lr.ANIMATING] || i[Lr.INTERACTING]), o = [this.context.canvas.width, this.context.canvas.height], s = this.getLayer().getDeclutter(), c = s ? e.declutter?.[s] : void 0, l = F(this.getLayer()), u = this.renderedTiles; - for (let t = 0, n = u.length; t < n; ++t) { - let n = u[t], r = n.executorGroups[l]; - if (r) for (let t = r.length - 1; t >= 0; --t) r[t].execute(this.context, o, this.getTileRenderTransform(n, e), e.viewState.rotation, a, Qd, c); ->>>>>>> Stashed changes } n.globalAlpha = r; } @@ -19214,7 +10800,7 @@ var Df = class extends Au { } getTileRenderTransform(e, t) { let n = t.pixelRatio, r = t.viewState, i = r.center, a = r.resolution, o = r.rotation, s = t.size, c = Math.round(s[0] * n), l = Math.round(s[1] * n), u = this.getLayer().getSource().getTileGridForProjection(t.viewState.projection), d = e.tileCoord, f = u.getTileCoordExtent(e.wrappedTileCoord), p = u.getTileCoordExtent(d, this.tempExtent)[0] - f[0]; - return Yr(Qr(this.inversePixelTransform.slice(), 1 / n, 1 / n), this.getRenderTransform(i, a, o, n, c, l, p)); + return Jr(Zr(this.inversePixelTransform.slice(), 1 / n, 1 / n), this.getRenderTransform(i, a, o, n, c, l, p)); } clipTileContext_(e, t, n, r, i, a) { let o = []; @@ -19223,33 +10809,17 @@ var Df = class extends Au { let s = It(t, o); e.save(), e.beginPath(); for (let t = 0, n = s.length; t < n; ++t) { - let n = s[t], r = z(a, [n[0], n[1]]), i = z(a, [n[0], n[3]]), o = z(a, [n[2], n[3]]), c = z(a, [n[2], n[1]]); + let n = s[t], r = B(a, [n[0], n[1]]), i = B(a, [n[0], n[3]]), o = B(a, [n[2], n[3]]), c = B(a, [n[2], n[1]]); e.moveTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.lineTo(o[0], o[1]), e.lineTo(c[0], c[1]), e.closePath(); } return e.clip(), !0; } postRender(e, t) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let n = t.viewHints, r = !(n[V.ANIMATING] || n[V.INTERACTING]); this.renderedPixelToCoordinateTransform_ = t.pixelToCoordinateTransform.slice(), this.renderedRotation_ = t.viewState.rotation, this.renderedOpacity_ = t.layerStatesArray[t.layerIndex].opacity; let i = this.getLayer(), a = i.getRenderMode(), o = e.globalAlpha; e.globalAlpha = this.renderedOpacity_; let s = i.getDeclutter(), c = s ? of[a].filter((e) => !Od.includes(e)) : of[a], l = t.viewState, u = l.rotation; -======= - let n = t.viewHints, r = !(n[Lr.ANIMATING] || n[Lr.INTERACTING]); - this.renderedPixelToCoordinateTransform_ = t.pixelToCoordinateTransform.slice(), this.renderedRotation_ = t.viewState.rotation, this.renderedOpacity_ = t.layerStatesArray[t.layerIndex].opacity; - let i = this.getLayer(), a = i.getRenderMode(), o = e.globalAlpha; - e.globalAlpha = this.renderedOpacity_; - let s = i.getDeclutter(), c = s ? Af[a].filter((e) => !Qd.includes(e)) : Af[a], l = t.viewState, u = l.rotation; ->>>>>>> Stashed changes -======= - let n = t.viewHints, r = !(n[Lr.ANIMATING] || n[Lr.INTERACTING]); - this.renderedPixelToCoordinateTransform_ = t.pixelToCoordinateTransform.slice(), this.renderedRotation_ = t.viewState.rotation, this.renderedOpacity_ = t.layerStatesArray[t.layerIndex].opacity; - let i = this.getLayer(), a = i.getRenderMode(), o = e.globalAlpha; - e.globalAlpha = this.renderedOpacity_; - let s = i.getDeclutter(), c = s ? Af[a].filter((e) => !Qd.includes(e)) : Af[a], l = t.viewState, u = l.rotation; ->>>>>>> Stashed changes this.layerExtent && this.clipUnrotated(e, t, this.layerExtent); let d = i.getSource(), f = d.getTileGridForProjection(l.projection).getZForResolution(l.resolution, d.zDirection), p = this.renderedTiles, m = [], h = [], g = [], _ = O(i), v = !0; for (let n = p.length - 1; n >= 0; --n) { @@ -19257,7 +10827,7 @@ var Df = class extends Au { v &&= !a.getReplayState(i).dirty; let o = a.executorGroups[_].filter((e) => e.hasExecutors(c)); if (o.length === 0) continue; - let l = this.getTileRenderTransform(a, t), d = a.tileCoord[0], y = !1, b = o[0].getClipCoords(Gr), x = e, S; + let l = this.getTileRenderTransform(a, t), d = a.tileCoord[0], y = !1, b = o[0].getClipCoords(Wr), x = e, S; if (b) { let e = [ b[0], @@ -19265,15 +10835,7 @@ var Df = class extends Au { b[4], b[5] ]; -<<<<<<< Updated upstream -<<<<<<< Updated upstream S = new qi(), x = S.getContext(), f !== d && (y = this.clipTileContext_(x, e, m, h, d, l)), m.push(e), h.push(d); -======= - S = new wu(), x = S.getContext(), f !== d && (y = this.clipTileContext_(x, e, m, h, d, l)), m.push(e), h.push(d); ->>>>>>> Stashed changes -======= - S = new wu(), x = S.getContext(), f !== d && (y = this.clipTileContext_(x, e, m, h, d, l)), m.push(e), h.push(d); ->>>>>>> Stashed changes } for (let n = 0, i = o.length; n < i; ++n) o[n].execute(e, [e.canvas.width, e.canvas.height], l, u, r, c, t.declutter?.[s]); y && (x === e ? x.restore() : g[n] = S); @@ -19283,18 +10845,8 @@ var Df = class extends Au { renderFeature(e, t, n, r, i, a) { if (!n) return !1; let o = !1; -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (Array.isArray(n)) for (let s = 0, c = n.length; s < c; ++s) o = Kd(r, e, n[s], t, this.boundHandleStyleImageChange_, void 0, i, a) || o; else o = Kd(r, e, n, t, this.boundHandleStyleImageChange_, void 0, i, a); -======= - if (Array.isArray(n)) for (let s = 0, c = n.length; s < c; ++s) o = _f(r, e, n[s], t, this.boundHandleStyleImageChange_, void 0, i, a) || o; - else o = _f(r, e, n, t, this.boundHandleStyleImageChange_, void 0, i, a); ->>>>>>> Stashed changes -======= - if (Array.isArray(n)) for (let s = 0, c = n.length; s < c; ++s) o = _f(r, e, n[s], t, this.boundHandleStyleImageChange_, void 0, i, a) || o; - else o = _f(r, e, n, t, this.boundHandleStyleImageChange_, void 0, i, a); ->>>>>>> Stashed changes return o; } tileImageNeedsRender_(e) { @@ -19312,33 +10864,15 @@ var Df = class extends Au { h.canvas.width = g[0], h.canvas.height = g[1]; let _ = l / p; if (_ !== 1) { - let e = Jr(this.tmpTransform_); - Qr(e, _, _), h.setTransform.apply(h, e); + let e = qr(this.tmpTransform_); + Zr(e, _, _), h.setTransform.apply(h, e); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream let v = d.getTileCoordExtent(o, this.tempExtent), y = p / m, b = qr(this.tmpTransform_); Zr(b, y, -y), Qr(b, -v[0], -v[3]); for (let e = 0, t = a.length; e < t; ++e) a[e].execute(h, [h.canvas.width * _, h.canvas.height * _], b, 0, !0, af[n.getRenderMode()], null); r.renderedTileResolution = e.wantedResolution; } }, cf = class extends cu { -======= - let v = d.getTileCoordExtent(o, this.tempExtent), y = p / m, b = Jr(this.tmpTransform_); - Qr(b, y, -y), $r(b, -v[0], -v[3]); - for (let e = 0, t = a.length; e < t; ++e) a[e].execute(h, [h.canvas.width * _, h.canvas.height * _], b, 0, !0, kf[n.getRenderMode()], null); - r.renderedTileResolution = e.wantedResolution; - } -}, Mf = class extends Al { ->>>>>>> Stashed changes -======= - let v = d.getTileCoordExtent(o, this.tempExtent), y = p / m, b = Jr(this.tmpTransform_); - Qr(b, y, -y), $r(b, -v[0], -v[3]); - for (let e = 0, t = a.length; e < t; ++e) a[e].execute(h, [h.canvas.width * _, h.canvas.height * _], b, 0, !0, kf[n.getRenderMode()], null); - r.renderedTileResolution = e.wantedResolution; - } -}, Mf = class extends Al { ->>>>>>> Stashed changes constructor(e) { e ||= {}; let t = Object.assign({}, e); @@ -19349,15 +10883,7 @@ var Df = class extends Au { z(r == "hybrid" || r == "vector", "`renderMode` must be `'hybrid'` or `'vector'`"), this.renderMode_ = r, this.setPreload(e.preload ? e.preload : 0), this.setUseInterimTilesOnError(e.useInterimTilesOnError === void 0 || e.useInterimTilesOnError), this.getBackground, this.setBackground; } createRenderer() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return new sf(this, { cacheSize: this.cacheSize_ }); -======= - return new jf(this, { cacheSize: this.cacheSize_ }); ->>>>>>> Stashed changes -======= - return new jf(this, { cacheSize: this.cacheSize_ }); ->>>>>>> Stashed changes } getFeatures(e) { return super.getFeatures(e); @@ -19369,8 +10895,6 @@ var Df = class extends Au { return this.renderMode_; } getPreload() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return this.get(xo.PRELOAD); } getUseInterimTilesOnError() { @@ -19383,34 +10907,6 @@ var Df = class extends Au { this.set(xo.USE_INTERIM_TILES_ON_ERROR, e); } }, lf = class extends $i { -======= - return this.get(Fu.PRELOAD); - } - getUseInterimTilesOnError() { - return this.get(Fu.USE_INTERIM_TILES_ON_ERROR); - } - setPreload(e) { - this.set(Fu.PRELOAD, e); - } - setUseInterimTilesOnError(e) { - this.set(Fu.USE_INTERIM_TILES_ON_ERROR, e); - } -}, Nf = class extends Au { ->>>>>>> Stashed changes -======= - return this.get(Fu.PRELOAD); - } - getUseInterimTilesOnError() { - return this.get(Fu.USE_INTERIM_TILES_ON_ERROR); - } - setPreload(e) { - this.set(Fu.PRELOAD, e); - } - setUseInterimTilesOnError(e) { - this.set(Fu.USE_INTERIM_TILES_ON_ERROR, e); - } -}, Nf = class extends Au { ->>>>>>> Stashed changes constructor(e) { super(e), this.image = null, this.renderedSourceRevision_ = 0; } @@ -19419,27 +10915,11 @@ var Df = class extends Au { } prepareFrame(e) { let t = e.layerStatesArray[e.layerIndex], n = e.pixelRatio, r = e.viewState, i = r.resolution, a = this.getLayer().getSource(), o = e.viewHints, s = e.extent; -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (t.extent !== void 0 && (s = wt(s, Nr(t.extent, r.projection))), !o[V.ANIMATING] && !o[V.INTERACTING] && !kt(s)) { if (a) { !this.getLayer().rendered && this.renderedSourceRevision_ !== a.getRevision() && (this.image = null), this.renderedSourceRevision_ = a.getRevision(); let e = r.projection, t = a.getImage(s, i, n, e); t && (this.loadImage(t) ? this.image = t : t.getState() === L.EMPTY && (this.image = null)); -======= - if (t.extent !== void 0 && (s = lt(s, yr(t.extent, r.projection))), !o[Lr.ANIMATING] && !o[Lr.INTERACTING] && !mt(s)) { - if (a) { - !this.getLayer().rendered && this.renderedSourceRevision_ !== a.getRevision() && (this.image = null), this.renderedSourceRevision_ = a.getRevision(); - let e = r.projection, t = a.getImage(s, i, n, e); - t && (this.loadImage(t) ? this.image = t : t.getState() === J.EMPTY && (this.image = null)); ->>>>>>> Stashed changes -======= - if (t.extent !== void 0 && (s = lt(s, yr(t.extent, r.projection))), !o[Lr.ANIMATING] && !o[Lr.INTERACTING] && !mt(s)) { - if (a) { - !this.getLayer().rendered && this.renderedSourceRevision_ !== a.getRevision() && (this.image = null), this.renderedSourceRevision_ = a.getRevision(); - let e = r.projection, t = a.getImage(s, i, n, e); - t && (this.loadImage(t) ? this.image = t : t.getState() === J.EMPTY && (this.image = null)); ->>>>>>> Stashed changes } else this.image = null; } return !!this.image; @@ -19447,18 +10927,9 @@ var Df = class extends Au { getData(e) { let t = this.frameState; if (!t) return null; -<<<<<<< Updated upstream -<<<<<<< Updated upstream let n = this.getLayer(), r = B(t.pixelToCoordinateTransform, e.slice()), i = n.getExtent(); if (i && !tt(i, r)) return null; let a = this.image.getExtent(), o = this.image.getImage(), s = R(a), c = Math.floor(o.width * ((r[0] - a[0]) / s)); -======= -======= ->>>>>>> Stashed changes - let n = this.getLayer(), r = z(t.pixelToCoordinateTransform, e.slice()), i = n.getExtent(); - if (i && !Be(i, r)) return null; - let a = this.image.getExtent(), o = this.image.getImage(), s = I(a), c = Math.floor(o.width * ((r[0] - a[0]) / s)); ->>>>>>> Stashed changes if (c < 0 || c >= o.width) return null; let l = Ct(a), u = Math.floor(o.height * ((a[3] - r[1]) / l)); return u < 0 || u >= o.height ? null : this.getImageData(o, c, u); @@ -19471,7 +10942,7 @@ var Df = class extends Au { let t = Nr(c.extent, u.projection); y = Ot(t, e.extent), v = y && !nt(t, e.extent), v && this.clipUnrotated(_, e, t); } - let b = n.getImage(), x = ei(this.tempTransform, h / 2, g / 2, p, m, 0, s * (r[0] - d[0]) / a, s * (d[1] - r[3]) / o); + let b = n.getImage(), x = $r(this.tempTransform, h / 2, g / 2, p, m, 0, s * (r[0] - d[0]) / a, s * (d[1] - r[3]) / o); this.renderedResolution = o * l / s; let S = b.width * x[0], C = b.height * x[3]; if (this.getLayer().getSource().getInterpolate() || (_.imageSmoothingEnabled = !1), this.preRender(_, e), y && S >= .5 && C >= .5) { @@ -19480,40 +10951,16 @@ var Df = class extends Au { } return this.postRender(this.context, e), v && _.restore(), _.imageSmoothingEnabled = !0, this.container; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, uf = class extends yo { constructor(e) { e ||= {}, super(e); } }, df = class extends uf { -======= -}, Pf = class extends uo { - constructor(e) { - e ||= {}, super(e); - } -}, Ff = class extends Pf { ->>>>>>> Stashed changes -======= -}, Pf = class extends uo { - constructor(e) { - e ||= {}, super(e); - } -}, Ff = class extends Pf { ->>>>>>> Stashed changes constructor(e) { super(e); } createRenderer() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return new lf(this); -======= - return new Nf(this); ->>>>>>> Stashed changes -======= - return new Nf(this); ->>>>>>> Stashed changes } getData(e) { return super.getData(e); @@ -19521,15 +10968,7 @@ var Df = class extends Au { }; //#endregion //#region node_modules/ol/vec/mat4.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function ff() { -======= -function If() { ->>>>>>> Stashed changes -======= -function If() { ->>>>>>> Stashed changes return [ 1, 0, @@ -19549,8 +10988,6 @@ function If() { 1 ]; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function pf(e) { return e[0] = 1, e[1] = 0, e[2] = 0, e[3] = 0, e[4] = 0, e[5] = 1, e[6] = 0, e[7] = 0, e[8] = 0, e[9] = 0, e[10] = 1, e[11] = 0, e[12] = 0, e[13] = 0, e[14] = 0, e[15] = 1, e; } @@ -19567,97 +11004,31 @@ function gf(e, t, n, r, i) { } function _f(e, t, n) { n ??= ff(); -======= -function Lf(e) { - return e[0] = 1, e[1] = 0, e[2] = 0, e[3] = 0, e[4] = 0, e[5] = 1, e[6] = 0, e[7] = 0, e[8] = 0, e[9] = 0, e[10] = 1, e[11] = 0, e[12] = 0, e[13] = 0, e[14] = 0, e[15] = 1, e; -} -function Rf(e, t) { - return e[0] = t[0], e[1] = t[1], e[4] = t[2], e[5] = t[3], e[12] = t[4], e[13] = t[5], e; -} -function zf(e, t, n, r, i) { - return i ??= If(), i[0] = e[0] * t, i[1] = e[1] * t, i[2] = e[2] * t, i[3] = e[3] * t, i[4] = e[4] * n, i[5] = e[5] * n, i[6] = e[6] * n, i[7] = e[7] * n, i[8] = e[8] * r, i[9] = e[9] * r, i[10] = e[10] * r, i[11] = e[11] * r, i[12] = e[12], i[13] = e[13], i[14] = e[14], i[15] = e[15], i; -} -function Bf(e, t, n, r, i) { - i ??= If(); - let a, o, s, c, l, u, d, f, p, m, h, g; - return e === i ? (i[12] = e[0] * t + e[4] * n + e[8] * r + e[12], i[13] = e[1] * t + e[5] * n + e[9] * r + e[13], i[14] = e[2] * t + e[6] * n + e[10] * r + e[14], i[15] = e[3] * t + e[7] * n + e[11] * r + e[15]) : (a = e[0], o = e[1], s = e[2], c = e[3], l = e[4], u = e[5], d = e[6], f = e[7], p = e[8], m = e[9], h = e[10], g = e[11], i[0] = a, i[1] = o, i[2] = s, i[3] = c, i[4] = l, i[5] = u, i[6] = d, i[7] = f, i[8] = p, i[9] = m, i[10] = h, i[11] = g, i[12] = a * t + l * n + p * r + e[12], i[13] = o * t + u * n + m * r + e[13], i[14] = s * t + d * n + h * r + e[14], i[15] = c * t + f * n + g * r + e[15]), i; -} -function Vf(e, t, n) { - n ??= If(); ->>>>>>> Stashed changes -======= -function Lf(e) { - return e[0] = 1, e[1] = 0, e[2] = 0, e[3] = 0, e[4] = 0, e[5] = 1, e[6] = 0, e[7] = 0, e[8] = 0, e[9] = 0, e[10] = 1, e[11] = 0, e[12] = 0, e[13] = 0, e[14] = 0, e[15] = 1, e; -} -function Rf(e, t) { - return e[0] = t[0], e[1] = t[1], e[4] = t[2], e[5] = t[3], e[12] = t[4], e[13] = t[5], e; -} -function zf(e, t, n, r, i) { - return i ??= If(), i[0] = e[0] * t, i[1] = e[1] * t, i[2] = e[2] * t, i[3] = e[3] * t, i[4] = e[4] * n, i[5] = e[5] * n, i[6] = e[6] * n, i[7] = e[7] * n, i[8] = e[8] * r, i[9] = e[9] * r, i[10] = e[10] * r, i[11] = e[11] * r, i[12] = e[12], i[13] = e[13], i[14] = e[14], i[15] = e[15], i; -} -function Bf(e, t, n, r, i) { - i ??= If(); - let a, o, s, c, l, u, d, f, p, m, h, g; - return e === i ? (i[12] = e[0] * t + e[4] * n + e[8] * r + e[12], i[13] = e[1] * t + e[5] * n + e[9] * r + e[13], i[14] = e[2] * t + e[6] * n + e[10] * r + e[14], i[15] = e[3] * t + e[7] * n + e[11] * r + e[15]) : (a = e[0], o = e[1], s = e[2], c = e[3], l = e[4], u = e[5], d = e[6], f = e[7], p = e[8], m = e[9], h = e[10], g = e[11], i[0] = a, i[1] = o, i[2] = s, i[3] = c, i[4] = l, i[5] = u, i[6] = d, i[7] = f, i[8] = p, i[9] = m, i[10] = h, i[11] = g, i[12] = a * t + l * n + p * r + e[12], i[13] = o * t + u * n + m * r + e[13], i[14] = s * t + d * n + h * r + e[14], i[15] = c * t + f * n + g * r + e[15]), i; -} -function Vf(e, t, n) { - n ??= If(); ->>>>>>> Stashed changes let r = Math.cos(t), i = Math.sin(t), a = r, o = -i, s = i, c = r, l = e[0], u = e[1], d = e[2], f = e[3], p = e[4], m = e[5], h = e[6], g = e[7]; return n[0] = a * l + o * p, n[1] = a * u + o * m, n[2] = a * d + o * h, n[3] = a * f + o * g, n[4] = s * l + c * p, n[5] = s * u + c * m, n[6] = s * d + c * h, n[7] = s * f + c * g, n !== e && (n[8] = e[8], n[9] = e[9], n[10] = e[10], n[11] = e[11], n[12] = e[12], n[13] = e[13], n[14] = e[14], n[15] = e[15]), n; } //#endregion //#region node_modules/ol/webgl.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var vf = 34962, yf = 34963, bf = 35040, xf = 35044, Sf = 35048, Cf = 5121, wf = 5123, Tf = 5125, Ef = 5126, Df = [ -======= -var Hf = 34962, Uf = 34963, Wf = 35040, Gf = 35044, Kf = 35048, qf = 5121, Jf = 5123, Yf = 5125, Xf = 5126, Zf = [ ->>>>>>> Stashed changes -======= -var Hf = 34962, Uf = 34963, Wf = 35040, Gf = 35044, Kf = 35048, qf = 5121, Jf = 5123, Yf = 5125, Xf = 5126, Zf = [ ->>>>>>> Stashed changes "experimental-webgl", "webgl", "webkit-3d", "moz-webgl" ]; -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Of(e, t) { -======= -function Qf(e, t) { ->>>>>>> Stashed changes -======= -function Qf(e, t) { ->>>>>>> Stashed changes t = Object.assign({ preserveDrawingBuffer: !0, antialias: !le }, t); -<<<<<<< Updated upstream -<<<<<<< Updated upstream let n = Df.length; for (let r = 0; r < n; ++r) try { let n = e.getContext(Df[r], t); -======= - let n = Zf.length; - for (let r = 0; r < n; ++r) try { - let n = e.getContext(Zf[r], t); ->>>>>>> Stashed changes -======= - let n = Zf.length; - for (let r = 0; r < n; ++r) try { - let n = e.getContext(Zf[r], t); ->>>>>>> Stashed changes if (n) return n; } catch {} return null; } //#endregion //#region node_modules/ol/webgl/Buffer.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var kf = { STATIC_DRAW: xf, STREAM_DRAW: bf, @@ -19674,42 +11045,6 @@ var kf = { } fromArrayBuffer(e) { return this.array_ = new (jf(this.type_))(e), this; -======= -var $f = { - STATIC_DRAW: Gf, - STREAM_DRAW: Wf, - DYNAMIC_DRAW: Kf -}, ep = class { - constructor(e, t) { - this.array_ = null, this.type_ = e, R(e === 34962 || e === 34963, "A `WebGLArrayBuffer` must either be of type `ELEMENT_ARRAY_BUFFER` or `ARRAY_BUFFER`"), this.usage_ = t === void 0 ? $f.STATIC_DRAW : t; - } - ofSize(e) { - return this.array_ = new (tp(this.type_))(e), this; - } - fromArray(e) { - return this.array_ = tp(this.type_).from(e), this; - } - fromArrayBuffer(e) { - return this.array_ = new (tp(this.type_))(e), this; ->>>>>>> Stashed changes -======= -var $f = { - STATIC_DRAW: Gf, - STREAM_DRAW: Wf, - DYNAMIC_DRAW: Kf -}, ep = class { - constructor(e, t) { - this.array_ = null, this.type_ = e, R(e === 34962 || e === 34963, "A `WebGLArrayBuffer` must either be of type `ELEMENT_ARRAY_BUFFER` or `ARRAY_BUFFER`"), this.usage_ = t === void 0 ? $f.STATIC_DRAW : t; - } - ofSize(e) { - return this.array_ = new (tp(this.type_))(e), this; - } - fromArray(e) { - return this.array_ = tp(this.type_).from(e), this; - } - fromArrayBuffer(e) { - return this.array_ = new (tp(this.type_))(e), this; ->>>>>>> Stashed changes } getType() { return this.type_; @@ -19718,15 +11053,7 @@ var $f = { return this.array_; } setArray(e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let t = jf(this.type_); -======= - let t = tp(this.type_); ->>>>>>> Stashed changes -======= - let t = tp(this.type_); ->>>>>>> Stashed changes if (!(e instanceof t)) throw Error(`Expected ${t}`); this.array_ = e; } @@ -19737,67 +11064,27 @@ var $f = { return this.array_ ? this.array_.length : 0; } }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream function jf(e) { switch (e) { case vf: return Float32Array; case yf: return Uint32Array; -======= -function tp(e) { - switch (e) { - case Hf: return Float32Array; - case Uf: return Uint32Array; ->>>>>>> Stashed changes -======= -function tp(e) { - switch (e) { - case Hf: return Float32Array; - case Uf: return Uint32Array; ->>>>>>> Stashed changes default: return Float32Array; } } //#endregion //#region node_modules/ol/webgl/ContextEventType.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var Mf = { LOST: "webglcontextlost", RESTORED: "webglcontextrestored" }, Nf = "\n precision mediump float;\n\n attribute vec2 a_position;\n varying vec2 v_texCoord;\n varying vec2 v_screenCoord;\n\n uniform vec2 u_screenSize;\n\n void main() {\n v_texCoord = a_position * 0.5 + 0.5;\n v_screenCoord = v_texCoord * u_screenSize;\n gl_Position = vec4(a_position, 0.0, 1.0);\n }\n", Pf = "\n precision mediump float;\n\n uniform sampler2D u_image;\n uniform float u_opacity;\n\n varying vec2 v_texCoord;\n\n void main() {\n gl_FragColor = texture2D(u_image, v_texCoord) * u_opacity;\n }\n", Ff = class { -======= -var np = { - LOST: "webglcontextlost", - RESTORED: "webglcontextrestored" -}, rp = "\n precision mediump float;\n\n attribute vec2 a_position;\n varying vec2 v_texCoord;\n varying vec2 v_screenCoord;\n\n uniform vec2 u_screenSize;\n\n void main() {\n v_texCoord = a_position * 0.5 + 0.5;\n v_screenCoord = v_texCoord * u_screenSize;\n gl_Position = vec4(a_position, 0.0, 1.0);\n }\n", ip = "\n precision mediump float;\n\n uniform sampler2D u_image;\n uniform float u_opacity;\n\n varying vec2 v_texCoord;\n\n void main() {\n gl_FragColor = texture2D(u_image, v_texCoord) * u_opacity;\n }\n", ap = class { ->>>>>>> Stashed changes -======= -var np = { - LOST: "webglcontextlost", - RESTORED: "webglcontextrestored" -}, rp = "\n precision mediump float;\n\n attribute vec2 a_position;\n varying vec2 v_texCoord;\n varying vec2 v_screenCoord;\n\n uniform vec2 u_screenSize;\n\n void main() {\n v_texCoord = a_position * 0.5 + 0.5;\n v_screenCoord = v_texCoord * u_screenSize;\n gl_Position = vec4(a_position, 0.0, 1.0);\n }\n", ip = "\n precision mediump float;\n\n uniform sampler2D u_image;\n uniform float u_opacity;\n\n varying vec2 v_texCoord;\n\n void main() {\n gl_FragColor = texture2D(u_image, v_texCoord) * u_opacity;\n }\n", ap = class { ->>>>>>> Stashed changes constructor(e) { this.gl_ = e.webGlContext; let t = this.gl_; this.scaleRatio_ = e.scaleRatio || 1, this.renderTargetTexture_ = t.createTexture(), this.renderTargetTextureSize_ = null, this.frameBuffer_ = t.createFramebuffer(), this.depthBuffer_ = t.createRenderbuffer(); let n = t.createShader(t.VERTEX_SHADER); -<<<<<<< Updated upstream -<<<<<<< Updated upstream t.shaderSource(n, e.vertexShader || Nf), t.compileShader(n); let r = t.createShader(t.FRAGMENT_SHADER); if (t.shaderSource(r, e.fragmentShader || Pf), t.compileShader(r), !t.getShaderParameter(r, t.COMPILE_STATUS)) { -======= - t.shaderSource(n, e.vertexShader || rp), t.compileShader(n); - let r = t.createShader(t.FRAGMENT_SHADER); - if (t.shaderSource(r, e.fragmentShader || ip), t.compileShader(r), !t.getShaderParameter(r, t.COMPILE_STATUS)) { ->>>>>>> Stashed changes -======= - t.shaderSource(n, e.vertexShader || rp), t.compileShader(n); - let r = t.createShader(t.FRAGMENT_SHADER); - if (t.shaderSource(r, e.fragmentShader || ip), t.compileShader(r), !t.getShaderParameter(r, t.COMPILE_STATUS)) { ->>>>>>> Stashed changes let e = `Fragment shader compilation failed: ${t.getShaderInfoLog(r)}`; throw Error(e); } @@ -19876,15 +11163,7 @@ var np = { else typeof n == "number" && t.uniform1f(i.location, n); }); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, If = { -======= -}, op = { ->>>>>>> Stashed changes -======= -}, op = { ->>>>>>> Stashed changes PROJECTION_MATRIX: "u_projectionMatrix", INVERT_PROJECTION_MATRIX: "u_invertProjectionMatrix", TIME: "u_time", @@ -19894,8 +11173,6 @@ var np = { VIEWPORT_SIZE_PX: "u_viewportSizePx", PIXEL_RATIO: "u_pixelRatio", HIT_DETECTION: "u_hitDetection" -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, Lf = { UNSIGNED_BYTE: Cf, UNSIGNED_SHORT: wf, @@ -19912,48 +11189,10 @@ function Vf() { } function Hf(e) { let t = Rf[e]; -======= -}, sp = { - UNSIGNED_BYTE: qf, - UNSIGNED_SHORT: Jf, - UNSIGNED_INT: Yf, - FLOAT: Xf -}, cp = {}; -function lp(e) { - return "shared/" + e; -} -var up = 0; -function dp() { - let e = "unique/" + up; - return up += 1, e; -} -function fp(e) { - let t = cp[e]; ->>>>>>> Stashed changes -======= -}, sp = { - UNSIGNED_BYTE: qf, - UNSIGNED_SHORT: Jf, - UNSIGNED_INT: Yf, - FLOAT: Xf -}, cp = {}; -function lp(e) { - return "shared/" + e; -} -var up = 0; -function dp() { - let e = "unique/" + up; - return up += 1, e; -} -function fp(e) { - let t = cp[e]; ->>>>>>> Stashed changes if (!t) { let n = document.createElement("canvas"); n.width = 1, n.height = 1, n.style.position = "absolute", n.style.left = "0", t = { users: 0, -<<<<<<< Updated upstream -<<<<<<< Updated upstream context: Of(n) }, Rf[e] = t; } @@ -19961,30 +11200,10 @@ function fp(e) { } function Uf(e) { let t = Rf[e]; -======= - context: Qf(n) - }, cp[e] = t; - } - return t.users += 1, t.context; -} -function pp(e) { - let t = cp[e]; ->>>>>>> Stashed changes -======= - context: Qf(n) - }, cp[e] = t; - } - return t.users += 1, t.context; -} -function pp(e) { - let t = cp[e]; ->>>>>>> Stashed changes if (!t || (--t.users, t.users > 0)) return; let n = t.context, r = n.getExtension("WEBGL_lose_context"); r && r.loseContext(); let i = n.canvas; -<<<<<<< Updated upstream -<<<<<<< Updated upstream i.width = 1, i.height = 1, delete Rf[e]; } var Wf = class extends c { @@ -19992,38 +11211,12 @@ var Wf = class extends c { super(), e ||= {}, this.boundHandleWebGLContextLost_ = this.handleWebGLContextLost.bind(this), this.boundHandleWebGLContextRestored_ = this.handleWebGLContextRestored.bind(this), this.canvasCacheKey_ = e.canvasCacheKey ? zf(e.canvasCacheKey) : Vf(), this.gl_ = Hf(this.canvasCacheKey_), this.bufferCache_ = {}, this.extensionCache_ = {}, this.currentProgram_ = null, this.needsToBeRecreated_ = !1; let t = this.gl_.canvas; t.addEventListener(Mf.LOST, this.boundHandleWebGLContextLost_), t.addEventListener(Mf.RESTORED, this.boundHandleWebGLContextRestored_), this.tmpMat4_ = ff(), this.uniformLocationsByProgram_ = {}, this.attribLocationsByProgram_ = {}, this.uniforms_ = [], e.uniforms && this.setUniforms(e.uniforms), this.postProcessPasses_ = e.postProcesses?.length ? e.postProcesses.map((e) => new Ff({ -======= - i.width = 1, i.height = 1, delete cp[e]; -} -var mp = class extends ie { - constructor(e) { - super(), e ||= {}, this.boundHandleWebGLContextLost_ = this.handleWebGLContextLost.bind(this), this.boundHandleWebGLContextRestored_ = this.handleWebGLContextRestored.bind(this), this.canvasCacheKey_ = e.canvasCacheKey ? lp(e.canvasCacheKey) : dp(), this.gl_ = fp(this.canvasCacheKey_), this.bufferCache_ = {}, this.extensionCache_ = {}, this.currentProgram_ = null, this.needsToBeRecreated_ = !1; - let t = this.gl_.canvas; - t.addEventListener(np.LOST, this.boundHandleWebGLContextLost_), t.addEventListener(np.RESTORED, this.boundHandleWebGLContextRestored_), this.tmpMat4_ = If(), this.uniformLocationsByProgram_ = {}, this.attribLocationsByProgram_ = {}, this.uniforms_ = [], e.uniforms && this.setUniforms(e.uniforms), this.postProcessPasses_ = e.postProcesses?.length ? e.postProcesses.map((e) => new ap({ ->>>>>>> Stashed changes -======= - i.width = 1, i.height = 1, delete cp[e]; -} -var mp = class extends ie { - constructor(e) { - super(), e ||= {}, this.boundHandleWebGLContextLost_ = this.handleWebGLContextLost.bind(this), this.boundHandleWebGLContextRestored_ = this.handleWebGLContextRestored.bind(this), this.canvasCacheKey_ = e.canvasCacheKey ? lp(e.canvasCacheKey) : dp(), this.gl_ = fp(this.canvasCacheKey_), this.bufferCache_ = {}, this.extensionCache_ = {}, this.currentProgram_ = null, this.needsToBeRecreated_ = !1; - let t = this.gl_.canvas; - t.addEventListener(np.LOST, this.boundHandleWebGLContextLost_), t.addEventListener(np.RESTORED, this.boundHandleWebGLContextRestored_), this.tmpMat4_ = If(), this.uniformLocationsByProgram_ = {}, this.attribLocationsByProgram_ = {}, this.uniforms_ = [], e.uniforms && this.setUniforms(e.uniforms), this.postProcessPasses_ = e.postProcesses?.length ? e.postProcesses.map((e) => new ap({ ->>>>>>> Stashed changes webGlContext: this.gl_, scaleRatio: e.scaleRatio, vertexShader: e.vertexShader, fragmentShader: e.fragmentShader, uniforms: e.uniforms -<<<<<<< Updated upstream -<<<<<<< Updated upstream })) : [new Ff({ webGlContext: this.gl_ })], this.shaderCompileErrors_ = null, this.startTime_ = Date.now(), this.maxAttributeCount_ = this.gl_.getParameter(this.gl_.MAX_VERTEX_ATTRIBS); -======= - })) : [new ap({ webGlContext: this.gl_ })], this.shaderCompileErrors_ = null, this.startTime_ = Date.now(), this.maxAttributeCount_ = this.gl_.getParameter(this.gl_.MAX_VERTEX_ATTRIBS); ->>>>>>> Stashed changes -======= - })) : [new ap({ webGlContext: this.gl_ })], this.shaderCompileErrors_ = null, this.startTime_ = Date.now(), this.maxAttributeCount_ = this.gl_.getParameter(this.gl_.MAX_VERTEX_ATTRIBS); ->>>>>>> Stashed changes } setUniforms(e) { this.uniforms_ = [], this.addUniforms(e); @@ -20035,15 +11228,7 @@ var mp = class extends ie { }); } canvasCacheKeyMatches(e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return this.canvasCacheKey_ === zf(e); -======= - return this.canvasCacheKey_ === lp(e); ->>>>>>> Stashed changes -======= - return this.canvasCacheKey_ === lp(e); ->>>>>>> Stashed changes } getExtension(e) { if (e in this.extensionCache_) return this.extensionCache_[e]; @@ -20071,15 +11256,7 @@ var mp = class extends ie { } disposeInternal() { let e = this.gl_.canvas; -<<<<<<< Updated upstream -<<<<<<< Updated upstream e.removeEventListener(Mf.LOST, this.boundHandleWebGLContextLost_), e.removeEventListener(Mf.RESTORED, this.boundHandleWebGLContextRestored_), Uf(this.canvasCacheKey_), delete this.gl_; -======= - e.removeEventListener(np.LOST, this.boundHandleWebGLContextLost_), e.removeEventListener(np.RESTORED, this.boundHandleWebGLContextRestored_), pp(this.canvasCacheKey_), delete this.gl_; ->>>>>>> Stashed changes -======= - e.removeEventListener(np.LOST, this.boundHandleWebGLContextLost_), e.removeEventListener(np.RESTORED, this.boundHandleWebGLContextRestored_), pp(this.canvasCacheKey_), delete this.gl_; ->>>>>>> Stashed changes } prepareDraw(e, t, n) { let r = this.gl_, i = this.getCanvas(), a = e.size, o = e.pixelRatio; @@ -20135,27 +11312,11 @@ var mp = class extends ie { } applyFrameState(e) { let t = e.size, n = e.viewState.rotation, r = e.pixelRatio; -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.setUniformFloatValue(If.TIME, (Date.now() - this.startTime_) * .001), this.setUniformFloatValue(If.ZOOM, e.viewState.zoom), this.setUniformFloatValue(If.RESOLUTION, e.viewState.resolution), this.setUniformFloatValue(If.PIXEL_RATIO, r), this.setUniformFloatVec2(If.VIEWPORT_SIZE_PX, [t[0], t[1]]), this.setUniformFloatValue(If.ROTATION, n); } applyHitDetectionUniform(e) { let t = this.getUniformLocation(If.HIT_DETECTION); this.getGL().uniform1i(t, +!!e), e && this.setUniformFloatValue(If.PIXEL_RATIO, .5); -======= - this.setUniformFloatValue(op.TIME, (Date.now() - this.startTime_) * .001), this.setUniformFloatValue(op.ZOOM, e.viewState.zoom), this.setUniformFloatValue(op.RESOLUTION, e.viewState.resolution), this.setUniformFloatValue(op.PIXEL_RATIO, r), this.setUniformFloatVec2(op.VIEWPORT_SIZE_PX, [t[0], t[1]]), this.setUniformFloatValue(op.ROTATION, n); - } - applyHitDetectionUniform(e) { - let t = this.getUniformLocation(op.HIT_DETECTION); - this.getGL().uniform1i(t, +!!e), e && this.setUniformFloatValue(op.PIXEL_RATIO, .5); ->>>>>>> Stashed changes -======= - this.setUniformFloatValue(op.TIME, (Date.now() - this.startTime_) * .001), this.setUniformFloatValue(op.ZOOM, e.viewState.zoom), this.setUniformFloatValue(op.RESOLUTION, e.viewState.resolution), this.setUniformFloatValue(op.PIXEL_RATIO, r), this.setUniformFloatVec2(op.VIEWPORT_SIZE_PX, [t[0], t[1]]), this.setUniformFloatValue(op.ROTATION, n); - } - applyHitDetectionUniform(e) { - let t = this.getUniformLocation(op.HIT_DETECTION); - this.getGL().uniform1i(t, +!!e), e && this.setUniformFloatValue(op.PIXEL_RATIO, .5); ->>>>>>> Stashed changes } applyUniforms(e) { let t = this.gl_, n, r = 0; @@ -20164,15 +11325,7 @@ var mp = class extends ie { n instanceof WebGLTexture && !i.texture ? (i.prevValue = void 0, i.texture = n) : i.texture ||= (i.prevValue = void 0, t.createTexture()), this.bindTexture(i.texture, r, i.name), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MIN_FILTER, t.LINEAR), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_S, t.CLAMP_TO_EDGE), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_T, t.CLAMP_TO_EDGE); let e = !(n instanceof HTMLImageElement) || n.complete; !(n instanceof WebGLTexture) && e && i.prevValue !== n && (i.prevValue = n, t.texImage2D(t.TEXTURE_2D, 0, t.RGBA, t.RGBA, t.UNSIGNED_BYTE, n)), r++; -<<<<<<< Updated upstream -<<<<<<< Updated upstream } else if (Array.isArray(n) && n.length === 6) this.setUniformMatrixValue(i.name, mf(this.tmpMat4_, n)); -======= - } else if (Array.isArray(n) && n.length === 6) this.setUniformMatrixValue(i.name, Rf(this.tmpMat4_, n)); ->>>>>>> Stashed changes -======= - } else if (Array.isArray(n) && n.length === 6) this.setUniformMatrixValue(i.name, Rf(this.tmpMat4_, n)); ->>>>>>> Stashed changes else if (Array.isArray(n) && n.length <= 4) switch (n.length) { case 2: t.uniform2f(this.getUniformLocation(i.name), n[0], n[1]); @@ -20221,7 +11374,7 @@ var mp = class extends ie { } makeProjectionTransform(e, t, n) { let r = e.size, i = n ? 0 : e.viewState.rotation, a = e.viewState.resolution, o = e.viewState.center; - return ei(t, 0, 0, 2 / (a * r[0]), 2 / (a * r[1]), -i, -o[0], -o[1]), t; + return $r(t, 0, 0, 2 / (a * r[0]), 2 / (a * r[1]), -i, -o[0], -o[1]), t; } setUniformFloatValue(e, t) { this.gl_.uniform1f(this.getUniformLocation(e), t); @@ -20243,24 +11396,10 @@ var mp = class extends ie { o < 0 || (this.gl_.enableVertexAttribArray(o), this.gl_.vertexAttribPointer(o, t, n, !1, r, i), a && this.getInstancedRenderingExtension_().vertexAttribDivisorANGLE(o, 1)); } enableAttributes_(e, t) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let n = Gf(e), r = 0; for (let i = 0; i < e.length; i++) { let a = e[i]; a.name && this.enableAttributeArray_(a.name, a.size, a.type || 5126, n, r, t), r += a.size * Kf(a.type); -======= - let n = hp(e), r = 0; - for (let i = 0; i < e.length; i++) { - let a = e[i]; - a.name && this.enableAttributeArray_(a.name, a.size, a.type || 5126, n, r, t), r += a.size * gp(a.type); ->>>>>>> Stashed changes -======= - let n = hp(e), r = 0; - for (let i = 0; i < e.length; i++) { - let a = e[i]; - a.name && this.enableAttributeArray_(a.name, a.size, a.type || 5126, n, r, t), r += a.size * gp(a.type); ->>>>>>> Stashed changes } } enableAttributes(e) { @@ -20287,8 +11426,6 @@ var mp = class extends ie { return t instanceof Uint8Array ? i.texImage2D(i.TEXTURE_2D, 0, o, e[0], e[1], 0, s, c, t) : t ? i.texImage2D(i.TEXTURE_2D, 0, o, s, c, t) : i.texImage2D(i.TEXTURE_2D, 0, o, e[0], e[1], 0, s, c, null), n; } }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Gf(e) { let t = 0; for (let n = 0; n < e.length; n++) { @@ -20303,95 +11440,28 @@ function Kf(e) { case Lf.UNSIGNED_SHORT: return Uint16Array.BYTES_PER_ELEMENT; case Lf.UNSIGNED_INT: return Uint32Array.BYTES_PER_ELEMENT; case Lf.FLOAT: -======= -function hp(e) { - let t = 0; - for (let n = 0; n < e.length; n++) { - let r = e[n]; - t += r.size * gp(r.type); - } - return t; -} -function gp(e) { - switch (e) { -======= -function hp(e) { - let t = 0; - for (let n = 0; n < e.length; n++) { - let r = e[n]; - t += r.size * gp(r.type); - } - return t; -} -function gp(e) { - switch (e) { ->>>>>>> Stashed changes - case sp.UNSIGNED_BYTE: return Uint8Array.BYTES_PER_ELEMENT; - case sp.UNSIGNED_SHORT: return Uint16Array.BYTES_PER_ELEMENT; - case sp.UNSIGNED_INT: return Uint32Array.BYTES_PER_ELEMENT; - case sp.FLOAT: -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes default: return Float32Array.BYTES_PER_ELEMENT; } } //#endregion //#region node_modules/ol/renderer/webgl/Layer.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var qf = class e extends Yi { -======= -var _p = class e extends Eu { ->>>>>>> Stashed changes constructor(e, t) { - super(e), t ||= {}, this.inversePixelTransform_ = qr(), this.postProcesses_ = t.postProcesses, this.uniforms_ = t.uniforms, this.helper, this.onMapChanged_ = () => { + super(e), t ||= {}, this.inversePixelTransform_ = Kr(), this.postProcesses_ = t.postProcesses, this.uniforms_ = t.uniforms, this.helper, this.onMapChanged_ = () => { this.clearCache(), this.removeHelper(); -<<<<<<< Updated upstream }, e.addChangeListener(H.MAP, this.onMapChanged_), this.dispatchPreComposeEvent = this.dispatchPreComposeEvent.bind(this), this.dispatchPostComposeEvent = this.dispatchPostComposeEvent.bind(this); } dispatchPreComposeEvent(e, t) { let n = this.getLayer(); if (n.hasListener(Ki.PRECOMPOSE)) { let r = new Gi(Ki.PRECOMPOSE, void 0, t, e); -======= - }, e.addChangeListener(B.MAP, this.onMapChanged_), this.dispatchPreComposeEvent = this.dispatchPreComposeEvent.bind(this), this.dispatchPostComposeEvent = this.dispatchPostComposeEvent.bind(this); - } - dispatchPreComposeEvent(e, t) { - let n = this.getLayer(); - if (n.hasListener(lo.PRECOMPOSE)) { - let r = new Ml(lo.PRECOMPOSE, void 0, t, e); ->>>>>>> Stashed changes -======= -var _p = class e extends Eu { - constructor(e, t) { - super(e), t ||= {}, this.inversePixelTransform_ = qr(), this.postProcesses_ = t.postProcesses, this.uniforms_ = t.uniforms, this.helper, this.onMapChanged_ = () => { - this.clearCache(), this.removeHelper(); - }, e.addChangeListener(B.MAP, this.onMapChanged_), this.dispatchPreComposeEvent = this.dispatchPreComposeEvent.bind(this), this.dispatchPostComposeEvent = this.dispatchPostComposeEvent.bind(this); - } - dispatchPreComposeEvent(e, t) { - let n = this.getLayer(); - if (n.hasListener(lo.PRECOMPOSE)) { - let r = new Ml(lo.PRECOMPOSE, void 0, t, e); ->>>>>>> Stashed changes n.dispatchEvent(r); } } dispatchPostComposeEvent(e, t) { let n = this.getLayer(); -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (n.hasListener(Ki.POSTCOMPOSE)) { let r = new Gi(Ki.POSTCOMPOSE, void 0, t, e); -======= - if (n.hasListener(lo.POSTCOMPOSE)) { - let r = new Ml(lo.POSTCOMPOSE, void 0, t, e); ->>>>>>> Stashed changes -======= - if (n.hasListener(lo.POSTCOMPOSE)) { - let r = new Ml(lo.POSTCOMPOSE, void 0, t, e); ->>>>>>> Stashed changes n.dispatchEvent(r); } } @@ -20414,15 +11484,7 @@ var _p = class e extends Eu { if ((n || c !== i) && (r += 1, n = !1), i = c, s === this) break; } let a = "map/" + t.mapId + "/group/" + r; -<<<<<<< Updated upstream -<<<<<<< Updated upstream (!this.helper || !this.helper.canvasCacheKeyMatches(a) || this.helper.needsToBeRecreated()) && (this.removeHelper(), this.helper = new Wf({ -======= - (!this.helper || !this.helper.canvasCacheKeyMatches(a) || this.helper.needsToBeRecreated()) && (this.removeHelper(), this.helper = new mp({ ->>>>>>> Stashed changes -======= - (!this.helper || !this.helper.canvasCacheKeyMatches(a) || this.helper.needsToBeRecreated()) && (this.removeHelper(), this.helper = new mp({ ->>>>>>> Stashed changes postProcesses: this.postProcesses_, uniforms: this.uniforms_, canvasCacheKey: a @@ -20442,37 +11504,17 @@ var _p = class e extends Eu { return this.postProcesses_; } disposeInternal() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.clearCache(), this.removeHelper(), this.getLayer()?.removeChangeListener(H.MAP, this.onMapChanged_), super.disposeInternal(); -======= - this.clearCache(), this.removeHelper(), this.getLayer()?.removeChangeListener(B.MAP, this.onMapChanged_), super.disposeInternal(); ->>>>>>> Stashed changes -======= - this.clearCache(), this.removeHelper(), this.getLayer()?.removeChangeListener(B.MAP, this.onMapChanged_), super.disposeInternal(); ->>>>>>> Stashed changes } dispatchRenderEvent_(e, t, n) { let r = this.getLayer(); if (r.hasListener(e)) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream $r(this.inversePixelTransform_, 0, 0, n.pixelRatio, -n.pixelRatio, 0, 0, -n.size[1]); let i = new Gi(e, this.inversePixelTransform_, n, t); -======= - ei(this.inversePixelTransform_, 0, 0, n.pixelRatio, -n.pixelRatio, 0, 0, -n.size[1]); - let i = new Ml(e, this.inversePixelTransform_, n, t); ->>>>>>> Stashed changes -======= - ei(this.inversePixelTransform_, 0, 0, n.pixelRatio, -n.pixelRatio, 0, 0, -n.size[1]); - let i = new Ml(e, this.inversePixelTransform_, n, t); ->>>>>>> Stashed changes r.dispatchEvent(i); } } preRender(e, t) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.dispatchRenderEvent_(Ki.PRERENDER, e, t); } postRender(e, t) { @@ -20480,24 +11522,6 @@ var _p = class e extends Eu { } }, Jf = { ...If, -======= - this.dispatchRenderEvent_(lo.PRERENDER, e, t); - } - postRender(e, t) { - this.dispatchRenderEvent_(lo.POSTRENDER, e, t); - } -}, vp = { - ...op, ->>>>>>> Stashed changes -======= - this.dispatchRenderEvent_(lo.PRERENDER, e, t); - } - postRender(e, t) { - this.dispatchRenderEvent_(lo.POSTRENDER, e, t); - } -}, vp = { - ...op, ->>>>>>> Stashed changes TILE_TRANSFORM: "u_tileTransform", TRANSITION_ALPHA: "u_transitionAlpha", DEPTH: "u_depth", @@ -20508,24 +11532,10 @@ var _p = class e extends Eu { TEXTURE_PIXEL_HEIGHT: "u_texturePixelHeight", TEXTURE_RESOLUTION: "u_textureResolution" }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream ({ TEXTURE_COORD: "a_textureCoord" }).TEXTURE_COORD, Lf.FLOAT; //#endregion //#region node_modules/ol/webgl/PaletteTexture.js var Yf = class { -======= -({ TEXTURE_COORD: "a_textureCoord" }).TEXTURE_COORD, sp.FLOAT; -//#endregion -//#region node_modules/ol/webgl/PaletteTexture.js -var yp = class { ->>>>>>> Stashed changes -======= -({ TEXTURE_COORD: "a_textureCoord" }).TEXTURE_COORD, sp.FLOAT; -//#endregion -//#region node_modules/ol/webgl/PaletteTexture.js -var yp = class { ->>>>>>> Stashed changes constructor(e, t) { this.name = e, this.data = t, this.texture_ = null; } @@ -20542,8 +11552,6 @@ var yp = class { }; //#endregion //#region node_modules/ol/expr/gpu.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Xf(e, t) { return `operator_${e}_${Object.keys(t.functions).length}`; } @@ -20558,42 +11566,12 @@ function Qf(e) { function $f(e) { let t = Ui(e), n = t.length > 3 ? t[3] : 1; return Qf([ -======= -function bp(e, t) { - return `operator_${e}_${Object.keys(t.functions).length}`; -} -function xp(e) { - let t = e.toString(); - return t.includes(".") ? t : t + ".0"; -} -======= -function bp(e, t) { - return `operator_${e}_${Object.keys(t.functions).length}`; -} -function xp(e) { - let t = e.toString(); - return t.includes(".") ? t : t + ".0"; -} ->>>>>>> Stashed changes -function Sp(e) { - if (e.length < 2 || e.length > 4) throw Error("`formatArray` can only output `vec2`, `vec3` or `vec4` arrays."); - return `vec${e.length}(${e.map(xp).join(", ")})`; -} -function Cp(e) { - let t = $o(e), n = t.length > 3 ? t[3] : 1; - return Sp([ -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes t[0] / 255, t[1] / 255, t[2] / 255, n ]); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function ep(e) { return Qf(pi(e)); } @@ -20606,38 +11584,8 @@ function ip(e) { } function ap(e) { return "u_var_" + e; -======= -function wp(e) { - return Sp(rs(e)); -} -var Tp = {}, Ep = 0; -function Dp(e) { - return e in Tp || (Tp[e] = Ep++), Tp[e]; -} -function Op(e) { - return xp(Dp(e)); ->>>>>>> Stashed changes } function op(e) { -======= -function wp(e) { - return Sp(rs(e)); -} -var Tp = {}, Ep = 0; -function Dp(e) { - return e in Tp || (Tp[e] = Ep++), Tp[e]; -} -function Op(e) { - return xp(Dp(e)); -} -function kp(e) { - return "u_var_" + e; -} -function Ap(e) { -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes return { variables: /* @__PURE__ */ new Map(), properties: /* @__PURE__ */ new Map(), @@ -20648,29 +11596,14 @@ function Ap(e) { inputVariables: e }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream var sp = "getBandValue", cp = "u_paletteTextures", lp = "featureId", up = "geometryType", dp = -9999999; function fp(e, t, n, r) { let i = ec(e, t, n); return r.properties = new Map([...r.properties, ...n.properties]), r.variables = new Map([...r.variables, ...n.variables]), mp(i, t, r); -======= -======= ->>>>>>> Stashed changes -var jp = "getBandValue", Mp = "u_paletteTextures", Np = "featureId", Pp = "geometryType", Fp = -9999999; -function Ip(e, t, n, r) { - let i = ys(e, t, n); - return r.properties = new Map([...r.properties, ...n.properties]), r.variables = new Map([...r.variables, ...n.variables]), Rp(i, t, r); -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes -} -function X(e) { +} +function Z(e) { return (t, n, r) => { let i = n.args.length, a = Array(i); -<<<<<<< Updated upstream -<<<<<<< Updated upstream for (let e = 0; e < i; ++e) a[e] = mp(n.args[e], r, t); return e(a, t); }; @@ -20716,80 +11649,10 @@ var pp = { [K.Atan]: Z(([e, t]) => t === void 0 ? `atan(${e})` : `atan(${e}, ${t})`), [K.Sqrt]: Z(([e]) => `sqrt(${e})`), [K.Match]: Z((e) => { -======= - for (let e = 0; e < i; ++e) a[e] = Rp(n.args[e], r, t); - return e(a, t); - }; -} -var Lp = { - [W.Get]: (e, t) => { - let n = "a_prop_" + t.args[0].value; - return hs(t.type, as) && (n = `(${n} > 0.0)`), n; - }, - [W.Id]: (e) => (e.featureId = !0, "a_featureId"), - [W.GeometryType]: (e) => (e.geometryType = !0, "a_geometryType"), - [W.LineMetric]: () => "currentLineMetric", - [W.Var]: (e, t) => { - let n = t.args[0].value, r = kp(n); - return hs(t.type, as) && (r = `(${r} > 0.0)`), r; - }, -======= - for (let e = 0; e < i; ++e) a[e] = Rp(n.args[e], r, t); - return e(a, t); - }; -} -var Lp = { - [W.Get]: (e, t) => { - let n = "a_prop_" + t.args[0].value; - return hs(t.type, as) && (n = `(${n} > 0.0)`), n; - }, - [W.Id]: (e) => (e.featureId = !0, "a_featureId"), - [W.GeometryType]: (e) => (e.geometryType = !0, "a_geometryType"), - [W.LineMetric]: () => "currentLineMetric", - [W.Var]: (e, t) => { - let n = t.args[0].value, r = kp(n); - return hs(t.type, as) && (r = `(${r} > 0.0)`), r; - }, ->>>>>>> Stashed changes - [W.Has]: (e, t) => `(a_prop_${t.args[0].value} != ${xp(Fp)})`, - [W.Resolution]: () => "u_resolution", - [W.Zoom]: () => "u_zoom", - [W.Time]: () => "u_time", - [W.Any]: X((e) => `(${e.join(" || ")})`), - [W.All]: X((e) => `(${e.join(" && ")})`), - [W.Not]: X(([e]) => `(!${e})`), - [W.Equal]: X(([e, t]) => `(${e} == ${t})`), - [W.NotEqual]: X(([e, t]) => `(${e} != ${t})`), - [W.GreaterThan]: X(([e, t]) => `(${e} > ${t})`), - [W.GreaterThanOrEqualTo]: X(([e, t]) => `(${e} >= ${t})`), - [W.LessThan]: X(([e, t]) => `(${e} < ${t})`), - [W.LessThanOrEqualTo]: X(([e, t]) => `(${e} <= ${t})`), - [W.Multiply]: X((e) => `(${e.join(" * ")})`), - [W.Divide]: X(([e, t]) => `(${e} / ${t})`), - [W.Add]: X((e) => `(${e.join(" + ")})`), - [W.Subtract]: X(([e, t]) => `(${e} - ${t})`), - [W.Clamp]: X(([e, t, n]) => `clamp(${e}, ${t}, ${n})`), - [W.Mod]: X(([e, t]) => `mod(${e}, ${t})`), - [W.Pow]: X(([e, t]) => `pow(${e}, ${t})`), - [W.Abs]: X(([e]) => `abs(${e})`), - [W.Floor]: X(([e]) => `floor(${e})`), - [W.Ceil]: X(([e]) => `ceil(${e})`), - [W.Round]: X(([e]) => `floor(${e} + 0.5)`), - [W.Sin]: X(([e]) => `sin(${e})`), - [W.Cos]: X(([e]) => `cos(${e})`), - [W.Atan]: X(([e, t]) => t === void 0 ? `atan(${e})` : `atan(${e}, ${t})`), - [W.Sqrt]: X(([e]) => `sqrt(${e})`), - [W.Match]: X((e) => { -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes let t = e[0], n = e[e.length - 1], r = null; for (let i = e.length - 3; i >= 1; i -= 2) r = `(${t} == ${e[i]} ? ${e[i + 1]} : ${r || n})`; return r; }), -<<<<<<< Updated upstream -<<<<<<< Updated upstream [K.Between]: Z(([e, t, n]) => `(${e} >= ${t} && ${e} <= ${n})`), [K.Interpolate]: Z(([e, t, ...n]) => { let r = ""; @@ -20800,64 +11663,20 @@ var Lp = { return r; }), [K.Case]: Z((e) => { -======= - [W.Between]: X(([e, t, n]) => `(${e} >= ${t} && ${e} <= ${n})`), - [W.Interpolate]: X(([e, t, ...n]) => { - let r = ""; - for (let i = 0; i < n.length - 2; i += 2) { - let a = n[i], o = r || n[i + 1], s = n[i + 2], c = n[i + 3], l; - l = e === xp(1) ? `(${t} - ${a}) / (${s} - ${a})` : `(pow(${e}, (${t} - ${a})) - 1.0) / (pow(${e}, (${s} - ${a})) - 1.0)`, r = `mix(${o}, ${c}, clamp(${l}, 0.0, 1.0))`; - } - return r; - }), - [W.Case]: X((e) => { ->>>>>>> Stashed changes -======= - [W.Between]: X(([e, t, n]) => `(${e} >= ${t} && ${e} <= ${n})`), - [W.Interpolate]: X(([e, t, ...n]) => { - let r = ""; - for (let i = 0; i < n.length - 2; i += 2) { - let a = n[i], o = r || n[i + 1], s = n[i + 2], c = n[i + 3], l; - l = e === xp(1) ? `(${t} - ${a}) / (${s} - ${a})` : `(pow(${e}, (${t} - ${a})) - 1.0) / (pow(${e}, (${s} - ${a})) - 1.0)`, r = `mix(${o}, ${c}, clamp(${l}, 0.0, 1.0))`; - } - return r; - }), - [W.Case]: X((e) => { ->>>>>>> Stashed changes let t = e[e.length - 1], n = null; for (let r = e.length - 3; r >= 0; r -= 2) n = `(${e[r]} ? ${e[r + 1]} : ${n || t})`; return n; }), -<<<<<<< Updated upstream -<<<<<<< Updated upstream [K.In]: Z(([e, ...t], n) => { let r = Xf("in", n), i = []; -======= - [W.In]: X(([e, ...t], n) => { - let r = bp("in", n), i = []; ->>>>>>> Stashed changes -======= - [W.In]: X(([e, ...t], n) => { - let r = bp("in", n), i = []; ->>>>>>> Stashed changes for (let e = 0; e < t.length; e += 1) i.push(` if (inputValue == ${t[e]}) { return true; }`); return n.functions[r] = `bool ${r}(float inputValue) { ${i.join("\n")} return false; }`, `${r}(${e})`; }), -<<<<<<< Updated upstream -<<<<<<< Updated upstream [K.Array]: Z((e) => `vec${e.length}(${e.join(", ")})`), [K.Color]: Z((e) => { -======= - [W.Array]: X((e) => `vec${e.length}(${e.join(", ")})`), - [W.Color]: X((e) => { ->>>>>>> Stashed changes -======= - [W.Array]: X((e) => `vec${e.length}(${e.join(", ")})`), - [W.Color]: X((e) => { ->>>>>>> Stashed changes if (e.length === 1) return `vec4(vec3(${e[0]} / 255.0), 1.0)`; if (e.length === 2) return `vec4(vec3(${e[0]} / 255.0), ${e[1]})`; let t = e.slice(0, 3).map((e) => `${e} / 255.0`); @@ -20865,38 +11684,18 @@ ${i.join("\n")} let n = e[3]; return `vec4(${t.join(", ")}, ${n})`; }), -<<<<<<< Updated upstream -<<<<<<< Updated upstream [K.Band]: Z(([e, t, n], r) => { if (!(sp in r.functions)) { -======= - [W.Band]: X(([e, t, n], r) => { - if (!(jp in r.functions)) { ->>>>>>> Stashed changes -======= - [W.Band]: X(([e, t, n], r) => { - if (!(jp in r.functions)) { ->>>>>>> Stashed changes let e = "", t = r.bandCount || 1; for (let n = 0; n < t; n++) { let r = Math.floor(n / 4), i = n % 4; n === t - 1 && i === 1 && (i = 3); -<<<<<<< Updated upstream -<<<<<<< Updated upstream let a = `${Jf.TILE_TEXTURE_ARRAY}[${r}]`; -======= - let a = `${vp.TILE_TEXTURE_ARRAY}[${r}]`; ->>>>>>> Stashed changes -======= - let a = `${vp.TILE_TEXTURE_ARRAY}[${r}]`; ->>>>>>> Stashed changes e += ` if (band == ${n + 1}.0) { return texture2D(${a}, v_textureCoord + vec2(dx, dy))[${i}]; } `; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream r.functions[sp] = `float getBandValue(float band, float xOffset, float yOffset) { float dx = xOffset / ${Jf.TEXTURE_PIXEL_WIDTH}; float dy = yOffset / ${Jf.TEXTURE_PIXEL_HEIGHT}; @@ -20933,82 +11732,6 @@ function mp(e, t, n) { //#endregion //#region node_modules/ol/style/flat.js function hp() { -======= - r.functions[jp] = `float getBandValue(float band, float xOffset, float yOffset) { - float dx = xOffset / ${vp.TEXTURE_PIXEL_WIDTH}; - float dy = yOffset / ${vp.TEXTURE_PIXEL_HEIGHT}; -${e} -}`; - } - return `${jp}(${e}, ${t ?? "0.0"}, ${n ?? "0.0"})`; - }), - [W.Palette]: (e, t) => { - let [n, ...r] = t.args, i = r.length, a = new Uint8Array(i * 4); - for (let e = 0; e < r.length; e++) { - let t = r[e].value, n = $o(t), i = e * 4; - a[i] = n[0], a[i + 1] = n[1], a[i + 2] = n[2], a[i + 3] = n[3] * 255; - } - e.paletteTextures ||= []; - let o = `${Mp}[${e.paletteTextures.length}]`, s = new yp(o, a); - return e.paletteTextures.push(s), `texture2D(${o}, vec2((${Rp(n, V, e)} + 0.5) / ${i}.0, 0.5))`; - } -}; -function Rp(e, t, n) { - if (e instanceof _s) { - let r = Lp[e.operator]; - if (r === void 0) throw Error(`No compiler defined for this operator: ${JSON.stringify(e.operator)}`); - return r(n, e, t); - } - if ((e.type & V) > 0) return xp(e.value); - if ((e.type & as) > 0) return e.value.toString(); - if ((e.type & H) > 0) return Op(e.value.toString()); - if ((e.type & U) > 0) return Cp(e.value); - if ((e.type & os) > 0) return Sp(e.value); - if ((e.type & ss) > 0) return wp(e.value); - throw Error(`Unexpected expression ${e.value} (expected type ${fs(t)})`); -} -//#endregion -//#region node_modules/ol/style/flat.js -function zp() { ->>>>>>> Stashed changes -======= - r.functions[jp] = `float getBandValue(float band, float xOffset, float yOffset) { - float dx = xOffset / ${vp.TEXTURE_PIXEL_WIDTH}; - float dy = yOffset / ${vp.TEXTURE_PIXEL_HEIGHT}; -${e} -}`; - } - return `${jp}(${e}, ${t ?? "0.0"}, ${n ?? "0.0"})`; - }), - [W.Palette]: (e, t) => { - let [n, ...r] = t.args, i = r.length, a = new Uint8Array(i * 4); - for (let e = 0; e < r.length; e++) { - let t = r[e].value, n = $o(t), i = e * 4; - a[i] = n[0], a[i + 1] = n[1], a[i + 2] = n[2], a[i + 3] = n[3] * 255; - } - e.paletteTextures ||= []; - let o = `${Mp}[${e.paletteTextures.length}]`, s = new yp(o, a); - return e.paletteTextures.push(s), `texture2D(${o}, vec2((${Rp(n, V, e)} + 0.5) / ${i}.0, 0.5))`; - } -}; -function Rp(e, t, n) { - if (e instanceof _s) { - let r = Lp[e.operator]; - if (r === void 0) throw Error(`No compiler defined for this operator: ${JSON.stringify(e.operator)}`); - return r(n, e, t); - } - if ((e.type & V) > 0) return xp(e.value); - if ((e.type & as) > 0) return e.value.toString(); - if ((e.type & H) > 0) return Op(e.value.toString()); - if ((e.type & U) > 0) return Cp(e.value); - if ((e.type & os) > 0) return Sp(e.value); - if ((e.type & ss) > 0) return wp(e.value); - throw Error(`Unexpected expression ${e.value} (expected type ${fs(t)})`); -} -//#endregion -//#region node_modules/ol/style/flat.js -function zp() { ->>>>>>> Stashed changes return { "fill-color": "rgba(255,255,255,0.4)", "stroke-color": "#3399CC", @@ -21021,8 +11744,6 @@ function zp() { } //#endregion //#region node_modules/ol/render/webgl/bufferUtil.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var gp = .985; //#endregion //#region node_modules/ol/render/webgl/compileUtil.js @@ -21065,129 +11786,19 @@ function Sp(e, t) { return e[0] /= 255, e[1] /= 255, e[2] /= 255, e[3] ??= 1, e; } return i === W ? rp(n) : n; -======= -var Bp = .985; -//#endregion -//#region node_modules/ol/render/webgl/compileUtil.js -function Z(e, t, n, r) { - return Ip(t, n, r ?? vs(e.inputVariables), e); -} -function Vp(e) { - let t = $o(e), n = t[0] * 256, r = t[1], i = t[2] * 256, a = Math.round(t[3] * 255); - return [n + r, i + a]; -} -var Hp = "vec4 unpackColor(vec2 packedColor) {\n return vec4(\n min(floor(packedColor[0] / 256.0) / 255.0, 1.0),\n min(mod(packedColor[0], 256.0) / 255.0, 1.0),\n min(floor(packedColor[1] / 256.0) / 255.0, 1.0),\n min(mod(packedColor[1], 256.0) / 255.0, 1.0)\n );\n}"; -function Up(e) { - return e === U || e === ss ? 2 : e === os ? 4 : e === H ? 3 : 1; -} -function Wp(e) { - if (e === H) return "float"; - let t = Up(e); - return t > 1 ? `vec${t}` : "float"; -} -function Gp(e, t) { - for (let n of t.variables.entries()) { - let [t, r] = n, i = kp(t), a = Wp(r); - r === U && (a = "vec4"), e.addUniform(i, a); - } - for (let n of t.properties.entries()) { - let [t, r] = n, i = Wp(r), a = `a_prop_${t}`; - r === U ? e.addAttribute(a, i, `unpackColor(${a})`, "vec4") : e.addAttribute(a, i); - } - for (let n in t.functions) e.addVertexShaderFunction(t.functions[n]), e.addFragmentShaderFunction(t.functions[n]); -} -function Kp(e, t) { - let n = {}; - for (let r of e.variables.entries()) { - let [e, i] = r, a = kp(e); - n[a] = () => { - let n = t[e]; - if (i === as) return +!!n; - if (i === U) { - let e = [...$o(n || "#eee")]; - return e[0] /= 255, e[1] /= 255, e[2] /= 255, e[3] ??= 1, e; - } - return i === H ? Dp(n) : n; ->>>>>>> Stashed changes -======= -var Bp = .985; -//#endregion -//#region node_modules/ol/render/webgl/compileUtil.js -function Z(e, t, n, r) { - return Ip(t, n, r ?? vs(e.inputVariables), e); -} -function Vp(e) { - let t = $o(e), n = t[0] * 256, r = t[1], i = t[2] * 256, a = Math.round(t[3] * 255); - return [n + r, i + a]; -} -var Hp = "vec4 unpackColor(vec2 packedColor) {\n return vec4(\n min(floor(packedColor[0] / 256.0) / 255.0, 1.0),\n min(mod(packedColor[0], 256.0) / 255.0, 1.0),\n min(floor(packedColor[1] / 256.0) / 255.0, 1.0),\n min(mod(packedColor[1], 256.0) / 255.0, 1.0)\n );\n}"; -function Up(e) { - return e === U || e === ss ? 2 : e === os ? 4 : e === H ? 3 : 1; -} -function Wp(e) { - if (e === H) return "float"; - let t = Up(e); - return t > 1 ? `vec${t}` : "float"; -} -function Gp(e, t) { - for (let n of t.variables.entries()) { - let [t, r] = n, i = kp(t), a = Wp(r); - r === U && (a = "vec4"), e.addUniform(i, a); - } - for (let n of t.properties.entries()) { - let [t, r] = n, i = Wp(r), a = `a_prop_${t}`; - r === U ? e.addAttribute(a, i, `unpackColor(${a})`, "vec4") : e.addAttribute(a, i); - } - for (let n in t.functions) e.addVertexShaderFunction(t.functions[n]), e.addFragmentShaderFunction(t.functions[n]); -} -function Kp(e, t) { - let n = {}; - for (let r of e.variables.entries()) { - let [e, i] = r, a = kp(e); - n[a] = () => { - let n = t[e]; - if (i === as) return +!!n; - if (i === U) { - let e = [...$o(n || "#eee")]; - return e[0] /= 255, e[1] /= 255, e[2] /= 255, e[3] ??= 1, e; - } - return i === H ? Dp(n) : n; ->>>>>>> Stashed changes }; } return n; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Cp(e) { -======= -function qp(e) { ->>>>>>> Stashed changes -======= -function qp(e) { ->>>>>>> Stashed changes let t = {}; for (let n of e.properties.entries()) { let [e, r] = n, i = (t) => { let n = t.get(e); -<<<<<<< Updated upstream -<<<<<<< Updated upstream return r === G ? _p([...Ui(n || "#eee")]) : r === Bs ? +!!n : n; }; t[`prop_${e}`] = { size: yp(r), -======= - return r === U ? Vp([...$o(n || "#eee")]) : r === as ? +!!n : n; - }; - t[`prop_${e}`] = { - size: Up(r), ->>>>>>> Stashed changes -======= - return r === U ? Vp([...$o(n || "#eee")]) : r === as ? +!!n : n; - }; - t[`prop_${e}`] = { - size: Up(r), ->>>>>>> Stashed changes callback: i }; } @@ -21195,36 +11806,15 @@ function qp(e) { } //#endregion //#region node_modules/ol/render/webgl/float64Util.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function wp(e) { return e - Tp(e); } function Tp(e) { -======= -======= ->>>>>>> Stashed changes -function Jp(e) { - return e - Yp(e); -} -function Yp(e) { -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes return Math.fround(e); } //#endregion //#region node_modules/ol/render/webgl/ShaderBuilder.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var Ep = `#ifdef GL_FRAGMENT_PRECISION_HIGH -======= -var Xp = `#ifdef GL_FRAGMENT_PRECISION_HIGH ->>>>>>> Stashed changes -======= -var Xp = `#ifdef GL_FRAGMENT_PRECISION_HIGH ->>>>>>> Stashed changes precision highp float; #else precision mediump float; @@ -21261,15 +11851,7 @@ vec2 worldToPx(vec2 worldPos) { vec4 screenPos = u_projectionMatrix * vec4(worldPos, 0.0, 1.0); return (0.5 * screenPos.xy + 0.5) * u_viewportSizePx; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream ${vp} -======= -${Hp} ->>>>>>> Stashed changes -======= -${Hp} ->>>>>>> Stashed changes vec2 df_from(float value) { return vec2(value, 0.); @@ -21382,21 +11964,9 @@ float df_mod(vec2 df, vec2 m) { return rem.x + rem.y * u_one; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream `, Dp = hp(), Op = class { constructor() { this.uniforms_ = [], this.attributes_ = [], this.hasSymbol_ = !1, this.symbolSizeExpression_ = `vec2(${Zf(Dp["circle-radius"])} + ${Zf(Dp["circle-stroke-width"] * .5)})`, this.symbolRotationExpression_ = "0.0", this.symbolOffsetExpression_ = "vec2(0.0)", this.symbolColorExpression_ = $f(Dp["circle-fill-color"]), this.texCoordExpression_ = "vec4(0.0, 0.0, 1.0, 1.0)", this.fragmentDiscardExpression_ = null, this.shapeDiscardExpression_ = null, this.symbolRotateWithView_ = !1, this.hasStroke_ = !1, this.strokeWidthExpression_ = Zf(Dp["stroke-width"]), this.strokeColorExpression_ = $f(Dp["stroke-color"]), this.strokeOffsetExpression_ = "0.", this.strokeCapExpression_ = ip("round"), this.strokeJoinExpression_ = ip("round"), this.strokeMiterLimitExpression_ = "10.", this.strokeDistanceFieldExpression_ = "-1000.", this.strokePatternLengthExpression_ = null, this.hasFill_ = !1, this.fillColorExpression_ = $f(Dp["fill-color"]), this.fillPatternSizeExpression_ = null, this.vertexShaderFunctions_ = [], this.fragmentShaderFunctions_ = []; -======= -`, Zp = zp(), Qp = class { - constructor() { - this.uniforms_ = [], this.attributes_ = [], this.hasSymbol_ = !1, this.symbolSizeExpression_ = `vec2(${xp(Zp["circle-radius"])} + ${xp(Zp["circle-stroke-width"] * .5)})`, this.symbolRotationExpression_ = "0.0", this.symbolOffsetExpression_ = "vec2(0.0)", this.symbolColorExpression_ = Cp(Zp["circle-fill-color"]), this.texCoordExpression_ = "vec4(0.0, 0.0, 1.0, 1.0)", this.fragmentDiscardExpression_ = null, this.shapeDiscardExpression_ = null, this.symbolRotateWithView_ = !1, this.hasStroke_ = !1, this.strokeWidthExpression_ = xp(Zp["stroke-width"]), this.strokeColorExpression_ = Cp(Zp["stroke-color"]), this.strokeOffsetExpression_ = "0.", this.strokeCapExpression_ = Op("round"), this.strokeJoinExpression_ = Op("round"), this.strokeMiterLimitExpression_ = "10.", this.strokeDistanceFieldExpression_ = "-1000.", this.strokePatternLengthExpression_ = null, this.hasFill_ = !1, this.fillColorExpression_ = Cp(Zp["fill-color"]), this.fillPatternSizeExpression_ = null, this.vertexShaderFunctions_ = [], this.fragmentShaderFunctions_ = []; ->>>>>>> Stashed changes -======= -`, Zp = zp(), Qp = class { - constructor() { - this.uniforms_ = [], this.attributes_ = [], this.hasSymbol_ = !1, this.symbolSizeExpression_ = `vec2(${xp(Zp["circle-radius"])} + ${xp(Zp["circle-stroke-width"] * .5)})`, this.symbolRotationExpression_ = "0.0", this.symbolOffsetExpression_ = "vec2(0.0)", this.symbolColorExpression_ = Cp(Zp["circle-fill-color"]), this.texCoordExpression_ = "vec4(0.0, 0.0, 1.0, 1.0)", this.fragmentDiscardExpression_ = null, this.shapeDiscardExpression_ = null, this.symbolRotateWithView_ = !1, this.hasStroke_ = !1, this.strokeWidthExpression_ = xp(Zp["stroke-width"]), this.strokeColorExpression_ = Cp(Zp["stroke-color"]), this.strokeOffsetExpression_ = "0.", this.strokeCapExpression_ = Op("round"), this.strokeJoinExpression_ = Op("round"), this.strokeMiterLimitExpression_ = "10.", this.strokeDistanceFieldExpression_ = "-1000.", this.strokePatternLengthExpression_ = null, this.hasFill_ = !1, this.fillColorExpression_ = Cp(Zp["fill-color"]), this.fillPatternSizeExpression_ = null, this.vertexShaderFunctions_ = [], this.fragmentShaderFunctions_ = []; ->>>>>>> Stashed changes } addUniform(e, t) { return this.uniforms_.push({ @@ -21501,15 +12071,7 @@ float df_mod(vec2 df, vec2 m) { return this.fragmentShaderFunctions_.includes(e) || this.fragmentShaderFunctions_.push(e), this; } getSymbolVertexShader() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return this.hasSymbol_ ? `${Ep} -======= - return this.hasSymbol_ ? `${Xp} ->>>>>>> Stashed changes -======= - return this.hasSymbol_ ? `${Xp} ->>>>>>> Stashed changes ${this.uniforms_.map((e) => `uniform ${e.type} ${e.name};`).join("\n")} attribute vec2 a_position; attribute vec2 a_localPosition; @@ -21560,15 +12122,7 @@ ${this.shapeDiscardExpression_ ? ` if (${this.shapeDiscardExpression_}) { gl_Po }` : null; } getSymbolFragmentShader() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return this.hasSymbol_ ? `${Ep} -======= - return this.hasSymbol_ ? `${Xp} ->>>>>>> Stashed changes -======= - return this.hasSymbol_ ? `${Xp} ->>>>>>> Stashed changes ${this.uniforms_.map((e) => `uniform ${e.type} ${e.name};`).join("\n")} varying vec2 v_texCoord; varying vec4 v_hitColor; @@ -21594,15 +12148,7 @@ ${this.fragmentDiscardExpression_ ? ` if (${this.fragmentDiscardExpression_}) { }` : null; } getStrokeVertexShader() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return this.hasStroke_ ? `${Ep} -======= - return this.hasStroke_ ? `${Xp} ->>>>>>> Stashed changes -======= - return this.hasStroke_ ? `${Xp} ->>>>>>> Stashed changes ${this.uniforms_.map((e) => `uniform ${e.type} ${e.name};`).join("\n")} attribute vec2 a_segmentStart; attribute vec2 a_segmentEnd; @@ -21681,15 +12227,7 @@ void main(void) { vec2 joinDirection; vec2 positionPx = mix(segmentStartPx, segmentEndPx, startEndRatio); // if angle is too high, do not make a proper join -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (cos(angle) > ${gp} || isCap(angle)) { -======= - if (cos(angle) > ${Bp} || isCap(angle)) { ->>>>>>> Stashed changes -======= - if (cos(angle) > ${Bp} || isCap(angle)) { ->>>>>>> Stashed changes joinDirection = normalPx * normalDir - tangentPx * tangentDir; } else { joinDirection = getJoinOffsetDirection(normalPx * normalDir, angle); @@ -21715,15 +12253,7 @@ ${this.shapeDiscardExpression_ ? ` if (${this.shapeDiscardExpression_}) { gl_Po }` : null; } getStrokeFragmentShader() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return this.hasStroke_ ? `${Ep} -======= - return this.hasStroke_ ? `${Xp} ->>>>>>> Stashed changes -======= - return this.hasStroke_ ? `${Xp} ->>>>>>> Stashed changes ${this.uniforms_.map((e) => `uniform ${e.type} ${e.name};`).join("\n")} varying vec2 v_segmentStartPx; varying vec2 v_segmentEndPx; @@ -21779,15 +12309,7 @@ float bevelJoinField(vec2 point, vec2 start, vec2 end, float width, float joinAn } float miterJoinDistanceField(vec2 point, vec2 start, vec2 end, float width, float joinAngle) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (cos(joinAngle) > ${gp}) { // avoid risking a division by zero -======= - if (cos(joinAngle) > ${Bp}) { // avoid risking a division by zero ->>>>>>> Stashed changes -======= - if (cos(joinAngle) > ${Bp}) { // avoid risking a division by zero ->>>>>>> Stashed changes return bevelJoinField(point, start, end, width, joinAngle); } float miterLength = 1. / sin(joinAngle * 0.5); @@ -21799,42 +12321,18 @@ float miterJoinDistanceField(vec2 point, vec2 start, vec2 end, float width, floa } float capDistanceField(vec2 point, vec2 start, vec2 end, float width, float capType) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (capType == ${ip("butt")}) { return buttCapDistanceField(point, start, end); } else if (capType == ${ip("square")}) { -======= - if (capType == ${Op("butt")}) { - return buttCapDistanceField(point, start, end); - } else if (capType == ${Op("square")}) { ->>>>>>> Stashed changes -======= - if (capType == ${Op("butt")}) { - return buttCapDistanceField(point, start, end); - } else if (capType == ${Op("square")}) { ->>>>>>> Stashed changes return squareCapDistanceField(point, start, end, width); } return roundCapDistanceField(point, start, end, width); } float joinDistanceField(vec2 point, vec2 start, vec2 end, float width, float joinAngle, float joinType) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (joinType == ${ip("bevel")}) { return bevelJoinField(point, start, end, width, joinAngle); } else if (joinType == ${ip("miter")}) { -======= - if (joinType == ${Op("bevel")}) { - return bevelJoinField(point, start, end, width, joinAngle); - } else if (joinType == ${Op("miter")}) { ->>>>>>> Stashed changes -======= - if (joinType == ${Op("bevel")}) { - return bevelJoinField(point, start, end, width, joinAngle); - } else if (joinType == ${Op("miter")}) { ->>>>>>> Stashed changes return miterJoinDistanceField(point, start, end, width, joinAngle); } return roundJoinDistanceField(point, start, end, width); @@ -21906,15 +12404,7 @@ ${this.fragmentDiscardExpression_ ? ` if (${this.fragmentDiscardExpression_}) { }` : null; } getFillVertexShader() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return this.hasFill_ ? `${Ep} -======= - return this.hasFill_ ? `${Xp} ->>>>>>> Stashed changes -======= - return this.hasFill_ ? `${Xp} ->>>>>>> Stashed changes ${this.uniforms_.map((e) => `uniform ${e.type} ${e.name};`).join("\n")} attribute vec2 a_position; attribute vec2 a_hitColor; @@ -21952,15 +12442,7 @@ ${this.shapeDiscardExpression_ ? ` if (${this.shapeDiscardExpression_}) { gl_Po }` : null; } getFillFragmentShader() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return this.hasFill_ ? `${Ep} -======= - return this.hasFill_ ? `${Xp} ->>>>>>> Stashed changes -======= - return this.hasFill_ ? `${Xp} ->>>>>>> Stashed changes ${this.uniforms_.map((e) => `uniform ${e.type} ${e.name};`).join("\n")} varying vec4 v_hitColor; varying vec2 v_patternOriginPx; @@ -21995,24 +12477,12 @@ ${this.fragmentDiscardExpression_ ? ` if (${this.fragmentDiscardExpression_}) { }; //#endregion //#region node_modules/ol/geom/flat/interpolate.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function kp(e, t, n, r, i, a, o) { let s, c, u = (n - t) / r; if (u === 1) s = t; else if (u === 2) s = t, c = i; else if (u !== 0) { let a = e[t], o = e[t + 1], u = 0, d = [0]; -======= -======= ->>>>>>> Stashed changes -function $p(e, t, n, r, i, a, o) { - let s, c, l = (n - t) / r; - if (l === 1) s = t; - else if (l === 2) s = t, c = i; - else if (l !== 0) { - let a = e[t], o = e[t + 1], l = 0, u = [0]; ->>>>>>> Stashed changes for (let i = t + r; i < n; i += r) { let t = e[i], n = e[i + 1]; u += Math.sqrt((t - a) * (t - a) + (n - o) * (n - o)), d.push(u), a = t, o = n; @@ -22026,16 +12496,8 @@ function $p(e, t, n, r, i, a, o) { } //#endregion //#region node_modules/ol/geom/flat/center.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Ap(e, t, n, r) { let i = [], a = at(); -======= -======= ->>>>>>> Stashed changes -function em(e, t, n, r) { - let i = [], a = We(); ->>>>>>> Stashed changes for (let o = 0, s = n.length; o < s; ++o) { let s = n[o]; a = lt(e, t, s[0], r), i.push((a[0] + a[2]) / 2, (a[1] + a[3]) / 2), t = s[s.length - 1]; @@ -22044,15 +12506,7 @@ function em(e, t, n, r) { } //#endregion //#region node_modules/ol/render/Feature.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var jp = Kr(), Mp = class e { -======= -var tm = qr(), nm = class e { ->>>>>>> Stashed changes -======= -var tm = qr(), nm = class e { ->>>>>>> Stashed changes constructor(e, t, n, r, i, a) { this.styleFunction, this.extent_, this.id_ = a, this.type_ = e, this.flatCoordinates_ = t, this.flatInteriorPoints_ = null, this.flatMidpoints_ = null, this.ends_ = n || null, this.properties_ = i, this.squaredTolerance_, this.stride_ = r, this.simplifiedGeometry_; } @@ -22064,62 +12518,28 @@ var tm = qr(), nm = class e { } getFlatInteriorPoint() { if (!this.flatInteriorPoints_) { -<<<<<<< Updated upstream let e = yt(this.getExtent()); this.flatInteriorPoints_ = Ga(this.flatCoordinates_, 0, this.ends_, this.stride_, e, 0); -======= - let e = it(this.getExtent()); - this.flatInteriorPoints_ = Gi(this.flatCoordinates_, 0, this.ends_, this.stride_, e, 0); -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes } return this.flatInteriorPoints_; } getFlatInteriorPoints() { if (!this.flatInteriorPoints_) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let e = Za(this.flatCoordinates_, this.ends_), t = Ap(this.flatCoordinates_, 0, e, this.stride_); this.flatInteriorPoints_ = Ka(this.flatCoordinates_, 0, e, this.stride_, t); -======= - let e = Zi(this.flatCoordinates_, this.ends_), t = em(this.flatCoordinates_, 0, e, this.stride_); - this.flatInteriorPoints_ = Ki(this.flatCoordinates_, 0, e, this.stride_, t); ->>>>>>> Stashed changes -======= - let e = Zi(this.flatCoordinates_, this.ends_), t = em(this.flatCoordinates_, 0, e, this.stride_); - this.flatInteriorPoints_ = Ki(this.flatCoordinates_, 0, e, this.stride_, t); ->>>>>>> Stashed changes } return this.flatInteriorPoints_; } getFlatMidpoint() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return this.flatMidpoints_ ||= kp(this.flatCoordinates_, 0, this.flatCoordinates_.length, this.stride_, .5), this.flatMidpoints_; -======= - return this.flatMidpoints_ ||= $p(this.flatCoordinates_, 0, this.flatCoordinates_.length, this.stride_, .5), this.flatMidpoints_; ->>>>>>> Stashed changes -======= - return this.flatMidpoints_ ||= $p(this.flatCoordinates_, 0, this.flatCoordinates_.length, this.stride_, .5), this.flatMidpoints_; ->>>>>>> Stashed changes } getFlatMidpoints() { if (!this.flatMidpoints_) { this.flatMidpoints_ = []; let e = this.flatCoordinates_, t = 0, n = this.ends_; for (let r = 0, i = n.length; r < i; ++r) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let i = n[r], a = kp(e, t, i, this.stride_, .5); m(this.flatMidpoints_, a), t = i; -======= -======= ->>>>>>> Stashed changes - let i = n[r], a = $p(e, t, i, this.stride_, .5); - ue(this.flatMidpoints_, a), t = i; ->>>>>>> Stashed changes } } return this.flatMidpoints_; @@ -22158,16 +12578,8 @@ var tm = qr(), nm = class e { e = gr(e); let t = e.getExtent(), n = e.getWorldExtent(); if (t && n) { -<<<<<<< Updated upstream let e = Ct(n) / Ct(t); $r(jp, n[0], n[3], e, -e, 0, 0, 0), sa(this.flatCoordinates_, 0, this.flatCoordinates_.length, this.stride_, jp, this.flatCoordinates_); -======= - let e = ct(n) / ct(t); - ei(tm, n[0], n[3], e, -e, 0, 0, 0), si(this.flatCoordinates_, 0, this.flatCoordinates_.length, this.stride_, tm, this.flatCoordinates_); -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes } } applyTransform(e) { @@ -22186,53 +12598,21 @@ var tm = qr(), nm = class e { let r = this.simplifiedGeometry_.getFlatCoordinates(), i; switch (this.type_) { case "LineString": -<<<<<<< Updated upstream -<<<<<<< Updated upstream r.length = Ra(r, 0, this.simplifiedGeometry_.flatCoordinates_.length, this.simplifiedGeometry_.stride_, t, r, 0), i = [r.length]; break; case "MultiLineString": i = [], r.length = za(r, 0, this.simplifiedGeometry_.ends_, this.simplifiedGeometry_.stride_, t, r, 0, i); break; case "Polygon": i = [], r.length = Ha(r, 0, this.simplifiedGeometry_.ends_, this.simplifiedGeometry_.stride_, Math.sqrt(t), r, 0, i); -======= - r.length = Ri(r, 0, this.simplifiedGeometry_.flatCoordinates_.length, this.simplifiedGeometry_.stride_, t, r, 0), i = [r.length]; - break; - case "MultiLineString": - i = [], r.length = zi(r, 0, this.simplifiedGeometry_.ends_, this.simplifiedGeometry_.stride_, t, r, 0, i); - break; - case "Polygon": i = [], r.length = Hi(r, 0, this.simplifiedGeometry_.ends_, this.simplifiedGeometry_.stride_, Math.sqrt(t), r, 0, i); ->>>>>>> Stashed changes -======= - r.length = Ri(r, 0, this.simplifiedGeometry_.flatCoordinates_.length, this.simplifiedGeometry_.stride_, t, r, 0), i = [r.length]; - break; - case "MultiLineString": - i = [], r.length = zi(r, 0, this.simplifiedGeometry_.ends_, this.simplifiedGeometry_.stride_, t, r, 0, i); - break; - case "Polygon": i = [], r.length = Hi(r, 0, this.simplifiedGeometry_.ends_, this.simplifiedGeometry_.stride_, Math.sqrt(t), r, 0, i); ->>>>>>> Stashed changes } return i && (this.simplifiedGeometry_ = new e(this.type_, r, i, this.stride_, this.properties_, this.id_)), this.squaredTolerance_ = t, this.simplifiedGeometry_; }), this; } }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream Mp.prototype.getFlatCoordinates = Mp.prototype.getOrientedFlatCoordinates; //#endregion //#region node_modules/ol/render/webgl/MixedGeometryBatch.js var Np = class e { -======= -nm.prototype.getFlatCoordinates = nm.prototype.getOrientedFlatCoordinates; -//#endregion -//#region node_modules/ol/render/webgl/MixedGeometryBatch.js -var rm = class e { ->>>>>>> Stashed changes -======= -nm.prototype.getFlatCoordinates = nm.prototype.getOrientedFlatCoordinates; -//#endregion -//#region node_modules/ol/render/webgl/MixedGeometryBatch.js -var rm = class e { ->>>>>>> Stashed changes constructor() { this.globalCounter_ = 0, this.refToFeature_ = /* @__PURE__ */ new Map(), this.uidToRef_ = /* @__PURE__ */ new Map(), this.freeGlobalRef_ = [], this.polygonBatch = { entries: {}, @@ -22332,18 +12712,8 @@ var rm = class e { break; case "Polygon": { let e = n; -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (r instanceof Mp) { let n = Za(t, e); -======= - if (r instanceof nm) { - let n = Zi(t, e); ->>>>>>> Stashed changes -======= - if (r instanceof nm) { - let n = Zi(t, e); ->>>>>>> Stashed changes if (n.length > 1) { this.addCoordinates_("MultiPolygon", t, n, r, i, a, o); return; @@ -22357,15 +12727,7 @@ var rm = class e { ringsVerticesCounts: [] })), s = t.length / a; let c = n.length, l = n.map((e, t, n) => t > 0 ? (e - n[t - 1]) / a : e / a); -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.polygonBatch.verticesCount += s, this.polygonBatch.ringsCount += c, this.polygonBatch.geometriesCount++, this.polygonBatch.entries[i].flatCoordss.push(Pp(t, a)), this.polygonBatch.entries[i].ringsVerticesCounts.push(l), this.polygonBatch.entries[i].verticesCount += s, this.polygonBatch.entries[i].ringsCount += c; -======= - this.polygonBatch.verticesCount += s, this.polygonBatch.ringsCount += c, this.polygonBatch.geometriesCount++, this.polygonBatch.entries[i].flatCoordss.push(im(t, a)), this.polygonBatch.entries[i].ringsVerticesCounts.push(l), this.polygonBatch.entries[i].verticesCount += s, this.polygonBatch.entries[i].ringsCount += c; ->>>>>>> Stashed changes -======= - this.polygonBatch.verticesCount += s, this.polygonBatch.ringsCount += c, this.polygonBatch.geometriesCount++, this.polygonBatch.entries[i].flatCoordss.push(im(t, a)), this.polygonBatch.entries[i].ringsVerticesCounts.push(l), this.polygonBatch.entries[i].verticesCount += s, this.polygonBatch.entries[i].ringsCount += c; ->>>>>>> Stashed changes for (let n = 0, s = e.length; n < s; n++) { let s = n > 0 ? e[n - 1] : 0; this.addCoordinates_("LinearRing", t.slice(s, e[n]), null, r, i, a, o); @@ -22383,15 +12745,7 @@ var rm = class e { feature: r, flatCoordss: [], verticesCount: 0 -<<<<<<< Updated upstream -<<<<<<< Updated upstream })), s = t.length / a, this.lineStringBatch.verticesCount += s, this.lineStringBatch.geometriesCount++, this.lineStringBatch.entries[i].flatCoordss.push(Fp(t, a, o)), this.lineStringBatch.entries[i].verticesCount += s; -======= - })), s = t.length / a, this.lineStringBatch.verticesCount += s, this.lineStringBatch.geometriesCount++, this.lineStringBatch.entries[i].flatCoordss.push(am(t, a, o)), this.lineStringBatch.entries[i].verticesCount += s; ->>>>>>> Stashed changes -======= - })), s = t.length / a, this.lineStringBatch.verticesCount += s, this.lineStringBatch.geometriesCount++, this.lineStringBatch.entries[i].flatCoordss.push(am(t, a, o)), this.lineStringBatch.entries[i].verticesCount += s; ->>>>>>> Stashed changes } } addRefToEntry_(e, t) { @@ -22429,62 +12783,24 @@ var rm = class e { return r ? new e() : n; } }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Pp(e, t) { return t === 2 ? e : e.filter((e, n) => n % t < 2); } function Fp(e, t, n) { -======= -function im(e, t) { - return t === 2 ? e : e.filter((e, n) => n % t < 2); -} -function am(e, t, n) { ->>>>>>> Stashed changes -======= -function im(e, t) { - return t === 2 ? e : e.filter((e, n) => n % t < 2); -} -function am(e, t, n) { ->>>>>>> Stashed changes return t === 3 && n === "XYM" ? e : t === 4 ? e.filter((e, n) => n % t !== 2) : t === 3 ? e.map((e, n) => n % t === 2 ? 0 : e) : Array(e.length * 1.5).fill(0).map((t, n) => n % 3 == 2 ? 0 : e[Math.round(n / 1.5)]); } //#endregion //#region node_modules/ol/webgl/LabelsArray.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var Ip = new TextEncoder(), Lp = 1e5, Rp = class { constructor() { this.array_ = new Uint8Array(Lp), this.actualSize_ = 0, this.labelPositionMap_ = /* @__PURE__ */ new Map(); -======= -var om = new TextEncoder(), sm = 1e5, cm = class { - constructor() { - this.array_ = new Uint8Array(sm), this.actualSize_ = 0, this.labelPositionMap_ = /* @__PURE__ */ new Map(); ->>>>>>> Stashed changes -======= -var om = new TextEncoder(), sm = 1e5, cm = class { - constructor() { - this.array_ = new Uint8Array(sm), this.actualSize_ = 0, this.labelPositionMap_ = /* @__PURE__ */ new Map(); ->>>>>>> Stashed changes } push(e) { if (e === "") return [0, 0]; if (this.labelPositionMap_.has(e)) return this.labelPositionMap_.get(e); -<<<<<<< Updated upstream -<<<<<<< Updated upstream let t = Ip.encode(e); if (this.actualSize_ + t.length > this.array_.length) { let e = new Uint8Array(this.array_.length + Lp); -======= - let t = om.encode(e); - if (this.actualSize_ + t.length > this.array_.length) { - let e = new Uint8Array(this.array_.length + sm); ->>>>>>> Stashed changes -======= - let t = om.encode(e); - if (this.actualSize_ + t.length > this.array_.length) { - let e = new Uint8Array(this.array_.length + sm); ->>>>>>> Stashed changes e.set(this.array_), this.array_ = e; } let n = this.actualSize_; @@ -22498,104 +12814,46 @@ var om = new TextEncoder(), sm = 1e5, cm = class { }; //#endregion //#region node_modules/ol/worker/textOverlay.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function zp() { -======= -function lm() { ->>>>>>> Stashed changes -======= -function lm() { ->>>>>>> Stashed changes let e = "function t(t,e){return t>e?1:t1?(i=r,n=s):l>0&&(i+=o*l,n+=a*l)}return f(t,e,i,n)}function f(t,e,i,n){const r=i-t,s=n-e;return r*r+s*s}function d(t){return 180*t/Math.PI}function g(t){return t*Math.PI/180}function p(t,e,i){return t+i*(e-t)}function _(t,e,i){if(t>=e&&t.0031308?269.025*Math.pow(t,1/2.4)-14.025:3294.6*t}function P(t){return t>.2068965?Math.pow(t,3):108/841*(t-4/29)}function O(t){return t>10.314724?Math.pow((t+14.025)/269.025,2.4):t/3294.6}function R(t){return t>.0088564?Math.pow(t,1/3):t/(108/841)+4/29}function L(t){const e=O(t[0]),i=O(t[1]),n=O(t[2]),r=R(.222488403*e+.716873169*i+.06060791*n),s=500*(R(.452247074*e+.399439023*i+.148375274*n)-r),o=200*(r-R(.016863605*e+.117638439*i+.865350722*n)),a=Math.atan2(o,s)*(180/Math.PI);return[116*r-16,Math.sqrt(s*s+o*o),a<0?a+360:a,t[3]]}function D(t){if(\"none\"===t)return m;if(I.hasOwnProperty(t))return I[t];if(E>=1024){let t=0;for(const e in I)3&t++||(delete I[e],--E)}const e=M(t);4!==e.length&&b(t);for(const i of e)isNaN(i)&&b(t);return I[t]=e,++E,e}function F(t){return Array.isArray(t)?t:D(t)}function T(t){let e=t[0];e!=(0|e)&&(e=e+.5|0);let i=t[1];i!=(0|i)&&(i=i+.5|0);let n=t[2];n!=(0|n)&&(n=n+.5|0);return\"rgba(\"+e+\",\"+i+\",\"+n+\",\"+(void 0===t[3]?1:Math.round(1e3*t[3])/1e3)+\")\"}function z(t,e){return Array.isArray(t)?t:(void 0===e?e=[t,t]:(e[0]=t,e[1]=t),e)}let $=0;const W=1<<$++,G=1<<$++,N=1<<$++,X=1<<$++,Y=1<<$++,B=1<<$++,U=Math.pow(2,6)-1,j={[W]:\"boolean\",[G]:\"number\",[N]:\"string\",[X]:\"color\",[Y]:\"number[]\",[B]:\"size\"},V=Object.keys(j).map(Number).sort(t);function q(t){const e=[];for(const i of V)J(t,i)&&e.push(j[i]);return 0===e.length?\"untyped\":e.length<3?e.join(\" or \"):e.slice(0,-1).join(\", \")+\", or \"+e[e.length-1]}function J(t,e){return(t&e)===e}function K(t,e){return!!(t&e)}function H(t,e){return t===e}class Z{constructor(t,e){if(!function(t){return t in j}(t))throw new Error(`literal expressions must have a specific type, got ${q(t)}`);this.type=t,this.value=e}}class Q{constructor(t,e,...i){this.type=t,this.operator=e,this.args=i}}function tt(t){return{variables:new Map,properties:new Map,featureId:!1,geometryType:!1,mCoordinate:!1,mapState:!1,inputVariables:t}}function et(t,e,i){switch(typeof t){case\"boolean\":if(H(e,N))return new Z(N,t?\"true\":\"false\");if(!J(e,W))throw new Error(`got a boolean, but expected ${q(e)}`);return new Z(W,t);case\"number\":if(H(e,B))return new Z(B,z(t));if(H(e,W))return new Z(W,!!t);if(H(e,N))return new Z(N,t.toString());if(!J(e,G))throw new Error(`got a number, but expected ${q(e)}`);return new Z(G,t);case\"string\":if(H(e,X))return new Z(X,D(t));if(H(e,W))return new Z(W,!!t);if(!J(e,N))throw new Error(`got a string, but expected ${q(e)}`);return new Z(N,t)}if(!Array.isArray(t))throw new Error(\"expression must be an array or a primitive value\");if(0===t.length)throw new Error(\"empty expression\");if(\"string\"==typeof t[0])return function(t,e,i){const n=t[0],r=Jt[n];if(!r)throw new Error(`unknown operator: ${n}`);return r(t,e,i)}(t,e,i);for(const e of t)if(\"number\"!=typeof e)throw new Error(\"expected an array of numbers\");if(H(e,B)){if(2!==t.length)throw new Error(`expected an array of two values for a size, got ${t.length}`);return new Z(B,t)}if(H(e,X)){if(3===t.length)return new Z(X,[...t,1]);if(4===t.length)return new Z(X,t);throw new Error(`expected an array of 3 or 4 values for a color, got ${t.length}`)}if(!J(e,Y))throw new Error(`got an array of numbers, but expected ${q(e)}`);return new Z(Y,t)}const it=\"get\",nt=\"var\",rt=\"concat\",st=\"geometry-type\",ot=\"line-metric\",at=\"any\",lt=\"all\",ht=\"!\",ct=\"resolution\",ut=\"zoom\",ft=\"time\",dt=\"==\",gt=\"!=\",pt=\">\",_t=\">=\",mt=\"<\",yt=\"<=\",wt=\"*\",xt=\"/\",vt=\"+\",St=\"-\",Ct=\"clamp\",bt=\"%\",Mt=\"^\",It=\"abs\",Et=\"floor\",kt=\"ceil\",At=\"round\",Pt=\"sin\",Ot=\"cos\",Rt=\"atan\",Lt=\"sqrt\",Dt=\"match\",Ft=\"between\",Tt=\"interpolate\",zt=\"coalesce\",$t=\"case\",Wt=\"in\",Gt=\"number\",Nt=\"string\",Xt=\"array\",Yt=\"color\",Bt=\"id\",Ut=\"band\",jt=\"palette\",Vt=\"to-string\",qt=\"has\",Jt={[it]:re(Qt(1,1/0),Kt),[nt]:function(t,e,i){const n=t[1];if(\"string\"!=typeof n)throw new Error(\"expected a string argument for var operation\");let r=e;const s=i.inputVariables?.[n];if(void 0!==s){const t=et(s,U,i);if(!(t instanceof Z))throw new Error(`style variables should only be literal values (no expressions!), variable name: ${n}`);let o=t.type;if(\"string\"==typeof s&&K(r,X)&&!K(r,N)?o=X:Array.isArray(s)&&2===s.length&&K(r,B)&&!K(r,Y)&&(o=B),r&=o,0===r)throw new Error(`the type expected from the var operator (${q(e)}) did not have any overlap with the type of the corresponding style variables (${q(o)}), variable name: ${n}`)}if(i.variables.has(n)){const t=i.variables.get(n);if(r&=t,0===r)throw new Error(`a new type expected from the var operator (${q(e)}) did not have any overlap with the previous type expected for it (${q(t)}), variable name: ${n}`)}return i.variables.set(n,r),new Q(r,\"var\",new Z(N,n))},[qt]:re(Qt(1,1/0),Kt),[Bt]:re(function(t,e,i){i.featureId=!0},Zt),[rt]:re(Qt(2,1/0),ee(N)),[st]:re(function(t,e,i){i.geometryType=!0},Zt),[ot]:re(function(t,e,i){i.mCoordinate=!0},Zt),[ct]:re(Ht,Zt),[ut]:re(Ht,Zt),[ft]:re(Ht,Zt),[at]:re(Qt(2,1/0),ee(W)),[lt]:re(Qt(2,1/0),ee(W)),[ht]:re(Qt(1,1),ee(W)),[dt]:re(Qt(2,2),ie()),[gt]:re(Qt(2,2),ie()),[pt]:re(Qt(2,2),ee(G)),[_t]:re(Qt(2,2),ee(G)),[mt]:re(Qt(2,2),ee(G)),[yt]:re(Qt(2,2),ee(G)),[wt]:re(Qt(2,1/0),te),[zt]:re(Qt(2,1/0),te),[xt]:re(Qt(2,2),ee(G)),[vt]:re(Qt(2,1/0),ee(G)),[St]:re(Qt(2,2),ee(G)),[Ct]:re(Qt(3,3),ee(G)),[bt]:re(Qt(2,2),ee(G)),[Mt]:re(Qt(2,2),ee(G)),[It]:re(Qt(1,1),ee(G)),[Et]:re(Qt(1,1),ee(G)),[kt]:re(Qt(1,1),ee(G)),[At]:re(Qt(1,1),ee(G)),[Pt]:re(Qt(1,1),ee(G)),[Ot]:re(Qt(1,1),ee(G)),[Rt]:re(Qt(1,2),ee(G)),[Lt]:re(Qt(1,1),ee(G)),[Dt]:re(Qt(4,1/0),ne,function(t,e,i){const n=t.length-1,r=et(t[t.length-1],e,i);let s=N|G|W;const o=new Array(n-2);for(let e=0;ee){throw new Error(`expected ${e===1/0?`${t} or more`:`${t} to ${e}`} arguments for ${s}, got ${o}`)}}}function te(t,e,i){const n=t.length-1,r=new Array(n);for(let s=0;sr&&(l|=he),as&&(l|=le),l===oe&&(l=ae),l}function _e(t,e,i,n,r){return r?(r[0]=t,r[1]=e,r[2]=i,r[3]=n,r):[t,e,i,n]}function me(t){return _e(1/0,1/0,-1/0,-1/0,t)}function ye(t,e){const i=t[0],n=t[1];return _e(i,n,i,n,e)}function we(t,e,i,n,r){return xe(me(r),t,e,i,n)}function xe(t,e,i,n,r){for(;i=e[0]&&t[1]<=e[3]&&t[3]>=e[1]}function Me(t,e,i,n){let r=t[e],s=t[e+1],o=0;for(let a=e+n;a0?l:2*Math.PI-l}([t,e],[i,n],[r,s]);if(Math.cos(d)>.998)return[t+u*o,e+f*o];const g=Math.cos(d/2),p=Math.sin(d/2);return[t+(p*a+g*l)*(1/p)*o,e+(-g*a+p*l)*(1/p)*o]}function ke(t,e,i=!1){for(let n=0,r=t.length-2;nn+e;r-=e){const i=t[n],s=t[n+1],o=t[n+e],a=t[n+e+1],l=t[r],h=t[r+1],c=t[r+e],u=t[r+e+1],f=(u-h)*(o-i)-(c-l)*(a-s);if(0===f)continue;const d=((c-l)*(s-h)-(u-h)*(i-l))/f,g=((o-i)*(s-h)-(a-s)*(i-l))/f;if(d>0&&d<1&&g>0&&g<1){const l=i+d*(o-i),h=s+d*(a-s);t[n+e]=l,t[n+e+1]=h,t.splice(n+2*e,r-n-e);break}}}return t}function Ae(t,e,i,n,r,s,o){s=s||[],o=o||2;let a=0;for(let l=e;lt[2]}else A=S>E;const P=Math.PI,O=[],R=b+n===e;let L;if(y=0,w=M,d=t[e=b],g=t[e+1],R){x(),L=Math.atan2(g-m,d-_),A&&(L+=L>0?-P:P);const t=(E+S)/2,e=(k+C)/2;return O[0]=[t,e,(I-s)/2,L,r],O}r=r.replace(/\\n/g,\" \");const D=Array.from((Oe||(Oe=new Intl.Segmenter(void 0,{granularity:\"grapheme\"})),Oe).segment(r),t=>t.segment);for(let t=0,r=D.length;t0?-P:P),void 0!==L){let t=u-L;if(t+=t>P?-2*P:t<-P?2*P:0,Math.abs(t)>o)return null}L=u;const f=t;let S=0;for(;t0)}removeEventListener(t,e){if(!this.listeners_)return;const i=this.listeners_[t];if(!i)return;const n=i.indexOf(e);-1!==n&&(this.pendingRemovals_&&t in this.pendingRemovals_?(i[n]=qe,++this.pendingRemovals_[t]):(i.splice(n,1),0===i.length&&delete this.listeners_[t]))}}class Ze extends He{constructor(){super(),this.on=this.onInternal,this.once=this.onceInternal,this.un=this.unInternal,this.revision_=0}changed(){++this.revision_,this.dispatchEvent(je)}getRevision(){return this.revision_}onInternal(t,e){if(Array.isArray(t)){const i=t.length,n=new Array(i);for(let r=0;rt.trim().replace(/^['\"]|['\"]$/g,\"\")),i},li=\"#000\",hi=\"round\",ci=[],ui=\"round\",fi=\"#000\",di=\"center\",gi=\"middle\",pi=[0,0,0,0],_i=new ni;let mi,yi=null;const wi={},xi=new Set([\"serif\",\"sans-serif\",\"monospace\",\"cursive\",\"fantasy\",\"system-ui\",\"ui-serif\",\"ui-sans-serif\",\"ui-monospace\",\"ui-rounded\",\"emoji\",\"math\",\"fangsong\"]);function vi(t,e,i){return`${t} ${e} 16px \"${i}\"`}const Si=function(){const t=100;let e,i;async function n(t){await i.ready;const e=ai(t),n=e.families[0].toLowerCase(),r=e.weight,s=[];if(i.forEach(t=>{const i=t.family.replace(/^['\"]|['\"]$/g,\"\").toLowerCase(),o=oi[t.weight]||t.weight;i===n&&t.style===e.style&&o==r&&s.push(t)}),0===s.length)return!1;return(await Promise.all(s.map(t=>t.load().then(()=>!0,()=>!1)))).some(t=>t)}async function r(){await i.ready;let s=!0;const o=_i.getProperties(),a=Object.keys(o).filter(e=>o[e]=0;--e){const i=a[e];let r=o[i];rMath.max(e,Mi(t,i)),0);return i[e]=n,n}function Ei(t,e,i,n,r,s,o,a,l,h,c){t.save(),1!==i&&(void 0===t.globalAlpha?t.globalAlpha=t=>t.globalAlpha*=i:t.globalAlpha*=i),e&&t.transform.apply(t,e),n.contextInstructions?(t.translate(l,h),t.scale(c[0],c[1]),function(t,e){const i=t.contextInstructions;for(let t=0,n=i.length;t{if(\"function\"==typeof t[e])return this.pendingMethod_=e,this.pushMethodArgs_},set:(t,e,i)=>(this.push_(e,i),!0)})}push_(...t){const e=this.instructions_,i=this.zIndex+this.offset_;e[i]||(e[i]=[]),e[i].push(...t)}pushMethodArgs_=(...t)=>{this.push_(this.pendingMethod_,t)};pushFunction(t){this.push_(t)}getContext(){return this.context_}draw(t){this.instructions_.forEach(e=>{for(let i=0,n=e.length;it.decode().then(()=>e(t)).catch(n=>t.complete&&t.width?e(t):i(n))):function(t){return new Promise((e,i)=>{function n(){s(),e(t)}function r(){s(),i(new Error(\"Image load error\"))}function s(){t.removeEventListener(\"load\",n),t.removeEventListener(\"error\",r)}t.addEventListener(\"load\",n),t.addEventListener(\"error\",r)})}(t)}function Vi(t,e){return t+\":\"+(e?F(e):\"null\")}const qi=new class{constructor(){this.cache_={},this.patternCache_={},this.cacheSize_=0,this.maxCacheSize_=1024}clear(){this.cache_={},this.patternCache_={},this.cacheSize_=0}canExpireCache(){return this.cacheSize_>this.maxCacheSize_}expire(){if(this.canExpireCache()){let t=0;for(const e in this.cache_){const i=this.cache_[e];3&t++||i.hasListener()||(delete this.cache_[e],delete this.patternCache_[e],--this.cacheSize_)}}}get(t,e){const i=Vi(t,e);return i in this.cache_?this.cache_[i]:null}getPattern(t,e){const i=Vi(t,e);return i in this.patternCache_?this.patternCache_[i]:null}set(t,e,i,n){const r=Vi(t,e),s=r in this.cache_;this.cache_[r]=i,n&&(i.getImageState()===Xi&&i.load(),i.getImageState()===Yi?i.ready().then(()=>{this.patternCache_[r]=h().createPattern(i.getImage(1),\"repeat\")}):this.patternCache_[r]=h().createPattern(i.getImage(1),\"repeat\")),s||++this.cacheSize_}setSize(t){this.maxCacheSize_=t,this.expire()}};let Ji=null;class Ki extends He{constructor(t,e,i,n,r){super(),this.hitDetectionImage_=null,this.image_=t,this.crossOrigin_=i?.crossOrigin,this.referrerPolicy_=i?.referrerPolicy,this.canvas_={},this.color_=r,this.imageState_=void 0===n?Xi:n,this.size_=t&&t.width&&t.height?[t.width,t.height]:null,this.src_=e,this.tainted_,this.ready_=null}initializeImage_(){this.image_=new Image,null!==this.crossOrigin_&&(this.image_.crossOrigin=this.crossOrigin_),void 0!==this.referrerPolicy_&&(this.image_.referrerPolicy=this.referrerPolicy_)}isTainted_(){if(void 0===this.tainted_&&this.imageState_===Bi){Ji||(Ji=a(1,1,0,{willReadFrequently:!0})),Ji.drawImage(this.image_,0,0);try{Ji.getImageData(0,0,1,1),this.tainted_=!1}catch{Ji=null,this.tainted_=!0}}return!0===this.tainted_}dispatchChangeEvent_(){this.dispatchEvent(je)}handleImageError_(){this.imageState_=Ui,this.dispatchChangeEvent_()}handleImageLoad_(){this.imageState_=Bi,this.size_=[this.image_.width,this.image_.height],this.dispatchChangeEvent_()}getImage(t){return this.image_||this.initializeImage_(),this.replaceColor_(t),this.canvas_[t]?this.canvas_[t]:this.image_}setImage(t){this.image_=t}getPixelRatio(t){return this.replaceColor_(t),this.canvas_[t]?t:1}getImageState(){return this.imageState_}getHitDetectionImage(){if(this.image_||this.initializeImage_(),!this.hitDetectionImage_)if(this.isTainted_()){const t=this.size_[0],e=this.size_[1],i=a(t,e);i.fillRect(0,0,t,e),this.hitDetectionImage_=i.canvas}else this.hitDetectionImage_=this.image_;return this.hitDetectionImage_}getSize(){return this.size_}getSrc(){return this.src_}load(){if(this.imageState_===Xi){this.image_||this.initializeImage_(),this.imageState_=Yi;try{void 0!==this.src_&&(this.image_.src=this.src_)}catch{this.handleImageError_()}this.image_ instanceof HTMLImageElement&&ji(this.image_,this.src_).then(t=>{this.image_=t,this.handleImageLoad_()}).catch(this.handleImageError_.bind(this))}}replaceColor_(t){if(!this.color_||this.canvas_[t]||this.imageState_!==Bi)return;const e=this.image_,i=a(Math.ceil(e.width*t),Math.ceil(e.height*t)),n=i.canvas;var r;i.scale(t,t),i.drawImage(e,0,0),i.globalCompositeOperation=\"multiply\",i.fillStyle=\"string\"==typeof(r=this.color_)?r:T(r),i.fillRect(0,0,n.width/t,n.height/t),i.globalCompositeOperation=\"destination-in\",i.drawImage(e,0,0),this.canvas_[t]=n}ready(){return this.ready_||(this.ready_=new Promise(t=>{if(this.imageState_===Bi||this.imageState_===Ui)t();else{const e=()=>{this.imageState_!==Bi&&this.imageState_!==Ui||(this.removeEventListener(je,e),t())};this.addEventListener(je,e)}})),this.ready_}}function Hi(t,e,i,n,r,s){let o=void 0===e?void 0:qi.get(e,r);return o||(o=new Ki(t,t&&\"src\"in t?t.src||void 0:e,i,n,r),qi.set(e,r,o,s)),s&&o&&!qi.getPattern(e,r)&&qi.set(e,r,o,s),o}function Zi(t){return t?Array.isArray(t)?T(t):\"object\"==typeof t&&\"src\"in t?function(t){if(!t.offset||!t.size)return qi.getPattern(t.src,t.color);const e=t.src+\":\"+t.offset,i=qi.getPattern(e,t.color);if(i)return i;const n=qi.get(t.src,null);if(n.getImageState()!==Bi)return null;const r=a(t.size[0],t.size[1]);return r.drawImage(n.getImage(1),t.offset[0],t.offset[1],t.size[0],t.size[1],0,0,t.size[0],t.size[1]),Hi(r.canvas,e,void 0,Bi,t.color,!0),qi.getPattern(e,t.color)}(t):t:null}let Qi=0,tn=1;function en(t,e,i,n,r,s,o,a){const l=o-r,h=a-s;let c=0,u=1;if(0===l){if(ri)return!1}else{let e=(t-r)/l,n=(i-r)/l;if(e>n){const t=e;e=n,n=t}if(e>c&&(c=e),nu)return!1}if(0===h){if(sn)return!1}else{let t=(e-s)/h,i=(n-s)/h;if(t>i){const e=t;t=i,i=e}if(t>c&&(c=t),iu)return!1}return Qi=c,tn=u,!0}function nn(t,e,i,n,r){const s=[];let o=i,a=0,l=e.slice(i,2);for(;a=t){const e=(t-a+u)/u,f=p(i,h,e),d=p(n,c,e);l.push(f,d),s.push(l),l=[f,d],a==t&&(o+=r),a=0}else if(a0&&s.push(l),s}function rn(t,e,i,n,r){let s,o,a,l,h,c,u,f,d,g,p=i,_=i,m=0,y=0,w=i;for(o=i;ot&&(y>m&&(m=y,p=w,_=o),y=0,w=o-r)),a=l,u=d,f=g),h=i,c=n}return y+=l,y>m?[w,o]:[p,_]}function sn(t,e,i,n,r){r=void 0!==r?r:[];let s=0;for(let o=e;oa&&(this.instructions.push([Li,a,h,t,i,sn,r]),this.hitDetectionInstructions.push([Li,a,h,t,n||i,sn,r]));break;case\"Point\":l=t.getFlatCoordinates(),this.coordinates.push(l[0],l[1]),h=this.coordinates.length,this.instructions.push([Li,a,h,t,i,void 0,r]),this.hitDetectionInstructions.push([Li,a,h,t,n||i,void 0,r])}this.endGeometry(e)}beginGeometry(t,e,i){this.beginGeometryInstruction1_=[Ai,e,0,t,i],this.instructions.push(this.beginGeometryInstruction1_),this.beginGeometryInstruction2_=[Ai,e,0,t,i],this.hitDetectionInstructions.push(this.beginGeometryInstruction2_)}finish(){return{instructions:this.instructions,hitDetectionInstructions:this.hitDetectionInstructions,coordinates:this.coordinates}}reverseHitDetectionInstructions(){const t=this.hitDetectionInstructions;let i;t.reverse();const n=t.length;let r,s,o=-1;for(i=0;ithis.maxLineWidth&&(this.maxLineWidth=e.lineWidth,this.bufferedMaxExtent_=null)}else e.strokeStyle=void 0,e.lineCap=void 0,e.lineDash=null,e.lineDashOffset=void 0,e.lineJoin=void 0,e.lineWidth=void 0,e.miterLimit=void 0,e.strokeOffset=void 0;return e}setFillStrokeStyle(t,e){const i=this.state;this.fillStyleToState(t,i),this.strokeStyleToState(e,i)}createFill(t){const e=t.fillStyle,i=[Wi,e];return\"string\"!=typeof e&&i.push(t.fillPatternScale),i}applyStroke(t){this.instructions.push(this.createStroke(t))}createStroke(t){return[Gi,t.strokeStyle,t.lineWidth*this.pixelRatio,t.lineCap,t.lineJoin,t.miterLimit,t.lineDash?this.applyPixelRatio(t.lineDash):null,t.lineDashOffset*this.pixelRatio]}updateFillStyle(t,e){const i=t.fillStyle;(void 0!==i&&\"string\"!=typeof i||t.currentFillStyle!=i)&&(this.instructions.push(e.call(this,t)),t.currentFillStyle=i)}updateStrokeStyle(t,e){const i=t.strokeStyle,r=t.lineCap,s=t.lineDash,o=t.lineDashOffset,a=t.lineJoin,l=t.lineWidth,h=t.miterLimit,c=t.strokeOffset;(t.currentStrokeStyle!=i||t.currentLineCap!=r||s!=t.currentLineDash&&!n(t.currentLineDash,s)||t.currentLineDashOffset!=o||t.currentLineJoin!=a||t.currentLineWidth!=l||t.currentMiterLimit!=h||t.currentStrokeOffset!=c)&&(e.call(this,t),t.currentStrokeStyle=i,t.currentLineCap=r,t.currentLineDash=s,t.currentLineDashOffset=o,t.currentLineJoin=a,t.currentLineWidth=l,t.currentMiterLimit=h,t.currentStrokeOffset=c)}endGeometry(t){this.beginGeometryInstruction1_[2]=this.instructions.length,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_[2]=this.hitDetectionInstructions.length,this.beginGeometryInstruction2_=null;const e=[Ti,t];this.instructions.push(e),this.hitDetectionInstructions.push(e)}getBufferedMaxExtent(){if(!this.bufferedMaxExtent_&&(this.bufferedMaxExtent_=this.maxExtent.slice(),this.maxLineWidth>0)){const t=this.resolution*(this.maxLineWidth+1)/2;!function(t,e,i){i?(i[0]=t[0]-e,i[1]=t[1]-e,i[2]=t[2]+e,i[3]=t[3]+e):(t[0],t[1],t[2],t[3])}(this.bufferedMaxExtent_,t,this.bufferedMaxExtent_)}return this.bufferedMaxExtent_}}const cn={left:0,center:.5,right:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1};class un extends hn{constructor(t,e,i,n){super(t,e,i,n),this.labels_=null,this.text_=\"\",this.textOffsetX_=0,this.textOffsetY_=0,this.textRotateWithView_=void 0,this.textKeepUpright_=void 0,this.textRotation_=0,this.textFillState_=null,this.fillStates={},this.fillStates[li]={fillStyle:li},this.textStrokeState_=null,this.strokeStates={},this.textState_={},this.textStates={},this.textKey_=\"\",this.fillKey_=\"\",this.strokeKey_=\"\",this.declutterMode_=void 0,this.declutterImageWithText_=void 0}finish(){const t=super.finish();return t.textStates=this.textStates,t.fillStates=this.fillStates,t.strokeStates=this.strokeStates,t}drawText(t,e,i){const n=this.textFillState_,r=this.textStrokeState_,s=this.textState_;if(\"\"===this.text_||!s||!n&&!r)return;const o=this.coordinates;let a=o.length;const l=t.getType();let h=null,c=t.getStride();if(\"line\"!==s.placement||\"LineString\"!=l&&\"MultiLineString\"!=l&&\"Polygon\"!=l&&\"MultiPolygon\"!=l){let n=s.overflow?null:[];switch(l){case\"Point\":case\"MultiPoint\":h=t.getFlatCoordinates();break;case\"LineString\":h=t.getFlatMidpoint();break;case\"Circle\":h=t.getCenter();break;case\"MultiLineString\":h=t.getFlatMidpoints(),c=2;break;case\"Polygon\":h=t.getFlatInteriorPoint(),s.overflow||n.push(h[2]/this.resolution),c=3;break;case\"MultiPolygon\":const e=t.getFlatInteriorPoints();h=[];for(let t=0,i=e.length;t{const n=o[2*(t+i)]===h[i*c]&&o[2*(t+i)+1]===h[i*c+1];return n||--t,n})}this.saveTextStates_();const u=s.backgroundFill?this.createFill(this.fillStyleToState(s.backgroundFill)):null,f=s.backgroundStroke?this.createStroke(this.strokeStyleToState(s.backgroundStroke)):null;this.beginGeometry(t,e,i);let d=s.padding;if(d!=pi&&(s.scale[0]<0||s.scale[1]<0)){let t=s.padding[0],e=s.padding[1],i=s.padding[2],n=s.padding[3];s.scale[0]<0&&(e=-e,n=-n),s.scale[1]<0&&(t=-t,i=-i),d=[t,e,i,n]}const g=this.pixelRatio;this.instructions.push([Fi,a,r,null,NaN,NaN,NaN,1,0,0,this.textRotateWithView_,this.textRotation_,[1,1],NaN,this.declutterMode_,this.declutterImageWithText_,d==pi?pi:d.map(function(t){return t*g}),u,f,this.text_,this.textKey_,this.strokeKey_,this.fillKey_,this.textOffsetX_,this.textOffsetY_,n]);const p=1/g,_=u?u.slice(0):null;_&&(_[1]=li),this.hitDetectionInstructions.push([Fi,a,r,null,NaN,NaN,NaN,1,0,0,this.textRotateWithView_,this.textRotation_,[p,p],NaN,this.declutterMode_,this.declutterImageWithText_,d,_,f,this.text_,this.textKey_,this.strokeKey_,this.fillKey_?li:this.fillKey_,this.textOffsetX_,this.textOffsetY_,n]),this.endGeometry(e)}else{const n=t.getExtent();if(!be(this.maxExtent,n))return;let r;if(h=t.getFlatCoordinates(),\"LineString\"==l)r=[h.length];else if(\"MultiLineString\"==l)r=t.getEnds();else if(\"Polygon\"==l)r=t.getEnds().slice(0,1);else if(\"MultiPolygon\"==l){const e=t.getEndss();r=[];for(let t=0,i=e.length;t0&&t.push(\"\\n\",\"\"),t.push(e,\"\"),t}function vn(t,e,i){return i%2==0&&(t+=e),t}class Sn{constructor(t,e,i,n,r){this.overlaps=i,this.pixelRatio=e,this.resolution=t,this.alignAndScaleFill_,this.instructions=n.instructions,this.coordinates=n.coordinates,this.coordinateCache_={},this.renderedTransform_=Fe(),this.hitDetectionInstructions=n.hitDetectionInstructions,this.pixelCoordinates_=null,this.viewRotation_=0,this.fillStates=n.fillStates||{},this.strokeStates=n.strokeStates||{},this.textStates=n.textStates||{},this.widths_={},this.labels_={},this.zIndexContext_=r?new ki:null}getZIndexContext(){return this.zIndexContext_}createLabel(t,e,i,n){const r=t+e+i+n;if(this.labels_[r])return this.labels_[r];const s=n?this.strokeStates[n]:null,o=i?this.fillStates[i]:null,a=this.textStates[e],l=this.pixelRatio,h=[a.scale[0]*l,a.scale[1]*l],c=a.justify?cn[a.justify]:wn(Array.isArray(t)?t[0]:t,a.textAlign||di),u=n&&s.lineWidth?s.lineWidth:0,f=Array.isArray(t)?t:String(t).split(\"\\n\").reduce(xn,[]),{width:d,height:g,widths:p,heights:_,lineWidths:m}=function(t,e){const i=[],n=[],r=[];let s=0,o=0,a=0,l=0;for(let h=0,c=e.length;h<=c;h+=2){const u=e[h];if(\"\\n\"===u||h===c){s=Math.max(s,o),r.push(o),o=0,a+=l,l=0;continue}const f=e[h+1]||t.font,d=Mi(f,u);i.push(d),o+=d;const g=Ci(f);n.push(g),l=Math.max(l,g)}return{width:s,height:a,widths:i,heights:n,lineWidths:r}}(a,f),y=d+u,w=[],x=(y+2)*h[0],v=(g+u)*h[1],S={width:x<0?Math.floor(x):Math.ceil(x),height:v<0?Math.floor(v):Math.ceil(v),contextInstructions:w};1==h[0]&&1==h[1]||w.push(\"scale\",h),n&&(w.push(\"strokeStyle\",s.strokeStyle),w.push(\"lineWidth\",u),w.push(\"lineCap\",s.lineCap),w.push(\"lineJoin\",s.lineJoin),w.push(\"miterLimit\",s.miterLimit),w.push(\"setLineDash\",[s.lineDash]),w.push(\"lineDashOffset\",s.lineDashOffset)),i&&w.push(\"fillStyle\",o.fillStyle),w.push(\"textBaseline\",\"middle\"),w.push(\"textAlign\",\"center\");const C=.5-c;let b=c*y+C*u;const M=[],I=[];let E,k=0,A=0,P=0,O=0;for(let t=0,e=f.length;tt?t-l:r,w=s+h>e?e-h:s,x=d[3]+y*u[0]+d[1],v=d[0]+w*u[1]+d[2],S=_-d[3],C=m-d[0];let b;return(g||0!==c)&&(dn[0]=S,_n[0]=S,dn[1]=C,gn[1]=C,gn[0]=S+x,pn[0]=gn[0],pn[1]=C+v,_n[1]=pn[1]),0!==c?(b=$e(Fe(),i,n,1,1,c,-i,-n),ze(b,dn),ze(b,gn),ze(b,pn),ze(b,_n),_e(Math.min(dn[0],gn[0],pn[0],_n[0]),Math.min(dn[1],gn[1],pn[1],_n[1]),Math.max(dn[0],gn[0],pn[0],_n[0]),Math.max(dn[1],gn[1],pn[1],_n[1]),fn)):_e(Math.min(S,S+x),Math.min(C,C+v),Math.max(S,S+x),Math.max(C,C+v),fn),f&&(_=Math.round(_),m=Math.round(m)),{drawImageX:_,drawImageY:m,drawImageW:y,drawImageH:w,originX:l,originY:h,declutterBox:{minX:fn[0],minY:fn[1],maxX:fn[2],maxY:fn[3],value:p},canvasTransform:b,scale:u}}replayImageOrLabel_(t,e,i,n,r,s,o){const a=!(!s&&!o),l=n.declutterBox,h=o?o[2]*n.scale[0]/2:0;return l.minX-h<=e[0]&&l.maxX+h>=0&&l.minY-h<=e[1]&&l.maxY+h>=0&&(a&&this.replayTextBackground_(t,dn,gn,pn,_n,s,o),Ei(t,n.canvasTransform,r,i,n.originX,n.originY,n.drawImageW,n.drawImageH,n.drawImageX,n.drawImageY,n.scale)),!0}fill_(t){const e=this.alignAndScaleFill_;if(e){const i=ze(this.renderedTransform_,[0,0]),n=512*this.pixelRatio;t.save(),t.translate(i[0]%n,i[1]%n),1!==e&&t.scale(e,e)}t.fill(),e&&t.restore()}setStrokeStyle_(t,e){t.strokeStyle=e[1],e[1]&&(t.lineWidth=e[2],t.lineCap=e[3],t.lineJoin=e[4],t.miterLimit=e[5],t.lineDashOffset=e[7],t.setLineDash(e[6]))}drawLabelWithPointPlacement_(t,e,i,n){const r=this.textStates[e],s=this.createLabel(t,e,n,i),o=this.strokeStates[i],a=this.pixelRatio,l=wn(Array.isArray(t)?t[0]:t,r.textAlign||di),h=cn[r.textBaseline||gi],c=o&&o.lineWidth?o.lineWidth:0;return{label:s,anchorX:l*(s.width/a-2*r.scale[0])+2*(.5-l)*c,anchorY:h*s.height/a+2*(.5-h)*c}}execute_(t,e,i,r,s,o,a,l){const h=this.zIndexContext_;let c;var u,f;this.pixelCoordinates_&&n(i,this.renderedTransform_)?c=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),c=Ae(this.coordinates,0,this.coordinates.length,2,i,this.pixelCoordinates_),u=this.renderedTransform_,f=i,u[0]=f[0],u[1]=f[1],u[2]=f[2],u[3]=f[3],u[4]=f[4],u[5]=f[5]);let d=0;const g=r.length;let p,_=0;const m=[];let y,w,x,v,S,C,b,M,I,E,k,A,P,O=0,R=0;const L=this.coordinateCache_,D=this.viewRotation_,F=Math.round(1e12*Math.atan2(-i[1],i[0]))/1e12,T={context:t,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:D},z=this.instructions!=r||this.overlaps?0:200;let $,W,G,N;for(;dz&&(this.fill_(t),O=0),R>z&&(t.stroke(),R=0),O||R||(t.beginPath(),S=NaN,C=NaN),++d;break;case Oi:_=i[1],x=i[2]??0;const n=c[_],r=c[_+1],u=c[_+2]-x-n,f=c[_+3]-x-r,g=Math.sqrt(u*u+f*f);t.moveTo(n+g,r),t.arc(n,r,g,0,2*Math.PI,!0),++d;break;case Ri:t.closePath(),++d;break;case Li:_=i[1],p=i[2];const X=i[3],Y=i[4],B=i[5];T.geometry=X,T.feature=$,d in L||(L[d]=[]);const U=L[d];B?B(c,_,p,2,U):(U[0]=c[_],U[1]=c[_+1],U.length=2),h&&(h.zIndex=i[6]),Y(U,T),++d;break;case Fi:_=i[1],p=i[2],I=i[3],y=i[4],w=i[5];let j=i[6];const V=i[7],q=i[8],J=i[9],K=i[10];let H=i[11];const Z=i[12];let Q=i[13];v=i[14]||\"declutter\";const tt=i[15];if(!I&&i.length>=20){E=i[19],k=i[20],A=i[21],P=i[22];const t=this.drawLabelWithPointPlacement_(E,k,A,P);I=t.label,i[3]=I;const e=i[23];y=(t.anchorX-e)*this.pixelRatio,i[4]=y;const n=i[24];w=(t.anchorY-n)*this.pixelRatio,i[5]=w,j=I.height,i[6]=j,Q=I.width,i[13]=Q}let et,it,nt,rt;i.length>25&&(et=i[25]),i.length>17?(it=i[16],nt=i[17],rt=i[18]):(it=pi,nt=null,rt=null),K&&F?H+=D:K||F||(H-=D);let st=0;for(;_{for(let e=0;e{for(let r=0;r{const n=t.args;let r=e.properties[i];for(let t=1,e=n.length;tt.variables[i];case qt:return e=>{const n=t.args;if(!(i in e.properties))return!1;let r=e.properties[i];for(let t=1,e=n.length;tt.featureId;case st:return t=>t.geometryType;case rt:{const e=t.args.map(t=>bn(t));return t=>\"\".concat(...e.map(e=>e(t).toString()))}case ct:return t=>t.resolution;case at:case lt:case Ft:case Wt:case ht:return function(t){const e=t.operator,i=t.args.length,n=new Array(i);for(let e=0;e{for(let e=0;e{for(let e=0;e{const e=n[0](t),i=n[1](t),r=n[2](t);return e>=i&&e<=r};case Wt:return t=>{const e=n[0](t);for(let r=1;r!n[0](t);default:throw new Error(`Unsupported logical operator ${e}`)}}(t);case dt:case gt:case mt:case yt:case pt:case _t:return function(t){const e=t.operator,i=bn(t.args[0]),n=bn(t.args[1]);switch(e){case dt:return t=>i(t)===n(t);case gt:return t=>i(t)!==n(t);case mt:return t=>i(t)i(t)<=n(t);case pt:return t=>i(t)>n(t);case _t:return t=>i(t)>=n(t);default:throw new Error(`Unsupported comparison operator ${e}`)}}(t);case wt:case xt:case vt:case St:case Ct:case bt:case Mt:case It:case Et:case kt:case At:case Pt:case Ot:case Rt:case Lt:return function(t){const e=t.operator,i=t.args.length,n=new Array(i);for(let e=0;e{let e=1;for(let r=0;rn[0](t)/n[1](t);case vt:return t=>{let e=0;for(let r=0;rn[0](t)-n[1](t);case Ct:return t=>{const e=n[0](t),i=n[1](t);if(er?r:e};case bt:return t=>n[0](t)%n[1](t);case Mt:return t=>Math.pow(n[0](t),n[1](t));case It:return t=>Math.abs(n[0](t));case Et:return t=>Math.floor(n[0](t));case kt:return t=>Math.ceil(n[0](t));case At:return t=>Math.round(n[0](t));case Pt:return t=>Math.sin(n[0](t));case Ot:return t=>Math.cos(n[0](t));case Rt:return 2===i?t=>Math.atan2(n[0](t),n[1](t)):t=>Math.atan(n[0](t));case Lt:return t=>Math.sqrt(n[0](t));default:throw new Error(`Unsupported numeric operator ${e}`)}}(t);case $t:return function(t){const e=t.args.length,i=new Array(e);for(let n=0;n{for(let n=0;n{const n=i[0](t);for(let r=1;r{const n=i[0](t),r=i[1](t);let s,o;for(let a=2;a=r)return 2===a?l:h?In(n,r,s,o,e,l):Mn(n,r,s,o,e,l);s=e,o=l}return o}}(t);case Vt:return function(t){const e=t.operator,i=t.args.length,n=new Array(i);for(let e=0;e{const i=n[0](e);return t.args[0].type===X?T(i):i.toString()};throw new Error(`Unsupported convert operator ${e}`)}(t);default:throw new Error(`Unsupported operator ${i}`)}}function Mn(t,e,i,n,r,s){const o=r-i;if(0===o)return n;const a=e-i;return n+(1===t?a/o:(Math.pow(t,a)-1)/(Math.pow(t,o)-1))*(s-n)}function In(t,e,i,n,r,s){if(0===r-i)return n;const o=L(n),a=L(s);let l=a[2]-o[2];l>180?l-=360:l<-180&&(l+=360);return function(t){const e=(t[0]+16)/116,i=t[1],n=t[2]*Math.PI/180,r=P(e),s=P(e+i/500*Math.cos(n)),o=P(e-i/200*Math.sin(n)),a=A(3.021973625*s-1.617392459*r-.404875592*o),l=A(-.943766287*s+1.916279586*r+.027607165*o),h=A(.069407491*s-.22898585*r+1.159737864*o);return[c(a+.5|0,0,255),c(l+.5|0,0,255),c(h+.5|0,0,255),t[3]]}([Mn(t,e,i,o[0],r,a[0]),Mn(t,e,i,o[1],r,a[1]),o[2]+Mn(t,e,i,0,r,l),Mn(t,e,i,n[3],r,s[3])])}class En{constructor(t){this.opacity_=t.opacity,this.rotateWithView_=t.rotateWithView,this.rotation_=t.rotation,this.scale_=t.scale,this.scaleArray_=z(t.scale),this.displacement_=t.displacement,this.declutterMode_=t.declutterMode}clone(){const t=this.getScale();return new En({opacity:this.getOpacity(),scale:Array.isArray(t)?t.slice():t,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()})}getOpacity(){return this.opacity_}getRotateWithView(){return this.rotateWithView_}getRotation(){return this.rotation_}getScale(){return this.scale_}getScaleArray(){return this.scaleArray_}getDisplacement(){return this.displacement_}getDeclutterMode(){return this.declutterMode_}getAnchor(){return Qe()}getImage(t){return Qe()}getHitDetectionImage(){return Qe()}getPixelRatio(t){return 1}getImageState(){return Qe()}getImageSize(){return Qe()}getOrigin(){return Qe()}getSize(){return Qe()}setDisplacement(t){this.displacement_=t}setOpacity(t){this.opacity_=t}setRotateWithView(t){this.rotateWithView_=t}setRotation(t){this.rotation_=t}setScale(t){this.scale_=t,this.scaleArray_=z(t)}listenImageChange(t){Qe()}load(){Qe()}unlistenImageChange(t){Qe()}ready(){return Promise.resolve()}}class kn extends En{constructor(t){super({opacity:1,rotateWithView:void 0!==t.rotateWithView&&t.rotateWithView,rotation:void 0!==t.rotation?t.rotation:0,scale:void 0!==t.scale?t.scale:1,displacement:void 0!==t.displacement?t.displacement:[0,0],declutterMode:t.declutterMode}),this.hitDetectionCanvas_=null,this.fill_=void 0!==t.fill?t.fill:null,this.origin_=[0,0],this.points_=t.points,this.radius=t.radius,this.radius2_=t.radius2,this.angle_=void 0!==t.angle?t.angle:0,this.stroke_=void 0!==t.stroke?t.stroke:null,this.size_,this.renderOptions_,this.imageState_=this.fill_&&this.fill_.loading()?Yi:Bi,this.imageState_===Yi&&this.ready().then(()=>this.imageState_=Bi),this.render()}clone(){const t=this.getScale(),e=new kn({fill:this.getFill()?this.getFill().clone():void 0,points:this.getPoints(),radius:this.getRadius(),radius2:this.getRadius2(),angle:this.getAngle(),stroke:this.getStroke()?this.getStroke().clone():void 0,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(t)?t.slice():t,displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()});return e.setOpacity(this.getOpacity()),e}getAnchor(){const t=this.size_,e=this.getDisplacement(),i=this.getScaleArray();return[t[0]/2-e[0]/i[0],t[1]/2+e[1]/i[1]]}getAngle(){return this.angle_}getFill(){return this.fill_}setFill(t){this.fill_=t,this.render()}getHitDetectionImage(){return this.hitDetectionCanvas_||(this.hitDetectionCanvas_=this.createHitDetectionCanvas_(this.renderOptions_)),this.hitDetectionCanvas_}getImage(t){const e=this.fill_?.getKey(),i=`${t},${this.angle_},${this.radius},${this.radius2_},${this.points_},${e}`+Object.values(this.renderOptions_).join(\",\");let n=qi.get(i,null)?.getImage(1);if(!n){const e=this.renderOptions_,r=Math.ceil(e.size*t),s=a(r,r);this.draw_(e,s,t),n=s.canvas;const o=new Ki(n,void 0,null,Bi,null);qi.set(i,null,o),createImageBitmap(n).then(t=>{o.setImage(t)})}return n}getPixelRatio(t){return t}getImageSize(){return this.size_}getImageState(){return this.imageState_}getOrigin(){return this.origin_}getPoints(){return this.points_}getRadius(){return this.radius}setRadius(t){this.radius!==t&&(this.radius=t,this.render())}getRadius2(){return this.radius2_}setRadius2(t){this.radius2_!==t&&(this.radius2_=t,this.render())}getSize(){return this.size_}getStroke(){return this.stroke_}setStroke(t){this.stroke_=t,this.render()}listenImageChange(t){}load(){}unlistenImageChange(t){}calculateLineJoinSize_(t,e,i){if(0===e||this.points_===1/0||\"bevel\"!==t&&\"miter\"!==t)return e;let n=this.radius,r=void 0===this.radius2_?n:this.radius2_;if(n{this.patternImage_=null}),e.getImageState()===Xi&&e.load(),e.getImageState()===Yi&&(this.patternImage_=e)}this.color_=t}getKey(){const t=this.getColor();return t?t instanceof CanvasPattern||t instanceof CanvasGradient?ei(t):\"object\"==typeof t&&\"src\"in t?t.src+\":\"+t.offset:F(t).toString():\"\"}loading(){return!!this.patternImage_}ready(){return this.patternImage_?this.patternImage_.ready():Promise.resolve()}}function On(t,e,i,n){return void 0!==i&&void 0!==n?[i/t,n/e]:void 0!==i?i/t:void 0!==n?n/e:1}class Rn extends En{constructor(t){const e=void 0!==(t=t||{}).opacity?t.opacity:1,i=void 0!==t.rotation?t.rotation:0,n=void 0!==t.scale?t.scale:1,r=void 0!==t.rotateWithView&&t.rotateWithView;super({opacity:e,rotation:i,scale:n,displacement:void 0!==t.displacement?t.displacement:[0,0],rotateWithView:r,declutterMode:t.declutterMode}),this.anchor_=void 0!==t.anchor?t.anchor:[.5,.5],this.normalizedAnchor_=null,this.anchorOrigin_=void 0!==t.anchorOrigin?t.anchorOrigin:\"top-left\",this.anchorXUnits_=void 0!==t.anchorXUnits?t.anchorXUnits:\"fraction\",this.anchorYUnits_=void 0!==t.anchorYUnits?t.anchorYUnits:\"fraction\",this.crossOrigin_=void 0!==t.crossOrigin?t.crossOrigin:null,this.referrerPolicy_=t.referrerPolicy;const s=void 0!==t.img?t.img:null;let o,a=t.src;if(Le(!(void 0!==a&&s),\"`image` and `src` cannot be provided at the same time\"),void 0!==a&&0!==a.length||!s||(a=s.src||ei(s)),Le(void 0!==a&&a.length>0,\"A defined and non-empty `src` or `image` must be provided\"),Le(!((void 0!==t.width||void 0!==t.height)&&void 0!==t.scale),\"`width` or `height` cannot be provided together with `scale`\"),void 0!==t.src?o=Xi:void 0!==s&&(o=\"complete\"in s?s.complete?s.src?Bi:Xi:Yi:Bi),this.color_=void 0!==t.color?F(t.color):null,this.iconImage_=Hi(s,a,{crossOrigin:this.crossOrigin_,referrerPolicy:this.referrerPolicy_},o,this.color_),this.offset_=void 0!==t.offset?t.offset:[0,0],this.offsetOrigin_=void 0!==t.offsetOrigin?t.offsetOrigin:\"top-left\",this.origin_=null,this.size_=void 0!==t.size?t.size:null,this.initialOptions_,void 0!==t.width||void 0!==t.height){let e,i;if(t.size)[e,i]=t.size;else{const n=this.getImage(1);if(n.width&&n.height)e=n.width,i=n.height;else if(n instanceof HTMLImageElement){this.initialOptions_=t;const e=()=>{if(this.unlistenImageChange(e),!this.initialOptions_)return;const i=this.iconImage_.getSize();this.setScale(On(i[0],i[1],t.width,t.height))};return void this.listenImageChange(e)}}void 0!==e&&this.setScale(On(e,i,t.width,t.height))}}clone(){let t,e,i;return this.initialOptions_?(e=this.initialOptions_.width,i=this.initialOptions_.height):(t=this.getScale(),t=Array.isArray(t)?t.slice():t),new Rn({anchor:this.anchor_.slice(),anchorOrigin:this.anchorOrigin_,anchorXUnits:this.anchorXUnits_,anchorYUnits:this.anchorYUnits_,color:this.color_&&this.color_.slice?this.color_.slice():this.color_||void 0,crossOrigin:this.crossOrigin_,referrerPolicy:this.referrerPolicy_,offset:this.offset_.slice(),offsetOrigin:this.offsetOrigin_,opacity:this.getOpacity(),rotateWithView:this.getRotateWithView(),rotation:this.getRotation(),scale:t,width:e,height:i,size:null!==this.size_?this.size_.slice():void 0,src:this.getSrc(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()})}getAnchor(){let t=this.normalizedAnchor_;if(!t){t=this.anchor_;const e=this.getSize();if(\"fraction\"==this.anchorXUnits_||\"fraction\"==this.anchorYUnits_){if(!e)return null;t=this.anchor_.slice(),\"fraction\"==this.anchorXUnits_&&(t[0]*=e[0]),\"fraction\"==this.anchorYUnits_&&(t[1]*=e[1])}if(\"top-left\"!=this.anchorOrigin_){if(!e)return null;t===this.anchor_&&(t=this.anchor_.slice()),\"top-right\"!=this.anchorOrigin_&&\"bottom-right\"!=this.anchorOrigin_||(t[0]=-t[0]+e[0]),\"bottom-left\"!=this.anchorOrigin_&&\"bottom-right\"!=this.anchorOrigin_||(t[1]=-t[1]+e[1])}this.normalizedAnchor_=t}const e=this.getDisplacement(),i=this.getScaleArray();return[t[0]-e[0]/i[0],t[1]+e[1]/i[1]]}setAnchor(t){this.anchor_=t,this.normalizedAnchor_=null}getColor(){return this.color_}setColor(t){const e=t?F(t):null;if(this.color_===e||this.color_&&e&&this.color_.length===e.length&&this.color_.every((t,i)=>t===e[i]))return;this.color_=e;const i=this.getSrc(),n=void 0!==i?null:this.getHitDetectionImage(),r=void 0!==i?Xi:this.iconImage_.getImageState();this.iconImage_=Hi(n,i,{crossOrigin:this.crossOrigin_,referrerPolicy:this.referrerPolicy_},r,this.color_)}getImage(t){return this.iconImage_.getImage(t)}getPixelRatio(t){return this.iconImage_.getPixelRatio(t)}getImageSize(){return this.iconImage_.getSize()}getImageState(){return this.iconImage_.getImageState()}getHitDetectionImage(){return this.iconImage_.getHitDetectionImage()}getOrigin(){if(this.origin_)return this.origin_;let t=this.offset_;if(\"top-left\"!=this.offsetOrigin_){const e=this.getSize(),i=this.iconImage_.getSize();if(!e||!i)return null;t=t.slice(),\"top-right\"!=this.offsetOrigin_&&\"bottom-right\"!=this.offsetOrigin_||(t[0]=i[0]-e[0]-t[0]),\"bottom-left\"!=this.offsetOrigin_&&\"bottom-right\"!=this.offsetOrigin_||(t[1]=i[1]-e[1]-t[1])}return this.origin_=t,this.origin_}getSrc(){return this.iconImage_.getSrc()}setSrc(t){this.iconImage_=Hi(null,t,{crossOrigin:this.crossOrigin_,referrerPolicy:this.referrerPolicy_},Xi,this.color_)}getSize(){return this.size_?this.size_:this.iconImage_.getSize()}getWidth(){const t=this.getScaleArray();return this.size_?this.size_[0]*t[0]:this.iconImage_.getImageState()==Bi?this.iconImage_.getSize()[0]*t[0]:void 0}getHeight(){const t=this.getScaleArray();return this.size_?this.size_[1]*t[1]:this.iconImage_.getImageState()==Bi?this.iconImage_.getSize()[1]*t[1]:void 0}setScale(t){delete this.initialOptions_,super.setScale(t)}listenImageChange(t){this.iconImage_.addEventListener(je,t)}load(){this.iconImage_.load()}unlistenImageChange(t){this.iconImage_.removeEventListener(je,t)}ready(){return this.iconImage_.ready()}}class Ln{constructor(t){t=t||{},this.color_=void 0!==t.color?t.color:null,this.lineCap_=t.lineCap,this.lineDash_=void 0!==t.lineDash?t.lineDash:null,this.lineDashOffset_=t.lineDashOffset,this.lineJoin_=t.lineJoin,this.miterLimit_=t.miterLimit,this.offset_=t.offset,this.width_=t.width}clone(){const t=this.getColor();return new Ln({color:Array.isArray(t)?t.slice():t||void 0,lineCap:this.getLineCap(),lineDash:this.getLineDash()?this.getLineDash().slice():void 0,lineDashOffset:this.getLineDashOffset(),lineJoin:this.getLineJoin(),miterLimit:this.getMiterLimit(),offset:this.getOffset(),width:this.getWidth()})}getColor(){return this.color_}getLineCap(){return this.lineCap_}getLineDash(){return this.lineDash_}getLineDashOffset(){return this.lineDashOffset_}getLineJoin(){return this.lineJoin_}getMiterLimit(){return this.miterLimit_}getOffset(){return this.offset_}getWidth(){return this.width_}setColor(t){this.color_=t}setLineCap(t){this.lineCap_=t}setLineDash(t){this.lineDash_=t}setLineDashOffset(t){this.lineDashOffset_=t}setLineJoin(t){this.lineJoin_=t}setMiterLimit(t){this.miterLimit_=t}setOffset(t){this.offset_=t}setWidth(t){this.width_=t}}class Dn{constructor(t){t=t||{},this.geometry_=null,this.geometryFunction_=Fn,void 0!==t.geometry&&this.setGeometry(t.geometry),this.fill_=void 0!==t.fill?t.fill:null,this.image_=void 0!==t.image?t.image:null,this.renderer_=void 0!==t.renderer?t.renderer:null,this.hitDetectionRenderer_=void 0!==t.hitDetectionRenderer?t.hitDetectionRenderer:null,this.stroke_=void 0!==t.stroke?t.stroke:null,this.text_=void 0!==t.text?t.text:null,this.zIndex_=t.zIndex}clone(){let t=this.getGeometry();return t&&\"object\"==typeof t&&(t=t.clone()),new Dn({geometry:t??void 0,fill:this.getFill()?this.getFill().clone():void 0,image:this.getImage()?this.getImage().clone():void 0,renderer:this.getRenderer()??void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,text:this.getText()?this.getText().clone():void 0,zIndex:this.getZIndex()})}getRenderer(){return this.renderer_}setRenderer(t){this.renderer_=t}setHitDetectionRenderer(t){this.hitDetectionRenderer_=t}getHitDetectionRenderer(){return this.hitDetectionRenderer_}getGeometry(){return this.geometry_}getGeometryFunction(){return this.geometryFunction_}getFill(){return this.fill_}setFill(t){this.fill_=t}getImage(){return this.image_}setImage(t){this.image_=t}getStroke(){return this.stroke_}setStroke(t){this.stroke_=t}getText(){return this.text_}setText(t){this.text_=t}getZIndex(){return this.zIndex_}setGeometry(t){\"function\"==typeof t?this.geometryFunction_=t:\"string\"==typeof t?this.geometryFunction_=function(e){return e.get(t)}:t?void 0!==t&&(this.geometryFunction_=function(){return t}):this.geometryFunction_=Fn,this.geometry_=t}setZIndex(t){this.zIndex_=t}}function Fn(t){return t.getGeometry()}class Tn{constructor(t){t=t||{},this.font_=t.font,this.rotation_=t.rotation,this.rotateWithView_=t.rotateWithView,this.keepUpright_=t.keepUpright,this.scale_=t.scale,this.scaleArray_=z(void 0!==t.scale?t.scale:1),this.text_=t.text,this.textAlign_=t.textAlign,this.justify_=t.justify,this.repeat_=t.repeat,this.textBaseline_=t.textBaseline,this.fill_=void 0!==t.fill?t.fill:new Pn({color:\"#333\"}),this.maxAngle_=void 0!==t.maxAngle?t.maxAngle:Math.PI/4,this.placement_=void 0!==t.placement?t.placement:\"point\",this.overflow_=!!t.overflow,this.stroke_=void 0!==t.stroke?t.stroke:null,this.offsetX_=void 0!==t.offsetX?t.offsetX:0,this.offsetY_=void 0!==t.offsetY?t.offsetY:0,this.backgroundFill_=t.backgroundFill?t.backgroundFill:null,this.backgroundStroke_=t.backgroundStroke?t.backgroundStroke:null,this.padding_=void 0===t.padding?null:t.padding,this.declutterMode_=t.declutterMode}clone(){const t=this.getScale();return new Tn({font:this.getFont(),placement:this.getPlacement(),repeat:this.getRepeat(),maxAngle:this.getMaxAngle(),overflow:this.getOverflow(),rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),keepUpright:this.getKeepUpright(),scale:Array.isArray(t)?t.slice():t,text:this.getText(),textAlign:this.getTextAlign(),justify:this.getJustify(),textBaseline:this.getTextBaseline(),fill:this.getFill()instanceof Pn?this.getFill().clone():this.getFill(),stroke:this.getStroke()?this.getStroke().clone():void 0,offsetX:this.getOffsetX(),offsetY:this.getOffsetY(),backgroundFill:this.getBackgroundFill()?this.getBackgroundFill().clone():void 0,backgroundStroke:this.getBackgroundStroke()?this.getBackgroundStroke().clone():void 0,padding:this.getPadding()||void 0,declutterMode:this.getDeclutterMode()})}getOverflow(){return this.overflow_}getFont(){return this.font_}getMaxAngle(){return this.maxAngle_}getPlacement(){return this.placement_}getRepeat(){return this.repeat_}getOffsetX(){return this.offsetX_}getOffsetY(){return this.offsetY_}getFill(){return this.fill_}getRotateWithView(){return this.rotateWithView_}getKeepUpright(){return this.keepUpright_}getRotation(){return this.rotation_}getScale(){return this.scale_}getScaleArray(){return this.scaleArray_}getStroke(){return this.stroke_}getText(){return this.text_}getTextAlign(){return this.textAlign_}getJustify(){return this.justify_}getTextBaseline(){return this.textBaseline_}getBackgroundFill(){return this.backgroundFill_}getBackgroundStroke(){return this.backgroundStroke_}getPadding(){return this.padding_}getDeclutterMode(){return this.declutterMode_}setOverflow(t){this.overflow_=t}setFont(t){this.font_=t}setMaxAngle(t){this.maxAngle_=t}setOffsetX(t){this.offsetX_=t}setOffsetY(t){this.offsetY_=t}setPlacement(t){this.placement_=t}setRepeat(t){this.repeat_=t}setRotateWithView(t){this.rotateWithView_=t}setKeepUpright(t){this.keepUpright_=t}setFill(t){this.fill_=t}setRotation(t){this.rotation_=t}setScale(t){this.scale_=t,this.scaleArray_=z(void 0!==t?t:1)}setStroke(t){this.stroke_=t}setText(t){this.text_=t}setTextAlign(t){this.textAlign_=t}setJustify(t){this.justify_=t}setTextBaseline(t){this.textBaseline_=t}setBackgroundFill(t){this.backgroundFill_=t}setBackgroundStroke(t){this.backgroundStroke_=t}setPadding(t){this.padding_=t}}function zn(t){return!0}function $n(t,e){const i=function(t,e){const i=t.length,n=new Array(i);for(let r=0;r0&&\"string\"==typeof g[0]?_=Vn(t,i+\"color\",e):p=sr(g,i+\"color\")}const m=function(t,e){const i=t[e];if(void 0===i)return;if(\"string\"!=typeof i)throw new Error(`Expected a string for ${e}`);return i}(t,i+\"cross-origin\"),y=function(t,e){const i=t[e];if(void 0===i)return;return ir(i,e)}(t,i+\"offset\"),w=Qn(t,i+\"offset-origin\"),x=Zn(t,i+\"width\"),v=Zn(t,i+\"height\"),S=function(t,e){const i=t[e];if(void 0===i)return;if(\"number\"==typeof i)return z(i);if(!Array.isArray(i))throw new Error(`Expected a number or size array for ${e}`);if(2!==i.length||\"number\"!=typeof i[0]||\"number\"!=typeof i[1])throw new Error(`Expected a number or size array for ${e}`);return i}(t,i+\"size\"),C=er(t,i+\"declutter-mode\"),b={src:r,anchorOrigin:u,anchorXUnits:f,anchorYUnits:d,crossOrigin:m,offset:y,offsetOrigin:w,height:v,width:x,size:S,declutterMode:C};let M=null;return function(t){if(M)_&&M.setColor(_(t));else{const e=_?_(t):p;M=new Rn(void 0!==e?Object.assign({},b,{color:e}):Object.assign({},b))}return a&&M.setOpacity(a(t)),l&&M.setDisplacement(l(t)),h&&M.setRotation(h(t)),c&&M.setRotateWithView(c(t)),o&&M.setScale(o(t)),s&&M.setAnchor(s(t)),M}}(t,e);if(\"shape-points\"in t)return function(t,e){const i=\"shape-\",n=i+\"points\",r=i+\"radius\",s=rr(t[n],n);if(!(r in t))throw new Error(`Expected a number for ${r}`);const o=Bn(t,r,e),a=\"number\"==typeof t[r]?t[r]:5,l=i+\"radius2\",h=Bn(t,l,e),c=\"number\"==typeof t[l]?t[l]:void 0,u=Nn(t,i,e),f=Xn(t,i,e),d=Hn(t,i+\"scale\",e),g=Jn(t,i+\"displacement\",e),p=Bn(t,i+\"rotation\",e),_=jn(t,i+\"rotate-with-view\",e),m=Zn(t,i+\"angle\"),y=er(t,i+\"declutter-mode\"),w=new kn({points:s,radius:a,radius2:c,angle:m,declutterMode:y});return function(t){return o&&w.setRadius(o(t)),h&&w.setRadius2(h(t)),u&&w.setFill(u(t)),f&&w.setStroke(f(t)),g&&w.setDisplacement(g(t)),p&&w.setRotation(p(t)),_&&w.setRotateWithView(_(t)),d&&w.setScale(d(t)),w}}(t,e);if(\"circle-radius\"in t)return function(t,e){const i=\"circle-\",n=Nn(t,i,e),r=Xn(t,i,e),s=Bn(t,i+\"radius\",e),o=Hn(t,i+\"scale\",e),a=Jn(t,i+\"displacement\",e),l=Bn(t,i+\"rotation\",e),h=jn(t,i+\"rotate-with-view\",e),c=er(t,i+\"declutter-mode\"),u=new An({radius:5,declutterMode:c});return function(t){return s&&u.setRadius(s(t)),n&&u.setFill(n(t)),r&&u.setStroke(r(t)),a&&u.setDisplacement(a(t)),l&&u.setRotation(l(t)),h&&u.setRotateWithView(h(t)),o&&u.setScale(o(t)),u}}(t,e);return null}(t,e),o=Bn(t,\"z-index\",e);if(!(i||n||r||s||Xe(t)))throw new Error(\"No fill, stroke, point, or text symbolizer properties in style: \"+JSON.stringify(t));const a=new Dn;return function(t){let e=!0;if(i){const n=i(t);n&&(e=!1),a.setFill(n)}if(n){const i=n(t);i&&(e=!1),a.setStroke(i)}if(r){const i=r(t);i&&(e=!1),a.setText(i)}if(s){const i=s(t);i&&(e=!1),a.setImage(i)}return o&&a.setZIndex(o(t)),e?null:a}}function Nn(t,e,i){let n;if(e+\"fill-pattern-src\"in t)n=function(t,e,i){const n=Un(t,e+\"pattern-src\",i),r=Kn(t,e+\"pattern-offset\",i),s=Kn(t,e+\"pattern-size\",i),o=Vn(t,e+\"color\",i);return function(t){return{src:n(t),offset:r&&r(t),size:s&&s(t),color:o&&o(t)}}}(t,e+\"fill-\",i);else{if(\"none\"===t[e+\"fill-color\"])return t=>null;n=Vn(t,e+\"fill-color\",i)}if(!n)return null;const r=new Pn;return function(t){const e=n(t);return e===m?null:(r.setColor(e),r)}}function Xn(t,e,i){const n=Bn(t,e+\"stroke-width\",i),r=Vn(t,e+\"stroke-color\",i);if(!n&&!r)return null;const s=Un(t,e+\"stroke-line-cap\",i),o=Un(t,e+\"stroke-line-join\",i),a=qn(t,e+\"stroke-line-dash\",i),l=Bn(t,e+\"stroke-line-dash-offset\",i),h=Bn(t,e+\"stroke-miter-limit\",i),c=Bn(t,e+\"stroke-offset\",i),u=new Ln;return function(t){if(r){const e=r(t);if(e===m)return null;u.setColor(e)}if(n&&u.setWidth(n(t)),s){const e=s(t);if(\"butt\"!==e&&\"round\"!==e&&\"square\"!==e)throw new Error(\"Expected butt, round, or square line cap\");u.setLineCap(e)}if(o){const e=o(t);if(\"bevel\"!==e&&\"round\"!==e&&\"miter\"!==e)throw new Error(\"Expected bevel, round, or miter line join\");u.setLineJoin(e)}return a&&u.setLineDash(a(t)),l&&u.setLineDashOffset(l(t)),h&&u.setMiterLimit(h(t)),c&&u.setOffset(c(t)),u}}function Yn(t,e){if(!(e in t))return;const i=t[e];return void 0===i?void 0:i}function Bn(t,e,i){const n=Yn(t,e);if(void 0===n)return;const r=Cn(n,G,i);return function(t){return rr(r(t),e)}}function Un(t,e,i){const n=Yn(t,e);if(void 0===n)return null;const r=Cn(n,N,i);return function(t){return nr(r(t),e)}}function jn(t,e,i){const n=Yn(t,e);if(void 0===n)return null;const r=Cn(n,W,i);return function(t){const i=r(t);if(\"boolean\"!=typeof i)throw new Error(`Expected a boolean for ${e}`);return i}}function Vn(t,e,i){const n=Yn(t,e);if(void 0===n)return null;const r=Cn(n,X,i);return function(t){return sr(r(t),e)}}function qn(t,e,i){const n=Yn(t,e);if(void 0===n)return null;if(Array.isArray(n)&&(0===n.length||\"string\"!=typeof n[0])){const t=n.map((t,n)=>{if(\"number\"==typeof t)return()=>t;const r=Cn(t,G,i);return function(t){return rr(r(t),`${e}[${n}]`)}});return function(e){const i=new Array(t.length);for(let n=0;n4)throw new Error(`Expected a color with 3 or 4 values for ${e}`);return i}function or(t,e){const i=ir(t,e);if(2!==i.length)throw new Error(`Expected an array of two numbers for ${e}`);return i}const ar=\"BUILD_INSTRUCTIONS\",lr=\"DISPOSE_INSTRUCTIONS\",hr=\"RENDER\",cr={radians:6370997/(2*Math.PI),degrees:2*Math.PI*6370997/360,ft:.3048,m:1,\"us-ft\":1200/3937};class ur{constructor(t){this.code_=t.code,this.units_=t.units,this.extent_=void 0!==t.extent?t.extent:null,this.worldExtent_=void 0!==t.worldExtent?t.worldExtent:null,this.axisOrientation_=void 0!==t.axisOrientation?t.axisOrientation:\"enu\",this.global_=void 0!==t.global&&t.global,this.canWrapX_=!(!this.global_||!this.extent_),this.getPointResolutionFunc_=t.getPointResolution,this.defaultTileGrid_=null,this.metersPerUnit_=t.metersPerUnit}canWrapX(){return this.canWrapX_}getCode(){return this.code_}getExtent(){return this.extent_}getUnits(){return this.units_}getMetersPerUnit(){return this.metersPerUnit_||cr[this.units_]}getWorldExtent(){return this.worldExtent_}getAxisOrientation(){return this.axisOrientation_}isGlobal(){return this.global_}setGlobal(t){this.global_=t,this.canWrapX_=!(!t||!this.extent_)}getDefaultTileGrid(){return this.defaultTileGrid_}setDefaultTileGrid(t){this.defaultTileGrid_=t}setExtent(t){this.extent_=t,this.canWrapX_=!(!this.global_||!t)}setWorldExtent(t){this.worldExtent_=t}setGetPointResolution(t){this.getPointResolutionFunc_=t}getPointResolutionFunc(){return this.getPointResolutionFunc_}}const fr=6378137,dr=Math.PI*fr,gr=[-dr,-dr,dr,dr],pr=[-180,-85,180,85],_r=fr*Math.log(Math.tan(Math.PI/2));class mr extends ur{constructor(t){super({code:t,units:\"m\",extent:gr,global:!0,worldExtent:pr,getPointResolution:function(t,e){return t/Math.cosh(e[1]/fr)}})}}const yr=[new mr(\"EPSG:3857\"),new mr(\"EPSG:102100\"),new mr(\"EPSG:102113\"),new mr(\"EPSG:900913\"),new mr(\"http://www.opengis.net/def/crs/EPSG/0/3857\"),new mr(\"http://www.opengis.net/gml/srs/epsg.xml#3857\")];function wr(t,e,i,n){const r=t.length;i=i>1?i:2,n=n??i,void 0===e&&(e=i>2?t.slice():new Array(r));for(let i=0;i_r?n=_r:n<-_r&&(n=-_r),e[i+1]=n}return e}function xr(t,e,i,n){const r=t.length;i=i>1?i:2,n=n??i,void 0===e&&(e=i>2?t.slice():new Array(r));for(let i=0;i84&&(e=84);const n=g(e),r=Math.sin(n),s=Math.cos(n),o=r/s,a=o*o,l=a*a,h=g(t),c=g(Kr(i.number)),u=Vr/Math.sqrt(1-Pr*r**2),f=Lr*s**2,d=s*_(h-c,-Math.PI,Math.PI),p=d*d,m=p*d,y=m*d,w=y*d,x=w*d,v=Vr*(Gr*n-.002514607064228144*Math.sin(2*n)+Nr*Math.sin(4*n)-Xr*Math.sin(6*n)),S=Ar*u*(d+m/6*(1-a+f)+w/120*(5-18*a+l+72*f-58*Lr))+5e5;let C=Ar*(v+u*o*(p/2+y/24*(5-a+9*f+4*f**2)+x/720*(61-58*a+l+600*f-330*Lr)));return i.north||(C+=1e7),[S,C]}function Kr(t){return 6*(t-1)-180+3}const Hr=[/^EPSG:(\\d+)$/,/^urn:ogc:def:crs:EPSG::(\\d+)$/,/^http:\\/\\/www\\.opengis\\.net\\/def\\/crs\\/EPSG\\/0\\/(\\d+)$/];function Zr(t){let e=0;for(const i of Hr){const n=t.match(i);if(n){e=parseInt(n[1]);break}}if(!e)return null;let i=0,n=!1;return e>32700&&e<32761?i=e-32700:e>32600&&e<32661&&(n=!0,i=e-32600),i?{number:i,north:n}:null}function Qr(t,e){return function(i,n,r,s){const o=i.length;r=r>1?r:2,s=s??r,n||(n=r>2?i.slice():new Array(o));for(let r=0;r{if(!i)return this.getSimplifiedGeometry(e);const n=this.clone();return n.applyTransform(i),n.getSimplifiedGeometry(e)})}simplifyTransformed(t,e){return this.simplifyTransformedInternal(this.getRevision(),t,e)}clone(){return Qe()}closestPointXY(t,e,i,n){return Qe()}containsXY(t,e){return 0===this.closestPointXY(t,e,fs,Number.MIN_VALUE)}getClosestPoint(t,e){return e=e||[NaN,NaN],this.closestPointXY(t[0],t[1],e,1/0),e}intersectsCoordinate(t){return this.containsXY(t[0],t[1])}computeExtent(t){return Qe()}getExtent(t){if(this.extentRevision_!=this.getRevision()){const t=this.computeExtent(this.extent_);(isNaN(t[0])||isNaN(t[1]))&&me(t),this.extentRevision_=this.getRevision()}return function(t,e){return e?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e):t}(this.extent_,t)}rotate(t,e){Qe()}scale(t,e,i){Qe()}simplify(t){return this.getSimplifiedGeometry(t*t)}getSimplifiedGeometry(t){return Qe()}getType(){return Qe()}applyTransform(t){Qe()}intersectsExtent(t){return Qe()}translate(t,e){Qe()}transform(t,e){const i=rs(t),n=\"tile-pixels\"==i.getUnits()?function(t,n,r){const s=i.getExtent(),o=i.getWorldExtent(),a=Ce(o)/Ce(s);$e(us,o[0],o[3],a,-a,0,0,0);const l=Ae(t,0,t.length,r,us,n),h=as(i,e);return h?h(l,l,r):l}:as(i,e);return this.applyTransform(n),this}}class gs extends ds{constructor(){super(),this.layout=\"XY\",this.stride=2,this.flatCoordinates}computeExtent(t){return we(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t)}getCoordinates(){return Qe()}getFirstCoordinate(){return this.flatCoordinates.slice(0,this.stride)}getFlatCoordinates(){return this.flatCoordinates}getLastCoordinate(){return this.flatCoordinates.slice(this.flatCoordinates.length-this.stride)}getLayout(){return this.layout}getSimplifiedGeometry(t){if(this.simplifiedGeometryRevision!==this.getRevision()&&(this.simplifiedGeometryMaxMinSquaredTolerance=0,this.simplifiedGeometryRevision=this.getRevision()),t<0||0!==this.simplifiedGeometryMaxMinSquaredTolerance&&t<=this.simplifiedGeometryMaxMinSquaredTolerance)return this;const e=this.getSimplifiedGeometryInternal(t);return e.getFlatCoordinates().length1)u=i;else{if(f>0){for(let r=0;rr&&(r=a),s=i,o=n}return r}function ys(t,e,i,n,r,s,o,a,l,h,c){if(e==i)return h;let u,d;if(0===r){if(d=f(o,a,t[e],t[e+1]),d>1),s=+n(e[r],i),s<0?o=r+1:(a=r,l=!s);return l?o:~o}(u,f);d<0?(h=(f-u[-d-2])/(u[-d-1]-u[-d-2]),l=i+(-d-2)*r):l=i+d*r}a=a>1?a:2,o=o||new Array(a);for(let t=0;ts&&(i-a)*(s-l)-(r-a)*(n-l)>0&&o++:n<=s&&(i-a)*(s-l)-(r-a)*(n-l)<0&&o--,a=i,l=n}return 0!==o}function Cs(t,e,i,n,r,s){if(0===i.length)return!1;if(!Ss(t,e,i[0],n,r,s))return!1;for(let e=1,o=i.length;e=r[0]&&s[2]<=r[2]||s[1]>=r[1]&&s[3]<=r[3]||bs(t,e,i,n,function(t,e){return function(t,e,i){let n=!1;const r=pe(t,e),s=pe(t,i);if(r===ae||s===ae)n=!0;else{const o=t[0],a=t[1],l=t[2],h=t[3],c=e[0],u=e[1],f=i[0],d=i[1],g=(d-u)/(f-c);let p,_;s&le&&!(r&le)&&(p=f-(d-h)/g,n=p>=o&&p<=l),n||!(s&he)||r&he||(_=d-(f-l)*g,n=_>=a&&_<=h),n||!(s&ce)||r&ce||(p=f-(d-a)/g,n=p>=o&&p<=l),n||!(s&ue)||r&ue||(_=d-(f-o)*g,n=_>=a&&_<=h)}return n}(r,t,e)}))}function Is(t,e,i,n,r){if(!function(t,e,i,n,r){return!!(Ms(t,e,i,n,r)||Ss(t,e,i,n,r[0],r[1])||Ss(t,e,i,n,r[0],r[3])||Ss(t,e,i,n,r[2],r[1])||Ss(t,e,i,n,r[2],r[3]))}(t,e,i[0],n,r))return!1;if(1===i.length)return!0;for(let e=1,s=i.length;e0;){const i=h.pop(),s=h.pop();let o=0;const a=t[s],f=t[s+1],d=t[i],g=t[i+1];for(let e=s+n;eo&&(c=e,o=i)}o>r&&(l[(c-e)/n]=1,s+n0&&g>f)&&(d<0&&p0&&p>d)?(a=i,l=u):(s[o++]=a,s[o++]=l,h=a,c=l,a=i,l=u)}return s[o++]=a,s[o++]=l,o}function Ps(t,e,i,n,r,s,o,a){for(let l=0,h=i.length;l>1;ry&&(c=(u+f)/2,Cs(e,i,n,r,c,p)&&(m=c,y=t)),u=f}return isNaN(m)&&(m=s[o]),a?(a.push(m,p,y),a):[m,p,y]}function Ts(t,e,i,n){for(;e0}function $s(t,e,i,n,r){r=void 0!==r&&r;for(let s=0,o=i.length;s{if(t===this.squaredTolerance_)return this.simplifiedGeometry_;this.simplifiedGeometry_=this.clone(),e&&this.simplifiedGeometry_.applyTransform(e);const i=this.simplifiedGeometry_.getFlatCoordinates();let n;switch(this.type_){case\"LineString\":i.length=Es(i,0,this.simplifiedGeometry_.flatCoordinates_.length,this.simplifiedGeometry_.stride_,t,i,0),n=[i.length];break;case\"MultiLineString\":n=[],i.length=function(t,e,i,n,r,s,o,a){for(let l=0,h=i.length;le+(t[i].size||1),0)}Ns.prototype.getFlatCoordinates=Ns.prototype.getOrientedFlatCoordinates;const Ys={},Bs=new Ns(\"Point\",[0,0],[],2,Ys,\"dummy\"),Us=new TextDecoder;function js(t,e,i,n,r,s){const o=`prop_${t}`,a=i.findIndex(t=>t===o),l=i.slice(0,a).reduce((t,e)=>t+n[e].size,0),h=n[o].size;if(e===N){const t=r[l+1],e=r[l+2],i=s.slice(t,t+e);return Us.decode(i)}if(e===X){const t=(c=Array.from(r.slice(l,l+2)),[Math.min(Math.floor(c[0]/256)/255,1),Math.min(c[0]%256/255,1),Math.min(Math.floor(c[1]/256)/255,1),Math.min(c[1]%256/255,1)]);return t[0]*=255,t[1]*=255,t[2]*=255,t}var c;return h>1?Array.from(r.slice(l,l+h)):r[l]}function Vs(t,e,i,n,r){let s=t(i,1);if(s){s=Array.isArray(s)?s:[s];for(let t=0,o=s.length;t{const e=t.data;switch(e.type){case hr:{const t=(i=e.frameState,{...i,viewState:{...i.viewState,projection:rs(i.viewState.projection)}}),n=t.viewState,r=e.batchesToRender;Js&&cancelAnimationFrame(Js),Js=requestAnimationFrame(()=>{Js=0,t.size[0]!==Ks.width||t.size[1]!==Ks.height?(Ks.width=t.size[0],Ks.height=t.size[1]):Hs.clearRect(0,0,Ks.width,Ks.height);for(const i of r.values()){if(!Zs.has(i)){const t={type:hr,imageData:null,frameState:e.frameState,id:e.id};return void qs.postMessage(t)}const r=Zs.get(i);if(!r)continue;const s=to(n.center,n.resolution,n.rotation,Ks.width,Ks.height,0);Te(s,r.inverseTransform),r.executor.execute(Hs,t.size,s,t.viewState.rotation,!1)}const i=Ks.transferToImageBitmap(),s={type:hr,imageData:i,frameState:e.frameState,id:e.id};qs.postMessage(s,[i])});break}case ar:{const{polygonRenderInstructions:t,lineStringRenderInstructions:i,pointRenderInstructions:n,style:r,customAttributesSizes:s,renderInstructionsTransform:o,id:a,resolution:l}=e,h=1,c=l*o[0],u=Date.now().toString(),f=new Uint8Array(e.labelsArray),d=new un(1,[-1/0,-1/0,1/0,1/0],c,h),g=Object.keys(s).reduce((t,e)=>({...t,[e]:{size:s[e]}}),{}),p=tt();!function(t){function e(t){for(const e in t)e.startsWith(\"text-\")||\"z-index\"===e||delete t[e]}if(Array.isArray(t)){for(let i=0,n=t.length;i "u" ? "data:application/javascript;base64," + Buffer.from(e, "binary").toString("base64") : URL.createObjectURL(new Blob([e], { type: "application/javascript" }))); } //#endregion //#region node_modules/ol/worker/webgl.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Bp() { -======= -function um() { ->>>>>>> Stashed changes -======= -function um() { ->>>>>>> Stashed changes let e = "const t=new Set;let e=!1;function n(e,n,i=2){const f=n&&n.length,u=f?n[0]*i:e.length;t.size&&t.clear();let s=r(e,0,u,i,!0);const v=[];if(!s||s.next===s.prev)return v;let b=0,A=0,m=0;if(f&&(s=function(e,n,x,i){const f=[];for(let o=0,x=n.length;o80*i){b=e[0],A=e[1];let t=b,n=A;for(let r=i;rt&&(t=o),x>n&&(n=x)}m=Math.max(t-b,n-A),m=0!==m?32767/m:0}return x(s,v,b,A,m),v}function r(t,e,n,r,o){let x=null;if(o===function(t,e,n,r){let o=0;for(let x=e,i=n-r;x0)for(let o=e;o=e;o-=r)x=G(o/r|0,t[o],t[o+1],x);return x&&N(x,x.next)&&(k(x),x=x.next),x}function o(n,r=n){const o=r===n;let x,i=n;do{x=!1,i===i.next||0!==t.size&&t.has(i)||!N(i,i.next)&&0!==S(i.prev,i,i.next)?(o||i!==r)&&(i=i.next,x=!o):((o||i===r)&&(r=i.prev),e=!0,k(i),i=i.prev,x=!0)}while(x||i!==r);return r}function x(t,n,r,x,c){c&&function(t,e,n,r){let o=t,x=0;do{o.z=I(o.x,o.y,e,n,r),w[x++]=o,o=o.next}while(o!==t);!function(t){if(t<=32){for(let e=1;e=0&&w[r].z>n;)w[r+1]=w[r],r--;w[r+1]=t}return}F.length=c&&h.x<=a&&h.y>=l&&h.y<=y&&(o!==h.x||f!==h.y)&&U(o,f,x,u,i,s,h.x,h.y)&&S(h.prev,h,h.next)>=0)return!1;h=h.next}return!0}function f(t,e,n,r){const o=t.prev,x=t,i=t.next,f=o.x,u=x.x,s=i.x,c=o.y,l=x.y,a=i.y,y=Math.min(f,u,s),h=Math.min(c,l,a),p=Math.max(f,u,s),v=Math.max(c,l,a),b=I(y,h,e,n,r),M=I(p,v,e,n,r);let A=t.prevZ;for(;A&&A.z>=b;){if(A.x>=y&&A.x<=p&&A.y>=h&&A.y<=v&&A!==i&&(f!==A.x||c!==A.y)&&U(f,c,u,l,s,a,A.x,A.y)&&S(A.prev,A,A.next)>=0)return!1;A=A.prevZ}let m=t.nextZ;for(;m&&m.z<=M;){if(m.x>=y&&m.x<=p&&m.y>=h&&m.y<=v&&m!==i&&(f!==m.x||c!==m.y)&&U(f,c,u,l,s,a,m.x,m.y)&&S(m.prev,m,m.next)>=0)return!1;m=m.nextZ}return!0}function u(t,e){let n=t,r=!1;do{const o=n.prev,x=n.next.next;R(o,n,n.next,x,!1)&&_(o,x)&&_(x,o)&&(e.push(o.i,n.i,x.i),k(n),k(n.next),n=t=x,r=!0),n=n.next}while(n!==t);return r?o(n):n}function s(t,e,n,r,i){let f=t;do{let t=f.next.next;for(;t!==f.prev;){if(f.i!==t.i&&P(f,t)){let u=O(f,t);return f=o(f,f.next),u=o(u,u.next),x(f,e,n,r,i),void x(u,e,n,r,i)}t=t.next}f=f.next}while(f!==t)}let c=!1;function l(t,e){return t.x-e.x||t.y-e.y||(t.next.y-t.y)/(t.next.x-t.x)-(e.next.y-e.y)/(e.next.x-e.x)}function a(t,e){const n=function(t,e){let n=e;const r=t.x,o=t.y;let x,i=-1/0;if(N(t,n))return n;for(let e=0,f=0;eh[f+3]||h[f]>r||h[f+2]<=i)continue;const u=A(e);n=m(e);do{if(n.prev.next===n){if(N(t,n.next))return n.next;if(o<=n.y&&o>=n.next.y&&n.next.y!==n.y){const t=n.x+(o-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(t<=r&&t>i&&(i=t,x=n.xr||h[a+3]c)continue;const y=A(e);n=m(e);do{if(n.prev.next===n&&r>=n.x&&n.x>=f&&r!==n.x&&U(or)&&(ex.x||n.x===x.x&&g(x,n)))&&(x=n,l=e)}n=n.next}while(n!==y)}return x}(t,e);if(!n)return e;const r=O(n,t);return M(n,r.next.next),o(r,r.next),o(n,n.next)}const y=16;let h=new Float64Array(0),p=0;const v=[],b=[];function M(t,e){let n=t;do{const t=p++;v[t]=n;let r=1/0,o=1/0,x=-1/0,i=-1/0,f=0;do{const e=n.next;n.z=t,n.xx&&(x=n.x),n.yi&&(i=n.y),e.xx&&(x=e.x),e.yi&&(i=e.y),n=e}while(++f>>x&255]++;let i=0;for(let t=0;t<256;t++){const e=z[t];z[t]=i,i+=e}for(let i=0;i>>x&255]++;r[f]=e[i],o[f]=t}}function I(t,e,n,r,o){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-n)*o|0)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-r)*o|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function B(t){let e=t,n=t;do{(e.x=(t-i)*(x-f)&&(t-i)*(r-f)>=(n-i)*(e-f)&&(n-i)*(x-f)>=(o-i)*(r-f)}function P(t,e){const n=N(t,e)&&S(t.prev,t,t.next)>0&&S(e.prev,e,e.next)>0;return t.next.i!==e.i&&(n||_(t,e)&&_(e,t)&&(0!==S(t.prev,t,e.prev)||0!==S(t,e.prev,e)))&&!function(t,e){const n=Math.min(t.x,e.x),r=Math.max(t.x,e.x),o=Math.min(t.y,e.y),x=Math.max(t.y,e.y);let i=t;do{const f=i.next;if(i.x>r&&f.x>r||i.xx&&f.y>x||i.yx!=t.y>x&&o<(t.x-n.x)*(x-n.y)/(t.y-n.y)+n.x&&(r=!r),n=t}while(n!==t);return r}(t,e))}function S(t,e,n){return(e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y)}function N(t,e){return t.x===e.x&&t.y===e.y}function R(t,e,n,r,o=!0){const x=S(t,e,n),i=S(t,e,r),f=S(n,r,t),u=S(n,r,e);return(x>0&&i<0||x<0&&i>0)&&(f>0&&u<0||f<0&&u>0)||!!o&&(!(0!==x||!T(t,n,e))||(!(0!==i||!T(t,r,e))||(!(0!==f||!T(n,t,r))||!(0!==u||!T(n,e,r)))))}function T(t,e,n){return e.x<=Math.max(t.x,n.x)&&e.x>=Math.min(t.x,n.x)&&e.y<=Math.max(t.y,n.y)&&e.y>=Math.min(t.y,n.y)}function _(t,e){return S(t.prev,t,t.next)<0?S(t,e,t.next)>=0&&S(t,t.prev,e)>=0:S(t,e,t.prev)<0||S(t,t.next,e)<0}function O(t,e){const n=j(t.i,t.x,t.y),r=j(e.i,e.x,e.y),o=t.next,x=e.prev;return t.next=e,e.prev=t,n.next=o,o.prev=n,r.next=n,n.prev=r,x.next=r,r.prev=x,r}function G(t,e,n,r){const o=j(t,e,n);return r?(o.next=r.next,o.prev=r,r.next.prev=o,r.next=o):(o.prev=o,o.next=o),o}function k(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),c&&function(t,e){const n=4*t.z;e.xh[n+2]&&(h[n+2]=e.x),e.y>h[n+3]&&(h[n+3]=e.y)}(t.prev,t.next)}function j(t,e,n){return{i:t,x:e,y:n,prev:null,next:null,z:0,prevZ:null,nextZ:null}}function q(t,e,n){const r=Math.sqrt((e[0]-t[0])*(e[0]-t[0])+(e[1]-t[1])*(e[1]-t[1])),o=[(e[0]-t[0])/r,(e[1]-t[1])/r],x=[-o[1],o[0]],i=Math.sqrt((n[0]-t[0])*(n[0]-t[0])+(n[1]-t[1])*(n[1]-t[1])),f=[(n[0]-t[0])/i,(n[1]-t[1])/i];let u=0===r||0===i?0:Math.acos((s=f[0]*o[0]+f[1]*o[1],c=-1,l=1,Math.min(Math.max(s,c),l)));var s,c,l;u=Math.max(u,1e-5);return f[0]*x[0]+f[1]*x[1]>0?u:2*Math.PI-u}const L=[1,0,0,1,0,0];function Y(t,e){const n=e[0],r=e[1];return e[0]=t[0]*n+t[2]*r+t[4],e[1]=t[1]*n+t[3]*r+t[5],e}function C(t,e){const n=(r=e)[0]*r[3]-r[1]*r[2];var r;!function(t,e){if(!t)throw new Error(e)}(0!==n,\"Transformation matrix cannot be inverted\");const o=e[0],x=e[1],i=e[2],f=e[3],u=e[4],s=e[5];return t[0]=f/n,t[1]=-x/n,t[2]=-i/n,t[3]=o/n,t[4]=(i*s-f*u)/n,t[5]=-(o*s-x*u)/n,t}new Array(6);const D=[],H={vertexAttributesPosition:0,instanceAttributesPosition:0,indicesPosition:0};function J(t,e,n,r,o){const x=t[e++],i=t[e++],f=D;f.length=r;for(let n=0;n{const e=t.data;switch(e.type){case W:{const t=2,n=2,r=e.customAttributesSize,o=n+r,x=new Float32Array(e.renderInstructions),i=x.length/o*(t+r),f=Uint32Array.from([0,1,3,1,2,3]),u=Float32Array.from([-1,-1,1,-1,1,1,-1,1]),s=new Float32Array(i);let c;for(let t=0;t0?y=x+(n-1)*r:c&&(y=i-r);let h=null;n "u" ? "data:application/javascript;base64," + Buffer.from(e, "binary").toString("base64") : URL.createObjectURL(new Blob([e], { type: "application/javascript" }))); } //#endregion //#region node_modules/ol/render/webgl/constants.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var Vp = { GENERATE_POLYGON_BUFFERS: "GENERATE_POLYGON_BUFFERS", GENERATE_POINT_BUFFERS: "GENERATE_POINT_BUFFERS", GENERATE_LINE_STRING_BUFFERS: "GENERATE_LINE_STRING_BUFFERS" }, Hp = { -======= -var dm = { - GENERATE_POLYGON_BUFFERS: "GENERATE_POLYGON_BUFFERS", - GENERATE_POINT_BUFFERS: "GENERATE_POINT_BUFFERS", - GENERATE_LINE_STRING_BUFFERS: "GENERATE_LINE_STRING_BUFFERS" -}, fm = { ->>>>>>> Stashed changes -======= -var dm = { - GENERATE_POLYGON_BUFFERS: "GENERATE_POLYGON_BUFFERS", - GENERATE_POINT_BUFFERS: "GENERATE_POINT_BUFFERS", - GENERATE_LINE_STRING_BUFFERS: "GENERATE_LINE_STRING_BUFFERS" -}, fm = { ->>>>>>> Stashed changes BUILD_INSTRUCTIONS: "BUILD_INSTRUCTIONS", DISPOSE_INSTRUCTIONS: "DISPOSE_INSTRUCTIONS", RENDER: "RENDER" }; //#endregion //#region node_modules/ol/render/webgl/encodeUtil.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Up(e, t) { -======= -function pm(e, t) { ->>>>>>> Stashed changes -======= -function pm(e, t) { ->>>>>>> Stashed changes t ||= []; let n = Math.floor(e / 256 / 256 / 256) / 255, r = Math.floor(e / 256 / 256) % 256 / 255, i = Math.floor(e / 256) % 256 / 255, a = e % 256 / 255; return t[0] = n * 256 * 255 + r * 255, t[1] = i * 256 * 255 + a * 255, t; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Wp(e) { -======= -function mm(e) { ->>>>>>> Stashed changes -======= -function mm(e) { ->>>>>>> Stashed changes let t = 0; return t += Math.round(e[0] * 256 * 256 * 256 * 255), t += Math.round(e[1] * 256 * 256 * 255), t += Math.round(e[2] * 256 * 255), t += Math.round(e[3] * 255), t; } //#endregion //#region node_modules/ol/render/webgl/renderinstructions.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Gp(e, t, n, r, i) { -======= -function hm(e, t, n, r, i) { ->>>>>>> Stashed changes -======= -function hm(e, t, n, r, i) { ->>>>>>> Stashed changes let a = 0; for (let o in n) { let s = n[o], c = s.callback.call(r, r.feature); if (typeof c == "string") { let [n, r] = t.push(c); -<<<<<<< Updated upstream -<<<<<<< Updated upstream e[i + a++] = rp(c), e[i + a++] = n, e[i + a++] = r; continue; } @@ -22609,109 +12867,35 @@ function Kp(e) { } function qp(e, t, n, r, i) { let a = (2 + Kp(r)) * e.geometriesCount; -======= - e[i + a++] = Dp(c), e[i + a++] = n, e[i + a++] = r; - continue; - } - let l = c?.[0] ?? c; - l === -9999999 && console.warn("The \"has\" operator might return false positives."), l === void 0 ? l = Fp : l === null && (l = 0), e[i + a++] = l, !(!s.size || s.size === 1) && (e[i + a++] = c?.[1] ?? -9999999, !(s.size < 3) && (e[i + a++] = c?.[2] ?? -9999999, !(s.size < 4) && (e[i + a++] = c?.[3] ?? -9999999))); - } - return a; -} -function gm(e) { - return Object.keys(e).reduce((t, n) => t + (e[n].size || 1), 0); -} -function _m(e, t, n, r, i) { - let a = (2 + gm(r)) * e.geometriesCount; ->>>>>>> Stashed changes -======= - e[i + a++] = Dp(c), e[i + a++] = n, e[i + a++] = r; - continue; - } - let l = c?.[0] ?? c; - l === -9999999 && console.warn("The \"has\" operator might return false positives."), l === void 0 ? l = Fp : l === null && (l = 0), e[i + a++] = l, !(!s.size || s.size === 1) && (e[i + a++] = c?.[1] ?? -9999999, !(s.size < 3) && (e[i + a++] = c?.[2] ?? -9999999, !(s.size < 4) && (e[i + a++] = c?.[3] ?? -9999999))); - } - return a; -} -function gm(e) { - return Object.keys(e).reduce((t, n) => t + (e[n].size || 1), 0); -} -function _m(e, t, n, r, i) { - let a = (2 + gm(r)) * e.geometriesCount; ->>>>>>> Stashed changes (!t || t.length !== a) && (t = new Float32Array(a)); let o = [], s = 0; for (let a in e.entries) { let c = e.entries[a]; -<<<<<<< Updated upstream -<<<<<<< Updated upstream for (let e = 0, a = c.flatCoordss.length; e < a; e++) o[0] = c.flatCoordss[e][0], o[1] = c.flatCoordss[e][1], B(i, o), t[s++] = o[0], t[s++] = o[1], s += Gp(t, n, r, c, s); } return t; } function Jp(e, t, n, r, i) { let a = 3 * e.verticesCount + (1 + Kp(r)) * e.geometriesCount; -======= - for (let e = 0, a = c.flatCoordss.length; e < a; e++) o[0] = c.flatCoordss[e][0], o[1] = c.flatCoordss[e][1], z(i, o), t[s++] = o[0], t[s++] = o[1], s += hm(t, n, r, c, s); - } - return t; -} -function vm(e, t, n, r, i) { - let a = 3 * e.verticesCount + (1 + gm(r)) * e.geometriesCount; ->>>>>>> Stashed changes -======= - for (let e = 0, a = c.flatCoordss.length; e < a; e++) o[0] = c.flatCoordss[e][0], o[1] = c.flatCoordss[e][1], z(i, o), t[s++] = o[0], t[s++] = o[1], s += hm(t, n, r, c, s); - } - return t; -} -function vm(e, t, n, r, i) { - let a = 3 * e.verticesCount + (1 + gm(r)) * e.geometriesCount; ->>>>>>> Stashed changes (!t || t.length !== a) && (t = new Float32Array(a)); let o = [], s = 0; for (let a in e.entries) { let c = e.entries[a]; for (let e = 0, a = c.flatCoordss.length; e < a; e++) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream o.length = c.flatCoordss[e].length, sa(c.flatCoordss[e], 0, o.length, 3, i, o, 3), s += Gp(t, n, r, c, s), t[s++] = o.length / 3; -======= - o.length = c.flatCoordss[e].length, si(c.flatCoordss[e], 0, o.length, 3, i, o, 3), s += hm(t, n, r, c, s), t[s++] = o.length / 3; ->>>>>>> Stashed changes -======= - o.length = c.flatCoordss[e].length, si(c.flatCoordss[e], 0, o.length, 3, i, o, 3), s += hm(t, n, r, c, s), t[s++] = o.length / 3; ->>>>>>> Stashed changes for (let e = 0, n = o.length; e < n; e += 3) t[s++] = o[e], t[s++] = o[e + 1], t[s++] = o[e + 2]; } } return t; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Yp(e, t, n, r, i) { let a = 2 * e.verticesCount + (1 + Kp(r)) * e.geometriesCount + e.ringsCount; -======= -function ym(e, t, n, r, i) { - let a = 2 * e.verticesCount + (1 + gm(r)) * e.geometriesCount + e.ringsCount; ->>>>>>> Stashed changes -======= -function ym(e, t, n, r, i) { - let a = 2 * e.verticesCount + (1 + gm(r)) * e.geometriesCount + e.ringsCount; ->>>>>>> Stashed changes (!t || t.length !== a) && (t = new Float32Array(a)); let o = [], s = 0; for (let a in e.entries) { let c = e.entries[a]; for (let e = 0, a = c.flatCoordss.length; e < a; e++) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream o.length = c.flatCoordss[e].length, sa(c.flatCoordss[e], 0, o.length, 2, i, o), s += Gp(t, n, r, c, s), t[s++] = c.ringsVerticesCounts[e].length; -======= - o.length = c.flatCoordss[e].length, si(c.flatCoordss[e], 0, o.length, 2, i, o), s += hm(t, n, r, c, s), t[s++] = c.ringsVerticesCounts[e].length; ->>>>>>> Stashed changes -======= - o.length = c.flatCoordss[e].length, si(c.flatCoordss[e], 0, o.length, 2, i, o), s += hm(t, n, r, c, s), t[s++] = c.ringsVerticesCounts[e].length; ->>>>>>> Stashed changes for (let n = 0, r = c.ringsVerticesCounts[e].length; n < r; n++) t[s++] = c.ringsVerticesCounts[e][n]; for (let e = 0, n = o.length; e < n; e += 2) t[s++] = o[e], t[s++] = o[e + 1]; } @@ -22720,15 +12904,7 @@ function ym(e, t, n, r, i) { } //#endregion //#region node_modules/ol/render/webgl/serialize.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Xp(e) { -======= -function bm(e) { ->>>>>>> Stashed changes -======= -function bm(e) { ->>>>>>> Stashed changes let t = e.viewState; return { viewState: { @@ -22756,8 +12932,6 @@ function bm(e) { } //#endregion //#region node_modules/ol/render/webgl/style.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Zp(e) { return (JSON.stringify(e).split("").reduce((e, t) => (e << 5) - e + t.charCodeAt(0), 0) >>> 0).toString(); } @@ -22777,48 +12951,6 @@ function Qp(e, t, n, r) { `${r}displacement` in e && t.setSymbolOffsetExpression(Q(n, e[`${r}displacement`], Vs)), `${r}rotation` in e && t.setSymbolRotationExpression(Q(n, e[`${r}rotation`], U)), `${r}rotate-with-view` in e && t.setSymbolRotateWithView(!!e[`${r}rotate-with-view`]); } function $p(e, t, n, r, i) { -======= -function xm(e) { - return (JSON.stringify(e).split("").reduce((e, t) => (e << 5) - e + t.charCodeAt(0), 0) >>> 0).toString(); -} -function Sm(e, t, n, r) { - if (`${r}radius` in e && r !== "icon-") { - let i = Z(n, e[`${r}radius`], V); - if (`${r}radius2` in e) { - let t = Z(n, e[`${r}radius2`], V); - i = `max(${i}, ${t})`; - } - `${r}stroke-width` in e && (i = `(${i} + ${Z(n, e[`${r}stroke-width`], V)} * 0.5)`), t.setSymbolSizeExpression(`vec2(${i} * 2. + 0.5)`); - } - if (`${r}scale` in e) { - let i = Z(n, e[`${r}scale`], ss); - t.setSymbolSizeExpression(`${t.getSymbolSizeExpression()} * ${i}`); - } - `${r}displacement` in e && t.setSymbolOffsetExpression(Z(n, e[`${r}displacement`], os)), `${r}rotation` in e && t.setSymbolRotationExpression(Z(n, e[`${r}rotation`], V)), `${r}rotate-with-view` in e && t.setSymbolRotateWithView(!!e[`${r}rotate-with-view`]); -} -function Cm(e, t, n, r, i) { ->>>>>>> Stashed changes -======= -function xm(e) { - return (JSON.stringify(e).split("").reduce((e, t) => (e << 5) - e + t.charCodeAt(0), 0) >>> 0).toString(); -} -function Sm(e, t, n, r) { - if (`${r}radius` in e && r !== "icon-") { - let i = Z(n, e[`${r}radius`], V); - if (`${r}radius2` in e) { - let t = Z(n, e[`${r}radius2`], V); - i = `max(${i}, ${t})`; - } - `${r}stroke-width` in e && (i = `(${i} + ${Z(n, e[`${r}stroke-width`], V)} * 0.5)`), t.setSymbolSizeExpression(`vec2(${i} * 2. + 0.5)`); - } - if (`${r}scale` in e) { - let i = Z(n, e[`${r}scale`], ss); - t.setSymbolSizeExpression(`${t.getSymbolSizeExpression()} * ${i}`); - } - `${r}displacement` in e && t.setSymbolOffsetExpression(Z(n, e[`${r}displacement`], os)), `${r}rotation` in e && t.setSymbolRotationExpression(Z(n, e[`${r}rotation`], V)), `${r}rotate-with-view` in e && t.setSymbolRotateWithView(!!e[`${r}rotate-with-view`]); -} -function Cm(e, t, n, r, i) { ->>>>>>> Stashed changes let a = "vec4(0.)"; if (t !== null && (a = t), n !== null && r !== null) { let t = `smoothstep(-${r} + 0.63, -${r} - 0.58, ${e})`; @@ -22827,32 +12959,14 @@ function Cm(e, t, n, r, i) { let o = `(1.0 - smoothstep(-0.63, 0.58, ${e}))`, s = `${a} * vec4(1.0, 1.0, 1.0, ${o})`; return i !== null && (s = `${s} * vec4(1.0, 1.0, 1.0, ${i})`), s; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function em(e, t, n, r, i) { -======= -function wm(e, t, n, r, i) { ->>>>>>> Stashed changes -======= -function wm(e, t, n, r, i) { ->>>>>>> Stashed changes let a = new Image(); a.crossOrigin = e[`${r}cross-origin`] === void 0 ? "anonymous" : e[`${r}cross-origin`], z(typeof e[`${r}src`] == "string", `WebGL layers do not support expressions for the ${r}src style property`), a.src = e[`${r}src`], n[`u_texture${i}_size`] = () => a.complete ? [a.width, a.height] : [0, 0], t.addUniform(`u_texture${i}_size`, "vec2"); let o = `u_texture${i}_size`; return n[`u_texture${i}`] = a, t.addUniform(`u_texture${i}`, "sampler2D"), o; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function tm(e, t, n, r, i) { let a = Q(n, e[`${t}offset`], Hs); -======= -function Tm(e, t, n, r, i) { - let a = Z(n, e[`${t}offset`], ss); ->>>>>>> Stashed changes -======= -function Tm(e, t, n, r, i) { - let a = Z(n, e[`${t}offset`], ss); ->>>>>>> Stashed changes if (`${t}offset-origin` in e) switch (e[`${t}offset-origin`]) { case "top-right": a = `vec2(${r}.x, 0.) + ${i} * vec2(-1., 0.) + ${a} * vec2(-1., 1.)`; @@ -22864,8 +12978,6 @@ function Tm(e, t, n, r, i) { } return a; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function nm(e, t, n, r) { r.functions.circleDistanceField = "float circleDistanceField(vec2 point, float radius) {\n return length(point) - radius;\n}", Qp(e, t, r, "circle-"); let i = null; @@ -22916,110 +13028,6 @@ function im(e, t, n, r) { if (Qp(e, t, r, "icon-"), "icon-anchor" in e) { let n = Q(r, e["icon-anchor"], Vs), i = "1.0"; "icon-scale" in e && (i = Q(r, e["icon-scale"], Hs)); -======= -function Em(e, t, n, r) { - r.functions.circleDistanceField = "float circleDistanceField(vec2 point, float radius) {\n return length(point) - radius;\n}", Sm(e, t, r, "circle-"); - let i = null; - "circle-opacity" in e && (i = Z(r, e["circle-opacity"], V)); - let a = "coordsPx"; - "circle-scale" in e && (a = `coordsPx / ${Z(r, e["circle-scale"], ss)}`); - let o = null; - "circle-fill-color" in e && (o = Z(r, e["circle-fill-color"], U)); - let s = null; - "circle-stroke-color" in e && (s = Z(r, e["circle-stroke-color"], U)); - let c = Z(r, e["circle-radius"], V), l = null; - "circle-stroke-width" in e && (l = Z(r, e["circle-stroke-width"], V), c = `(${c} + ${l} * 0.5)`); - let u = Cm(`circleDistanceField(${a}, ${c})`, o, s, l, i); - t.setSymbolColorExpression(u); -} -function Dm(e, t, n, r) { - r.functions.round = "float round(float v) {\n return sign(v) * floor(abs(v) + 0.5);\n}", r.functions.starDistanceField = "float starDistanceField(vec2 point, float numPoints, float radius, float radius2, float angle) {\n float startAngle = -PI * 0.5 + angle; // tip starts upwards and rotates clockwise with angle\n float c = cos(startAngle);\n float s = sin(startAngle);\n vec2 pointRotated = vec2(c * point.x - s * point.y, s * point.x + c * point.y);\n float alpha = TWO_PI / numPoints; // the angle of one sector\n float beta = atan(pointRotated.y, pointRotated.x);\n float gamma = round(beta / alpha) * alpha; // angle in sector\n c = cos(-gamma);\n s = sin(-gamma);\n vec2 inSector = vec2(c * pointRotated.x - s * pointRotated.y, abs(s * pointRotated.x + c * pointRotated.y));\n vec2 tipToPoint = inSector + vec2(-radius, 0.);\n vec2 edgeNormal = vec2(radius2 * sin(alpha * 0.5), -radius2 * cos(alpha * 0.5) + radius);\n return dot(normalize(edgeNormal), tipToPoint);\n}", r.functions.regularDistanceField = "float regularDistanceField(vec2 point, float numPoints, float radius, float angle) {\n float startAngle = -PI * 0.5 + angle; // tip starts upwards and rotates clockwise with angle\n float c = cos(startAngle);\n float s = sin(startAngle);\n vec2 pointRotated = vec2(c * point.x - s * point.y, s * point.x + c * point.y);\n float alpha = TWO_PI / numPoints; // the angle of one sector\n float radiusIn = radius * cos(PI / numPoints);\n float beta = atan(pointRotated.y, pointRotated.x);\n float gamma = round((beta - alpha * 0.5) / alpha) * alpha + alpha * 0.5; // angle in sector from mid\n c = cos(-gamma);\n s = sin(-gamma);\n vec2 inSector = vec2(c * pointRotated.x - s * pointRotated.y, abs(s * pointRotated.x + c * pointRotated.y));\n return inSector.x - radiusIn;\n}", Sm(e, t, r, "shape-"); - let i = null; - "shape-opacity" in e && (i = Z(r, e["shape-opacity"], V)); - let a = "coordsPx"; - "shape-scale" in e && (a = `coordsPx / ${Z(r, e["shape-scale"], ss)}`); - let o = null; - "shape-fill-color" in e && (o = Z(r, e["shape-fill-color"], U)); - let s = null; - "shape-stroke-color" in e && (s = Z(r, e["shape-stroke-color"], U)); - let c = null; - "shape-stroke-width" in e && (c = Z(r, e["shape-stroke-width"], V)); - let l = Z(r, e["shape-points"], V), u = "0."; - "shape-angle" in e && (u = Z(r, e["shape-angle"], V)); - let d, f = Z(r, e["shape-radius"], V); - if (c !== null && (f = `${f} + ${c} * 0.5`), "shape-radius2" in e) { - let t = Z(r, e["shape-radius2"], V); - c !== null && (t = `${t} + ${c} * 0.5`), d = `starDistanceField(${a}, ${l}, ${f}, ${t}, ${u})`; - } else d = `regularDistanceField(${a}, ${l}, ${f}, ${u})`; - let p = Cm(d, o, s, c, i); - t.setSymbolColorExpression(p); -} -function Om(e, t, n, r) { - let i = "vec4(1.0)"; - "icon-color" in e && (i = Z(r, e["icon-color"], U)), "icon-opacity" in e && (i = `${i} * vec4(1.0, 1.0, 1.0, ${Z(r, e["icon-opacity"], V)})`); - let a = xm(e["icon-src"]), o = wm(e, t, n, "icon-", a); - if (t.setSymbolColorExpression(`${i} * texture2D(u_texture${a}, v_texCoord)`).setSymbolSizeExpression(o), "icon-width" in e && "icon-height" in e && t.setSymbolSizeExpression(`vec2(${Z(r, e["icon-width"], V)}, ${Z(r, e["icon-height"], V)})`), "icon-offset" in e && "icon-size" in e) { - let n = Z(r, e["icon-size"], os), i = t.getSymbolSizeExpression(); - t.setSymbolSizeExpression(n); - let a = Tm(e, "icon-", r, "v_quadSizePx", n); - t.setTextureCoordinateExpression(`(vec4((${a}).xyxy) + vec4(0., 0., ${n})) / (${i}).xyxy`); - } - if (Sm(e, t, r, "icon-"), "icon-anchor" in e) { - let n = Z(r, e["icon-anchor"], os), i = "1.0"; - "icon-scale" in e && (i = Z(r, e["icon-scale"], ss)); ->>>>>>> Stashed changes -======= -function Em(e, t, n, r) { - r.functions.circleDistanceField = "float circleDistanceField(vec2 point, float radius) {\n return length(point) - radius;\n}", Sm(e, t, r, "circle-"); - let i = null; - "circle-opacity" in e && (i = Z(r, e["circle-opacity"], V)); - let a = "coordsPx"; - "circle-scale" in e && (a = `coordsPx / ${Z(r, e["circle-scale"], ss)}`); - let o = null; - "circle-fill-color" in e && (o = Z(r, e["circle-fill-color"], U)); - let s = null; - "circle-stroke-color" in e && (s = Z(r, e["circle-stroke-color"], U)); - let c = Z(r, e["circle-radius"], V), l = null; - "circle-stroke-width" in e && (l = Z(r, e["circle-stroke-width"], V), c = `(${c} + ${l} * 0.5)`); - let u = Cm(`circleDistanceField(${a}, ${c})`, o, s, l, i); - t.setSymbolColorExpression(u); -} -function Dm(e, t, n, r) { - r.functions.round = "float round(float v) {\n return sign(v) * floor(abs(v) + 0.5);\n}", r.functions.starDistanceField = "float starDistanceField(vec2 point, float numPoints, float radius, float radius2, float angle) {\n float startAngle = -PI * 0.5 + angle; // tip starts upwards and rotates clockwise with angle\n float c = cos(startAngle);\n float s = sin(startAngle);\n vec2 pointRotated = vec2(c * point.x - s * point.y, s * point.x + c * point.y);\n float alpha = TWO_PI / numPoints; // the angle of one sector\n float beta = atan(pointRotated.y, pointRotated.x);\n float gamma = round(beta / alpha) * alpha; // angle in sector\n c = cos(-gamma);\n s = sin(-gamma);\n vec2 inSector = vec2(c * pointRotated.x - s * pointRotated.y, abs(s * pointRotated.x + c * pointRotated.y));\n vec2 tipToPoint = inSector + vec2(-radius, 0.);\n vec2 edgeNormal = vec2(radius2 * sin(alpha * 0.5), -radius2 * cos(alpha * 0.5) + radius);\n return dot(normalize(edgeNormal), tipToPoint);\n}", r.functions.regularDistanceField = "float regularDistanceField(vec2 point, float numPoints, float radius, float angle) {\n float startAngle = -PI * 0.5 + angle; // tip starts upwards and rotates clockwise with angle\n float c = cos(startAngle);\n float s = sin(startAngle);\n vec2 pointRotated = vec2(c * point.x - s * point.y, s * point.x + c * point.y);\n float alpha = TWO_PI / numPoints; // the angle of one sector\n float radiusIn = radius * cos(PI / numPoints);\n float beta = atan(pointRotated.y, pointRotated.x);\n float gamma = round((beta - alpha * 0.5) / alpha) * alpha + alpha * 0.5; // angle in sector from mid\n c = cos(-gamma);\n s = sin(-gamma);\n vec2 inSector = vec2(c * pointRotated.x - s * pointRotated.y, abs(s * pointRotated.x + c * pointRotated.y));\n return inSector.x - radiusIn;\n}", Sm(e, t, r, "shape-"); - let i = null; - "shape-opacity" in e && (i = Z(r, e["shape-opacity"], V)); - let a = "coordsPx"; - "shape-scale" in e && (a = `coordsPx / ${Z(r, e["shape-scale"], ss)}`); - let o = null; - "shape-fill-color" in e && (o = Z(r, e["shape-fill-color"], U)); - let s = null; - "shape-stroke-color" in e && (s = Z(r, e["shape-stroke-color"], U)); - let c = null; - "shape-stroke-width" in e && (c = Z(r, e["shape-stroke-width"], V)); - let l = Z(r, e["shape-points"], V), u = "0."; - "shape-angle" in e && (u = Z(r, e["shape-angle"], V)); - let d, f = Z(r, e["shape-radius"], V); - if (c !== null && (f = `${f} + ${c} * 0.5`), "shape-radius2" in e) { - let t = Z(r, e["shape-radius2"], V); - c !== null && (t = `${t} + ${c} * 0.5`), d = `starDistanceField(${a}, ${l}, ${f}, ${t}, ${u})`; - } else d = `regularDistanceField(${a}, ${l}, ${f}, ${u})`; - let p = Cm(d, o, s, c, i); - t.setSymbolColorExpression(p); -} -function Om(e, t, n, r) { - let i = "vec4(1.0)"; - "icon-color" in e && (i = Z(r, e["icon-color"], U)), "icon-opacity" in e && (i = `${i} * vec4(1.0, 1.0, 1.0, ${Z(r, e["icon-opacity"], V)})`); - let a = xm(e["icon-src"]), o = wm(e, t, n, "icon-", a); - if (t.setSymbolColorExpression(`${i} * texture2D(u_texture${a}, v_texCoord)`).setSymbolSizeExpression(o), "icon-width" in e && "icon-height" in e && t.setSymbolSizeExpression(`vec2(${Z(r, e["icon-width"], V)}, ${Z(r, e["icon-height"], V)})`), "icon-offset" in e && "icon-size" in e) { - let n = Z(r, e["icon-size"], os), i = t.getSymbolSizeExpression(); - t.setSymbolSizeExpression(n); - let a = Tm(e, "icon-", r, "v_quadSizePx", n); - t.setTextureCoordinateExpression(`(vec4((${a}).xyxy) + vec4(0., 0., ${n})) / (${i}).xyxy`); - } - if (Sm(e, t, r, "icon-"), "icon-anchor" in e) { - let n = Z(r, e["icon-anchor"], os), i = "1.0"; - "icon-scale" in e && (i = Z(r, e["icon-scale"], ss)); ->>>>>>> Stashed changes let a; a = e["icon-anchor-x-units"] === "pixels" && e["icon-anchor-y-units"] === "pixels" ? `${n} * ${i}` : e["icon-anchor-x-units"] === "pixels" ? `${n} * vec2(vec2(${i}).x, v_quadSizePx.y)` : e["icon-anchor-y-units"] === "pixels" ? `${n} * vec2(v_quadSizePx.x, vec2(${i}).x)` : `${n} * v_quadSizePx`; let o = `v_quadSizePx * vec2(0.5, -0.5) + ${a} * vec2(-1., 1.)`; @@ -23035,8 +13043,6 @@ function Om(e, t, n, r) { t.setSymbolOffsetExpression(`${t.getSymbolOffsetExpression()} + ${o}`); } } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function am(e, t, n, r) { if ("stroke-color" in e && t.setStrokeColorExpression(Q(r, e["stroke-color"], G)), "stroke-pattern-src" in e) { let i = Zp(e["stroke-pattern-src"]), a = em(e, t, n, "stroke-pattern-", i), o = a, s = "vec2(0.)"; @@ -23049,78 +13055,22 @@ function am(e, t, n, r) { "stroke-color" in e && (d = t.getStrokeColorExpression()), t.setStrokeColorExpression(`${d} * sampleStrokePattern(${u}, ${a}, ${s}, ${o}, ${c}, ${l}, currentLengthPx, currentRadiusRatio, v_width)`), r.functions.computeStrokePatternLength = "float computeStrokePatternLength(vec2 sampleSize, float spacingPx, float lineWidth) {\n float patternLengthPx = sampleSize.x / sampleSize.y * lineWidth;\n return patternLengthPx + spacingPx;\n}", t.setStrokePatternLengthExpression(`computeStrokePatternLength(${o}, ${c}, v_width)`); } if ("stroke-width" in e && t.setStrokeWidthExpression(Q(r, e["stroke-width"], U)), "stroke-offset" in e && t.setStrokeOffsetExpression(Q(r, e["stroke-offset"], U)), "stroke-line-cap" in e && t.setStrokeCapExpression(Q(r, e["stroke-line-cap"], W)), "stroke-line-join" in e && t.setStrokeJoinExpression(Q(r, e["stroke-line-join"], W)), "stroke-miter-limit" in e && t.setStrokeMiterLimitExpression(Q(r, e["stroke-miter-limit"], U)), "stroke-line-dash" in e) { -======= -function km(e, t, n, r) { - if ("stroke-color" in e && t.setStrokeColorExpression(Z(r, e["stroke-color"], U)), "stroke-pattern-src" in e) { - let i = xm(e["stroke-pattern-src"]), a = wm(e, t, n, "stroke-pattern-", i), o = a, s = "vec2(0.)"; - "stroke-pattern-offset" in e && "stroke-pattern-size" in e && (o = Z(r, e["stroke-pattern-size"], os), s = Tm(e, "stroke-pattern-", r, a, o)); - let c = "0."; - "stroke-pattern-spacing" in e && (c = Z(r, e["stroke-pattern-spacing"], V)); - let l = "0."; - "stroke-pattern-start-offset" in e && (l = Z(r, e["stroke-pattern-start-offset"], V)), r.functions.sampleStrokePattern = "vec4 sampleStrokePattern(sampler2D texture, vec2 textureSize, vec2 textureOffset, vec2 sampleSize, float spacingPx, float startOffsetPx, float currentLengthPx, float currentRadiusRatio, float lineWidth) {\n float currentLengthScaled = (currentLengthPx - startOffsetPx) * sampleSize.y / lineWidth;\n float spacingScaled = spacingPx * sampleSize.y / lineWidth;\n float uCoordPx = mod(currentLengthScaled, (sampleSize.x + spacingScaled));\n float isInsideOfPattern = step(uCoordPx, sampleSize.x);\n float vCoordPx = (-currentRadiusRatio * 0.5 + 0.5) * sampleSize.y;\n // make sure that we're not sampling too close to the borders to avoid interpolation with outside pixels\n uCoordPx = clamp(uCoordPx, 0.5, sampleSize.x - 0.5);\n vCoordPx = clamp(vCoordPx, 0.5, sampleSize.y - 0.5);\n vec2 texCoord = (vec2(uCoordPx, vCoordPx) + textureOffset) / textureSize;\n return texture2D(texture, texCoord) * vec4(1.0, 1.0, 1.0, isInsideOfPattern);\n}"; - let u = `u_texture${i}`, d = "1."; - "stroke-color" in e && (d = t.getStrokeColorExpression()), t.setStrokeColorExpression(`${d} * sampleStrokePattern(${u}, ${a}, ${s}, ${o}, ${c}, ${l}, currentLengthPx, currentRadiusRatio, v_width)`), r.functions.computeStrokePatternLength = "float computeStrokePatternLength(vec2 sampleSize, float spacingPx, float lineWidth) {\n float patternLengthPx = sampleSize.x / sampleSize.y * lineWidth;\n return patternLengthPx + spacingPx;\n}", t.setStrokePatternLengthExpression(`computeStrokePatternLength(${o}, ${c}, v_width)`); - } - if ("stroke-width" in e && t.setStrokeWidthExpression(Z(r, e["stroke-width"], V)), "stroke-offset" in e && t.setStrokeOffsetExpression(Z(r, e["stroke-offset"], V)), "stroke-line-cap" in e && t.setStrokeCapExpression(Z(r, e["stroke-line-cap"], H)), "stroke-line-join" in e && t.setStrokeJoinExpression(Z(r, e["stroke-line-join"], H)), "stroke-miter-limit" in e && t.setStrokeMiterLimitExpression(Z(r, e["stroke-miter-limit"], V)), "stroke-line-dash" in e) { ->>>>>>> Stashed changes -======= -function km(e, t, n, r) { - if ("stroke-color" in e && t.setStrokeColorExpression(Z(r, e["stroke-color"], U)), "stroke-pattern-src" in e) { - let i = xm(e["stroke-pattern-src"]), a = wm(e, t, n, "stroke-pattern-", i), o = a, s = "vec2(0.)"; - "stroke-pattern-offset" in e && "stroke-pattern-size" in e && (o = Z(r, e["stroke-pattern-size"], os), s = Tm(e, "stroke-pattern-", r, a, o)); - let c = "0."; - "stroke-pattern-spacing" in e && (c = Z(r, e["stroke-pattern-spacing"], V)); - let l = "0."; - "stroke-pattern-start-offset" in e && (l = Z(r, e["stroke-pattern-start-offset"], V)), r.functions.sampleStrokePattern = "vec4 sampleStrokePattern(sampler2D texture, vec2 textureSize, vec2 textureOffset, vec2 sampleSize, float spacingPx, float startOffsetPx, float currentLengthPx, float currentRadiusRatio, float lineWidth) {\n float currentLengthScaled = (currentLengthPx - startOffsetPx) * sampleSize.y / lineWidth;\n float spacingScaled = spacingPx * sampleSize.y / lineWidth;\n float uCoordPx = mod(currentLengthScaled, (sampleSize.x + spacingScaled));\n float isInsideOfPattern = step(uCoordPx, sampleSize.x);\n float vCoordPx = (-currentRadiusRatio * 0.5 + 0.5) * sampleSize.y;\n // make sure that we're not sampling too close to the borders to avoid interpolation with outside pixels\n uCoordPx = clamp(uCoordPx, 0.5, sampleSize.x - 0.5);\n vCoordPx = clamp(vCoordPx, 0.5, sampleSize.y - 0.5);\n vec2 texCoord = (vec2(uCoordPx, vCoordPx) + textureOffset) / textureSize;\n return texture2D(texture, texCoord) * vec4(1.0, 1.0, 1.0, isInsideOfPattern);\n}"; - let u = `u_texture${i}`, d = "1."; - "stroke-color" in e && (d = t.getStrokeColorExpression()), t.setStrokeColorExpression(`${d} * sampleStrokePattern(${u}, ${a}, ${s}, ${o}, ${c}, ${l}, currentLengthPx, currentRadiusRatio, v_width)`), r.functions.computeStrokePatternLength = "float computeStrokePatternLength(vec2 sampleSize, float spacingPx, float lineWidth) {\n float patternLengthPx = sampleSize.x / sampleSize.y * lineWidth;\n return patternLengthPx + spacingPx;\n}", t.setStrokePatternLengthExpression(`computeStrokePatternLength(${o}, ${c}, v_width)`); - } - if ("stroke-width" in e && t.setStrokeWidthExpression(Z(r, e["stroke-width"], V)), "stroke-offset" in e && t.setStrokeOffsetExpression(Z(r, e["stroke-offset"], V)), "stroke-line-cap" in e && t.setStrokeCapExpression(Z(r, e["stroke-line-cap"], H)), "stroke-line-join" in e && t.setStrokeJoinExpression(Z(r, e["stroke-line-join"], H)), "stroke-miter-limit" in e && t.setStrokeMiterLimitExpression(Z(r, e["stroke-miter-limit"], V)), "stroke-line-dash" in e) { ->>>>>>> Stashed changes r.functions.getSingleDashDistance = `float getSingleDashDistance(float distance, float radius, float dashOffset, float dashLength, float dashLengthTotal, float capType, float lineWidth) { float localDistance = mod(distance, dashLengthTotal); float distanceSegment = abs(localDistance - dashOffset - dashLength * 0.5) - dashLength * 0.5; distanceSegment = min(distanceSegment, dashLengthTotal - localDistance); -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (capType == ${ip("square")}) { distanceSegment -= lineWidth * 0.5; } else if (capType == ${ip("round")}) { -======= - if (capType == ${Op("square")}) { - distanceSegment -= lineWidth * 0.5; - } else if (capType == ${Op("round")}) { ->>>>>>> Stashed changes -======= - if (capType == ${Op("square")}) { - distanceSegment -= lineWidth * 0.5; - } else if (capType == ${Op("round")}) { ->>>>>>> Stashed changes distanceSegment = min(distanceSegment, sqrt(distanceSegment * distanceSegment + radius * radius) - lineWidth * 0.5); } return distanceSegment; }`; -<<<<<<< Updated upstream -<<<<<<< Updated upstream let n = e["stroke-line-dash"].map((e) => Q(r, e, U)); n.length % 2 == 1 && (n = [...n, ...n]); let i = "0."; "stroke-line-dash-offset" in e && (i = Q(r, e["stroke-line-dash-offset"], U)); let a = `dashDistanceField_${Zp(e["stroke-line-dash"])}`, o = n.map((e, t) => `float dashLength${t}`).join(", "), s = n.map((e, t) => `dashLength${t}`).join(" + "), c = "0.", l = `getSingleDashDistance(distance, radius, ${c}, dashLength0, totalDashLength, capType, lineWidth)`; -======= - let n = e["stroke-line-dash"].map((e) => Z(r, e, V)); - n.length % 2 == 1 && (n = [...n, ...n]); - let i = "0."; - "stroke-line-dash-offset" in e && (i = Z(r, e["stroke-line-dash-offset"], V)); - let a = `dashDistanceField_${xm(e["stroke-line-dash"])}`, o = n.map((e, t) => `float dashLength${t}`).join(", "), s = n.map((e, t) => `dashLength${t}`).join(" + "), c = "0.", l = `getSingleDashDistance(distance, radius, ${c}, dashLength0, totalDashLength, capType, lineWidth)`; ->>>>>>> Stashed changes -======= - let n = e["stroke-line-dash"].map((e) => Z(r, e, V)); - n.length % 2 == 1 && (n = [...n, ...n]); - let i = "0."; - "stroke-line-dash-offset" in e && (i = Z(r, e["stroke-line-dash-offset"], V)); - let a = `dashDistanceField_${xm(e["stroke-line-dash"])}`, o = n.map((e, t) => `float dashLength${t}`).join(", "), s = n.map((e, t) => `dashLength${t}`).join(" + "), c = "0.", l = `getSingleDashDistance(distance, radius, ${c}, dashLength0, totalDashLength, capType, lineWidth)`; ->>>>>>> Stashed changes for (let e = 2; e < n.length; e += 2) c = `${c} + dashLength${e - 2} + dashLength${e - 1}`, l = `min(${l}, getSingleDashDistance(distance, radius, ${c}, dashLength${e}, totalDashLength, capType, lineWidth))`; r.functions[a] = `float ${a}(float distance, float radius, float capType, float lineWidth, ${o}) { float totalDashLength = ${s}; @@ -23132,8 +13082,6 @@ function km(e, t, n, r) { t.getStrokePatternLengthExpression() && (r.functions.combinePatternLengths = "float combinePatternLengths(float patternLength1, float patternLength2) {\n return patternLength1 * patternLength2;\n}", d = `combinePatternLengths(${t.getStrokePatternLengthExpression()}, ${d})`), t.setStrokePatternLengthExpression(d); } } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function om(e, t, n, r) { if ("fill-color" in e && t.setFillColorExpression(Q(r, e["fill-color"], G)), "fill-pattern-src" in e) { let i = Zp(e["fill-pattern-src"]), a = em(e, t, n, "fill-pattern-", i); @@ -23142,90 +13090,35 @@ function om(e, t, n, r) { if ("fill-pattern-offset" in e && "fill-pattern-size" in e) { let n = Q(r, e["fill-pattern-size"], Vs); t.setFillPatternSizeExpression(n), o = tm(e, "fill-pattern-", r, a, "v_patternSizePx"); -======= -function Am(e, t, n, r) { - if ("fill-color" in e && t.setFillColorExpression(Z(r, e["fill-color"], U)), "fill-pattern-src" in e) { - let i = xm(e["fill-pattern-src"]), a = wm(e, t, n, "fill-pattern-", i); - t.setFillPatternSizeExpression(a); - let o = "vec2(0.)"; - if ("fill-pattern-offset" in e && "fill-pattern-size" in e) { - let n = Z(r, e["fill-pattern-size"], os); - t.setFillPatternSizeExpression(n), o = Tm(e, "fill-pattern-", r, a, "v_patternSizePx"); ->>>>>>> Stashed changes -======= -function Am(e, t, n, r) { - if ("fill-color" in e && t.setFillColorExpression(Z(r, e["fill-color"], U)), "fill-pattern-src" in e) { - let i = xm(e["fill-pattern-src"]), a = wm(e, t, n, "fill-pattern-", i); - t.setFillPatternSizeExpression(a); - let o = "vec2(0.)"; - if ("fill-pattern-offset" in e && "fill-pattern-size" in e) { - let n = Z(r, e["fill-pattern-size"], os); - t.setFillPatternSizeExpression(n), o = Tm(e, "fill-pattern-", r, a, "v_patternSizePx"); ->>>>>>> Stashed changes } r.functions.sampleFillPattern = "vec4 sampleFillPattern(sampler2D texture, vec2 textureSize, vec2 textureOffset, vec2 sampleSize, vec2 patternOriginPx, vec2 pxPosition, float sampleScaleRatio) {\n vec2 pxRelativePos = pxPosition - patternOriginPx;\n\n // rotate the relative position from origin by the current view rotation\n pxRelativePos = vec2(pxRelativePos.x * cos(u_rotation) - pxRelativePos.y * sin(u_rotation), pxRelativePos.x * sin(u_rotation) + pxRelativePos.y * cos(u_rotation));\n // sample position is computed according to the sample offset & size\n vec2 samplePos = mod(pxRelativePos / sampleScaleRatio, sampleSize);\n // also make sure that we're not sampling too close to the borders to avoid interpolation with outside pixels\n samplePos = clamp(samplePos, vec2(0.5), sampleSize - vec2(0.5));\n samplePos.y = sampleSize.y - samplePos.y; // invert y axis so that images appear upright\n return texture2D(texture, (samplePos + textureOffset) / textureSize);\n}"; let s = `u_texture${i}`, c = "1."; "fill-color" in e && (c = t.getFillColorExpression()), t.setFillColorExpression(`${c} * sampleFillPattern(${s}, ${a}, ${o}, v_patternSizePx, v_patternOriginPx, pxPos, df_float(u_df_patternScaleRatio))`); } } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function sm(e, t, n, r) { -======= -function jm(e, t, n, r) { ->>>>>>> Stashed changes -======= -function jm(e, t, n, r) { ->>>>>>> Stashed changes function i(...e) { try { - Z(...e); + Q(...e); } catch {} } -<<<<<<< Updated upstream -<<<<<<< Updated upstream "text-value" in e && i(r, e["text-value"], W), "text-font" in e && i(r, e["text-font"], W), "text-max-angle" in e && i(r, e["text-max-angle"], U), "text-offset-x" in e && i(r, e["text-offset-x"], U), "text-offset-y" in e && i(r, e["text-offset-y"], U), "text-overflow" in e && i(r, e["text-overflow"], Bs), "text-placement" in e && i(r, e["text-placement"], W), "text-repeat" in e && i(r, e["text-repeat"], U), "text-scale" in e && i(r, e["text-scale"], Hs), "text-rotate-with-view" in e && i(r, e["text-rotate-with-view"], Bs), "text-rotation" in e && i(r, e["text-rotation"], U), "text-align" in e && i(r, e["text-align"], W), "text-justify" in e && i(r, e["text-justify"], W), "text-baseline" in e && i(r, e["text-baseline"], W), "text-padding" in e && i(r, e["text-padding"], Vs), "text-fill-color" in e && i(r, e["text-fill-color"], G), "text-stroke-color" in e && i(r, e["text-stroke-color"], G), "text-stroke-line-cap" in e && i(r, e["text-stroke-line-cap"], W), "text-stroke-line-join" in e && i(r, e["text-stroke-line-join"], W), "text-stroke-line-dash" in e && i(r, e["text-stroke-line-dash"], Vs), "text-stroke-line-dash-offset" in e && i(r, e["text-stroke-line-dash-offset"], U), "text-stroke-miter-limit" in e && i(r, e["text-stroke-miter-limit"], U), "text-stroke-width" in e && i(r, e["text-stroke-width"], U), "text-background-fill-color" in e && i(r, e["text-background-fill-color"], G), "text-background-stroke-color" in e && i(r, e["text-background-stroke-color"], G), "text-background-stroke-line-cap" in e && i(r, e["text-background-stroke-line-cap"], W), "text-background-stroke-line-join" in e && i(r, e["text-background-stroke-line-join"], W), "text-background-stroke-line-dash" in e && i(r, e["text-background-stroke-line-dash"], Vs), "text-background-stroke-line-dash-offset" in e && i(r, e["text-background-stroke-line-dash-offset"], U), "text-background-stroke-miter-limit" in e && i(r, e["text-background-stroke-miter-limit"], U), "text-background-stroke-width" in e && i(r, e["text-background-stroke-width"], U), "z-index" in e && i(r, e["z-index"], U); } function cm(e, t, n) { let r = op(t), i = new Op(), a = {}; if ("icon-src" in e ? im(e, i, a, r) : "shape-points" in e ? rm(e, i, a, r) : "circle-radius" in e && nm(e, i, a, r), am(e, i, a, r), om(e, i, a, r), sm(e, i, a, r), n) { let e = $s(t), a = Q(r, n, Bs, e); -======= - "text-value" in e && i(r, e["text-value"], H), "text-font" in e && i(r, e["text-font"], H), "text-max-angle" in e && i(r, e["text-max-angle"], V), "text-offset-x" in e && i(r, e["text-offset-x"], V), "text-offset-y" in e && i(r, e["text-offset-y"], V), "text-overflow" in e && i(r, e["text-overflow"], as), "text-placement" in e && i(r, e["text-placement"], H), "text-repeat" in e && i(r, e["text-repeat"], V), "text-scale" in e && i(r, e["text-scale"], ss), "text-rotate-with-view" in e && i(r, e["text-rotate-with-view"], as), "text-rotation" in e && i(r, e["text-rotation"], V), "text-align" in e && i(r, e["text-align"], H), "text-justify" in e && i(r, e["text-justify"], H), "text-baseline" in e && i(r, e["text-baseline"], H), "text-padding" in e && i(r, e["text-padding"], os), "text-fill-color" in e && i(r, e["text-fill-color"], U), "text-stroke-color" in e && i(r, e["text-stroke-color"], U), "text-stroke-line-cap" in e && i(r, e["text-stroke-line-cap"], H), "text-stroke-line-join" in e && i(r, e["text-stroke-line-join"], H), "text-stroke-line-dash" in e && i(r, e["text-stroke-line-dash"], os), "text-stroke-line-dash-offset" in e && i(r, e["text-stroke-line-dash-offset"], V), "text-stroke-miter-limit" in e && i(r, e["text-stroke-miter-limit"], V), "text-stroke-width" in e && i(r, e["text-stroke-width"], V), "text-background-fill-color" in e && i(r, e["text-background-fill-color"], U), "text-background-stroke-color" in e && i(r, e["text-background-stroke-color"], U), "text-background-stroke-line-cap" in e && i(r, e["text-background-stroke-line-cap"], H), "text-background-stroke-line-join" in e && i(r, e["text-background-stroke-line-join"], H), "text-background-stroke-line-dash" in e && i(r, e["text-background-stroke-line-dash"], os), "text-background-stroke-line-dash-offset" in e && i(r, e["text-background-stroke-line-dash-offset"], V), "text-background-stroke-miter-limit" in e && i(r, e["text-background-stroke-miter-limit"], V), "text-background-stroke-width" in e && i(r, e["text-background-stroke-width"], V), "z-index" in e && i(r, e["z-index"], V); -} -======= - "text-value" in e && i(r, e["text-value"], H), "text-font" in e && i(r, e["text-font"], H), "text-max-angle" in e && i(r, e["text-max-angle"], V), "text-offset-x" in e && i(r, e["text-offset-x"], V), "text-offset-y" in e && i(r, e["text-offset-y"], V), "text-overflow" in e && i(r, e["text-overflow"], as), "text-placement" in e && i(r, e["text-placement"], H), "text-repeat" in e && i(r, e["text-repeat"], V), "text-scale" in e && i(r, e["text-scale"], ss), "text-rotate-with-view" in e && i(r, e["text-rotate-with-view"], as), "text-rotation" in e && i(r, e["text-rotation"], V), "text-align" in e && i(r, e["text-align"], H), "text-justify" in e && i(r, e["text-justify"], H), "text-baseline" in e && i(r, e["text-baseline"], H), "text-padding" in e && i(r, e["text-padding"], os), "text-fill-color" in e && i(r, e["text-fill-color"], U), "text-stroke-color" in e && i(r, e["text-stroke-color"], U), "text-stroke-line-cap" in e && i(r, e["text-stroke-line-cap"], H), "text-stroke-line-join" in e && i(r, e["text-stroke-line-join"], H), "text-stroke-line-dash" in e && i(r, e["text-stroke-line-dash"], os), "text-stroke-line-dash-offset" in e && i(r, e["text-stroke-line-dash-offset"], V), "text-stroke-miter-limit" in e && i(r, e["text-stroke-miter-limit"], V), "text-stroke-width" in e && i(r, e["text-stroke-width"], V), "text-background-fill-color" in e && i(r, e["text-background-fill-color"], U), "text-background-stroke-color" in e && i(r, e["text-background-stroke-color"], U), "text-background-stroke-line-cap" in e && i(r, e["text-background-stroke-line-cap"], H), "text-background-stroke-line-join" in e && i(r, e["text-background-stroke-line-join"], H), "text-background-stroke-line-dash" in e && i(r, e["text-background-stroke-line-dash"], os), "text-background-stroke-line-dash-offset" in e && i(r, e["text-background-stroke-line-dash-offset"], V), "text-background-stroke-miter-limit" in e && i(r, e["text-background-stroke-miter-limit"], V), "text-background-stroke-width" in e && i(r, e["text-background-stroke-width"], V), "z-index" in e && i(r, e["z-index"], V); -} ->>>>>>> Stashed changes -function Mm(e, t, n) { - let r = Ap(t), i = new Qp(), a = {}; - if ("icon-src" in e ? Om(e, i, a, r) : "shape-points" in e ? Dm(e, i, a, r) : "circle-radius" in e && Em(e, i, a, r), km(e, i, a, r), Am(e, i, a, r), jm(e, i, a, r), n) { - let e = vs(t), a = Z(r, n, as, e); -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes e.mCoordinate ? i.setFragmentDiscardExpression(`!${a}`) : i.setShapeDiscardExpression(`!${a}`); } let o = {}; function s(e, t, n, a) { if (!r[e]) return; -<<<<<<< Updated upstream -<<<<<<< Updated upstream let s = bp(n), c = yp(n); -======= - let s = Wp(n), c = Up(n); ->>>>>>> Stashed changes -======= - let s = Wp(n), c = Up(n); ->>>>>>> Stashed changes i.addAttribute(`a_${t}`, s), o[t] = { size: c, callback: a }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream return s("geometryType", up, W, (e) => rp(yc(e.getGeometry()))), s("featureId", lp, W | U, (e) => { let t = e.getId() ?? null; return typeof t == "string" ? rp(t) : t; @@ -23238,60 +13131,16 @@ function Mm(e, t, n) { uniforms: { ...a, ...Sp(r, t) -======= - return s("geometryType", Pp, H, (e) => Dp(Rs(e.getGeometry()))), s("featureId", Np, H | V, (e) => { - let t = e.getId() ?? null; - return typeof t == "string" ? Dp(t) : t; - }), Gp(i, r), { - builder: i, - attributes: { - ...o, - ...qp(r) - }, - uniforms: { - ...a, - ...Kp(r, t) ->>>>>>> Stashed changes -======= - return s("geometryType", Pp, H, (e) => Dp(Rs(e.getGeometry()))), s("featureId", Np, H | V, (e) => { - let t = e.getId() ?? null; - return typeof t == "string" ? Dp(t) : t; - }), Gp(i, r), { - builder: i, - attributes: { - ...o, - ...qp(r) - }, - uniforms: { - ...a, - ...Kp(r, t) ->>>>>>> Stashed changes } }; } //#endregion //#region node_modules/ol/render/webgl/textUtil.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var lm = { TEXT_OVERLAY_TEXTURE: "u_textOverlay", TEXT_OVERLAY_MATRIX: "u_textOverlayMatrix" }; function um(e) { -======= -var Nm = { - TEXT_OVERLAY_TEXTURE: "u_textOverlay", - TEXT_OVERLAY_MATRIX: "u_textOverlayMatrix" -}; -function Pm(e) { ->>>>>>> Stashed changes -======= -var Nm = { - TEXT_OVERLAY_TEXTURE: "u_textOverlay", - TEXT_OVERLAY_MATRIX: "u_textOverlayMatrix" -}; -function Pm(e) { ->>>>>>> Stashed changes let t = !1; function n(e) { for (let n in e) if (n === "text-value") { @@ -23310,35 +13159,15 @@ function Pm(e) { } return n(e), t; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream function dm(e, t) { let n = ff(); -======= -function Fm(e, t) { - let n = If(); ->>>>>>> Stashed changes -======= -function Fm(e, t) { - let n = If(); ->>>>>>> Stashed changes return { fragmentShader: ` precision mediump float; uniform sampler2D u_image; -<<<<<<< Updated upstream -<<<<<<< Updated upstream uniform sampler2D ${lm.TEXT_OVERLAY_TEXTURE}; uniform mat4 ${lm.TEXT_OVERLAY_MATRIX}; -======= - uniform sampler2D ${Nm.TEXT_OVERLAY_TEXTURE}; - uniform mat4 ${Nm.TEXT_OVERLAY_MATRIX}; ->>>>>>> Stashed changes -======= - uniform sampler2D ${Nm.TEXT_OVERLAY_TEXTURE}; - uniform mat4 ${Nm.TEXT_OVERLAY_MATRIX}; ->>>>>>> Stashed changes varying vec2 v_texCoord; @@ -23346,62 +13175,26 @@ function Fm(e, t) { vec4 color = texture2D(u_image, v_texCoord); vec2 coords = v_texCoord * 2. - vec2(1.); -<<<<<<< Updated upstream -<<<<<<< Updated upstream coords = (${lm.TEXT_OVERLAY_MATRIX} * vec4(coords.xy, 0., 1.)).xy; coords = coords * 0.5 + vec2(0.5); float outOfBounds = clamp(step(1., coords.x) + step(1., coords.y) + step(0., -coords.x) + step(0., -coords.y), 0., 1.); vec4 textColor = texture2D(${lm.TEXT_OVERLAY_TEXTURE}, vec2(coords.x, 1. - coords.y)); -======= - coords = (${Nm.TEXT_OVERLAY_MATRIX} * vec4(coords.xy, 0., 1.)).xy; - coords = coords * 0.5 + vec2(0.5); - float outOfBounds = clamp(step(1., coords.x) + step(1., coords.y) + step(0., -coords.x) + step(0., -coords.y), 0., 1.); - - vec4 textColor = texture2D(${Nm.TEXT_OVERLAY_TEXTURE}, vec2(coords.x, 1. - coords.y)); ->>>>>>> Stashed changes -======= - coords = (${Nm.TEXT_OVERLAY_MATRIX} * vec4(coords.xy, 0., 1.)).xy; - coords = coords * 0.5 + vec2(0.5); - float outOfBounds = clamp(step(1., coords.x) + step(1., coords.y) + step(0., -coords.x) + step(0., -coords.y), 0., 1.); - - vec4 textColor = texture2D(${Nm.TEXT_OVERLAY_TEXTURE}, vec2(coords.x, 1. - coords.y)); ->>>>>>> Stashed changes textColor.a *= 1. - outOfBounds; // if we're sampling out of the text overlay, make alpha 0 to avoid drawing anything gl_FragColor = textColor.a * textColor + (1. - textColor.a) * color; }`, uniforms: { -<<<<<<< Updated upstream -<<<<<<< Updated upstream [lm.TEXT_OVERLAY_TEXTURE]: e, [lm.TEXT_OVERLAY_MATRIX]: (r) => { let i = e(), a = t(); if (!i || !a) return n; let o = a.viewState, s = r.viewState, c = s.center, l = s.resolution, u = s.rotation, d = r.size, f = o.center, p = o.resolution, m = o.rotation, h = i.width, g = i.height; return pf(n), hf(n, 1 / p / (h / 2), 1 / p / (g / 2), 1, n), _f(n, m, n), gf(n, c[0] - f[0], c[1] - f[1], 0, n), _f(n, -u, n), hf(n, l * d[0] / 2, l * d[1] / 2, 1, n), n; -======= - [Nm.TEXT_OVERLAY_TEXTURE]: e, - [Nm.TEXT_OVERLAY_MATRIX]: (r) => { - let i = e(), a = t(); - if (!i || !a) return n; - let o = a.viewState, s = r.viewState, c = s.center, l = s.resolution, u = s.rotation, d = r.size, f = o.center, p = o.resolution, m = o.rotation, h = i.width, g = i.height; - return Lf(n), zf(n, 1 / p / (h / 2), 1 / p / (g / 2), 1, n), Vf(n, m, n), Bf(n, c[0] - f[0], c[1] - f[1], 0, n), Vf(n, -u, n), zf(n, l * d[0] / 2, l * d[1] / 2, 1, n), n; ->>>>>>> Stashed changes -======= - [Nm.TEXT_OVERLAY_TEXTURE]: e, - [Nm.TEXT_OVERLAY_MATRIX]: (r) => { - let i = e(), a = t(); - if (!i || !a) return n; - let o = a.viewState, s = r.viewState, c = s.center, l = s.resolution, u = s.rotation, d = r.size, f = o.center, p = o.resolution, m = o.rotation, h = i.width, g = i.height; - return Lf(n), zf(n, 1 / p / (h / 2), 1 / p / (g / 2), 1, n), Vf(n, m, n), Bf(n, c[0] - f[0], c[1] - f[1], 0, n), Vf(n, -u, n), zf(n, l * d[0] / 2, l * d[1] / 2, 1, n), n; ->>>>>>> Stashed changes } } }; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream new Mp("Point", [0, 0], [], 2, {}, "dummy"), new TextDecoder(); //#endregion //#region node_modules/ol/render/webgl/VectorStyleRenderer.js @@ -23412,30 +13205,6 @@ function mm() { var hm = 0; function gm(e, t, n) { let r = hm++; -======= -new nm("Point", [0, 0], [], 2, {}, "dummy"), new TextDecoder(); -//#endregion -//#region node_modules/ol/render/webgl/VectorStyleRenderer.js -var Im = [], Lm; -function Rm() { - return Lm ||= um(), Lm; -} -var zm = 0; -function Bm(e, t, n) { - let r = zm++; ->>>>>>> Stashed changes -======= -new nm("Point", [0, 0], [], 2, {}, "dummy"), new TextDecoder(); -//#endregion -//#region node_modules/ol/render/webgl/VectorStyleRenderer.js -var Im = [], Lm; -function Rm() { - return Lm ||= um(), Lm; -} -var zm = 0; -function Bm(e, t, n) { - let r = zm++; ->>>>>>> Stashed changes return n ? e.postMessage({ ...t, id: r @@ -23450,15 +13219,7 @@ function Bm(e, t, n) { e.addEventListener("message", n); }); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream var _m = { -======= -var Vm = { ->>>>>>> Stashed changes -======= -var Vm = { ->>>>>>> Stashed changes POSITION: "a_position", LOCAL_POSITION: "a_localPosition", SEGMENT_START: "a_segmentStart", @@ -23469,27 +13230,11 @@ var Vm = { JOIN_ANGLES: "a_joinAngles", DISTANCE_LOW: "a_distanceLow", DISTANCE_HIGH: "a_distanceHigh" -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, vm = class extends c { constructor(e, t, n, r) { super(), this.helper_, this.hitDetectionEnabled_ = !!r, this.flatStyle = ym(e), this.styleShaders = bm(e, t), this.customAttributes_ = {}, this.uniforms_ = {}, this.hitDetectionEnabled_ && (this.customAttributes_.hitColor = { callback() { return Up(this.ref, fm); -======= -}, Hm = class extends ie { - constructor(e, t, n, r) { - super(), this.helper_, this.hitDetectionEnabled_ = !!r, this.flatStyle = Um(e), this.styleShaders = Wm(e, t), this.customAttributes_ = {}, this.uniforms_ = {}, this.hitDetectionEnabled_ && (this.customAttributes_.hitColor = { - callback() { - return pm(this.ref, Im); ->>>>>>> Stashed changes -======= -}, Hm = class extends ie { - constructor(e, t, n, r) { - super(), this.helper_, this.hitDetectionEnabled_ = !!r, this.flatStyle = Um(e), this.styleShaders = Wm(e, t), this.customAttributes_ = {}, this.uniforms_ = {}, this.hitDetectionEnabled_ && (this.customAttributes_.hitColor = { - callback() { - return pm(this.ref, Im); ->>>>>>> Stashed changes }, size: 2 }); @@ -23501,35 +13246,15 @@ var Vm = { let t = {}, n = Object.entries(this.customAttributes_).map(([t, n]) => ({ name: t in e.attributes || t === "hitColor" ? `a_${t}` : null, size: n.size || 1, -<<<<<<< Updated upstream -<<<<<<< Updated upstream type: Lf.FLOAT -======= - type: sp.FLOAT ->>>>>>> Stashed changes -======= - type: sp.FLOAT ->>>>>>> Stashed changes })); return e.builder.getFillVertexShader() && (t.fillRenderPass = { vertexShader: e.builder.getFillVertexShader(), fragmentShader: e.builder.getFillFragmentShader(), attributesDesc: [{ -<<<<<<< Updated upstream -<<<<<<< Updated upstream name: _m.POSITION, size: 2, type: Lf.FLOAT -======= - name: Vm.POSITION, - size: 2, - type: sp.FLOAT ->>>>>>> Stashed changes -======= - name: Vm.POSITION, - size: 2, - type: sp.FLOAT ->>>>>>> Stashed changes }, ...n], instancedAttributesDesc: [], instancePrimitiveVertexCount: 3 @@ -23537,8 +13262,6 @@ var Vm = { vertexShader: e.builder.getStrokeVertexShader(), fragmentShader: e.builder.getStrokeFragmentShader(), attributesDesc: [{ -<<<<<<< Updated upstream -<<<<<<< Updated upstream name: _m.LOCAL_POSITION, size: 2, type: Lf.FLOAT @@ -23583,98 +13306,6 @@ var Vm = { name: _m.ANGLE_TANGENT_SUM, size: 1, type: Lf.FLOAT -======= - name: Vm.LOCAL_POSITION, - size: 2, - type: sp.FLOAT - }], - instancedAttributesDesc: [ - { - name: Vm.SEGMENT_START, - size: 2, - type: sp.FLOAT - }, - { - name: Vm.MEASURE_START, - size: 1, - type: sp.FLOAT - }, - { - name: Vm.SEGMENT_END, - size: 2, - type: sp.FLOAT - }, - { - name: Vm.MEASURE_END, - size: 1, - type: sp.FLOAT - }, - { - name: Vm.JOIN_ANGLES, - size: 2, - type: sp.FLOAT - }, - { - name: Vm.DISTANCE_LOW, - size: 1, - type: sp.FLOAT - }, - { - name: Vm.DISTANCE_HIGH, - size: 1, - type: sp.FLOAT - }, - { - name: Vm.ANGLE_TANGENT_SUM, - size: 1, - type: sp.FLOAT ->>>>>>> Stashed changes -======= - name: Vm.LOCAL_POSITION, - size: 2, - type: sp.FLOAT - }], - instancedAttributesDesc: [ - { - name: Vm.SEGMENT_START, - size: 2, - type: sp.FLOAT - }, - { - name: Vm.MEASURE_START, - size: 1, - type: sp.FLOAT - }, - { - name: Vm.SEGMENT_END, - size: 2, - type: sp.FLOAT - }, - { - name: Vm.MEASURE_END, - size: 1, - type: sp.FLOAT - }, - { - name: Vm.JOIN_ANGLES, - size: 2, - type: sp.FLOAT - }, - { - name: Vm.DISTANCE_LOW, - size: 1, - type: sp.FLOAT - }, - { - name: Vm.DISTANCE_HIGH, - size: 1, - type: sp.FLOAT - }, - { - name: Vm.ANGLE_TANGENT_SUM, - size: 1, - type: sp.FLOAT ->>>>>>> Stashed changes }, ...n ], @@ -23683,8 +13314,6 @@ var Vm = { vertexShader: e.builder.getSymbolVertexShader(), fragmentShader: e.builder.getSymbolFragmentShader(), attributesDesc: [{ -<<<<<<< Updated upstream -<<<<<<< Updated upstream name: _m.LOCAL_POSITION, size: 2, type: Lf.FLOAT @@ -23697,37 +13326,9 @@ var Vm = { instancePrimitiveVertexCount: 6 }), t; }), this.hasFill_ = this.renderPasses_.some((e) => e.fillRenderPass), this.hasStroke_ = this.renderPasses_.some((e) => e.strokeRenderPass), this.hasSymbol_ = this.renderPasses_.some((e) => e.symbolRenderPass), this.hasText_ = this.flatStyle && um(this.flatStyle), this.hasText_ && (this.textOverlayCanvas_ = ge().canvas, this.textOverlayContext_ = this.textOverlayCanvas_.getContext("2d"), this.textOverlayRenderFrameState_ = null, this.textOverlayWorker_ = zp(), this.textOverlayRenderList_ = /* @__PURE__ */ new Set()), this.setHelper(n); -======= - name: Vm.LOCAL_POSITION, - size: 2, - type: sp.FLOAT - }], - instancedAttributesDesc: [{ - name: Vm.POSITION, - size: 2, - type: sp.FLOAT - }, ...n], - instancePrimitiveVertexCount: 6 - }), t; - }), this.hasFill_ = this.renderPasses_.some((e) => e.fillRenderPass), this.hasStroke_ = this.renderPasses_.some((e) => e.strokeRenderPass), this.hasSymbol_ = this.renderPasses_.some((e) => e.symbolRenderPass), this.hasText_ = this.flatStyle && Pm(this.flatStyle), this.hasText_ && (this.textOverlayCanvas_ = y().canvas, this.textOverlayContext_ = this.textOverlayCanvas_.getContext("2d"), this.textOverlayRenderFrameState_ = null, this.textOverlayWorker_ = lm(), this.textOverlayRenderList_ = /* @__PURE__ */ new Set()), this.setHelper(n); ->>>>>>> Stashed changes -======= - name: Vm.LOCAL_POSITION, - size: 2, - type: sp.FLOAT - }], - instancedAttributesDesc: [{ - name: Vm.POSITION, - size: 2, - type: sp.FLOAT - }, ...n], - instancePrimitiveVertexCount: 6 - }), t; - }), this.hasFill_ = this.renderPasses_.some((e) => e.fillRenderPass), this.hasStroke_ = this.renderPasses_.some((e) => e.strokeRenderPass), this.hasSymbol_ = this.renderPasses_.some((e) => e.symbolRenderPass), this.hasText_ = this.flatStyle && Pm(this.flatStyle), this.hasText_ && (this.textOverlayCanvas_ = y().canvas, this.textOverlayContext_ = this.textOverlayCanvas_.getContext("2d"), this.textOverlayRenderFrameState_ = null, this.textOverlayWorker_ = lm(), this.textOverlayRenderList_ = /* @__PURE__ */ new Set()), this.setHelper(n); ->>>>>>> Stashed changes } async generateBuffers(e, t, n) { - let r = ti(qr(), t); + let r = ei(Kr(), t); if (e.isEmpty()) return { polygonBuffers: null, lineStringBuffers: null, @@ -23735,15 +13336,7 @@ var Vm = { invertVerticesTransform: r, textInstructionsKey: null }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream let i = new Rp(), a = this.generateRenderInstructions_(e, i, t), [o, s, c, l] = await Promise.all([ -======= - let i = new cm(), a = this.generateRenderInstructions_(e, i, t), [o, s, c, l] = await Promise.all([ ->>>>>>> Stashed changes -======= - let i = new cm(), a = this.generateRenderInstructions_(e, i, t), [o, s, c, l] = await Promise.all([ ->>>>>>> Stashed changes this.hasText_ ? this.generateTextInstructions_(a, i, t, n) : null, this.hasFill_ ? this.generateBuffersForType_(a.polygonInstructions, "Polygon", t) : null, this.hasStroke_ ? this.generateBuffersForType_(a.lineStringInstructions, "LineString", t) : null, @@ -23759,78 +13352,32 @@ var Vm = { } generateRenderInstructions_(e, t, n) { return { -<<<<<<< Updated upstream -<<<<<<< Updated upstream polygonInstructions: this.hasFill_ || this.hasText_ ? Yp(e.polygonBatch, /* @__PURE__ */ new Float32Array(), t, this.customAttributes_, n) : null, lineStringInstructions: this.hasStroke_ || this.hasText_ ? Jp(e.lineStringBatch, /* @__PURE__ */ new Float32Array(), t, this.customAttributes_, n) : null, pointInstructions: this.hasSymbol_ || this.hasText_ ? qp(e.pointBatch, /* @__PURE__ */ new Float32Array(), t, this.customAttributes_, n) : null -======= - polygonInstructions: this.hasFill_ || this.hasText_ ? ym(e.polygonBatch, /* @__PURE__ */ new Float32Array(), t, this.customAttributes_, n) : null, - lineStringInstructions: this.hasStroke_ || this.hasText_ ? vm(e.lineStringBatch, /* @__PURE__ */ new Float32Array(), t, this.customAttributes_, n) : null, - pointInstructions: this.hasSymbol_ || this.hasText_ ? _m(e.pointBatch, /* @__PURE__ */ new Float32Array(), t, this.customAttributes_, n) : null ->>>>>>> Stashed changes -======= - polygonInstructions: this.hasFill_ || this.hasText_ ? ym(e.polygonBatch, /* @__PURE__ */ new Float32Array(), t, this.customAttributes_, n) : null, - lineStringInstructions: this.hasStroke_ || this.hasText_ ? vm(e.lineStringBatch, /* @__PURE__ */ new Float32Array(), t, this.customAttributes_, n) : null, - pointInstructions: this.hasSymbol_ || this.hasText_ ? _m(e.pointBatch, /* @__PURE__ */ new Float32Array(), t, this.customAttributes_, n) : null ->>>>>>> Stashed changes }; } generateBuffersForType_(e, t, n) { if (e === null) return null; let r; switch (t) { - case "Polygon": -<<<<<<< Updated upstream -<<<<<<< Updated upstream - r = Vp.GENERATE_POLYGON_BUFFERS; - break; - case "LineString": - r = Vp.GENERATE_LINE_STRING_BUFFERS; - break; - case "Point": r = Vp.GENERATE_POINT_BUFFERS; -======= - r = dm.GENERATE_POLYGON_BUFFERS; - break; - case "LineString": - r = dm.GENERATE_LINE_STRING_BUFFERS; - break; - case "Point": r = dm.GENERATE_POINT_BUFFERS; ->>>>>>> Stashed changes -======= - r = dm.GENERATE_POLYGON_BUFFERS; + case "Polygon": + r = Vp.GENERATE_POLYGON_BUFFERS; break; case "LineString": - r = dm.GENERATE_LINE_STRING_BUFFERS; + r = Vp.GENERATE_LINE_STRING_BUFFERS; break; - case "Point": r = dm.GENERATE_POINT_BUFFERS; ->>>>>>> Stashed changes + case "Point": r = Vp.GENERATE_POINT_BUFFERS; } let i = { type: r, renderInstructions: e.buffer, renderInstructionsTransform: n, -<<<<<<< Updated upstream -<<<<<<< Updated upstream customAttributesSize: Kp(this.customAttributes_) }; return gm(mm(), i, [e.buffer]).then((e) => { if (!this.helper_.getGL()) return; let t = e, n = new Af(yf, Sf).fromArrayBuffer(t.indicesBuffer), r = new Af(vf, Sf).fromArrayBuffer(t.vertexAttributesBuffer), i = new Af(vf, Sf).fromArrayBuffer(t.instanceAttributesBuffer); -======= - customAttributesSize: gm(this.customAttributes_) - }; - return Bm(Rm(), i, [e.buffer]).then((e) => { - if (!this.helper_.getGL()) return; - let t = e, n = new ep(Uf, Kf).fromArrayBuffer(t.indicesBuffer), r = new ep(Hf, Kf).fromArrayBuffer(t.vertexAttributesBuffer), i = new ep(Hf, Kf).fromArrayBuffer(t.instanceAttributesBuffer); ->>>>>>> Stashed changes -======= - customAttributesSize: gm(this.customAttributes_) - }; - return Bm(Rm(), i, [e.buffer]).then((e) => { - if (!this.helper_.getGL()) return; - let t = e, n = new ep(Uf, Kf).fromArrayBuffer(t.indicesBuffer), r = new ep(Hf, Kf).fromArrayBuffer(t.vertexAttributesBuffer), i = new ep(Hf, Kf).fromArrayBuffer(t.instanceAttributesBuffer); ->>>>>>> Stashed changes return this.helper_.flushBufferData(n), this.helper_.flushBufferData(r), this.helper_.flushBufferData(i), [ n, r, @@ -23845,15 +13392,7 @@ var Vm = { ...e, [t]: this.customAttributes_[t].size || 1 }), {}), l = { -<<<<<<< Updated upstream -<<<<<<< Updated upstream type: Hp.BUILD_INSTRUCTIONS, -======= - type: fm.BUILD_INSTRUCTIONS, ->>>>>>> Stashed changes -======= - type: fm.BUILD_INSTRUCTIONS, ->>>>>>> Stashed changes polygonRenderInstructions: a, lineStringRenderInstructions: o, pointRenderInstructions: s, @@ -23863,15 +13402,7 @@ var Vm = { renderInstructionsTransform: n, resolution: r }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream return gm(this.textOverlayWorker_, l, i).then((e) => e.instructionsSetKey); -======= - return Bm(this.textOverlayWorker_, l, i).then((e) => e.instructionsSetKey); ->>>>>>> Stashed changes -======= - return Bm(this.textOverlayWorker_, l, i).then((e) => e.instructionsSetKey); ->>>>>>> Stashed changes } render(e, t, n) { for (let r of this.renderPasses_) r.fillRenderPass && e.polygonBuffers && this.renderInternal_(e.polygonBuffers[0], e.polygonBuffers[1], e.polygonBuffers[2], r.fillRenderPass, t, n), r.strokeRenderPass && e.lineStringBuffers && this.renderInternal_(e.lineStringBuffers[0], e.lineStringBuffers[1], e.lineStringBuffers[2], r.strokeRenderPass, t, n), r.symbolRenderPass && e.pointBuffers && this.renderInternal_(e.pointBuffers[0], e.pointBuffers[1], e.pointBuffers[2], r.symbolRenderPass, t, n); @@ -23892,27 +13423,11 @@ var Vm = { finalizeTextRender(e) { if (!this.hasText_) return Promise.resolve(); let t = { -<<<<<<< Updated upstream -<<<<<<< Updated upstream type: Hp.RENDER, frameState: Xp(e), batchesToRender: this.textOverlayRenderList_ }; return gm(this.textOverlayWorker_, t).then((e) => { -======= - type: fm.RENDER, - frameState: bm(e), - batchesToRender: this.textOverlayRenderList_ - }; - return Bm(this.textOverlayWorker_, t).then((e) => { ->>>>>>> Stashed changes -======= - type: fm.RENDER, - frameState: bm(e), - batchesToRender: this.textOverlayRenderList_ - }; - return Bm(this.textOverlayWorker_, t).then((e) => { ->>>>>>> Stashed changes let t = e; if (t.imageData) { this.textOverlayRenderFrameState_ = t.frameState; @@ -23935,15 +13450,7 @@ var Vm = { } disposeTextInstructions(e) { this.textOverlayWorker_?.postMessage({ -<<<<<<< Updated upstream -<<<<<<< Updated upstream type: Hp.DISPOSE_INSTRUCTIONS, -======= - type: fm.DISPOSE_INSTRUCTIONS, ->>>>>>> Stashed changes -======= - type: fm.DISPOSE_INSTRUCTIONS, ->>>>>>> Stashed changes instructionsSetKey: e }); } @@ -23951,24 +13458,10 @@ var Vm = { this.textOverlayWorker_?.terminate(), super.disposeInternal(); } }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream function ym(e) { return Array.isArray(e) ? e.some((e) => "builder" in e && !("sourceRule" in e)) ? null : e.some((e) => "builder" in e) ? e.map((e) => e.sourceRule) : e : "builder" in e ? "sourceRule" in e ? [e.sourceRule] : null : e; } function bm(e, t) { -======= -function Um(e) { - return Array.isArray(e) ? e.some((e) => "builder" in e && !("sourceRule" in e)) ? null : e.some((e) => "builder" in e) ? e.map((e) => e.sourceRule) : e : "builder" in e ? "sourceRule" in e ? [e.sourceRule] : null : e; -} -function Wm(e, t) { ->>>>>>> Stashed changes -======= -function Um(e) { - return Array.isArray(e) ? e.some((e) => "builder" in e && !("sourceRule" in e)) ? null : e.some((e) => "builder" in e) ? e.map((e) => e.sourceRule) : e : "builder" in e ? "sourceRule" in e ? [e.sourceRule] : null : e; -} -function Wm(e, t) { ->>>>>>> Stashed changes let n = Array.isArray(e) ? e : [e]; if ("style" in n[0]) { let e = [], r = n, i = []; @@ -23976,15 +13469,7 @@ function Wm(e, t) { let r = Array.isArray(n.style) ? n.style : [n.style], a = n.filter; n.else && i.length && (a = ["all", ...i.map((e) => ["!", e])], n.filter && a.push(n.filter), a.length < 3 && (a = a[1])), n.filter && i.push(n.filter); let o = r.map((e) => ({ -<<<<<<< Updated upstream -<<<<<<< Updated upstream ...cm(e, t, a), -======= - ...Mm(e, t, a), ->>>>>>> Stashed changes -======= - ...Mm(e, t, a), ->>>>>>> Stashed changes sourceRule: n })); e.push(...o); @@ -23992,29 +13477,13 @@ function Wm(e, t) { return e; } return "builder" in n[0] ? n : n.map((e) => ({ -<<<<<<< Updated upstream -<<<<<<< Updated upstream ...cm(e, t, null), -======= - ...Mm(e, t, null), ->>>>>>> Stashed changes -======= - ...Mm(e, t, null), ->>>>>>> Stashed changes sourceRule: { style: e } })); } //#endregion //#region node_modules/ol/source/VectorEventType.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var xm = { -======= -var Gm = { ->>>>>>> Stashed changes -======= -var Gm = { ->>>>>>> Stashed changes ADDFEATURE: "addfeature", CHANGEFEATURE: "changefeature", CLEAR: "clear", @@ -24022,15 +13491,7 @@ var Gm = { FEATURESLOADSTART: "featuresloadstart", FEATURESLOADEND: "featuresloadend", FEATURESLOADERROR: "featuresloaderror" -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, Sm = /* @__PURE__ */ new Uint8Array(4), Cm = class { -======= -}, Km = /* @__PURE__ */ new Uint8Array(4), qm = class { ->>>>>>> Stashed changes -======= -}, Km = /* @__PURE__ */ new Uint8Array(4), qm = class { ->>>>>>> Stashed changes constructor(e, t) { this.helper_ = e; let n = e.getGL(); @@ -24053,24 +13514,10 @@ var Gm = { return this.data_; } readPixel(e, t) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (e < 0 || t < 0 || e > this.size_[0] || t >= this.size_[1]) return Sm[0] = 0, Sm[1] = 0, Sm[2] = 0, Sm[3] = 0, Sm; this.readAll(); let n = Math.floor(e) + (this.size_[1] - Math.floor(t) - 1) * this.size_[0]; return Sm[0] = this.data_[n * 4], Sm[1] = this.data_[n * 4 + 1], Sm[2] = this.data_[n * 4 + 2], Sm[3] = this.data_[n * 4 + 3], Sm; -======= - if (e < 0 || t < 0 || e > this.size_[0] || t >= this.size_[1]) return Km[0] = 0, Km[1] = 0, Km[2] = 0, Km[3] = 0, Km; - this.readAll(); - let n = Math.floor(e) + (this.size_[1] - Math.floor(t) - 1) * this.size_[0]; - return Km[0] = this.data_[n * 4], Km[1] = this.data_[n * 4 + 1], Km[2] = this.data_[n * 4 + 2], Km[3] = this.data_[n * 4 + 3], Km; ->>>>>>> Stashed changes -======= - if (e < 0 || t < 0 || e > this.size_[0] || t >= this.size_[1]) return Km[0] = 0, Km[1] = 0, Km[2] = 0, Km[3] = 0, Km; - this.readAll(); - let n = Math.floor(e) + (this.size_[1] - Math.floor(t) - 1) * this.size_[0]; - return Km[0] = this.data_[n * 4], Km[1] = this.data_[n * 4 + 1], Km[2] = this.data_[n * 4 + 2], Km[3] = this.data_[n * 4 + 3], Km; ->>>>>>> Stashed changes } getTexture() { return this.texture_; @@ -24085,21 +13532,11 @@ var Gm = { let e = this.size_, t = this.helper_.getGL(); this.texture_ = this.helper_.createTexture(e, null, this.texture_), t.bindFramebuffer(t.FRAMEBUFFER, this.framebuffer_), t.viewport(0, 0, e[0], e[1]), t.framebufferTexture2D(t.FRAMEBUFFER, t.COLOR_ATTACHMENT0, t.TEXTURE_2D, this.texture_, 0), t.bindRenderbuffer(t.RENDERBUFFER, this.depthbuffer_), t.renderbufferStorage(t.RENDERBUFFER, t.DEPTH_COMPONENT16, e[0], e[1]), t.framebufferRenderbuffer(t.FRAMEBUFFER, t.DEPTH_ATTACHMENT, t.RENDERBUFFER, this.depthbuffer_), this.data_ = new Uint8Array(e[0] * e[1] * 4); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, wm = { -======= -}, Jm = { ->>>>>>> Stashed changes -======= -}, Jm = { ->>>>>>> Stashed changes PATTERN_ORIGIN_X_DOUBLE: "u_df_patternOriginX", PATTERN_ORIGIN_Y_DOUBLE: "u_df_patternOriginY", PATTERN_SCALE_RATIO_DOUBLE: "u_df_patternScaleRatio", ONE: "u_one" -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, Tm = [0, 0], Em = [0, 0], Dm = Kr(), Om = ff(); function km(e, t, n, r) { Xr(Dm, t), Jr(Dm, n), e.setUniformMatrixValue(If.PROJECTION_MATRIX, mf(Om, Dm)), ei(Dm, Dm), e.setUniformMatrixValue(If.INVERT_PROJECTION_MATRIX, mf(Om, Dm)), Tm[0] = 0, Tm[1] = 0; @@ -24112,32 +13549,6 @@ function km(e, t, n, r) { //#region node_modules/ol/renderer/webgl/worldUtil.js function Am(e, t) { let n = e.viewState.projection, r = t.getSource().getWrapX() && n.canWrapX(), i = n.getExtent(), a = e.extent, o = r ? R(i) : null, s = r ? Math.ceil((a[2] - i[2]) / o) + 1 : 1; -======= -}, Ym = [0, 0], Xm = [0, 0], Zm = qr(), Qm = If(); -function $m(e, t, n, r) { - Zr(Zm, t), Yr(Zm, n), e.setUniformMatrixValue(op.PROJECTION_MATRIX, Rf(Qm, Zm)), ti(Zm, Zm), e.setUniformMatrixValue(op.INVERT_PROJECTION_MATRIX, Rf(Qm, Zm)), Ym[0] = 0, Ym[1] = 0; - let i = r.size, a = r.viewState.resolution, o = r.viewState.center; - ei(Zm, i[0] / 2, i[1] / 2, 1 / a, 1 / a, 0, -o[0], -o[1]), z(Zm, Ym), Xm[0] = Yp(Ym[0]), Xm[1] = Jp(Ym[0]), e.setUniformFloatVec2(Jm.PATTERN_ORIGIN_X_DOUBLE, Xm), Xm[0] = Yp(Ym[1]), Xm[1] = Jp(Ym[1]), e.setUniformFloatVec2(Jm.PATTERN_ORIGIN_Y_DOUBLE, Xm); - let s = 2 ** ((r.viewState.zoom + .5) % 1 - .5); - Ym[0] = Yp(s), Ym[1] = Jp(s), e.setUniformFloatVec2(Jm.PATTERN_SCALE_RATIO_DOUBLE, Ym); -} -//#endregion -//#region node_modules/ol/renderer/webgl/worldUtil.js -======= -}, Ym = [0, 0], Xm = [0, 0], Zm = qr(), Qm = If(); -function $m(e, t, n, r) { - Zr(Zm, t), Yr(Zm, n), e.setUniformMatrixValue(op.PROJECTION_MATRIX, Rf(Qm, Zm)), ti(Zm, Zm), e.setUniformMatrixValue(op.INVERT_PROJECTION_MATRIX, Rf(Qm, Zm)), Ym[0] = 0, Ym[1] = 0; - let i = r.size, a = r.viewState.resolution, o = r.viewState.center; - ei(Zm, i[0] / 2, i[1] / 2, 1 / a, 1 / a, 0, -o[0], -o[1]), z(Zm, Ym), Xm[0] = Yp(Ym[0]), Xm[1] = Jp(Ym[0]), e.setUniformFloatVec2(Jm.PATTERN_ORIGIN_X_DOUBLE, Xm), Xm[0] = Yp(Ym[1]), Xm[1] = Jp(Ym[1]), e.setUniformFloatVec2(Jm.PATTERN_ORIGIN_Y_DOUBLE, Xm); - let s = 2 ** ((r.viewState.zoom + .5) % 1 - .5); - Ym[0] = Yp(s), Ym[1] = Jp(s), e.setUniformFloatVec2(Jm.PATTERN_SCALE_RATIO_DOUBLE, Ym); -} -//#endregion -//#region node_modules/ol/renderer/webgl/worldUtil.js ->>>>>>> Stashed changes -function eh(e, t) { - let n = e.viewState.projection, r = t.getSource().getWrapX() && n.canWrapX(), i = n.getExtent(), a = e.extent, o = r ? I(i) : null, s = r ? Math.ceil((a[2] - i[2]) / o) + 1 : 1; ->>>>>>> Stashed changes return [ r ? Math.floor((a[0] - i[0]) / o) : 0, s, @@ -24146,8 +13557,6 @@ function eh(e, t) { } //#endregion //#region node_modules/ol/renderer/webgl/VectorLayer.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var jm = { ...If, ...wm, @@ -24158,53 +13567,17 @@ var jm = { constructor(e, t) { let n = { [jm.RENDER_EXTENT]: [ -======= -var th = { - ...op, - ...Jm, - ...Nm, - RENDER_EXTENT: "u_renderExtent", - GLOBAL_ALPHA: "u_globalAlpha" -}, nh = class extends _p { - constructor(e, t) { - let n = { - [th.RENDER_EXTENT]: [ ->>>>>>> Stashed changes -======= -var th = { - ...op, - ...Jm, - ...Nm, - RENDER_EXTENT: "u_renderExtent", - GLOBAL_ALPHA: "u_globalAlpha" -}, nh = class extends _p { - constructor(e, t) { - let n = { - [th.RENDER_EXTENT]: [ ->>>>>>> Stashed changes 0, 0, 0, 0 ], -<<<<<<< Updated upstream -<<<<<<< Updated upstream [jm.GLOBAL_ALPHA]: 1, [jm.ONE]: 1 -======= - [th.GLOBAL_ALPHA]: 1, - [th.ONE]: 1 ->>>>>>> Stashed changes -======= - [th.GLOBAL_ALPHA]: 1, - [th.ONE]: 1 ->>>>>>> Stashed changes }; super(e, { uniforms: n, postProcesses: t.postProcesses ?? [] -<<<<<<< Updated upstream -<<<<<<< Updated upstream }), this.hitDetectionEnabled_ = !t.disableHitDetection, this.hitRenderTarget_, this.sourceRevision_ = -1, this.layerRevision_ = -1, this.skipNextTextRender_ = !1, this.previousExtent_ = at(), this.currentTransform_ = Kr(), this.currentFrameStateTransform_ = Kr(), this.styleVariables_ = {}, this.style_ = [], this.hasText_ = !1, this.styleRenderer_ = null, this.buffers_ = null, this.batch_ = new Np(), this.initialFeaturesAdded_ = !1, this.sourceListenKeys_ = null, this.applyOptions_(t); } addInitialFeatures_(e) { @@ -24214,61 +13587,21 @@ var th = { i(t, xm.CHANGEFEATURE, this.handleSourceFeatureChanged_.bind(this, r), this), i(t, xm.REMOVEFEATURE, this.handleSourceFeatureDelete_, this), i(t, xm.CLEAR, this.handleSourceFeatureClear_, this) -======= -======= ->>>>>>> Stashed changes - }), this.hitDetectionEnabled_ = !t.disableHitDetection, this.hitRenderTarget_, this.sourceRevision_ = -1, this.layerRevision_ = -1, this.skipNextTextRender_ = !1, this.previousExtent_ = We(), this.currentTransform_ = qr(), this.currentFrameStateTransform_ = qr(), this.styleVariables_ = {}, this.style_ = [], this.hasText_ = !1, this.styleRenderer_ = null, this.buffers_ = null, this.batch_ = new rm(), this.initialFeaturesAdded_ = !1, this.sourceListenKeys_ = null, this.applyOptions_(t); - } - addInitialFeatures_(e) { - let t = this.getLayer().getSource(), n = hr(), r; - n && (r = lr(n, e.viewState.projection)), this.batch_.addFeatures(t.getFeatures(), r), this.sourceListenKeys_ = [ - A(t, Gm.ADDFEATURE, this.handleSourceFeatureAdded_.bind(this, r)), - A(t, Gm.CHANGEFEATURE, this.handleSourceFeatureChanged_.bind(this, r), this), - A(t, Gm.REMOVEFEATURE, this.handleSourceFeatureDelete_, this), - A(t, Gm.CLEAR, this.handleSourceFeatureClear_, this) -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ]; } applyOptions_(e) { this.styleVariables_ = e.variables, this.style_ = e.style; -<<<<<<< Updated upstream -<<<<<<< Updated upstream let t = ym(this.style_), n = !!t && um(t); n && !this.hasText_ ? this.setPostProcesses([dm(() => this.styleRenderer_.getTextOverlayCanvas(), () => this.styleRenderer_.getTextOverlayFrameState()), ...this.getPostProcesses()]) : !n && this.hasText_ && this.setPostProcesses(this.getPostProcesses().slice(1)), this.hasText_ = n; } createRenderers_() { this.buffers_ = null, this.styleRenderer_ = new vm(this.style_, this.styleVariables_, this.helper, this.hitDetectionEnabled_); -======= - let t = Um(this.style_), n = !!t && Pm(t); - n && !this.hasText_ ? this.setPostProcesses([Fm(() => this.styleRenderer_.getTextOverlayCanvas(), () => this.styleRenderer_.getTextOverlayFrameState()), ...this.getPostProcesses()]) : !n && this.hasText_ && this.setPostProcesses(this.getPostProcesses().slice(1)), this.hasText_ = n; - } - createRenderers_() { - this.buffers_ = null, this.styleRenderer_ = new Hm(this.style_, this.styleVariables_, this.helper, this.hitDetectionEnabled_); ->>>>>>> Stashed changes -======= - let t = Um(this.style_), n = !!t && Pm(t); - n && !this.hasText_ ? this.setPostProcesses([Fm(() => this.styleRenderer_.getTextOverlayCanvas(), () => this.styleRenderer_.getTextOverlayFrameState()), ...this.getPostProcesses()]) : !n && this.hasText_ && this.setPostProcesses(this.getPostProcesses().slice(1)), this.hasText_ = n; - } - createRenderers_() { - this.buffers_ = null, this.styleRenderer_ = new Hm(this.style_, this.styleVariables_, this.helper, this.hitDetectionEnabled_); ->>>>>>> Stashed changes } reset(e) { this.applyOptions_(e), this.helper && this.createRenderers_(), super.reset(e); } afterHelperCreated() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.styleRenderer_ ? this.styleRenderer_.setHelper(this.helper, this.buffers_) : this.createRenderers_(), this.hitDetectionEnabled_ && (this.hitRenderTarget_ = new Cm(this.helper)); -======= - this.styleRenderer_ ? this.styleRenderer_.setHelper(this.helper, this.buffers_) : this.createRenderers_(), this.hitDetectionEnabled_ && (this.hitRenderTarget_ = new qm(this.helper)); ->>>>>>> Stashed changes -======= - this.styleRenderer_ ? this.styleRenderer_.setHelper(this.helper, this.buffers_) : this.createRenderers_(), this.hitDetectionEnabled_ && (this.hitRenderTarget_ = new qm(this.helper)); ->>>>>>> Stashed changes } handleSourceFeatureAdded_(e, t) { let n = t.feature; @@ -24286,28 +13619,12 @@ var th = { this.batch_.clear(); } applyUniforms_(e, t) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream km(this.helper, this.currentFrameStateTransform_, e, t); -======= - $m(this.helper, this.currentFrameStateTransform_, e, t); ->>>>>>> Stashed changes -======= - $m(this.helper, this.currentFrameStateTransform_, e, t); ->>>>>>> Stashed changes } renderFrame(e) { let t = this.helper.getGL(); this.preRender(t, e); -<<<<<<< Updated upstream -<<<<<<< Updated upstream let n = this.getLayer(), [r, i, a] = Am(e, n); -======= - let n = this.getLayer(), [r, i, a] = eh(e, n); ->>>>>>> Stashed changes -======= - let n = this.getLayer(), [r, i, a] = eh(e, n); ->>>>>>> Stashed changes this.helper.prepareDraw(e), this.renderWorlds(e, !1, r, i, a), this.hasText_ && this.styleRenderer_.finalizeTextRender(e).then(() => { if (this.skipNextTextRender_) { this.skipNextTextRender_ = !1; @@ -24320,27 +13637,11 @@ var th = { } prepareFrameInternal(e) { this.initialFeaturesAdded_ ||= (this.addInitialFeatures_(e), !0); -<<<<<<< Updated upstream -<<<<<<< Updated upstream let t = this.getLayer(), n = t.getSource(), r = e.viewState, i = !e.viewHints[V.ANIMATING] && !e.viewHints[V.INTERACTING], a = !ut(this.previousExtent_, e.extent), o = this.sourceRevision_ < n.getRevision(), s = this.layerRevision_ < t.getRevision(); if (this.sourceRevision_ = n.getRevision(), this.layerRevision_ = t.getRevision(), (s || a || o) && (this.skipNextTextRender_ = !1), i && (a || o)) { let i = r.projection, a = r.resolution, o = t instanceof cu ? t.getRenderBuffer() : 0, s = Qe(e.extent, o * a), c = kr(); c ? n.loadFeatures(Mr(s, c), Pr(a, i), c) : n.loadFeatures(s, a, i), this.ready = !1; let l = this.helper.makeProjectionTransform(e, Kr(), !0); -======= - let t = this.getLayer(), n = t.getSource(), r = e.viewState, i = !e.viewHints[Lr.ANIMATING] && !e.viewHints[Lr.INTERACTING], a = !Ye(this.previousExtent_, e.extent), o = this.sourceRevision_ < n.getRevision(), s = this.layerRevision_ < t.getRevision(); - if (this.sourceRevision_ = n.getRevision(), this.layerRevision_ = t.getRevision(), (s || a || o) && (this.skipNextTextRender_ = !1), i && (a || o)) { - let i = r.projection, a = r.resolution, o = t instanceof Al ? t.getRenderBuffer() : 0, s = Le(e.extent, o * a), c = hr(); - c ? n.loadFeatures(vr(s, c), br(a, i), c) : n.loadFeatures(s, a, i), this.ready = !1; - let l = this.helper.makeProjectionTransform(e, qr(), !0); ->>>>>>> Stashed changes -======= - let t = this.getLayer(), n = t.getSource(), r = e.viewState, i = !e.viewHints[Lr.ANIMATING] && !e.viewHints[Lr.INTERACTING], a = !Ye(this.previousExtent_, e.extent), o = this.sourceRevision_ < n.getRevision(), s = this.layerRevision_ < t.getRevision(); - if (this.sourceRevision_ = n.getRevision(), this.layerRevision_ = t.getRevision(), (s || a || o) && (this.skipNextTextRender_ = !1), i && (a || o)) { - let i = r.projection, a = r.resolution, o = t instanceof Al ? t.getRenderBuffer() : 0, s = Le(e.extent, o * a), c = hr(); - c ? n.loadFeatures(vr(s, c), br(a, i), c) : n.loadFeatures(s, a, i), this.ready = !1; - let l = this.helper.makeProjectionTransform(e, qr(), !0); ->>>>>>> Stashed changes this.styleRenderer_.generateBuffers(this.batch_, l, e.viewState.resolution).then((e) => { this.buffers_ && this.disposeBuffers(this.buffers_), this.buffers_ = e, this.ready = !0, this.getLayer()?.changed(); }), this.previousExtent_ = e.extent.slice(); @@ -24351,22 +13652,14 @@ var th = { let a = n; t && (this.hitRenderTarget_.setSize([Math.floor(e.size[0] / 2), Math.floor(e.size[1] / 2)]), this.helper.prepareDrawToRenderTarget(e, this.hitRenderTarget_, !0)); do - this.helper.makeProjectionTransform(e, this.currentFrameStateTransform_), $r(this.currentFrameStateTransform_, a * i, 0), this.buffers_ && this.styleRenderer_.render(this.buffers_, e, () => { + this.helper.makeProjectionTransform(e, this.currentFrameStateTransform_), Qr(this.currentFrameStateTransform_, a * i, 0), this.buffers_ && this.styleRenderer_.render(this.buffers_, e, () => { this.applyUniforms_(this.buffers_.invertVerticesTransform, e), this.helper.applyHitDetectionUniform(t); }); while (++a < r); } forEachFeatureAtCoordinate(e, t, n, r, i) { -<<<<<<< Updated upstream if (z(this.hitDetectionEnabled_, "`forEachFeatureAtCoordinate` cannot be used on a WebGL layer if the hit detection logic has been disabled using the `disableHitDetection: true` option."), !this.styleRenderer_ || !this.hitDetectionEnabled_) return; let a = B(t.coordinateToPixelTransform, e.slice()), o = this.hitRenderTarget_.readPixel(a[0] / 2, a[1] / 2), s = Wp([ -======= - if (R(this.hitDetectionEnabled_, "`forEachFeatureAtCoordinate` cannot be used on a WebGL layer if the hit detection logic has been disabled using the `disableHitDetection: true` option."), !this.styleRenderer_ || !this.hitDetectionEnabled_) return; - let a = z(t.coordinateToPixelTransform, e.slice()), o = this.hitRenderTarget_.readPixel(a[0] / 2, a[1] / 2), s = mm([ -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes o[0] / 255, o[1] / 255, o[2] / 255, @@ -24387,59 +13680,25 @@ var th = { }), null), this.styleRenderer_ && this.styleRenderer_.dispose(), super.disposeInternal(); } renderDeclutter() {} -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, Nm = { BLUR: "blur", GRADIENT: "gradient", RADIUS: "radius" }, Pm = [ -======= -}, rh = { - BLUR: "blur", - GRADIENT: "gradient", - RADIUS: "radius" -}, ih = [ ->>>>>>> Stashed changes -======= -}, rh = { - BLUR: "blur", - GRADIENT: "gradient", - RADIUS: "radius" -}, ih = [ ->>>>>>> Stashed changes "#00f", "#0ff", "#0f0", "#ff0", "#f00" -<<<<<<< Updated upstream -<<<<<<< Updated upstream ], Fm = class extends cu { constructor(e) { e ||= {}; let t = Object.assign({}, e); delete t.gradient, delete t.radius, delete t.blur, delete t.weight, super(t), this.on, this.once, this.un, this.filter_ = e.filter ?? !0, this.styleVariables_ = e.variables || {}, this.gradient_ = null, this.addChangeListener(Nm.GRADIENT, this.handleGradientChanged_), this.setGradient(e.gradient ? e.gradient : Pm), this.setBlur(e.blur === void 0 ? 15 : e.blur), this.setRadius(e.radius === void 0 ? 8 : e.radius); -======= -], ah = class extends Al { - constructor(e) { - e ||= {}; - let t = Object.assign({}, e); - delete t.gradient, delete t.radius, delete t.blur, delete t.weight, super(t), this.on, this.once, this.un, this.filter_ = e.filter ?? !0, this.styleVariables_ = e.variables || {}, this.gradient_ = null, this.addChangeListener(rh.GRADIENT, this.handleGradientChanged_), this.setGradient(e.gradient ? e.gradient : ih), this.setBlur(e.blur === void 0 ? 15 : e.blur), this.setRadius(e.radius === void 0 ? 8 : e.radius); ->>>>>>> Stashed changes -======= -], ah = class extends Al { - constructor(e) { - e ||= {}; - let t = Object.assign({}, e); - delete t.gradient, delete t.radius, delete t.blur, delete t.weight, super(t), this.on, this.once, this.un, this.filter_ = e.filter ?? !0, this.styleVariables_ = e.variables || {}, this.gradient_ = null, this.addChangeListener(rh.GRADIENT, this.handleGradientChanged_), this.setGradient(e.gradient ? e.gradient : ih), this.setBlur(e.blur === void 0 ? 15 : e.blur), this.setRadius(e.radius === void 0 ? 8 : e.radius); ->>>>>>> Stashed changes let n = e.weight ? e.weight : "weight"; this.weight_ = n, this.setRenderOrder(null); } getBlur() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return this.get(Nm.BLUR); } getGradient() { @@ -24454,65 +13713,17 @@ var th = { setBlur(e) { let t = this.get(Nm.BLUR); if (this.set(Nm.BLUR, e), typeof e == "number" && typeof t == "number") { -======= - return this.get(rh.BLUR); - } - getGradient() { - return this.get(rh.GRADIENT); - } - getRadius() { - return this.get(rh.RADIUS); - } - handleGradientChanged_() { - this.gradient_ = oh(this.getGradient()); - } - setBlur(e) { - let t = this.get(rh.BLUR); - if (this.set(rh.BLUR, e), typeof e == "number" && typeof t == "number") { ->>>>>>> Stashed changes -======= - return this.get(rh.BLUR); - } - getGradient() { - return this.get(rh.GRADIENT); - } - getRadius() { - return this.get(rh.RADIUS); - } - handleGradientChanged_() { - this.gradient_ = oh(this.getGradient()); - } - setBlur(e) { - let t = this.get(rh.BLUR); - if (this.set(rh.BLUR, e), typeof e == "number" && typeof t == "number") { ->>>>>>> Stashed changes this.changed(); return; } this.clearRenderer(); } setGradient(e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream this.set(Nm.GRADIENT, e); } setRadius(e) { let t = this.get(Nm.RADIUS); if (this.set(Nm.RADIUS, e), typeof e == "number" && typeof t == "number") { -======= - this.set(rh.GRADIENT, e); - } - setRadius(e) { - let t = this.get(rh.RADIUS); - if (this.set(rh.RADIUS, e), typeof e == "number" && typeof t == "number") { ->>>>>>> Stashed changes -======= - this.set(rh.GRADIENT, e); - } - setRadius(e) { - let t = this.get(rh.RADIUS); - if (this.set(rh.RADIUS, e), typeof e == "number" && typeof t == "number") { ->>>>>>> Stashed changes this.changed(); return; } @@ -24525,15 +13736,7 @@ var th = { this.weight_ = e, this.changed(), this.clearRenderer(); } createRenderer() { -<<<<<<< Updated upstream -<<<<<<< Updated upstream let e = new Op(), t = op(this.styleVariables_), n = $s(this.styleVariables_), r = Q(t, this.filter_, Bs, n), i = Q(t, this.getRadius(), U), a = Q(t, this.getBlur(), U), o = {}; -======= - let e = new Qp(), t = Ap(this.styleVariables_), n = vs(this.styleVariables_), r = Z(t, this.filter_, as, n), i = Z(t, this.getRadius(), V), a = Z(t, this.getBlur(), V), o = {}; ->>>>>>> Stashed changes -======= - let e = new Qp(), t = Ap(this.styleVariables_), n = vs(this.styleVariables_), r = Z(t, this.filter_, as, n), i = Z(t, this.getRadius(), V), a = Z(t, this.getBlur(), V), o = {}; ->>>>>>> Stashed changes typeof this.getBlur() == "number" && (a = "a_blur", o.a_blur = () => this.getBlur(), e.addUniform("a_blur", "float")), typeof this.getRadius() == "number" && (i = "a_radius", o.a_radius = () => this.getRadius(), e.addUniform("a_radius", "float")); let s = {}, c = null; if (typeof this.weight_ == "string" || typeof this.weight_ == "function") { @@ -24545,32 +13748,16 @@ var th = { return n === void 0 ? 1 : Bt(n, 0, 1); } }, c = "a_prop_weight", e.addAttribute("a_prop_weight", "float"); - } else c = Z(t, [ + } else c = Q(t, [ "clamp", this.weight_, 0, 1 -<<<<<<< Updated upstream -<<<<<<< Updated upstream ], U); let l = `(${i} / max(1., ${a}))`; e.setSymbolSizeExpression(`vec2(${i} + ${a}) * 2.`).setSymbolColorExpression(`vec4(smoothstep(0., 1., (1. - length(coordsPx * 2. / v_quadSizePx)) * ${l}) * ${c})`).setStrokeColorExpression(`vec4(smoothstep(0., 1., (1. - length(currentRadiusPx * 2. / v_width)) * ${l}) * ${c})`).setStrokeWidthExpression(`(${i} + ${a}) * 2.`).setFillColorExpression(`vec4(${c})`), n.mCoordinate ? e.setFragmentDiscardExpression(`!${r}`) : e.setShapeDiscardExpression(`!${r}`), xp(e, t); let u = Cp(t), d = Sp(t, this.styleVariables_); return new Mm(this, { -======= - ], V); - let l = `(${i} / max(1., ${a}))`; - e.setSymbolSizeExpression(`vec2(${i} + ${a}) * 2.`).setSymbolColorExpression(`vec4(smoothstep(0., 1., (1. - length(coordsPx * 2. / v_quadSizePx)) * ${l}) * ${c})`).setStrokeColorExpression(`vec4(smoothstep(0., 1., (1. - length(currentRadiusPx * 2. / v_width)) * ${l}) * ${c})`).setStrokeWidthExpression(`(${i} + ${a}) * 2.`).setFillColorExpression(`vec4(${c})`), n.mCoordinate ? e.setFragmentDiscardExpression(`!${r}`) : e.setShapeDiscardExpression(`!${r}`), Gp(e, t); - let u = qp(t), d = Kp(t, this.styleVariables_); - return new nh(this, { ->>>>>>> Stashed changes -======= - ], V); - let l = `(${i} / max(1., ${a}))`; - e.setSymbolSizeExpression(`vec2(${i} + ${a}) * 2.`).setSymbolColorExpression(`vec4(smoothstep(0., 1., (1. - length(coordsPx * 2. / v_quadSizePx)) * ${l}) * ${c})`).setStrokeColorExpression(`vec4(smoothstep(0., 1., (1. - length(currentRadiusPx * 2. / v_width)) * ${l}) * ${c})`).setStrokeWidthExpression(`(${i} + ${a}) * 2.`).setFillColorExpression(`vec4(${c})`), n.mCoordinate ? e.setFragmentDiscardExpression(`!${r}`) : e.setShapeDiscardExpression(`!${r}`), Gp(e, t); - let u = qp(t), d = Kp(t, this.styleVariables_); - return new nh(this, { ->>>>>>> Stashed changes className: this.getClassName(), variables: this.styleVariables_, style: { @@ -24599,30 +13786,14 @@ var th = { } renderDeclutter() {} }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream function Im(e) { let t = ge(1, 256), n = t.createLinearGradient(0, 0, 1, 256), r = 1 / (e.length - 1); -======= -======= ->>>>>>> Stashed changes -function oh(e) { - let t = y(1, 256), n = t.createLinearGradient(0, 0, 1, 256), r = 1 / (e.length - 1); ->>>>>>> Stashed changes for (let t = 0, i = e.length; t < i; ++t) n.addColorStop(t * r, e[t]); return t.fillStyle = n, t.fillRect(0, 0, 1, 256), t.canvas; } //#endregion //#region node_modules/ol-ext/util/input/Base.js -<<<<<<< Updated upstream -<<<<<<< Updated upstream var Lm = class extends A { -======= -var sh = class extends we { ->>>>>>> Stashed changes -======= -var sh = class extends we { ->>>>>>> Stashed changes constructor(e) { e ||= {}, super(); var t = this.input = e.input; @@ -24657,15 +13828,7 @@ var sh = class extends we { getInputElement() { return this.input; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, Rm = class extends Lm { -======= -}, ch = class extends sh { ->>>>>>> Stashed changes -======= -}, ch = class extends sh { ->>>>>>> Stashed changes constructor(e) { e ||= {}, super(e); var t = this.element = document.createElement("label"); @@ -24680,32 +13843,16 @@ var sh = class extends we { isChecked() { return this.input.checked; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, zm = class extends Rm { constructor(e) { e ||= {}, super(e), this.element.className = ("ol-ext-toggle-switch " + (e.className || "")).trim(); } }, Bm = class extends Rm { -======= -}, lh = class extends ch { - constructor(e) { - e ||= {}, super(e), this.element.className = ("ol-ext-toggle-switch " + (e.className || "")).trim(); - } -}, uh = class extends ch { ->>>>>>> Stashed changes -======= -}, lh = class extends ch { - constructor(e) { - e ||= {}, super(e), this.element.className = ("ol-ext-toggle-switch " + (e.className || "")).trim(); - } -}, uh = class extends ch { ->>>>>>> Stashed changes constructor(e) { e ||= {}, super(e), this.element.className = ("ol-ext-check ol-ext-radio " + (e.className || "")).trim(); } -}, Q = {}; -Q.create = function(e, t) { +}, $ = {}; +$.create = function(e, t) { t ||= {}; var n; if (e === "TEXT") n = document.createTextNode(t.html || ""), t.parent && t.parent.appendChild(n); @@ -24723,21 +13870,21 @@ Q.create = function(e, t) { t.parent && t.parent.appendChild(n); break; case "options": - if (/select/i.test(e)) for (var i in t.options) Q.create("OPTION", { + if (/select/i.test(e)) for (var i in t.options) $.create("OPTION", { html: i, value: t.options[i], parent: n }); break; case "style": - Q.setStyle(n, t.style); + $.setStyle(n, t.style); break; case "change": case "click": - Q.addListener(n, r, t[r]); + $.addListener(n, r, t[r]); break; case "on": - for (var a in t.on) Q.addListener(n, a, t.on[a]); + for (var a in t.on) $.addListener(n, a, t.on[a]); break; case "checked": n.checked = !!t.checked; @@ -24745,66 +13892,44 @@ Q.create = function(e, t) { default: n.setAttribute(r, t[r]); } return n; -}, Q.createSwitch = function(e) { - var t = Q.create("INPUT", { +}, $.createSwitch = function(e) { + var t = $.create("INPUT", { type: "checkbox", on: e.on, click: e.click, change: e.change, parent: e.parent }); -<<<<<<< Updated upstream -<<<<<<< Updated upstream return new zm(Object.assign({ input: t }, e || {})), t; }, $.createCheck = function(e) { var t = $.create("INPUT", { -======= - return new lh(Object.assign({ input: t }, e || {})), t; -}, Q.createCheck = function(e) { - var t = Q.create("INPUT", { ->>>>>>> Stashed changes -======= - return new lh(Object.assign({ input: t }, e || {})), t; -}, Q.createCheck = function(e) { - var t = Q.create("INPUT", { ->>>>>>> Stashed changes name: e.name, type: e.type === "radio" ? "radio" : "checkbox", on: e.on, parent: e.parent }), n = Object.assign({ input: t }, e || {}); -<<<<<<< Updated upstream -<<<<<<< Updated upstream return e.type === "radio" ? new Bm(n) : new Rm(n), t; }, $.setHTML = function(e, t) { -======= - return e.type === "radio" ? new uh(n) : new ch(n), t; -}, Q.setHTML = function(e, t) { ->>>>>>> Stashed changes -======= - return e.type === "radio" ? new uh(n) : new ch(n), t; -}, Q.setHTML = function(e, t) { ->>>>>>> Stashed changes t instanceof Element ? e.appendChild(t) : t !== void 0 && (e.innerHTML = t); -}, Q.appendText = function(e, t) { +}, $.appendText = function(e, t) { e.appendChild(document.createTextNode(t || "")); -}, Q.addListener = function(e, t, n, r) { +}, $.addListener = function(e, t, n, r) { typeof t == "string" && (t = t.split(" ")), t.forEach(function(t) { e.addEventListener(t, n, r); }); -}, Q.removeListener = function(e, t, n) { +}, $.removeListener = function(e, t, n) { typeof t == "string" && (t = t.split(" ")), t.forEach(function(t) { e.removeEventListener(t, n); }); -}, Q.show = function(e) { +}, $.show = function(e) { e.style.display = ""; -}, Q.hide = function(e) { +}, $.hide = function(e) { e.style.display = "none"; -}, Q.hidden = function(e) { - return Q.getStyle(e, "display") === "none"; -}, Q.toggle = function(e) { +}, $.hidden = function(e) { + return $.getStyle(e, "display") === "none"; +}, $.toggle = function(e) { e.style.display = e.style.display === "none" ? "" : "none"; -}, Q.setStyle = function(e, t) { +}, $.setStyle = function(e, t) { for (var n in t) switch (n) { case "top": case "left": @@ -24818,7 +13943,7 @@ Q.create = function(e, t) { break; default: e.style[n] = t[n]; } -}, Q.getStyle = function(e, t) { +}, $.getStyle = function(e, t) { var n, r = (e.ownerDocument || document).defaultView; if (r && r.getComputedStyle) t = t.replace(/([A-Z])/g, "-$1").toLowerCase(), n = r.getComputedStyle(e, null).getPropertyValue(t); else if (e.currentStyle && (t = t.replace(/-(\w)/g, function(e, t) { @@ -24828,11 +13953,11 @@ Q.create = function(e, t) { return e.runtimeStyle.left = e.currentStyle.left, e.style.left = t || 0, t = e.style.pixelLeft + "px", e.style.left = n, e.runtimeStyle.left = r, t; })(n); return /px$/.test(n) ? parseInt(n) : n; -}, Q.outerHeight = function(e) { - return e.offsetHeight + Q.getStyle(e, "marginBottom"); -}, Q.outerWidth = function(e) { - return e.offsetWidth + Q.getStyle(e, "marginLeft"); -}, Q.offsetRect = function(e) { +}, $.outerHeight = function(e) { + return e.offsetHeight + $.getStyle(e, "marginBottom"); +}, $.outerWidth = function(e) { + return e.offsetWidth + $.getStyle(e, "marginLeft"); +}, $.offsetRect = function(e) { var t = e.getBoundingClientRect(); return { top: t.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0), @@ -24840,20 +13965,20 @@ Q.create = function(e, t) { height: t.height || t.bottom - t.top, width: t.width || t.right - t.left }; -}, Q.getFixedOffset = function(e) { +}, $.getFixedOffset = function(e) { var t = { left: 0, top: 0 }, n = function(e) { if (!e) return t; - if (Q.getStyle(e, "position") === "absolute" && Q.getStyle(e, "transform") !== "none") { + if ($.getStyle(e, "position") === "absolute" && $.getStyle(e, "transform") !== "none") { var r = e.getBoundingClientRect(); return t.left += r.left, t.top += r.top, t; } return n(e.offsetParent); }; return n(e.offsetParent); -}, Q.positionRect = function(e, t) { +}, $.positionRect = function(e, t) { var n = 0, r = 0, i = function(a) { if (a) return n += a.offsetLeft, r += a.offsetTop, i(a.offsetParent); var o = { @@ -24863,7 +13988,7 @@ Q.create = function(e, t) { return t && (o.top -= window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0, o.left -= window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0), o.bottom = o.top + e.offsetHeight, o.right = o.top + e.offsetWidth, o; }; return i(e.offsetParent); -}, Q.scrollDiv = function(e, t) { +}, $.scrollDiv = function(e, t) { t ||= {}; var n = !1, r = 0, i, a = 0, o = typeof t.onmove == "function" ? t.onmove : function() {}, s = t.vertical ? "screenY" : "screenX", c = t.vertical ? "scrollTop" : "scrollLeft", l = !1, u, d, f = 0, p = function() { y && (f++, setTimeout(m)); @@ -24874,7 +13999,7 @@ Q.create = function(e, t) { u = t / n, y.style.height = u * 100 + "%", y.style.top = e.scrollTop / n * 100 + "%", v.style.height = t + "px", t > n - .5 ? v.classList.add("ol-100pc") : v.classList.remove("ol-100pc"); } }, h = function(t) { - t.target.classList.contains("ol-noscroll") || (l = !1, n = t[s], a = /* @__PURE__ */ new Date(), e.classList.add("ol-move"), t.preventDefault(), window.addEventListener("pointermove", g), Q.addListener(window, ["pointerup", "pointercancel"], x)); + t.target.classList.contains("ol-noscroll") || (l = !1, n = t[s], a = /* @__PURE__ */ new Date(), e.classList.add("ol-move"), t.preventDefault(), window.addEventListener("pointermove", g), $.addListener(window, ["pointerup", "pointercancel"], x)); }, g = function(t) { if (n !== !1) { var f = (d ? -1 / u : 1) * (n - t[s]); @@ -24890,18 +14015,18 @@ Q.create = function(e, t) { }, v, y; if (t.vertical && t.minibar) { var b = function(n) { - e.removeEventListener("pointermove", b), e.parentNode.classList.add("ol-miniscroll"), y = Q.create("DIV"), v = Q.create("DIV", { + e.removeEventListener("pointermove", b), e.parentNode.classList.add("ol-miniscroll"), y = $.create("DIV"), v = $.create("DIV", { className: "ol-scroll", html: y }), e.parentNode.insertBefore(v, e), y.addEventListener("pointerdown", function(e) { d = !0, h(e); - }), t.mousewheel && (Q.addListener(v, [ + }), t.mousewheel && ($.addListener(v, [ "mousewheel", "DOMMouseScroll", "onmousewheel" ], function(e) { S(e); - }), Q.addListener(y, [ + }), $.addListener(y, [ "mousewheel", "DOMMouseScroll", "onmousewheel" @@ -24913,7 +14038,7 @@ Q.create = function(e, t) { p(); }); } - e.style["touch-action"] = "none", e.style.overflow = "hidden", e.classList.add("ol-scrolldiv"), Q.addListener(e, ["pointerdown"], function(e) { + e.style["touch-action"] = "none", e.style.overflow = "hidden", e.classList.add("ol-scrolldiv"), $.addListener(e, ["pointerdown"], function(e) { d = !1, h(e); }), e.addEventListener("click", function(t) { e.classList.contains("ol-move") && (t.preventDefault(), t.stopPropagation()); @@ -24921,17 +14046,17 @@ Q.create = function(e, t) { var x = function(i) { a = /* @__PURE__ */ new Date() - a, a > 100 || d ? r = 0 : a > 0 && (r = ((r || 0) + (n - i[s]) / a) / 2), _(t.animate === !1 ? 0 : r * 200), n = !1, r = 0, a = 0, e.classList.contains("ol-move") ? e.classList.remove("ol-hasClick") : (e.classList.add("ol-hasClick"), setTimeout(function() { e.classList.remove("ol-hasClick"); - }, 500)), d = !1, window.removeEventListener("pointermove", g), Q.removeListener(window, ["pointerup", "pointercancel"], x); + }, 500)), d = !1, window.removeEventListener("pointermove", g), $.removeListener(window, ["pointerup", "pointercancel"], x); }, S = function(t) { var n = Math.max(-1, Math.min(1, t.wheelDelta || -t.detail)); return e.classList.add("ol-move"), e[c] -= n * 30, e.classList.remove("ol-move"), !1; }; - return t.mousewheel && Q.addListener(e, [ + return t.mousewheel && $.addListener(e, [ "mousewheel", "DOMMouseScroll", "onmousewheel" ], S), { refresh: p }; -}, Q.dispatchEvent = function(e, t) { +}, $.dispatchEvent = function(e, t) { var n; try { n = new CustomEvent(e); @@ -24939,43 +14064,25 @@ Q.create = function(e, t) { n = document.createEvent("CustomEvent"), n.initCustomEvent(e, !0, !0, {}); } t.dispatchEvent(n); -<<<<<<< Updated upstream -<<<<<<< Updated upstream }, $.setCursor = function(e, t) { e instanceof hu && (e = e.getTargetElement()), !("ontouchstart" in window) && e instanceof Element && (e.style.cursor = t); }; //#endregion //#region node_modules/ol-ext/control/LayerSwitcher.js var Vm = class extends Oe { -======= -}, Q.setCursor = function(e, t) { - e instanceof Rl && (e = e.getTargetElement()), !("ontouchstart" in window) && e instanceof Element && (e.style.cursor = t); -}; -//#endregion -//#region node_modules/ol-ext/control/LayerSwitcher.js -var dh = class extends Te { ->>>>>>> Stashed changes -======= -}, Q.setCursor = function(e, t) { - e instanceof Rl && (e = e.getTargetElement()), !("ontouchstart" in window) && e instanceof Element && (e.style.cursor = t); -}; -//#endregion -//#region node_modules/ol-ext/control/LayerSwitcher.js -var dh = class extends Te { ->>>>>>> Stashed changes constructor(e) { e ||= {}; - var t = Q.create("DIV", { className: e.switcherClass || "ol-layerswitcher" }); + var t = $.create("DIV", { className: e.switcherClass || "ol-layerswitcher" }); super({ element: t, target: e.target }); var n = this; - this.dcount = 0, this.show_progress = e.show_progress, this.oninfo = typeof e.oninfo == "function" ? e.oninfo : null, this.onextent = typeof e.onextent == "function" ? e.onextent : null, this.hasextent = e.extent || e.onextent, this.hastrash = e.trash, this.reordering = e.reordering !== !1, this._layers = [], this._layerGroup = e.layerGroup && e.layerGroup.getLayers ? e.layerGroup : null, this.onchangeCheck = typeof e.onchangeCheck == "function" ? e.onchangeCheck : null, typeof e.displayInLayerSwitcher == "function" && (this.displayInLayerSwitcher = e.displayInLayerSwitcher), e.target || (t.classList.add("ol-unselectable"), t.classList.add("ol-control"), t.classList.add(e.collapsed === !1 ? "ol-forceopen" : "ol-collapsed"), e.counter && t.classList.add("ol-counter"), this.counter = Q.create("SPAN", { + this.dcount = 0, this.show_progress = e.show_progress, this.oninfo = typeof e.oninfo == "function" ? e.oninfo : null, this.onextent = typeof e.onextent == "function" ? e.onextent : null, this.hasextent = e.extent || e.onextent, this.hastrash = e.trash, this.reordering = e.reordering !== !1, this._layers = [], this._layerGroup = e.layerGroup && e.layerGroup.getLayers ? e.layerGroup : null, this.onchangeCheck = typeof e.onchangeCheck == "function" ? e.onchangeCheck : null, typeof e.displayInLayerSwitcher == "function" && (this.displayInLayerSwitcher = e.displayInLayerSwitcher), e.target || (t.classList.add("ol-unselectable"), t.classList.add("ol-control"), t.classList.add(e.collapsed === !1 ? "ol-forceopen" : "ol-collapsed"), e.counter && t.classList.add("ol-counter"), this.counter = $.create("SPAN", { class: "ol-counter", text: 0, parent: t - }), this.button = Q.create("BUTTON", { + }), this.button = $.create("BUTTON", { type: "button", parent: t }), this.button.addEventListener("touchstart", function(e) { @@ -24998,29 +14105,29 @@ var dh = class extends Te { type: "toggle", collapsed: !1 }); - })), e.minibar && (e.noScroll = !0), e.noScroll || (this.topv = Q.create("DIV", { + })), e.minibar && (e.noScroll = !0), e.noScroll || (this.topv = $.create("DIV", { className: "ol-switchertopdiv", parent: t, click: function() { n.overflow("+50%"); } - }), this.botv = Q.create("DIV", { + }), this.botv = $.create("DIV", { className: "ol-switcherbottomdiv", parent: t, click: function() { n.overflow("-50%"); } - })), this._noScroll = e.noScroll), this.panel_ = Q.create("UL", { className: "panel" }), this.panelContainer_ = Q.create("DIV", { + })), this._noScroll = e.noScroll), this.panel_ = $.create("UL", { className: "panel" }), this.panelContainer_ = $.create("DIV", { className: "panel-container", html: this.panel_, parent: t - }), !e.target && !e.noScroll && Q.addListener(this.panel_, "mousewheel DOMMouseScroll onmousewheel", function(e) { + }), !e.target && !e.noScroll && $.addListener(this.panel_, "mousewheel DOMMouseScroll onmousewheel", function(e) { n.overflow(Math.max(-1, Math.min(1, e.wheelDelta || -e.detail))) && (e.stopPropagation(), e.preventDefault()); - }), this.header_ = Q.create("LI", { + }), this.header_ = $.create("LI", { className: "ol-header", parent: this.panel_ }), this.set("drawDelay", e.drawDelay || 0), this.set("selection", e.selection), e.minibar && setTimeout(function() { - var e = Q.scrollDiv(this.panelContainer_, { + var e = $.scrollDiv(this.panelContainer_, { mousewheel: !0, vertical: !0, minibar: !0 @@ -25062,18 +14169,18 @@ var dh = class extends Te { return this.element.classList.contains("ol-forceopen"); } setHeader(e) { - Q.setHTML(this.header_, e); + $.setHTML(this.header_, e); } overflow(e) { if (this.button && !this._noScroll) { - if (Q.hidden(this.panel_)) { - Q.setStyle(this.element, { height: "auto" }); + if ($.hidden(this.panel_)) { + $.setStyle(this.element, { height: "auto" }); return; } - var t = Q.outerHeight(this.element), n = Q.outerHeight(this.panel_), r = this.button.offsetTop + Q.outerHeight(this.button), i = this.panel_.offsetTop - r; + var t = $.outerHeight(this.element), n = $.outerHeight(this.panel_), r = this.button.offsetTop + $.outerHeight(this.button), i = this.panel_.offsetTop - r; if (n > t - r) { - Q.setStyle(this.element, { height: "100%" }); - var a = this.panel_.querySelectorAll("li.ol-visible .li-content")[0], o = a ? 2 * Q.getStyle(a, "height") : 0; + $.setStyle(this.element, { height: "100%" }); + var a = this.panel_.querySelectorAll("li.ol-visible .li-content")[0], o = a ? 2 * $.getStyle(a, "height") : 0; switch (e) { case 1: i += o; @@ -25086,9 +14193,9 @@ var dh = class extends Te { break; case "-50%": i -= Math.round(t / 2); } - return i + n <= t - 3 * r / 2 ? (i = t - 3 * r / 2 - n, Q.hide(this.botv)) : Q.show(this.botv), i >= 0 ? (i = 0, Q.hide(this.topv)) : Q.show(this.topv), Q.setStyle(this.panel_, { top: i + "px" }), !0; + return i + n <= t - 3 * r / 2 ? (i = t - 3 * r / 2 - n, $.hide(this.botv)) : $.show(this.botv), i >= 0 ? (i = 0, $.hide(this.topv)) : $.show(this.topv), $.setStyle(this.panel_, { top: i + "px" }), !0; } - return Q.setStyle(this.element, { height: "auto" }), Q.setStyle(this.panel_, { top: 0 }), Q.hide(this.botv), Q.hide(this.topv), !1; + return $.setStyle(this.element, { height: "auto" }), $.setStyle(this.panel_, { top: 0 }), $.hide(this.botv), $.hide(this.topv), !1; } return !1; } @@ -25193,10 +14300,10 @@ var dh = class extends Te { } n.parentNode.querySelectorAll("li").forEach(function(e) { e.classList.remove("dropover"), e.classList.remove("dropover-after"), e.classList.remove("dropover-before"); - }), n.classList.remove("drag"), n.parentNode.classList.remove("drag"), t.element.classList.remove("drag"), c && c.remove(), Q.removeListener(document, "mousemove touchmove", f), Q.removeListener(document, "mouseup touchend touchcancel", d); + }), n.classList.remove("drag"), n.parentNode.classList.remove("drag"), t.element.classList.remove("drag"), c && c.remove(), $.removeListener(document, "mousemove touchmove", f), $.removeListener(document, "mouseup touchend touchcancel", d); } function f(e) { - if (a = e.pageY || e.touches && e.touches.length && e.touches[0].pageY || e.changedTouches && e.changedTouches.length && e.changedTouches[0].pageY, r && Math.abs(o - a) > 2 && (r = !1, n.classList.add("drag"), l = t._getLayerForLI(n), s = !1, u = t._getLayerForLI(n.parentNode.parentNode), c = Q.create("LI", { + if (a = e.pageY || e.touches && e.touches.length && e.touches[0].pageY || e.changedTouches && e.changedTouches.length && e.changedTouches[0].pageY, r && Math.abs(o - a) > 2 && (r = !1, n.classList.add("drag"), l = t._getLayerForLI(n), s = !1, u = t._getLayerForLI(n.parentNode.parentNode), c = $.create("LI", { className: "ol-dragover", html: n.innerHTML, style: { @@ -25204,8 +14311,8 @@ var dh = class extends Te { "z-index": 1e4, left: n.offsetLeft, opacity: .5, - width: Q.outerWidth(n), - height: Q.getStyle(n, "height") + width: $.outerWidth(n), + height: $.getStyle(n, "height") }, parent: i }), t.element.classList.add("drag"), t.dispatchEvent({ @@ -25213,32 +14320,32 @@ var dh = class extends Te { layer: l, group: u })), !r) { - e.preventDefault(), e.stopPropagation(), Q.setStyle(c, { top: a - Q.offsetRect(i).top + i.scrollTop + 5 }); + e.preventDefault(), e.stopPropagation(), $.setStyle(c, { top: a - $.offsetRect(i).top + i.scrollTop + 5 }); var d; if (!e.touches) d = e.target, e.target.shadowRoot && (d = e.composedPath()[0]); else for (d = document.elementFromPoint(e.touches[0].clientX, e.touches[0].clientY); d.shadowRoot;) d = d.shadowRoot.elementFromPoint(e.touches[0].clientX, e.touches[0].clientY); for (d.classList.contains("ol-switcherbottomdiv") ? t.overflow(-1) : d.classList.contains("ol-switchertopdiv") && t.overflow(1); d && d.tagName !== "LI";) d = d.parentNode; (!d || !d.classList.contains("dropover")) && n.parentNode.querySelectorAll("li").forEach(function(e) { e.classList.remove("dropover"), e.classList.remove("dropover-after"), e.classList.remove("dropover-before"); - }), d && d.parentNode.classList.contains("drag") && d !== n ? (s = t._getLayerForLI(d), s && !s.get("allwaysOnTop") == !l.get("allwaysOnTop") ? (d.classList.add("dropover"), d.classList.add(n.offsetTop < d.offsetTop ? "dropover-after" : "dropover-before")) : s = !1, Q.show(c)) : (s = !1, d === n ? Q.hide(c) : Q.show(c)), s ? c.classList.remove("forbidden") : c.classList.add("forbidden"); + }), d && d.parentNode.classList.contains("drag") && d !== n ? (s = t._getLayerForLI(d), s && !s.get("allwaysOnTop") == !l.get("allwaysOnTop") ? (d.classList.add("dropover"), d.classList.add(n.offsetTop < d.offsetTop ? "dropover-after" : "dropover-before")) : s = !1, $.show(c)) : (s = !1, d === n ? $.hide(c) : $.show(c)), s ? c.classList.remove("forbidden") : c.classList.add("forbidden"); } } - Q.addListener(document, "mousemove touchmove", f), Q.addListener(document, "mouseup touchend touchcancel", d); + $.addListener(document, "mousemove touchmove", f), $.addListener(document, "mouseup touchend touchcancel", d); } dragOpacity_(e) { e.stopPropagation(), e.preventDefault(); var t = this, n = e.target, r = this._getLayerForLI(n.parentNode.parentNode.parentNode); if (!r) return; - var i = e.pageX || e.touches && e.touches.length && e.touches[0].pageX || e.changedTouches && e.changedTouches.length && e.changedTouches[0].pageX, a = Q.getStyle(n, "left") - i; + var i = e.pageX || e.touches && e.touches.length && e.touches[0].pageX || e.changedTouches && e.changedTouches.length && e.changedTouches[0].pageX, a = $.getStyle(n, "left") - i; t.dragging_ = !0; function o() { - Q.removeListener(document, "mouseup touchend touchcancel", o), Q.removeListener(document, "mousemove touchmove", s), t.dragging_ = !1; + $.removeListener(document, "mouseup touchend touchcancel", o), $.removeListener(document, "mousemove touchmove", s), t.dragging_ = !1; } function s(e) { - var t = (a + (e.pageX || e.touches && e.touches.length && e.touches[0].pageX || e.changedTouches && e.changedTouches.length && e.changedTouches[0].pageX)) / Q.getStyle(n.parentNode, "width"), i = Math.max(0, Math.min(1, t)); - Q.setStyle(n, { left: i * 100 + "%" }), n.parentNode.nextElementSibling.innerHTML = Math.round(i * 100), r.setOpacity(i); + var t = (a + (e.pageX || e.touches && e.touches.length && e.touches[0].pageX || e.changedTouches && e.changedTouches.length && e.changedTouches[0].pageX)) / $.getStyle(n.parentNode, "width"), i = Math.max(0, Math.min(1, t)); + $.setStyle(n, { left: i * 100 + "%" }), n.parentNode.nextElementSibling.innerHTML = Math.round(i * 100), r.setOpacity(i); } - Q.addListener(document, "mouseup touchend touchcancel", o), Q.addListener(document, "mousemove touchmove", s); + $.addListener(document, "mouseup touchend touchcancel", o), $.addListener(document, "mousemove touchmove", s); } drawList(e, t) { var n = this, r = t.getArray(), i = function(e) { @@ -25272,18 +14379,18 @@ var dh = class extends Te { this._setLayerForLI(null, c); return; } - var u = Q.create("LI", { + var u = $.create("LI", { className: (c.getVisible() ? "ol-visible " : " ") + (c.get("baseLayer") ? "baselayer" : ""), parent: e }); this._setLayerForLI(u, c), this._selectedLayer === c && u.classList.add("ol-layer-select"); - var d = Q.create("DIV", { + var d = $.create("DIV", { className: "ol-layerswitcher-buttons", parent: u - }), f = Q.create("DIV", { + }), f = $.create("DIV", { className: "li-content", parent: u - }), p = Q.create("INPUT", { + }), p = $.create("INPUT", { type: c.get("baseLayer") ? "radio" : "checkbox", className: "ol-visibility", checked: c.getVisible(), @@ -25334,7 +14441,7 @@ var dh = class extends Te { parent: f }); c === n._focus && (p.focus(), n.overflow()); - var m = Q.create("LABEL", { + var m = $.create("LABEL", { title: c.get("title") || c.get("name"), click: i, style: { userSelect: "none" }, @@ -25342,13 +14449,13 @@ var dh = class extends Te { }); if (m.addEventListener("selectstart", function() { return !1; - }), Q.create("SPAN", { + }), $.create("SPAN", { html: c.get("title") || c.get("name"), click: function(e) { this.get("selection") && (e.stopPropagation(), this.selectLayer(c)); }.bind(this), parent: m - }), this.reordering && (l < r.length - 1 && (c.get("allwaysOnTop") || !r[l + 1].get("allwaysOnTop")) || l > 0 && (!c.get("allwaysOnTop") || r[l - 1].get("allwaysOnTop"))) && Q.create("DIV", { + }), this.reordering && (l < r.length - 1 && (c.get("allwaysOnTop") || !r[l + 1].get("allwaysOnTop")) || l > 0 && (!c.get("allwaysOnTop") || r[l - 1].get("allwaysOnTop"))) && $.create("DIV", { className: "layerup ol-noscroll", title: this.tip.up, on: { "mousedown touchstart": function(e) { @@ -25359,7 +14466,7 @@ var dh = class extends Te { var h = 0; c.getLayers().forEach(function(e) { n.displayInLayerSwitcher(e) && h++; - }), h && Q.create("DIV", { + }), h && $.create("DIV", { className: c.get("openInLayerSwitcher") ? "collapse-layers" : "expend-layers", title: this.tip.plus, click: function() { @@ -25369,66 +14476,56 @@ var dh = class extends Te { parent: d }); } - if (this.oninfo && Q.create("DIV", { + if (this.oninfo && $.create("DIV", { className: "layerInfo", title: this.tip.info, click: a, parent: d - }), this.hastrash && !c.get("noSwitcherDelete") && Q.create("DIV", { + }), this.hastrash && !c.get("noSwitcherDelete") && $.create("DIV", { className: "layerTrash", title: this.tip.trash, click: s, parent: d }), this.hasextent && r[l].getExtent()) { var g = r[l].getExtent(); - g.length == 4 && g[0] < g[2] && g[1] < g[3] && Q.create("DIV", { + g.length == 4 && g[0] < g[2] && g[1] < g[3] && $.create("DIV", { className: "layerExtent", title: this.tip.extent, click: o, parent: d }); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream if (this.show_progress && c instanceof Co) { var _ = $.create("DIV", { -======= - if (this.show_progress && c instanceof Lu) { - var _ = Q.create("DIV", { ->>>>>>> Stashed changes -======= - if (this.show_progress && c instanceof Lu) { - var _ = Q.create("DIV", { ->>>>>>> Stashed changes className: "layerswitcher-progress", parent: f }); - this.setprogress_(c), c.layerswitcher_progress = Q.create("DIV", { parent: _ }); + this.setprogress_(c), c.layerswitcher_progress = $.create("DIV", { parent: _ }); } - var v = Q.create("DIV", { + var v = $.create("DIV", { className: "layerswitcher-opacity", click: function(e) { if (e.target === this) { e.stopPropagation(), e.preventDefault(); - var t = Math.max(0, Math.min(1, e.offsetX / Q.getStyle(this, "width"))); + var t = Math.max(0, Math.min(1, e.offsetX / $.getStyle(this, "width"))); n._getLayerForLI(this.parentNode.parentNode).setOpacity(t), this.parentNode.querySelectorAll(".layerswitcher-opacity-label")[0].innerHTML = Math.round(t * 100); } }, parent: f }); - if (Q.create("DIV", { + if ($.create("DIV", { className: "layerswitcher-opacity-cursor ol-noscroll", style: { left: c.getOpacity() * 100 + "%" }, on: { "mousedown touchstart": function(e) { n.dragOpacity_(e); } }, parent: v - }), Q.create("DIV", { + }), $.create("DIV", { className: "layerswitcher-opacity-label", html: Math.round(c.getOpacity() * 100), parent: f }), c.getLayers && (u.classList.add("ol-layer-group"), c.get("openInLayerSwitcher") === !0)) { - var y = Q.create("UL", { parent: u }); + var y = $.create("UL", { parent: u }); this.drawList(y, c.getLayers()); } u.classList.add(this.getLayerClass(c)), this.dispatchEvent({ @@ -25441,15 +14538,7 @@ var dh = class extends Te { this.viewChange(), e === this.panel_ && (this.overflow(""), this._focus = null); } getLayerClass(e) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream return e ? e.getLayers ? "ol-layer-group" : e instanceof rf ? "ol-layer-vector" : e instanceof cf ? "ol-layer-vectortile" : e instanceof Co ? "ol-layer-tile" : e instanceof df ? "ol-layer-image" : e instanceof Fm ? "ol-layer-heatmap" : e.getFeatures ? "ol-layer-vectorimage" : "unknown" : "none"; -======= - return e ? e.getLayers ? "ol-layer-group" : e instanceof Of ? "ol-layer-vector" : e instanceof Mf ? "ol-layer-vectortile" : e instanceof Lu ? "ol-layer-tile" : e instanceof Ff ? "ol-layer-image" : e instanceof ah ? "ol-layer-heatmap" : e.getFeatures ? "ol-layer-vectorimage" : "unknown" : "none"; ->>>>>>> Stashed changes -======= - return e ? e.getLayers ? "ol-layer-group" : e instanceof Of ? "ol-layer-vector" : e instanceof Mf ? "ol-layer-vectortile" : e instanceof Lu ? "ol-layer-tile" : e instanceof Ff ? "ol-layer-image" : e instanceof ah ? "ol-layer-heatmap" : e.getFeatures ? "ol-layer-vectorimage" : "unknown" : "none"; ->>>>>>> Stashed changes } selectLayer(e, t) { if (!e) { @@ -25467,7 +14556,7 @@ var dh = class extends Te { setprogress_(e) { if (!e.layerswitcher_progress) { var t = 0, n = 0, r = function() { - n === t ? (n = t = 0, Q.setStyle(e.layerswitcher_progress, { width: 0 })) : Q.setStyle(e.layerswitcher_progress, { width: (t / n * 100).toFixed(1) + "%" }); + n === t ? (n = t = 0, $.setStyle(e.layerswitcher_progress, { width: 0 })) : $.setStyle(e.layerswitcher_progress, { width: (t / n * 100).toFixed(1) + "%" }); }; e.getSource().on("tileloadstart", function() { n++, r(); @@ -25479,15 +14568,7 @@ var dh = class extends Te { } } }; -<<<<<<< Updated upstream -<<<<<<< Updated upstream Vm.prototype.tip = { -======= -dh.prototype.tip = { ->>>>>>> Stashed changes -======= -dh.prototype.tip = { ->>>>>>> Stashed changes up: "up/down", down: "down", info: "informations...", @@ -25496,7 +14577,6 @@ dh.prototype.tip = { plus: "expand/shrink" }; //#endregion -<<<<<<< Updated upstream //#region src/api/tileserver.js async function Hm() { let e = await fetch("/tileserver/session_id"); @@ -25952,13 +15032,6 @@ var ch = function(e) { } } }, dh = class extends Oe { -======= -//#region node_modules/ol-ext/control/Button.js -var fh = class extends Te { -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes constructor(e) { e ||= {}; var t = document.createElement("div"); @@ -25972,7 +15045,7 @@ var fh = class extends Te { }), t.appendChild(r), !e.title && r.firstElementChild && (r.title = r.firstElementChild.title), e.title && this.set("title", e.title), e.title && this.set("title", e.title), e.name && this.set("name", e.name), e.attributes || {}) this.button_.setAttribute(i, e.attributes[i]); } setVisible(e) { - e ? Q.show(this.element) : Q.hide(this.element); + e ? $.show(this.element) : $.hide(this.element); } getDisable() { var e = this.element.querySelector("button"); @@ -25985,12 +15058,12 @@ var fh = class extends Te { this.button_.setAttribute("title", e); } setHtml(e) { - Q.setHTML(this.button_, e); + $.setHTML(this.button_, e); } getButtonElement() { return this.button_; } -}, ph = class extends fh { +}, fh = class extends dh { constructor(e) { e ||= {}, e.toggleFn && (e.onToggle = e.toggleFn), e.handleClick = function() { t.toggle(), e.onToggle && e.onToggle.call(t, t.getActive()); @@ -26046,8 +15119,6 @@ var fh = class extends Te { } }; //#endregion -<<<<<<< Updated upstream -<<<<<<< Updated upstream //#region src/utils/colours.js function ph(e) { let t = e.replace("#", ""); @@ -27304,39 +16375,12 @@ function Hh({ viewerApp: e, panel: t, toggle: n, closeButton: r, tabs: i, tabPan //#region src/main.js function Uh(e, t, n) { return new Wu({ -======= -======= ->>>>>>> Stashed changes -//#region src/main.js -async function mh() { - let e = await fetch("/tileserver/session_id"); - if (!e.ok) throw Error("Failed to create TileServer session."); - return (await e.json()).session_id; -} -async function hh(e) { - let t = new FormData(); - if (t.append("slide_path", e), !(await fetch("/tileserver/slide", { - method: "PUT", - body: t - })).ok) throw Error(`Failed to load slide: ${e}`); - let n = await fetch("/tileserver/slide"); - if (!n.ok) throw Error("Failed to retrieve slide metadata."); - return n.json(); -} -function gh(e, t, n) { - return new dd({ -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes url: `/tileserver/layer/slide/${e}/zoomify/{TileGroup}/{z}-{x}-{y}@1x.jpg?v=${n}`, size: t.slide_dimensions, crossOrigin: "anonymous", zDirection: -1 }); } -<<<<<<< Updated upstream -<<<<<<< Updated upstream var Wh = document.getElementById("map"), Gh = document.querySelector(".viewer-app"), Kh = document.getElementById("viewer-panel"), qh = document.getElementById("viewer-panel-toggle"), Jh = document.getElementById("viewer-files"), Yh = document.getElementById("layer-editor"), Xh = document.getElementById("layer-editor-toggle"), Zh = document.getElementById("layer-editor-list"), Qh = document.getElementById("settings-panel"), $h = document.getElementById("settings-toggle"), eg = document.getElementById("settings-close"), tg = document.querySelectorAll(".settings-tab"), ng = document.querySelectorAll(".settings-tab-panel"), rg = document.getElementById("settings-zoom-visible"), ig = document.getElementById("settings-zoom-level-visible"), ag = document.getElementById("settings-rotation-visible"), og = document.getElementById("settings-graticule-visible"), sg = document.getElementById("settings-screen-space-graticule-visible"), cg = document.getElementById("reset-view-button"), lg = document.querySelector(".reset-view-control"), ug = document.getElementById("settings-reset-view-visible"), dg = document.getElementById("settings-fullscreen-visible"), fg = document.getElementById("settings-mouse-position-visible"), pg = document.getElementById("settings-overview-map-visible"), mg = document.getElementById("settings-overview-map-size"), hg = document.getElementById("settings-mouse-wheel-zoom-sensitivity"), gg = document.getElementById("settings-zoom-button-step"), _g = document.getElementById("settings-scale-bar-enabled"), vg = document.getElementById("settings-theme"), yg = document.getElementById("settings-grid-theme"), bg = document.getElementById("settings-grid-opacity"), xg = document.getElementById("settings-grid-opacity-value"), Sg = document.getElementById("settings-grid-spacing"), Cg = document.getElementById("settings-grid-labels-visible"), wg = document.getElementById("settings-control-opacity"), Tg = document.getElementById("settings-control-opacity-value"), Eg = document.getElementById("settings-reset-defaults"), Dg = document.getElementById("settings-scale-bar-colour"), Og = document.getElementById("settings-scale-bar-opacity"), kg = document.getElementById("settings-scale-bar-opacity-value"), Ag = document.getElementById("settings-scale-bar-size"), jg = document.getElementById("settings-scale-bar-units"); if (Wh === null || Gh === null) throw Error("The OpenLayers viewer could not be found."); if (Kh === null || qh === null || Yh === null || Xh === null || Zh === null || Qh === null || $h === null || eg === null || rg === null || ig === null || ag === null || og === null || sg === null || cg === null || lg === null || ug === null || dg === null || fg === null || pg === null || mg === null || hg === null || gg === null || vg === null || yg === null || bg === null || xg === null || Sg === null || Cg === null || wg === null || Tg === null || Eg === null || _g === null || Dg === null || Og === null || kg === null || Ag === null || jg === null || Jh === null) throw Error("The OpenLayers viewer controls could not be found."); @@ -27430,56 +16474,11 @@ if (Gg !== null) { Wg.updateActionState(); var Kg = Fg.map((e) => { let t = new Wu({ -======= -======= ->>>>>>> Stashed changes -var _h = document.getElementById("map"), vh = document.querySelector(".viewer-app"), yh = document.getElementById("viewer-panel"), bh = document.getElementById("viewer-panel-toggle"), xh = document.getElementById("current-slide"), Sh = document.getElementById("layer-editor"), Ch = document.getElementById("layer-editor-toggle"), wh = document.getElementById("layer-editor-list"); -if (_h === null || vh === null) throw Error("The OpenLayers viewer could not be found."); -if (yh === null || bh === null || Sh === null || Ch === null || wh === null || xh === null) throw Error("The OpenLayers viewer controls could not be found."); -bh.addEventListener("click", () => { - let e = yh.classList.toggle("hidden"); - bh.classList.toggle("active", !e); -}), Ch.addEventListener("click", () => { - let e = Sh.classList.toggle("hidden"); - Ch.classList.toggle("active", !e); -}); -var Th = JSON.parse(_h.dataset.layers ?? "[]"), Eh = null, Dh = Date.now(), Oh = Date.now(), kh = null, Ah = null, jh = {}, Mh = /* @__PURE__ */ new Set(); -function Nh(e) { - let t = e.split(/[\\/]/).pop() ?? e, n = t.lastIndexOf("."); - return n <= 0 ? t : t.slice(0, n); -} -function Ph() { - if (Ah === null) { - xh.textContent = "No slide selected", xh.removeAttribute("title"); - return; - } - xh.textContent = Ah.split(/[\\/]/).pop() || Ah, xh.title = Ah; -} -var Fh = new URLSearchParams(window.location.search).get("slide"); -if (Fh !== null) { - Ah = Fh, Eh = await mh(); - let e = await hh(Fh); - kh = e, Th = [{ - name: "slide", - url: `/tileserver/layer/slide/${Eh}/zoomify/{TileGroup}/{z}-{x}-{y}@1x.jpg?v=${Dh}`, - size: e.slide_dimensions, - mpp: e.mpp[0] - }]; -} else Th.length === 0 && (Eh = await mh()); -Ph(); -var Ih = Th.map((e) => { - let t = new dd({ -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes url: e.url, size: e.size, crossOrigin: "anonymous", zDirection: -1 }); -<<<<<<< Updated upstream -<<<<<<< Updated upstream return new Co({ title: e.name, source: t @@ -27494,86 +16493,27 @@ if (Jg !== null) { units: "pixels", extent: Xg, metersPerUnit: Fg[0].mpp * 1e-6, -======= - return new Lu({ - title: e.name, - source: t - }); -======= - return new Lu({ - title: e.name, - source: t - }); ->>>>>>> Stashed changes -}), Lh = Ih[0]; -Lh === void 0 && (Lh = new Lu({ title: "slide" }), Ih.push(Lh)), Lh.setZIndex(0); -var Rh = Lh.getSource(), zh, Bh, Vh; -if (Rh !== null) { - let e = Rh.getTileGrid(); - zh = e.getResolutions(), Bh = e.getExtent(), Vh = new qt({ - code: "ZoomifyProjection", - units: "pixels", - extent: Bh, - metersPerUnit: Th[0].mpp * 1e-6, -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes getPointResolution(e) { return e; } }); -<<<<<<< Updated upstream -<<<<<<< Updated upstream } else Yg = [1], Xg = [ -======= -} else zh = [1], Bh = [ ->>>>>>> Stashed changes -======= -} else zh = [1], Bh = [ ->>>>>>> Stashed changes 0, -1, 1, 0 -<<<<<<< Updated upstream -<<<<<<< Updated upstream ], Zg = new cn({ code: "ZoomifyProjectionEmpty", units: "pixels", extent: Xg, -======= -], Vh = new qt({ - code: "ZoomifyProjectionEmpty", - units: "pixels", - extent: Bh, ->>>>>>> Stashed changes -======= -], Vh = new qt({ - code: "ZoomifyProjectionEmpty", - units: "pixels", - extent: Bh, ->>>>>>> Stashed changes metersPerUnit: 1, getPointResolution(e) { return e; } }); -<<<<<<< Updated upstream -<<<<<<< Updated upstream var Qg = .1; function $g(e) { let t = e[2] - e[0], n = e[3] - e[1], r = t * Qg, i = n * Qg; -======= -var Hh = .1; -function Uh(e) { - let t = e[2] - e[0], n = e[3] - e[1], r = t * Hh, i = n * Hh; ->>>>>>> Stashed changes -======= -var Hh = .1; -function Uh(e) { - let t = e[2] - e[0], n = e[3] - e[1], r = t * Hh, i = n * Hh; ->>>>>>> Stashed changes return [ e[0] - r, e[1] - i, @@ -27581,31 +16521,15 @@ function Uh(e) { e[3] + i ]; } -<<<<<<< Updated upstream -<<<<<<< Updated upstream mr(Zg); var e_ = new uo({ projection: Zg, resolutions: Yg, extent: $g(Xg), -======= -======= ->>>>>>> Stashed changes -er(Vh); -var Wh = new ua({ - projection: Vh, - resolutions: zh, - extent: Uh(Bh), -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes constrainOnlyCenter: !0, smoothExtentConstraint: !0, smoothResolutionConstraint: !1, center: [.5, -.5], -<<<<<<< Updated upstream -<<<<<<< Updated upstream resolution: Yg[0] }), t_ = new hu({ target: Wh, @@ -27850,409 +16774,5 @@ Object.assign(window, { setAnnotationColors: O_, switchSlide: T_, view: e_ -======= -======= ->>>>>>> Stashed changes - resolution: zh[0] -}), $ = new Rl({ - target: _h, - layers: Ih, - view: Wh -}), Gh = _h.querySelector(".ol-zoom"), Kh = _h.querySelector(".ol-zoom-out"); -if (Gh === null || Kh === null) throw Error("The OpenLayers zoom control could not be found."); -var qh = document.createElement("div"); -qh.className = "ol-zoom-level", Gh.insertBefore(qh, Kh); -function Jh() { - let e = $.getView().getZoom(); - e !== void 0 && (qh.textContent = `${Number.isInteger(e) ? e.toString() : e.toFixed(1)}x`); -} -Jh(); -var Yh = new Jl({ - units: "metric", - minWidth: 100 -}); -$.addControl(Yh); -var Xh = new Lu(); -Rh !== null && Xh.setSource(Rh); -var Zh = 300, Qh = 250; -function $h(e, t) { - let n = [(t[0] + t[2]) / 2, (t[1] + t[3]) / 2], r = t[2] - t[0], i = t[3] - t[1], a = Math.max(r / Zh, i / Qh), o = new ua({ - projection: e, - center: n, - resolution: a, - resolutions: [a], - constrainOnlyCenter: !0 - }); - return o.on("change:center", () => { - let e = o.getCenter(); - e !== void 0 && (e[0] !== n[0] || e[1] !== n[1]) && o.setCenter(n); - }), o; -} -var eg = document.createElement("span"); -eg.className = "overview-toggle-icon", eg.innerHTML = ""; -var tg = document.createElement("span"); -tg.className = "overview-toggle-icon", tg.innerHTML = ""; -var ng = new Wl({ - className: "ol-overviewmap ol-custom-overviewmap", - layers: [Xh], - collapsed: !1, - collapsible: !0, - collapseLabel: eg, - label: tg, - rotateWithView: !1, - tipLabel: "Toggle overview map", - view: $h(Vh, Bh) -}); -$.addControl(ng); -var rg = ng.getOverviewMap(), ig = new wr({ - coordinateFormat: (e) => Ft([e[0], -e[1]], "{x}, {y}", 0), - className: "ol-mouse-position", - placeholder: "\xA0" -}); -$.addControl(ig); -var ag = new va({ - autoHide: !1, - className: "ol-rotate" -}); -$.addControl(ag); -var og = new Oe({ source: vh }); -$.addControl(og); -var sg = new dh(); -$.addControl(sg); -var cg = 64, lg = 64, ug = new Bc({ - stroke: new zc({ - color: "rgba(0, 0, 0, 0.5)", - width: 1 - }), - text: new Kc({ - font: "12px Calibri,sans-serif", - fill: new Ic({ color: "rgba(0, 0, 0, 1)" }), - stroke: new zc({ - color: "rgba(255, 255, 255, 1)", - width: 3 - }) - }) -}); -function dg(e) { - return new md({ - projection: e, - margin: lg, - style: ug, - spacing: cg, - formatCoord: (e, t) => (e = t === "left" || t === "right" ? -Math.floor(e) : Math.floor(e), e >= 1e6 && (e = e.toExponential(3), e = e.replace("+", "")), e) - }); -} -var fg = dg(Vh), pg = cg, mg = lg; -function hg(e) { - return new md({ - projection: e.getCode(), - spacing: pg, - margin: mg, - style: ug, - formatCoord(e, t) { - let n = $.getView().calculateExtent($.getSize()), r = $.getView().getResolution(), i = n[0] + r * mg, a = n[3] - r * mg, o; - if (o = t === "left" || t === "right" ? -(e - a) : e - i, o = Math.floor(o / r / pg), t === "left" || t === "right") { - let e = ""; - do - e += String.fromCharCode(65 + o % 26), o = Math.floor(o / 26); - while (o > 0); - return e.split("").reverse().join(""); - } - return o; - } - }); -} -var gg = hg(Vh), _g = new ph({ - html: "", - className: "ol-graticule", - title: "Toggle Graticule", - onToggle(e) { - _g.element.classList.toggle("active", e), e ? (vg.setActive(!1), vg.element.classList.remove("active"), gg.setMap(null), fg.setMap($)) : fg.setMap(null); - } -}); -$.addControl(_g); -var vg = new ph({ - html: "", - className: "ol-screen-space-graticule", - title: "Toggle Screen Space Graticule", - onToggle(e) { - vg.element.classList.toggle("active", e), e ? (_g.setActive(!1), _g.element.classList.remove("active"), fg.setMap(null), gg.setMap($)) : gg.setMap(null); - } -}); -$.addControl(vg); -function yg(e) { - let t = _h.querySelector(".ol-zoom-in"), n = _h.querySelector(".ol-zoom-out"), r = ag.element.querySelector("button"), i = _g.element.querySelector("button"), a = vg.element.querySelector("button"); - for (let o of [ - t, - n, - r, - i, - a - ]) o !== null && (o.disabled = !e); - Yh.element.classList.toggle("viewer-control-hidden", !e), ig.element.classList.toggle("viewer-control-hidden", !e), ng.element.classList.toggle("viewer-control-hidden", !e), e || (_g.setActive(!1), vg.setActive(!1), _g.element.classList.remove("active"), vg.element.classList.remove("active"), fg.setMap(null), gg.setMap(null)), e && requestAnimationFrame(() => { - rg.updateSize(), rg.renderSync(); - }); -} -if (yg(Rh !== null), Rh !== null) { - $.getView().fit(Bh); - let e = Sg(); - e !== null && ($.getView().setCenter(e.center), $.getView().setZoom(e.zoom)); -} -$.on("moveend", () => { - Cg(), Jh(); -}); -function bg() { - for (let e of Object.values(jh)) { - e.setSource(null), $.removeLayer(e); - let t = Ih.indexOf(e); - t !== -1 && Ih.splice(t, 1); - } - for (let e of Object.keys(jh)) delete jh[e]; - Mh.clear(), Og(); -} -async function xg() { - if (!(await fetch("/tileserver/clear_overlays", { method: "PUT" })).ok) throw Error("Failed to clear overlays."); - bg(); -} -function Sg() { - let e = new URLSearchParams(window.location.search), t = Number(e.get("x")), n = Number(e.get("y")), r = Number(e.get("zoom")); - return e.get("x") === null || e.get("y") === null || e.get("zoom") === null || !Number.isFinite(t) || !Number.isFinite(n) || !Number.isFinite(r) ? null : { - center: [t, n], - zoom: r - }; -} -function Cg() { - if (Ah === null) return; - let e = $.getView(), t = e.getCenter(), n = e.getZoom(); - if (t === void 0 || n === void 0) return; - let r = new URL(window.location.href); - r.searchParams.set("slide", Ah), r.searchParams.set("x", t[0].toFixed(2)), r.searchParams.set("y", t[1].toFixed(2)), r.searchParams.set("zoom", n.toString()); - let i = r.searchParams.toString().replace(/%2F/gi, "/"); - window.history.replaceState({}, "", `${r.pathname}?${i}${r.hash}`); -} -async function wg() { - if (Eh === null) throw Error("No TileServer session is available."); - if (!(await fetch("/tileserver/slide", { method: "DELETE" })).ok) throw Error("Failed to remove the current slide."); - bg(), Ah = null, kh = null, Th.length = 0, Ph(), Dh += 1, Oh += 1, Lh.setSource(null), Xh.setSource(null), Og(); - let e = [ - 0, - -1, - 1, - 0 - ], t = [1], n = new qt({ - code: "ZoomifyProjectionEmpty", - units: "pixels", - extent: e, - metersPerUnit: 1, - getPointResolution(e) { - return e; - } - }); - er(n); - let r = new ua({ - projection: n, - resolutions: t, - constrainOnlyCenter: !0, - center: [.5, -.5], - resolution: t[0] - }); - $.setView(r), rg.setView($h(n, e)), _g.setActive(!1), vg.setActive(!1), _g.element.classList.remove("active"), vg.element.classList.remove("active"), fg.setMap(null), gg.setMap(null), fg = dg(n), gg = hg(n), window.graticule = fg, window.screenSpaceGraticule = gg; - let i = new URL(window.location.href); - i.search = "", i.hash = "", window.history.replaceState({}, "", i), yg(!1), Jh(); -} -async function Tg(e) { - if (Eh === null) throw Error("Dynamic slide switching requires a TileServer session."); - bg(); - let t = await hh(e); - Ah = e, Ph(), kh = t, Dh += 1; - let n = gh(Eh, t, Dh), r = n.getTileGrid(), i = r.getExtent(), a = r.getResolutions(), o = new qt({ - code: "ZoomifyProjection", - units: "pixels", - extent: i, - metersPerUnit: t.mpp[0] * 1e-6 - }); - er(o); - let s = [(i[0] + i[2]) / 2, (i[1] + i[3]) / 2], c = new ua({ - projection: o, - resolutions: a, - extent: Uh(i), - constrainOnlyCenter: !0, - smoothExtentConstraint: !0, - smoothResolutionConstraint: !1, - center: s, - resolution: a[0] - }); - c.fit(i, { size: $.getSize() }), $.setView(c), rg.setView($h(o, i)); - let l = _g.getActive(), u = vg.getActive(); - fg.setMap(null), gg.setMap(null), fg = dg(o), gg = hg(o), l && fg.setMap($), u && gg.setMap($), Lh.setSource(n), Xh.setSource(n), Og(), window.graticule = fg, window.screenSpaceGraticule = gg, yg(!0), Cg(), Jh(); -} -function Eg() { - let e = []; - Lh.getSource() !== null && e.push({ - id: "slide", - name: Nh(Ah ?? "slide"), - layer: Lh - }); - let t = Object.entries(jh).map(([e, t]) => ({ - id: e, - name: e, - layer: t - })).sort((e, t) => (e.layer.getZIndex() ?? 0) - (t.layer.getZIndex() ?? 0)); - return e.push(...t), e; -} -function Dg(e, t) { - if (e === "slide") return; - let n = Eg().filter((e) => e.id !== "slide"), r = n.findIndex((t) => t.id === e); - if (r === -1) return; - let i = t === "up" ? r - 1 : r + 1; - if (i < 0 || i >= n.length) return; - let a = n[r].layer, o = n[i].layer, s = a.getZIndex() ?? 0, c = o.getZIndex() ?? 0; - a.setZIndex(c), o.setZIndex(s), Og(); -} -function Og() { - wh.replaceChildren(); - let e = Eg(), t = e.filter((e) => e.id !== "slide"); - if (e.length === 0) { - let e = document.createElement("div"); - e.className = "layer-editor-empty", e.textContent = "No layers loaded", wh.appendChild(e); - return; - } - e.forEach(({ id: e, name: n, layer: r }) => { - let i = document.createElement("div"); - i.className = "layer-editor-item"; - let a = document.createElement("div"); - a.className = "layer-editor-item-header"; - let o = document.createElement("input"); - o.className = "layer-editor-visibility", o.type = "checkbox", o.checked = r.getVisible(), o.title = `Toggle ${n}`, o.addEventListener("change", () => { - r.setVisible(o.checked); - }); - let s = document.createElement("span"); - if (s.className = "layer-editor-name", s.textContent = n, s.title = n, a.append(o, s), e !== "slide") { - let r = t.findIndex((t) => t.id === e), i = document.createElement("div"); - i.className = "layer-editor-order"; - let o = document.createElement("button"); - o.type = "button", o.title = "Move layer up", o.innerHTML = "", o.disabled = r === 0, o.addEventListener("click", () => { - Dg(e, "up"); - }); - let s = document.createElement("button"); - s.type = "button", s.title = "Move layer down", s.innerHTML = "", s.disabled = r === t.length - 1, s.addEventListener("click", () => { - Dg(e, "down"); - }); - let c = document.createElement("button"); - c.type = "button", c.title = `Remove ${n}`, c.innerHTML = "", c.addEventListener("click", () => { - Ag(e).catch((e) => { - console.error(e); - }); - }), i.append(o, s, c), a.appendChild(i); - } - let c = document.createElement("div"); - c.className = "layer-editor-opacity"; - let l = document.createElement("input"); - l.className = "layer-editor-slider", l.type = "range", l.min = "0", l.max = "1", l.step = "0.05", l.value = r.getOpacity().toString(); - let u = document.createElement("span"); - u.className = "layer-editor-value", u.textContent = `${Math.round(r.getOpacity() * 100)}%`, l.addEventListener("input", () => { - let e = Number(l.value); - r.setOpacity(e), u.textContent = `${Math.round(e * 100)}%`; - }), c.append(l, u), i.append(a, c), wh.appendChild(i); - }); -} -Og(); -async function kg(e) { - if (Eh === null || kh === null) throw Error("Dynamic overlay loading requires a loaded slide."); - let t = e.split(".").pop().toLowerCase(); - if (t === "npy" || t === "mha") throw Error("Registration overlays are not supported yet."); - let n = [ - "db", - "dat", - "geojson" - ].includes(t), r = Nh(e); - if (r === "slide") throw Error("The overlay name \"slide\" is reserved."); - let i = new FormData(); - i.append("overlay_path", e), i.append("layer_name", r); - let a = await fetch("/tileserver/overlay", { - method: "PUT", - body: i - }); - if (!a.ok) throw Error(`Failed to load overlay: ${e}`); - let o = await a.json(); - n ? Mh.add(r) : Mh.delete(r), Oh += 1; - let s = new dd({ - url: `/tileserver/layer/${encodeURIComponent(r)}/${Eh}/zoomify/{TileGroup}/{z}-{x}-{y}@1x.jpg?v=${Oh}`, - size: kh.slide_dimensions, - crossOrigin: "anonymous", - zDirection: -1 - }); - if (jh[r] !== void 0) jh[r].setSource(s), jh[r].setVisible(!0); - else { - let e = [Lh, ...Object.values(jh)], t = Math.max(...e.map((e) => e.getZIndex() ?? 0)), n = new Lu({ - title: r, - source: s, - opacity: .75 - }); - n.setZIndex(t + 1), jh[r] = n, $.addLayer(n), Ih.push(n); - } - return Og(), o; -} -async function Ag(e) { - let t = jh[e]; - if (t === void 0) throw Error(`Overlay is not loaded: ${e}`); - let n = t.getSource(); - if (t.setSource(null), !(await fetch(`/tileserver/overlay/${encodeURIComponent(e)}`, { method: "DELETE" })).ok) throw t.setSource(n), Error(`Failed to remove overlay: ${e}`); - $.removeLayer(t); - let r = Ih.indexOf(t); - r !== -1 && Ih.splice(r, 1), Mh.delete(e), delete jh[e], Og(); -} -async function jg(e) { - if (Mh.size === 0) throw Error("No annotation overlay is loaded."); - let t = new FormData(); - if (t.append("cmap", JSON.stringify({ - keys: Object.keys(e), - values: Object.values(e) - })), !(await fetch("/tileserver/cmap", { - method: "PUT", - body: t - })).ok) throw Error("Failed to update annotation colours."); - Oh += 1; - for (let e of Mh) { - let t = jh[e]; - if (t === void 0) continue; - let n = new dd({ - url: `/tileserver/layer/${encodeURIComponent(e)}/${Eh}/zoomify/{TileGroup}/{z}-{x}-{y}@1x.jpg?v=${Oh}`, - size: kh.slide_dimensions, - crossOrigin: "anonymous", - zDirection: -1 - }); - t.setSource(n); - } -} -Object.assign(window, { - clearOverlays: xg, - extent: Bh, - fullscreen: og, - graticule: fg, - graticuleToggle: _g, - layerSwitcher: sg, - layers: Ih, - layersData: Th, - loadOverlay: kg, - map: $, - mousePositionControl: ig, - overlayLayers: jh, - overviewMapControl: ng, - projection: Vh, - removeOverlay: Ag, - removeSlide: wg, - resolutions: zh, - rotate: ag, - scaleLineControl: Yh, - screenSpaceGraticule: gg, - screenSpaceGraticuleToggle: vg, - setAnnotationColors: jg, - switchSlide: Tg, - view: Wh -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes }); //#endregion From 1dcf874b2ecce67fe121484e372a7f08437b8878 Mon Sep 17 00:00:00 2001 From: Hannah Wood Date: Thu, 10 Sep 2026 15:30:01 +0100 Subject: [PATCH 03/14] Corrected errors --- .../data/visualization/static/openlayers/viewer.css | 8 -------- .../visualization/static/openlayers/viewer_legacy.css | 2 +- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/tiatoolbox/data/visualization/static/openlayers/viewer.css b/tiatoolbox/data/visualization/static/openlayers/viewer.css index 127dfa49dd..76ac53caa6 100644 --- a/tiatoolbox/data/visualization/static/openlayers/viewer.css +++ b/tiatoolbox/data/visualization/static/openlayers/viewer.css @@ -1,10 +1,2 @@ -<<<<<<< Updated upstream -<<<<<<< Updated upstream :root,:host{--ol-background-color:white;--ol-accent-background-color:#f5f5f5;--ol-subtle-background-color:#80808040;--ol-partial-background-color:#ffffffbf;--ol-foreground-color:#333;--ol-subtle-foreground-color:#666;--ol-brand-color:#0af}.ol-box{box-sizing:border-box;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color);border-radius:2px}.ol-mouse-position{position:absolute;top:8px;right:8px}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;padding:2px;position:absolute;bottom:8px;left:8px}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-align:center;will-change:contents, width;border-top:none;margin:1px;font-size:10px;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{background-color:var(--ol-foreground-color);float:right;z-index:10;width:1px;height:15px}.ol-scale-step-text{z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:10px;position:absolute;bottom:-5px}.ol-scale-text{text-align:center;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:12px;position:absolute;bottom:25px}.ol-scale-singlebar{z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color);height:10px;position:relative}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset;overflow:hidden}.ol-viewport{touch-action:pan-x pan-y}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{background-color:var(--ol-subtle-background-color);border-radius:4px;position:absolute}.ol-zoom{top:.5em;left:.5em}.ol-rotate{transition:opacity .25s linear,visibility linear;top:.5em;right:.5em}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{top:.5em;right:.5em}.ol-control button{color:var(--ol-subtle-foreground-color);font-weight:700;font-size:inherit;text-align:center;background-color:var(--ol-background-color);border:none;border-radius:2px;width:1.375em;height:1.375em;margin:1px;padding:0;line-height:.4em;text-decoration:none;display:block}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{will-change:transform;font-weight:400;display:block}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-decoration:none}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;flex-flow:row-reverse;align-items:center;max-width:calc(100% - 1.3em);display:flex;bottom:.5em;right:.5em}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);margin:0;padding:1px .5em;font-size:12px}.ol-attribution li{list-style:none;display:inline}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{border-radius:4px 0 0;bottom:0;right:0}.ol-attribution.ol-uncollapsible img{max-height:1.6em;margin-top:-.2em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{height:200px;top:4.5em;left:.5em}.ol-zoomslider button{height:10px;position:relative}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{bottom:.5em;left:.5em}.ol-overviewmap.ol-uncollapsible{border-radius:0 4px 0 0;bottom:0;left:0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);width:150px;height:150px}.ol-overviewmap:not(.ol-collapsed) button{position:absolute;bottom:0;left:0}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.ol-overviewmap .ol-viewport:hover{cursor:pointer}.ol-control i{cursor:default}.ol-control.ol-bar{white-space:nowrap;min-width:1em;min-height:1em;position:absolute;top:.5em;left:50%;transform:translate(-50%)}.ol-control.ol-toggle .ol-option-bar{display:none}.ol-control.ol-bar .ol-control{vertical-align:middle;background-color:#0000;margin:0;padding:0;display:inline-block;position:relative;inset:auto;transform:none}.ol-control.ol-bar .ol-bar{position:static}.ol-control.ol-bar .ol-control button{outline:none;margin:2px 1px}.ol-control.ol-bar.ol-left{top:50%;left:.5em;transform:translateY(-50%)}.ol-control.ol-bar.ol-left .ol-control{display:block}.ol-control.ol-bar.ol-right{top:50%;left:auto;right:.5em;transform:translateY(-50%)}.ol-control.ol-bar.ol-right .ol-control{display:block}.ol-control.ol-bar.ol-bottom{top:auto;bottom:.5em}.ol-control.ol-bar.ol-top.ol-left,.ol-control.ol-bar.ol-top.ol-right{top:4.5em;transform:none}.ol-touch .ol-control.ol-bar.ol-top.ol-left,.ol-touch .ol-control.ol-bar.ol-top.ol-right{top:5.5em}.ol-control.ol-bar.ol-bottom.ol-left,.ol-control.ol-bar.ol-bottom.ol-right{top:auto;bottom:.5em;transform:none}.ol-control.ol-bar.ol-group{margin:1px 1px 1px 0}.ol-control.ol-bar.ol-right .ol-group,.ol-control.ol-bar.ol-left .ol-group{margin:1px 1px 0}.ol-control.ol-bar.ol-group button{border-radius:0;margin:0 0 0 1px}.ol-control.ol-bar.ol-right.ol-group button,.ol-control.ol-bar.ol-left.ol-group button,.ol-control.ol-bar.ol-right .ol-group button,.ol-control.ol-bar.ol-left .ol-group button{margin:0 0 1px}.ol-control.ol-bar.ol-group .ol-control:first-child>button{border-radius:5px 0 0 5px}.ol-control.ol-bar.ol-group .ol-control:last-child>button{border-radius:0 5px 5px 0}.ol-control.ol-bar.ol-left.ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-right.ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-left .ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-right .ol-group .ol-control:first-child>button{border-radius:5px 5px 0 0}.ol-control.ol-bar.ol-left.ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-right.ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-left .ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-right .ol-group .ol-control:last-child>button{border-radius:0 0 5px 5px}.ol-control.ol-bar .ol-rotate{opacity:1;visibility:visible}.ol-control.ol-bar .ol-rotate button{display:block}.ol-control.ol-bar .ol-toggle.ol-active>button,.ol-control.ol-bar .ol-toggle.ol-active button:hover{color:#fff;background-color:#0af}.ol-control.ol-toggle button:disabled{background-color:#ccc}.ol-control.ol-bar .ol-control.ol-option-bar{background-color:#fffc;border-radius:0;margin:5px 0;display:none;position:absolute;top:100%;left:0;box-shadow:0 0 0 1px #003c8880,1px 1px 2px #00000080}.ol-control.ol-bar .ol-option-bar:before{content:"";pointer-events:none;border:.5em solid #0000;border-bottom-color:#003c8880;position:absolute;bottom:100%;left:.3em}.ol-control.ol-bar .ol-option-bar .ol-control{display:table-cell}.ol-control.ol-bar .ol-control .ol-bar{display:none}.ol-control.ol-bar .ol-control.ol-active>.ol-option-bar{display:block}.ol-control.ol-bar .ol-control.ol-collapsed ul{display:none}.ol-control.ol-bar .ol-control.ol-text-button>div:hover,.ol-control.ol-bar .ol-control.ol-text-button>div{color:#003c8880;background-color:#0000;width:auto;min-width:1.375em;margin:0}.ol-control.ol-bar .ol-control.ol-text-button{border-left:1px solid #003c88cc;border-radius:0;font-size:.9em}.ol-control.ol-bar .ol-control.ol-text-button:first-child{border-left:0}.ol-control.ol-bar .ol-control.ol-text-button>div{padding:.11em .3em;font-family:Arial,Helvetica,sans-serif;font-size:1.14em;font-weight:400}.ol-control.ol-bar .ol-control.ol-text-button div:hover{color:#003c88}.ol-control.ol-bar.ol-bottom .ol-option-bar{top:auto;bottom:100%}.ol-control.ol-bar.ol-bottom .ol-option-bar:before{border-color:#003c8880 #0000 #0000;top:100%;bottom:auto}.ol-control.ol-bar.ol-left .ol-option-bar{margin:0 5px;top:0;bottom:auto;left:100%}.ol-control.ol-bar.ol-left .ol-option-bar:before{border-color:#0000 #003c8880 #0000 #0000;inset:.3em 100% auto auto}.ol-control.ol-bar.ol-right .ol-option-bar{margin:0 5px;inset:0 100% auto auto}.ol-control.ol-bar.ol-right .ol-option-bar:before{border-color:#0000 #0000 #0000 #003c8880;top:.3em;bottom:auto;left:100%}.ol-control.ol-bar.ol-left .ol-option-bar .ol-option-bar,.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar{margin:5px 0;inset:100% auto auto .3em}.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar{left:auto;right:.3em}.ol-control.ol-bar.ol-left .ol-option-bar .ol-option-bar:before,.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar:before{border-color:#0000 #0000 #003c8880;inset:auto auto 100% .3em}.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar:before{left:auto;right:.3em}.ol-control-title{position:absolute;top:0;left:0;right:0}.ol-center-position{background-color:#fffc;padding:.1em 1em;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.ol-compassctrl{display:none;top:1em;left:auto;right:1em}.ol-compassctrl.ol-visible{display:block!important}.ol-ext-dialog{opacity:0;z-index:1000;background-color:#00000080;width:150%;height:100%;transition:opacity .2s,top 0s .2s;position:fixed;top:-100%;left:0;pointer-events:none!important}.ol-ext-dialog.ol-visible{opacity:1;transition:opacity .2s,top;top:0;pointer-events:all!important}.ol-viewport .ol-ext-dialog{position:absolute}.ol-ext-dialog>form>h2{text-overflow:ellipsis;white-space:nowrap;margin:0 .5em .5em 0;display:none;overflow:hidden}.ol-ext-dialog>form.ol-title>h2{display:block}.ol-ext-dialog>form{box-sizing:border-box;background-color:#fff;border:1px solid #333;min-width:5em;max-width:60%;min-height:3em;max-height:100%;padding:1em;transition:top .2s,transform .2s;position:absolute;top:0;left:33.33%;overflow:hidden auto;transform:translate(-50%,-30%);box-shadow:3px 3px 4px #00000080}dialog.ol-ext-dialog>form{width:max-content;max-width:90%;left:50%}.ol-ext-dialog>form.ol-closebox{padding-top:1.5em}.ol-ext-dialog>form.ol-title{padding-top:1em}.ol-ext-dialog>form.ol-button{padding-bottom:.5em}.ol-ext-dialog.ol-zoom>form{top:30%;transform:translate(-50%,-30%)scale(0)}.ol-ext-dialog.ol-visible>form{top:30%}.ol-ext-dialog.ol-zoom.ol-visible>form{transform:translate(-50%,-30%)scale(1)}.ol-ext-dialog>form .ol-content{overflow:hidden auto}.ol-ext-dialog>form .ol-closebox{cursor:pointer;width:1em;height:1em;display:none;position:absolute;top:.5em;right:.5em}.ol-ext-dialog>form.ol-closebox .ol-closebox{display:block}.ol-ext-dialog>form .ol-closebox:before,.ol-ext-dialog>form .ol-closebox:after{content:"";background-color:currentColor;border-radius:.1em;width:1em;height:.1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-ext-dialog>form .ol-closebox:before{transform:translate(-50%,-50%)rotate(-45deg)}.ol-ext-dialog>form .ol-buttons{text-align:right;overflow-x:hidden}.ol-ext-dialog>form .ol-buttons input{color:#003c88;cursor:pointer;background:0 0;border:0;border-radius:.25em;margin-top:.5em;padding:.5em;font-size:1em}.ol-ext-dialog>form .ol-buttons input:hover{background-color:#003c881a}.ol-ext-dialog>form .ol-buttons input[type=submit]{font-weight:700}.ol-ext-dialog .ol-progress-message{text-align:center;padding-bottom:.5em;font-size:.9em}.ol-ext-dialog .ol-progress-bar{border:1px solid #369;width:20em;max-width:100%;height:1em;margin:.5em auto 0;padding:2px;overflow:hidden}.ol-ext-dialog .ol-progress-bar>div{background:#369;width:50%;height:100%;transition:width .3s}.ol-ext-dialog .ol-progress-bar>div.notransition{transition:unset}.ol-ext-dialog.ol-fullscreen-dialog form{text-align:center;max-width:calc(66.6% - 2em);-webkit-box-shadow:none;box-shadow:none;color:#fff;background:0 0;border:none;inset:1em;transform:none}.ol-ext-dialog.ol-fullscreen-dialog form .ol-closebox{font-size:2em;top:0;right:0}.ol-ext-dialog.ol-fullscreen-dialog .ol-closebox:before,.ol-ext-dialog.ol-fullscreen-dialog .ol-closebox:after{border:.1em solid}.ol-ext-dialog.ol-fullscreen-dialog img,.ol-ext-dialog.ol-fullscreen-dialog video{max-width:100%}body>.ol-ext-dialog .ol-content{max-height:calc(100vh - 10em)}body>.ol-ext-dialog>form{overflow:visible}.ol-editbar .ol-button button{box-sizing:border-box;vertical-align:middle;font-style:normal;display:inline-block;position:relative}.ol-editbar .ol-button button:before,.ol-editbar .ol-button button:after{content:"";box-sizing:border-box;background-color:currentColor;border-width:0;position:absolute}.ol-editbar .ol-button button:focus{outline:none}.ol-editbar .ol-selection>button:before{background-color:#0000;border:.25em solid #0000;border-top:0 solid;border-bottom:.65em solid;width:.6em;height:1em;top:.35em;left:.5em;transform:translate(-50%,-50%)rotate(-30deg);box-shadow:0 .6em 0 -.23em}.ol-editbar .ol-selection0>button:after{background-color:#0000;border:.05em solid #0000;border-top:0 solid;border-bottom:.7em solid;width:.28em;height:.6em;top:.5em;left:.7em;transform:rotate(-45deg)}.ol-editbar .ol-delete button:after,.ol-editbar .ol-delete button:before{width:1em;height:.2em;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-editbar .ol-delete button:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-editbar .ol-info button:before{border-radius:.03em;width:.25em;height:.6em;top:.47em;left:50%;transform:translate(-50%)}.ol-editbar .ol-info button:after{border-radius:.03em;width:.25em;height:.2em;top:.12em;left:50%;transform:translate(-50%);box-shadow:-.1em .35em,-.1em .82em,.1em .82em}.ol-editbar .ol-drawpoint button:before{background-color:#0000;border:.15em solid;border-radius:50%;width:.7em;height:.7em;top:.2em;left:50%;transform:translate(-50%)}.ol-editbar .ol-drawpoint button:after{background-color:#0000;border:.2em solid #0000;border-top:.4em solid;border-bottom:0 solid;width:.4em;height:.4em;top:.8em;left:50%;transform:translate(-50%)}.ol-editbar .ol-drawline>button:before,.ol-editbar .ol-drawpolygon>button:before,.ol-editbar .ol-drawhole>button:before{background-color:#0000;border:.13em solid;border-width:.2em .13em .09em;width:.8em;height:.8em;top:.2em;left:.25em;transform:rotate(10deg)perspective(1em)rotateX(40deg)}.ol-editbar .ol-drawline>button:before{border-bottom:0}.ol-editbar .ol-drawline>button:after,.ol-editbar .ol-drawhole>button:after,.ol-editbar .ol-drawpolygon>button:after{width:.3em;height:.3em;top:.2em;left:.25em;box-shadow:-.2em .55em,.6em .1em,.65em .7em}.ol-editbar .ol-drawhole>button:after{box-shadow:-.2em .55em,.6em .1em,.65em .7em,.25em .35em}.ol-editbar .ol-offset>button i,.ol-editbar .ol-transform>button i{width:.9em;height:.9em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-editbar .ol-offset>button i{width:.8em;height:.8em}.ol-editbar .ol-offset>button i:before,.ol-editbar .ol-transform>button i:before,.ol-editbar .ol-transform>button i:after{content:"";background-color:currentColor;width:.1em;height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg);box-shadow:.5em 0 0 .1em,-.5em 0 0 .1em}.ol-editbar .ol-offset>button i:before{box-shadow:.45em 0 0 .1em,-.45em 0 0 .1em}.ol-editbar .ol-transform>button i:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-editbar .ol-split>button:before{border-radius:50%;width:.3em;height:.3em;top:.81em;left:.75em;box-shadow:.1em -.4em,-.15em -.25em}.ol-editbar .ol-split>button:after{background-color:#0000;border:.2em solid;border-width:0 .2em .2em 0;border-radius:.1em;width:.8em;height:.8em;top:.15em;left:-.1em;transform:rotate(20deg)scaleY(.6)rotate(-45deg)}.ol-editbar .ol-drawregular>button:before{background-color:#0000;border:.1em solid;width:.9em;height:.9em;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div{cursor:pointer;vertical-align:text-bottom;border:.5em solid #0000;border-color:#0000 currentColor;display:inline-block}.ol-editbar .ol-drawregular .ol-bar:before,.ol-control.ol-bar.ol-editbar .ol-drawregular .ol-bar{left:50%;transform:translate(-50%)}.ol-editbar .ol-drawregular .ol-bar .ol-text-button{text-align:center;min-width:6em}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div:first-child{border-width:.5em .5em .5em 0;margin:0 .5em 0 0}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div:last-child{border-width:.5em 0 .5em .5em;margin:0 0 0 .5em}.ol-feature-list{position:relative}.ol-control.ol-feature-list{width:100%;position:absolute;bottom:0;left:0}.ol-control.ol-feature-list>button:before{content:"";background-image:linear-gradient(90deg,currentColor,#0000);width:60%;height:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 2.5px}.ol-control.ol-feature-list.ol-collapsed{width:auto;bottom:.5em;left:.5em}.ol-feature-list .ol-content{clear:both;background-color:#f4f6f8}.ol-feature-list.ol-collapsed .ol-content>*{display:none}.ol-feature-list .ol-header{position:relative;overflow:hidden}.ol-feature-list.ol-collapsed .ol-header{display:block}.ol-control.ol-feature-list>button,.ol-control.ol-feature-list.ol-collapsed .ol-content{display:none}.ol-control.ol-feature-list.ol-collapsed>button{display:block}.ol-feature-list .ol-sizer{cursor:row-resize;background-color:#ccc;border:1px solid #f4f6f8;border-width:1px 0;width:100%;height:1px;position:relative}.ol-feature-list.ol-bottom .ol-sizer{position:absolute;bottom:0}.ol-feature-list .ol-sizer:before{content:"";z-index:1;background-color:#ddd;border:3px solid #0000;border-width:3px 1.5em;border-radius:2px;width:1.5em;height:4px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 -1px #aaa,inset 0 1px #aaa}.ol-feature-list .ol-sizer:hover:before{background-color:#ccc}.ol-feature-list .ol-content .ol-header p{vertical-align:middle;white-space:nowrap;text-overflow:ellipsis;width:calc(100% - 2em);margin:.1em .25em;display:inline-block;overflow:hidden}.ol-feature-list .ol-content .ol-header .ol-buttons{position:absolute;top:50%;right:0;transform:translateY(-50%)}.ol-feature-list .ol-content .ol-header button{vertical-align:middle;box-sizing:border-box;background:0 0;border:0;width:1em;height:1em;margin:0 .2em;position:relative}.ol-feature-list .ol-content .ol-header button.ol-closebox:before,.ol-feature-list .ol-content .ol-header button.ol-closebox:after{content:"";background:currentColor;width:.1em;height:1em;font-style:normal;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-feature-list .ol-content .ol-header button.ol-closebox:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox{border:1px solid}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox:before{transform:translate(-50%,-50%)rotate(90deg)}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox:after{display:none}.ol-feature-list .ol-scroll-container{height:10em;min-height:3em;overflow:auto}.ol-feature-list .ol-scroll-container:focus{outline:unset}.ol-feature-list table{border-collapse:collapse;white-space:nowrap;background-color:#fff;position:relative}.ol-feature-list table thead{background-color:#f4f6f8;position:sticky;top:0;overflow:hidden}.ol-feature-list table tr{box-sizing:border-box;height:1.4em}.ol-feature-list table tbody tr:hover{cursor:pointer;background-color:#eee}.ol-feature-list table tbody tr.ol-selected{background-color:#eee}.ol-feature-list table td{border:0 solid #ddd;border-width:0 0 1px 1px;width:100px;overflow:hidden}.ol-feature-list table td.number{text-align:right}.ol-feature-list table td.undefined{text-align:center;background-color:#fafafa}.ol-feature-list table tr:hover td,.ol-feature-list table .ol-selected td{background-color:#0000}.ol-feature-list thead td{position:relative}.ol-feature-list thead td.sort{padding-right:1.5em}.ol-feature-list thead td p{margin:0;display:inline-block}.ol-feature-list table td button{background-color:#0000;border:0;width:1.2em;height:1.4em;margin:.1em 0;padding:0;position:absolute;top:0;right:0}.ol-feature-list thead td button.sort:before{content:"⇅";cursor:pointer;font-size:1em;font-style:normal;font-weight:400;line-height:1em}.ol-feature-list thead td button.sortup:before{content:"↧"}.ol-feature-list thead td button.sortdown:before{content:"↥"}.ol-gauge{background-color:#ffffff80;padding:.1em .5em;top:.5em;left:50%;transform:translate(-50%)}.ol-gauge>*{vertical-align:middle;display:inline-block}.ol-gauge>span{margin:0 .5em 0 0}.ol-gauge>div{border:1px solid #003c8880;border-radius:3px;width:200px;padding:1px;display:inline-block}.ol-gauge button{max-width:100%;height:.8em;margin:0}.ol-control.ol-bookmark{background-color:#ffffff80;top:.5em;left:3em}.ol-control.ol-bookmark button{position:relative}.ol-control.ol-bookmark>button:before{content:"";border:5px solid;border-top-width:10px;border-bottom:4px solid #0000;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-bookmark>div{min-width:5em;display:block}.ol-control.ol-bookmark.ol-collapsed>div{display:none}.ol-control.ol-bookmark input{margin:0 .5em .5em;padding:0 .5em;font-size:.9em}.ol-control.ol-bookmark ul{min-width:10em;margin:0 0 .5em;padding:0;list-style:none}.ol-control.ol-bookmark li{color:#003c88cc;cursor:default;clear:both;padding:0 .2em 0 .5em;font-size:.9em}.ol-control.ol-bookmark li:hover{color:#fff;background-color:#003c8880}.ol-control.ol-bookmark>div button{float:right;cursor:pointer;background-color:#0000;border-radius:0;width:1em;height:.8em}.ol-control.ol-bookmark>div button:before{content:"⨯";color:#936;border-radius:0;font-size:1.2em;line-height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-bookmark ul li button,.ol-bookmark input{display:none}.ol-bookmark.ol-editable ul li button,.ol-bookmark.ol-editable input{display:block}.ol-control.ol-geobt{inset:auto .5em 3em auto}.ol-touch .ol-control.ol-geobt{bottom:3.5em}.ol-control.ol-geobt button:before{content:"";background:0 0;border:.16em solid;border-radius:50%;width:.4em;height:.4em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-geobt button:after{content:"";background:0 0;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.42em 0,-.42em 0,0 .42em,0 -.42em}.ol-control.ol-bar.ol-geobar .ol-control{vertical-align:middle;display:inline-block}.ol-control.ol-bar.ol-geobar .ol-bar{display:none}.ol-bar.ol-geobar.ol-active .ol-bar{display:inline-block}.ol-bar.ol-geobar .geolocBt button:before,.ol-bar.ol-geobar .geolocBt button:after{content:"";border-top:.3em solid;border-bottom:0 solid #0000;border-left:.2em solid #0000;border-right:.8em solid #0000;font-size:1.2em;display:block;position:absolute;top:.45em;left:.15em;transform:rotate(-30deg)}.ol-bar.ol-geobar .geolocBt button:after{border-width:0 .8em .3em .2em;border-color:#0000 #0000 currentColor;transform:rotate(-61deg)}.ol-bar.ol-geobar .startBt button:before{content:"";background-color:#800;border-radius:50%;width:1em;height:1em;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-bar.ol-geobar .pauseBt button:before,.ol-bar.ol-geobar .pauseBt button:after{content:"";background-color:currentColor;width:.25em;height:1em;display:block;position:absolute;top:50%;left:35%;transform:translate(-50%,-50%)}.ol-bar.ol-geobar .pauseBt button:after{left:65%}.ol-control.ol-bar.ol-geobar .centerBt,.ol-control.ol-bar.ol-geobar .pauseBt,.ol-bar.ol-geobar.pauseTrack .startBt,.ol-bar.ol-geobar.centerTrack .startBt,.ol-bar.ol-geobar.centerTrack.pauseTrack .pauseBt,.ol-bar.ol-geobar.centerTrack .pauseBt{display:none}.ol-bar.ol-geobar.pauseTrack .pauseBt,.ol-bar.ol-geobar.centerTrack .centerBt{display:inline-block}.ol-control.ol-globe{opacity:.7;transform-origin:0 100%;border-radius:50%;position:absolute;bottom:.5em;left:.5em;transform:scale(.5)}.ol-control.ol-globe:hover{opacity:.9}.ol-control.ol-globe .panel{cursor:pointer;background-color:#fff;border-radius:50%;width:170px;height:170px;display:block;overflow:hidden;box-shadow:0 0 10px 5px #ffffff80}.ol-control.ol-globe .panel .ol-viewport{border-radius:50%}.ol-control.ol-globe .ol-pointer{z-index:1;background-color:#fff;border:10px solid red;border-radius:50%;width:10px;height:10px;transition:opacity .15s,top,left;display:block;position:absolute;top:50%;left:50%;transform:translate(-15px,-40px)}.ol-control.ol-globe .ol-pointer.hidden{opacity:0;transition:opacity .15s,top 3s,left 5s}.ol-control.ol-globe .ol-pointer:before{content:"";border-radius:50%;width:0;height:0;display:block;position:absolute;top:23px;left:0;box-shadow:6px 6px 10px 5px #000}.ol-control.ol-globe .ol-pointer:after{content:"";border:10px solid #0000;border-top:20px solid red;border-bottom:0 solid red;width:0;height:0;display:block;position:absolute;top:100%;left:-50%}.ol-control.ol-globe .panel:before{content:"";z-index:1;border-radius:50%;width:100%;height:100%;display:block;position:absolute;top:0;left:0;box-shadow:inset -20px -20px 80px 2px #000000b3}.ol-control.ol-globe .panel:after{content:"";z-index:1;border-radius:50%;width:20%;height:0;display:block;position:absolute;top:20%;left:23%;transform:rotate(-40deg);box-shadow:0 0 20px 7px #fff}.ol-control.ol-globe.ol-collapsed .panel{display:none}.ol-control-top.ol-globe{transform-origin:0 0;top:5em;bottom:auto}.ol-control-right.ol-globe{transform-origin:100% 100%;left:auto;right:.5em}.ol-control-right.ol-control-top.ol-globe{transform-origin:100% 0;left:auto;right:.5em}.ol-gridreference{background:#fff;border:1px solid #000;max-height:100%;top:0;right:0;overflow:auto}.ol-gridreference input{width:100%}.ol-gridreference ul{margin:0;padding:0;list-style:none}.ol-gridreference li{cursor:pointer;padding:0 .5em}.ol-gridreference ul li:hover{background-color:#ccc}.ol-gridreference li.ol-title,.ol-gridreference li.ol-title:hover{color:#fff;cursor:default;background:#003c8880}.ol-gridreference ul li .ol-ref{margin-left:.5em}.ol-gridreference ul li .ol-ref:before{content:"("}.ol-gridreference ul li .ol-ref:after{content:")"}.ol-control.ol-imageline{border-radius:0;padding:0;transition:all .3s;bottom:0;left:0;right:0;overflow:visible}.ol-control.ol-imageline.ol-collapsed{transform:translateY(100%)}.ol-imageline>div{white-space:nowrap;scroll-behavior:smooth;width:100%;height:4em;position:relative;overflow:hidden}.ol-imageline>div.ol-move{scroll-behavior:unset}.ol-control.ol-imageline button{margin:.65em;position:absolute;top:-1em;transform:translateY(-100%);box-shadow:0 0 0 .15em #fff6}.ol-control.ol-imageline button:before{content:"";border:.15em solid;border-width:.15em .15em 0 0;width:.4em;height:.4em;position:absolute;top:40%;left:50%;transform:translate(-50%,-50%)rotate(135deg)}.ol-control.ol-imageline.ol-collapsed button:before{top:60%;transform:translate(-50%,-50%)rotate(-45deg)}.ol-imageline,.ol-imageline:hover{background-color:#000000bf}.ol-imageline.ol-arrow:after,.ol-imageline.ol-arrow:before{content:"";z-index:1;opacity:.8;pointer-events:none;border:1em solid #fff;border-left:0 solid #000;border-right:.6em solid #000;position:absolute;top:50%;left:.2em;transform:translateY(-50%);box-shadow:-.6em 0 0 1em #fff}.ol-imageline.ol-arrow:after{border-width:1em 0 1em .6em;left:auto;right:.2em;box-shadow:.6em 0 0 1em #fff}.ol-imageline.ol-scroll0.ol-arrow:before,.ol-imageline.ol-scroll1.ol-arrow:after{display:none}.ol-imageline .ol-image{cursor:pointer;height:100%;display:inline-block;position:relative}.ol-imageline img{box-sizing:border-box;opacity:0;border:.25em solid #0000;max-height:100%;transition:all 1s}.ol-imageline img.ol-loaded{opacity:1}.ol-imageline .ol-image.select{background-color:#fff}.ol-imageline .ol-image span{color:#fff;white-space:normal;text-align:center;background-color:#00000080;width:125%;max-height:2.4em;font-size:.8em;line-height:1.2em;display:none;position:absolute;bottom:0;left:50%;overflow:hidden;transform:translate(-50%)scaleX(.8)}.ol-imageline .ol-image:hover span{display:block}.ol-control.ol-routing.ol-isochrone .ol-method-time,.ol-control.ol-routing.ol-isochrone .ol-method-distance,.ol-control.ol-routing.ol-isochrone>button{position:relative}.ol-control.ol-routing.ol-isochrone .ol-method-time:before,.ol-control.ol-routing.ol-isochrone>button:before{content:"";clip:unset;border:.1em solid;border-radius:50%;width:.8em;height:.8em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 -.5em 0 -.35em,.4em -.35em 0 -.35em}.ol-control.ol-routing.ol-isochrone .ol-method-time:after,.ol-control.ol-routing.ol-isochrone>button:after{content:"";-webkit-box-shadow:none;box-shadow:none;box-sizing:border-box;clip:unset;border:.3em solid #0000;border-right-color:currentColor;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-60deg)}.ol-control.ol-routing.ol-isochrone .ol-method-distance:before{content:"";box-sizing:border-box;border:.1em solid;width:1em;height:.5em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-30deg)}.ol-control.ol-routing.ol-isochrone .ol-method-distance:after{content:"";width:.1em;height:.15em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-30deg);box-shadow:inset 0 -.15em,0 .1em,.25em .1em,-.25em .1em}.ol-control.ol-routing.ol-isochrone .ol-direction-direct:before,.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:before{content:"";box-sizing:border-box;border:.1em solid;border-radius:50%;width:.3em;height:.3em;position:absolute;top:50%;left:30%;transform:translate(-50%,-50%);box-shadow:.25em 0 0 -.05em}.ol-control.ol-routing.ol-isochrone .ol-direction-direct:after,.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:after{content:"";border:.4em solid #0000;border-left-color:currentColor;border-right:0 solid;position:absolute;top:50%;left:70%;transform:translate(-50%,-50%)}.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:after{border-width:.4em .4em .4em 0}.ol-control.ol-isochrone.ol-collapsed .content{display:none}.ol-control.ol-isochrone input[type=number]{text-align:right;width:3em;margin:0 .1em}.ol-control.ol-isochrone .ol-distance input[type=number]{width:5em}.ol-isochrone .ol-time,.ol-isochrone .ol-distance{display:none}.ol-isochrone .ol-time.selected,.ol-isochrone .ol-distance.selected{display:block}.ol-control.ol-layerswitcher-popup{text-align:left;position:absolute;top:3em;right:.5em}.ol-control.ol-layerswitcher-popup .panel{clear:both;background:#fff}.ol-layerswitcher-popup .panel{margin:0;padding:.25em;list-style:none;overflow:hidden}.ol-layerswitcher-popup .panel ul{padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher-popup.ol-collapsed .panel{display:none}.ol-layerswitcher-popup.ol-forceopen .panel{display:block}.ol-layerswitcher-popup button{float:right;background-color:#fff;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACE1BMVEX///8A//8AgICA//8AVVVAQID///8rVVVJtttgv98nTmJ2xNgkW1ttyNsmWWZmzNZYxM4gWGgeU2JmzNNr0N1Rwc0eU2VXxdEhV2JqytQeVmMhVmNoydUfVGUgVGQfVGQfVmVqy9hqy9dWw9AfVWRpydVry9YhVmMgVGNUw9BrytchVWRexdGw294gVWQgVmUhVWPd4N6HoaZsy9cfVmQgVGRrytZsy9cgVWQgVWMgVWRsy9YfVWNsy9YgVWVty9YgVWVry9UgVWRsy9Zsy9UfVWRsy9YgVWVty9YgVWRty9Vsy9aM09sgVWRTws/AzM0gVWRtzNYgVWRuy9Zsy9cgVWRGcHxty9bb5ORbxdEgVWRty9bn6OZTws9mydRfxtLX3Nva5eRix9NFcXxOd4JPeINQeIMiVmVUws9Vws9Vw9BXw9BYxNBaxNBbxNBcxdJexdElWWgmWmhjyNRlx9IqXGtoipNpytVqytVryNNrytZsjZUuX210k5t1y9R2zNR3y9V4lp57zth9zdaAnKOGoaeK0NiNpquV09mesrag1tuitbmj1tuj19uktrqr2d2svcCu2d2xwMO63N+7x8nA3uDC3uDFz9DK4eHL4eLN4eIyYnDX5OM5Z3Tb397e4uDf4uHf5uXi5ePi5+Xj5+Xk5+Xm5+Xm6OY6aHXQ19fT4+NfhI1Ww89gx9Nhx9Nsy9ZWw9Dpj2abAAAAWnRSTlMAAQICAwQEBgcIDQ0ODhQZGiAiIyYpKywvNTs+QklPUlNUWWJjaGt0dnd+hIWFh4mNjZCSm6CpsbW2t7nDzNDT1dje5efr7PHy9PT29/j4+Pn5+vr8/f39/f6DPtKwAAABTklEQVR4Xr3QVWPbMBSAUTVFZmZmhhSXMjNvkhwqMzMzMzPDeD+xASvObKePPa+ffHVl8PlsnE0+qPpBuQjVJjno6pZpSKXYl7/bZyFaQxhf98hHDKEppwdWIW1frFnrxSOWHFfWesSEWC6R/P4zOFrix3TzDFLlXRTR8c0fEEJ1/itpo7SVO9Jdr1DVxZ0USyjZsEY5vZfiiAC0UoTGOrm9PZLuRl8X+Dq1HQtoFbJZbv61i+Poblh/97TC7n0neCcK0ETNUrz1/xPHf+DNAW9Ac6t8O8WH3Vp98f5lCaYKAOFZMLyHL4Y0fe319idMNgMMp+zWVSybUed/+/h7I4wRAG1W6XDy4XmjR9HnzvDRZXUAYDFOhC1S/Hh+fIXxen+eO+AKqbs+wAo30zDTDvDxKoJN88sjUzDFAvBzEUGFsnADoIvAJzoh2BZ8sner+Ke/vwECuQAAAABJRU5ErkJggg==);background-position:50%;background-repeat:no-repeat;width:38px;height:38px}.ol-layerswitcher-popup li{color:#369;cursor:pointer;padding:.25em 1em;font-family:Trebuchet MS,Helvetica,sans-serif}.ol-layerswitcher-popup li.ol-header{display:none}.ol-layerswitcher-popup li.select,.ol-layerswitcher-popup li.ol-visible{color:#fff;background:#003c88b3}.ol-layerswitcher-popup li:hover{color:#fff;background:#003c88e6}.ol-control.ol-layerswitcher.ol-layer-shop{height:calc(100% - 4em);max-height:unset;background-color:#0000;max-width:16em;overflow:visible;pointer-events:none!important}.ol-control.ol-layerswitcher>*{pointer-events:auto}.ol-control.ol-layer-shop>button,.ol-control.ol-layer-shop .panel-container{box-shadow:0 0 0 3px #ffffff80}.ol-control.ol-layerswitcher.ol-layer-shop .panel-container{border:2px solid #369;border-width:2px 0;max-height:calc(100% - 6.5em);padding:0;overflow-y:scroll}.ol-control.ol-layer-shop .panel{box-sizing:border-box;margin:.25em .5em;padding:0}.ol-control.ol-layerswitcher.ol-layer-shop .panel-container.ol-scrolldiv{overflow:hidden}.ol-control.ol-layer-shop .ol-scroll{opacity:.5;background-color:#0000004d}.ol-layerswitcher.ol-layer-shop ul.panel li.ol-header{display:none}.ol-layerswitcher.ol-layer-shop ul.panel li{margin-right:0;padding-right:0}.ol-layerswitcher.ol-layer-shop .layerup{box-sizing:border-box;color:#003c88;background-color:#0000;border-radius:3px;width:1.4em;height:1.5em;margin:0}.ol-layerswitcher.ol-layer-shop .layerup:hover{background-color:#003c884d}.ol-layerswitcher.ol-layer-shop .layerup:before{background-color:currentColor;border:0;width:1em;height:2px;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 -4px,0 4px}.ol-layerswitcher.ol-layer-shop .layerup:after{content:unset}.ol-control.ol-layer-shop .ol-title-bar{box-sizing:border-box;text-overflow:ellipsis;white-space:nowrap;text-align:right;transform-origin:100% 0;background-color:#ffffff80;max-width:14.6em;height:calc(2.8em - 4px);padding:.7em .5em;font-size:.9em;transition:transform .1s,width;overflow:hidden;transform:scaleY(1.1)}.ol-control.ol-layer-shop:hover .ol-title-bar{background-color:#ffffffb3}.ol-control.ol-layer-shop.ol-collapsed .ol-title-bar{max-width:10em;transform:scale(.9,1.1)}.ol-control.ol-layer-shop.ol-forceopen .ol-title-bar{max-width:14.6em;transform:scaleY(1.1)}.ol-control.ol-layer-shop .ol-bar{clear:both;text-align:right;z-index:10;background-color:#fff;height:1.75em;position:relative;box-shadow:0 0 0 3px #ffffff80}.ol-control.ol-layer-shop.ol-collapsed .ol-scroll,.ol-control.ol-layer-shop.ol-collapsed .ol-bar{border-width:2px 0 0;display:none}.ol-control.ol-layer-shop.ol-forceopen .ol-scroll,.ol-control.ol-layer-shop.ol-forceopen .ol-bar{display:block}.ol-control.ol-layer-shop .ol-bar>*{vertical-align:middle;background-color:#0000;margin-top:.25em;font-size:.9em;display:inline-block}.ol-layer-shop .ol-bar .ol-button,.ol-touch .ol-layer-shop .ol-bar .ol-button{top:unset;left:unset;bottom:unset;right:unset;margin:0;position:relative}.ol-layer-shop .ol-bar button{color:#003c88;background-color:#fff}.ol-layer-shop .ol-bar button:hover{background-color:#003c8833}.ol-touch .ol-layerswitcher.ol-layer-shop>button{font-size:1.7em}.ol-touch .ol-layer-shop .ol-bar{height:2em}.ol-touch .ol-layer-shop .ol-control button{font-size:1.4em}.ol-touch .ol-control.ol-layer-shop .panel{max-height:calc(100% - 7em)}.ol-touch .ol-control.ol-layer-shop .panel label{height:1.8em}.ol-touch .ol-control.ol-layer-shop .panel label span{margin-left:.5em;padding-top:.25em}.ol-touch .ol-control.ol-layer-shop .panel label:before,.ol-touch .ol-control.ol-layer-shop .panel label:after{z-index:1;font-size:1.3em}.ol-control.ol-layerswitcher{text-align:left;box-sizing:border-box;max-height:calc(100% - 6em);position:absolute;top:3em;right:.5em;overflow:hidden}.ol-control.ol-layerswitcher .ol-switchertopdiv,.ol-control.ol-layerswitcher .ol-switcherbottomdiv{display:block}.ol-control.ol-layerswitcher.ol-collapsed .ol-switchertopdiv,.ol-control.ol-layerswitcher.ol-collapsed .ol-switcherbottomdiv{display:none}.ol-layerswitcher.ol-forceopen.ol-collapsed .ol-switchertopdiv,.ol-layerswitcher.ol-forceopen.ol-collapsed .ol-switcherbottomdiv{display:block}.ol-control.ol-layerswitcher .ol-switchertopdiv,.ol-control.ol-layerswitcher .ol-switcherbottomdiv{z-index:2;opacity:1;cursor:pointer;box-sizing:border-box;background:#fff;border-top:2px solid #0000;border-bottom:2px solid #369;height:45px;margin:0 2px;position:absolute;top:0;left:0;right:0}.ol-control.ol-layerswitcher .ol-switcherbottomdiv{border-top:2px solid #369;border-bottom:2px solid #0000;height:2em;top:auto;bottom:0}.ol-control.ol-layerswitcher .ol-switchertopdiv:before,.ol-control.ol-layerswitcher .ol-switcherbottomdiv:before{content:"";opacity:.8;border:10px solid #0000;width:0;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-layerswitcher .ol-switchertopdiv:hover:before,.ol-control.ol-layerswitcher .ol-switcherbottomdiv:hover:before{opacity:1}.ol-control.ol-layerswitcher .ol-switchertopdiv:before{border-top:0;border-bottom-color:#369}.ol-control.ol-layerswitcher .ol-switcherbottomdiv:before{border-top-color:#369;border-bottom:0}.ol-control.ol-layerswitcher .panel-container{clear:both;background-color:#fff;border-radius:0 0 2px 2px;padding:.5em .5em 0;display:block}.ol-layerswitcher .panel{margin:0;padding:0;font-family:Tahoma,Geneva,sans-serif;font-size:.9em;list-style:none;transition:top .3s;position:relative;top:0;overflow:hidden}.ol-layerswitcher .panel ul{clear:both;padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher input[type=radio],.ol-layerswitcher input[type=checkbox]{opacity:0;width:0;height:0;position:absolute}.ol-layerswitcher .panel li{-weblit-transition:-webkit-transform .2s linear;clear:both;box-sizing:border-box;border:1px solid #0000;transition:transform .2s linear;display:block}.ol-layerswitcher .panel li.ol-layer-select{background-color:#003c8833;margin:0 -.5em;padding:0 .5em}.ol-layerswitcher .panel li.drag{opacity:.5;transform:scale(.8)}.ol-dragover{opacity:.8;background:#33669980}.ol-layerswitcher .panel li.forbidden,.forbidden .ol-layerswitcher-buttons div,.forbidden .layerswitcher-opacity div{background:#ff000080;color:red!important}.ol-layerswitcher.drag,.ol-layerswitcher.drag *{cursor:not-allowed!important;cursor:no-drop!important}.ol-layerswitcher.drag .panel li.dropover,.ol-layerswitcher.drag .panel li.dropover *{cursor:pointer!important;cursor:n-resize!important;cursor:ns-resize!important;cursor:-webkit-grab!important;cursor:grab!important;cursor:-webkit-grabbing!important;cursor:grabbing!important}.ol-layerswitcher .panel li.dropover{background:#33669980}.ol-layerswitcher .panel li label{white-space:nowrap;text-overflow:ellipsis;max-width:12em;height:1.4em;padding:0 0 0 1.7em;display:inline-block;position:relative;overflow:hidden}.ol-layerswitcher .panel li label span{text-overflow:ellipsis;width:100%;height:100%;padding-right:.2em;display:inline-block;overflow:hidden}.ol-layerswitcher [type=radio]+label:before,.ol-layerswitcher [type=checkbox]+label:before,.ol-layerswitcher [type=radio]:checked+label:after,.ol-layerswitcher [type=checkbox]:checked+label:after{content:"";box-sizing:border-box;background:#fff;border:2px solid #369;width:1.2em;height:1.2em;position:absolute;top:.1em;left:.1em}.ol-layerswitcher li:has(>div.li-content>.ol-visibility:focus){border-color:#369;box-shadow:inset 0 0 0 1px #369}.ol-layerswitcher [type=radio]+label:before,.ol-layerswitcher [type=radio]+label:after{border-radius:50%}.ol-layerswitcher [type=radio]:checked+label:after{background:#369;width:.6em;height:.6em;margin:.3em}.ol-layerswitcher [type=checkbox]:checked+label:after{background:0 0;border:3px solid #369;border-width:0 3px 3px 0;width:.7em;height:1em;top:-.05em;left:.55em;transform:rotate(45deg);box-shadow:1px 0 1px 1px #fff}.ol-layerswitcher .panel li.ol-layer-hidden{opacity:.6}.ol-layerswitcher.ol-collapsed .panel-container{display:none}.ol-layerswitcher.ol-forceopen .panel-container{display:block}.ol-control.ol-layerswitcher .ol-counter{z-index:22;text-align:left;font-size:.65em;line-height:1.5em;display:none;position:absolute;top:0;right:.3em}.ol-control.ol-layerswitcher.ol-counter .ol-counter{display:block}.ol-control.ol-layer-shop .ol-counter{text-align:center;background:#fff;border-radius:50%;width:1.5em;line-height:1.5em;transform:translate(50%,-50%);box-shadow:.5px .5px 2px}.ol-layerswitcher-image>button,.ol-layerswitcher>button{float:right;z-index:10;background-color:#fff;font-size:1.7em;position:relative}.ol-touch .ol-layerswitcher-image>button,.ol-touch .ol-layerswitcher>button{font-size:2.5em}.ol-layerswitcher-image>button:before,.ol-layerswitcher-image>button:after,.ol-layerswitcher>button:before,.ol-layerswitcher>button:after{content:"";border-radius:.15em;width:.75em;height:.75em;position:absolute;transform:scaleY(.8)rotate(45deg)}.ol-layerswitcher-image>button:before,.ol-layerswitcher>button:before{background:#e2e4e1;top:.32em;left:.34em;box-shadow:.1em .1em #325158}.ol-layerswitcher-image>button:after,.ol-layerswitcher>button:after{background:#83bcc5 radial-gradient(circle at .85em .6em,#70b3be 0 .65em,#83bcc5 .65em);top:.22em;left:.34em}.ol-layerswitcher-buttons{float:right;text-align:right;display:block}.ol-layerswitcher-buttons>div{cursor:pointer;text-align:center;vertical-align:middle;color:#fff;background:#369;width:1em;height:1em;margin:2px;line-height:1em;display:inline-block;position:relative}.ol-layerswitcher .panel li>div{display:inline-block;position:relative}.ol-layerswitcher .ol-separator{width:0;height:0;margin:0;padding:0;display:block}.ol-layerswitcher .layerup{float:right;opacity:.5;cursor:move;cursor:ns-resize;background-color:#369;height:2.5em}.ol-layerswitcher .layerup:before,.ol-layerswitcher .layerup:after{content:"";border:.4em solid #0000;border-top-color:#fff;border-bottom:0 solid #fff;width:0;height:0;position:absolute;bottom:3px;left:.1em}.ol-layerswitcher .layerup:after{border-width:0 .4em .4em;top:3px;bottom:auto}.ol-layerswitcher .layerInfo{background:#369;border-radius:100%}.ol-layerswitcher .layerInfo:before{color:#fff;content:"i";text-align:center;width:1.25em;font-size:.8em;font-weight:700;display:block;position:absolute;top:0;left:0}.ol-layerswitcher .layerTrash{background:#369}.ol-layerswitcher .layerTrash:before{color:#fff;content:"×";text-align:center;margin:-.5em 0;font-size:1em;line-height:1em;position:absolute;top:50%;left:0;right:0}.ol-layerswitcher .layerExtent{background:#369}.ol-layerswitcher .layerExtent:before{content:"";border-bottom:1px solid #fff;border-right:1px solid #fff;display:block;position:absolute;inset:6px 2px 3px 6px}.ol-layerswitcher .layerExtent:after{content:"";border-top:1px solid #fff;border-left:1px solid #fff;display:block;position:absolute;inset:3px 6px 6px 2px}.ol-layerswitcher .expend-layers,.ol-layerswitcher .collapse-layers{background-color:#0000;margin:0 2px}.ol-layerswitcher .expend-layers:before,.ol-layerswitcher .collapse-layers:before{content:"";background:#369;width:100%;height:4px;margin-top:-2px;position:absolute;top:50%;left:0}.ol-layerswitcher .expend-layers:after{content:"";background:#369;width:4px;height:100%;margin-left:-2px;position:absolute;top:0;left:50%}.ol-layerswitcher .layerswitcher-opacity{box-sizing:border-box;background:#69c;cursor:pointer;background:linear-gradient(90deg,#003c8800,#003c8899);border:1px solid #369;border-radius:3px;width:120px;height:3px;margin:5px 1em 10px 7px;position:relative;box-shadow:1px 1px 1px #00000080}.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor,.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor:before{z-index:1;background:#003c8880;border-radius:50%;width:20px;height:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor:before{content:"";width:50%;height:50%;position:absolute}.ol-touch .ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor{width:26px;height:26px}.ol-layerswitcher .layerswitcher-opacity-label{font-size:.8em;display:none;position:absolute;bottom:5px;right:-2.5em}.ol-layerswitcher .layerswitcher-opacity-label:after{content:"%"}.ol-layerswitcher .layerswitcher-progress{width:120px;margin:-4px 1em 2px 7px;display:block}.ol-layerswitcher .layerswitcher-progress div{background-color:#369;width:0;height:2px;display:block}.ol-control.ol-layerswitcher-image{text-align:left;transition:all .2s;position:absolute;top:1em;right:.5em}.ol-control.ol-layerswitcher-image.ol-collapsed{transition:none;top:3em}.ol-layerswitcher-image .panel{margin:0;padding:.25em;list-style:none;overflow:hidden}.ol-layerswitcher-image .panel ul{padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher-image.ol-collapsed .panel{display:none}.ol-layerswitcher-image.ol-forceopen .panel{clear:both;display:block}.ol-layerswitcher-image button{float:right;display:none}.ol-layerswitcher-image.ol-collapsed button{display:block;position:relative}.ol-layerswitcher-image li{vertical-align:middle;cursor:pointer;background-color:#fff;border:3px solid #0000;border-radius:4px;width:64px;height:64px;margin:2px;display:inline-block;position:relative;overflow:hidden;box-shadow:1px 1px 4px #00000080}.ol-layerswitcher-image li.ol-layer-hidden{opacity:.5;border-color:#555}.ol-layerswitcher-image li.ol-header{display:none}.ol-layerswitcher-image li img{max-width:100%;position:absolute}.ol-layerswitcher-image li.select,.ol-layerswitcher-image li.ol-visible{border:3px solid red}.ol-layerswitcher-image li p{display:none}.ol-layerswitcher-image li:hover p{color:#fff;text-align:center;background-color:#00000080;height:1.2em;margin:0;font-family:Verdana,Geneva,sans-serif;font-size:.8em;display:block;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.ol-control.ol-legend{z-index:1;background-color:#fff9;max-width:90%;max-height:90%;bottom:.5em;left:.5em;overflow:hidden auto}.ol-control.ol-legend:hover{background-color:#fffc}.ol-control.ol-legend.ol-empty,.ol-control.ol-legend.ol-collapsed{overflow:hidden}.ol-control.ol-legend button{display:none;position:relative}.ol-control.ol-legend.ol-empty button,.ol-control.ol-legend.ol-collapsed button{display:block}.ol-control.ol-legend.ol-uncollapsible button{display:none}.ol-control.ol-legend>ul,.ol-control.ol-legend>canvas{margin:2px}.ol-control.ol-legend button.ol-closebox{cursor:pointer;z-index:1;background:0 0;display:block;position:absolute;top:0;right:0}.ol-control.ol-legend.ol-empty button.ol-closebox,.ol-control.ol-legend.ol-uncollapsible button.ol-closebox,.ol-control.ol-legend.ol-collapsed button.ol-closebox{display:none}.ol-control.ol-legend button.ol-closebox:before{content:"×";color:#003c8880;background:0 0;font-size:1.3em}.ol-control.ol-legend button.ol-closebox:hover:before{color:#003c88}.ol-control.ol-legend .ol-legendImg{display:block}.ol-control.ol-legend.ol-empty .ol-legendImg,.ol-control.ol-legend.ol-collapsed .ol-legendImg{display:none}.ol-control.ol-legend.ol-uncollapsible .ol-legendImg{display:block}.ol-control.ol-legend>button:first-child:before,.ol-control.ol-legend>button:first-child:after{content:"";background-color:currentColor;width:.2em;height:.2em;position:absolute;top:.25em;left:.2em;box-shadow:0 .35em,0 .7em}.ol-control.ol-legend button:first-child:after{width:.6em;height:.15em;top:.27em;left:.55em}ul.ol-legend{width:100%;margin:0;padding:0;list-style:none;position:absolute;top:0;left:0}.ol-control.ol-legend.ol-empty ul,.ol-control.ol-legend.ol-collapsed ul{display:none}.ol-control.ol-legend.ol-uncollapsible ul{display:block}ul.ol-legend li.ol-title{text-align:center;font-weight:700}ul.ol-legend li.ol-title>div:first-child{width:0!important}ul.ol-legend li{white-space:nowrap;padding:0;overflow:hidden}ul.ol-legend li div{vertical-align:top;display:inline-block}.ol-control.ol-legend .ol-legend{display:inline-block}.ol-control.ol-legend.ol-empty .ol-legend,.ol-control.ol-legend.ol-collapsed .ol-legend{display:none}.ol-control.ol-legend.ol-empty button{opacity:.4}.ol-control.ol-mapzone{text-align:left;box-sizing:border-box;max-height:calc(100% - 6em);position:absolute;top:.5em;right:.5em;overflow:hidden}.ol-control.ol-mapzone.ol-collapsed{top:3em}.ol-control.ol-mapzone button{float:right;margin-top:2.5em;position:relative}.ol-touch .ol-control.ol-mapzone button{margin-top:1.67em}.ol-control.ol-mapzone.ol-collapsed button{margin-top:0}.ol-control.ol-mapzone button i{border:.1em solid;border-radius:50%;width:.9em;height:.9em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-control.ol-mapzone button i:before{content:"";background-color:currentColor;border-radius:50%;width:.4em;height:.4em;position:absolute;top:.3em;left:.5em;box-shadow:.05em .3em 0 -.051em,-.05em -.35em 0 -.1em,-.5em -.35em 0 0,-.65em .1em 0 -.03em,-.65em -.05em 0 -.05em}.ol-mapzone>div{width:5em;height:5em;margin:0 .2em 0 0;display:inline-block;position:relative}.ol-mapzone>div:focus{box-shadow:0 0 0 .2em #369}.ol-control.ol-mapzone.ol-collapsed>div{display:none}.ol-mapzone>div p{color:#fff;text-align:center;transform-origin:0 0;cursor:default;width:160%;margin:0;font-family:Lucida Grande,Verdana,Geneva,Lucida,Arial,Helvetica,sans-serif;font-weight:700;position:absolute;bottom:0;overflow:hidden;transform:scaleX(.625)}.ol-notification{background:0 0;border:0;width:150%;margin:0;padding:0;bottom:0}.ol-notification>div,.ol-notification>div:hover{color:#fff;text-align:center;box-sizing:border-box;opacity:1;background-color:#000c;border-radius:4px 4px 0 0;min-width:5em;max-width:calc(66% - 4em);min-height:1em;max-height:5em;padding:.2em .5em;transition:all .3s;position:absolute;bottom:0;left:33.33%;transform:translate(-50%)}.ol-notification.ol-collapsed>div{opacity:0;bottom:-5em}.ol-notification a{color:#9cf;cursor:pointer}.ol-notification .ol-close,.ol-notification .ol-close:hover{padding-right:1.5em}.ol-notification .closeBox{position:absolute;top:0;right:.3em}.ol-notification .closeBox:before{content:"×"}.ol-overlay{color:#fff;box-sizing:border-box;z-index:1;opacity:0;cursor:default;pointer-events:none;z-index:9;background-color:#0006;width:100%;height:100%;padding:1em;transition:all .5s;display:none;position:absolute;top:0;left:0;overflow:hidden}.ol-overlay.slide-up{transform:translateY(100%)}.ol-overlay.slide-down{transform:translateY(-100%)}.ol-overlay.slide-left{transform:translate(-100%)}.ol-overlay.slide-right{transform:translate(100%)}.ol-overlay.zoom{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)}.ol-overlay.zoomout{transform:scale(3)}.ol-overlay.zoomrotate{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)rotate(360deg)}.ol-overlay.stretch{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scaleX(0)}.ol-overlay.stretchy{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scaleY(0)}.ol-overlay.wipe{opacity:1}.ol-overlay.flip{transform:perspective(600px)rotateY(180deg)}.ol-overlay.card{opacity:.5;transform:translate(-80%,100%)rotate(-.5turn)}.ol-overlay.book{transform-origin:10%;transform:perspective(600px)rotateY(-180deg)scaleX(.6)}.ol-overlay.book.visible{transform-origin:10%}.ol-overlay.ol-visible{opacity:1;pointer-events:all;inset:0;transform:none}.ol-overlay .ol-closebox{cursor:pointer;z-index:1;width:1em;height:1em;position:absolute;top:1em;right:1em}.ol-overlay .ol-closebox:before{content:"❌";text-align:center;vertical-align:middle;display:block}.ol-overlay .ol-fullscreen-image{position:absolute;inset:0}.ol-overlay .ol-fullscreen-image img{box-sizing:border-box;max-width:100%;max-height:100%;padding:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlay .ol-fullscreen-image.ol-has-title img{padding-bottom:3em}.ol-overlay .ol-fullscreen-image p{text-align:center;background-color:#00000080;margin:0;padding:.5em;position:absolute;bottom:0;left:0;right:0}.ol-control.ol-overview{text-align:left;position:absolute;bottom:.5em;left:.5em}.ol-control.ol-overview .panel{cursor:pointer;background-color:#fff;border:1px solid #369;width:150px;height:150px;margin:2px;display:block}.ol-overview:not(.ol-collapsed) button{z-index:2;position:absolute;bottom:2px;left:2px}.ol-control.ol-overview.ol-collapsed .panel{display:none}.ol-overview.ol-collapsed button:before{content:"»"}.ol-overview button:before{content:"«"}.ol-control-right.ol-overview{left:auto;right:.5em}.ol-control-right.ol-overview:not(.ol-collapsed) button{left:auto;right:2px}.ol-control-right.ol-overview.ol-collapsed button:before{content:"«"}.ol-control-right.ol-overview button:before{content:"»"}.ol-control-top.ol-overview{top:5em;bottom:auto}.ol-control-top.ol-overview:not(.ol-collapsed) button{top:2px;bottom:auto}.ol-permalink{position:absolute;top:.5em;right:2.5em}.ol-touch .ol-permalink{right:3em}.ol-permalink button i{width:1em;height:1em;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-permalink button i:before{content:"↗";box-sizing:border-box;border:0 solid;border-width:1px 0 0 1px;width:.3em;height:1em;padding:0 .2em;position:absolute;top:0;left:0}.ol-permalink button i:after{content:"";box-sizing:border-box;border:1px solid;border-width:0 1px 1px 0;width:1em;height:.3em;padding:.2em;position:absolute;bottom:0;right:0}.ol-control.ol-print{top:.5em;left:3em}.ol-control.ol-print button:before{content:"";width:.9em;height:.35em;position:absolute;top:50%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 .1em,inset .55em 0,0 .2em 0 -.1em}.ol-control.ol-print button:after{content:"";width:.7em;height:.6em;position:absolute;top:25%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 .15em}.ol-ext-print-dialog{width:100%;height:100%}.ol-ext-print-dialog>form .ol-closebox{z-index:1;color:#999;left:16.5em;right:auto}.ol-ext-print-dialog .ol-content[data-status=printing]{opacity:.5}.ol-ext-print-dialog .ol-content .ol-error{color:#ff0;text-align:center;background:#b00;margin:0 -1em;padding:1em .5em;font-weight:700;display:none}.ol-ext-print-dialog .ol-content[data-status=error] .ol-error{display:block}.ol-ext-print-dialog>form,.ol-ext-print-dialog.ol-visible>form{max-width:100%;max-height:100%;width:unset;background-color:#eee;padding:0;transition:none;inset:1em;transform:none}.ol-ext-print-dialog .ol-print-map{width:calc(100% - 18em);position:absolute;top:0;bottom:0;right:0;overflow:hidden}.ol-ext-print-dialog .ol-print-map .ol-page{box-sizing:border-box;background:#fff;position:absolute;top:50%;left:50%}.ol-ext-print-dialog .ol-print-map .ol-page.margin{box-sizing:content-box}.ol-ext-print-dialog .ol-map{width:100%;height:100%}.ol-ext-print-dialog .ol-print-map .ol-control{display:none!important}.ol-ext-print-dialog .ol-print-param{box-sizing:border-box;background-color:#fff;width:18em;padding:1em;position:absolute;top:0;bottom:0;left:0;overflow-x:hidden}.ol-ext-print-dialog .ol-print-param h2{color:#003c88b3;font-size:1.1em;display:block}.ol-ext-print-dialog .ol-print-param ul{padding:0;list-style:none}.ol-ext-print-dialog .ol-print-param li{margin:.5em 0;font-size:.9em;position:relative}.ol-ext-print-dialog .ol-print-param li.hidden{display:none}.ol-ext-print-dialog .ol-print-param label{vertical-align:middle;width:8em;display:inline-block}.ol-ext-print-dialog select{vertical-align:middle;outline:none}.ol-ext-print-dialog .ol-orientation{text-align:center}.ol-ext-print-dialog .ol-orientation label{cursor:pointer;width:7em;position:relative}.ol-ext-print-dialog .ol-orientation input{opacity:0;width:0;height:0;position:absolute}.ol-ext-print-dialog .ol-orientation span{width:80%;padding:3.5em 0 .2em;display:block;position:relative}.ol-ext-print-dialog .ol-orientation span:before{content:"";color:#333;opacity:.5;background-color:currentColor;border:1px solid;border-radius:0 1em 0 0;width:2em;height:2.6em;position:absolute;bottom:1.5em;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:inset 1.3em -1.91em #ddd}.ol-ext-print-dialog .ol-orientation .landscape span:before{width:2.6em;height:2em;margin:.2em 0;box-shadow:inset 1.91em -1.3em #ddd}.ol-ext-print-dialog .ol-orientation input:checked+span{opacity:1;box-shadow:0 0 .2em #00000080}.ol-ext-print-dialog .ol-ext-toggle-switch span{position:absolute;top:50%;right:-2em;transform:translateY(-50%)}.ol-print-title input[type=text]{width:calc(100% - 6em);margin-top:.5em;margin-left:6em}.ol-ext-print-dialog .ol-size option:first-child{font-style:italic}.ol-ext-print-dialog .ol-saveas,.ol-ext-print-dialog .ol-savelegend{text-align:center}.ol-ext-print-dialog .ol-saveas select,.ol-ext-print-dialog .ol-savelegend select{color:#fff;background-color:#003c88b3;border:0;max-width:12em;margin:1em 0 0;padding:.5em;font-size:1em;font-weight:700}.ol-ext-print-dialog .ol-saveas select option,.ol-ext-print-dialog .ol-savelegend select option{color:#666;background-color:#fff}.ol-ext-print-dialog .ol-savelegend select{margin-top:0}.ol-ext-print-dialog .ol-ext-buttons{text-align:right;border-top:1px solid #ccc;margin:0 -1em;padding:.8em .5em}.ol-ext-print-dialog button{color:#333;background:0 0;border:1px solid #999;margin:0 .2em;padding:.3em 1em;font-size:1em}.ol-ext-print-dialog button[type=submit]{color:#fff;background-color:#003c88b3;font-weight:700}.ol-ext-print-dialog .ol-clipboard-copy{pointer-events:none;color:#fff;opacity:0;background-color:#00000080;border-radius:1em;width:fit-content;padding:.5em 1em;transition:all;position:absolute;top:0;left:50%;transform:translate(-50%)}.ol-ext-print-dialog .ol-clipboard-copy.visible{animation:1s ol-clipboard-copy}.ol-ext-print-dialog .ol-print-map .ol-control.ol-canvas-control,.ol-ext-print-dialog .ol-print-map .ol-control.ol-print-compass{display:block!important}.ol-ext-print-dialog .ol-print-map .ol-control.olext-print-compass{width:60px;height:60px;margin:20px;top:0;right:0}.ol-ext-print-dialog .ol-orientation input:focus-visible+span,.ol-ext-print-dialog select:focus-visible{outline:2px solid #000}@keyframes ol-clipboard-copy{0%{opacity:0;top:0}80%{opacity:1;top:-3em}to{opacity:0;top:-3em}}@media print{body.ol-print-document{margin:0!important;padding:0!important}body.ol-print-document>*{display:none!important}body.ol-print-document>.ol-ext-print-dialog{display:block!important}body.ol-print-document>.ol-ext-print-dialog .ol-content{max-height:unset!important;max-width:unset!important;width:unset!important;height:unset!important}.ol-ext-print-dialog>form,.ol-ext-print-dialog{position:unset;-webkit-box-shadow:none;box-shadow:none;border:0;background:0 0!important}.ol-ext-print-dialog>form>*,.ol-ext-print-dialog .ol-print-param{background:0 0;display:none!important}.ol-ext-print-dialog .ol-content{background:0 0;border:0;display:block!important}.ol-ext-print-dialog .ol-print-map{position:unset;background:0 0;width:auto;overflow:visible}.ol-ext-print-dialog .ol-print-map .ol-page{position:unset;-webkit-box-shadow:none!important;box-shadow:none!important;transform:none!important}}@media (width<=25em){.ol-ext-print-dialog .ol-print-param{width:13em}.ol-ext-print-dialog .ol-print-map{width:calc(100% - 13em)}.ol-ext-print-dialog .ol-print-param .ol-print-title input[type=text]{width:100%;margin:0}}.ol-ext-print-dialog2x .ol-map,.ol-ext-print-dialog2x .ol-map2{width:100%;height:50%}.ol-ext-print-dialog2x[data-orientation=landscape] .ol-map,.ol-ext-print-dialog2x[data-orientation=landscape] .ol-map2{width:50%;height:100%;display:inline-block}.ol-ext-print-dialog2x[data-clip-map] .ol-map,.ol-ext-print-dialog2x[data-swipe-orientation] .ol-map{width:100%!important;height:100%!important}.ol-ext-print-dialog2x[data-clip-map] .ol-map2,.ol-ext-print-dialog2x[data-swipe-orientation] .ol-map2{top:-100%;left:0;width:100%!important;height:100%!important;position:relative!important}.ol-profile{-webkit-user-select:none;user-select:none;position:relative}.ol-control.ol-profile{text-align:right;position:absolute;top:.5em;right:3em;overflow:hidden}.ol-profile .ol-zoom-out{cursor:pointer;border:1px solid #000;border-radius:2px;width:1em;height:1em;padding:0;position:absolute;top:10px;right:10px}.ol-profile .ol-zoom-out:before{content:"";background:currentColor;width:60%;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-profile .ol-inner{padding:.5em;font-size:.8em;position:relative}.ol-control.ol-profile .ol-inner{background-color:#ffffffb3;margin:2.3em 2px 2px;display:block}.ol-control.ol-profile.ol-collapsed .ol-inner{display:none}.ol-profile canvas{display:block}.ol-profile button{display:block;position:absolute;right:0;overflow:hidden}.ol-profile button i{width:1em;height:1em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-profile button i:before,.ol-profile button i:after{content:"";background-color:currentColor;width:1em;height:.9em;display:block;position:absolute;transform:scaleX(.8)translate(-.25em,.5em)rotate(45deg)}.ol-profile button i:after{transform:scaleX(.8)translate(.35em,.7em)rotate(45deg)}.ol-profile.ol-collapsed button{position:static}.ol-profile .ol-profilebar,.ol-profile .ol-profilecursor{pointer-events:none;width:1px;display:none;position:absolute}.ol-profile .ol-profilecursor{width:0;height:0}.ol-profile .ol-profilecursor:before{content:"";pointer-events:none;width:5px;height:5px;margin:-2px;display:block}.ol-profile .ol-profilebar,.ol-profile .ol-profilecursor:before{background:red}.ol-profile table{text-align:center;border-collapse:collapse;width:100%;margin-top:.5em}.ol-profile table tr{border-top:1px solid #00000040;margin:.1em 0}.ol-profile table td{padding:2px}.ol-profile table span{display:block}.ol-profile table span.elevationGain,.ol-profile table span.elevationLoss{display:inline-block}.ol-profilepopup{white-space:nowrap;background-color:#ffffff80;margin:.5em;padding:0 .5em;position:absolute;top:-1em}.ol-profilepopup.ol-left{right:0}.ol-profile table .track-info{display:table-row}.ol-profile table .point-info,.ol-profile .over table .track-info{display:none}.ol-profile .over table .point-info{display:table-row}.ol-profile p{text-align:center;margin:0}.ol-control.ol-progress-bar{background-color:#0000;padding:0;position:absolute;inset:0;pointer-events:none!important}.ol-control.ol-progress-bar>.ol-bar{box-sizing:border-box;background-color:#003c8880;width:0;height:.5em;transition:width .2s;position:absolute;bottom:0;left:0}.ol-progress-bar>.ol-waiting{display:none}.ol-viewport .ol-control.ol-progress-bar>.ol-waiting{color:#fff;font-size:2em;animation:1s linear infinite ol-progress-bar-blink;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes ol-progress-bar-blink{0%,30%{visibility:hidden}to{visibility:visible}}.ol-control.ol-routing{max-height:90%;top:.5em;left:3em;overflow-y:auto}.ol-touch .ol-control.ol-routing{left:3.5em}.ol-control.ol-routing.ol-searching{opacity:.5}.ol-control.ol-routing .ol-car,.ol-control.ol-routing>button{position:relative}.ol-control.ol-routing .ol-car:after,.ol-control.ol-routing>button:after{content:"";clip:rect(0 1em .5em -1em);border-radius:40% 50% 0 0/50% 70% 0 0;width:.78em;height:.6em;position:absolute;top:.35em;left:.4em;box-shadow:inset 0 0 0 .065em,-.35em .14em 0 -.09em,inset 0 -.37em,inset -.14em .005em}.ol-control.ol-routing .ol-car:before,.ol-control.ol-routing>button:before{content:"";border-radius:50%;width:.28em;height:.28em;position:absolute;top:.73em;left:.2em;box-shadow:inset 0 0 0 1em,.65em 0}.ol-control.ol-routing .ol-pedestrian:after{content:"";border-top:.2em solid #0000;width:.3em;height:.4em;position:absolute;top:.25em;left:50%;transform:translate(-50%);box-shadow:inset .3em 0,.1em .5em 0 -.1em,-.1em .5em 0 -.1em,.25em .1em 0 -.1em,-.25em .1em 0 -.1em}.ol-control.ol-routing .ol-pedestrian:before{content:"";background-color:currentColor;border-radius:50%;width:.3em;height:.3em;position:absolute;top:.1em;left:50%;transform:translate(-50%)}.ol-control.ol-routing .content{margin:.5em}.ol-control.ol-routing.ol-collapsed .content,.ol-routing .ol-search.ol-collapsed ul,.ol-routing .ol-search ul .copy{display:none}.ol-routing .content .search-input>div>*{vertical-align:top;display:inline-block}.ol-routing .ol-result ul{list-style:none;display:block}.ol-routing .ol-result li{min-height:1.65em;position:relative}.ol-routing .ol-result li i{font-size:.8em;font-weight:700;display:block}.ol-routing .ol-result li:before{content:"";transform-origin:50% 125%;border:.4em solid #0000;border-top-width:.6em;border-bottom:.6em solid #369;position:absolute;top:-.8em;left:-1.75em;box-shadow:0 .65em 0 -.25em #369}.ol-routing .ol-result li:after{content:"";background:#369;border-radius:.1em;width:.25em;height:.6em;position:absolute;top:.6em;left:-1.5em}.ol-routing .ol-result li.R:before{transform:rotate(90deg)}.ol-routing .ol-result li.FR:before{transform:rotate(45deg)}.ol-routing .ol-result li.L:before{transform:rotate(-90deg)}.ol-routing .ol-result li.FL:before{transform:rotate(-45deg)}.ol-routing .content>i{vertical-align:middle;margin:0 .3em 0 .1em;font-style:normal}.ol-routing .ol-button,.ol-routing .ol-button:focus,.ol-routing .ol-pedestrian,.ol-routing .ol-car{color:#003c88;opacity:.5;vertical-align:middle;cursor:pointer;background-color:#0000;outline:none;width:1.4em;height:1.4em;margin:0 .1em;font-size:1.1em;display:inline-block;position:relative}.ol-routing .ol-constraints{display:block}.ol-routing .ol-button:hover,.ol-routing .ol-button.selected,.ol-routing i.selected{opacity:1;background:0 0}.ol-routing .ol-method{display:block}.ol-control.ol-routing{background-color:#ffffff40}.ol-control.ol-routing:hover{background-color:#ffffffbf}.search-input>div>button:before{content:"±"}.ol-viewport .ol-scale{text-align:center;transform-origin:0 0;background-color:#ffffffbf;bottom:2.5em;left:.5em;transform:scaleX(.8)}.ol-viewport .ol-scale input{text-align:center;background:0 0;border:0;width:8em}.ol-search{top:.5em;left:3em}.ol-touch .ol-search{left:3.5em}.ol-search button{float:left;top:2px;left:2px}.ol-control.ol-search>button:before{content:"";box-sizing:border-box;background-color:#0000;border:.12em solid;border-radius:100%;width:.7em;height:.7em;position:absolute;top:.35em;left:.35em}.ol-control.ol-search>button:after{content:"";background-color:currentColor;border-radius:.05em;width:.45em;height:.15em;position:absolute;top:1.1em;left:.95em;transform:rotate(45deg);box-shadow:-.18em 0 0 -.03em}.ol-search button.ol-revers{float:none;vertical-align:bottom;background-image:none;display:inline-block;position:relative;top:0;left:0}.ol-search.ol-revers button.ol-revers{background-color:#00883c80}.ol-control.ol-search.ol-collapsed button.ol-revers{display:none}.ol-search button.ol-revers:before{content:"";box-sizing:border-box;border:.1em solid;border-radius:50%;width:.55em;height:.55em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-search button.ol-revers:after{content:"";background-color:#0000;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.35em 0,0 .35em,-.35em 0,0 -.35em}.ol-search input{box-sizing:border-box;border:0;height:1.375em;margin:1px 1px 1px 2px;padding-left:.3em;font-size:1.14em;transition:all .1s;display:inline-block}.ol-touch .ol-search input,.ol-touch .ol-search ul{font-size:1.5em}.ol-search.ol-revers>ul,.ol-control.ol-search.ol-collapsed>*{display:none}.ol-control.ol-search.ol-collapsed>button{display:block}.ol-search ul{clear:both;cursor:pointer;z-index:1;background:#fff;max-width:17em;margin:0;padding:0;list-style:none;display:block;overflow-x:hidden}.ol-search ul li{white-space:nowrap;text-overflow:ellipsis;padding:.1em .5em;overflow:hidden}.ol-search ul li.select,.ol-search ul li:hover{color:#fff;background-color:#003c8880}.ol-search ul li img{float:left;max-height:2em}.ol-search li.copy{color:#fff;background:#00000080}.ol-search li.copy a{color:#fff;text-decoration:none}.ol-search.searching:before{content:"";z-index:2;background:red;height:3px;animation:.5s linear infinite alternate ol-pulse;position:absolute;top:1.6em;left:0}@keyframes ol-pulse{0%{left:0;right:95%}50%{left:30%;right:30%}to{left:95%;right:0}}.ol-control.ol-search.IGNF-parcelle{background-color:#ffffffb3;padding-bottom:.2em}.ol-search.IGNF-parcelle input{width:14.5em}.ol-search.IGNF-parcelle input:read-only{opacity:.8;background:#ccc}.ol-search.IGNF-parcelle.ol-collapsed-list>ul.autocomplete{display:none}.ol-search.IGNF-parcelle label{clear:both;display:block}.ol-search.IGNF-parcelle>div input{text-align:right}.ol-search.IGNF-parcelle>div input,.ol-search.IGNF-parcelle>div label{box-sizing:border-box;text-overflow:ellipsis;width:4em;margin:.1em;font-size:1em;display:inline-block;overflow:hidden}.ol-search.IGNF-parcelle>div label{letter-spacing:-.04em}.ol-search.IGNF-parcelle ul.autocomplete-page{text-align:center;width:100%;margin-top:.5em;display:none}.ol-search.IGNF-parcelle.ol-collapsed-list ul.autocomplete-parcelle,.ol-search.IGNF-parcelle.ol-collapsed-list ul.autocomplete-page{display:block}.ol-search.IGNF-parcelle.ol-collapsed ul.autocomplete-page,.ol-search.IGNF-parcelle.ol-collapsed ul.autocomplete-parcelle,.ol-search.IGNF-parcelle ul.autocomplete-parcelle{display:none}.ol-search.IGNF-parcelle ul.autocomplete-page li{color:#fff;background:#003c8880;border-radius:50%;width:1.3em;height:1.3em;margin:0 .1em;padding:.1em;display:inline-block}.ol-search.IGNF-parcelle ul.autocomplete-page li.selected{background:#003c88}.ol-searchgps input.search,.ol-searchcoord input.search{display:none}.ol-control.ol-searchgps>button:first-child,.ol-control.ol-searchcoord>button:first-child{background-image:none}.ol-control.ol-searchgps>button:first-child:before,.ol-control.ol-searchcoord>button:first-child:before{content:"x/y";position:unset;border:unset;border-radius:0;width:auto;height:auto;display:block;transform:scaleX(.8)}.ol-control.ol-searchgps>button:first-child:after,.ol-control.ol-searchcoord>button:first-child:after{content:unset}.ol-control.ol-searchgps .ol-latitude,.ol-control.ol-searchgps .ol-longitude,.ol-control.ol-searchcoord .ol-latitude,.ol-control.ol-searchcoord .ol-longitude{clear:both}.ol-control.ol-searchgps .ol-latitude label,.ol-control.ol-searchgps .ol-longitude label,.ol-control.ol-searchcoord .ol-latitude label,.ol-control.ol-searchcoord .ol-longitude label{text-align:right;transform-origin:0 0;width:5.5em;margin:0 -.8em 0 0;display:inline-block;transform:scaleX(.8)}.ol-control.ol-searchcoord .ol-latitude label,.ol-control.ol-searchcoord .ol-longitude label{width:2em;margin:0}.ol-control.ol-searchgps .ol-latitude input,.ol-control.ol-searchgps .ol-longitude input{max-width:10em}.ol-control.ol-searchgps .ol-ext-toggle-switch{cursor:pointer;float:right;margin:.5em;font-size:.9em}.ol-searchgps .ol-decimal{margin-right:.7em;display:inline-block}.ol-searchgps .ol-dms,.ol-searchgps.ol-dms .ol-decimal{text-align:right;width:3em;display:none}.ol-searchgps.ol-dms .ol-dms{display:inline-block}.ol-searchgps span.ol-dms{text-align:left;width:.5em}.ol-searchgps.ol-control.ol-collapsed button.ol-geoloc,.ol-searchgps.ol-control.ol-collapsed button.ol-centerloc,.ol-searchcoord.ol-control.ol-collapsed button.ol-centerloc,.ol-searchcoord.ol-control.ol-collapsed button.ol-geoloc{display:none}.ol-searchgps button.ol-geoloc,.ol-searchgps button.ol-centerloc,.ol-searchcoord button.ol-centerloc,.ol-searchcoord button.ol-geoloc{float:right;background-image:none;margin-right:3px;position:relative;top:0}.ol-searchgps button.ol-geoloc:before,.ol-searchcoord button.ol-geoloc:before{content:"";border:.1em solid;border-radius:50%;width:.6em;height:.6em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-searchgps button.ol-geoloc:after,.ol-searchcoord button.ol-geoloc:after{content:"";background-color:#0000;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.45em 0,-.45em 0,0 -.45em,0 .45em,.25em 0,-.25em 0,0 -.25em,0 .25em}.ol-searchgps button.ol-centerloc:before,.ol-searchcoord button.ol-centerloc:before{content:"📍";border:0;width:auto;height:auto;padding:0;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-searchgps button.ol-centerloc:after,.ol-searchcoord button.ol-centerloc:after{display:none}.ol-control.ol-select{background-color:#ffffff80;top:.5em;left:3em}.ol-control.ol-select:hover{background-color:#ffffffb3}.ol-touch .ol-control.ol-select{left:3.5em}.ol-control.ol-select>button:before{content:"A";box-sizing:content-box;text-align:center;background-color:#0000;border:.2em solid;border-radius:100%;width:1em;height:1em;font-size:.6em;font-weight:400;line-height:1em;position:absolute;top:.5em;left:.5em}.ol-control.ol-select>button:after{content:"";background-color:currentColor;border-radius:.05em;width:.45em;height:.15em;position:absolute;top:1.15em;left:1em;transform:rotate(45deg);box-shadow:-.18em 0 0 -.03em}.ol-select>div button{float:right;width:auto;height:1.2em;padding:0 .5em;font-weight:400;line-height:1.2em}.ol-select .ol-delete{vertical-align:middle;cursor:pointer;width:1.5em;height:1em;display:inline-block;position:relative}.ol-select .ol-delete:before{content:"×";text-align:center;width:100%;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-select input{font-size:1em}.ol-control.ol-select select{max-width:10em;font-size:1em}.ol-control.ol-select select option.ol-default{color:#999;font-style:italic}.ol-control.ol-select>div{margin:.25em;display:block}.ol-control.ol-select.ol-collapsed>div{display:none}.ol-control.ol-select.ol-select-check{max-width:20em}.ol-control.ol-select label.ol-ext-check{margin-right:1em}.ol-control.ol-select label.ol-ext-toggle-switch span{font-size:1.1em}.ol-select ul{margin:0;padding:0;list-style:none}.ol-control.ol-select input[type=search],.ol-control.ol-select input[type=text]{width:8em}.ol-select .ol-autocomplete{display:inline}.ol-select .ol-autocomplete ul{background:#fff;border:1px solid #999;min-width:10em;font-size:.85em;display:block;position:absolute}.ol-select .ol-autocomplete ul li{padding:0 .5em}.ol-select .ol-autocomplete ul li:hover{color:#fff;background:#003c8880}.ol-select ul.ol-hidden{display:none}.ol-select-multi li>div:hover,.ol-select-multi li>div.ol-control.ol-select{top:unset;left:unset;background:0 0;position:relative}.ol-select-multi li>div>button,.ol-select-multi li>div .ol-ok{display:none}.ol-select-multi li .ol-control.ol-select.ol-collapsed>div,.ol-select-multi li>div>div{display:block}.ol-control.ol-status{color:#fff;box-sizing:border-box;background:#0003;border-radius:0;width:100%;padding:.3em 3em;font-size:.9em;display:none;top:0;left:0;pointer-events:none!important}.ol-control.ol-status.ol-visible{display:initial}.ol-control.ol-status.ol-bottom{top:auto;bottom:0}.ol-control.ol-status.ol-left{width:auto;padding:.3em .5em .3em 3em;top:0;bottom:0}.ol-control.ol-status.ol-right{width:auto;padding:.3em 3em .3em .5em;inset:0 0 0 auto}.ol-control.ol-status.ol-center{top:50%;transform:translateY(-50%)}.ol-control.ol-storymap{background-color:#ffffff80;border-radius:.5em;max-width:35%;height:auto;position:absolute;top:.5em;bottom:.5em;left:.5em}.ol-storymap{height:100%;padding:0;position:relative;overflow:hidden}.ol-storymap>div{scroll-behavior:smooth;-webkit-user-select:none;user-select:none;height:100%;padding:0;position:relative;overflow:hidden}.ol-storymap>div.ol-move{scroll-behavior:unset}.ol-control.ol-storymap .chapter{padding:.5em;position:relative;overflow:hidden}.ol-control.ol-storymap .chapter:last-child{margin-bottom:100%}.ol-storymap .chapter{cursor:pointer;opacity:.4}.ol-storymap .chapter.ol-select{cursor:default;opacity:1;background-color:#fffc}.ol-storymap .ol-scroll-top,.ol-storymap .ol-scroll-next{color:#003c8880;text-align:center;cursor:pointer;min-height:1.7em;position:relative}.ol-storymap .ol-scroll-next span{padding-bottom:1.4em;display:block}.ol-storymap .ol-scroll-top span{padding-top:1.4em;display:block}.ol-storymap .ol-scroll-top:before,.ol-storymap .ol-scroll-next:before{content:"";pointer-events:none;border:.3em solid;border-color:#0000 currentColor currentColor #0000;border-radius:.3em;width:.8em;height:.8em;animation:.35s linear infinite alternate ol-bounce-bottom;display:block;position:absolute;left:50%;transform:translate(-50%)rotate(45deg)}.ol-storymap .ol-scroll-top:before{border-color:currentColor #0000 #0000 currentColor;animation:.35s linear infinite alternate ol-bounce-top}@keyframes ol-bounce-top{0%{top:-.2em}to{top:.5em}}@keyframes ol-bounce-bottom{0%{bottom:-.2em}to{bottom:.5em}}.ol-storymap img[data-title]{cursor:pointer}.ol-storymap.scrollLine,.ol-storymap.scrollBox{background-color:#0000;border-radius:0;max-width:40%;top:0;bottom:0}.ol-storymap.scrollLine .chapter,.ol-storymap.scrollBox .chapter{background-color:#fff;margin:100% 0}.ol-storymap.scrollLine .chapter:first-child,.ol-storymap.scrollBox .chapter:first-child{margin-top:3em}.ol-storymap.scrollLine .chapter.ol-select,.ol-storymap.scrollLine .chapter,.ol-storymap.scrollBox .chapter.ol-select,.ol-storymap.scrollBox .chapter{opacity:1}.ol-storymap.scrollLine .ol-scrolldiv,.ol-storymap.scrollBox .ol-scrolldiv{padding-right:30px}.ol-storymap.scrollLine:before,.ol-storymap.scrollBox:before{content:"";background-color:#fff;width:2px;height:100%;position:absolute;top:0;bottom:0;right:14px}.ol-storymap.scrollLine .ol-scroll,.ol-storymap.scrollBox .ol-scroll{width:1px;padding:0;transition:none;right:15px;overflow:visible;opacity:1!important;display:block!important}.ol-storymap.scrollLine .ol-scroll>div{-webkit-box-shadow:unset;box-shadow:unset;background-color:#0000;left:50%;overflow:visible;transform:translate(-50%)}.ol-storymap.scrollLine .ol-scroll>div:before{content:"";background-color:#0af;border:2px solid #fff;border-radius:50%;width:10px;height:10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-storymap.scrollBox .ol-scroll>div{display:none}.ol-storymap.scrollBox .chapter:after{content:"";box-sizing:border-box;z-index:1;border:5px solid #0000;border-radius:50%;width:20px;height:20px;position:absolute;top:min(30%,5em);right:-24.5px;box-shadow:0 0 0 2px #fff,inset 0 0 0 15px #0af}.ol-swipe{-ms-touch-action:none;touch-action:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-swipe:before{content:"";z-index:-1;background:#fff;width:4px;position:absolute;top:-5000px;bottom:-5000px;left:50%;transform:translate(-2px)}.ol-swipe.horizontal:before{width:auto;height:4px;inset:50% -5000px auto}.ol-swipe,.ol-swipe button{cursor:ew-resize}.ol-swipe.horizontal,.ol-swipe.horizontal button{cursor:ns-resize}.ol-swipe:after,.ol-swipe button:before,.ol-swipe button:after{content:"";background:currentColor;width:2px;position:absolute;top:25%;bottom:25%;left:50%;transform:translate(-1px)}.ol-swipe button:after{transform:translate(4px)}.ol-swipe button:before{transform:translate(-6px)}.ol-control.ol-timeline{background-color:#fff6;transition:all .3s;bottom:0;left:0;right:0}.ol-control.ol-timeline.ol-collapsed{transform:translateY(100%)}.ol-timeline{padding:2px 0 0;overflow:hidden}.ol-timeline .ol-scroll{scroll-behavior:smooth;height:6em;padding:0 50%;line-height:1em;overflow:hidden}.ol-timeline .ol-scroll.ol-move{scroll-behavior:unset}.ol-timeline.ol-hasbutton .ol-scroll{margin-left:1.5em;padding:0 calc(50% - .75em)}.ol-timeline .ol-buttons{z-index:10;background:#ffffff80;width:1.5em;display:none;position:absolute;top:0;bottom:0;left:0}.ol-timeline.ol-hasbutton .ol-buttons{display:block}.ol-timeline .ol-buttons button{margin:1px;font-size:1em;position:relative}.ol-timeline .ol-buttons .ol-zoom-in:before,.ol-timeline .ol-buttons .ol-zoom-out:before{content:"+";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-timeline .ol-buttons .ol-zoom-out:before{content:"−"}.ol-timeline .ol-scroll>div{height:100%;position:relative}.ol-timeline .ol-scroll .ol-times{background:#ffffff80;height:1em;position:absolute;bottom:0;left:-1000px;right:-1000px}.ol-timeline .ol-scroll .ol-time{color:#999;font-size:.7em;position:absolute;bottom:0;transform:translate(-50%)}.ol-timeline .ol-scroll .ol-time.ol-year{color:#666;z-index:1}.ol-timeline .ol-scroll .ol-time:before{content:"";border-left:1px solid;height:500px;position:absolute;bottom:1.2em;left:50%}.ol-timeline .ol-scroll .ol-features{margin:0 0 0 200px;position:absolute;inset:0 -1000px 1em -200px;overflow:hidden}.ol-timeline .ol-scroll .ol-feature{color:#999;cursor:pointer;box-sizing:border-box;background:#fff;border:1px solid #ccc;max-width:3em;min-height:1em;max-height:2.4em;padding:0 .5em 0 0;font-size:.7em;line-height:1.2em;transition:all .3s;position:absolute;top:0;overflow:hidden}.ol-timeline.ol-zoomhover .ol-scroll .ol-feature:hover,.ol-timeline.ol-zoomhover .ol-scroll .ol-feature.ol-select{z-index:1;background:#eee;transform:scale(1.2)}.ol-timeline .ol-center-date{z-index:2;pointer-events:none;opacity:.4;background-color:red;width:2px;height:100%;display:none;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.ol-timeline.ol-hasbutton .ol-center-date{left:calc(50% + .75em)}.ol-timeline.ol-pointer .ol-center-date{display:block}.ol-timeline.ol-pointer .ol-center-date:before,.ol-timeline.ol-pointer .ol-center-date:after{content:"";border:.3em solid #0000;border-width:.3em .25em;position:absolute;left:50%;transform:translate(-50%)}.ol-timeline.ol-pointer .ol-center-date:before{border-top-color:red;top:0}.ol-timeline.ol-pointer .ol-center-date:after{border-bottom-color:red;bottom:0}.ol-timeline.ol-interval .ol-center-date{box-sizing:content-box;opacity:.2;background-color:#0000;border:0 solid #000;border-width:0 10000px;display:block}.ol-control.ol-videorec{white-space:nowrap;top:0;left:50%;transform:translate(-50%)}.ol-control.ol-videorec button{vertical-align:middle;display:inline-block;position:relative}.ol-control.ol-videorec button:before{content:"";background-color:currentColor;width:.8em;height:.8em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-videorec button.ol-start:before{background-color:#c00;border-radius:50%;width:.9em;height:.9em}.ol-control.ol-videorec button.ol-pause:before{background-color:#0000;width:.2em;box-shadow:-.2em 0,.2em 0}.ol-control.ol-videorec button.ol-resume:before{box-sizing:border-box;background:0 0;border:.4em solid #0000;border-left:.6em solid;border-right-width:0;width:auto}.ol-control.ol-videorec button.ol-stop,.ol-control.ol-videorec button.ol-pause,.ol-control.ol-videorec button.ol-resume,.ol-control.ol-videorec[data-state=rec] .ol-start,.ol-control.ol-videorec[data-state=pause] .ol-start{display:none}.ol-control.ol-videorec[data-state=rec] .ol-stop,.ol-control.ol-videorec[data-state=pause] .ol-stop,.ol-control.ol-videorec[data-state=rec] .ol-pause,.ol-control.ol-videorec[data-state=pause] .ol-resume{display:inline-block}.ol-control.ol-wmscapabilities{top:.5em;right:2.5em}.ol-touch .ol-control.ol-wmscapabilities{right:3em}.ol-control.ol-wmscapabilities.ol-hidden{display:none}.ol-control.ol-wmscapabilities button:before{content:"+";position:absolute;top:calc(50% - .35em);left:50%;transform:translate(-50%,-50%)}.ol-control.ol-wmscapabilities button:after{content:"";background:0 0;border:.15em solid #0000;border-width:0 .15em .15em 0;border-radius:.1em 0;width:.75em;height:.75em;position:absolute;top:calc(50% - .05em);left:50%;transform:scaleY(.6)translate(-50%,-50%)rotate(45deg);box-shadow:inset -.18em -.18em,-.4em .1em 0 -.25em,.1em -.35em 0 -.25em,.15em .15em}.ol-wmscapabilities .ol-searching{opacity:.5}.ol-wmscapabilities .ol-searching .ol-url:after{content:"";background-color:currentColor;border-radius:50%;width:.7em;height:.7em;animation:2s linear infinite ol-wmscapabilities-rotate;display:block;position:absolute;top:6em;left:calc(50% - .35em);box-shadow:0 1em,0 -1em,1em 0,-1em 0}@keyframes ol-wmscapabilities-rotate{to{transform:rotate(360deg)}}.ol-wmscapabilities .ol-url input{box-sizing:border-box;width:calc(100% - 10em);min-width:min(100%,20em)}.ol-wmscapabilities .ol-url select{width:2em;height:100%;padding:1px}.ol-wmscapabilities .ol-url button{width:7.5em;margin-left:.5em}.ol-wmscapabilities .ol-result{margin-top:.5em;display:none}.ol-wmscapabilities .ol-result.ol-visible{display:block}.ol-wmscapabilities .ol-select-list{box-sizing:border-box;border:1px solid #369;border-radius:0;width:calc(100% - 120px);max-height:14.5em;font-size:1em;position:relative;overflow-x:hidden}.ol-wmscapabilities .ol-select-list option{cursor:pointer;box-sizing:border-box;text-overflow:ellipsis;width:100%;padding:.1em .5em 0;overflow:hidden}.ol-wmscapabilities .ol-select-list .level-1{padding-left:1em}.ol-wmscapabilities .ol-select-list .level-2{padding-left:1.5em}.ol-wmscapabilities .ol-select-list .level-3{padding-left:2em}.ol-wmscapabilities .ol-select-list .level-4{padding-left:2.5em}.ol-wmscapabilities .ol-select-list .level-5{padding-left:3em}.ol-wmscapabilities .ol-select-list .ol-info{font-style:italic}.ol-wmscapabilities .ol-select-list .ol-title{background-color:#003c881a}.ol-wmscapabilities .ol-select-list option:hover{color:#fff;background-color:#003c8880}.ol-wmscapabilities .ol-select-list .selected{color:#fff;background-color:#003c88b3}.ol-wmscapabilities .ol-preview{float:right;color:#666;text-align:center;background:#003c881a;width:100px;margin-left:10px;padding:0 5px 5px}.ol-wmscapabilities .ol-preview.tainted{float:right;color:#666;text-align:center;background:#88003c1a;width:100px;margin-left:10px;padding:0 5px 5px}.ol-wmscapabilities .ol-preview img{background:#fff;width:100%;display:block}.ol-wmscapabilities .ol-legend{max-width:100%;display:none}.ol-wmscapabilities .ol-legend.visible{display:block}.ol-wmscapabilities .ol-buttons{clear:both;text-align:right}.ol-wmscapabilities .ol-data p{margin:0}.ol-wmscapabilities .ol-data p.ol-title{margin:1em 0 .5em;font-weight:700}.ol-wmscapabilities .ol-error{color:#800}.ol-wmscapabilities ul.ol-wmsform{padding:0;list-style:none;display:none}.ol-wmscapabilities ul.ol-wmsform.visible{display:block}.ol-wmscapabilities .ol-wmsform label{text-align:right;width:calc(40% - .5em);margin-right:.5em;display:inline-block}.ol-wmscapabilities .ol-wmsform input{box-sizing:border-box;width:60%;display:inline-block}.ol-wmscapabilities .ol-wmsform input[type=checkbox]{width:auto}.ol-wmscapabilities .ol-wmsform button{float:right;margin:1em 0}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] input{width:calc(60% - 2em)}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button{vertical-align:middle;color:#444;width:2em;height:1.6em;margin:0;position:relative}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:before,.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:after{content:"";border:.1em solid;width:.25em;height:.9em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)skewY(-15deg)}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:after{transform:translate(.4em)translate(-50%,-50%)skewY(15deg);box-shadow:-.8em .25em}.ol-ext-dialog.ol-wmscapabilities form{width:600px;min-height:15em;top:15%;transform:translate(-50%,-15%)}.ol-ext-dialog.ol-wmscapabilities .ol-content{max-height:calc(100vh - 6em)}.ol-ext-dialog.ol-wmtscapabilities [data-param=map],.ol-ext-dialog [data-param=style]{display:none}.ol-ext-dialog.ol-wmtscapabilities [data-param=style]{display:list-item}.ol-ext-dialog.ol-wmtscapabilities [data-param=proj],.ol-ext-dialog.ol-wmtscapabilities [data-param=version]{opacity:.6;pointer-events:none}.ol-ext-dialog.ol-wmscapabilities button.ol-wmsform{text-align:center;width:1.8em}.ol-ext-dialog.ol-wmscapabilities button.ol-wmsform:before{content:"+"}.ol-ext-dialog.ol-wmscapabilities .ol-form button.ol-wmsform:before{content:"-"}.ol-ext-dialog.ol-wmscapabilities .ol-form button.ol-load,.ol-ext-dialog.ol-wmscapabilities .ol-form .ol-legend{display:none}.ol-ext-dialog.ol-wmscapabilities .ol-form ul.ol-wmsform{clear:both;display:block}.ol-target-overlay .ol-target{border:1px solid #0000;width:0;height:20px;display:block;box-shadow:0 0 1px 1px #fff}.ol-target-overlay .ol-target:after,.ol-target-overlay .ol-target:before{content:"";border:1px solid #369;width:20px;height:0;display:block;position:absolute;top:10px;left:-10px;box-shadow:0 0 1px 1px #fff}.ol-target-overlay .ol-target:after{-webkit-box-shadow:none;box-shadow:none;width:0;height:20px;top:0;left:0}.ol-overlaycontainer .ol-touch-cursor{cursor:pointer;background:#fff6;border-radius:50%;width:56px;height:56px;margin:6px;box-shadow:inset 0 0 0 5px #369}.ol-overlaycontainer .ol-touch-cursor:after{content:"";transform-origin:100% 100%;background:radial-gradient(circle at 100% 100%,#0000,#0000 70%,#369 70%,#369);width:50%;height:50%;position:absolute;top:0;left:0}.ol-overlaycontainer .ol-touch-cursor-center{margin-top:16px;margin-left:-28px}.ol-overlaycontainer .ol-touch-cursor-center:after{transform:rotate(45deg)}.ol-overlaycontainer .ol-touch-cursor-right{margin-left:-62px}.ol-overlaycontainer .ol-touch-cursor-right:after{transform:rotate(90deg)}.ol-overlaycontainer .ol-touch-cursor .ol-button{color:#369;cursor:pointer;background:#fff6;border-radius:50%;width:55%;height:55%;transition:all .5s,opacity,background;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)scale(0);box-shadow:inset 0 0 0 3px}.ol-overlaycontainer .ol-touch-cursor.active.disable .ol-button{opacity:.8;background:#3693}.ol-overlaycontainer .ol-touch-cursor.active .ol-button{transform:translate(-50%,-50%)scale(1)}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-0{top:-18%;left:118%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-1{top:50%;left:140%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-2{top:120%;left:120%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-3{top:140%;left:50%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-4{top:118%;left:-18%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-5{top:50%;left:-40%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-6{top:-18%;left:-18%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-7{top:-40%;left:50%}.ol-overlaycontainer .ol-touch-cursor .ol-button:before{content:"";text-align:center;width:1.5em;height:1em;line-height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-add:before,.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-remove:before{content:"−";font-size:1.375em;font-weight:700;line-height:.95em}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-add:before{content:"+"}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-x:before{content:"×";font-size:1.2em;font-weight:700}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-move:before{content:"✥";font-size:1.2em}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-check:before{content:"✓";font-weight:700}.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-x,.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-remove,.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-check{opacity:.8;background:#3693}.ol-overlaycontainer .ol-touch-cursor .ol-button>div{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlaycontainer .ol-touch-cursor .ol-button-type:before{content:"⇎";font-weight:700}.mapboxgl-canvas:focus{outline:none}.ol-perspective-map{width:200%;height:200%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-perspective-map .ol-layer{z-index:-1!important}.ol-perspective-map .ol-layers{transform:translateY(0)perspective(200px)rotateX(0)scaleY(1)}.ol-perspective-map .ol-overlaycontainer,.ol-perspective-map .ol-overlaycontainer-stopevent{top:50%;left:50%;transform:translate(-50%,-50%);width:50%!important;height:50%!important}.ol-overlay-container .ol-magnify{z-index:0;background:#00000080;border:3px solid #369;border-radius:50%;width:150px;height:150px;position:relative;overflow:hidden;box-shadow:5px 5px 5px #00000080}.ol-overlay-container .ol-magnify:before{content:"";z-index:1;border-radius:50%;width:100%;height:100%;display:block;position:absolute;top:0;left:0;box-shadow:inset 0 0 40px 2px #00000040}.ol-overlay-container .ol-magnify:after{content:"";z-index:1;border-radius:50%;width:20%;height:0;display:block;position:absolute;top:20%;left:23%;transform:rotate(-40deg);box-shadow:0 0 20px 7px #fff}.ol-popup.anim{visibility:hidden}.ol-popup.anim.visible{visibility:visible}.ol-popup.anim.visible>div{visibility:visible;animation:.4s ol-popup_bounce;transform:none}@keyframes ol-popup_bounce{0%{transform:scale(0)}50%{transform:scale(1.1)}80%{transform:scale(.95)}to{transform:scale(1)}}.ol-popup.anim.ol-popup-bottom.ol-popup-left>div{transform-origin:0 100%}.ol-popup.anim.ol-popup-bottom.ol-popup-right>div{transform-origin:100% 100%}.ol-popup.anim.ol-popup-bottom.ol-popup-center>div{transform-origin:50% 100%}.ol-popup.anim.ol-popup-top.ol-popup-left>div{transform-origin:0 0}.ol-popup.anim.ol-popup-top.ol-popup-right>div{transform-origin:100% 0}.ol-popup.anim.ol-popup-top.ol-popup-center>div{transform-origin:50% 0}.ol-popup.anim.ol-popup-middle.ol-popup-left>div{transform-origin:0}.ol-popup.anim.ol-popup-middle.ol-popup-right>div{transform-origin:100%}.ol-popup{-webkit-user-select:none;user-select:none;font-size:.9em}.ol-popup .ol-popup-content{cursor:default;padding:.25em .5em;overflow:hidden}.ol-popup.hasclosebox .ol-popup-content{margin-right:1.7em}.ol-popup .ol-popup-content:after{clear:both;content:"";height:0;font-size:0;display:block}.ol-popup .anchor{pointer-events:none;background:red;width:0;height:0;margin:-11px 22px;display:block;position:absolute}.ol-popup .anchor:after,.ol-popup .anchor:before{position:absolute}.ol-popup-right .anchor:after,.ol-popup-right .anchor:before{right:0}.ol-popup-top .anchor{top:0}.ol-popup-bottom .anchor{bottom:0}.ol-popup-right .anchor{right:0}.ol-popup-left .anchor{left:0}.ol-popup-center .anchor{left:50%;margin-left:0!important}.ol-popup-middle .anchor{top:50%;margin-top:0!important}.ol-popup-center.ol-popup-middle .anchor{display:none}.ol-popup.ol-fixed{margin:0!important;inset:.5em .5em auto auto!important;transform:none!important}.ol-popup.ol-fixed .anchor{display:none}.ol-popup.ol-fixed.anim>div{animation:none}.ol-popup .ol-fix{float:right;cursor:pointer;background:#fff;width:1em;height:.9em;margin:.2em;position:relative}.ol-popup .ol-fix:before{content:"";box-sizing:border-box;border:.1em solid #666;border-right-width:.3em;width:.8em;height:.7em;margin:.1em;display:block}.ol-popup.shadow{box-shadow:2px 2px 2px 2px #00000080}.ol-popup .closeBox{color:#fff;cursor:pointer;float:right;background-color:#003c8880;border:0;border-radius:2px;width:1.4em;height:1.4em;margin:5px 5px 0 0;padding:0;font-size:.9em;font-weight:700;display:none;position:relative}.ol-popup.hasclosebox .closeBox{display:block}.ol-popup .closeBox:hover{background-color:#003c88b3}.ol-popup .closeBox:after{content:"×";text-align:center;width:100%;margin:-.5em 0;font-size:1.5em;line-height:1em;position:absolute;top:50%;left:0;right:0}.ol-popup.modifytouch{background-color:#eee}.ol-popup.modifytouch .ol-popup-content{white-space:nowrap;padding:0 .25em;font-size:.85em}.ol-popup.modifytouch .ol-popup-content a{text-decoration:none}.ol-popup.tooltips{background-color:#ffa}.ol-popup.tooltips .ol-popup-content{white-space:nowrap;padding:0 .25em;font-size:.85em}.ol-popup.default>div{background-color:#fff;border:1px solid #69f;border-radius:5px}.ol-popup.default{margin:-11px 0;transform:translateY(-22px)}.ol-popup-top.ol-popup.default{margin:11px 0;transform:none}.ol-popup-left.default{margin:-11px -22px;transform:translateY(-22px)}.ol-popup-top.ol-popup-left.default{margin:11px -22px;transform:none}.ol-popup-right.default{margin:-11px 22px;transform:translate(44px,-22px)}.ol-popup-top.ol-popup-right.default{margin:11px 22px;transform:translate(44px)}.ol-popup-middle.default{margin:0 10px;transform:none}.ol-popup-middle.ol-popup-right.default{margin:0 -10px;transform:translate(-20px)}.ol-popup.default .anchor{color:#69f}.ol-popup.default .anchor:after,.ol-popup.default .anchor:before{content:"";border:11px solid;border-color:currentColor #0000;margin:0 -11px}.ol-popup.default .anchor:after{border-width:11px;border-color:#fff #0000;margin:2px -11px}.ol-popup-top.default .anchor:before,.ol-popup-top.default .anchor:after{border-top:0;top:0}.ol-popup-bottom.default .anchor:before,.ol-popup-bottom.default .anchor:after{border-bottom:0;bottom:0}.ol-popup-middle.default .anchor:before{border-color:#0000 currentColor;margin:-11px -33px}.ol-popup-middle.default .anchor:after{border-color:#0000 #fff;margin:-11px -31px}.ol-popup-middle.ol-popup-left.default .anchor:before,.ol-popup-middle.ol-popup-left.default .anchor:after{border-left:0}.ol-popup-middle.ol-popup-right.default .anchor:before,.ol-popup-middle.ol-popup-right.default .anchor:after{border-right:0}.ol-popup.placemark{color:#c00;margin:-.65em 0;transform:translateY(-1.3em)}.ol-popup.placemark>div{width:2em;height:2em;min-width:unset;box-sizing:border-box;background-color:#fff;border:0;border-radius:50%;font-size:15px;position:relative;box-shadow:inset 0 0 0 .45em}.ol-popup.placemark .ol-popup-content{cursor:default;text-align:center;width:1em;height:1em;padding:.25em 0;line-height:1em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-popup.placemark .anchor{margin:0}.ol-popup.placemark .anchor:before{content:"";background:0 0;border-radius:50%;width:1em;height:.5em;margin:-.5em;box-shadow:0 1em .5em #00000080}.ol-popup.placemark .anchor:after{content:"";border:.7em solid #0000;border-top:1em solid;border-bottom:0 solid;margin:-.75em -.7em;bottom:0}.ol-popup.placemark.shield>div{border-radius:.2em}.ol-popup.placemark.shield .anchor:after{border-width:.8em 1em 0;margin:-.7em -1em}.ol-popup.placemark.blazon>div{border-radius:.2em}.ol-popup.placemark.pushpin{margin:-2.2em 0;transform:translateY(-4em)}.ol-popup.placemark.pushpin>div{border-radius:0;width:1.1em;box-shadow:inset 2em 0;background:0 0!important}.ol-popup.placemark.pushpin>div:before{content:"";pointer-events:none;border:.5em solid #0000;border-top:.3em solid;border-bottom-color:currentColor;width:1.3em;height:1.5em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-popup.placemark.needle{margin:-2em 0;transform:translateY(-4em)}.ol-popup.placemark.pushpin .anchor,.ol-popup.placemark.needle .anchor{margin:-1.2em}.ol-popup.placemark.pushpin .anchor:after,.ol-popup.placemark.needle .anchor:after{border-style:solid;border-width:2em .15em 0;width:.1em;margin:-.55em -.2em}.ol-popup.placemark.pushpin .anchor:before,.ol-popup.placemark.needle .anchor:before{margin:-.75em -.5em}.ol-popup.placemark.flagv{margin:-2em 1em;transform:translateY(-4em)}.ol-popup.placemark.flagv>div{-webkit-box-shadow:none;box-shadow:none;background-color:#0000;border-radius:0}.ol-popup.placemark.flagv>div:before{content:"";pointer-events:none;border:1em solid #0000;border-left:2em solid;position:absolute}.ol-popup.placemark.flagv .anchor{margin:-1.4em}.ol-popup.placemark.flag{margin:-2em 1em;transform:translateY(-4em)}.ol-popup.placemark.flag>div{border-radius:0;transform-origin:0 150%!important}.ol-popup.placemark.flag .anchor{margin:-1.4em}.ol-popup.placemark.flagv .anchor:after,.ol-popup.placemark.flag .anchor:after{border-style:solid;border-width:2em .15em 0;width:.1em;margin:-.55em -1em}.ol-popup.placemark.flagv .anchor:before,.ol-popup.placemark.flag .anchor:before{margin:-.75em -1.25em}.ol-popup.placemark.flag.finish{margin:-2em 1em}.ol-popup.placemark.flag.finish>div{background-image:linear-gradient(45deg,currentColor 25%,#0000 25% 75%,currentColor 75%,currentColor),linear-gradient(45deg,currentColor 25%,#0000 25% 75%,currentColor 75%,currentColor);background-position:.5em 0,0 .5em;background-size:1em 1em;box-shadow:inset 0 0 0 .25em}.ol-popup.black .closeBox{color:#f80;background-color:#00000080;border-radius:5px}.ol-popup.black .closeBox:hover{color:#da2;background-color:#000000b3}.ol-popup.black{margin:-20px 0;transform:translateY(-40px)}.ol-popup.black>div{color:#fff;background-color:#0009;border-radius:5px}.ol-popup-top.ol-popup.black{margin:20px 0;transform:none}.ol-popup-left.black{margin:-20px -22px;transform:translateY(-40px)}.ol-popup-top.ol-popup-left.black{margin:20px -22px;transform:none}.ol-popup-right.black{margin:-20px 22px;transform:translate(44px,-40px)}.ol-popup-top.ol-popup-right.black{margin:20px 22px;transform:translate(44px)}.ol-popup-middle.black{margin:0 11px;transform:none}.ol-popup-left.ol-popup-middle.black{transform:none}.ol-popup-right.ol-popup-middle.black{margin:0 -11px;transform:translate(-22px)}.ol-popup.black .anchor{color:#0009;margin:-20px 11px}.ol-popup.black .anchor:before{content:"";border:20px solid;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.black .anchor:before{border-top:0;top:0}.ol-popup-bottom.black .anchor:before{border-bottom:0;bottom:0}.ol-popup-middle.black .anchor:before{border-color:#0000 currentColor;margin:-20px -22px}.ol-popup-middle.ol-popup-left.black .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.black .anchor:before{border-right:0}.ol-popup-center.black .anchor:before{margin:0 -10px}.ol-popup.tips .closeBox{color:#fff;background-color:red;border-radius:50%;width:1.2em;height:1.2em}.ol-popup.tips .closeBox:hover{background-color:#f40}.ol-popup.tips{margin:-20px 0;transform:translateY(-40px)}.ol-popup.tips>div{color:#333;background-color:#cea;border:5px solid #ad7;border-radius:5px}.ol-popup-top.ol-popup.tips{margin:20px 0;transform:none}.ol-popup-left.tips{margin:-20px -22px;transform:translateY(-40px)}.ol-popup-top.ol-popup-left.tips{margin:20px -22px;transform:none}.ol-popup-right.tips{margin:-20px 22px;transform:translate(44px,-40px)}.ol-popup-top.ol-popup-right.tips{margin:20px 22px;transform:translate(44px)}.ol-popup-middle.tips{margin:0;transform:none}.ol-popup-left.ol-popup-middle.tips{margin:0 22px;transform:none}.ol-popup-right.ol-popup-middle.tips{margin:0 -22px;transform:translate(-44px)}.ol-popup.tips .anchor{color:#ad7;margin:-18px 22px}.ol-popup.tips .anchor:before{content:"";border:20px solid;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.tips .anchor:before{border-top:0;top:0}.ol-popup-bottom.tips .anchor:before{border-bottom:0;bottom:0}.ol-popup-center.tips .anchor:before{border-width:20px 6px;margin:0 -6px}.ol-popup-left.tips .anchor:before{border-left:0;margin-left:0}.ol-popup-right.tips .anchor:before{border-right:0;margin-right:0}.ol-popup-middle.tips .anchor:before{border-width:6px 20px;border-color:#0000 currentColor;margin:-6px -41px}.ol-popup-middle.ol-popup-left.tips .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.tips .anchor:before{border-right:0}.ol-popup.warning .closeBox{color:#fff;background-color:red;border-radius:50%;font-size:.83em}.ol-popup.warning .closeBox:hover{background-color:#f40}.ol-popup.warning{color:#900;background-color:#fd0;border:4px dashed red;border-radius:3px;margin:-28px 10px;transform:translateY(-56px)}.ol-popup-top.ol-popup.warning{margin:28px 10px;transform:none}.ol-popup-left.warning{margin:-28px -22px;transform:translateY(-56px)}.ol-popup-top.ol-popup-left.warning{margin:28px -22px;transform:none}.ol-popup-right.warning{margin:-28px 22px;transform:translate(44px,-56px)}.ol-popup-top.ol-popup-right.warning{margin:28px 22px;transform:translate(44px)}.ol-popup-middle.warning{margin:0;transform:none}.ol-popup-left.ol-popup-middle.warning{margin:0 22px;transform:none}.ol-popup-right.ol-popup-middle.warning{margin:0 -22px;transform:translate(-44px)}.ol-popup.warning .anchor{margin:-33px 7px}.ol-popup.warning .anchor:before{content:"";border:30px solid red;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.warning .anchor:before{border-top:0;top:0}.ol-popup-bottom.warning .anchor:before{border-bottom:0;bottom:0}.ol-popup-center.warning .anchor:before{margin:0 -21px}.ol-popup-middle.warning .anchor:before{border-width:10px 22px;border-color:#0000 red;margin:-10px -33px}.ol-popup-middle.ol-popup-left.warning .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.warning .anchor:before{border-right:0}.ol-popup .ol-popupfeature table{width:100%}.ol-popup .ol-popupfeature table td{text-overflow:ellipsis;max-width:25em;overflow:hidden}.ol-popup .ol-popupfeature table td img{max-width:100px;max-height:100px}.ol-popup .ol-popupfeature tr:nth-child(odd){background-color:#eee}.ol-popup .ol-popupfeature .ol-zoombt{color:#003c8880;background:0 0;border:0;outline:none;width:2em;height:2em;display:inline-block;position:relative}.ol-popup .ol-popupfeature .ol-zoombt:before{content:"";box-sizing:border-box;background-color:#0000;border:.17em solid;border-radius:100%;width:1em;height:1em;position:absolute;top:.3em;left:.3em}.ol-popup .ol-popupfeature .ol-zoombt:after{content:"";box-sizing:border-box;border-style:solid;border-width:.1em .3em;border-radius:.03em;position:absolute;top:1.35em;left:1.15em;transform:rotate(45deg);box-shadow:-.2em 0 0 -.04em}.ol-popup .ol-popupfeature .ol-count{float:right;margin:.25em 0}.ol-popup .ol-popupfeature .ol-prev,.ol-popup .ol-popupfeature .ol-next{vertical-align:bottom;cursor:pointer;border:.5em solid #0000;border-left-color:#003c8880;border-right:0 solid #003c8880;margin:0 .5em;display:inline-block}.ol-popup .ol-popupfeature .ol-prev{border-width:.5em .5em .5em 0}.ol-popup.tooltips.black{background-color:#0000}.ol-popup.tooltips.black>div{background-color:#00000080;padding:.2em .5em;transform:scaleY(1.3)}.ol-popup-middle.tooltips.black .anchor:before{border-width:5px 10px;margin:-5px -21px}.ol-popup-center.ol-popup-middle,.ol-popup-top.ol-popup-left.ol-fixPopup,.ol-popup-top.ol-popup-right.ol-fixPopup,.ol-popup.ol-fixPopup{margin:0}.ol-miniscroll{position:relative}.ol-miniscroll:hover .ol-scroll{opacity:.5;transition:opacity 1s}.ol-miniscroll .ol-scroll{-ms-touch-action:none;touch-action:none;opacity:0;z-index:1;border-radius:9px;width:9px;height:auto;max-height:100%;transition:opacity 1s .5s;position:absolute;right:0;overflow:hidden}.ol-miniscroll .ol-scroll>div{-ms-touch-action:none;touch-action:none;box-sizing:border-box;cursor:pointer;border:2px solid #0000;border-radius:9px/12px;width:9px;height:9px;position:absolute;top:0;right:0;box-shadow:inset 10px 0}.ol-miniscroll .ol-scroll.ol-100pc{opacity:0}.ol-viewport canvas.ol-fixedoverlay{width:100%;height:100%;position:absolute;top:0;left:0}.ol-ext-toggle-switch{cursor:pointer;position:relative}.ol-ext-toggle-switch input[type=radio],.ol-ext-toggle-switch input[type=checkbox]{opacity:0;width:0;height:0;margin:0;padding:0;display:inline-block}.ol-ext-toggle-switch span{color:#003c8880;cursor:pointer;vertical-align:middle;background-color:#ccc;border-radius:1em;width:1.6em;height:1em;margin:-.15em .2em .15em;font-size:1.3em;transition:all .4s,background-color,border-color,box-shadow;display:inline-block;position:relative}.ol-ext-toggle-switch span:before{content:"";box-sizing:border-box;background-color:#fff;border:2px solid #ccc;border-radius:1em;width:1em;height:1em;transition:all .4s;display:block;position:absolute;top:50%;left:0;transform:translateY(-50%)}.ol-ext-toggle-switch:hover span{background-color:#999}.ol-ext-toggle-switch:hover span:before{border-color:#999}.ol-ext-toggle-switch input:checked+span{background-color:currentColor}.ol-ext-toggle-switch input:checked+span:before{border-color:currentColor;transform:translate(.6em,-50%)}.ol-ext-check{display:inline-block;position:relative}.ol-ext-check input{opacity:0;cursor:pointer;width:0;height:0;margin:0;padding:0;display:inline-block;position:absolute}.ol-ext-check span{color:#003c8880;vertical-align:middle;background-color:#ccc;width:1em;height:1em;margin:-.1em .5em .1em;display:inline-block;position:relative}.ol-ext-check:hover span{background-color:#999}.ol-ext-checkbox input:checked~span{background-color:currentColor}.ol-ext-checkbox input:checked~span:before{content:"";width:.5em;height:.8em;position:absolute;top:50%;left:50%;transform:translateY(-.1em)translate(-50%,-50%)rotate(45deg);box-shadow:inset -.2em -.2em #fff}.ol-ext-radio span{border-radius:50%;width:1.1em;height:1.1em}.ol-ext-radio:hover input:checked~span{background-color:#ccc}.ol-ext-radio input:checked~span:before{content:"";background-color:currentColor;border-radius:50%;width:50%;height:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-ext-toggle-switch input:focus-visible+span,.ol-ext-check input:focus-visible+span{box-shadow:inset 0 0 0 1px #fff,0 0 0 1.8px #000c}.ol-collection-list{margin:0;padding:0;list-style:none}.ol-collection-list li{padding:0 2em 0 1em;position:relative}.ol-collection-list li:hover{background-color:#003c8833}.ol-collection-list li.ol-select{color:#fff;background-color:#003c8880}.ol-collection-list li .ol-order{-ms-touch-action:none;touch-action:none;cursor:n-resize;-webkit-user-select:none;user-select:none;width:2em;height:100%;position:absolute;top:50%;right:0;transform:translateY(-50%)}.ol-collection-list li .ol-order:before{content:"";background-color:currentColor;border-radius:2px;width:18px;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 5px,0 -5px}.ol-collection-list li>input.ol-input-focus{opacity:0;z-index:-1;width:0;height:0;position:absolute}.ol-collection-list li:has(>input.ol-input-focus:focus){outline:2px solid #369}.ol-ext-colorpicker.ol-popup{background-color:#0000;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 -1px,5px 4px;background-size:10px 10px;width:2em;height:1.5em}.ol-ext-colorpicker .ol-tabbar{background-color:#eee;border-bottom:1px solid #999;display:none}.ol-ext-colorpicker.ol-tab .ol-tabbar{display:block}.ol-ext-colorpicker .ol-tabbar>div{cursor:pointer;background-color:#fff;border:1px solid #999;border-radius:2px 2px 0 0;padding:0 .5em;display:inline-block;position:relative;top:1px}.ol-ext-colorpicker .ol-tabbar>div:first-child{border-bottom-color:#fff}.ol-ext-colorpicker.ol-picker-tab .ol-tabbar>div:first-child{border-bottom-color:#999}.ol-ext-colorpicker.ol-picker-tab .ol-tabbar>div:nth-child(2){border-bottom-color:#fff}.ol-ext-colorpicker.ol-popup.ol-tab .ol-popup{width:180px}.ol-ext-colorpicker.ol-tab .ol-palette{margin:0 10px}.ol-ext-colorpicker.ol-tab .ol-container{display:none}.ol-ext-colorpicker.ol-tab.ol-picker-tab .ol-container{display:block}.ol-ext-colorpicker.ol-tab.ol-picker-tab .ol-palette{display:none}.ol-ext-colorpicker.ol-popup .ol-popup{width:340px}.ol-ext-colorpicker.ol-popup .ol-vignet{content:"";pointer-events:none;background-color:currentColor;border:0;width:100%;height:100%;position:absolute;top:0;left:0}.ol-ext-colorpicker .ol-container{vertical-align:top;display:inline-block;position:relative}.ol-ext-colorpicker .ol-cursor{pointer-events:none}.ol-ext-colorpicker .ol-picker{cursor:crosshair;background-color:currentColor;background-image:-webkit-gradient(linear, left top, left bottom, from(0), color-stop(#000), to(transparent)), -webkit-gradient(linear, left top, right top, from(#fff), to(transparent));background-image:linear-gradient(#0000,#000),linear-gradient(90deg,#fff,#0000);border:5px solid #fff;width:150px;height:150px;position:relative}.ol-ext-colorpicker .ol-picker .ol-cursor{border:1px solid #000000b3;border-radius:50%;width:10px;height:10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #ffffffb3}.ol-ext-colorpicker .ol-slider{cursor:crosshair;background-color:#fff;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 -1px,5px 4px;background-size:10px 10px;border:0 solid #fff;border-width:0 5px;width:150px;height:10px;margin:5px 0 10px;position:relative}.ol-ext-colorpicker .ol-slider>div{pointer-events:none;background-image:linear-gradient(45deg,#0000,#fff);width:100%;height:100%}.ol-ext-colorpicker .ol-slider .ol-cursor{background:0 0;border:1px solid #000;width:4px;height:12px;position:absolute;top:50%;left:0;transform:translate(-50%,-50%)}.ol-ext-colorpicker .ol-tint{cursor:crosshair;box-sizing:border-box;background-image:-webkit-gradient(linear, left top, left bottom, from(0), color-stop(red), color-stop(#f0f), color-stop(#00f), color-stop(#0ff), color-stop(#0f0), color-stop(#ff0), to(red));background-image:linear-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red);border:5px solid #fff;border-width:5px 0;width:10px;height:150px;position:absolute;top:0;right:5px}.ol-ext-colorpicker .ol-tint .ol-cursor{border:1px solid #000;width:12px;height:4px;position:absolute;top:0;left:50%;transform:translate(-50%,-50%)}.ol-ext-colorpicker .ol-clear{border:2px solid #999;width:10px;height:10px;position:absolute;top:163px;right:4px}.ol-ext-colorpicker .ol-clear:before,.ol-ext-colorpicker .ol-clear:after{content:"";background-color:#999;width:15px;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-ext-colorpicker .ol-clear:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-ext-colorpicker.ol-nopacity .ol-slider,.ol-ext-colorpicker.ol-nopacity .ol-clear,.ol-ext-colorpicker.ol-nopacity .ol-alpha{display:none}.ol-ext-colorpicker .ol-rgb{width:170px;padding:5px;display:none;position:relative}.ol-ext-colorpicker .ol-rgb input{box-sizing:border-box;border:1px solid #999;border-radius:2px;width:25%;padding:0 0 0 2px;font-size:13px}.ol-ext-colorpicker .ol-rgb input:first-child{background-color:#ff00001a}.ol-ext-colorpicker .ol-rgb input:nth-child(2){background-color:#00ff001a}.ol-ext-colorpicker .ol-rgb input:nth-child(3){background-color:#0000ff1f}.ol-ext-colorpicker button,.ol-ext-colorpicker .ol-txt-color{text-align:center;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:170px;margin:0 5px 5px;padding:0;font-size:13px;display:block}.ol-ext-colorpicker .ol-txtcolor{width:170px;margin:0 5px}.ol-ext-colorpicker .ol-txtcolor input.ol-txt-color{width:100%;margin:0}.ol-ext-colorpicker.eyedropper .ol-txtcolor input.ol-txt-color{width:calc(100% - 2em);height:2em;margin:0;display:inline-block}.ol-ext-colorpicker button{background-color:#eee}.ol-ext-colorpicker button:hover{background-color:#e9e9e9}.ol-ext-colorpicker button.ol-eyedropper{vertical-align:middle;width:2em;height:2em;margin:0;display:inline-block;position:relative}.ol-ext-colorpicker button.ol-eyedropper:before{content:"";background-color:#999;width:100%;height:100%;position:absolute;top:0;left:0;-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20width='24'%20height='24'%3e%3cpath%20d='m18.203%203.676%202.121%202.121a1%201%200%200%201%200%201.414l-2.828%202.829%201.767%201.768-1.414%201.414-1.414-1.414L7.243%2021H3v-4.243l9.192-9.192-1.414-1.414%201.414-1.414%201.768%201.767%202.829-2.828a1%201%200%200%201%201.414%200Zm-4.596%205.303-8.564%208.564%201.414%201.414%208.564-8.564-1.414-1.414Z'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20width='24'%20height='24'%3e%3cpath%20d='m18.203%203.676%202.121%202.121a1%201%200%200%201%200%201.414l-2.828%202.829%201.767%201.768-1.414%201.414-1.414-1.414L7.243%2021H3v-4.243l9.192-9.192-1.414-1.414%201.414-1.414%201.768%201.767%202.829-2.828a1%201%200%200%201%201.414%200Zm-4.596%205.303-8.564%208.564%201.414%201.414%208.564-8.564-1.414-1.414Z'/%3e%3c/svg%3e");-webkit-mask-size:100% 100%;mask-size:100% 100%}.ol-ext-colorpicker .ol-txt-color.ol-error{background-color:#f003}.ol-ext-colorpicker .ol-palette{width:152px;padding:2px;display:inline-block}.ol-ext-colorpicker .ol-palette>div{cursor:pointer;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 0,5px 5px;background-size:10px 10px;border-radius:1px;width:15px;height:15px;margin:2px;display:inline-block;position:relative;box-shadow:0 0 2px #666}.ol-ext-colorpicker .ol-palette>div:before{content:"";background-color:currentColor;width:100%;height:100%;position:absolute}.ol-ext-colorpicker .ol-palette>div.ol-select:after{content:"";width:6px;height:12px;position:absolute;top:30%;left:50%;transform:translate(-50%,-50%)rotate(45deg);box-shadow:1px 1px #fff,2px 2px #000}.ol-ext-colorpicker .ol-palette>div:hover{box-shadow:0 0 2px 1px #d90}.ol-ext-colorpicker .ol-palette hr{margin:0}.ol-input-hidden{opacity:0;width:0;height:0;margin:0;padding:0;display:block;position:absolute}.ol-input-popup{display:inline-block;position:relative}.ol-input-popup .ol-popup{z-index:1;white-space:nowrap;background-color:#fff;margin:0;padding:0;list-style:none;display:none;position:absolute;left:-5px;box-shadow:1px 1px 3px 1px #999}.ol-input-popup.ol-hover:hover .ol-popup,.ol-input-popup.ol-focus .ol-popup{display:block}.ol-input-popup.ol-right .ol-popup{left:auto;right:-5px}.ol-input-popup.ol-middle .ol-popup{top:50%;transform:translateY(-50%)}.ol-input-popup .ol-popup li{padding:10px 5px;position:relative}.ol-input-popup li:hover,.ol-input-popup li.ol-selected{background-color:#ccc}.ol-input-popup.ol-fixed:hover .ol-popup,.ol-input-popup.ol-fixed .ol-popup{-webkit-box-shadow:unset;box-shadow:unset;vertical-align:middle;background-color:#0000;display:inline-block;position:relative;left:0}.ol-input-popup.ol-fixed.ol-left .ol-popup{float:left}.ol-input-popup>div{vertical-align:middle;border:1px solid #999;border-radius:2px;padding:3px 20px 3px 10px;display:inline-block;position:relative}.ol-input-popup>div:before{content:"";border:5px solid #0000;border-top-color:#999;position:absolute;top:50%;right:5px}.ol-ext-popup-input{vertical-align:top;display:inline-block}.ol-ext-popup-input.ol-popup{box-sizing:content-box;-webkit-user-select:none;user-select:none;vertical-align:middle;border:3px solid #fff;border-right-width:1em;border-radius:2px;width:2em;height:1.5em;display:inline-block;position:relative;box-shadow:0 0 2px 1px #666}.ol-ext-popup-input.ol-popup:after{content:"";pointer-events:none;border:.3em solid #0000;border-top:.5em solid #999;border-bottom:0 solid #999;position:absolute;top:50%;right:-.8em;transform:translateY(-50%)}.ol-ext-popup-input *{box-sizing:content-box}.ol-ext-popup-input.ol-popup .ol-popup{z-index:1;background-color:#fff;min-width:3em;min-height:3em;display:none;position:absolute;top:100%;left:0;box-shadow:1px 1px 3px 1px #999}.ol-ext-popup-input.ol-popup .ol-popup.ol-visible{display:block}.ol-ext-popup-input.ol-popup-fixed .ol-popup{position:fixed;top:auto;left:auto}.ol-input-popup.ol-size li{vertical-align:middle;height:100%;padding:5px;display:table-cell}.ol-input-popup.ol-size li>*{vertical-align:middle;background-color:#369;border-radius:50%;width:1em;height:1em}.ol-input-popup.ol-size li>.ol-option-0{color:#aaa;box-sizing:border-box;background-color:#0000;border:2px solid;width:1em;height:1em;position:relative}.ol-input-popup.ol-size li>:before{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-input-popup.ol-size li>.ol-option-0:before{content:"";background-color:#aaa;width:1em;height:2px;transform:translate(-50%,-50%)rotate(-45deg)}.ol-input-slider{display:inline-block;position:relative}.ol-input-slider .ol-popup{z-index:1;background-color:#fff;display:none;position:absolute;left:-5px;box-shadow:1px 1px 3px 1px #999}.ol-input-slider.ol-right .ol-popup{left:auto;right:-5px}.ol-input-slider.ol-hover:hover .ol-popup,.ol-input-slider.ol-focus .ol-popup{white-space:nowrap;display:block}.ol-input-slider.ol-hover:hover .ol-popup>*,.ol-input-slider.ol-focus .ol-popup>*{vertical-align:middle;display:inline-block}.ol-input-slider.ol-hover:hover .ol-popup>.ol-before,.ol-input-slider.ol-focus .ol-popup>.ol-before{margin-left:10px}.ol-input-slider.ol-hover:hover .ol-popup>.ol-after,.ol-input-slider.ol-focus .ol-popup>.ol-after{margin-right:10px}.ol-input-slider .ol-slider{vertical-align:middle;box-sizing:content-box;cursor:pointer;border:10px solid #0000;border-width:10px 15px;width:100px;height:3px;display:inline-block;position:relative;box-shadow:inset 0 0 0 1px #999}.ol-input-slider .ol-slider>.ol-cursor{pointer-events:none;background-color:#999;width:5px;height:10px;position:absolute;top:50%;transform:translate(-50%,-50%)}.ol-input-range .ol-slider{cursor:default;width:150px}.ol-input-range .ol-slider>.ol-cursor{pointer-events:all;cursor:pointer;background-color:#003c88;border-radius:50%;width:10px}.ol-input-range.ol-moving .ol-slider>.ol-cursor{pointer-events:none}.ol-input-range .ol-slider>.ol-back{pointer-events:none;background-color:#003c88;height:100%;position:absolute;top:50%;left:30%;right:20%;transform:translateY(-50%)}.ol-input-slider.ol-fixed:hover .ol-popup,.ol-input-slider.ol-fixed .ol-popup{-webkit-box-shadow:unset;box-shadow:unset;vertical-align:middle;background-color:#0000;display:inline-block;position:relative;left:0}.ol-input-slider.ol-fixed.ol-left .ol-popup{float:left}.ol-input-slider.ol-size .ol-slider{height:auto;-webkit-box-shadow:none;box-shadow:none}.ol-input-slider.ol-size .ol-slider .ol-back{color:#aaa;pointer-events:none;border-top:0 solid;border-bottom:20px solid;border-left:100px solid #0000;border-right:0 solid #0000;width:0}.ol-input-slider.ol-size .ol-slider>.ol-cursor{border:5px solid red;border-left:3px solid #0000;border-right:3px solid #0000;-o-border-image:initial;border-image:initial;background-color:#0000;width:2px;height:calc(100% + 4px);box-shadow:inset 3px 0 red}.ol-input-popup.ol-width li{padding:5px}.ol-input-popup.ol-width li>*{background-color:#369;width:100px;height:1em}.ol-input-popup.ol-width li>.ol-option-0{background-color:#0000;background-image:linear-gradient(90deg,#aaa 2px,#0000 2px);background-size:4px;height:1px;position:relative}html,body{height:100%;margin:0;padding:0}body{font-family:Calibri,sans-serif}.viewer-app{--viewer-control-background:#111;--viewer-control-surface-background:#222;--viewer-control-hover-background:#333;--viewer-control-pressed-background:#555;--viewer-control-selected-background:#163a59;--viewer-control-selected-hover-background:#1f5278;--viewer-control-selected-pressed-background:#555;--viewer-control-foreground:#fff;--viewer-control-hover-foreground:#fff;--viewer-control-pressed-foreground:#fff;--viewer-control-selected-foreground:#fff;--viewer-control-muted-foreground:#ffffffb3;--viewer-control-subtle-foreground:#ffffff8c;--viewer-control-border:#555c;--viewer-control-focus-border:#787878f2;--viewer-control-foreground-shadow:#000000bf;width:100%;height:100%;position:relative;overflow:hidden}.viewer-app:fullscreen{background:#fff;width:100%;height:100%}.viewer-app:fullscreen{background:#fff;width:100%;height:100%}.map{width:100%;height:100%}.ol-zoom,.ol-rotate,.ol-full-screen,.ol-graticule,.ol-screen-space-graticule,.reset-view-control,.viewer-panel-control,.layer-editor-control,.settings-control{background:var(--viewer-control-background);border-radius:4px;padding:0;overflow:hidden;box-shadow:0 2px 7px #0000004d}.ol-zoom:hover,.ol-rotate:hover,.ol-full-screen:hover,.ol-graticule:hover,.ol-screen-space-graticule:hover,.reset-view-control:hover,.viewer-panel-control:hover,.layer-editor-control:hover,.settings-control:hover{background:var(--viewer-control-background)}.ol-zoom button,.ol-rotate button,.ol-full-screen button,.ol-graticule button,.ol-screen-space-graticule button,.reset-view-control button,.viewer-panel-control button,.layer-editor-control button,.settings-control button{background:var(--viewer-control-background);width:32px;height:32px;color:var(--viewer-control-foreground);cursor:pointer;border:0;margin:0}.ol-zoom button:hover:not(:disabled),.ol-rotate button:hover:not(:disabled),.ol-full-screen button:hover:not(:disabled),.ol-graticule button:hover:not(:disabled),.ol-screen-space-graticule button:hover:not(:disabled),.reset-view-control button:hover:not(:disabled),.viewer-panel-control button:hover:not(:disabled),.layer-editor-control button:hover:not(:disabled),.settings-control button:hover:not(:disabled){background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground);border-radius:4px;outline:none}.ol-zoom button:active:not(:disabled),.ol-rotate button:active:not(:disabled),.ol-full-screen button:active:not(:disabled),.ol-graticule button:active:not(:disabled),.ol-screen-space-graticule button:active:not(:disabled),.reset-view-control button:active:not(:disabled),.viewer-panel-control button:active:not(:disabled),.layer-editor-control button:active:not(:disabled),.settings-control button:active:not(:disabled){background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground);border-radius:4px;outline:none}.ol-zoom{flex-direction:row;display:flex}.ol-zoom.viewer-control-disabled{opacity:.4}.ol-zoom.viewer-control-disabled button:disabled,.ol-zoom.viewer-control-disabled button:disabled:hover,.ol-zoom.viewer-control-disabled button:disabled:active,.ol-zoom.viewer-control-disabled button:disabled:focus{opacity:1;background:0 0}.ol-zoom button{background:0 0;border-radius:0}.ol-zoom .ol-zoom-out{order:1}.ol-zoom .ol-zoom-out,.ol-zoom .ol-zoom-out:hover,.ol-zoom .ol-zoom-out:active,.ol-zoom .ol-zoom-out:focus{border-radius:4px 0 0 4px}.ol-zoom-level{box-sizing:border-box;border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);width:42px;height:24px;color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);text-align:center;appearance:textfield;border-radius:3px;order:2;margin:4px 3px;padding:0 3px;font-family:inherit;font-size:11px;font-weight:600}.ol-zoom-level::-webkit-inner-spin-button{appearance:none;margin:0}.ol-zoom-level::-webkit-outer-spin-button{appearance:none;margin:0}.ol-zoom-level:hover:not(:disabled){border-color:var(--viewer-control-focus-border)}.ol-zoom-level:focus{border-color:var(--viewer-control-focus-border);background:var(--viewer-control-hover-background);outline:none}.ol-zoom-level:disabled{opacity:1;cursor:default;background:0 0}.ol-zoom .ol-zoom-in{order:3}.ol-zoom .ol-zoom-in,.ol-zoom .ol-zoom-in:hover,.ol-zoom .ol-zoom-in:active,.ol-zoom .ol-zoom-in:focus{border-radius:0 4px 4px 0}.settings-control,.settings-control:hover{z-index:1002;background:0 0;top:8px;left:auto;right:8px}.settings-control button,.settings-control button:hover,.settings-control button:active,.settings-control button:focus,.settings-control button.active,.settings-control button.active:hover,.settings-control button.active:active,.settings-control button.active:focus{border-radius:4px}.viewer-tools-group{z-index:1000;border-radius:4px;flex-direction:column;width:32px;display:flex;position:absolute;top:80px;left:8px;overflow:hidden;box-shadow:0 2px 7px #0000004d}.viewer-tools-group .ol-rotate,.viewer-tools-group .ol-graticule,.viewer-tools-group .ol-screen-space-graticule{box-shadow:none;background:0 0;border-radius:0;margin:0;padding:0;position:static;inset:auto}.viewer-tools-group .ol-rotate:hover,.viewer-tools-group .ol-graticule:hover,.viewer-tools-group .ol-screen-space-graticule:hover{background:0 0}.viewer-tools-group button{border-radius:0!important}.reset-view-control{background:0 0;border-radius:4px}.reset-view-control:hover{background:0 0}.ol-full-screen{background:0 0;border-radius:4px}.ol-full-screen:hover{background:0 0}.ol-full-screen button,.ol-full-screen button:hover,.ol-full-screen button:active,.ol-full-screen button:focus,.reset-view-control button,.reset-view-control button:hover,.reset-view-control button:active,.reset-view-control button:focus{border-radius:4px}.ol-full-screen button,.reset-view-control button{justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;display:flex}.bottom-controls-group{z-index:1000;align-items:center;gap:8px;display:flex;position:absolute;bottom:8px;left:50%;transform:translate(-50%)}.bottom-controls-group .reset-view-control,.bottom-controls-group .ol-zoom,.bottom-controls-group .ol-full-screen{margin:0;position:static;inset:auto;transform:none}.ol-scale-line{background:var(--viewer-control-background);border-radius:4px;padding:5px 8px;font-family:Calibri,sans-serif;bottom:8px;left:8px;box-shadow:0 2px 7px #00000040}.ol-scale-line-inner{border:1px solid var(--viewer-control-foreground);color:var(--viewer-control-foreground);border-bottom:0;margin:0;font-size:14px;line-height:1.2}.ol-mouse-position{z-index:100;background:var(--viewer-control-background);color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);border-radius:4px;padding:6px 9px;font-family:Calibri,sans-serif;font-size:12px;position:absolute;inset:auto 8px 8px auto;box-shadow:0 2px 7px #0000004d}.ol-layerswitcher,.ol-control.ol-layerswitcher{display:none}.layer-editor-header,.viewer-panel-header{border-bottom:1px solid var(--viewer-control-border);padding:12px 14px;font-size:13px;font-weight:600}.left-panel-controls{z-index:1000;border-radius:4px;flex-direction:column;width:32px;display:flex;position:absolute;top:8px;left:8px;overflow:hidden;box-shadow:0 2px 7px #0000004d}.left-panel-controls .viewer-panel-control,.left-panel-controls .layer-editor-control{box-shadow:none;background:0 0;border-radius:0;margin:0;position:static;inset:auto}.left-panel-controls .viewer-panel-control:hover,.left-panel-controls .layer-editor-control:hover{background:0 0}.left-panel-controls .viewer-panel-control button,.left-panel-controls .viewer-panel-control button:hover,.left-panel-controls .viewer-panel-control button:active,.left-panel-controls .viewer-panel-control button:focus,.left-panel-controls .viewer-panel-control button.active,.left-panel-controls .viewer-panel-control button.active:hover,.left-panel-controls .viewer-panel-control button.active:active,.left-panel-controls .viewer-panel-control button.active:focus,.left-panel-controls .layer-editor-control button,.left-panel-controls .layer-editor-control button:hover,.left-panel-controls .layer-editor-control button:active,.left-panel-controls .layer-editor-control button:focus,.left-panel-controls .layer-editor-control button.active,.left-panel-controls .layer-editor-control button.active:hover,.left-panel-controls .layer-editor-control button.active:active,.left-panel-controls .layer-editor-control button.active:focus{border-radius:0}.layer-editor{z-index:1000;box-sizing:border-box;background:var(--viewer-control-background);width:240px;color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);border-radius:10px;position:absolute;top:8px;left:48px;overflow:hidden;box-shadow:0 3px 10px #00000059}.layer-editor.hidden{display:none}.layer-editor-list{padding:12px 14px}.layer-editor-empty{color:var(--viewer-control-muted-foreground);font-size:12px}.layer-editor-item{margin-bottom:14px}.layer-editor-item:last-child{margin-bottom:0}.layer-editor-item-header{align-items:center;gap:8px;margin-bottom:8px;display:flex}.layer-editor-visibility{accent-color:var(--viewer-control-selected-background);cursor:pointer;flex-shrink:0;margin:0}.layer-editor-name{min-width:0;color:var(--viewer-control-foreground);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;overflow:hidden}.layer-editor-order{flex-shrink:0;gap:3px;display:flex}.layer-editor-order button{background:var(--viewer-control-surface-background);width:22px;height:22px;color:var(--viewer-control-foreground);cursor:pointer;border:0;border-radius:4px;padding:0;font-size:9px}.layer-editor-order button:hover:not(:disabled){background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground);outline:none}.layer-editor-order button:active:not(:disabled){background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground);outline:none}.layer-editor-order button:focus{color:var(--viewer-control-foreground);outline:none}.layer-editor-order button:disabled{color:var(--viewer-control-subtle-foreground);cursor:default;pointer-events:none;outline:none}.layer-editor-opacity{align-items:center;gap:9px;display:flex}.layer-editor-slider{min-width:0;accent-color:var(--viewer-control-selected-background);cursor:pointer;flex:1;margin:0}.layer-editor-value{width:32px;color:var(--viewer-control-muted-foreground);text-align:right;flex-shrink:0;font-size:11px}.settings-panel{z-index:1100;box-sizing:border-box;background:var(--viewer-control-background);width:720px;max-width:calc(100vw - 80px);height:480px;max-height:calc(100vh - 80px);color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);border-radius:10px;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%);box-shadow:0 4px 18px #00000073}.settings-panel.hidden{display:none}.settings-panel-header{border-bottom:1px solid var(--viewer-control-border);justify-content:space-between;align-items:center;padding:8px 10px 8px 18px;font-size:16px;font-weight:600;display:flex}.settings-close{width:28px;height:28px;color:var(--viewer-control-foreground);cursor:pointer;background:0 0;border:0;border-radius:4px;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:14px;display:flex}.settings-close:hover{background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground)}.settings-close:active{background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground)}.settings-close:focus{outline:none}.settings-tabs{border-bottom:1px solid var(--viewer-control-border);padding:0 18px;display:flex}.settings-tab{color:var(--viewer-control-muted-foreground);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;padding:11px 16px;font-family:inherit;font-size:12px;font-weight:600}.settings-tab:hover{color:var(--viewer-control-hover-foreground);background:var(--viewer-control-hover-background)}.settings-tab.active{border-bottom-color:var(--viewer-control-selected-background);color:var(--viewer-control-selected-foreground);background:var(--viewer-control-selected-background)}.settings-tab:focus{outline:none}.settings-panel-body{height:calc(100% - 83px);overflow-y:auto}.settings-tab-panel{padding:0 20px 20px}.settings-tab-panel.hidden{display:none}.settings-option{border-bottom:1px solid var(--viewer-control-border);justify-content:space-between;align-items:center;gap:24px;padding:16px 0;display:flex}.settings-option:last-child{border-bottom:0}.settings-option-text{min-width:0}.settings-option-label{margin-bottom:3px;font-size:12px;font-weight:600}.settings-option-description{color:var(--viewer-control-muted-foreground);font-size:11px;line-height:1.35}.settings-switch{flex-shrink:0;width:38px;height:20px;position:relative}.settings-switch input{opacity:0;width:0;height:0;position:absolute}.settings-switch-slider{background:var(--viewer-control-surface-background);cursor:pointer;border-radius:10px;transition:background .15s;position:absolute;inset:0}.settings-switch-slider:before{background:var(--viewer-control-foreground);content:"";border-radius:50%;width:14px;height:14px;transition:transform .15s;position:absolute;top:3px;left:3px}.settings-switch input:checked+.settings-switch-slider{background:var(--viewer-control-selected-background)}.settings-switch input:checked+.settings-switch-slider:before{transform:translate(18px)}.settings-switch input:focus-visible+.settings-switch-slider{outline:2px solid var(--viewer-control-focus-border);outline-offset:2px}.settings-colour-input{border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);cursor:pointer;border-radius:4px;flex-shrink:0;width:38px;height:28px;padding:2px}.settings-colour-input::-webkit-color-swatch-wrapper{padding:0}.settings-colour-input::-webkit-color-swatch{border:0;border-radius:2px}.settings-colour-input::-moz-color-swatch{border:0;border-radius:2px}.settings-select{box-sizing:border-box;border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);width:150px;height:30px;color:var(--viewer-control-foreground);cursor:pointer;border-radius:4px;flex-shrink:0;padding:4px 8px;font-family:inherit;font-size:11px}.settings-select:hover{border-color:var(--viewer-control-focus-border)}.settings-select:focus{border-color:var(--viewer-control-focus-border);outline:none}.settings-reset-button{border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);height:30px;color:var(--viewer-control-foreground);cursor:pointer;border-radius:4px;flex-shrink:0;padding:4px 10px;font-family:inherit;font-size:11px}.settings-reset-button:hover{background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground)}.settings-reset-button:active{background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground)}.settings-reset-button:focus{border-color:var(--viewer-control-focus-border);outline:none}.settings-range-control{flex-shrink:0;align-items:center;gap:10px;width:190px;display:flex}.settings-range{min-width:0;accent-color:var(--viewer-control-selected-background);cursor:pointer;flex:1;margin:0}.settings-range-value{width:34px;color:var(--viewer-control-muted-foreground);text-align:right;flex-shrink:0;font-size:11px}.viewer-panel{z-index:1000;box-sizing:border-box;background:var(--viewer-control-background);width:240px;max-height:170px;color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);border-radius:10px;position:absolute;top:8px;left:48px;overflow:visible;box-shadow:0 3px 10px #00000059}.viewer-panel.hidden{display:none}.viewer-panel-section{border-bottom:1px solid var(--viewer-control-border);padding:9px 12px}.viewer-panel-section:last-child{border-bottom:0}.viewer-file-selectors{gap:6px;min-width:0;margin-bottom:6px;display:grid}.viewer-file-select{min-width:0;position:relative}.viewer-file-select-button{box-sizing:border-box;border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);width:100%;min-width:0;max-width:100%;height:30px;color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);text-align:left;cursor:pointer;border-radius:4px;align-items:center;padding:5px 24px 5px 7px;font-family:inherit;font-size:11px;display:flex;position:relative}.viewer-file-select-button:after{border-right:1px solid var(--viewer-control-muted-foreground);border-bottom:1px solid var(--viewer-control-muted-foreground);content:"";width:5px;height:5px;position:absolute;top:10px;right:9px;transform:rotate(45deg)}.viewer-file-select.open .viewer-file-select-button:after{top:13px;transform:rotate(225deg)}.viewer-file-select-button:hover:not(:disabled){background:var(--viewer-control-hover-background)}.viewer-file-select-button:focus{border-color:var(--viewer-control-focus-border);outline:none}.viewer-file-select-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.viewer-file-select.disabled{opacity:.4}.viewer-file-select-button:disabled{cursor:default}.viewer-file-select-menu{z-index:20;box-sizing:border-box;border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);border-radius:4px;width:320px;max-width:calc(100vw - 70px);padding:5px;position:absolute;top:calc(100% + 2px);left:0;box-shadow:0 3px 8px #00000059}.viewer-file-select-search{box-sizing:border-box;border:1px solid var(--viewer-control-border);background:var(--viewer-control-background);width:100%;min-width:0;height:28px;color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);border-radius:3px;padding:5px 7px;font-family:inherit;font-size:11px}.viewer-file-select-search::placeholder{color:var(--viewer-control-subtle-foreground);opacity:1}.viewer-file-select-search:focus{border-color:var(--viewer-control-focus-border);outline:none}.viewer-file-select-options{max-height:220px;margin-top:4px;overflow-y:auto}.viewer-file-select-option{width:100%;min-width:0;color:var(--viewer-control-foreground);text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:3px;padding:6px 7px;font-family:inherit;font-size:11px;display:block;overflow:hidden}.viewer-file-select-option:hover,.viewer-file-select-option.active{background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground)}.viewer-file-select-option.selected{background:var(--viewer-control-selected-background);color:var(--viewer-control-selected-foreground)}.viewer-file-select-option.selected:hover,.viewer-file-select-option.selected.active{background:var(--viewer-control-selected-hover-background);color:var(--viewer-control-selected-foreground)}.viewer-file-select-option:focus{outline:none}.viewer-file-select-empty{color:var(--viewer-control-subtle-foreground);padding:6px 7px;font-size:11px}.viewer-file-actions{grid-template-columns:1fr 1fr;gap:6px;display:grid}.viewer-file-actions button{background:var(--viewer-control-surface-background);min-width:0;height:30px;color:var(--viewer-control-foreground);cursor:pointer;border:0;border-radius:4px;padding:5px 7px;font-size:11px}.viewer-file-actions button:hover:not(:disabled){background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground)}.viewer-file-actions button:active:not(:disabled){background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground)}.viewer-file-actions button:disabled{opacity:.4;cursor:default}.map .ol-custom-overviewmap{--overview-map-width:300px;--overview-map-height:250px;width:var(--overview-map-width);height:calc(var(--overview-map-height) + 42px);background:0 0;border-radius:4px;padding:0;transition:width .18s,height .18s;inset:8px 8px auto auto;overflow:hidden}.map .ol-custom-overviewmap.ol-collapsed{width:72px;height:32px}.map .ol-custom-overviewmap .ol-overviewmap-map,.map .ol-custom-overviewmap.ol-collapsed .ol-overviewmap-map{width:var(--overview-map-width);height:var(--overview-map-height);box-sizing:border-box;border:2px solid var(--viewer-control-border);opacity:1;background:#fff;border-radius:4px;margin:0;transition:opacity .16s,transform .18s;display:block;position:absolute;top:40px;right:0;overflow:hidden;transform:translateY(0)}.map .ol-custom-overviewmap.ol-collapsed .ol-overviewmap-map{opacity:0;pointer-events:none;transform:translateY(-8px)}.map .ol-custom-overviewmap .ol-overviewmap-map .ol-viewport{background:#fff}.map .ol-custom-overviewmap .ol-overviewmap-box{box-sizing:border-box;border:3px dotted #163a59}.map .ol-custom-overviewmap button,.map .ol-custom-overviewmap:not(.ol-collapsed) button{z-index:2;background:var(--viewer-control-background);width:32px;height:32px;color:var(--viewer-control-foreground);cursor:pointer;border:0;border-radius:4px;margin:0;position:absolute;inset:0 40px auto auto}.map .ol-custom-overviewmap button:hover{background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground);outline:none}.map .ol-custom-overviewmap button:active{background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground);outline:none}.map .ol-custom-overviewmap button:focus{color:var(--viewer-control-foreground);outline:none}.overview-toggle-icon{justify-content:center;align-items:center;width:100%;height:100%;font-size:11px;transition:transform .18s;display:flex}.ol-control button:disabled,.ol-control button:disabled:hover,.ol-control button:disabled:active,.ol-control button:disabled:focus,.ol-control.ol-toggle button:disabled,.ol-control.ol-toggle button:disabled:hover,.ol-control.ol-toggle button:disabled:active,.ol-control.ol-toggle button:disabled:focus{background:var(--viewer-control-background);color:var(--viewer-control-foreground);opacity:.4;cursor:default;pointer-events:none;outline:none}.viewer-control-hidden{display:none!important}.ol-zoom button:focus:not(:active):not(:disabled){color:var(--viewer-control-foreground);box-shadow:none;background:0 0;outline:none}.ol-rotate button:focus:not(:active):not(:disabled),.reset-view-control button:focus:not(:active):not(:disabled),.map .ol-custom-overviewmap button:focus:not(:active),.ol-graticule:not(.active) button:focus:not(:active):not(:disabled),.ol-screen-space-graticule:not(.active) button:focus:not(:active):not(:disabled),.ol-full-screen button:not(.ol-full-screen-true):focus:not(:active),.viewer-panel-control button:not(.active):focus:not(:active),.layer-editor-control button:not(.active):focus:not(:active),.settings-control button:not(.active):focus:not(:active){background:var(--viewer-control-background);color:var(--viewer-control-foreground);box-shadow:none;outline:none}.ol-graticule.active button,.ol-screen-space-graticule.active button,.ol-full-screen button.ol-full-screen-true,.viewer-panel-control button.active,.layer-editor-control button.active,.settings-control button.active{background:var(--viewer-control-selected-background);color:var(--viewer-control-selected-foreground)}.ol-graticule.active button:hover,.ol-screen-space-graticule.active button:hover,.ol-full-screen button.ol-full-screen-true:hover,.viewer-panel-control button.active:hover,.layer-editor-control button.active:hover,.settings-control button.active:hover{background:var(--viewer-control-selected-hover-background);color:var(--viewer-control-selected-foreground)}.ol-graticule.active button:active,.ol-screen-space-graticule.active button:active,.ol-full-screen button.ol-full-screen-true:active,.viewer-panel-control button.active:active,.layer-editor-control button.active:active,.settings-control button.active:active{background:var(--viewer-control-selected-pressed-background);color:var(--viewer-control-selected-foreground)} -======= -:root,:host{--ol-background-color:white;--ol-accent-background-color:#f5f5f5;--ol-subtle-background-color:#80808040;--ol-partial-background-color:#ffffffbf;--ol-foreground-color:#333;--ol-subtle-foreground-color:#666;--ol-brand-color:#0af}.ol-box{box-sizing:border-box;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color);border-radius:2px}.ol-mouse-position{position:absolute;top:8px;right:8px}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;padding:2px;position:absolute;bottom:8px;left:8px}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-align:center;will-change:contents, width;border-top:none;margin:1px;font-size:10px;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{background-color:var(--ol-foreground-color);float:right;z-index:10;width:1px;height:15px}.ol-scale-step-text{z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:10px;position:absolute;bottom:-5px}.ol-scale-text{text-align:center;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:12px;position:absolute;bottom:25px}.ol-scale-singlebar{z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color);height:10px;position:relative}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset;overflow:hidden}.ol-viewport{touch-action:pan-x pan-y}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{background-color:var(--ol-subtle-background-color);border-radius:4px;position:absolute}.ol-zoom{top:.5em;left:.5em}.ol-rotate{transition:opacity .25s linear,visibility linear;top:.5em;right:.5em}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{top:.5em;right:.5em}.ol-control button{color:var(--ol-subtle-foreground-color);font-weight:700;font-size:inherit;text-align:center;background-color:var(--ol-background-color);border:none;border-radius:2px;width:1.375em;height:1.375em;margin:1px;padding:0;line-height:.4em;text-decoration:none;display:block}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{will-change:transform;font-weight:400;display:block}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-decoration:none}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;flex-flow:row-reverse;align-items:center;max-width:calc(100% - 1.3em);display:flex;bottom:.5em;right:.5em}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);margin:0;padding:1px .5em;font-size:12px}.ol-attribution li{list-style:none;display:inline}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{border-radius:4px 0 0;bottom:0;right:0}.ol-attribution.ol-uncollapsible img{max-height:1.6em;margin-top:-.2em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{height:200px;top:4.5em;left:.5em}.ol-zoomslider button{height:10px;position:relative}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{bottom:.5em;left:.5em}.ol-overviewmap.ol-uncollapsible{border-radius:0 4px 0 0;bottom:0;left:0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);width:150px;height:150px}.ol-overviewmap:not(.ol-collapsed) button{position:absolute;bottom:0;left:0}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.ol-overviewmap .ol-viewport:hover{cursor:pointer}.ol-control i{cursor:default}.ol-control.ol-bar{white-space:nowrap;min-width:1em;min-height:1em;position:absolute;top:.5em;left:50%;transform:translate(-50%)}.ol-control.ol-toggle .ol-option-bar{display:none}.ol-control.ol-bar .ol-control{vertical-align:middle;background-color:#0000;margin:0;padding:0;display:inline-block;position:relative;inset:auto;transform:none}.ol-control.ol-bar .ol-bar{position:static}.ol-control.ol-bar .ol-control button{outline:none;margin:2px 1px}.ol-control.ol-bar.ol-left{top:50%;left:.5em;transform:translateY(-50%)}.ol-control.ol-bar.ol-left .ol-control{display:block}.ol-control.ol-bar.ol-right{top:50%;left:auto;right:.5em;transform:translateY(-50%)}.ol-control.ol-bar.ol-right .ol-control{display:block}.ol-control.ol-bar.ol-bottom{top:auto;bottom:.5em}.ol-control.ol-bar.ol-top.ol-left,.ol-control.ol-bar.ol-top.ol-right{top:4.5em;transform:none}.ol-touch .ol-control.ol-bar.ol-top.ol-left,.ol-touch .ol-control.ol-bar.ol-top.ol-right{top:5.5em}.ol-control.ol-bar.ol-bottom.ol-left,.ol-control.ol-bar.ol-bottom.ol-right{top:auto;bottom:.5em;transform:none}.ol-control.ol-bar.ol-group{margin:1px 1px 1px 0}.ol-control.ol-bar.ol-right .ol-group,.ol-control.ol-bar.ol-left .ol-group{margin:1px 1px 0}.ol-control.ol-bar.ol-group button{border-radius:0;margin:0 0 0 1px}.ol-control.ol-bar.ol-right.ol-group button,.ol-control.ol-bar.ol-left.ol-group button,.ol-control.ol-bar.ol-right .ol-group button,.ol-control.ol-bar.ol-left .ol-group button{margin:0 0 1px}.ol-control.ol-bar.ol-group .ol-control:first-child>button{border-radius:5px 0 0 5px}.ol-control.ol-bar.ol-group .ol-control:last-child>button{border-radius:0 5px 5px 0}.ol-control.ol-bar.ol-left.ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-right.ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-left .ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-right .ol-group .ol-control:first-child>button{border-radius:5px 5px 0 0}.ol-control.ol-bar.ol-left.ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-right.ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-left .ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-right .ol-group .ol-control:last-child>button{border-radius:0 0 5px 5px}.ol-control.ol-bar .ol-rotate{opacity:1;visibility:visible}.ol-control.ol-bar .ol-rotate button{display:block}.ol-control.ol-bar .ol-toggle.ol-active>button,.ol-control.ol-bar .ol-toggle.ol-active button:hover{color:#fff;background-color:#0af}.ol-control.ol-toggle button:disabled{background-color:#ccc}.ol-control.ol-bar .ol-control.ol-option-bar{background-color:#fffc;border-radius:0;margin:5px 0;display:none;position:absolute;top:100%;left:0;box-shadow:0 0 0 1px #003c8880,1px 1px 2px #00000080}.ol-control.ol-bar .ol-option-bar:before{content:"";pointer-events:none;border:.5em solid #0000;border-bottom-color:#003c8880;position:absolute;bottom:100%;left:.3em}.ol-control.ol-bar .ol-option-bar .ol-control{display:table-cell}.ol-control.ol-bar .ol-control .ol-bar{display:none}.ol-control.ol-bar .ol-control.ol-active>.ol-option-bar{display:block}.ol-control.ol-bar .ol-control.ol-collapsed ul{display:none}.ol-control.ol-bar .ol-control.ol-text-button>div:hover,.ol-control.ol-bar .ol-control.ol-text-button>div{color:#003c8880;background-color:#0000;width:auto;min-width:1.375em;margin:0}.ol-control.ol-bar .ol-control.ol-text-button{border-left:1px solid #003c88cc;border-radius:0;font-size:.9em}.ol-control.ol-bar .ol-control.ol-text-button:first-child{border-left:0}.ol-control.ol-bar .ol-control.ol-text-button>div{padding:.11em .3em;font-family:Arial,Helvetica,sans-serif;font-size:1.14em;font-weight:400}.ol-control.ol-bar .ol-control.ol-text-button div:hover{color:#003c88}.ol-control.ol-bar.ol-bottom .ol-option-bar{top:auto;bottom:100%}.ol-control.ol-bar.ol-bottom .ol-option-bar:before{border-color:#003c8880 #0000 #0000;top:100%;bottom:auto}.ol-control.ol-bar.ol-left .ol-option-bar{margin:0 5px;top:0;bottom:auto;left:100%}.ol-control.ol-bar.ol-left .ol-option-bar:before{border-color:#0000 #003c8880 #0000 #0000;inset:.3em 100% auto auto}.ol-control.ol-bar.ol-right .ol-option-bar{margin:0 5px;inset:0 100% auto auto}.ol-control.ol-bar.ol-right .ol-option-bar:before{border-color:#0000 #0000 #0000 #003c8880;top:.3em;bottom:auto;left:100%}.ol-control.ol-bar.ol-left .ol-option-bar .ol-option-bar,.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar{margin:5px 0;inset:100% auto auto .3em}.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar{left:auto;right:.3em}.ol-control.ol-bar.ol-left .ol-option-bar .ol-option-bar:before,.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar:before{border-color:#0000 #0000 #003c8880;inset:auto auto 100% .3em}.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar:before{left:auto;right:.3em}.ol-control-title{position:absolute;top:0;left:0;right:0}.ol-center-position{background-color:#fffc;padding:.1em 1em;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.ol-compassctrl{display:none;top:1em;left:auto;right:1em}.ol-compassctrl.ol-visible{display:block!important}.ol-ext-dialog{opacity:0;z-index:1000;background-color:#00000080;width:150%;height:100%;transition:opacity .2s,top 0s .2s;position:fixed;top:-100%;left:0;pointer-events:none!important}.ol-ext-dialog.ol-visible{opacity:1;transition:opacity .2s,top;top:0;pointer-events:all!important}.ol-viewport .ol-ext-dialog{position:absolute}.ol-ext-dialog>form>h2{text-overflow:ellipsis;white-space:nowrap;margin:0 .5em .5em 0;display:none;overflow:hidden}.ol-ext-dialog>form.ol-title>h2{display:block}.ol-ext-dialog>form{box-sizing:border-box;background-color:#fff;border:1px solid #333;min-width:5em;max-width:60%;min-height:3em;max-height:100%;padding:1em;transition:top .2s,transform .2s;position:absolute;top:0;left:33.33%;overflow:hidden auto;transform:translate(-50%,-30%);box-shadow:3px 3px 4px #00000080}dialog.ol-ext-dialog>form{width:max-content;max-width:90%;left:50%}.ol-ext-dialog>form.ol-closebox{padding-top:1.5em}.ol-ext-dialog>form.ol-title{padding-top:1em}.ol-ext-dialog>form.ol-button{padding-bottom:.5em}.ol-ext-dialog.ol-zoom>form{top:30%;transform:translate(-50%,-30%)scale(0)}.ol-ext-dialog.ol-visible>form{top:30%}.ol-ext-dialog.ol-zoom.ol-visible>form{transform:translate(-50%,-30%)scale(1)}.ol-ext-dialog>form .ol-content{overflow:hidden auto}.ol-ext-dialog>form .ol-closebox{cursor:pointer;width:1em;height:1em;display:none;position:absolute;top:.5em;right:.5em}.ol-ext-dialog>form.ol-closebox .ol-closebox{display:block}.ol-ext-dialog>form .ol-closebox:before,.ol-ext-dialog>form .ol-closebox:after{content:"";background-color:currentColor;border-radius:.1em;width:1em;height:.1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-ext-dialog>form .ol-closebox:before{transform:translate(-50%,-50%)rotate(-45deg)}.ol-ext-dialog>form .ol-buttons{text-align:right;overflow-x:hidden}.ol-ext-dialog>form .ol-buttons input{color:#003c88;cursor:pointer;background:0 0;border:0;border-radius:.25em;margin-top:.5em;padding:.5em;font-size:1em}.ol-ext-dialog>form .ol-buttons input:hover{background-color:#003c881a}.ol-ext-dialog>form .ol-buttons input[type=submit]{font-weight:700}.ol-ext-dialog .ol-progress-message{text-align:center;padding-bottom:.5em;font-size:.9em}.ol-ext-dialog .ol-progress-bar{border:1px solid #369;width:20em;max-width:100%;height:1em;margin:.5em auto 0;padding:2px;overflow:hidden}.ol-ext-dialog .ol-progress-bar>div{background:#369;width:50%;height:100%;transition:width .3s}.ol-ext-dialog .ol-progress-bar>div.notransition{transition:unset}.ol-ext-dialog.ol-fullscreen-dialog form{text-align:center;max-width:calc(66.6% - 2em);-webkit-box-shadow:none;box-shadow:none;color:#fff;background:0 0;border:none;inset:1em;transform:none}.ol-ext-dialog.ol-fullscreen-dialog form .ol-closebox{font-size:2em;top:0;right:0}.ol-ext-dialog.ol-fullscreen-dialog .ol-closebox:before,.ol-ext-dialog.ol-fullscreen-dialog .ol-closebox:after{border:.1em solid}.ol-ext-dialog.ol-fullscreen-dialog img,.ol-ext-dialog.ol-fullscreen-dialog video{max-width:100%}body>.ol-ext-dialog .ol-content{max-height:calc(100vh - 10em)}body>.ol-ext-dialog>form{overflow:visible}.ol-editbar .ol-button button{box-sizing:border-box;vertical-align:middle;font-style:normal;display:inline-block;position:relative}.ol-editbar .ol-button button:before,.ol-editbar .ol-button button:after{content:"";box-sizing:border-box;background-color:currentColor;border-width:0;position:absolute}.ol-editbar .ol-button button:focus{outline:none}.ol-editbar .ol-selection>button:before{background-color:#0000;border:.25em solid #0000;border-top:0 solid;border-bottom:.65em solid;width:.6em;height:1em;top:.35em;left:.5em;transform:translate(-50%,-50%)rotate(-30deg);box-shadow:0 .6em 0 -.23em}.ol-editbar .ol-selection0>button:after{background-color:#0000;border:.05em solid #0000;border-top:0 solid;border-bottom:.7em solid;width:.28em;height:.6em;top:.5em;left:.7em;transform:rotate(-45deg)}.ol-editbar .ol-delete button:after,.ol-editbar .ol-delete button:before{width:1em;height:.2em;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-editbar .ol-delete button:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-editbar .ol-info button:before{border-radius:.03em;width:.25em;height:.6em;top:.47em;left:50%;transform:translate(-50%)}.ol-editbar .ol-info button:after{border-radius:.03em;width:.25em;height:.2em;top:.12em;left:50%;transform:translate(-50%);box-shadow:-.1em .35em,-.1em .82em,.1em .82em}.ol-editbar .ol-drawpoint button:before{background-color:#0000;border:.15em solid;border-radius:50%;width:.7em;height:.7em;top:.2em;left:50%;transform:translate(-50%)}.ol-editbar .ol-drawpoint button:after{background-color:#0000;border:.2em solid #0000;border-top:.4em solid;border-bottom:0 solid;width:.4em;height:.4em;top:.8em;left:50%;transform:translate(-50%)}.ol-editbar .ol-drawline>button:before,.ol-editbar .ol-drawpolygon>button:before,.ol-editbar .ol-drawhole>button:before{background-color:#0000;border:.13em solid;border-width:.2em .13em .09em;width:.8em;height:.8em;top:.2em;left:.25em;transform:rotate(10deg)perspective(1em)rotateX(40deg)}.ol-editbar .ol-drawline>button:before{border-bottom:0}.ol-editbar .ol-drawline>button:after,.ol-editbar .ol-drawhole>button:after,.ol-editbar .ol-drawpolygon>button:after{width:.3em;height:.3em;top:.2em;left:.25em;box-shadow:-.2em .55em,.6em .1em,.65em .7em}.ol-editbar .ol-drawhole>button:after{box-shadow:-.2em .55em,.6em .1em,.65em .7em,.25em .35em}.ol-editbar .ol-offset>button i,.ol-editbar .ol-transform>button i{width:.9em;height:.9em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-editbar .ol-offset>button i{width:.8em;height:.8em}.ol-editbar .ol-offset>button i:before,.ol-editbar .ol-transform>button i:before,.ol-editbar .ol-transform>button i:after{content:"";background-color:currentColor;width:.1em;height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg);box-shadow:.5em 0 0 .1em,-.5em 0 0 .1em}.ol-editbar .ol-offset>button i:before{box-shadow:.45em 0 0 .1em,-.45em 0 0 .1em}.ol-editbar .ol-transform>button i:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-editbar .ol-split>button:before{border-radius:50%;width:.3em;height:.3em;top:.81em;left:.75em;box-shadow:.1em -.4em,-.15em -.25em}.ol-editbar .ol-split>button:after{background-color:#0000;border:.2em solid;border-width:0 .2em .2em 0;border-radius:.1em;width:.8em;height:.8em;top:.15em;left:-.1em;transform:rotate(20deg)scaleY(.6)rotate(-45deg)}.ol-editbar .ol-drawregular>button:before{background-color:#0000;border:.1em solid;width:.9em;height:.9em;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div{cursor:pointer;vertical-align:text-bottom;border:.5em solid #0000;border-color:#0000 currentColor;display:inline-block}.ol-editbar .ol-drawregular .ol-bar:before,.ol-control.ol-bar.ol-editbar .ol-drawregular .ol-bar{left:50%;transform:translate(-50%)}.ol-editbar .ol-drawregular .ol-bar .ol-text-button{text-align:center;min-width:6em}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div:first-child{border-width:.5em .5em .5em 0;margin:0 .5em 0 0}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div:last-child{border-width:.5em 0 .5em .5em;margin:0 0 0 .5em}.ol-feature-list{position:relative}.ol-control.ol-feature-list{width:100%;position:absolute;bottom:0;left:0}.ol-control.ol-feature-list>button:before{content:"";background-image:linear-gradient(90deg,currentColor,#0000);width:60%;height:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 2.5px}.ol-control.ol-feature-list.ol-collapsed{width:auto;bottom:.5em;left:.5em}.ol-feature-list .ol-content{clear:both;background-color:#f4f6f8}.ol-feature-list.ol-collapsed .ol-content>*{display:none}.ol-feature-list .ol-header{position:relative;overflow:hidden}.ol-feature-list.ol-collapsed .ol-header{display:block}.ol-control.ol-feature-list>button,.ol-control.ol-feature-list.ol-collapsed .ol-content{display:none}.ol-control.ol-feature-list.ol-collapsed>button{display:block}.ol-feature-list .ol-sizer{cursor:row-resize;background-color:#ccc;border:1px solid #f4f6f8;border-width:1px 0;width:100%;height:1px;position:relative}.ol-feature-list.ol-bottom .ol-sizer{position:absolute;bottom:0}.ol-feature-list .ol-sizer:before{content:"";z-index:1;background-color:#ddd;border:3px solid #0000;border-width:3px 1.5em;border-radius:2px;width:1.5em;height:4px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 -1px #aaa,inset 0 1px #aaa}.ol-feature-list .ol-sizer:hover:before{background-color:#ccc}.ol-feature-list .ol-content .ol-header p{vertical-align:middle;white-space:nowrap;text-overflow:ellipsis;width:calc(100% - 2em);margin:.1em .25em;display:inline-block;overflow:hidden}.ol-feature-list .ol-content .ol-header .ol-buttons{position:absolute;top:50%;right:0;transform:translateY(-50%)}.ol-feature-list .ol-content .ol-header button{vertical-align:middle;box-sizing:border-box;background:0 0;border:0;width:1em;height:1em;margin:0 .2em;position:relative}.ol-feature-list .ol-content .ol-header button.ol-closebox:before,.ol-feature-list .ol-content .ol-header button.ol-closebox:after{content:"";background:currentColor;width:.1em;height:1em;font-style:normal;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-feature-list .ol-content .ol-header button.ol-closebox:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox{border:1px solid}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox:before{transform:translate(-50%,-50%)rotate(90deg)}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox:after{display:none}.ol-feature-list .ol-scroll-container{height:10em;min-height:3em;overflow:auto}.ol-feature-list .ol-scroll-container:focus{outline:unset}.ol-feature-list table{border-collapse:collapse;white-space:nowrap;background-color:#fff;position:relative}.ol-feature-list table thead{background-color:#f4f6f8;position:sticky;top:0;overflow:hidden}.ol-feature-list table tr{box-sizing:border-box;height:1.4em}.ol-feature-list table tbody tr:hover{cursor:pointer;background-color:#eee}.ol-feature-list table tbody tr.ol-selected{background-color:#eee}.ol-feature-list table td{border:0 solid #ddd;border-width:0 0 1px 1px;width:100px;overflow:hidden}.ol-feature-list table td.number{text-align:right}.ol-feature-list table td.undefined{text-align:center;background-color:#fafafa}.ol-feature-list table tr:hover td,.ol-feature-list table .ol-selected td{background-color:#0000}.ol-feature-list thead td{position:relative}.ol-feature-list thead td.sort{padding-right:1.5em}.ol-feature-list thead td p{margin:0;display:inline-block}.ol-feature-list table td button{background-color:#0000;border:0;width:1.2em;height:1.4em;margin:.1em 0;padding:0;position:absolute;top:0;right:0}.ol-feature-list thead td button.sort:before{content:"⇅";cursor:pointer;font-size:1em;font-style:normal;font-weight:400;line-height:1em}.ol-feature-list thead td button.sortup:before{content:"↧"}.ol-feature-list thead td button.sortdown:before{content:"↥"}.ol-gauge{background-color:#ffffff80;padding:.1em .5em;top:.5em;left:50%;transform:translate(-50%)}.ol-gauge>*{vertical-align:middle;display:inline-block}.ol-gauge>span{margin:0 .5em 0 0}.ol-gauge>div{border:1px solid #003c8880;border-radius:3px;width:200px;padding:1px;display:inline-block}.ol-gauge button{max-width:100%;height:.8em;margin:0}.ol-control.ol-bookmark{background-color:#ffffff80;top:.5em;left:3em}.ol-control.ol-bookmark button{position:relative}.ol-control.ol-bookmark>button:before{content:"";border:5px solid;border-top-width:10px;border-bottom:4px solid #0000;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-bookmark>div{min-width:5em;display:block}.ol-control.ol-bookmark.ol-collapsed>div{display:none}.ol-control.ol-bookmark input{margin:0 .5em .5em;padding:0 .5em;font-size:.9em}.ol-control.ol-bookmark ul{min-width:10em;margin:0 0 .5em;padding:0;list-style:none}.ol-control.ol-bookmark li{color:#003c88cc;cursor:default;clear:both;padding:0 .2em 0 .5em;font-size:.9em}.ol-control.ol-bookmark li:hover{color:#fff;background-color:#003c8880}.ol-control.ol-bookmark>div button{float:right;cursor:pointer;background-color:#0000;border-radius:0;width:1em;height:.8em}.ol-control.ol-bookmark>div button:before{content:"⨯";color:#936;border-radius:0;font-size:1.2em;line-height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-bookmark ul li button,.ol-bookmark input{display:none}.ol-bookmark.ol-editable ul li button,.ol-bookmark.ol-editable input{display:block}.ol-control.ol-geobt{inset:auto .5em 3em auto}.ol-touch .ol-control.ol-geobt{bottom:3.5em}.ol-control.ol-geobt button:before{content:"";background:0 0;border:.16em solid;border-radius:50%;width:.4em;height:.4em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-geobt button:after{content:"";background:0 0;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.42em 0,-.42em 0,0 .42em,0 -.42em}.ol-control.ol-bar.ol-geobar .ol-control{vertical-align:middle;display:inline-block}.ol-control.ol-bar.ol-geobar .ol-bar{display:none}.ol-bar.ol-geobar.ol-active .ol-bar{display:inline-block}.ol-bar.ol-geobar .geolocBt button:before,.ol-bar.ol-geobar .geolocBt button:after{content:"";border-top:.3em solid;border-bottom:0 solid #0000;border-left:.2em solid #0000;border-right:.8em solid #0000;font-size:1.2em;display:block;position:absolute;top:.45em;left:.15em;transform:rotate(-30deg)}.ol-bar.ol-geobar .geolocBt button:after{border-width:0 .8em .3em .2em;border-color:#0000 #0000 currentColor;transform:rotate(-61deg)}.ol-bar.ol-geobar .startBt button:before{content:"";background-color:#800;border-radius:50%;width:1em;height:1em;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-bar.ol-geobar .pauseBt button:before,.ol-bar.ol-geobar .pauseBt button:after{content:"";background-color:currentColor;width:.25em;height:1em;display:block;position:absolute;top:50%;left:35%;transform:translate(-50%,-50%)}.ol-bar.ol-geobar .pauseBt button:after{left:65%}.ol-control.ol-bar.ol-geobar .centerBt,.ol-control.ol-bar.ol-geobar .pauseBt,.ol-bar.ol-geobar.pauseTrack .startBt,.ol-bar.ol-geobar.centerTrack .startBt,.ol-bar.ol-geobar.centerTrack.pauseTrack .pauseBt,.ol-bar.ol-geobar.centerTrack .pauseBt{display:none}.ol-bar.ol-geobar.pauseTrack .pauseBt,.ol-bar.ol-geobar.centerTrack .centerBt{display:inline-block}.ol-control.ol-globe{opacity:.7;transform-origin:0 100%;border-radius:50%;position:absolute;bottom:.5em;left:.5em;transform:scale(.5)}.ol-control.ol-globe:hover{opacity:.9}.ol-control.ol-globe .panel{cursor:pointer;background-color:#fff;border-radius:50%;width:170px;height:170px;display:block;overflow:hidden;box-shadow:0 0 10px 5px #ffffff80}.ol-control.ol-globe .panel .ol-viewport{border-radius:50%}.ol-control.ol-globe .ol-pointer{z-index:1;background-color:#fff;border:10px solid red;border-radius:50%;width:10px;height:10px;transition:opacity .15s,top,left;display:block;position:absolute;top:50%;left:50%;transform:translate(-15px,-40px)}.ol-control.ol-globe .ol-pointer.hidden{opacity:0;transition:opacity .15s,top 3s,left 5s}.ol-control.ol-globe .ol-pointer:before{content:"";border-radius:50%;width:0;height:0;display:block;position:absolute;top:23px;left:0;box-shadow:6px 6px 10px 5px #000}.ol-control.ol-globe .ol-pointer:after{content:"";border:10px solid #0000;border-top:20px solid red;border-bottom:0 solid red;width:0;height:0;display:block;position:absolute;top:100%;left:-50%}.ol-control.ol-globe .panel:before{content:"";z-index:1;border-radius:50%;width:100%;height:100%;display:block;position:absolute;top:0;left:0;box-shadow:inset -20px -20px 80px 2px #000000b3}.ol-control.ol-globe .panel:after{content:"";z-index:1;border-radius:50%;width:20%;height:0;display:block;position:absolute;top:20%;left:23%;transform:rotate(-40deg);box-shadow:0 0 20px 7px #fff}.ol-control.ol-globe.ol-collapsed .panel{display:none}.ol-control-top.ol-globe{transform-origin:0 0;top:5em;bottom:auto}.ol-control-right.ol-globe{transform-origin:100% 100%;left:auto;right:.5em}.ol-control-right.ol-control-top.ol-globe{transform-origin:100% 0;left:auto;right:.5em}.ol-gridreference{background:#fff;border:1px solid #000;max-height:100%;top:0;right:0;overflow:auto}.ol-gridreference input{width:100%}.ol-gridreference ul{margin:0;padding:0;list-style:none}.ol-gridreference li{cursor:pointer;padding:0 .5em}.ol-gridreference ul li:hover{background-color:#ccc}.ol-gridreference li.ol-title,.ol-gridreference li.ol-title:hover{color:#fff;cursor:default;background:#003c8880}.ol-gridreference ul li .ol-ref{margin-left:.5em}.ol-gridreference ul li .ol-ref:before{content:"("}.ol-gridreference ul li .ol-ref:after{content:")"}.ol-control.ol-imageline{border-radius:0;padding:0;transition:all .3s;bottom:0;left:0;right:0;overflow:visible}.ol-control.ol-imageline.ol-collapsed{transform:translateY(100%)}.ol-imageline>div{white-space:nowrap;scroll-behavior:smooth;width:100%;height:4em;position:relative;overflow:hidden}.ol-imageline>div.ol-move{scroll-behavior:unset}.ol-control.ol-imageline button{margin:.65em;position:absolute;top:-1em;transform:translateY(-100%);box-shadow:0 0 0 .15em #fff6}.ol-control.ol-imageline button:before{content:"";border:.15em solid;border-width:.15em .15em 0 0;width:.4em;height:.4em;position:absolute;top:40%;left:50%;transform:translate(-50%,-50%)rotate(135deg)}.ol-control.ol-imageline.ol-collapsed button:before{top:60%;transform:translate(-50%,-50%)rotate(-45deg)}.ol-imageline,.ol-imageline:hover{background-color:#000000bf}.ol-imageline.ol-arrow:after,.ol-imageline.ol-arrow:before{content:"";z-index:1;opacity:.8;pointer-events:none;border:1em solid #fff;border-left:0 solid #000;border-right:.6em solid #000;position:absolute;top:50%;left:.2em;transform:translateY(-50%);box-shadow:-.6em 0 0 1em #fff}.ol-imageline.ol-arrow:after{border-width:1em 0 1em .6em;left:auto;right:.2em;box-shadow:.6em 0 0 1em #fff}.ol-imageline.ol-scroll0.ol-arrow:before,.ol-imageline.ol-scroll1.ol-arrow:after{display:none}.ol-imageline .ol-image{cursor:pointer;height:100%;display:inline-block;position:relative}.ol-imageline img{box-sizing:border-box;opacity:0;border:.25em solid #0000;max-height:100%;transition:all 1s}.ol-imageline img.ol-loaded{opacity:1}.ol-imageline .ol-image.select{background-color:#fff}.ol-imageline .ol-image span{color:#fff;white-space:normal;text-align:center;background-color:#00000080;width:125%;max-height:2.4em;font-size:.8em;line-height:1.2em;display:none;position:absolute;bottom:0;left:50%;overflow:hidden;transform:translate(-50%)scaleX(.8)}.ol-imageline .ol-image:hover span{display:block}.ol-control.ol-routing.ol-isochrone .ol-method-time,.ol-control.ol-routing.ol-isochrone .ol-method-distance,.ol-control.ol-routing.ol-isochrone>button{position:relative}.ol-control.ol-routing.ol-isochrone .ol-method-time:before,.ol-control.ol-routing.ol-isochrone>button:before{content:"";clip:unset;border:.1em solid;border-radius:50%;width:.8em;height:.8em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 -.5em 0 -.35em,.4em -.35em 0 -.35em}.ol-control.ol-routing.ol-isochrone .ol-method-time:after,.ol-control.ol-routing.ol-isochrone>button:after{content:"";-webkit-box-shadow:none;box-shadow:none;box-sizing:border-box;clip:unset;border:.3em solid #0000;border-right-color:currentColor;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-60deg)}.ol-control.ol-routing.ol-isochrone .ol-method-distance:before{content:"";box-sizing:border-box;border:.1em solid;width:1em;height:.5em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-30deg)}.ol-control.ol-routing.ol-isochrone .ol-method-distance:after{content:"";width:.1em;height:.15em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-30deg);box-shadow:inset 0 -.15em,0 .1em,.25em .1em,-.25em .1em}.ol-control.ol-routing.ol-isochrone .ol-direction-direct:before,.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:before{content:"";box-sizing:border-box;border:.1em solid;border-radius:50%;width:.3em;height:.3em;position:absolute;top:50%;left:30%;transform:translate(-50%,-50%);box-shadow:.25em 0 0 -.05em}.ol-control.ol-routing.ol-isochrone .ol-direction-direct:after,.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:after{content:"";border:.4em solid #0000;border-left-color:currentColor;border-right:0 solid;position:absolute;top:50%;left:70%;transform:translate(-50%,-50%)}.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:after{border-width:.4em .4em .4em 0}.ol-control.ol-isochrone.ol-collapsed .content{display:none}.ol-control.ol-isochrone input[type=number]{text-align:right;width:3em;margin:0 .1em}.ol-control.ol-isochrone .ol-distance input[type=number]{width:5em}.ol-isochrone .ol-time,.ol-isochrone .ol-distance{display:none}.ol-isochrone .ol-time.selected,.ol-isochrone .ol-distance.selected{display:block}.ol-control.ol-layerswitcher-popup{text-align:left;position:absolute;top:3em;right:.5em}.ol-control.ol-layerswitcher-popup .panel{clear:both;background:#fff}.ol-layerswitcher-popup .panel{margin:0;padding:.25em;list-style:none;overflow:hidden}.ol-layerswitcher-popup .panel ul{padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher-popup.ol-collapsed .panel{display:none}.ol-layerswitcher-popup.ol-forceopen .panel{display:block}.ol-layerswitcher-popup button{float:right;background-color:#fff;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACE1BMVEX///8A//8AgICA//8AVVVAQID///8rVVVJtttgv98nTmJ2xNgkW1ttyNsmWWZmzNZYxM4gWGgeU2JmzNNr0N1Rwc0eU2VXxdEhV2JqytQeVmMhVmNoydUfVGUgVGQfVGQfVmVqy9hqy9dWw9AfVWRpydVry9YhVmMgVGNUw9BrytchVWRexdGw294gVWQgVmUhVWPd4N6HoaZsy9cfVmQgVGRrytZsy9cgVWQgVWMgVWRsy9YfVWNsy9YgVWVty9YgVWVry9UgVWRsy9Zsy9UfVWRsy9YgVWVty9YgVWRty9Vsy9aM09sgVWRTws/AzM0gVWRtzNYgVWRuy9Zsy9cgVWRGcHxty9bb5ORbxdEgVWRty9bn6OZTws9mydRfxtLX3Nva5eRix9NFcXxOd4JPeINQeIMiVmVUws9Vws9Vw9BXw9BYxNBaxNBbxNBcxdJexdElWWgmWmhjyNRlx9IqXGtoipNpytVqytVryNNrytZsjZUuX210k5t1y9R2zNR3y9V4lp57zth9zdaAnKOGoaeK0NiNpquV09mesrag1tuitbmj1tuj19uktrqr2d2svcCu2d2xwMO63N+7x8nA3uDC3uDFz9DK4eHL4eLN4eIyYnDX5OM5Z3Tb397e4uDf4uHf5uXi5ePi5+Xj5+Xk5+Xm5+Xm6OY6aHXQ19fT4+NfhI1Ww89gx9Nhx9Nsy9ZWw9Dpj2abAAAAWnRSTlMAAQICAwQEBgcIDQ0ODhQZGiAiIyYpKywvNTs+QklPUlNUWWJjaGt0dnd+hIWFh4mNjZCSm6CpsbW2t7nDzNDT1dje5efr7PHy9PT29/j4+Pn5+vr8/f39/f6DPtKwAAABTklEQVR4Xr3QVWPbMBSAUTVFZmZmhhSXMjNvkhwqMzMzMzPDeD+xASvObKePPa+ffHVl8PlsnE0+qPpBuQjVJjno6pZpSKXYl7/bZyFaQxhf98hHDKEppwdWIW1frFnrxSOWHFfWesSEWC6R/P4zOFrix3TzDFLlXRTR8c0fEEJ1/itpo7SVO9Jdr1DVxZ0USyjZsEY5vZfiiAC0UoTGOrm9PZLuRl8X+Dq1HQtoFbJZbv61i+Poblh/97TC7n0neCcK0ETNUrz1/xPHf+DNAW9Ac6t8O8WH3Vp98f5lCaYKAOFZMLyHL4Y0fe319idMNgMMp+zWVSybUed/+/h7I4wRAG1W6XDy4XmjR9HnzvDRZXUAYDFOhC1S/Hh+fIXxen+eO+AKqbs+wAo30zDTDvDxKoJN88sjUzDFAvBzEUGFsnADoIvAJzoh2BZ8sner+Ke/vwECuQAAAABJRU5ErkJggg==);background-position:50%;background-repeat:no-repeat;width:38px;height:38px}.ol-layerswitcher-popup li{color:#369;cursor:pointer;padding:.25em 1em;font-family:Trebuchet MS,Helvetica,sans-serif}.ol-layerswitcher-popup li.ol-header{display:none}.ol-layerswitcher-popup li.select,.ol-layerswitcher-popup li.ol-visible{color:#fff;background:#003c88b3}.ol-layerswitcher-popup li:hover{color:#fff;background:#003c88e6}.ol-control.ol-layerswitcher.ol-layer-shop{height:calc(100% - 4em);max-height:unset;background-color:#0000;max-width:16em;overflow:visible;pointer-events:none!important}.ol-control.ol-layerswitcher>*{pointer-events:auto}.ol-control.ol-layer-shop>button,.ol-control.ol-layer-shop .panel-container{box-shadow:0 0 0 3px #ffffff80}.ol-control.ol-layerswitcher.ol-layer-shop .panel-container{border:2px solid #369;border-width:2px 0;max-height:calc(100% - 6.5em);padding:0;overflow-y:scroll}.ol-control.ol-layer-shop .panel{box-sizing:border-box;margin:.25em .5em;padding:0}.ol-control.ol-layerswitcher.ol-layer-shop .panel-container.ol-scrolldiv{overflow:hidden}.ol-control.ol-layer-shop .ol-scroll{opacity:.5;background-color:#0000004d}.ol-layerswitcher.ol-layer-shop ul.panel li.ol-header{display:none}.ol-layerswitcher.ol-layer-shop ul.panel li{margin-right:0;padding-right:0}.ol-layerswitcher.ol-layer-shop .layerup{box-sizing:border-box;color:#003c88;background-color:#0000;border-radius:3px;width:1.4em;height:1.5em;margin:0}.ol-layerswitcher.ol-layer-shop .layerup:hover{background-color:#003c884d}.ol-layerswitcher.ol-layer-shop .layerup:before{background-color:currentColor;border:0;width:1em;height:2px;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 -4px,0 4px}.ol-layerswitcher.ol-layer-shop .layerup:after{content:unset}.ol-control.ol-layer-shop .ol-title-bar{box-sizing:border-box;text-overflow:ellipsis;white-space:nowrap;text-align:right;transform-origin:100% 0;background-color:#ffffff80;max-width:14.6em;height:calc(2.8em - 4px);padding:.7em .5em;font-size:.9em;transition:transform .1s,width;overflow:hidden;transform:scaleY(1.1)}.ol-control.ol-layer-shop:hover .ol-title-bar{background-color:#ffffffb3}.ol-control.ol-layer-shop.ol-collapsed .ol-title-bar{max-width:10em;transform:scale(.9,1.1)}.ol-control.ol-layer-shop.ol-forceopen .ol-title-bar{max-width:14.6em;transform:scaleY(1.1)}.ol-control.ol-layer-shop .ol-bar{clear:both;text-align:right;z-index:10;background-color:#fff;height:1.75em;position:relative;box-shadow:0 0 0 3px #ffffff80}.ol-control.ol-layer-shop.ol-collapsed .ol-scroll,.ol-control.ol-layer-shop.ol-collapsed .ol-bar{border-width:2px 0 0;display:none}.ol-control.ol-layer-shop.ol-forceopen .ol-scroll,.ol-control.ol-layer-shop.ol-forceopen .ol-bar{display:block}.ol-control.ol-layer-shop .ol-bar>*{vertical-align:middle;background-color:#0000;margin-top:.25em;font-size:.9em;display:inline-block}.ol-layer-shop .ol-bar .ol-button,.ol-touch .ol-layer-shop .ol-bar .ol-button{top:unset;left:unset;bottom:unset;right:unset;margin:0;position:relative}.ol-layer-shop .ol-bar button{color:#003c88;background-color:#fff}.ol-layer-shop .ol-bar button:hover{background-color:#003c8833}.ol-touch .ol-layerswitcher.ol-layer-shop>button{font-size:1.7em}.ol-touch .ol-layer-shop .ol-bar{height:2em}.ol-touch .ol-layer-shop .ol-control button{font-size:1.4em}.ol-touch .ol-control.ol-layer-shop .panel{max-height:calc(100% - 7em)}.ol-touch .ol-control.ol-layer-shop .panel label{height:1.8em}.ol-touch .ol-control.ol-layer-shop .panel label span{margin-left:.5em;padding-top:.25em}.ol-touch .ol-control.ol-layer-shop .panel label:before,.ol-touch .ol-control.ol-layer-shop .panel label:after{z-index:1;font-size:1.3em}.ol-control.ol-layerswitcher{text-align:left;box-sizing:border-box;max-height:calc(100% - 6em);position:absolute;top:3em;right:.5em;overflow:hidden}.ol-control.ol-layerswitcher .ol-switchertopdiv,.ol-control.ol-layerswitcher .ol-switcherbottomdiv{display:block}.ol-control.ol-layerswitcher.ol-collapsed .ol-switchertopdiv,.ol-control.ol-layerswitcher.ol-collapsed .ol-switcherbottomdiv{display:none}.ol-layerswitcher.ol-forceopen.ol-collapsed .ol-switchertopdiv,.ol-layerswitcher.ol-forceopen.ol-collapsed .ol-switcherbottomdiv{display:block}.ol-control.ol-layerswitcher .ol-switchertopdiv,.ol-control.ol-layerswitcher .ol-switcherbottomdiv{z-index:2;opacity:1;cursor:pointer;box-sizing:border-box;background:#fff;border-top:2px solid #0000;border-bottom:2px solid #369;height:45px;margin:0 2px;position:absolute;top:0;left:0;right:0}.ol-control.ol-layerswitcher .ol-switcherbottomdiv{border-top:2px solid #369;border-bottom:2px solid #0000;height:2em;top:auto;bottom:0}.ol-control.ol-layerswitcher .ol-switchertopdiv:before,.ol-control.ol-layerswitcher .ol-switcherbottomdiv:before{content:"";opacity:.8;border:10px solid #0000;width:0;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-layerswitcher .ol-switchertopdiv:hover:before,.ol-control.ol-layerswitcher .ol-switcherbottomdiv:hover:before{opacity:1}.ol-control.ol-layerswitcher .ol-switchertopdiv:before{border-top:0;border-bottom-color:#369}.ol-control.ol-layerswitcher .ol-switcherbottomdiv:before{border-top-color:#369;border-bottom:0}.ol-control.ol-layerswitcher .panel-container{clear:both;background-color:#fff;border-radius:0 0 2px 2px;padding:.5em .5em 0;display:block}.ol-layerswitcher .panel{margin:0;padding:0;font-family:Tahoma,Geneva,sans-serif;font-size:.9em;list-style:none;transition:top .3s;position:relative;top:0;overflow:hidden}.ol-layerswitcher .panel ul{clear:both;padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher input[type=radio],.ol-layerswitcher input[type=checkbox]{opacity:0;width:0;height:0;position:absolute}.ol-layerswitcher .panel li{-weblit-transition:-webkit-transform .2s linear;clear:both;box-sizing:border-box;border:1px solid #0000;transition:transform .2s linear;display:block}.ol-layerswitcher .panel li.ol-layer-select{background-color:#003c8833;margin:0 -.5em;padding:0 .5em}.ol-layerswitcher .panel li.drag{opacity:.5;transform:scale(.8)}.ol-dragover{opacity:.8;background:#33669980}.ol-layerswitcher .panel li.forbidden,.forbidden .ol-layerswitcher-buttons div,.forbidden .layerswitcher-opacity div{background:#ff000080;color:red!important}.ol-layerswitcher.drag,.ol-layerswitcher.drag *{cursor:not-allowed!important;cursor:no-drop!important}.ol-layerswitcher.drag .panel li.dropover,.ol-layerswitcher.drag .panel li.dropover *{cursor:pointer!important;cursor:n-resize!important;cursor:ns-resize!important;cursor:-webkit-grab!important;cursor:grab!important;cursor:-webkit-grabbing!important;cursor:grabbing!important}.ol-layerswitcher .panel li.dropover{background:#33669980}.ol-layerswitcher .panel li label{white-space:nowrap;text-overflow:ellipsis;max-width:12em;height:1.4em;padding:0 0 0 1.7em;display:inline-block;position:relative;overflow:hidden}.ol-layerswitcher .panel li label span{text-overflow:ellipsis;width:100%;height:100%;padding-right:.2em;display:inline-block;overflow:hidden}.ol-layerswitcher [type=radio]+label:before,.ol-layerswitcher [type=checkbox]+label:before,.ol-layerswitcher [type=radio]:checked+label:after,.ol-layerswitcher [type=checkbox]:checked+label:after{content:"";box-sizing:border-box;background:#fff;border:2px solid #369;width:1.2em;height:1.2em;position:absolute;top:.1em;left:.1em}.ol-layerswitcher li:has(>div.li-content>.ol-visibility:focus){border-color:#369;box-shadow:inset 0 0 0 1px #369}.ol-layerswitcher [type=radio]+label:before,.ol-layerswitcher [type=radio]+label:after{border-radius:50%}.ol-layerswitcher [type=radio]:checked+label:after{background:#369;width:.6em;height:.6em;margin:.3em}.ol-layerswitcher [type=checkbox]:checked+label:after{background:0 0;border:3px solid #369;border-width:0 3px 3px 0;width:.7em;height:1em;top:-.05em;left:.55em;transform:rotate(45deg);box-shadow:1px 0 1px 1px #fff}.ol-layerswitcher .panel li.ol-layer-hidden{opacity:.6}.ol-layerswitcher.ol-collapsed .panel-container{display:none}.ol-layerswitcher.ol-forceopen .panel-container{display:block}.ol-control.ol-layerswitcher .ol-counter{z-index:22;text-align:left;font-size:.65em;line-height:1.5em;display:none;position:absolute;top:0;right:.3em}.ol-control.ol-layerswitcher.ol-counter .ol-counter{display:block}.ol-control.ol-layer-shop .ol-counter{text-align:center;background:#fff;border-radius:50%;width:1.5em;line-height:1.5em;transform:translate(50%,-50%);box-shadow:.5px .5px 2px}.ol-layerswitcher-image>button,.ol-layerswitcher>button{float:right;z-index:10;background-color:#fff;font-size:1.7em;position:relative}.ol-touch .ol-layerswitcher-image>button,.ol-touch .ol-layerswitcher>button{font-size:2.5em}.ol-layerswitcher-image>button:before,.ol-layerswitcher-image>button:after,.ol-layerswitcher>button:before,.ol-layerswitcher>button:after{content:"";border-radius:.15em;width:.75em;height:.75em;position:absolute;transform:scaleY(.8)rotate(45deg)}.ol-layerswitcher-image>button:before,.ol-layerswitcher>button:before{background:#e2e4e1;top:.32em;left:.34em;box-shadow:.1em .1em #325158}.ol-layerswitcher-image>button:after,.ol-layerswitcher>button:after{background:#83bcc5 radial-gradient(circle at .85em .6em,#70b3be 0 .65em,#83bcc5 .65em);top:.22em;left:.34em}.ol-layerswitcher-buttons{float:right;text-align:right;display:block}.ol-layerswitcher-buttons>div{cursor:pointer;text-align:center;vertical-align:middle;color:#fff;background:#369;width:1em;height:1em;margin:2px;line-height:1em;display:inline-block;position:relative}.ol-layerswitcher .panel li>div{display:inline-block;position:relative}.ol-layerswitcher .ol-separator{width:0;height:0;margin:0;padding:0;display:block}.ol-layerswitcher .layerup{float:right;opacity:.5;cursor:move;cursor:ns-resize;background-color:#369;height:2.5em}.ol-layerswitcher .layerup:before,.ol-layerswitcher .layerup:after{content:"";border:.4em solid #0000;border-top-color:#fff;border-bottom:0 solid #fff;width:0;height:0;position:absolute;bottom:3px;left:.1em}.ol-layerswitcher .layerup:after{border-width:0 .4em .4em;top:3px;bottom:auto}.ol-layerswitcher .layerInfo{background:#369;border-radius:100%}.ol-layerswitcher .layerInfo:before{color:#fff;content:"i";text-align:center;width:1.25em;font-size:.8em;font-weight:700;display:block;position:absolute;top:0;left:0}.ol-layerswitcher .layerTrash{background:#369}.ol-layerswitcher .layerTrash:before{color:#fff;content:"×";text-align:center;margin:-.5em 0;font-size:1em;line-height:1em;position:absolute;top:50%;left:0;right:0}.ol-layerswitcher .layerExtent{background:#369}.ol-layerswitcher .layerExtent:before{content:"";border-bottom:1px solid #fff;border-right:1px solid #fff;display:block;position:absolute;inset:6px 2px 3px 6px}.ol-layerswitcher .layerExtent:after{content:"";border-top:1px solid #fff;border-left:1px solid #fff;display:block;position:absolute;inset:3px 6px 6px 2px}.ol-layerswitcher .expend-layers,.ol-layerswitcher .collapse-layers{background-color:#0000;margin:0 2px}.ol-layerswitcher .expend-layers:before,.ol-layerswitcher .collapse-layers:before{content:"";background:#369;width:100%;height:4px;margin-top:-2px;position:absolute;top:50%;left:0}.ol-layerswitcher .expend-layers:after{content:"";background:#369;width:4px;height:100%;margin-left:-2px;position:absolute;top:0;left:50%}.ol-layerswitcher .layerswitcher-opacity{box-sizing:border-box;background:#69c;cursor:pointer;background:linear-gradient(90deg,#003c8800,#003c8899);border:1px solid #369;border-radius:3px;width:120px;height:3px;margin:5px 1em 10px 7px;position:relative;box-shadow:1px 1px 1px #00000080}.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor,.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor:before{z-index:1;background:#003c8880;border-radius:50%;width:20px;height:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor:before{content:"";width:50%;height:50%;position:absolute}.ol-touch .ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor{width:26px;height:26px}.ol-layerswitcher .layerswitcher-opacity-label{font-size:.8em;display:none;position:absolute;bottom:5px;right:-2.5em}.ol-layerswitcher .layerswitcher-opacity-label:after{content:"%"}.ol-layerswitcher .layerswitcher-progress{width:120px;margin:-4px 1em 2px 7px;display:block}.ol-layerswitcher .layerswitcher-progress div{background-color:#369;width:0;height:2px;display:block}.ol-control.ol-layerswitcher-image{text-align:left;transition:all .2s;position:absolute;top:1em;right:.5em}.ol-control.ol-layerswitcher-image.ol-collapsed{transition:none;top:3em}.ol-layerswitcher-image .panel{margin:0;padding:.25em;list-style:none;overflow:hidden}.ol-layerswitcher-image .panel ul{padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher-image.ol-collapsed .panel{display:none}.ol-layerswitcher-image.ol-forceopen .panel{clear:both;display:block}.ol-layerswitcher-image button{float:right;display:none}.ol-layerswitcher-image.ol-collapsed button{display:block;position:relative}.ol-layerswitcher-image li{vertical-align:middle;cursor:pointer;background-color:#fff;border:3px solid #0000;border-radius:4px;width:64px;height:64px;margin:2px;display:inline-block;position:relative;overflow:hidden;box-shadow:1px 1px 4px #00000080}.ol-layerswitcher-image li.ol-layer-hidden{opacity:.5;border-color:#555}.ol-layerswitcher-image li.ol-header{display:none}.ol-layerswitcher-image li img{max-width:100%;position:absolute}.ol-layerswitcher-image li.select,.ol-layerswitcher-image li.ol-visible{border:3px solid red}.ol-layerswitcher-image li p{display:none}.ol-layerswitcher-image li:hover p{color:#fff;text-align:center;background-color:#00000080;height:1.2em;margin:0;font-family:Verdana,Geneva,sans-serif;font-size:.8em;display:block;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.ol-control.ol-legend{z-index:1;background-color:#fff9;max-width:90%;max-height:90%;bottom:.5em;left:.5em;overflow:hidden auto}.ol-control.ol-legend:hover{background-color:#fffc}.ol-control.ol-legend.ol-empty,.ol-control.ol-legend.ol-collapsed{overflow:hidden}.ol-control.ol-legend button{display:none;position:relative}.ol-control.ol-legend.ol-empty button,.ol-control.ol-legend.ol-collapsed button{display:block}.ol-control.ol-legend.ol-uncollapsible button{display:none}.ol-control.ol-legend>ul,.ol-control.ol-legend>canvas{margin:2px}.ol-control.ol-legend button.ol-closebox{cursor:pointer;z-index:1;background:0 0;display:block;position:absolute;top:0;right:0}.ol-control.ol-legend.ol-empty button.ol-closebox,.ol-control.ol-legend.ol-uncollapsible button.ol-closebox,.ol-control.ol-legend.ol-collapsed button.ol-closebox{display:none}.ol-control.ol-legend button.ol-closebox:before{content:"×";color:#003c8880;background:0 0;font-size:1.3em}.ol-control.ol-legend button.ol-closebox:hover:before{color:#003c88}.ol-control.ol-legend .ol-legendImg{display:block}.ol-control.ol-legend.ol-empty .ol-legendImg,.ol-control.ol-legend.ol-collapsed .ol-legendImg{display:none}.ol-control.ol-legend.ol-uncollapsible .ol-legendImg{display:block}.ol-control.ol-legend>button:first-child:before,.ol-control.ol-legend>button:first-child:after{content:"";background-color:currentColor;width:.2em;height:.2em;position:absolute;top:.25em;left:.2em;box-shadow:0 .35em,0 .7em}.ol-control.ol-legend button:first-child:after{width:.6em;height:.15em;top:.27em;left:.55em}ul.ol-legend{width:100%;margin:0;padding:0;list-style:none;position:absolute;top:0;left:0}.ol-control.ol-legend.ol-empty ul,.ol-control.ol-legend.ol-collapsed ul{display:none}.ol-control.ol-legend.ol-uncollapsible ul{display:block}ul.ol-legend li.ol-title{text-align:center;font-weight:700}ul.ol-legend li.ol-title>div:first-child{width:0!important}ul.ol-legend li{white-space:nowrap;padding:0;overflow:hidden}ul.ol-legend li div{vertical-align:top;display:inline-block}.ol-control.ol-legend .ol-legend{display:inline-block}.ol-control.ol-legend.ol-empty .ol-legend,.ol-control.ol-legend.ol-collapsed .ol-legend{display:none}.ol-control.ol-legend.ol-empty button{opacity:.4}.ol-control.ol-mapzone{text-align:left;box-sizing:border-box;max-height:calc(100% - 6em);position:absolute;top:.5em;right:.5em;overflow:hidden}.ol-control.ol-mapzone.ol-collapsed{top:3em}.ol-control.ol-mapzone button{float:right;margin-top:2.5em;position:relative}.ol-touch .ol-control.ol-mapzone button{margin-top:1.67em}.ol-control.ol-mapzone.ol-collapsed button{margin-top:0}.ol-control.ol-mapzone button i{border:.1em solid;border-radius:50%;width:.9em;height:.9em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-control.ol-mapzone button i:before{content:"";background-color:currentColor;border-radius:50%;width:.4em;height:.4em;position:absolute;top:.3em;left:.5em;box-shadow:.05em .3em 0 -.051em,-.05em -.35em 0 -.1em,-.5em -.35em 0 0,-.65em .1em 0 -.03em,-.65em -.05em 0 -.05em}.ol-mapzone>div{width:5em;height:5em;margin:0 .2em 0 0;display:inline-block;position:relative}.ol-mapzone>div:focus{box-shadow:0 0 0 .2em #369}.ol-control.ol-mapzone.ol-collapsed>div{display:none}.ol-mapzone>div p{color:#fff;text-align:center;transform-origin:0 0;cursor:default;width:160%;margin:0;font-family:Lucida Grande,Verdana,Geneva,Lucida,Arial,Helvetica,sans-serif;font-weight:700;position:absolute;bottom:0;overflow:hidden;transform:scaleX(.625)}.ol-notification{background:0 0;border:0;width:150%;margin:0;padding:0;bottom:0}.ol-notification>div,.ol-notification>div:hover{color:#fff;text-align:center;box-sizing:border-box;opacity:1;background-color:#000c;border-radius:4px 4px 0 0;min-width:5em;max-width:calc(66% - 4em);min-height:1em;max-height:5em;padding:.2em .5em;transition:all .3s;position:absolute;bottom:0;left:33.33%;transform:translate(-50%)}.ol-notification.ol-collapsed>div{opacity:0;bottom:-5em}.ol-notification a{color:#9cf;cursor:pointer}.ol-notification .ol-close,.ol-notification .ol-close:hover{padding-right:1.5em}.ol-notification .closeBox{position:absolute;top:0;right:.3em}.ol-notification .closeBox:before{content:"×"}.ol-overlay{color:#fff;box-sizing:border-box;z-index:1;opacity:0;cursor:default;pointer-events:none;z-index:9;background-color:#0006;width:100%;height:100%;padding:1em;transition:all .5s;display:none;position:absolute;top:0;left:0;overflow:hidden}.ol-overlay.slide-up{transform:translateY(100%)}.ol-overlay.slide-down{transform:translateY(-100%)}.ol-overlay.slide-left{transform:translate(-100%)}.ol-overlay.slide-right{transform:translate(100%)}.ol-overlay.zoom{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)}.ol-overlay.zoomout{transform:scale(3)}.ol-overlay.zoomrotate{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)rotate(360deg)}.ol-overlay.stretch{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scaleX(0)}.ol-overlay.stretchy{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scaleY(0)}.ol-overlay.wipe{opacity:1}.ol-overlay.flip{transform:perspective(600px)rotateY(180deg)}.ol-overlay.card{opacity:.5;transform:translate(-80%,100%)rotate(-.5turn)}.ol-overlay.book{transform-origin:10%;transform:perspective(600px)rotateY(-180deg)scaleX(.6)}.ol-overlay.book.visible{transform-origin:10%}.ol-overlay.ol-visible{opacity:1;pointer-events:all;inset:0;transform:none}.ol-overlay .ol-closebox{cursor:pointer;z-index:1;width:1em;height:1em;position:absolute;top:1em;right:1em}.ol-overlay .ol-closebox:before{content:"❌";text-align:center;vertical-align:middle;display:block}.ol-overlay .ol-fullscreen-image{position:absolute;inset:0}.ol-overlay .ol-fullscreen-image img{box-sizing:border-box;max-width:100%;max-height:100%;padding:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlay .ol-fullscreen-image.ol-has-title img{padding-bottom:3em}.ol-overlay .ol-fullscreen-image p{text-align:center;background-color:#00000080;margin:0;padding:.5em;position:absolute;bottom:0;left:0;right:0}.ol-control.ol-overview{text-align:left;position:absolute;bottom:.5em;left:.5em}.ol-control.ol-overview .panel{cursor:pointer;background-color:#fff;border:1px solid #369;width:150px;height:150px;margin:2px;display:block}.ol-overview:not(.ol-collapsed) button{z-index:2;position:absolute;bottom:2px;left:2px}.ol-control.ol-overview.ol-collapsed .panel{display:none}.ol-overview.ol-collapsed button:before{content:"»"}.ol-overview button:before{content:"«"}.ol-control-right.ol-overview{left:auto;right:.5em}.ol-control-right.ol-overview:not(.ol-collapsed) button{left:auto;right:2px}.ol-control-right.ol-overview.ol-collapsed button:before{content:"«"}.ol-control-right.ol-overview button:before{content:"»"}.ol-control-top.ol-overview{top:5em;bottom:auto}.ol-control-top.ol-overview:not(.ol-collapsed) button{top:2px;bottom:auto}.ol-permalink{position:absolute;top:.5em;right:2.5em}.ol-touch .ol-permalink{right:3em}.ol-permalink button i{width:1em;height:1em;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-permalink button i:before{content:"↗";box-sizing:border-box;border:0 solid;border-width:1px 0 0 1px;width:.3em;height:1em;padding:0 .2em;position:absolute;top:0;left:0}.ol-permalink button i:after{content:"";box-sizing:border-box;border:1px solid;border-width:0 1px 1px 0;width:1em;height:.3em;padding:.2em;position:absolute;bottom:0;right:0}.ol-control.ol-print{top:.5em;left:3em}.ol-control.ol-print button:before{content:"";width:.9em;height:.35em;position:absolute;top:50%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 .1em,inset .55em 0,0 .2em 0 -.1em}.ol-control.ol-print button:after{content:"";width:.7em;height:.6em;position:absolute;top:25%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 .15em}.ol-ext-print-dialog{width:100%;height:100%}.ol-ext-print-dialog>form .ol-closebox{z-index:1;color:#999;left:16.5em;right:auto}.ol-ext-print-dialog .ol-content[data-status=printing]{opacity:.5}.ol-ext-print-dialog .ol-content .ol-error{color:#ff0;text-align:center;background:#b00;margin:0 -1em;padding:1em .5em;font-weight:700;display:none}.ol-ext-print-dialog .ol-content[data-status=error] .ol-error{display:block}.ol-ext-print-dialog>form,.ol-ext-print-dialog.ol-visible>form{max-width:100%;max-height:100%;width:unset;background-color:#eee;padding:0;transition:none;inset:1em;transform:none}.ol-ext-print-dialog .ol-print-map{width:calc(100% - 18em);position:absolute;top:0;bottom:0;right:0;overflow:hidden}.ol-ext-print-dialog .ol-print-map .ol-page{box-sizing:border-box;background:#fff;position:absolute;top:50%;left:50%}.ol-ext-print-dialog .ol-print-map .ol-page.margin{box-sizing:content-box}.ol-ext-print-dialog .ol-map{width:100%;height:100%}.ol-ext-print-dialog .ol-print-map .ol-control{display:none!important}.ol-ext-print-dialog .ol-print-param{box-sizing:border-box;background-color:#fff;width:18em;padding:1em;position:absolute;top:0;bottom:0;left:0;overflow-x:hidden}.ol-ext-print-dialog .ol-print-param h2{color:#003c88b3;font-size:1.1em;display:block}.ol-ext-print-dialog .ol-print-param ul{padding:0;list-style:none}.ol-ext-print-dialog .ol-print-param li{margin:.5em 0;font-size:.9em;position:relative}.ol-ext-print-dialog .ol-print-param li.hidden{display:none}.ol-ext-print-dialog .ol-print-param label{vertical-align:middle;width:8em;display:inline-block}.ol-ext-print-dialog select{vertical-align:middle;outline:none}.ol-ext-print-dialog .ol-orientation{text-align:center}.ol-ext-print-dialog .ol-orientation label{cursor:pointer;width:7em;position:relative}.ol-ext-print-dialog .ol-orientation input{opacity:0;width:0;height:0;position:absolute}.ol-ext-print-dialog .ol-orientation span{width:80%;padding:3.5em 0 .2em;display:block;position:relative}.ol-ext-print-dialog .ol-orientation span:before{content:"";color:#333;opacity:.5;background-color:currentColor;border:1px solid;border-radius:0 1em 0 0;width:2em;height:2.6em;position:absolute;bottom:1.5em;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:inset 1.3em -1.91em #ddd}.ol-ext-print-dialog .ol-orientation .landscape span:before{width:2.6em;height:2em;margin:.2em 0;box-shadow:inset 1.91em -1.3em #ddd}.ol-ext-print-dialog .ol-orientation input:checked+span{opacity:1;box-shadow:0 0 .2em #00000080}.ol-ext-print-dialog .ol-ext-toggle-switch span{position:absolute;top:50%;right:-2em;transform:translateY(-50%)}.ol-print-title input[type=text]{width:calc(100% - 6em);margin-top:.5em;margin-left:6em}.ol-ext-print-dialog .ol-size option:first-child{font-style:italic}.ol-ext-print-dialog .ol-saveas,.ol-ext-print-dialog .ol-savelegend{text-align:center}.ol-ext-print-dialog .ol-saveas select,.ol-ext-print-dialog .ol-savelegend select{color:#fff;background-color:#003c88b3;border:0;max-width:12em;margin:1em 0 0;padding:.5em;font-size:1em;font-weight:700}.ol-ext-print-dialog .ol-saveas select option,.ol-ext-print-dialog .ol-savelegend select option{color:#666;background-color:#fff}.ol-ext-print-dialog .ol-savelegend select{margin-top:0}.ol-ext-print-dialog .ol-ext-buttons{text-align:right;border-top:1px solid #ccc;margin:0 -1em;padding:.8em .5em}.ol-ext-print-dialog button{color:#333;background:0 0;border:1px solid #999;margin:0 .2em;padding:.3em 1em;font-size:1em}.ol-ext-print-dialog button[type=submit]{color:#fff;background-color:#003c88b3;font-weight:700}.ol-ext-print-dialog .ol-clipboard-copy{pointer-events:none;color:#fff;opacity:0;background-color:#00000080;border-radius:1em;width:fit-content;padding:.5em 1em;transition:all;position:absolute;top:0;left:50%;transform:translate(-50%)}.ol-ext-print-dialog .ol-clipboard-copy.visible{animation:1s ol-clipboard-copy}.ol-ext-print-dialog .ol-print-map .ol-control.ol-canvas-control,.ol-ext-print-dialog .ol-print-map .ol-control.ol-print-compass{display:block!important}.ol-ext-print-dialog .ol-print-map .ol-control.olext-print-compass{width:60px;height:60px;margin:20px;top:0;right:0}.ol-ext-print-dialog .ol-orientation input:focus-visible+span,.ol-ext-print-dialog select:focus-visible{outline:2px solid #000}@keyframes ol-clipboard-copy{0%{opacity:0;top:0}80%{opacity:1;top:-3em}to{opacity:0;top:-3em}}@media print{body.ol-print-document{margin:0!important;padding:0!important}body.ol-print-document>*{display:none!important}body.ol-print-document>.ol-ext-print-dialog{display:block!important}body.ol-print-document>.ol-ext-print-dialog .ol-content{max-height:unset!important;max-width:unset!important;width:unset!important;height:unset!important}.ol-ext-print-dialog>form,.ol-ext-print-dialog{position:unset;-webkit-box-shadow:none;box-shadow:none;border:0;background:0 0!important}.ol-ext-print-dialog>form>*,.ol-ext-print-dialog .ol-print-param{background:0 0;display:none!important}.ol-ext-print-dialog .ol-content{background:0 0;border:0;display:block!important}.ol-ext-print-dialog .ol-print-map{position:unset;background:0 0;width:auto;overflow:visible}.ol-ext-print-dialog .ol-print-map .ol-page{position:unset;-webkit-box-shadow:none!important;box-shadow:none!important;transform:none!important}}@media (width<=25em){.ol-ext-print-dialog .ol-print-param{width:13em}.ol-ext-print-dialog .ol-print-map{width:calc(100% - 13em)}.ol-ext-print-dialog .ol-print-param .ol-print-title input[type=text]{width:100%;margin:0}}.ol-ext-print-dialog2x .ol-map,.ol-ext-print-dialog2x .ol-map2{width:100%;height:50%}.ol-ext-print-dialog2x[data-orientation=landscape] .ol-map,.ol-ext-print-dialog2x[data-orientation=landscape] .ol-map2{width:50%;height:100%;display:inline-block}.ol-ext-print-dialog2x[data-clip-map] .ol-map,.ol-ext-print-dialog2x[data-swipe-orientation] .ol-map{width:100%!important;height:100%!important}.ol-ext-print-dialog2x[data-clip-map] .ol-map2,.ol-ext-print-dialog2x[data-swipe-orientation] .ol-map2{top:-100%;left:0;width:100%!important;height:100%!important;position:relative!important}.ol-profile{-webkit-user-select:none;user-select:none;position:relative}.ol-control.ol-profile{text-align:right;position:absolute;top:.5em;right:3em;overflow:hidden}.ol-profile .ol-zoom-out{cursor:pointer;border:1px solid #000;border-radius:2px;width:1em;height:1em;padding:0;position:absolute;top:10px;right:10px}.ol-profile .ol-zoom-out:before{content:"";background:currentColor;width:60%;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-profile .ol-inner{padding:.5em;font-size:.8em;position:relative}.ol-control.ol-profile .ol-inner{background-color:#ffffffb3;margin:2.3em 2px 2px;display:block}.ol-control.ol-profile.ol-collapsed .ol-inner{display:none}.ol-profile canvas{display:block}.ol-profile button{display:block;position:absolute;right:0;overflow:hidden}.ol-profile button i{width:1em;height:1em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-profile button i:before,.ol-profile button i:after{content:"";background-color:currentColor;width:1em;height:.9em;display:block;position:absolute;transform:scaleX(.8)translate(-.25em,.5em)rotate(45deg)}.ol-profile button i:after{transform:scaleX(.8)translate(.35em,.7em)rotate(45deg)}.ol-profile.ol-collapsed button{position:static}.ol-profile .ol-profilebar,.ol-profile .ol-profilecursor{pointer-events:none;width:1px;display:none;position:absolute}.ol-profile .ol-profilecursor{width:0;height:0}.ol-profile .ol-profilecursor:before{content:"";pointer-events:none;width:5px;height:5px;margin:-2px;display:block}.ol-profile .ol-profilebar,.ol-profile .ol-profilecursor:before{background:red}.ol-profile table{text-align:center;border-collapse:collapse;width:100%;margin-top:.5em}.ol-profile table tr{border-top:1px solid #00000040;margin:.1em 0}.ol-profile table td{padding:2px}.ol-profile table span{display:block}.ol-profile table span.elevationGain,.ol-profile table span.elevationLoss{display:inline-block}.ol-profilepopup{white-space:nowrap;background-color:#ffffff80;margin:.5em;padding:0 .5em;position:absolute;top:-1em}.ol-profilepopup.ol-left{right:0}.ol-profile table .track-info{display:table-row}.ol-profile table .point-info,.ol-profile .over table .track-info{display:none}.ol-profile .over table .point-info{display:table-row}.ol-profile p{text-align:center;margin:0}.ol-control.ol-progress-bar{background-color:#0000;padding:0;position:absolute;inset:0;pointer-events:none!important}.ol-control.ol-progress-bar>.ol-bar{box-sizing:border-box;background-color:#003c8880;width:0;height:.5em;transition:width .2s;position:absolute;bottom:0;left:0}.ol-progress-bar>.ol-waiting{display:none}.ol-viewport .ol-control.ol-progress-bar>.ol-waiting{color:#fff;font-size:2em;animation:1s linear infinite ol-progress-bar-blink;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes ol-progress-bar-blink{0%,30%{visibility:hidden}to{visibility:visible}}.ol-control.ol-routing{max-height:90%;top:.5em;left:3em;overflow-y:auto}.ol-touch .ol-control.ol-routing{left:3.5em}.ol-control.ol-routing.ol-searching{opacity:.5}.ol-control.ol-routing .ol-car,.ol-control.ol-routing>button{position:relative}.ol-control.ol-routing .ol-car:after,.ol-control.ol-routing>button:after{content:"";clip:rect(0 1em .5em -1em);border-radius:40% 50% 0 0/50% 70% 0 0;width:.78em;height:.6em;position:absolute;top:.35em;left:.4em;box-shadow:inset 0 0 0 .065em,-.35em .14em 0 -.09em,inset 0 -.37em,inset -.14em .005em}.ol-control.ol-routing .ol-car:before,.ol-control.ol-routing>button:before{content:"";border-radius:50%;width:.28em;height:.28em;position:absolute;top:.73em;left:.2em;box-shadow:inset 0 0 0 1em,.65em 0}.ol-control.ol-routing .ol-pedestrian:after{content:"";border-top:.2em solid #0000;width:.3em;height:.4em;position:absolute;top:.25em;left:50%;transform:translate(-50%);box-shadow:inset .3em 0,.1em .5em 0 -.1em,-.1em .5em 0 -.1em,.25em .1em 0 -.1em,-.25em .1em 0 -.1em}.ol-control.ol-routing .ol-pedestrian:before{content:"";background-color:currentColor;border-radius:50%;width:.3em;height:.3em;position:absolute;top:.1em;left:50%;transform:translate(-50%)}.ol-control.ol-routing .content{margin:.5em}.ol-control.ol-routing.ol-collapsed .content,.ol-routing .ol-search.ol-collapsed ul,.ol-routing .ol-search ul .copy{display:none}.ol-routing .content .search-input>div>*{vertical-align:top;display:inline-block}.ol-routing .ol-result ul{list-style:none;display:block}.ol-routing .ol-result li{min-height:1.65em;position:relative}.ol-routing .ol-result li i{font-size:.8em;font-weight:700;display:block}.ol-routing .ol-result li:before{content:"";transform-origin:50% 125%;border:.4em solid #0000;border-top-width:.6em;border-bottom:.6em solid #369;position:absolute;top:-.8em;left:-1.75em;box-shadow:0 .65em 0 -.25em #369}.ol-routing .ol-result li:after{content:"";background:#369;border-radius:.1em;width:.25em;height:.6em;position:absolute;top:.6em;left:-1.5em}.ol-routing .ol-result li.R:before{transform:rotate(90deg)}.ol-routing .ol-result li.FR:before{transform:rotate(45deg)}.ol-routing .ol-result li.L:before{transform:rotate(-90deg)}.ol-routing .ol-result li.FL:before{transform:rotate(-45deg)}.ol-routing .content>i{vertical-align:middle;margin:0 .3em 0 .1em;font-style:normal}.ol-routing .ol-button,.ol-routing .ol-button:focus,.ol-routing .ol-pedestrian,.ol-routing .ol-car{color:#003c88;opacity:.5;vertical-align:middle;cursor:pointer;background-color:#0000;outline:none;width:1.4em;height:1.4em;margin:0 .1em;font-size:1.1em;display:inline-block;position:relative}.ol-routing .ol-constraints{display:block}.ol-routing .ol-button:hover,.ol-routing .ol-button.selected,.ol-routing i.selected{opacity:1;background:0 0}.ol-routing .ol-method{display:block}.ol-control.ol-routing{background-color:#ffffff40}.ol-control.ol-routing:hover{background-color:#ffffffbf}.search-input>div>button:before{content:"±"}.ol-viewport .ol-scale{text-align:center;transform-origin:0 0;background-color:#ffffffbf;bottom:2.5em;left:.5em;transform:scaleX(.8)}.ol-viewport .ol-scale input{text-align:center;background:0 0;border:0;width:8em}.ol-search{top:.5em;left:3em}.ol-touch .ol-search{left:3.5em}.ol-search button{float:left;top:2px;left:2px}.ol-control.ol-search>button:before{content:"";box-sizing:border-box;background-color:#0000;border:.12em solid;border-radius:100%;width:.7em;height:.7em;position:absolute;top:.35em;left:.35em}.ol-control.ol-search>button:after{content:"";background-color:currentColor;border-radius:.05em;width:.45em;height:.15em;position:absolute;top:1.1em;left:.95em;transform:rotate(45deg);box-shadow:-.18em 0 0 -.03em}.ol-search button.ol-revers{float:none;vertical-align:bottom;background-image:none;display:inline-block;position:relative;top:0;left:0}.ol-search.ol-revers button.ol-revers{background-color:#00883c80}.ol-control.ol-search.ol-collapsed button.ol-revers{display:none}.ol-search button.ol-revers:before{content:"";box-sizing:border-box;border:.1em solid;border-radius:50%;width:.55em;height:.55em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-search button.ol-revers:after{content:"";background-color:#0000;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.35em 0,0 .35em,-.35em 0,0 -.35em}.ol-search input{box-sizing:border-box;border:0;height:1.375em;margin:1px 1px 1px 2px;padding-left:.3em;font-size:1.14em;transition:all .1s;display:inline-block}.ol-touch .ol-search input,.ol-touch .ol-search ul{font-size:1.5em}.ol-search.ol-revers>ul,.ol-control.ol-search.ol-collapsed>*{display:none}.ol-control.ol-search.ol-collapsed>button{display:block}.ol-search ul{clear:both;cursor:pointer;z-index:1;background:#fff;max-width:17em;margin:0;padding:0;list-style:none;display:block;overflow-x:hidden}.ol-search ul li{white-space:nowrap;text-overflow:ellipsis;padding:.1em .5em;overflow:hidden}.ol-search ul li.select,.ol-search ul li:hover{color:#fff;background-color:#003c8880}.ol-search ul li img{float:left;max-height:2em}.ol-search li.copy{color:#fff;background:#00000080}.ol-search li.copy a{color:#fff;text-decoration:none}.ol-search.searching:before{content:"";z-index:2;background:red;height:3px;animation:.5s linear infinite alternate ol-pulse;position:absolute;top:1.6em;left:0}@keyframes ol-pulse{0%{left:0;right:95%}50%{left:30%;right:30%}to{left:95%;right:0}}.ol-control.ol-search.IGNF-parcelle{background-color:#ffffffb3;padding-bottom:.2em}.ol-search.IGNF-parcelle input{width:14.5em}.ol-search.IGNF-parcelle input:read-only{opacity:.8;background:#ccc}.ol-search.IGNF-parcelle.ol-collapsed-list>ul.autocomplete{display:none}.ol-search.IGNF-parcelle label{clear:both;display:block}.ol-search.IGNF-parcelle>div input{text-align:right}.ol-search.IGNF-parcelle>div input,.ol-search.IGNF-parcelle>div label{box-sizing:border-box;text-overflow:ellipsis;width:4em;margin:.1em;font-size:1em;display:inline-block;overflow:hidden}.ol-search.IGNF-parcelle>div label{letter-spacing:-.04em}.ol-search.IGNF-parcelle ul.autocomplete-page{text-align:center;width:100%;margin-top:.5em;display:none}.ol-search.IGNF-parcelle.ol-collapsed-list ul.autocomplete-parcelle,.ol-search.IGNF-parcelle.ol-collapsed-list ul.autocomplete-page{display:block}.ol-search.IGNF-parcelle.ol-collapsed ul.autocomplete-page,.ol-search.IGNF-parcelle.ol-collapsed ul.autocomplete-parcelle,.ol-search.IGNF-parcelle ul.autocomplete-parcelle{display:none}.ol-search.IGNF-parcelle ul.autocomplete-page li{color:#fff;background:#003c8880;border-radius:50%;width:1.3em;height:1.3em;margin:0 .1em;padding:.1em;display:inline-block}.ol-search.IGNF-parcelle ul.autocomplete-page li.selected{background:#003c88}.ol-searchgps input.search,.ol-searchcoord input.search{display:none}.ol-control.ol-searchgps>button:first-child,.ol-control.ol-searchcoord>button:first-child{background-image:none}.ol-control.ol-searchgps>button:first-child:before,.ol-control.ol-searchcoord>button:first-child:before{content:"x/y";position:unset;border:unset;border-radius:0;width:auto;height:auto;display:block;transform:scaleX(.8)}.ol-control.ol-searchgps>button:first-child:after,.ol-control.ol-searchcoord>button:first-child:after{content:unset}.ol-control.ol-searchgps .ol-latitude,.ol-control.ol-searchgps .ol-longitude,.ol-control.ol-searchcoord .ol-latitude,.ol-control.ol-searchcoord .ol-longitude{clear:both}.ol-control.ol-searchgps .ol-latitude label,.ol-control.ol-searchgps .ol-longitude label,.ol-control.ol-searchcoord .ol-latitude label,.ol-control.ol-searchcoord .ol-longitude label{text-align:right;transform-origin:0 0;width:5.5em;margin:0 -.8em 0 0;display:inline-block;transform:scaleX(.8)}.ol-control.ol-searchcoord .ol-latitude label,.ol-control.ol-searchcoord .ol-longitude label{width:2em;margin:0}.ol-control.ol-searchgps .ol-latitude input,.ol-control.ol-searchgps .ol-longitude input{max-width:10em}.ol-control.ol-searchgps .ol-ext-toggle-switch{cursor:pointer;float:right;margin:.5em;font-size:.9em}.ol-searchgps .ol-decimal{margin-right:.7em;display:inline-block}.ol-searchgps .ol-dms,.ol-searchgps.ol-dms .ol-decimal{text-align:right;width:3em;display:none}.ol-searchgps.ol-dms .ol-dms{display:inline-block}.ol-searchgps span.ol-dms{text-align:left;width:.5em}.ol-searchgps.ol-control.ol-collapsed button.ol-geoloc,.ol-searchgps.ol-control.ol-collapsed button.ol-centerloc,.ol-searchcoord.ol-control.ol-collapsed button.ol-centerloc,.ol-searchcoord.ol-control.ol-collapsed button.ol-geoloc{display:none}.ol-searchgps button.ol-geoloc,.ol-searchgps button.ol-centerloc,.ol-searchcoord button.ol-centerloc,.ol-searchcoord button.ol-geoloc{float:right;background-image:none;margin-right:3px;position:relative;top:0}.ol-searchgps button.ol-geoloc:before,.ol-searchcoord button.ol-geoloc:before{content:"";border:.1em solid;border-radius:50%;width:.6em;height:.6em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-searchgps button.ol-geoloc:after,.ol-searchcoord button.ol-geoloc:after{content:"";background-color:#0000;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.45em 0,-.45em 0,0 -.45em,0 .45em,.25em 0,-.25em 0,0 -.25em,0 .25em}.ol-searchgps button.ol-centerloc:before,.ol-searchcoord button.ol-centerloc:before{content:"📍";border:0;width:auto;height:auto;padding:0;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-searchgps button.ol-centerloc:after,.ol-searchcoord button.ol-centerloc:after{display:none}.ol-control.ol-select{background-color:#ffffff80;top:.5em;left:3em}.ol-control.ol-select:hover{background-color:#ffffffb3}.ol-touch .ol-control.ol-select{left:3.5em}.ol-control.ol-select>button:before{content:"A";box-sizing:content-box;text-align:center;background-color:#0000;border:.2em solid;border-radius:100%;width:1em;height:1em;font-size:.6em;font-weight:400;line-height:1em;position:absolute;top:.5em;left:.5em}.ol-control.ol-select>button:after{content:"";background-color:currentColor;border-radius:.05em;width:.45em;height:.15em;position:absolute;top:1.15em;left:1em;transform:rotate(45deg);box-shadow:-.18em 0 0 -.03em}.ol-select>div button{float:right;width:auto;height:1.2em;padding:0 .5em;font-weight:400;line-height:1.2em}.ol-select .ol-delete{vertical-align:middle;cursor:pointer;width:1.5em;height:1em;display:inline-block;position:relative}.ol-select .ol-delete:before{content:"×";text-align:center;width:100%;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-select input{font-size:1em}.ol-control.ol-select select{max-width:10em;font-size:1em}.ol-control.ol-select select option.ol-default{color:#999;font-style:italic}.ol-control.ol-select>div{margin:.25em;display:block}.ol-control.ol-select.ol-collapsed>div{display:none}.ol-control.ol-select.ol-select-check{max-width:20em}.ol-control.ol-select label.ol-ext-check{margin-right:1em}.ol-control.ol-select label.ol-ext-toggle-switch span{font-size:1.1em}.ol-select ul{margin:0;padding:0;list-style:none}.ol-control.ol-select input[type=search],.ol-control.ol-select input[type=text]{width:8em}.ol-select .ol-autocomplete{display:inline}.ol-select .ol-autocomplete ul{background:#fff;border:1px solid #999;min-width:10em;font-size:.85em;display:block;position:absolute}.ol-select .ol-autocomplete ul li{padding:0 .5em}.ol-select .ol-autocomplete ul li:hover{color:#fff;background:#003c8880}.ol-select ul.ol-hidden{display:none}.ol-select-multi li>div:hover,.ol-select-multi li>div.ol-control.ol-select{top:unset;left:unset;background:0 0;position:relative}.ol-select-multi li>div>button,.ol-select-multi li>div .ol-ok{display:none}.ol-select-multi li .ol-control.ol-select.ol-collapsed>div,.ol-select-multi li>div>div{display:block}.ol-control.ol-status{color:#fff;box-sizing:border-box;background:#0003;border-radius:0;width:100%;padding:.3em 3em;font-size:.9em;display:none;top:0;left:0;pointer-events:none!important}.ol-control.ol-status.ol-visible{display:initial}.ol-control.ol-status.ol-bottom{top:auto;bottom:0}.ol-control.ol-status.ol-left{width:auto;padding:.3em .5em .3em 3em;top:0;bottom:0}.ol-control.ol-status.ol-right{width:auto;padding:.3em 3em .3em .5em;inset:0 0 0 auto}.ol-control.ol-status.ol-center{top:50%;transform:translateY(-50%)}.ol-control.ol-storymap{background-color:#ffffff80;border-radius:.5em;max-width:35%;height:auto;position:absolute;top:.5em;bottom:.5em;left:.5em}.ol-storymap{height:100%;padding:0;position:relative;overflow:hidden}.ol-storymap>div{scroll-behavior:smooth;-webkit-user-select:none;user-select:none;height:100%;padding:0;position:relative;overflow:hidden}.ol-storymap>div.ol-move{scroll-behavior:unset}.ol-control.ol-storymap .chapter{padding:.5em;position:relative;overflow:hidden}.ol-control.ol-storymap .chapter:last-child{margin-bottom:100%}.ol-storymap .chapter{cursor:pointer;opacity:.4}.ol-storymap .chapter.ol-select{cursor:default;opacity:1;background-color:#fffc}.ol-storymap .ol-scroll-top,.ol-storymap .ol-scroll-next{color:#003c8880;text-align:center;cursor:pointer;min-height:1.7em;position:relative}.ol-storymap .ol-scroll-next span{padding-bottom:1.4em;display:block}.ol-storymap .ol-scroll-top span{padding-top:1.4em;display:block}.ol-storymap .ol-scroll-top:before,.ol-storymap .ol-scroll-next:before{content:"";pointer-events:none;border:.3em solid;border-color:#0000 currentColor currentColor #0000;border-radius:.3em;width:.8em;height:.8em;animation:.35s linear infinite alternate ol-bounce-bottom;display:block;position:absolute;left:50%;transform:translate(-50%)rotate(45deg)}.ol-storymap .ol-scroll-top:before{border-color:currentColor #0000 #0000 currentColor;animation:.35s linear infinite alternate ol-bounce-top}@keyframes ol-bounce-top{0%{top:-.2em}to{top:.5em}}@keyframes ol-bounce-bottom{0%{bottom:-.2em}to{bottom:.5em}}.ol-storymap img[data-title]{cursor:pointer}.ol-storymap.scrollLine,.ol-storymap.scrollBox{background-color:#0000;border-radius:0;max-width:40%;top:0;bottom:0}.ol-storymap.scrollLine .chapter,.ol-storymap.scrollBox .chapter{background-color:#fff;margin:100% 0}.ol-storymap.scrollLine .chapter:first-child,.ol-storymap.scrollBox .chapter:first-child{margin-top:3em}.ol-storymap.scrollLine .chapter.ol-select,.ol-storymap.scrollLine .chapter,.ol-storymap.scrollBox .chapter.ol-select,.ol-storymap.scrollBox .chapter{opacity:1}.ol-storymap.scrollLine .ol-scrolldiv,.ol-storymap.scrollBox .ol-scrolldiv{padding-right:30px}.ol-storymap.scrollLine:before,.ol-storymap.scrollBox:before{content:"";background-color:#fff;width:2px;height:100%;position:absolute;top:0;bottom:0;right:14px}.ol-storymap.scrollLine .ol-scroll,.ol-storymap.scrollBox .ol-scroll{width:1px;padding:0;transition:none;right:15px;overflow:visible;opacity:1!important;display:block!important}.ol-storymap.scrollLine .ol-scroll>div{-webkit-box-shadow:unset;box-shadow:unset;background-color:#0000;left:50%;overflow:visible;transform:translate(-50%)}.ol-storymap.scrollLine .ol-scroll>div:before{content:"";background-color:#0af;border:2px solid #fff;border-radius:50%;width:10px;height:10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-storymap.scrollBox .ol-scroll>div{display:none}.ol-storymap.scrollBox .chapter:after{content:"";box-sizing:border-box;z-index:1;border:5px solid #0000;border-radius:50%;width:20px;height:20px;position:absolute;top:min(30%,5em);right:-24.5px;box-shadow:0 0 0 2px #fff,inset 0 0 0 15px #0af}.ol-swipe{-ms-touch-action:none;touch-action:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-swipe:before{content:"";z-index:-1;background:#fff;width:4px;position:absolute;top:-5000px;bottom:-5000px;left:50%;transform:translate(-2px)}.ol-swipe.horizontal:before{width:auto;height:4px;inset:50% -5000px auto}.ol-swipe,.ol-swipe button{cursor:ew-resize}.ol-swipe.horizontal,.ol-swipe.horizontal button{cursor:ns-resize}.ol-swipe:after,.ol-swipe button:before,.ol-swipe button:after{content:"";background:currentColor;width:2px;position:absolute;top:25%;bottom:25%;left:50%;transform:translate(-1px)}.ol-swipe button:after{transform:translate(4px)}.ol-swipe button:before{transform:translate(-6px)}.ol-control.ol-timeline{background-color:#fff6;transition:all .3s;bottom:0;left:0;right:0}.ol-control.ol-timeline.ol-collapsed{transform:translateY(100%)}.ol-timeline{padding:2px 0 0;overflow:hidden}.ol-timeline .ol-scroll{scroll-behavior:smooth;height:6em;padding:0 50%;line-height:1em;overflow:hidden}.ol-timeline .ol-scroll.ol-move{scroll-behavior:unset}.ol-timeline.ol-hasbutton .ol-scroll{margin-left:1.5em;padding:0 calc(50% - .75em)}.ol-timeline .ol-buttons{z-index:10;background:#ffffff80;width:1.5em;display:none;position:absolute;top:0;bottom:0;left:0}.ol-timeline.ol-hasbutton .ol-buttons{display:block}.ol-timeline .ol-buttons button{margin:1px;font-size:1em;position:relative}.ol-timeline .ol-buttons .ol-zoom-in:before,.ol-timeline .ol-buttons .ol-zoom-out:before{content:"+";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-timeline .ol-buttons .ol-zoom-out:before{content:"−"}.ol-timeline .ol-scroll>div{height:100%;position:relative}.ol-timeline .ol-scroll .ol-times{background:#ffffff80;height:1em;position:absolute;bottom:0;left:-1000px;right:-1000px}.ol-timeline .ol-scroll .ol-time{color:#999;font-size:.7em;position:absolute;bottom:0;transform:translate(-50%)}.ol-timeline .ol-scroll .ol-time.ol-year{color:#666;z-index:1}.ol-timeline .ol-scroll .ol-time:before{content:"";border-left:1px solid;height:500px;position:absolute;bottom:1.2em;left:50%}.ol-timeline .ol-scroll .ol-features{margin:0 0 0 200px;position:absolute;inset:0 -1000px 1em -200px;overflow:hidden}.ol-timeline .ol-scroll .ol-feature{color:#999;cursor:pointer;box-sizing:border-box;background:#fff;border:1px solid #ccc;max-width:3em;min-height:1em;max-height:2.4em;padding:0 .5em 0 0;font-size:.7em;line-height:1.2em;transition:all .3s;position:absolute;top:0;overflow:hidden}.ol-timeline.ol-zoomhover .ol-scroll .ol-feature:hover,.ol-timeline.ol-zoomhover .ol-scroll .ol-feature.ol-select{z-index:1;background:#eee;transform:scale(1.2)}.ol-timeline .ol-center-date{z-index:2;pointer-events:none;opacity:.4;background-color:red;width:2px;height:100%;display:none;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.ol-timeline.ol-hasbutton .ol-center-date{left:calc(50% + .75em)}.ol-timeline.ol-pointer .ol-center-date{display:block}.ol-timeline.ol-pointer .ol-center-date:before,.ol-timeline.ol-pointer .ol-center-date:after{content:"";border:.3em solid #0000;border-width:.3em .25em;position:absolute;left:50%;transform:translate(-50%)}.ol-timeline.ol-pointer .ol-center-date:before{border-top-color:red;top:0}.ol-timeline.ol-pointer .ol-center-date:after{border-bottom-color:red;bottom:0}.ol-timeline.ol-interval .ol-center-date{box-sizing:content-box;opacity:.2;background-color:#0000;border:0 solid #000;border-width:0 10000px;display:block}.ol-control.ol-videorec{white-space:nowrap;top:0;left:50%;transform:translate(-50%)}.ol-control.ol-videorec button{vertical-align:middle;display:inline-block;position:relative}.ol-control.ol-videorec button:before{content:"";background-color:currentColor;width:.8em;height:.8em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-videorec button.ol-start:before{background-color:#c00;border-radius:50%;width:.9em;height:.9em}.ol-control.ol-videorec button.ol-pause:before{background-color:#0000;width:.2em;box-shadow:-.2em 0,.2em 0}.ol-control.ol-videorec button.ol-resume:before{box-sizing:border-box;background:0 0;border:.4em solid #0000;border-left:.6em solid;border-right-width:0;width:auto}.ol-control.ol-videorec button.ol-stop,.ol-control.ol-videorec button.ol-pause,.ol-control.ol-videorec button.ol-resume,.ol-control.ol-videorec[data-state=rec] .ol-start,.ol-control.ol-videorec[data-state=pause] .ol-start{display:none}.ol-control.ol-videorec[data-state=rec] .ol-stop,.ol-control.ol-videorec[data-state=pause] .ol-stop,.ol-control.ol-videorec[data-state=rec] .ol-pause,.ol-control.ol-videorec[data-state=pause] .ol-resume{display:inline-block}.ol-control.ol-wmscapabilities{top:.5em;right:2.5em}.ol-touch .ol-control.ol-wmscapabilities{right:3em}.ol-control.ol-wmscapabilities.ol-hidden{display:none}.ol-control.ol-wmscapabilities button:before{content:"+";position:absolute;top:calc(50% - .35em);left:50%;transform:translate(-50%,-50%)}.ol-control.ol-wmscapabilities button:after{content:"";background:0 0;border:.15em solid #0000;border-width:0 .15em .15em 0;border-radius:.1em 0;width:.75em;height:.75em;position:absolute;top:calc(50% - .05em);left:50%;transform:scaleY(.6)translate(-50%,-50%)rotate(45deg);box-shadow:inset -.18em -.18em,-.4em .1em 0 -.25em,.1em -.35em 0 -.25em,.15em .15em}.ol-wmscapabilities .ol-searching{opacity:.5}.ol-wmscapabilities .ol-searching .ol-url:after{content:"";background-color:currentColor;border-radius:50%;width:.7em;height:.7em;animation:2s linear infinite ol-wmscapabilities-rotate;display:block;position:absolute;top:6em;left:calc(50% - .35em);box-shadow:0 1em,0 -1em,1em 0,-1em 0}@keyframes ol-wmscapabilities-rotate{to{transform:rotate(360deg)}}.ol-wmscapabilities .ol-url input{box-sizing:border-box;width:calc(100% - 10em);min-width:min(100%,20em)}.ol-wmscapabilities .ol-url select{width:2em;height:100%;padding:1px}.ol-wmscapabilities .ol-url button{width:7.5em;margin-left:.5em}.ol-wmscapabilities .ol-result{margin-top:.5em;display:none}.ol-wmscapabilities .ol-result.ol-visible{display:block}.ol-wmscapabilities .ol-select-list{box-sizing:border-box;border:1px solid #369;border-radius:0;width:calc(100% - 120px);max-height:14.5em;font-size:1em;position:relative;overflow-x:hidden}.ol-wmscapabilities .ol-select-list option{cursor:pointer;box-sizing:border-box;text-overflow:ellipsis;width:100%;padding:.1em .5em 0;overflow:hidden}.ol-wmscapabilities .ol-select-list .level-1{padding-left:1em}.ol-wmscapabilities .ol-select-list .level-2{padding-left:1.5em}.ol-wmscapabilities .ol-select-list .level-3{padding-left:2em}.ol-wmscapabilities .ol-select-list .level-4{padding-left:2.5em}.ol-wmscapabilities .ol-select-list .level-5{padding-left:3em}.ol-wmscapabilities .ol-select-list .ol-info{font-style:italic}.ol-wmscapabilities .ol-select-list .ol-title{background-color:#003c881a}.ol-wmscapabilities .ol-select-list option:hover{color:#fff;background-color:#003c8880}.ol-wmscapabilities .ol-select-list .selected{color:#fff;background-color:#003c88b3}.ol-wmscapabilities .ol-preview{float:right;color:#666;text-align:center;background:#003c881a;width:100px;margin-left:10px;padding:0 5px 5px}.ol-wmscapabilities .ol-preview.tainted{float:right;color:#666;text-align:center;background:#88003c1a;width:100px;margin-left:10px;padding:0 5px 5px}.ol-wmscapabilities .ol-preview img{background:#fff;width:100%;display:block}.ol-wmscapabilities .ol-legend{max-width:100%;display:none}.ol-wmscapabilities .ol-legend.visible{display:block}.ol-wmscapabilities .ol-buttons{clear:both;text-align:right}.ol-wmscapabilities .ol-data p{margin:0}.ol-wmscapabilities .ol-data p.ol-title{margin:1em 0 .5em;font-weight:700}.ol-wmscapabilities .ol-error{color:#800}.ol-wmscapabilities ul.ol-wmsform{padding:0;list-style:none;display:none}.ol-wmscapabilities ul.ol-wmsform.visible{display:block}.ol-wmscapabilities .ol-wmsform label{text-align:right;width:calc(40% - .5em);margin-right:.5em;display:inline-block}.ol-wmscapabilities .ol-wmsform input{box-sizing:border-box;width:60%;display:inline-block}.ol-wmscapabilities .ol-wmsform input[type=checkbox]{width:auto}.ol-wmscapabilities .ol-wmsform button{float:right;margin:1em 0}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] input{width:calc(60% - 2em)}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button{vertical-align:middle;color:#444;width:2em;height:1.6em;margin:0;position:relative}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:before,.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:after{content:"";border:.1em solid;width:.25em;height:.9em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)skewY(-15deg)}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:after{transform:translate(.4em)translate(-50%,-50%)skewY(15deg);box-shadow:-.8em .25em}.ol-ext-dialog.ol-wmscapabilities form{width:600px;min-height:15em;top:15%;transform:translate(-50%,-15%)}.ol-ext-dialog.ol-wmscapabilities .ol-content{max-height:calc(100vh - 6em)}.ol-ext-dialog.ol-wmtscapabilities [data-param=map],.ol-ext-dialog [data-param=style]{display:none}.ol-ext-dialog.ol-wmtscapabilities [data-param=style]{display:list-item}.ol-ext-dialog.ol-wmtscapabilities [data-param=proj],.ol-ext-dialog.ol-wmtscapabilities [data-param=version]{opacity:.6;pointer-events:none}.ol-ext-dialog.ol-wmscapabilities button.ol-wmsform{text-align:center;width:1.8em}.ol-ext-dialog.ol-wmscapabilities button.ol-wmsform:before{content:"+"}.ol-ext-dialog.ol-wmscapabilities .ol-form button.ol-wmsform:before{content:"-"}.ol-ext-dialog.ol-wmscapabilities .ol-form button.ol-load,.ol-ext-dialog.ol-wmscapabilities .ol-form .ol-legend{display:none}.ol-ext-dialog.ol-wmscapabilities .ol-form ul.ol-wmsform{clear:both;display:block}.ol-target-overlay .ol-target{border:1px solid #0000;width:0;height:20px;display:block;box-shadow:0 0 1px 1px #fff}.ol-target-overlay .ol-target:after,.ol-target-overlay .ol-target:before{content:"";border:1px solid #369;width:20px;height:0;display:block;position:absolute;top:10px;left:-10px;box-shadow:0 0 1px 1px #fff}.ol-target-overlay .ol-target:after{-webkit-box-shadow:none;box-shadow:none;width:0;height:20px;top:0;left:0}.ol-overlaycontainer .ol-touch-cursor{cursor:pointer;background:#fff6;border-radius:50%;width:56px;height:56px;margin:6px;box-shadow:inset 0 0 0 5px #369}.ol-overlaycontainer .ol-touch-cursor:after{content:"";transform-origin:100% 100%;background:radial-gradient(circle at 100% 100%,#0000,#0000 70%,#369 70%,#369);width:50%;height:50%;position:absolute;top:0;left:0}.ol-overlaycontainer .ol-touch-cursor-center{margin-top:16px;margin-left:-28px}.ol-overlaycontainer .ol-touch-cursor-center:after{transform:rotate(45deg)}.ol-overlaycontainer .ol-touch-cursor-right{margin-left:-62px}.ol-overlaycontainer .ol-touch-cursor-right:after{transform:rotate(90deg)}.ol-overlaycontainer .ol-touch-cursor .ol-button{color:#369;cursor:pointer;background:#fff6;border-radius:50%;width:55%;height:55%;transition:all .5s,opacity,background;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)scale(0);box-shadow:inset 0 0 0 3px}.ol-overlaycontainer .ol-touch-cursor.active.disable .ol-button{opacity:.8;background:#3693}.ol-overlaycontainer .ol-touch-cursor.active .ol-button{transform:translate(-50%,-50%)scale(1)}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-0{top:-18%;left:118%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-1{top:50%;left:140%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-2{top:120%;left:120%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-3{top:140%;left:50%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-4{top:118%;left:-18%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-5{top:50%;left:-40%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-6{top:-18%;left:-18%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-7{top:-40%;left:50%}.ol-overlaycontainer .ol-touch-cursor .ol-button:before{content:"";text-align:center;width:1.5em;height:1em;line-height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-add:before,.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-remove:before{content:"−";font-size:1.375em;font-weight:700;line-height:.95em}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-add:before{content:"+"}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-x:before{content:"×";font-size:1.2em;font-weight:700}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-move:before{content:"✥";font-size:1.2em}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-check:before{content:"✓";font-weight:700}.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-x,.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-remove,.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-check{opacity:.8;background:#3693}.ol-overlaycontainer .ol-touch-cursor .ol-button>div{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlaycontainer .ol-touch-cursor .ol-button-type:before{content:"⇎";font-weight:700}.mapboxgl-canvas:focus{outline:none}.ol-perspective-map{width:200%;height:200%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-perspective-map .ol-layer{z-index:-1!important}.ol-perspective-map .ol-layers{transform:translateY(0)perspective(200px)rotateX(0)scaleY(1)}.ol-perspective-map .ol-overlaycontainer,.ol-perspective-map .ol-overlaycontainer-stopevent{top:50%;left:50%;transform:translate(-50%,-50%);width:50%!important;height:50%!important}.ol-overlay-container .ol-magnify{z-index:0;background:#00000080;border:3px solid #369;border-radius:50%;width:150px;height:150px;position:relative;overflow:hidden;box-shadow:5px 5px 5px #00000080}.ol-overlay-container .ol-magnify:before{content:"";z-index:1;border-radius:50%;width:100%;height:100%;display:block;position:absolute;top:0;left:0;box-shadow:inset 0 0 40px 2px #00000040}.ol-overlay-container .ol-magnify:after{content:"";z-index:1;border-radius:50%;width:20%;height:0;display:block;position:absolute;top:20%;left:23%;transform:rotate(-40deg);box-shadow:0 0 20px 7px #fff}.ol-popup.anim{visibility:hidden}.ol-popup.anim.visible{visibility:visible}.ol-popup.anim.visible>div{visibility:visible;animation:.4s ol-popup_bounce;transform:none}@keyframes ol-popup_bounce{0%{transform:scale(0)}50%{transform:scale(1.1)}80%{transform:scale(.95)}to{transform:scale(1)}}.ol-popup.anim.ol-popup-bottom.ol-popup-left>div{transform-origin:0 100%}.ol-popup.anim.ol-popup-bottom.ol-popup-right>div{transform-origin:100% 100%}.ol-popup.anim.ol-popup-bottom.ol-popup-center>div{transform-origin:50% 100%}.ol-popup.anim.ol-popup-top.ol-popup-left>div{transform-origin:0 0}.ol-popup.anim.ol-popup-top.ol-popup-right>div{transform-origin:100% 0}.ol-popup.anim.ol-popup-top.ol-popup-center>div{transform-origin:50% 0}.ol-popup.anim.ol-popup-middle.ol-popup-left>div{transform-origin:0}.ol-popup.anim.ol-popup-middle.ol-popup-right>div{transform-origin:100%}.ol-popup{-webkit-user-select:none;user-select:none;font-size:.9em}.ol-popup .ol-popup-content{cursor:default;padding:.25em .5em;overflow:hidden}.ol-popup.hasclosebox .ol-popup-content{margin-right:1.7em}.ol-popup .ol-popup-content:after{clear:both;content:"";height:0;font-size:0;display:block}.ol-popup .anchor{pointer-events:none;background:red;width:0;height:0;margin:-11px 22px;display:block;position:absolute}.ol-popup .anchor:after,.ol-popup .anchor:before{position:absolute}.ol-popup-right .anchor:after,.ol-popup-right .anchor:before{right:0}.ol-popup-top .anchor{top:0}.ol-popup-bottom .anchor{bottom:0}.ol-popup-right .anchor{right:0}.ol-popup-left .anchor{left:0}.ol-popup-center .anchor{left:50%;margin-left:0!important}.ol-popup-middle .anchor{top:50%;margin-top:0!important}.ol-popup-center.ol-popup-middle .anchor{display:none}.ol-popup.ol-fixed{margin:0!important;inset:.5em .5em auto auto!important;transform:none!important}.ol-popup.ol-fixed .anchor{display:none}.ol-popup.ol-fixed.anim>div{animation:none}.ol-popup .ol-fix{float:right;cursor:pointer;background:#fff;width:1em;height:.9em;margin:.2em;position:relative}.ol-popup .ol-fix:before{content:"";box-sizing:border-box;border:.1em solid #666;border-right-width:.3em;width:.8em;height:.7em;margin:.1em;display:block}.ol-popup.shadow{box-shadow:2px 2px 2px 2px #00000080}.ol-popup .closeBox{color:#fff;cursor:pointer;float:right;background-color:#003c8880;border:0;border-radius:2px;width:1.4em;height:1.4em;margin:5px 5px 0 0;padding:0;font-size:.9em;font-weight:700;display:none;position:relative}.ol-popup.hasclosebox .closeBox{display:block}.ol-popup .closeBox:hover{background-color:#003c88b3}.ol-popup .closeBox:after{content:"×";text-align:center;width:100%;margin:-.5em 0;font-size:1.5em;line-height:1em;position:absolute;top:50%;left:0;right:0}.ol-popup.modifytouch{background-color:#eee}.ol-popup.modifytouch .ol-popup-content{white-space:nowrap;padding:0 .25em;font-size:.85em}.ol-popup.modifytouch .ol-popup-content a{text-decoration:none}.ol-popup.tooltips{background-color:#ffa}.ol-popup.tooltips .ol-popup-content{white-space:nowrap;padding:0 .25em;font-size:.85em}.ol-popup.default>div{background-color:#fff;border:1px solid #69f;border-radius:5px}.ol-popup.default{margin:-11px 0;transform:translateY(-22px)}.ol-popup-top.ol-popup.default{margin:11px 0;transform:none}.ol-popup-left.default{margin:-11px -22px;transform:translateY(-22px)}.ol-popup-top.ol-popup-left.default{margin:11px -22px;transform:none}.ol-popup-right.default{margin:-11px 22px;transform:translate(44px,-22px)}.ol-popup-top.ol-popup-right.default{margin:11px 22px;transform:translate(44px)}.ol-popup-middle.default{margin:0 10px;transform:none}.ol-popup-middle.ol-popup-right.default{margin:0 -10px;transform:translate(-20px)}.ol-popup.default .anchor{color:#69f}.ol-popup.default .anchor:after,.ol-popup.default .anchor:before{content:"";border:11px solid;border-color:currentColor #0000;margin:0 -11px}.ol-popup.default .anchor:after{border-width:11px;border-color:#fff #0000;margin:2px -11px}.ol-popup-top.default .anchor:before,.ol-popup-top.default .anchor:after{border-top:0;top:0}.ol-popup-bottom.default .anchor:before,.ol-popup-bottom.default .anchor:after{border-bottom:0;bottom:0}.ol-popup-middle.default .anchor:before{border-color:#0000 currentColor;margin:-11px -33px}.ol-popup-middle.default .anchor:after{border-color:#0000 #fff;margin:-11px -31px}.ol-popup-middle.ol-popup-left.default .anchor:before,.ol-popup-middle.ol-popup-left.default .anchor:after{border-left:0}.ol-popup-middle.ol-popup-right.default .anchor:before,.ol-popup-middle.ol-popup-right.default .anchor:after{border-right:0}.ol-popup.placemark{color:#c00;margin:-.65em 0;transform:translateY(-1.3em)}.ol-popup.placemark>div{width:2em;height:2em;min-width:unset;box-sizing:border-box;background-color:#fff;border:0;border-radius:50%;font-size:15px;position:relative;box-shadow:inset 0 0 0 .45em}.ol-popup.placemark .ol-popup-content{cursor:default;text-align:center;width:1em;height:1em;padding:.25em 0;line-height:1em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-popup.placemark .anchor{margin:0}.ol-popup.placemark .anchor:before{content:"";background:0 0;border-radius:50%;width:1em;height:.5em;margin:-.5em;box-shadow:0 1em .5em #00000080}.ol-popup.placemark .anchor:after{content:"";border:.7em solid #0000;border-top:1em solid;border-bottom:0 solid;margin:-.75em -.7em;bottom:0}.ol-popup.placemark.shield>div{border-radius:.2em}.ol-popup.placemark.shield .anchor:after{border-width:.8em 1em 0;margin:-.7em -1em}.ol-popup.placemark.blazon>div{border-radius:.2em}.ol-popup.placemark.pushpin{margin:-2.2em 0;transform:translateY(-4em)}.ol-popup.placemark.pushpin>div{border-radius:0;width:1.1em;box-shadow:inset 2em 0;background:0 0!important}.ol-popup.placemark.pushpin>div:before{content:"";pointer-events:none;border:.5em solid #0000;border-top:.3em solid;border-bottom-color:currentColor;width:1.3em;height:1.5em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-popup.placemark.needle{margin:-2em 0;transform:translateY(-4em)}.ol-popup.placemark.pushpin .anchor,.ol-popup.placemark.needle .anchor{margin:-1.2em}.ol-popup.placemark.pushpin .anchor:after,.ol-popup.placemark.needle .anchor:after{border-style:solid;border-width:2em .15em 0;width:.1em;margin:-.55em -.2em}.ol-popup.placemark.pushpin .anchor:before,.ol-popup.placemark.needle .anchor:before{margin:-.75em -.5em}.ol-popup.placemark.flagv{margin:-2em 1em;transform:translateY(-4em)}.ol-popup.placemark.flagv>div{-webkit-box-shadow:none;box-shadow:none;background-color:#0000;border-radius:0}.ol-popup.placemark.flagv>div:before{content:"";pointer-events:none;border:1em solid #0000;border-left:2em solid;position:absolute}.ol-popup.placemark.flagv .anchor{margin:-1.4em}.ol-popup.placemark.flag{margin:-2em 1em;transform:translateY(-4em)}.ol-popup.placemark.flag>div{border-radius:0;transform-origin:0 150%!important}.ol-popup.placemark.flag .anchor{margin:-1.4em}.ol-popup.placemark.flagv .anchor:after,.ol-popup.placemark.flag .anchor:after{border-style:solid;border-width:2em .15em 0;width:.1em;margin:-.55em -1em}.ol-popup.placemark.flagv .anchor:before,.ol-popup.placemark.flag .anchor:before{margin:-.75em -1.25em}.ol-popup.placemark.flag.finish{margin:-2em 1em}.ol-popup.placemark.flag.finish>div{background-image:linear-gradient(45deg,currentColor 25%,#0000 25% 75%,currentColor 75%,currentColor),linear-gradient(45deg,currentColor 25%,#0000 25% 75%,currentColor 75%,currentColor);background-position:.5em 0,0 .5em;background-size:1em 1em;box-shadow:inset 0 0 0 .25em}.ol-popup.black .closeBox{color:#f80;background-color:#00000080;border-radius:5px}.ol-popup.black .closeBox:hover{color:#da2;background-color:#000000b3}.ol-popup.black{margin:-20px 0;transform:translateY(-40px)}.ol-popup.black>div{color:#fff;background-color:#0009;border-radius:5px}.ol-popup-top.ol-popup.black{margin:20px 0;transform:none}.ol-popup-left.black{margin:-20px -22px;transform:translateY(-40px)}.ol-popup-top.ol-popup-left.black{margin:20px -22px;transform:none}.ol-popup-right.black{margin:-20px 22px;transform:translate(44px,-40px)}.ol-popup-top.ol-popup-right.black{margin:20px 22px;transform:translate(44px)}.ol-popup-middle.black{margin:0 11px;transform:none}.ol-popup-left.ol-popup-middle.black{transform:none}.ol-popup-right.ol-popup-middle.black{margin:0 -11px;transform:translate(-22px)}.ol-popup.black .anchor{color:#0009;margin:-20px 11px}.ol-popup.black .anchor:before{content:"";border:20px solid;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.black .anchor:before{border-top:0;top:0}.ol-popup-bottom.black .anchor:before{border-bottom:0;bottom:0}.ol-popup-middle.black .anchor:before{border-color:#0000 currentColor;margin:-20px -22px}.ol-popup-middle.ol-popup-left.black .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.black .anchor:before{border-right:0}.ol-popup-center.black .anchor:before{margin:0 -10px}.ol-popup.tips .closeBox{color:#fff;background-color:red;border-radius:50%;width:1.2em;height:1.2em}.ol-popup.tips .closeBox:hover{background-color:#f40}.ol-popup.tips{margin:-20px 0;transform:translateY(-40px)}.ol-popup.tips>div{color:#333;background-color:#cea;border:5px solid #ad7;border-radius:5px}.ol-popup-top.ol-popup.tips{margin:20px 0;transform:none}.ol-popup-left.tips{margin:-20px -22px;transform:translateY(-40px)}.ol-popup-top.ol-popup-left.tips{margin:20px -22px;transform:none}.ol-popup-right.tips{margin:-20px 22px;transform:translate(44px,-40px)}.ol-popup-top.ol-popup-right.tips{margin:20px 22px;transform:translate(44px)}.ol-popup-middle.tips{margin:0;transform:none}.ol-popup-left.ol-popup-middle.tips{margin:0 22px;transform:none}.ol-popup-right.ol-popup-middle.tips{margin:0 -22px;transform:translate(-44px)}.ol-popup.tips .anchor{color:#ad7;margin:-18px 22px}.ol-popup.tips .anchor:before{content:"";border:20px solid;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.tips .anchor:before{border-top:0;top:0}.ol-popup-bottom.tips .anchor:before{border-bottom:0;bottom:0}.ol-popup-center.tips .anchor:before{border-width:20px 6px;margin:0 -6px}.ol-popup-left.tips .anchor:before{border-left:0;margin-left:0}.ol-popup-right.tips .anchor:before{border-right:0;margin-right:0}.ol-popup-middle.tips .anchor:before{border-width:6px 20px;border-color:#0000 currentColor;margin:-6px -41px}.ol-popup-middle.ol-popup-left.tips .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.tips .anchor:before{border-right:0}.ol-popup.warning .closeBox{color:#fff;background-color:red;border-radius:50%;font-size:.83em}.ol-popup.warning .closeBox:hover{background-color:#f40}.ol-popup.warning{color:#900;background-color:#fd0;border:4px dashed red;border-radius:3px;margin:-28px 10px;transform:translateY(-56px)}.ol-popup-top.ol-popup.warning{margin:28px 10px;transform:none}.ol-popup-left.warning{margin:-28px -22px;transform:translateY(-56px)}.ol-popup-top.ol-popup-left.warning{margin:28px -22px;transform:none}.ol-popup-right.warning{margin:-28px 22px;transform:translate(44px,-56px)}.ol-popup-top.ol-popup-right.warning{margin:28px 22px;transform:translate(44px)}.ol-popup-middle.warning{margin:0;transform:none}.ol-popup-left.ol-popup-middle.warning{margin:0 22px;transform:none}.ol-popup-right.ol-popup-middle.warning{margin:0 -22px;transform:translate(-44px)}.ol-popup.warning .anchor{margin:-33px 7px}.ol-popup.warning .anchor:before{content:"";border:30px solid red;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.warning .anchor:before{border-top:0;top:0}.ol-popup-bottom.warning .anchor:before{border-bottom:0;bottom:0}.ol-popup-center.warning .anchor:before{margin:0 -21px}.ol-popup-middle.warning .anchor:before{border-width:10px 22px;border-color:#0000 red;margin:-10px -33px}.ol-popup-middle.ol-popup-left.warning .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.warning .anchor:before{border-right:0}.ol-popup .ol-popupfeature table{width:100%}.ol-popup .ol-popupfeature table td{text-overflow:ellipsis;max-width:25em;overflow:hidden}.ol-popup .ol-popupfeature table td img{max-width:100px;max-height:100px}.ol-popup .ol-popupfeature tr:nth-child(odd){background-color:#eee}.ol-popup .ol-popupfeature .ol-zoombt{color:#003c8880;background:0 0;border:0;outline:none;width:2em;height:2em;display:inline-block;position:relative}.ol-popup .ol-popupfeature .ol-zoombt:before{content:"";box-sizing:border-box;background-color:#0000;border:.17em solid;border-radius:100%;width:1em;height:1em;position:absolute;top:.3em;left:.3em}.ol-popup .ol-popupfeature .ol-zoombt:after{content:"";box-sizing:border-box;border-style:solid;border-width:.1em .3em;border-radius:.03em;position:absolute;top:1.35em;left:1.15em;transform:rotate(45deg);box-shadow:-.2em 0 0 -.04em}.ol-popup .ol-popupfeature .ol-count{float:right;margin:.25em 0}.ol-popup .ol-popupfeature .ol-prev,.ol-popup .ol-popupfeature .ol-next{vertical-align:bottom;cursor:pointer;border:.5em solid #0000;border-left-color:#003c8880;border-right:0 solid #003c8880;margin:0 .5em;display:inline-block}.ol-popup .ol-popupfeature .ol-prev{border-width:.5em .5em .5em 0}.ol-popup.tooltips.black{background-color:#0000}.ol-popup.tooltips.black>div{background-color:#00000080;padding:.2em .5em;transform:scaleY(1.3)}.ol-popup-middle.tooltips.black .anchor:before{border-width:5px 10px;margin:-5px -21px}.ol-popup-center.ol-popup-middle,.ol-popup-top.ol-popup-left.ol-fixPopup,.ol-popup-top.ol-popup-right.ol-fixPopup,.ol-popup.ol-fixPopup{margin:0}.ol-miniscroll{position:relative}.ol-miniscroll:hover .ol-scroll{opacity:.5;transition:opacity 1s}.ol-miniscroll .ol-scroll{-ms-touch-action:none;touch-action:none;opacity:0;z-index:1;border-radius:9px;width:9px;height:auto;max-height:100%;transition:opacity 1s .5s;position:absolute;right:0;overflow:hidden}.ol-miniscroll .ol-scroll>div{-ms-touch-action:none;touch-action:none;box-sizing:border-box;cursor:pointer;border:2px solid #0000;border-radius:9px/12px;width:9px;height:9px;position:absolute;top:0;right:0;box-shadow:inset 10px 0}.ol-miniscroll .ol-scroll.ol-100pc{opacity:0}.ol-viewport canvas.ol-fixedoverlay{width:100%;height:100%;position:absolute;top:0;left:0}.ol-ext-toggle-switch{cursor:pointer;position:relative}.ol-ext-toggle-switch input[type=radio],.ol-ext-toggle-switch input[type=checkbox]{opacity:0;width:0;height:0;margin:0;padding:0;display:inline-block}.ol-ext-toggle-switch span{color:#003c8880;cursor:pointer;vertical-align:middle;background-color:#ccc;border-radius:1em;width:1.6em;height:1em;margin:-.15em .2em .15em;font-size:1.3em;transition:all .4s,background-color,border-color,box-shadow;display:inline-block;position:relative}.ol-ext-toggle-switch span:before{content:"";box-sizing:border-box;background-color:#fff;border:2px solid #ccc;border-radius:1em;width:1em;height:1em;transition:all .4s;display:block;position:absolute;top:50%;left:0;transform:translateY(-50%)}.ol-ext-toggle-switch:hover span{background-color:#999}.ol-ext-toggle-switch:hover span:before{border-color:#999}.ol-ext-toggle-switch input:checked+span{background-color:currentColor}.ol-ext-toggle-switch input:checked+span:before{border-color:currentColor;transform:translate(.6em,-50%)}.ol-ext-check{display:inline-block;position:relative}.ol-ext-check input{opacity:0;cursor:pointer;width:0;height:0;margin:0;padding:0;display:inline-block;position:absolute}.ol-ext-check span{color:#003c8880;vertical-align:middle;background-color:#ccc;width:1em;height:1em;margin:-.1em .5em .1em;display:inline-block;position:relative}.ol-ext-check:hover span{background-color:#999}.ol-ext-checkbox input:checked~span{background-color:currentColor}.ol-ext-checkbox input:checked~span:before{content:"";width:.5em;height:.8em;position:absolute;top:50%;left:50%;transform:translateY(-.1em)translate(-50%,-50%)rotate(45deg);box-shadow:inset -.2em -.2em #fff}.ol-ext-radio span{border-radius:50%;width:1.1em;height:1.1em}.ol-ext-radio:hover input:checked~span{background-color:#ccc}.ol-ext-radio input:checked~span:before{content:"";background-color:currentColor;border-radius:50%;width:50%;height:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-ext-toggle-switch input:focus-visible+span,.ol-ext-check input:focus-visible+span{box-shadow:inset 0 0 0 1px #fff,0 0 0 1.8px #000c}.ol-collection-list{margin:0;padding:0;list-style:none}.ol-collection-list li{padding:0 2em 0 1em;position:relative}.ol-collection-list li:hover{background-color:#003c8833}.ol-collection-list li.ol-select{color:#fff;background-color:#003c8880}.ol-collection-list li .ol-order{-ms-touch-action:none;touch-action:none;cursor:n-resize;-webkit-user-select:none;user-select:none;width:2em;height:100%;position:absolute;top:50%;right:0;transform:translateY(-50%)}.ol-collection-list li .ol-order:before{content:"";background-color:currentColor;border-radius:2px;width:18px;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 5px,0 -5px}.ol-collection-list li>input.ol-input-focus{opacity:0;z-index:-1;width:0;height:0;position:absolute}.ol-collection-list li:has(>input.ol-input-focus:focus){outline:2px solid #369}.ol-ext-colorpicker.ol-popup{background-color:#0000;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 -1px,5px 4px;background-size:10px 10px;width:2em;height:1.5em}.ol-ext-colorpicker .ol-tabbar{background-color:#eee;border-bottom:1px solid #999;display:none}.ol-ext-colorpicker.ol-tab .ol-tabbar{display:block}.ol-ext-colorpicker .ol-tabbar>div{cursor:pointer;background-color:#fff;border:1px solid #999;border-radius:2px 2px 0 0;padding:0 .5em;display:inline-block;position:relative;top:1px}.ol-ext-colorpicker .ol-tabbar>div:first-child{border-bottom-color:#fff}.ol-ext-colorpicker.ol-picker-tab .ol-tabbar>div:first-child{border-bottom-color:#999}.ol-ext-colorpicker.ol-picker-tab .ol-tabbar>div:nth-child(2){border-bottom-color:#fff}.ol-ext-colorpicker.ol-popup.ol-tab .ol-popup{width:180px}.ol-ext-colorpicker.ol-tab .ol-palette{margin:0 10px}.ol-ext-colorpicker.ol-tab .ol-container{display:none}.ol-ext-colorpicker.ol-tab.ol-picker-tab .ol-container{display:block}.ol-ext-colorpicker.ol-tab.ol-picker-tab .ol-palette{display:none}.ol-ext-colorpicker.ol-popup .ol-popup{width:340px}.ol-ext-colorpicker.ol-popup .ol-vignet{content:"";pointer-events:none;background-color:currentColor;border:0;width:100%;height:100%;position:absolute;top:0;left:0}.ol-ext-colorpicker .ol-container{vertical-align:top;display:inline-block;position:relative}.ol-ext-colorpicker .ol-cursor{pointer-events:none}.ol-ext-colorpicker .ol-picker{cursor:crosshair;background-color:currentColor;background-image:-webkit-gradient(linear, left top, left bottom, from(0), color-stop(#000), to(transparent)), -webkit-gradient(linear, left top, right top, from(#fff), to(transparent));background-image:linear-gradient(#0000,#000),linear-gradient(90deg,#fff,#0000);border:5px solid #fff;width:150px;height:150px;position:relative}.ol-ext-colorpicker .ol-picker .ol-cursor{border:1px solid #000000b3;border-radius:50%;width:10px;height:10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #ffffffb3}.ol-ext-colorpicker .ol-slider{cursor:crosshair;background-color:#fff;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 -1px,5px 4px;background-size:10px 10px;border:0 solid #fff;border-width:0 5px;width:150px;height:10px;margin:5px 0 10px;position:relative}.ol-ext-colorpicker .ol-slider>div{pointer-events:none;background-image:linear-gradient(45deg,#0000,#fff);width:100%;height:100%}.ol-ext-colorpicker .ol-slider .ol-cursor{background:0 0;border:1px solid #000;width:4px;height:12px;position:absolute;top:50%;left:0;transform:translate(-50%,-50%)}.ol-ext-colorpicker .ol-tint{cursor:crosshair;box-sizing:border-box;background-image:-webkit-gradient(linear, left top, left bottom, from(0), color-stop(red), color-stop(#f0f), color-stop(#00f), color-stop(#0ff), color-stop(#0f0), color-stop(#ff0), to(red));background-image:linear-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red);border:5px solid #fff;border-width:5px 0;width:10px;height:150px;position:absolute;top:0;right:5px}.ol-ext-colorpicker .ol-tint .ol-cursor{border:1px solid #000;width:12px;height:4px;position:absolute;top:0;left:50%;transform:translate(-50%,-50%)}.ol-ext-colorpicker .ol-clear{border:2px solid #999;width:10px;height:10px;position:absolute;top:163px;right:4px}.ol-ext-colorpicker .ol-clear:before,.ol-ext-colorpicker .ol-clear:after{content:"";background-color:#999;width:15px;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-ext-colorpicker .ol-clear:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-ext-colorpicker.ol-nopacity .ol-slider,.ol-ext-colorpicker.ol-nopacity .ol-clear,.ol-ext-colorpicker.ol-nopacity .ol-alpha{display:none}.ol-ext-colorpicker .ol-rgb{width:170px;padding:5px;display:none;position:relative}.ol-ext-colorpicker .ol-rgb input{box-sizing:border-box;border:1px solid #999;border-radius:2px;width:25%;padding:0 0 0 2px;font-size:13px}.ol-ext-colorpicker .ol-rgb input:first-child{background-color:#ff00001a}.ol-ext-colorpicker .ol-rgb input:nth-child(2){background-color:#00ff001a}.ol-ext-colorpicker .ol-rgb input:nth-child(3){background-color:#0000ff1f}.ol-ext-colorpicker button,.ol-ext-colorpicker .ol-txt-color{text-align:center;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:170px;margin:0 5px 5px;padding:0;font-size:13px;display:block}.ol-ext-colorpicker .ol-txtcolor{width:170px;margin:0 5px}.ol-ext-colorpicker .ol-txtcolor input.ol-txt-color{width:100%;margin:0}.ol-ext-colorpicker.eyedropper .ol-txtcolor input.ol-txt-color{width:calc(100% - 2em);height:2em;margin:0;display:inline-block}.ol-ext-colorpicker button{background-color:#eee}.ol-ext-colorpicker button:hover{background-color:#e9e9e9}.ol-ext-colorpicker button.ol-eyedropper{vertical-align:middle;width:2em;height:2em;margin:0;display:inline-block;position:relative}.ol-ext-colorpicker button.ol-eyedropper:before{content:"";background-color:#999;width:100%;height:100%;position:absolute;top:0;left:0;-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20width='24'%20height='24'%3e%3cpath%20d='m18.203%203.676%202.121%202.121a1%201%200%200%201%200%201.414l-2.828%202.829%201.767%201.768-1.414%201.414-1.414-1.414L7.243%2021H3v-4.243l9.192-9.192-1.414-1.414%201.414-1.414%201.768%201.767%202.829-2.828a1%201%200%200%201%201.414%200Zm-4.596%205.303-8.564%208.564%201.414%201.414%208.564-8.564-1.414-1.414Z'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20width='24'%20height='24'%3e%3cpath%20d='m18.203%203.676%202.121%202.121a1%201%200%200%201%200%201.414l-2.828%202.829%201.767%201.768-1.414%201.414-1.414-1.414L7.243%2021H3v-4.243l9.192-9.192-1.414-1.414%201.414-1.414%201.768%201.767%202.829-2.828a1%201%200%200%201%201.414%200Zm-4.596%205.303-8.564%208.564%201.414%201.414%208.564-8.564-1.414-1.414Z'/%3e%3c/svg%3e");-webkit-mask-size:100% 100%;mask-size:100% 100%}.ol-ext-colorpicker .ol-txt-color.ol-error{background-color:#f003}.ol-ext-colorpicker .ol-palette{width:152px;padding:2px;display:inline-block}.ol-ext-colorpicker .ol-palette>div{cursor:pointer;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 0,5px 5px;background-size:10px 10px;border-radius:1px;width:15px;height:15px;margin:2px;display:inline-block;position:relative;box-shadow:0 0 2px #666}.ol-ext-colorpicker .ol-palette>div:before{content:"";background-color:currentColor;width:100%;height:100%;position:absolute}.ol-ext-colorpicker .ol-palette>div.ol-select:after{content:"";width:6px;height:12px;position:absolute;top:30%;left:50%;transform:translate(-50%,-50%)rotate(45deg);box-shadow:1px 1px #fff,2px 2px #000}.ol-ext-colorpicker .ol-palette>div:hover{box-shadow:0 0 2px 1px #d90}.ol-ext-colorpicker .ol-palette hr{margin:0}.ol-input-hidden{opacity:0;width:0;height:0;margin:0;padding:0;display:block;position:absolute}.ol-input-popup{display:inline-block;position:relative}.ol-input-popup .ol-popup{z-index:1;white-space:nowrap;background-color:#fff;margin:0;padding:0;list-style:none;display:none;position:absolute;left:-5px;box-shadow:1px 1px 3px 1px #999}.ol-input-popup.ol-hover:hover .ol-popup,.ol-input-popup.ol-focus .ol-popup{display:block}.ol-input-popup.ol-right .ol-popup{left:auto;right:-5px}.ol-input-popup.ol-middle .ol-popup{top:50%;transform:translateY(-50%)}.ol-input-popup .ol-popup li{padding:10px 5px;position:relative}.ol-input-popup li:hover,.ol-input-popup li.ol-selected{background-color:#ccc}.ol-input-popup.ol-fixed:hover .ol-popup,.ol-input-popup.ol-fixed .ol-popup{-webkit-box-shadow:unset;box-shadow:unset;vertical-align:middle;background-color:#0000;display:inline-block;position:relative;left:0}.ol-input-popup.ol-fixed.ol-left .ol-popup{float:left}.ol-input-popup>div{vertical-align:middle;border:1px solid #999;border-radius:2px;padding:3px 20px 3px 10px;display:inline-block;position:relative}.ol-input-popup>div:before{content:"";border:5px solid #0000;border-top-color:#999;position:absolute;top:50%;right:5px}.ol-ext-popup-input{vertical-align:top;display:inline-block}.ol-ext-popup-input.ol-popup{box-sizing:content-box;-webkit-user-select:none;user-select:none;vertical-align:middle;border:3px solid #fff;border-right-width:1em;border-radius:2px;width:2em;height:1.5em;display:inline-block;position:relative;box-shadow:0 0 2px 1px #666}.ol-ext-popup-input.ol-popup:after{content:"";pointer-events:none;border:.3em solid #0000;border-top:.5em solid #999;border-bottom:0 solid #999;position:absolute;top:50%;right:-.8em;transform:translateY(-50%)}.ol-ext-popup-input *{box-sizing:content-box}.ol-ext-popup-input.ol-popup .ol-popup{z-index:1;background-color:#fff;min-width:3em;min-height:3em;display:none;position:absolute;top:100%;left:0;box-shadow:1px 1px 3px 1px #999}.ol-ext-popup-input.ol-popup .ol-popup.ol-visible{display:block}.ol-ext-popup-input.ol-popup-fixed .ol-popup{position:fixed;top:auto;left:auto}.ol-input-popup.ol-size li{vertical-align:middle;height:100%;padding:5px;display:table-cell}.ol-input-popup.ol-size li>*{vertical-align:middle;background-color:#369;border-radius:50%;width:1em;height:1em}.ol-input-popup.ol-size li>.ol-option-0{color:#aaa;box-sizing:border-box;background-color:#0000;border:2px solid;width:1em;height:1em;position:relative}.ol-input-popup.ol-size li>:before{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-input-popup.ol-size li>.ol-option-0:before{content:"";background-color:#aaa;width:1em;height:2px;transform:translate(-50%,-50%)rotate(-45deg)}.ol-input-slider{display:inline-block;position:relative}.ol-input-slider .ol-popup{z-index:1;background-color:#fff;display:none;position:absolute;left:-5px;box-shadow:1px 1px 3px 1px #999}.ol-input-slider.ol-right .ol-popup{left:auto;right:-5px}.ol-input-slider.ol-hover:hover .ol-popup,.ol-input-slider.ol-focus .ol-popup{white-space:nowrap;display:block}.ol-input-slider.ol-hover:hover .ol-popup>*,.ol-input-slider.ol-focus .ol-popup>*{vertical-align:middle;display:inline-block}.ol-input-slider.ol-hover:hover .ol-popup>.ol-before,.ol-input-slider.ol-focus .ol-popup>.ol-before{margin-left:10px}.ol-input-slider.ol-hover:hover .ol-popup>.ol-after,.ol-input-slider.ol-focus .ol-popup>.ol-after{margin-right:10px}.ol-input-slider .ol-slider{vertical-align:middle;box-sizing:content-box;cursor:pointer;border:10px solid #0000;border-width:10px 15px;width:100px;height:3px;display:inline-block;position:relative;box-shadow:inset 0 0 0 1px #999}.ol-input-slider .ol-slider>.ol-cursor{pointer-events:none;background-color:#999;width:5px;height:10px;position:absolute;top:50%;transform:translate(-50%,-50%)}.ol-input-range .ol-slider{cursor:default;width:150px}.ol-input-range .ol-slider>.ol-cursor{pointer-events:all;cursor:pointer;background-color:#003c88;border-radius:50%;width:10px}.ol-input-range.ol-moving .ol-slider>.ol-cursor{pointer-events:none}.ol-input-range .ol-slider>.ol-back{pointer-events:none;background-color:#003c88;height:100%;position:absolute;top:50%;left:30%;right:20%;transform:translateY(-50%)}.ol-input-slider.ol-fixed:hover .ol-popup,.ol-input-slider.ol-fixed .ol-popup{-webkit-box-shadow:unset;box-shadow:unset;vertical-align:middle;background-color:#0000;display:inline-block;position:relative;left:0}.ol-input-slider.ol-fixed.ol-left .ol-popup{float:left}.ol-input-slider.ol-size .ol-slider{height:auto;-webkit-box-shadow:none;box-shadow:none}.ol-input-slider.ol-size .ol-slider .ol-back{color:#aaa;pointer-events:none;border-top:0 solid;border-bottom:20px solid;border-left:100px solid #0000;border-right:0 solid #0000;width:0}.ol-input-slider.ol-size .ol-slider>.ol-cursor{border:5px solid red;border-left:3px solid #0000;border-right:3px solid #0000;-o-border-image:initial;border-image:initial;background-color:#0000;width:2px;height:calc(100% + 4px);box-shadow:inset 3px 0 red}.ol-input-popup.ol-width li{padding:5px}.ol-input-popup.ol-width li>*{background-color:#369;width:100px;height:1em}.ol-input-popup.ol-width li>.ol-option-0{background-color:#0000;background-image:linear-gradient(90deg,#aaa 2px,#0000 2px);background-size:4px;height:1px;position:relative}html,body{height:100%;margin:0;padding:0}body{font-family:Calibri,sans-serif}.viewer-app{width:100%;height:100%;position:relative;overflow:hidden}.viewer-app:fullscreen{width:100%;height:100%}.viewer-app:fullscreen{width:100%;height:100%}.map{width:100%;height:100%}.ol-zoom,.ol-rotate,.ol-full-screen,.ol-graticule,.ol-screen-space-graticule,.viewer-panel-control,.layer-editor-control{background:#111;border-radius:4px;padding:0;overflow:hidden;box-shadow:0 2px 7px #0000004d}.ol-zoom:hover,.ol-rotate:hover,.ol-full-screen:hover,.ol-graticule:hover,.ol-screen-space-graticule:hover,.viewer-panel-control:hover,.layer-editor-control:hover{background:#111}.ol-zoom button,.ol-rotate button,.ol-full-screen button,.ol-graticule button,.ol-screen-space-graticule button,.viewer-panel-control button,.layer-editor-control button{color:#fff;cursor:pointer;background:#111;border:0;width:32px;height:32px;margin:0}.ol-zoom button:hover:not(:disabled),.ol-rotate button:hover:not(:disabled),.ol-full-screen button:hover:not(:disabled),.ol-graticule button:hover:not(:disabled),.ol-screen-space-graticule button:hover:not(:disabled),.viewer-panel-control button:hover:not(:disabled),.layer-editor-control button:hover:not(:disabled){color:#fff;background:#333;border-radius:4px;outline:none}.ol-zoom button:active:not(:disabled),.ol-rotate button:active:not(:disabled),.ol-full-screen button:active:not(:disabled),.ol-graticule button:active:not(:disabled),.ol-screen-space-graticule button:active:not(:disabled),.viewer-panel-control button:active:not(:disabled),.layer-editor-control button:active:not(:disabled){color:#fff;background:#555;border-radius:4px;outline:none}.ol-control button:disabled,.ol-control button:disabled:hover,.ol-control button:disabled:active,.ol-control button:disabled:focus,.ol-control.ol-toggle button:disabled,.ol-control.ol-toggle button:disabled:hover,.ol-control.ol-toggle button:disabled:active,.ol-control.ol-toggle button:disabled:focus{color:#fff;opacity:.4;cursor:default;pointer-events:none;background:#111;outline:none}.viewer-control-hidden{display:none!important}.ol-zoom{flex-direction:column;display:flex;top:8px;left:8px}.ol-zoom button{border-radius:0}.ol-zoom .ol-zoom-in,.ol-zoom .ol-zoom-in:hover,.ol-zoom .ol-zoom-in:active,.ol-zoom .ol-zoom-in:focus{border-radius:4px 4px 0 0}.ol-zoom .ol-zoom-out,.ol-zoom .ol-zoom-out:hover,.ol-zoom .ol-zoom-out:active,.ol-zoom .ol-zoom-out:focus{border-radius:0 0 4px 4px}.ol-zoom-level{box-sizing:border-box;color:#fff;cursor:default;-webkit-user-select:none;user-select:none;background:#111;border-top:1px solid #333;border-bottom:1px solid #333;justify-content:center;align-items:center;width:32px;height:26px;font-size:11px;font-weight:600;display:flex}.layer-editor-control{top:8px;left:50px;right:auto}.layer-editor-control button,.layer-editor-control button:hover,.layer-editor-control button:active,.layer-editor-control button:focus,.layer-editor-control button.active,.layer-editor-control button.active:hover,.layer-editor-control button.active:active,.layer-editor-control button.active:focus{border-radius:4px}.layer-editor{z-index:1000;box-sizing:border-box;color:#fff;background:#111;border-radius:10px;width:230px;position:absolute;top:50px;left:50px;overflow:hidden;box-shadow:0 3px 10px #00000059}.layer-editor.hidden{display:none}.layer-editor-header{border-bottom:1px solid #333;padding:12px 14px;font-size:13px;font-weight:600}.layer-editor-list{padding:12px 14px}.layer-editor-empty{color:#ccc;font-size:12px}.layer-editor-item{margin-bottom:14px}.layer-editor-item:last-child{margin-bottom:0}.layer-editor-item-header{align-items:center;gap:8px;margin-bottom:8px;display:flex}.layer-editor-visibility{accent-color:#1f5278;cursor:pointer;flex-shrink:0;margin:0}.layer-editor-name{color:#fff;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:12px;overflow:hidden}.layer-editor-order{flex-shrink:0;gap:3px;display:flex}.layer-editor-order button{color:#fff;cursor:pointer;background:#222;border:0;border-radius:4px;width:22px;height:22px;padding:0;font-size:9px}.layer-editor-order button:hover:not(:disabled){color:#fff;background:#333;outline:none}.layer-editor-order button:active:not(:disabled){color:#fff;background:#555;outline:none}.layer-editor-order button:focus{color:#fff;outline:none}.layer-editor-order button:disabled{color:#555;cursor:default;pointer-events:none;outline:none}.layer-editor-opacity{align-items:center;gap:9px;display:flex}.layer-editor-slider{accent-color:#1f5278;cursor:pointer;flex:1;min-width:0;margin:0}.layer-editor-value{color:#aaa;text-align:right;flex-shrink:0;width:32px;font-size:11px}.ol-rotate,.ol-full-screen,.ol-graticule,.ol-screen-space-graticule{border-radius:0;left:8px;right:auto}.ol-rotate{border-radius:4px 4px 0 0;top:108px}.ol-full-screen{top:140px}.ol-graticule{top:172px}.ol-screen-space-graticule{border-radius:0 0 4px 4px;top:204px}.ol-rotate button,.ol-full-screen button,.ol-graticule button,.ol-screen-space-graticule button{border-radius:0}.ol-rotate button,.ol-rotate button:hover,.ol-rotate button:active,.ol-rotate button:focus{border-radius:4px 4px 0 0}.ol-full-screen button,.ol-full-screen button:hover,.ol-full-screen button:active,.ol-full-screen button:focus,.ol-graticule button,.ol-graticule button:hover,.ol-graticule button:active,.ol-graticule button:focus{border-radius:0}.ol-screen-space-graticule button,.ol-screen-space-graticule button:hover,.ol-screen-space-graticule button:active,.ol-screen-space-graticule button:focus{border-radius:0 0 4px 4px}.viewer-panel-control{top:246px;left:8px;right:auto}.viewer-panel-control button,.viewer-panel-control button:hover,.viewer-panel-control button:active,.viewer-panel-control button:focus,.viewer-panel-control button.active,.viewer-panel-control button.active:hover,.viewer-panel-control button.active:active,.viewer-panel-control button.active:focus{border-radius:4px}.viewer-panel{z-index:1000;box-sizing:border-box;color:#fff;background:#111;border-radius:10px;width:240px;position:absolute;top:288px;left:8px;overflow:hidden;box-shadow:0 3px 10px #00000059}.viewer-panel.hidden{display:none}.viewer-panel-header{border-bottom:1px solid #333;padding:12px 14px;font-weight:600}.viewer-panel-section{border-bottom:1px solid #333;padding:12px 14px}.viewer-panel-section:last-child{border-bottom:0}.viewer-panel-section h2{color:#fff;margin:0 0 10px;font-size:13px}.current-slide{color:#ccc;overflow-wrap:anywhere;margin-bottom:10px;font-size:12px}.map .ol-custom-overviewmap{background:0 0;border-radius:4px;width:300px;height:284px;padding:0;transition:width .18s,height .18s;inset:8px 8px auto auto;overflow:hidden}.map .ol-custom-overviewmap.ol-collapsed{width:28px;height:28px}.map .ol-custom-overviewmap .ol-overviewmap-map,.map .ol-custom-overviewmap.ol-collapsed .ol-overviewmap-map{box-sizing:border-box;opacity:1;background:#fff;border:2px solid #444;border-radius:4px;width:300px;height:250px;margin:0;transition:opacity .16s,transform .18s;display:block;position:absolute;top:32px;right:0;overflow:hidden;transform:translateY(0)}.map .ol-custom-overviewmap.ol-collapsed .ol-overviewmap-map{opacity:0;pointer-events:none;transform:translateY(-8px)}.map .ol-custom-overviewmap .ol-overviewmap-map .ol-viewport{background:#fff}.map .ol-custom-overviewmap .ol-overviewmap-box{box-sizing:border-box;border:3px dotted #163a59}.map .ol-custom-overviewmap button,.map .ol-custom-overviewmap:not(.ol-collapsed) button{z-index:2;color:#fff;cursor:pointer;background:#111;border:0;border-radius:4px;width:28px;height:28px;margin:0;position:absolute;inset:0 0 auto auto}.map .ol-custom-overviewmap button:hover{color:#fff;background:#333;outline:none}.map .ol-custom-overviewmap button:active{color:#fff;background:#555;outline:none}.map .ol-custom-overviewmap button:focus{color:#fff;outline:none}.overview-toggle-icon{justify-content:center;align-items:center;width:100%;height:100%;font-size:11px;transition:transform .18s;display:flex}.ol-scale-line{background:#1111118c;border-radius:4px;padding:5px 8px;font-family:Calibri,sans-serif;bottom:8px;left:8px;box-shadow:0 2px 7px #00000040}.ol-scale-line-inner{color:#fff;border:1px solid #fff;border-bottom:0;margin:0;font-size:14px;line-height:1.2}.ol-mouse-position{z-index:100;color:#fff;background:#111;border-radius:4px;padding:6px 9px;font-family:Calibri,sans-serif;font-size:12px;position:absolute;inset:auto 8px 8px auto;box-shadow:0 2px 7px #0000004d}.ol-zoom button:focus,.ol-rotate button:focus,.ol-full-screen button:focus,.ol-graticule button:focus,.ol-screen-space-graticule button:focus,.viewer-panel-control button:focus,.layer-editor-control button:focus{color:#fff;outline:none}.ol-graticule.active button,.ol-screen-space-graticule.active button,.ol-full-screen button.ol-full-screen-true,.viewer-panel-control button.active,.layer-editor-control button.active{background:#163a59}.ol-graticule.active button:hover,.ol-screen-space-graticule.active button:hover,.ol-full-screen button.ol-full-screen-true:hover,.viewer-panel-control button.active:hover,.layer-editor-control button.active:hover{background:#1f5278}.ol-graticule.active button:active,.ol-screen-space-graticule.active button:active,.ol-full-screen button.ol-full-screen-true:active,.viewer-panel-control button.active:active,.layer-editor-control button.active:active{background:#555}.ol-layerswitcher,.ol-control.ol-layerswitcher{display:none} ->>>>>>> Stashed changes -======= -:root,:host{--ol-background-color:white;--ol-accent-background-color:#f5f5f5;--ol-subtle-background-color:#80808040;--ol-partial-background-color:#ffffffbf;--ol-foreground-color:#333;--ol-subtle-foreground-color:#666;--ol-brand-color:#0af}.ol-box{box-sizing:border-box;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color);border-radius:2px}.ol-mouse-position{position:absolute;top:8px;right:8px}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;padding:2px;position:absolute;bottom:8px;left:8px}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-align:center;will-change:contents, width;border-top:none;margin:1px;font-size:10px;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{background-color:var(--ol-foreground-color);float:right;z-index:10;width:1px;height:15px}.ol-scale-step-text{z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:10px;position:absolute;bottom:-5px}.ol-scale-text{text-align:center;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:12px;position:absolute;bottom:25px}.ol-scale-singlebar{z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color);height:10px;position:relative}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset;overflow:hidden}.ol-viewport{touch-action:pan-x pan-y}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{background-color:var(--ol-subtle-background-color);border-radius:4px;position:absolute}.ol-zoom{top:.5em;left:.5em}.ol-rotate{transition:opacity .25s linear,visibility linear;top:.5em;right:.5em}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{top:.5em;right:.5em}.ol-control button{color:var(--ol-subtle-foreground-color);font-weight:700;font-size:inherit;text-align:center;background-color:var(--ol-background-color);border:none;border-radius:2px;width:1.375em;height:1.375em;margin:1px;padding:0;line-height:.4em;text-decoration:none;display:block}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{will-change:transform;font-weight:400;display:block}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-decoration:none}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;flex-flow:row-reverse;align-items:center;max-width:calc(100% - 1.3em);display:flex;bottom:.5em;right:.5em}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);margin:0;padding:1px .5em;font-size:12px}.ol-attribution li{list-style:none;display:inline}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{border-radius:4px 0 0;bottom:0;right:0}.ol-attribution.ol-uncollapsible img{max-height:1.6em;margin-top:-.2em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{height:200px;top:4.5em;left:.5em}.ol-zoomslider button{height:10px;position:relative}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{bottom:.5em;left:.5em}.ol-overviewmap.ol-uncollapsible{border-radius:0 4px 0 0;bottom:0;left:0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);width:150px;height:150px}.ol-overviewmap:not(.ol-collapsed) button{position:absolute;bottom:0;left:0}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.ol-overviewmap .ol-viewport:hover{cursor:pointer}.ol-control i{cursor:default}.ol-control.ol-bar{white-space:nowrap;min-width:1em;min-height:1em;position:absolute;top:.5em;left:50%;transform:translate(-50%)}.ol-control.ol-toggle .ol-option-bar{display:none}.ol-control.ol-bar .ol-control{vertical-align:middle;background-color:#0000;margin:0;padding:0;display:inline-block;position:relative;inset:auto;transform:none}.ol-control.ol-bar .ol-bar{position:static}.ol-control.ol-bar .ol-control button{outline:none;margin:2px 1px}.ol-control.ol-bar.ol-left{top:50%;left:.5em;transform:translateY(-50%)}.ol-control.ol-bar.ol-left .ol-control{display:block}.ol-control.ol-bar.ol-right{top:50%;left:auto;right:.5em;transform:translateY(-50%)}.ol-control.ol-bar.ol-right .ol-control{display:block}.ol-control.ol-bar.ol-bottom{top:auto;bottom:.5em}.ol-control.ol-bar.ol-top.ol-left,.ol-control.ol-bar.ol-top.ol-right{top:4.5em;transform:none}.ol-touch .ol-control.ol-bar.ol-top.ol-left,.ol-touch .ol-control.ol-bar.ol-top.ol-right{top:5.5em}.ol-control.ol-bar.ol-bottom.ol-left,.ol-control.ol-bar.ol-bottom.ol-right{top:auto;bottom:.5em;transform:none}.ol-control.ol-bar.ol-group{margin:1px 1px 1px 0}.ol-control.ol-bar.ol-right .ol-group,.ol-control.ol-bar.ol-left .ol-group{margin:1px 1px 0}.ol-control.ol-bar.ol-group button{border-radius:0;margin:0 0 0 1px}.ol-control.ol-bar.ol-right.ol-group button,.ol-control.ol-bar.ol-left.ol-group button,.ol-control.ol-bar.ol-right .ol-group button,.ol-control.ol-bar.ol-left .ol-group button{margin:0 0 1px}.ol-control.ol-bar.ol-group .ol-control:first-child>button{border-radius:5px 0 0 5px}.ol-control.ol-bar.ol-group .ol-control:last-child>button{border-radius:0 5px 5px 0}.ol-control.ol-bar.ol-left.ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-right.ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-left .ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-right .ol-group .ol-control:first-child>button{border-radius:5px 5px 0 0}.ol-control.ol-bar.ol-left.ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-right.ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-left .ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-right .ol-group .ol-control:last-child>button{border-radius:0 0 5px 5px}.ol-control.ol-bar .ol-rotate{opacity:1;visibility:visible}.ol-control.ol-bar .ol-rotate button{display:block}.ol-control.ol-bar .ol-toggle.ol-active>button,.ol-control.ol-bar .ol-toggle.ol-active button:hover{color:#fff;background-color:#0af}.ol-control.ol-toggle button:disabled{background-color:#ccc}.ol-control.ol-bar .ol-control.ol-option-bar{background-color:#fffc;border-radius:0;margin:5px 0;display:none;position:absolute;top:100%;left:0;box-shadow:0 0 0 1px #003c8880,1px 1px 2px #00000080}.ol-control.ol-bar .ol-option-bar:before{content:"";pointer-events:none;border:.5em solid #0000;border-bottom-color:#003c8880;position:absolute;bottom:100%;left:.3em}.ol-control.ol-bar .ol-option-bar .ol-control{display:table-cell}.ol-control.ol-bar .ol-control .ol-bar{display:none}.ol-control.ol-bar .ol-control.ol-active>.ol-option-bar{display:block}.ol-control.ol-bar .ol-control.ol-collapsed ul{display:none}.ol-control.ol-bar .ol-control.ol-text-button>div:hover,.ol-control.ol-bar .ol-control.ol-text-button>div{color:#003c8880;background-color:#0000;width:auto;min-width:1.375em;margin:0}.ol-control.ol-bar .ol-control.ol-text-button{border-left:1px solid #003c88cc;border-radius:0;font-size:.9em}.ol-control.ol-bar .ol-control.ol-text-button:first-child{border-left:0}.ol-control.ol-bar .ol-control.ol-text-button>div{padding:.11em .3em;font-family:Arial,Helvetica,sans-serif;font-size:1.14em;font-weight:400}.ol-control.ol-bar .ol-control.ol-text-button div:hover{color:#003c88}.ol-control.ol-bar.ol-bottom .ol-option-bar{top:auto;bottom:100%}.ol-control.ol-bar.ol-bottom .ol-option-bar:before{border-color:#003c8880 #0000 #0000;top:100%;bottom:auto}.ol-control.ol-bar.ol-left .ol-option-bar{margin:0 5px;top:0;bottom:auto;left:100%}.ol-control.ol-bar.ol-left .ol-option-bar:before{border-color:#0000 #003c8880 #0000 #0000;inset:.3em 100% auto auto}.ol-control.ol-bar.ol-right .ol-option-bar{margin:0 5px;inset:0 100% auto auto}.ol-control.ol-bar.ol-right .ol-option-bar:before{border-color:#0000 #0000 #0000 #003c8880;top:.3em;bottom:auto;left:100%}.ol-control.ol-bar.ol-left .ol-option-bar .ol-option-bar,.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar{margin:5px 0;inset:100% auto auto .3em}.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar{left:auto;right:.3em}.ol-control.ol-bar.ol-left .ol-option-bar .ol-option-bar:before,.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar:before{border-color:#0000 #0000 #003c8880;inset:auto auto 100% .3em}.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar:before{left:auto;right:.3em}.ol-control-title{position:absolute;top:0;left:0;right:0}.ol-center-position{background-color:#fffc;padding:.1em 1em;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.ol-compassctrl{display:none;top:1em;left:auto;right:1em}.ol-compassctrl.ol-visible{display:block!important}.ol-ext-dialog{opacity:0;z-index:1000;background-color:#00000080;width:150%;height:100%;transition:opacity .2s,top 0s .2s;position:fixed;top:-100%;left:0;pointer-events:none!important}.ol-ext-dialog.ol-visible{opacity:1;transition:opacity .2s,top;top:0;pointer-events:all!important}.ol-viewport .ol-ext-dialog{position:absolute}.ol-ext-dialog>form>h2{text-overflow:ellipsis;white-space:nowrap;margin:0 .5em .5em 0;display:none;overflow:hidden}.ol-ext-dialog>form.ol-title>h2{display:block}.ol-ext-dialog>form{box-sizing:border-box;background-color:#fff;border:1px solid #333;min-width:5em;max-width:60%;min-height:3em;max-height:100%;padding:1em;transition:top .2s,transform .2s;position:absolute;top:0;left:33.33%;overflow:hidden auto;transform:translate(-50%,-30%);box-shadow:3px 3px 4px #00000080}dialog.ol-ext-dialog>form{width:max-content;max-width:90%;left:50%}.ol-ext-dialog>form.ol-closebox{padding-top:1.5em}.ol-ext-dialog>form.ol-title{padding-top:1em}.ol-ext-dialog>form.ol-button{padding-bottom:.5em}.ol-ext-dialog.ol-zoom>form{top:30%;transform:translate(-50%,-30%)scale(0)}.ol-ext-dialog.ol-visible>form{top:30%}.ol-ext-dialog.ol-zoom.ol-visible>form{transform:translate(-50%,-30%)scale(1)}.ol-ext-dialog>form .ol-content{overflow:hidden auto}.ol-ext-dialog>form .ol-closebox{cursor:pointer;width:1em;height:1em;display:none;position:absolute;top:.5em;right:.5em}.ol-ext-dialog>form.ol-closebox .ol-closebox{display:block}.ol-ext-dialog>form .ol-closebox:before,.ol-ext-dialog>form .ol-closebox:after{content:"";background-color:currentColor;border-radius:.1em;width:1em;height:.1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-ext-dialog>form .ol-closebox:before{transform:translate(-50%,-50%)rotate(-45deg)}.ol-ext-dialog>form .ol-buttons{text-align:right;overflow-x:hidden}.ol-ext-dialog>form .ol-buttons input{color:#003c88;cursor:pointer;background:0 0;border:0;border-radius:.25em;margin-top:.5em;padding:.5em;font-size:1em}.ol-ext-dialog>form .ol-buttons input:hover{background-color:#003c881a}.ol-ext-dialog>form .ol-buttons input[type=submit]{font-weight:700}.ol-ext-dialog .ol-progress-message{text-align:center;padding-bottom:.5em;font-size:.9em}.ol-ext-dialog .ol-progress-bar{border:1px solid #369;width:20em;max-width:100%;height:1em;margin:.5em auto 0;padding:2px;overflow:hidden}.ol-ext-dialog .ol-progress-bar>div{background:#369;width:50%;height:100%;transition:width .3s}.ol-ext-dialog .ol-progress-bar>div.notransition{transition:unset}.ol-ext-dialog.ol-fullscreen-dialog form{text-align:center;max-width:calc(66.6% - 2em);-webkit-box-shadow:none;box-shadow:none;color:#fff;background:0 0;border:none;inset:1em;transform:none}.ol-ext-dialog.ol-fullscreen-dialog form .ol-closebox{font-size:2em;top:0;right:0}.ol-ext-dialog.ol-fullscreen-dialog .ol-closebox:before,.ol-ext-dialog.ol-fullscreen-dialog .ol-closebox:after{border:.1em solid}.ol-ext-dialog.ol-fullscreen-dialog img,.ol-ext-dialog.ol-fullscreen-dialog video{max-width:100%}body>.ol-ext-dialog .ol-content{max-height:calc(100vh - 10em)}body>.ol-ext-dialog>form{overflow:visible}.ol-editbar .ol-button button{box-sizing:border-box;vertical-align:middle;font-style:normal;display:inline-block;position:relative}.ol-editbar .ol-button button:before,.ol-editbar .ol-button button:after{content:"";box-sizing:border-box;background-color:currentColor;border-width:0;position:absolute}.ol-editbar .ol-button button:focus{outline:none}.ol-editbar .ol-selection>button:before{background-color:#0000;border:.25em solid #0000;border-top:0 solid;border-bottom:.65em solid;width:.6em;height:1em;top:.35em;left:.5em;transform:translate(-50%,-50%)rotate(-30deg);box-shadow:0 .6em 0 -.23em}.ol-editbar .ol-selection0>button:after{background-color:#0000;border:.05em solid #0000;border-top:0 solid;border-bottom:.7em solid;width:.28em;height:.6em;top:.5em;left:.7em;transform:rotate(-45deg)}.ol-editbar .ol-delete button:after,.ol-editbar .ol-delete button:before{width:1em;height:.2em;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-editbar .ol-delete button:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-editbar .ol-info button:before{border-radius:.03em;width:.25em;height:.6em;top:.47em;left:50%;transform:translate(-50%)}.ol-editbar .ol-info button:after{border-radius:.03em;width:.25em;height:.2em;top:.12em;left:50%;transform:translate(-50%);box-shadow:-.1em .35em,-.1em .82em,.1em .82em}.ol-editbar .ol-drawpoint button:before{background-color:#0000;border:.15em solid;border-radius:50%;width:.7em;height:.7em;top:.2em;left:50%;transform:translate(-50%)}.ol-editbar .ol-drawpoint button:after{background-color:#0000;border:.2em solid #0000;border-top:.4em solid;border-bottom:0 solid;width:.4em;height:.4em;top:.8em;left:50%;transform:translate(-50%)}.ol-editbar .ol-drawline>button:before,.ol-editbar .ol-drawpolygon>button:before,.ol-editbar .ol-drawhole>button:before{background-color:#0000;border:.13em solid;border-width:.2em .13em .09em;width:.8em;height:.8em;top:.2em;left:.25em;transform:rotate(10deg)perspective(1em)rotateX(40deg)}.ol-editbar .ol-drawline>button:before{border-bottom:0}.ol-editbar .ol-drawline>button:after,.ol-editbar .ol-drawhole>button:after,.ol-editbar .ol-drawpolygon>button:after{width:.3em;height:.3em;top:.2em;left:.25em;box-shadow:-.2em .55em,.6em .1em,.65em .7em}.ol-editbar .ol-drawhole>button:after{box-shadow:-.2em .55em,.6em .1em,.65em .7em,.25em .35em}.ol-editbar .ol-offset>button i,.ol-editbar .ol-transform>button i{width:.9em;height:.9em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-editbar .ol-offset>button i{width:.8em;height:.8em}.ol-editbar .ol-offset>button i:before,.ol-editbar .ol-transform>button i:before,.ol-editbar .ol-transform>button i:after{content:"";background-color:currentColor;width:.1em;height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg);box-shadow:.5em 0 0 .1em,-.5em 0 0 .1em}.ol-editbar .ol-offset>button i:before{box-shadow:.45em 0 0 .1em,-.45em 0 0 .1em}.ol-editbar .ol-transform>button i:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-editbar .ol-split>button:before{border-radius:50%;width:.3em;height:.3em;top:.81em;left:.75em;box-shadow:.1em -.4em,-.15em -.25em}.ol-editbar .ol-split>button:after{background-color:#0000;border:.2em solid;border-width:0 .2em .2em 0;border-radius:.1em;width:.8em;height:.8em;top:.15em;left:-.1em;transform:rotate(20deg)scaleY(.6)rotate(-45deg)}.ol-editbar .ol-drawregular>button:before{background-color:#0000;border:.1em solid;width:.9em;height:.9em;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div{cursor:pointer;vertical-align:text-bottom;border:.5em solid #0000;border-color:#0000 currentColor;display:inline-block}.ol-editbar .ol-drawregular .ol-bar:before,.ol-control.ol-bar.ol-editbar .ol-drawregular .ol-bar{left:50%;transform:translate(-50%)}.ol-editbar .ol-drawregular .ol-bar .ol-text-button{text-align:center;min-width:6em}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div:first-child{border-width:.5em .5em .5em 0;margin:0 .5em 0 0}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div:last-child{border-width:.5em 0 .5em .5em;margin:0 0 0 .5em}.ol-feature-list{position:relative}.ol-control.ol-feature-list{width:100%;position:absolute;bottom:0;left:0}.ol-control.ol-feature-list>button:before{content:"";background-image:linear-gradient(90deg,currentColor,#0000);width:60%;height:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 2.5px}.ol-control.ol-feature-list.ol-collapsed{width:auto;bottom:.5em;left:.5em}.ol-feature-list .ol-content{clear:both;background-color:#f4f6f8}.ol-feature-list.ol-collapsed .ol-content>*{display:none}.ol-feature-list .ol-header{position:relative;overflow:hidden}.ol-feature-list.ol-collapsed .ol-header{display:block}.ol-control.ol-feature-list>button,.ol-control.ol-feature-list.ol-collapsed .ol-content{display:none}.ol-control.ol-feature-list.ol-collapsed>button{display:block}.ol-feature-list .ol-sizer{cursor:row-resize;background-color:#ccc;border:1px solid #f4f6f8;border-width:1px 0;width:100%;height:1px;position:relative}.ol-feature-list.ol-bottom .ol-sizer{position:absolute;bottom:0}.ol-feature-list .ol-sizer:before{content:"";z-index:1;background-color:#ddd;border:3px solid #0000;border-width:3px 1.5em;border-radius:2px;width:1.5em;height:4px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 -1px #aaa,inset 0 1px #aaa}.ol-feature-list .ol-sizer:hover:before{background-color:#ccc}.ol-feature-list .ol-content .ol-header p{vertical-align:middle;white-space:nowrap;text-overflow:ellipsis;width:calc(100% - 2em);margin:.1em .25em;display:inline-block;overflow:hidden}.ol-feature-list .ol-content .ol-header .ol-buttons{position:absolute;top:50%;right:0;transform:translateY(-50%)}.ol-feature-list .ol-content .ol-header button{vertical-align:middle;box-sizing:border-box;background:0 0;border:0;width:1em;height:1em;margin:0 .2em;position:relative}.ol-feature-list .ol-content .ol-header button.ol-closebox:before,.ol-feature-list .ol-content .ol-header button.ol-closebox:after{content:"";background:currentColor;width:.1em;height:1em;font-style:normal;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-feature-list .ol-content .ol-header button.ol-closebox:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox{border:1px solid}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox:before{transform:translate(-50%,-50%)rotate(90deg)}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox:after{display:none}.ol-feature-list .ol-scroll-container{height:10em;min-height:3em;overflow:auto}.ol-feature-list .ol-scroll-container:focus{outline:unset}.ol-feature-list table{border-collapse:collapse;white-space:nowrap;background-color:#fff;position:relative}.ol-feature-list table thead{background-color:#f4f6f8;position:sticky;top:0;overflow:hidden}.ol-feature-list table tr{box-sizing:border-box;height:1.4em}.ol-feature-list table tbody tr:hover{cursor:pointer;background-color:#eee}.ol-feature-list table tbody tr.ol-selected{background-color:#eee}.ol-feature-list table td{border:0 solid #ddd;border-width:0 0 1px 1px;width:100px;overflow:hidden}.ol-feature-list table td.number{text-align:right}.ol-feature-list table td.undefined{text-align:center;background-color:#fafafa}.ol-feature-list table tr:hover td,.ol-feature-list table .ol-selected td{background-color:#0000}.ol-feature-list thead td{position:relative}.ol-feature-list thead td.sort{padding-right:1.5em}.ol-feature-list thead td p{margin:0;display:inline-block}.ol-feature-list table td button{background-color:#0000;border:0;width:1.2em;height:1.4em;margin:.1em 0;padding:0;position:absolute;top:0;right:0}.ol-feature-list thead td button.sort:before{content:"⇅";cursor:pointer;font-size:1em;font-style:normal;font-weight:400;line-height:1em}.ol-feature-list thead td button.sortup:before{content:"↧"}.ol-feature-list thead td button.sortdown:before{content:"↥"}.ol-gauge{background-color:#ffffff80;padding:.1em .5em;top:.5em;left:50%;transform:translate(-50%)}.ol-gauge>*{vertical-align:middle;display:inline-block}.ol-gauge>span{margin:0 .5em 0 0}.ol-gauge>div{border:1px solid #003c8880;border-radius:3px;width:200px;padding:1px;display:inline-block}.ol-gauge button{max-width:100%;height:.8em;margin:0}.ol-control.ol-bookmark{background-color:#ffffff80;top:.5em;left:3em}.ol-control.ol-bookmark button{position:relative}.ol-control.ol-bookmark>button:before{content:"";border:5px solid;border-top-width:10px;border-bottom:4px solid #0000;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-bookmark>div{min-width:5em;display:block}.ol-control.ol-bookmark.ol-collapsed>div{display:none}.ol-control.ol-bookmark input{margin:0 .5em .5em;padding:0 .5em;font-size:.9em}.ol-control.ol-bookmark ul{min-width:10em;margin:0 0 .5em;padding:0;list-style:none}.ol-control.ol-bookmark li{color:#003c88cc;cursor:default;clear:both;padding:0 .2em 0 .5em;font-size:.9em}.ol-control.ol-bookmark li:hover{color:#fff;background-color:#003c8880}.ol-control.ol-bookmark>div button{float:right;cursor:pointer;background-color:#0000;border-radius:0;width:1em;height:.8em}.ol-control.ol-bookmark>div button:before{content:"⨯";color:#936;border-radius:0;font-size:1.2em;line-height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-bookmark ul li button,.ol-bookmark input{display:none}.ol-bookmark.ol-editable ul li button,.ol-bookmark.ol-editable input{display:block}.ol-control.ol-geobt{inset:auto .5em 3em auto}.ol-touch .ol-control.ol-geobt{bottom:3.5em}.ol-control.ol-geobt button:before{content:"";background:0 0;border:.16em solid;border-radius:50%;width:.4em;height:.4em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-geobt button:after{content:"";background:0 0;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.42em 0,-.42em 0,0 .42em,0 -.42em}.ol-control.ol-bar.ol-geobar .ol-control{vertical-align:middle;display:inline-block}.ol-control.ol-bar.ol-geobar .ol-bar{display:none}.ol-bar.ol-geobar.ol-active .ol-bar{display:inline-block}.ol-bar.ol-geobar .geolocBt button:before,.ol-bar.ol-geobar .geolocBt button:after{content:"";border-top:.3em solid;border-bottom:0 solid #0000;border-left:.2em solid #0000;border-right:.8em solid #0000;font-size:1.2em;display:block;position:absolute;top:.45em;left:.15em;transform:rotate(-30deg)}.ol-bar.ol-geobar .geolocBt button:after{border-width:0 .8em .3em .2em;border-color:#0000 #0000 currentColor;transform:rotate(-61deg)}.ol-bar.ol-geobar .startBt button:before{content:"";background-color:#800;border-radius:50%;width:1em;height:1em;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-bar.ol-geobar .pauseBt button:before,.ol-bar.ol-geobar .pauseBt button:after{content:"";background-color:currentColor;width:.25em;height:1em;display:block;position:absolute;top:50%;left:35%;transform:translate(-50%,-50%)}.ol-bar.ol-geobar .pauseBt button:after{left:65%}.ol-control.ol-bar.ol-geobar .centerBt,.ol-control.ol-bar.ol-geobar .pauseBt,.ol-bar.ol-geobar.pauseTrack .startBt,.ol-bar.ol-geobar.centerTrack .startBt,.ol-bar.ol-geobar.centerTrack.pauseTrack .pauseBt,.ol-bar.ol-geobar.centerTrack .pauseBt{display:none}.ol-bar.ol-geobar.pauseTrack .pauseBt,.ol-bar.ol-geobar.centerTrack .centerBt{display:inline-block}.ol-control.ol-globe{opacity:.7;transform-origin:0 100%;border-radius:50%;position:absolute;bottom:.5em;left:.5em;transform:scale(.5)}.ol-control.ol-globe:hover{opacity:.9}.ol-control.ol-globe .panel{cursor:pointer;background-color:#fff;border-radius:50%;width:170px;height:170px;display:block;overflow:hidden;box-shadow:0 0 10px 5px #ffffff80}.ol-control.ol-globe .panel .ol-viewport{border-radius:50%}.ol-control.ol-globe .ol-pointer{z-index:1;background-color:#fff;border:10px solid red;border-radius:50%;width:10px;height:10px;transition:opacity .15s,top,left;display:block;position:absolute;top:50%;left:50%;transform:translate(-15px,-40px)}.ol-control.ol-globe .ol-pointer.hidden{opacity:0;transition:opacity .15s,top 3s,left 5s}.ol-control.ol-globe .ol-pointer:before{content:"";border-radius:50%;width:0;height:0;display:block;position:absolute;top:23px;left:0;box-shadow:6px 6px 10px 5px #000}.ol-control.ol-globe .ol-pointer:after{content:"";border:10px solid #0000;border-top:20px solid red;border-bottom:0 solid red;width:0;height:0;display:block;position:absolute;top:100%;left:-50%}.ol-control.ol-globe .panel:before{content:"";z-index:1;border-radius:50%;width:100%;height:100%;display:block;position:absolute;top:0;left:0;box-shadow:inset -20px -20px 80px 2px #000000b3}.ol-control.ol-globe .panel:after{content:"";z-index:1;border-radius:50%;width:20%;height:0;display:block;position:absolute;top:20%;left:23%;transform:rotate(-40deg);box-shadow:0 0 20px 7px #fff}.ol-control.ol-globe.ol-collapsed .panel{display:none}.ol-control-top.ol-globe{transform-origin:0 0;top:5em;bottom:auto}.ol-control-right.ol-globe{transform-origin:100% 100%;left:auto;right:.5em}.ol-control-right.ol-control-top.ol-globe{transform-origin:100% 0;left:auto;right:.5em}.ol-gridreference{background:#fff;border:1px solid #000;max-height:100%;top:0;right:0;overflow:auto}.ol-gridreference input{width:100%}.ol-gridreference ul{margin:0;padding:0;list-style:none}.ol-gridreference li{cursor:pointer;padding:0 .5em}.ol-gridreference ul li:hover{background-color:#ccc}.ol-gridreference li.ol-title,.ol-gridreference li.ol-title:hover{color:#fff;cursor:default;background:#003c8880}.ol-gridreference ul li .ol-ref{margin-left:.5em}.ol-gridreference ul li .ol-ref:before{content:"("}.ol-gridreference ul li .ol-ref:after{content:")"}.ol-control.ol-imageline{border-radius:0;padding:0;transition:all .3s;bottom:0;left:0;right:0;overflow:visible}.ol-control.ol-imageline.ol-collapsed{transform:translateY(100%)}.ol-imageline>div{white-space:nowrap;scroll-behavior:smooth;width:100%;height:4em;position:relative;overflow:hidden}.ol-imageline>div.ol-move{scroll-behavior:unset}.ol-control.ol-imageline button{margin:.65em;position:absolute;top:-1em;transform:translateY(-100%);box-shadow:0 0 0 .15em #fff6}.ol-control.ol-imageline button:before{content:"";border:.15em solid;border-width:.15em .15em 0 0;width:.4em;height:.4em;position:absolute;top:40%;left:50%;transform:translate(-50%,-50%)rotate(135deg)}.ol-control.ol-imageline.ol-collapsed button:before{top:60%;transform:translate(-50%,-50%)rotate(-45deg)}.ol-imageline,.ol-imageline:hover{background-color:#000000bf}.ol-imageline.ol-arrow:after,.ol-imageline.ol-arrow:before{content:"";z-index:1;opacity:.8;pointer-events:none;border:1em solid #fff;border-left:0 solid #000;border-right:.6em solid #000;position:absolute;top:50%;left:.2em;transform:translateY(-50%);box-shadow:-.6em 0 0 1em #fff}.ol-imageline.ol-arrow:after{border-width:1em 0 1em .6em;left:auto;right:.2em;box-shadow:.6em 0 0 1em #fff}.ol-imageline.ol-scroll0.ol-arrow:before,.ol-imageline.ol-scroll1.ol-arrow:after{display:none}.ol-imageline .ol-image{cursor:pointer;height:100%;display:inline-block;position:relative}.ol-imageline img{box-sizing:border-box;opacity:0;border:.25em solid #0000;max-height:100%;transition:all 1s}.ol-imageline img.ol-loaded{opacity:1}.ol-imageline .ol-image.select{background-color:#fff}.ol-imageline .ol-image span{color:#fff;white-space:normal;text-align:center;background-color:#00000080;width:125%;max-height:2.4em;font-size:.8em;line-height:1.2em;display:none;position:absolute;bottom:0;left:50%;overflow:hidden;transform:translate(-50%)scaleX(.8)}.ol-imageline .ol-image:hover span{display:block}.ol-control.ol-routing.ol-isochrone .ol-method-time,.ol-control.ol-routing.ol-isochrone .ol-method-distance,.ol-control.ol-routing.ol-isochrone>button{position:relative}.ol-control.ol-routing.ol-isochrone .ol-method-time:before,.ol-control.ol-routing.ol-isochrone>button:before{content:"";clip:unset;border:.1em solid;border-radius:50%;width:.8em;height:.8em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 -.5em 0 -.35em,.4em -.35em 0 -.35em}.ol-control.ol-routing.ol-isochrone .ol-method-time:after,.ol-control.ol-routing.ol-isochrone>button:after{content:"";-webkit-box-shadow:none;box-shadow:none;box-sizing:border-box;clip:unset;border:.3em solid #0000;border-right-color:currentColor;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-60deg)}.ol-control.ol-routing.ol-isochrone .ol-method-distance:before{content:"";box-sizing:border-box;border:.1em solid;width:1em;height:.5em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-30deg)}.ol-control.ol-routing.ol-isochrone .ol-method-distance:after{content:"";width:.1em;height:.15em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-30deg);box-shadow:inset 0 -.15em,0 .1em,.25em .1em,-.25em .1em}.ol-control.ol-routing.ol-isochrone .ol-direction-direct:before,.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:before{content:"";box-sizing:border-box;border:.1em solid;border-radius:50%;width:.3em;height:.3em;position:absolute;top:50%;left:30%;transform:translate(-50%,-50%);box-shadow:.25em 0 0 -.05em}.ol-control.ol-routing.ol-isochrone .ol-direction-direct:after,.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:after{content:"";border:.4em solid #0000;border-left-color:currentColor;border-right:0 solid;position:absolute;top:50%;left:70%;transform:translate(-50%,-50%)}.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:after{border-width:.4em .4em .4em 0}.ol-control.ol-isochrone.ol-collapsed .content{display:none}.ol-control.ol-isochrone input[type=number]{text-align:right;width:3em;margin:0 .1em}.ol-control.ol-isochrone .ol-distance input[type=number]{width:5em}.ol-isochrone .ol-time,.ol-isochrone .ol-distance{display:none}.ol-isochrone .ol-time.selected,.ol-isochrone .ol-distance.selected{display:block}.ol-control.ol-layerswitcher-popup{text-align:left;position:absolute;top:3em;right:.5em}.ol-control.ol-layerswitcher-popup .panel{clear:both;background:#fff}.ol-layerswitcher-popup .panel{margin:0;padding:.25em;list-style:none;overflow:hidden}.ol-layerswitcher-popup .panel ul{padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher-popup.ol-collapsed .panel{display:none}.ol-layerswitcher-popup.ol-forceopen .panel{display:block}.ol-layerswitcher-popup button{float:right;background-color:#fff;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACE1BMVEX///8A//8AgICA//8AVVVAQID///8rVVVJtttgv98nTmJ2xNgkW1ttyNsmWWZmzNZYxM4gWGgeU2JmzNNr0N1Rwc0eU2VXxdEhV2JqytQeVmMhVmNoydUfVGUgVGQfVGQfVmVqy9hqy9dWw9AfVWRpydVry9YhVmMgVGNUw9BrytchVWRexdGw294gVWQgVmUhVWPd4N6HoaZsy9cfVmQgVGRrytZsy9cgVWQgVWMgVWRsy9YfVWNsy9YgVWVty9YgVWVry9UgVWRsy9Zsy9UfVWRsy9YgVWVty9YgVWRty9Vsy9aM09sgVWRTws/AzM0gVWRtzNYgVWRuy9Zsy9cgVWRGcHxty9bb5ORbxdEgVWRty9bn6OZTws9mydRfxtLX3Nva5eRix9NFcXxOd4JPeINQeIMiVmVUws9Vws9Vw9BXw9BYxNBaxNBbxNBcxdJexdElWWgmWmhjyNRlx9IqXGtoipNpytVqytVryNNrytZsjZUuX210k5t1y9R2zNR3y9V4lp57zth9zdaAnKOGoaeK0NiNpquV09mesrag1tuitbmj1tuj19uktrqr2d2svcCu2d2xwMO63N+7x8nA3uDC3uDFz9DK4eHL4eLN4eIyYnDX5OM5Z3Tb397e4uDf4uHf5uXi5ePi5+Xj5+Xk5+Xm5+Xm6OY6aHXQ19fT4+NfhI1Ww89gx9Nhx9Nsy9ZWw9Dpj2abAAAAWnRSTlMAAQICAwQEBgcIDQ0ODhQZGiAiIyYpKywvNTs+QklPUlNUWWJjaGt0dnd+hIWFh4mNjZCSm6CpsbW2t7nDzNDT1dje5efr7PHy9PT29/j4+Pn5+vr8/f39/f6DPtKwAAABTklEQVR4Xr3QVWPbMBSAUTVFZmZmhhSXMjNvkhwqMzMzMzPDeD+xASvObKePPa+ffHVl8PlsnE0+qPpBuQjVJjno6pZpSKXYl7/bZyFaQxhf98hHDKEppwdWIW1frFnrxSOWHFfWesSEWC6R/P4zOFrix3TzDFLlXRTR8c0fEEJ1/itpo7SVO9Jdr1DVxZ0USyjZsEY5vZfiiAC0UoTGOrm9PZLuRl8X+Dq1HQtoFbJZbv61i+Poblh/97TC7n0neCcK0ETNUrz1/xPHf+DNAW9Ac6t8O8WH3Vp98f5lCaYKAOFZMLyHL4Y0fe319idMNgMMp+zWVSybUed/+/h7I4wRAG1W6XDy4XmjR9HnzvDRZXUAYDFOhC1S/Hh+fIXxen+eO+AKqbs+wAo30zDTDvDxKoJN88sjUzDFAvBzEUGFsnADoIvAJzoh2BZ8sner+Ke/vwECuQAAAABJRU5ErkJggg==);background-position:50%;background-repeat:no-repeat;width:38px;height:38px}.ol-layerswitcher-popup li{color:#369;cursor:pointer;padding:.25em 1em;font-family:Trebuchet MS,Helvetica,sans-serif}.ol-layerswitcher-popup li.ol-header{display:none}.ol-layerswitcher-popup li.select,.ol-layerswitcher-popup li.ol-visible{color:#fff;background:#003c88b3}.ol-layerswitcher-popup li:hover{color:#fff;background:#003c88e6}.ol-control.ol-layerswitcher.ol-layer-shop{height:calc(100% - 4em);max-height:unset;background-color:#0000;max-width:16em;overflow:visible;pointer-events:none!important}.ol-control.ol-layerswitcher>*{pointer-events:auto}.ol-control.ol-layer-shop>button,.ol-control.ol-layer-shop .panel-container{box-shadow:0 0 0 3px #ffffff80}.ol-control.ol-layerswitcher.ol-layer-shop .panel-container{border:2px solid #369;border-width:2px 0;max-height:calc(100% - 6.5em);padding:0;overflow-y:scroll}.ol-control.ol-layer-shop .panel{box-sizing:border-box;margin:.25em .5em;padding:0}.ol-control.ol-layerswitcher.ol-layer-shop .panel-container.ol-scrolldiv{overflow:hidden}.ol-control.ol-layer-shop .ol-scroll{opacity:.5;background-color:#0000004d}.ol-layerswitcher.ol-layer-shop ul.panel li.ol-header{display:none}.ol-layerswitcher.ol-layer-shop ul.panel li{margin-right:0;padding-right:0}.ol-layerswitcher.ol-layer-shop .layerup{box-sizing:border-box;color:#003c88;background-color:#0000;border-radius:3px;width:1.4em;height:1.5em;margin:0}.ol-layerswitcher.ol-layer-shop .layerup:hover{background-color:#003c884d}.ol-layerswitcher.ol-layer-shop .layerup:before{background-color:currentColor;border:0;width:1em;height:2px;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 -4px,0 4px}.ol-layerswitcher.ol-layer-shop .layerup:after{content:unset}.ol-control.ol-layer-shop .ol-title-bar{box-sizing:border-box;text-overflow:ellipsis;white-space:nowrap;text-align:right;transform-origin:100% 0;background-color:#ffffff80;max-width:14.6em;height:calc(2.8em - 4px);padding:.7em .5em;font-size:.9em;transition:transform .1s,width;overflow:hidden;transform:scaleY(1.1)}.ol-control.ol-layer-shop:hover .ol-title-bar{background-color:#ffffffb3}.ol-control.ol-layer-shop.ol-collapsed .ol-title-bar{max-width:10em;transform:scale(.9,1.1)}.ol-control.ol-layer-shop.ol-forceopen .ol-title-bar{max-width:14.6em;transform:scaleY(1.1)}.ol-control.ol-layer-shop .ol-bar{clear:both;text-align:right;z-index:10;background-color:#fff;height:1.75em;position:relative;box-shadow:0 0 0 3px #ffffff80}.ol-control.ol-layer-shop.ol-collapsed .ol-scroll,.ol-control.ol-layer-shop.ol-collapsed .ol-bar{border-width:2px 0 0;display:none}.ol-control.ol-layer-shop.ol-forceopen .ol-scroll,.ol-control.ol-layer-shop.ol-forceopen .ol-bar{display:block}.ol-control.ol-layer-shop .ol-bar>*{vertical-align:middle;background-color:#0000;margin-top:.25em;font-size:.9em;display:inline-block}.ol-layer-shop .ol-bar .ol-button,.ol-touch .ol-layer-shop .ol-bar .ol-button{top:unset;left:unset;bottom:unset;right:unset;margin:0;position:relative}.ol-layer-shop .ol-bar button{color:#003c88;background-color:#fff}.ol-layer-shop .ol-bar button:hover{background-color:#003c8833}.ol-touch .ol-layerswitcher.ol-layer-shop>button{font-size:1.7em}.ol-touch .ol-layer-shop .ol-bar{height:2em}.ol-touch .ol-layer-shop .ol-control button{font-size:1.4em}.ol-touch .ol-control.ol-layer-shop .panel{max-height:calc(100% - 7em)}.ol-touch .ol-control.ol-layer-shop .panel label{height:1.8em}.ol-touch .ol-control.ol-layer-shop .panel label span{margin-left:.5em;padding-top:.25em}.ol-touch .ol-control.ol-layer-shop .panel label:before,.ol-touch .ol-control.ol-layer-shop .panel label:after{z-index:1;font-size:1.3em}.ol-control.ol-layerswitcher{text-align:left;box-sizing:border-box;max-height:calc(100% - 6em);position:absolute;top:3em;right:.5em;overflow:hidden}.ol-control.ol-layerswitcher .ol-switchertopdiv,.ol-control.ol-layerswitcher .ol-switcherbottomdiv{display:block}.ol-control.ol-layerswitcher.ol-collapsed .ol-switchertopdiv,.ol-control.ol-layerswitcher.ol-collapsed .ol-switcherbottomdiv{display:none}.ol-layerswitcher.ol-forceopen.ol-collapsed .ol-switchertopdiv,.ol-layerswitcher.ol-forceopen.ol-collapsed .ol-switcherbottomdiv{display:block}.ol-control.ol-layerswitcher .ol-switchertopdiv,.ol-control.ol-layerswitcher .ol-switcherbottomdiv{z-index:2;opacity:1;cursor:pointer;box-sizing:border-box;background:#fff;border-top:2px solid #0000;border-bottom:2px solid #369;height:45px;margin:0 2px;position:absolute;top:0;left:0;right:0}.ol-control.ol-layerswitcher .ol-switcherbottomdiv{border-top:2px solid #369;border-bottom:2px solid #0000;height:2em;top:auto;bottom:0}.ol-control.ol-layerswitcher .ol-switchertopdiv:before,.ol-control.ol-layerswitcher .ol-switcherbottomdiv:before{content:"";opacity:.8;border:10px solid #0000;width:0;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-layerswitcher .ol-switchertopdiv:hover:before,.ol-control.ol-layerswitcher .ol-switcherbottomdiv:hover:before{opacity:1}.ol-control.ol-layerswitcher .ol-switchertopdiv:before{border-top:0;border-bottom-color:#369}.ol-control.ol-layerswitcher .ol-switcherbottomdiv:before{border-top-color:#369;border-bottom:0}.ol-control.ol-layerswitcher .panel-container{clear:both;background-color:#fff;border-radius:0 0 2px 2px;padding:.5em .5em 0;display:block}.ol-layerswitcher .panel{margin:0;padding:0;font-family:Tahoma,Geneva,sans-serif;font-size:.9em;list-style:none;transition:top .3s;position:relative;top:0;overflow:hidden}.ol-layerswitcher .panel ul{clear:both;padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher input[type=radio],.ol-layerswitcher input[type=checkbox]{opacity:0;width:0;height:0;position:absolute}.ol-layerswitcher .panel li{-weblit-transition:-webkit-transform .2s linear;clear:both;box-sizing:border-box;border:1px solid #0000;transition:transform .2s linear;display:block}.ol-layerswitcher .panel li.ol-layer-select{background-color:#003c8833;margin:0 -.5em;padding:0 .5em}.ol-layerswitcher .panel li.drag{opacity:.5;transform:scale(.8)}.ol-dragover{opacity:.8;background:#33669980}.ol-layerswitcher .panel li.forbidden,.forbidden .ol-layerswitcher-buttons div,.forbidden .layerswitcher-opacity div{background:#ff000080;color:red!important}.ol-layerswitcher.drag,.ol-layerswitcher.drag *{cursor:not-allowed!important;cursor:no-drop!important}.ol-layerswitcher.drag .panel li.dropover,.ol-layerswitcher.drag .panel li.dropover *{cursor:pointer!important;cursor:n-resize!important;cursor:ns-resize!important;cursor:-webkit-grab!important;cursor:grab!important;cursor:-webkit-grabbing!important;cursor:grabbing!important}.ol-layerswitcher .panel li.dropover{background:#33669980}.ol-layerswitcher .panel li label{white-space:nowrap;text-overflow:ellipsis;max-width:12em;height:1.4em;padding:0 0 0 1.7em;display:inline-block;position:relative;overflow:hidden}.ol-layerswitcher .panel li label span{text-overflow:ellipsis;width:100%;height:100%;padding-right:.2em;display:inline-block;overflow:hidden}.ol-layerswitcher [type=radio]+label:before,.ol-layerswitcher [type=checkbox]+label:before,.ol-layerswitcher [type=radio]:checked+label:after,.ol-layerswitcher [type=checkbox]:checked+label:after{content:"";box-sizing:border-box;background:#fff;border:2px solid #369;width:1.2em;height:1.2em;position:absolute;top:.1em;left:.1em}.ol-layerswitcher li:has(>div.li-content>.ol-visibility:focus){border-color:#369;box-shadow:inset 0 0 0 1px #369}.ol-layerswitcher [type=radio]+label:before,.ol-layerswitcher [type=radio]+label:after{border-radius:50%}.ol-layerswitcher [type=radio]:checked+label:after{background:#369;width:.6em;height:.6em;margin:.3em}.ol-layerswitcher [type=checkbox]:checked+label:after{background:0 0;border:3px solid #369;border-width:0 3px 3px 0;width:.7em;height:1em;top:-.05em;left:.55em;transform:rotate(45deg);box-shadow:1px 0 1px 1px #fff}.ol-layerswitcher .panel li.ol-layer-hidden{opacity:.6}.ol-layerswitcher.ol-collapsed .panel-container{display:none}.ol-layerswitcher.ol-forceopen .panel-container{display:block}.ol-control.ol-layerswitcher .ol-counter{z-index:22;text-align:left;font-size:.65em;line-height:1.5em;display:none;position:absolute;top:0;right:.3em}.ol-control.ol-layerswitcher.ol-counter .ol-counter{display:block}.ol-control.ol-layer-shop .ol-counter{text-align:center;background:#fff;border-radius:50%;width:1.5em;line-height:1.5em;transform:translate(50%,-50%);box-shadow:.5px .5px 2px}.ol-layerswitcher-image>button,.ol-layerswitcher>button{float:right;z-index:10;background-color:#fff;font-size:1.7em;position:relative}.ol-touch .ol-layerswitcher-image>button,.ol-touch .ol-layerswitcher>button{font-size:2.5em}.ol-layerswitcher-image>button:before,.ol-layerswitcher-image>button:after,.ol-layerswitcher>button:before,.ol-layerswitcher>button:after{content:"";border-radius:.15em;width:.75em;height:.75em;position:absolute;transform:scaleY(.8)rotate(45deg)}.ol-layerswitcher-image>button:before,.ol-layerswitcher>button:before{background:#e2e4e1;top:.32em;left:.34em;box-shadow:.1em .1em #325158}.ol-layerswitcher-image>button:after,.ol-layerswitcher>button:after{background:#83bcc5 radial-gradient(circle at .85em .6em,#70b3be 0 .65em,#83bcc5 .65em);top:.22em;left:.34em}.ol-layerswitcher-buttons{float:right;text-align:right;display:block}.ol-layerswitcher-buttons>div{cursor:pointer;text-align:center;vertical-align:middle;color:#fff;background:#369;width:1em;height:1em;margin:2px;line-height:1em;display:inline-block;position:relative}.ol-layerswitcher .panel li>div{display:inline-block;position:relative}.ol-layerswitcher .ol-separator{width:0;height:0;margin:0;padding:0;display:block}.ol-layerswitcher .layerup{float:right;opacity:.5;cursor:move;cursor:ns-resize;background-color:#369;height:2.5em}.ol-layerswitcher .layerup:before,.ol-layerswitcher .layerup:after{content:"";border:.4em solid #0000;border-top-color:#fff;border-bottom:0 solid #fff;width:0;height:0;position:absolute;bottom:3px;left:.1em}.ol-layerswitcher .layerup:after{border-width:0 .4em .4em;top:3px;bottom:auto}.ol-layerswitcher .layerInfo{background:#369;border-radius:100%}.ol-layerswitcher .layerInfo:before{color:#fff;content:"i";text-align:center;width:1.25em;font-size:.8em;font-weight:700;display:block;position:absolute;top:0;left:0}.ol-layerswitcher .layerTrash{background:#369}.ol-layerswitcher .layerTrash:before{color:#fff;content:"×";text-align:center;margin:-.5em 0;font-size:1em;line-height:1em;position:absolute;top:50%;left:0;right:0}.ol-layerswitcher .layerExtent{background:#369}.ol-layerswitcher .layerExtent:before{content:"";border-bottom:1px solid #fff;border-right:1px solid #fff;display:block;position:absolute;inset:6px 2px 3px 6px}.ol-layerswitcher .layerExtent:after{content:"";border-top:1px solid #fff;border-left:1px solid #fff;display:block;position:absolute;inset:3px 6px 6px 2px}.ol-layerswitcher .expend-layers,.ol-layerswitcher .collapse-layers{background-color:#0000;margin:0 2px}.ol-layerswitcher .expend-layers:before,.ol-layerswitcher .collapse-layers:before{content:"";background:#369;width:100%;height:4px;margin-top:-2px;position:absolute;top:50%;left:0}.ol-layerswitcher .expend-layers:after{content:"";background:#369;width:4px;height:100%;margin-left:-2px;position:absolute;top:0;left:50%}.ol-layerswitcher .layerswitcher-opacity{box-sizing:border-box;background:#69c;cursor:pointer;background:linear-gradient(90deg,#003c8800,#003c8899);border:1px solid #369;border-radius:3px;width:120px;height:3px;margin:5px 1em 10px 7px;position:relative;box-shadow:1px 1px 1px #00000080}.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor,.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor:before{z-index:1;background:#003c8880;border-radius:50%;width:20px;height:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor:before{content:"";width:50%;height:50%;position:absolute}.ol-touch .ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor{width:26px;height:26px}.ol-layerswitcher .layerswitcher-opacity-label{font-size:.8em;display:none;position:absolute;bottom:5px;right:-2.5em}.ol-layerswitcher .layerswitcher-opacity-label:after{content:"%"}.ol-layerswitcher .layerswitcher-progress{width:120px;margin:-4px 1em 2px 7px;display:block}.ol-layerswitcher .layerswitcher-progress div{background-color:#369;width:0;height:2px;display:block}.ol-control.ol-layerswitcher-image{text-align:left;transition:all .2s;position:absolute;top:1em;right:.5em}.ol-control.ol-layerswitcher-image.ol-collapsed{transition:none;top:3em}.ol-layerswitcher-image .panel{margin:0;padding:.25em;list-style:none;overflow:hidden}.ol-layerswitcher-image .panel ul{padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher-image.ol-collapsed .panel{display:none}.ol-layerswitcher-image.ol-forceopen .panel{clear:both;display:block}.ol-layerswitcher-image button{float:right;display:none}.ol-layerswitcher-image.ol-collapsed button{display:block;position:relative}.ol-layerswitcher-image li{vertical-align:middle;cursor:pointer;background-color:#fff;border:3px solid #0000;border-radius:4px;width:64px;height:64px;margin:2px;display:inline-block;position:relative;overflow:hidden;box-shadow:1px 1px 4px #00000080}.ol-layerswitcher-image li.ol-layer-hidden{opacity:.5;border-color:#555}.ol-layerswitcher-image li.ol-header{display:none}.ol-layerswitcher-image li img{max-width:100%;position:absolute}.ol-layerswitcher-image li.select,.ol-layerswitcher-image li.ol-visible{border:3px solid red}.ol-layerswitcher-image li p{display:none}.ol-layerswitcher-image li:hover p{color:#fff;text-align:center;background-color:#00000080;height:1.2em;margin:0;font-family:Verdana,Geneva,sans-serif;font-size:.8em;display:block;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.ol-control.ol-legend{z-index:1;background-color:#fff9;max-width:90%;max-height:90%;bottom:.5em;left:.5em;overflow:hidden auto}.ol-control.ol-legend:hover{background-color:#fffc}.ol-control.ol-legend.ol-empty,.ol-control.ol-legend.ol-collapsed{overflow:hidden}.ol-control.ol-legend button{display:none;position:relative}.ol-control.ol-legend.ol-empty button,.ol-control.ol-legend.ol-collapsed button{display:block}.ol-control.ol-legend.ol-uncollapsible button{display:none}.ol-control.ol-legend>ul,.ol-control.ol-legend>canvas{margin:2px}.ol-control.ol-legend button.ol-closebox{cursor:pointer;z-index:1;background:0 0;display:block;position:absolute;top:0;right:0}.ol-control.ol-legend.ol-empty button.ol-closebox,.ol-control.ol-legend.ol-uncollapsible button.ol-closebox,.ol-control.ol-legend.ol-collapsed button.ol-closebox{display:none}.ol-control.ol-legend button.ol-closebox:before{content:"×";color:#003c8880;background:0 0;font-size:1.3em}.ol-control.ol-legend button.ol-closebox:hover:before{color:#003c88}.ol-control.ol-legend .ol-legendImg{display:block}.ol-control.ol-legend.ol-empty .ol-legendImg,.ol-control.ol-legend.ol-collapsed .ol-legendImg{display:none}.ol-control.ol-legend.ol-uncollapsible .ol-legendImg{display:block}.ol-control.ol-legend>button:first-child:before,.ol-control.ol-legend>button:first-child:after{content:"";background-color:currentColor;width:.2em;height:.2em;position:absolute;top:.25em;left:.2em;box-shadow:0 .35em,0 .7em}.ol-control.ol-legend button:first-child:after{width:.6em;height:.15em;top:.27em;left:.55em}ul.ol-legend{width:100%;margin:0;padding:0;list-style:none;position:absolute;top:0;left:0}.ol-control.ol-legend.ol-empty ul,.ol-control.ol-legend.ol-collapsed ul{display:none}.ol-control.ol-legend.ol-uncollapsible ul{display:block}ul.ol-legend li.ol-title{text-align:center;font-weight:700}ul.ol-legend li.ol-title>div:first-child{width:0!important}ul.ol-legend li{white-space:nowrap;padding:0;overflow:hidden}ul.ol-legend li div{vertical-align:top;display:inline-block}.ol-control.ol-legend .ol-legend{display:inline-block}.ol-control.ol-legend.ol-empty .ol-legend,.ol-control.ol-legend.ol-collapsed .ol-legend{display:none}.ol-control.ol-legend.ol-empty button{opacity:.4}.ol-control.ol-mapzone{text-align:left;box-sizing:border-box;max-height:calc(100% - 6em);position:absolute;top:.5em;right:.5em;overflow:hidden}.ol-control.ol-mapzone.ol-collapsed{top:3em}.ol-control.ol-mapzone button{float:right;margin-top:2.5em;position:relative}.ol-touch .ol-control.ol-mapzone button{margin-top:1.67em}.ol-control.ol-mapzone.ol-collapsed button{margin-top:0}.ol-control.ol-mapzone button i{border:.1em solid;border-radius:50%;width:.9em;height:.9em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-control.ol-mapzone button i:before{content:"";background-color:currentColor;border-radius:50%;width:.4em;height:.4em;position:absolute;top:.3em;left:.5em;box-shadow:.05em .3em 0 -.051em,-.05em -.35em 0 -.1em,-.5em -.35em 0 0,-.65em .1em 0 -.03em,-.65em -.05em 0 -.05em}.ol-mapzone>div{width:5em;height:5em;margin:0 .2em 0 0;display:inline-block;position:relative}.ol-mapzone>div:focus{box-shadow:0 0 0 .2em #369}.ol-control.ol-mapzone.ol-collapsed>div{display:none}.ol-mapzone>div p{color:#fff;text-align:center;transform-origin:0 0;cursor:default;width:160%;margin:0;font-family:Lucida Grande,Verdana,Geneva,Lucida,Arial,Helvetica,sans-serif;font-weight:700;position:absolute;bottom:0;overflow:hidden;transform:scaleX(.625)}.ol-notification{background:0 0;border:0;width:150%;margin:0;padding:0;bottom:0}.ol-notification>div,.ol-notification>div:hover{color:#fff;text-align:center;box-sizing:border-box;opacity:1;background-color:#000c;border-radius:4px 4px 0 0;min-width:5em;max-width:calc(66% - 4em);min-height:1em;max-height:5em;padding:.2em .5em;transition:all .3s;position:absolute;bottom:0;left:33.33%;transform:translate(-50%)}.ol-notification.ol-collapsed>div{opacity:0;bottom:-5em}.ol-notification a{color:#9cf;cursor:pointer}.ol-notification .ol-close,.ol-notification .ol-close:hover{padding-right:1.5em}.ol-notification .closeBox{position:absolute;top:0;right:.3em}.ol-notification .closeBox:before{content:"×"}.ol-overlay{color:#fff;box-sizing:border-box;z-index:1;opacity:0;cursor:default;pointer-events:none;z-index:9;background-color:#0006;width:100%;height:100%;padding:1em;transition:all .5s;display:none;position:absolute;top:0;left:0;overflow:hidden}.ol-overlay.slide-up{transform:translateY(100%)}.ol-overlay.slide-down{transform:translateY(-100%)}.ol-overlay.slide-left{transform:translate(-100%)}.ol-overlay.slide-right{transform:translate(100%)}.ol-overlay.zoom{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)}.ol-overlay.zoomout{transform:scale(3)}.ol-overlay.zoomrotate{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)rotate(360deg)}.ol-overlay.stretch{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scaleX(0)}.ol-overlay.stretchy{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scaleY(0)}.ol-overlay.wipe{opacity:1}.ol-overlay.flip{transform:perspective(600px)rotateY(180deg)}.ol-overlay.card{opacity:.5;transform:translate(-80%,100%)rotate(-.5turn)}.ol-overlay.book{transform-origin:10%;transform:perspective(600px)rotateY(-180deg)scaleX(.6)}.ol-overlay.book.visible{transform-origin:10%}.ol-overlay.ol-visible{opacity:1;pointer-events:all;inset:0;transform:none}.ol-overlay .ol-closebox{cursor:pointer;z-index:1;width:1em;height:1em;position:absolute;top:1em;right:1em}.ol-overlay .ol-closebox:before{content:"❌";text-align:center;vertical-align:middle;display:block}.ol-overlay .ol-fullscreen-image{position:absolute;inset:0}.ol-overlay .ol-fullscreen-image img{box-sizing:border-box;max-width:100%;max-height:100%;padding:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlay .ol-fullscreen-image.ol-has-title img{padding-bottom:3em}.ol-overlay .ol-fullscreen-image p{text-align:center;background-color:#00000080;margin:0;padding:.5em;position:absolute;bottom:0;left:0;right:0}.ol-control.ol-overview{text-align:left;position:absolute;bottom:.5em;left:.5em}.ol-control.ol-overview .panel{cursor:pointer;background-color:#fff;border:1px solid #369;width:150px;height:150px;margin:2px;display:block}.ol-overview:not(.ol-collapsed) button{z-index:2;position:absolute;bottom:2px;left:2px}.ol-control.ol-overview.ol-collapsed .panel{display:none}.ol-overview.ol-collapsed button:before{content:"»"}.ol-overview button:before{content:"«"}.ol-control-right.ol-overview{left:auto;right:.5em}.ol-control-right.ol-overview:not(.ol-collapsed) button{left:auto;right:2px}.ol-control-right.ol-overview.ol-collapsed button:before{content:"«"}.ol-control-right.ol-overview button:before{content:"»"}.ol-control-top.ol-overview{top:5em;bottom:auto}.ol-control-top.ol-overview:not(.ol-collapsed) button{top:2px;bottom:auto}.ol-permalink{position:absolute;top:.5em;right:2.5em}.ol-touch .ol-permalink{right:3em}.ol-permalink button i{width:1em;height:1em;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-permalink button i:before{content:"↗";box-sizing:border-box;border:0 solid;border-width:1px 0 0 1px;width:.3em;height:1em;padding:0 .2em;position:absolute;top:0;left:0}.ol-permalink button i:after{content:"";box-sizing:border-box;border:1px solid;border-width:0 1px 1px 0;width:1em;height:.3em;padding:.2em;position:absolute;bottom:0;right:0}.ol-control.ol-print{top:.5em;left:3em}.ol-control.ol-print button:before{content:"";width:.9em;height:.35em;position:absolute;top:50%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 .1em,inset .55em 0,0 .2em 0 -.1em}.ol-control.ol-print button:after{content:"";width:.7em;height:.6em;position:absolute;top:25%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 .15em}.ol-ext-print-dialog{width:100%;height:100%}.ol-ext-print-dialog>form .ol-closebox{z-index:1;color:#999;left:16.5em;right:auto}.ol-ext-print-dialog .ol-content[data-status=printing]{opacity:.5}.ol-ext-print-dialog .ol-content .ol-error{color:#ff0;text-align:center;background:#b00;margin:0 -1em;padding:1em .5em;font-weight:700;display:none}.ol-ext-print-dialog .ol-content[data-status=error] .ol-error{display:block}.ol-ext-print-dialog>form,.ol-ext-print-dialog.ol-visible>form{max-width:100%;max-height:100%;width:unset;background-color:#eee;padding:0;transition:none;inset:1em;transform:none}.ol-ext-print-dialog .ol-print-map{width:calc(100% - 18em);position:absolute;top:0;bottom:0;right:0;overflow:hidden}.ol-ext-print-dialog .ol-print-map .ol-page{box-sizing:border-box;background:#fff;position:absolute;top:50%;left:50%}.ol-ext-print-dialog .ol-print-map .ol-page.margin{box-sizing:content-box}.ol-ext-print-dialog .ol-map{width:100%;height:100%}.ol-ext-print-dialog .ol-print-map .ol-control{display:none!important}.ol-ext-print-dialog .ol-print-param{box-sizing:border-box;background-color:#fff;width:18em;padding:1em;position:absolute;top:0;bottom:0;left:0;overflow-x:hidden}.ol-ext-print-dialog .ol-print-param h2{color:#003c88b3;font-size:1.1em;display:block}.ol-ext-print-dialog .ol-print-param ul{padding:0;list-style:none}.ol-ext-print-dialog .ol-print-param li{margin:.5em 0;font-size:.9em;position:relative}.ol-ext-print-dialog .ol-print-param li.hidden{display:none}.ol-ext-print-dialog .ol-print-param label{vertical-align:middle;width:8em;display:inline-block}.ol-ext-print-dialog select{vertical-align:middle;outline:none}.ol-ext-print-dialog .ol-orientation{text-align:center}.ol-ext-print-dialog .ol-orientation label{cursor:pointer;width:7em;position:relative}.ol-ext-print-dialog .ol-orientation input{opacity:0;width:0;height:0;position:absolute}.ol-ext-print-dialog .ol-orientation span{width:80%;padding:3.5em 0 .2em;display:block;position:relative}.ol-ext-print-dialog .ol-orientation span:before{content:"";color:#333;opacity:.5;background-color:currentColor;border:1px solid;border-radius:0 1em 0 0;width:2em;height:2.6em;position:absolute;bottom:1.5em;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:inset 1.3em -1.91em #ddd}.ol-ext-print-dialog .ol-orientation .landscape span:before{width:2.6em;height:2em;margin:.2em 0;box-shadow:inset 1.91em -1.3em #ddd}.ol-ext-print-dialog .ol-orientation input:checked+span{opacity:1;box-shadow:0 0 .2em #00000080}.ol-ext-print-dialog .ol-ext-toggle-switch span{position:absolute;top:50%;right:-2em;transform:translateY(-50%)}.ol-print-title input[type=text]{width:calc(100% - 6em);margin-top:.5em;margin-left:6em}.ol-ext-print-dialog .ol-size option:first-child{font-style:italic}.ol-ext-print-dialog .ol-saveas,.ol-ext-print-dialog .ol-savelegend{text-align:center}.ol-ext-print-dialog .ol-saveas select,.ol-ext-print-dialog .ol-savelegend select{color:#fff;background-color:#003c88b3;border:0;max-width:12em;margin:1em 0 0;padding:.5em;font-size:1em;font-weight:700}.ol-ext-print-dialog .ol-saveas select option,.ol-ext-print-dialog .ol-savelegend select option{color:#666;background-color:#fff}.ol-ext-print-dialog .ol-savelegend select{margin-top:0}.ol-ext-print-dialog .ol-ext-buttons{text-align:right;border-top:1px solid #ccc;margin:0 -1em;padding:.8em .5em}.ol-ext-print-dialog button{color:#333;background:0 0;border:1px solid #999;margin:0 .2em;padding:.3em 1em;font-size:1em}.ol-ext-print-dialog button[type=submit]{color:#fff;background-color:#003c88b3;font-weight:700}.ol-ext-print-dialog .ol-clipboard-copy{pointer-events:none;color:#fff;opacity:0;background-color:#00000080;border-radius:1em;width:fit-content;padding:.5em 1em;transition:all;position:absolute;top:0;left:50%;transform:translate(-50%)}.ol-ext-print-dialog .ol-clipboard-copy.visible{animation:1s ol-clipboard-copy}.ol-ext-print-dialog .ol-print-map .ol-control.ol-canvas-control,.ol-ext-print-dialog .ol-print-map .ol-control.ol-print-compass{display:block!important}.ol-ext-print-dialog .ol-print-map .ol-control.olext-print-compass{width:60px;height:60px;margin:20px;top:0;right:0}.ol-ext-print-dialog .ol-orientation input:focus-visible+span,.ol-ext-print-dialog select:focus-visible{outline:2px solid #000}@keyframes ol-clipboard-copy{0%{opacity:0;top:0}80%{opacity:1;top:-3em}to{opacity:0;top:-3em}}@media print{body.ol-print-document{margin:0!important;padding:0!important}body.ol-print-document>*{display:none!important}body.ol-print-document>.ol-ext-print-dialog{display:block!important}body.ol-print-document>.ol-ext-print-dialog .ol-content{max-height:unset!important;max-width:unset!important;width:unset!important;height:unset!important}.ol-ext-print-dialog>form,.ol-ext-print-dialog{position:unset;-webkit-box-shadow:none;box-shadow:none;border:0;background:0 0!important}.ol-ext-print-dialog>form>*,.ol-ext-print-dialog .ol-print-param{background:0 0;display:none!important}.ol-ext-print-dialog .ol-content{background:0 0;border:0;display:block!important}.ol-ext-print-dialog .ol-print-map{position:unset;background:0 0;width:auto;overflow:visible}.ol-ext-print-dialog .ol-print-map .ol-page{position:unset;-webkit-box-shadow:none!important;box-shadow:none!important;transform:none!important}}@media (width<=25em){.ol-ext-print-dialog .ol-print-param{width:13em}.ol-ext-print-dialog .ol-print-map{width:calc(100% - 13em)}.ol-ext-print-dialog .ol-print-param .ol-print-title input[type=text]{width:100%;margin:0}}.ol-ext-print-dialog2x .ol-map,.ol-ext-print-dialog2x .ol-map2{width:100%;height:50%}.ol-ext-print-dialog2x[data-orientation=landscape] .ol-map,.ol-ext-print-dialog2x[data-orientation=landscape] .ol-map2{width:50%;height:100%;display:inline-block}.ol-ext-print-dialog2x[data-clip-map] .ol-map,.ol-ext-print-dialog2x[data-swipe-orientation] .ol-map{width:100%!important;height:100%!important}.ol-ext-print-dialog2x[data-clip-map] .ol-map2,.ol-ext-print-dialog2x[data-swipe-orientation] .ol-map2{top:-100%;left:0;width:100%!important;height:100%!important;position:relative!important}.ol-profile{-webkit-user-select:none;user-select:none;position:relative}.ol-control.ol-profile{text-align:right;position:absolute;top:.5em;right:3em;overflow:hidden}.ol-profile .ol-zoom-out{cursor:pointer;border:1px solid #000;border-radius:2px;width:1em;height:1em;padding:0;position:absolute;top:10px;right:10px}.ol-profile .ol-zoom-out:before{content:"";background:currentColor;width:60%;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-profile .ol-inner{padding:.5em;font-size:.8em;position:relative}.ol-control.ol-profile .ol-inner{background-color:#ffffffb3;margin:2.3em 2px 2px;display:block}.ol-control.ol-profile.ol-collapsed .ol-inner{display:none}.ol-profile canvas{display:block}.ol-profile button{display:block;position:absolute;right:0;overflow:hidden}.ol-profile button i{width:1em;height:1em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-profile button i:before,.ol-profile button i:after{content:"";background-color:currentColor;width:1em;height:.9em;display:block;position:absolute;transform:scaleX(.8)translate(-.25em,.5em)rotate(45deg)}.ol-profile button i:after{transform:scaleX(.8)translate(.35em,.7em)rotate(45deg)}.ol-profile.ol-collapsed button{position:static}.ol-profile .ol-profilebar,.ol-profile .ol-profilecursor{pointer-events:none;width:1px;display:none;position:absolute}.ol-profile .ol-profilecursor{width:0;height:0}.ol-profile .ol-profilecursor:before{content:"";pointer-events:none;width:5px;height:5px;margin:-2px;display:block}.ol-profile .ol-profilebar,.ol-profile .ol-profilecursor:before{background:red}.ol-profile table{text-align:center;border-collapse:collapse;width:100%;margin-top:.5em}.ol-profile table tr{border-top:1px solid #00000040;margin:.1em 0}.ol-profile table td{padding:2px}.ol-profile table span{display:block}.ol-profile table span.elevationGain,.ol-profile table span.elevationLoss{display:inline-block}.ol-profilepopup{white-space:nowrap;background-color:#ffffff80;margin:.5em;padding:0 .5em;position:absolute;top:-1em}.ol-profilepopup.ol-left{right:0}.ol-profile table .track-info{display:table-row}.ol-profile table .point-info,.ol-profile .over table .track-info{display:none}.ol-profile .over table .point-info{display:table-row}.ol-profile p{text-align:center;margin:0}.ol-control.ol-progress-bar{background-color:#0000;padding:0;position:absolute;inset:0;pointer-events:none!important}.ol-control.ol-progress-bar>.ol-bar{box-sizing:border-box;background-color:#003c8880;width:0;height:.5em;transition:width .2s;position:absolute;bottom:0;left:0}.ol-progress-bar>.ol-waiting{display:none}.ol-viewport .ol-control.ol-progress-bar>.ol-waiting{color:#fff;font-size:2em;animation:1s linear infinite ol-progress-bar-blink;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes ol-progress-bar-blink{0%,30%{visibility:hidden}to{visibility:visible}}.ol-control.ol-routing{max-height:90%;top:.5em;left:3em;overflow-y:auto}.ol-touch .ol-control.ol-routing{left:3.5em}.ol-control.ol-routing.ol-searching{opacity:.5}.ol-control.ol-routing .ol-car,.ol-control.ol-routing>button{position:relative}.ol-control.ol-routing .ol-car:after,.ol-control.ol-routing>button:after{content:"";clip:rect(0 1em .5em -1em);border-radius:40% 50% 0 0/50% 70% 0 0;width:.78em;height:.6em;position:absolute;top:.35em;left:.4em;box-shadow:inset 0 0 0 .065em,-.35em .14em 0 -.09em,inset 0 -.37em,inset -.14em .005em}.ol-control.ol-routing .ol-car:before,.ol-control.ol-routing>button:before{content:"";border-radius:50%;width:.28em;height:.28em;position:absolute;top:.73em;left:.2em;box-shadow:inset 0 0 0 1em,.65em 0}.ol-control.ol-routing .ol-pedestrian:after{content:"";border-top:.2em solid #0000;width:.3em;height:.4em;position:absolute;top:.25em;left:50%;transform:translate(-50%);box-shadow:inset .3em 0,.1em .5em 0 -.1em,-.1em .5em 0 -.1em,.25em .1em 0 -.1em,-.25em .1em 0 -.1em}.ol-control.ol-routing .ol-pedestrian:before{content:"";background-color:currentColor;border-radius:50%;width:.3em;height:.3em;position:absolute;top:.1em;left:50%;transform:translate(-50%)}.ol-control.ol-routing .content{margin:.5em}.ol-control.ol-routing.ol-collapsed .content,.ol-routing .ol-search.ol-collapsed ul,.ol-routing .ol-search ul .copy{display:none}.ol-routing .content .search-input>div>*{vertical-align:top;display:inline-block}.ol-routing .ol-result ul{list-style:none;display:block}.ol-routing .ol-result li{min-height:1.65em;position:relative}.ol-routing .ol-result li i{font-size:.8em;font-weight:700;display:block}.ol-routing .ol-result li:before{content:"";transform-origin:50% 125%;border:.4em solid #0000;border-top-width:.6em;border-bottom:.6em solid #369;position:absolute;top:-.8em;left:-1.75em;box-shadow:0 .65em 0 -.25em #369}.ol-routing .ol-result li:after{content:"";background:#369;border-radius:.1em;width:.25em;height:.6em;position:absolute;top:.6em;left:-1.5em}.ol-routing .ol-result li.R:before{transform:rotate(90deg)}.ol-routing .ol-result li.FR:before{transform:rotate(45deg)}.ol-routing .ol-result li.L:before{transform:rotate(-90deg)}.ol-routing .ol-result li.FL:before{transform:rotate(-45deg)}.ol-routing .content>i{vertical-align:middle;margin:0 .3em 0 .1em;font-style:normal}.ol-routing .ol-button,.ol-routing .ol-button:focus,.ol-routing .ol-pedestrian,.ol-routing .ol-car{color:#003c88;opacity:.5;vertical-align:middle;cursor:pointer;background-color:#0000;outline:none;width:1.4em;height:1.4em;margin:0 .1em;font-size:1.1em;display:inline-block;position:relative}.ol-routing .ol-constraints{display:block}.ol-routing .ol-button:hover,.ol-routing .ol-button.selected,.ol-routing i.selected{opacity:1;background:0 0}.ol-routing .ol-method{display:block}.ol-control.ol-routing{background-color:#ffffff40}.ol-control.ol-routing:hover{background-color:#ffffffbf}.search-input>div>button:before{content:"±"}.ol-viewport .ol-scale{text-align:center;transform-origin:0 0;background-color:#ffffffbf;bottom:2.5em;left:.5em;transform:scaleX(.8)}.ol-viewport .ol-scale input{text-align:center;background:0 0;border:0;width:8em}.ol-search{top:.5em;left:3em}.ol-touch .ol-search{left:3.5em}.ol-search button{float:left;top:2px;left:2px}.ol-control.ol-search>button:before{content:"";box-sizing:border-box;background-color:#0000;border:.12em solid;border-radius:100%;width:.7em;height:.7em;position:absolute;top:.35em;left:.35em}.ol-control.ol-search>button:after{content:"";background-color:currentColor;border-radius:.05em;width:.45em;height:.15em;position:absolute;top:1.1em;left:.95em;transform:rotate(45deg);box-shadow:-.18em 0 0 -.03em}.ol-search button.ol-revers{float:none;vertical-align:bottom;background-image:none;display:inline-block;position:relative;top:0;left:0}.ol-search.ol-revers button.ol-revers{background-color:#00883c80}.ol-control.ol-search.ol-collapsed button.ol-revers{display:none}.ol-search button.ol-revers:before{content:"";box-sizing:border-box;border:.1em solid;border-radius:50%;width:.55em;height:.55em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-search button.ol-revers:after{content:"";background-color:#0000;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.35em 0,0 .35em,-.35em 0,0 -.35em}.ol-search input{box-sizing:border-box;border:0;height:1.375em;margin:1px 1px 1px 2px;padding-left:.3em;font-size:1.14em;transition:all .1s;display:inline-block}.ol-touch .ol-search input,.ol-touch .ol-search ul{font-size:1.5em}.ol-search.ol-revers>ul,.ol-control.ol-search.ol-collapsed>*{display:none}.ol-control.ol-search.ol-collapsed>button{display:block}.ol-search ul{clear:both;cursor:pointer;z-index:1;background:#fff;max-width:17em;margin:0;padding:0;list-style:none;display:block;overflow-x:hidden}.ol-search ul li{white-space:nowrap;text-overflow:ellipsis;padding:.1em .5em;overflow:hidden}.ol-search ul li.select,.ol-search ul li:hover{color:#fff;background-color:#003c8880}.ol-search ul li img{float:left;max-height:2em}.ol-search li.copy{color:#fff;background:#00000080}.ol-search li.copy a{color:#fff;text-decoration:none}.ol-search.searching:before{content:"";z-index:2;background:red;height:3px;animation:.5s linear infinite alternate ol-pulse;position:absolute;top:1.6em;left:0}@keyframes ol-pulse{0%{left:0;right:95%}50%{left:30%;right:30%}to{left:95%;right:0}}.ol-control.ol-search.IGNF-parcelle{background-color:#ffffffb3;padding-bottom:.2em}.ol-search.IGNF-parcelle input{width:14.5em}.ol-search.IGNF-parcelle input:read-only{opacity:.8;background:#ccc}.ol-search.IGNF-parcelle.ol-collapsed-list>ul.autocomplete{display:none}.ol-search.IGNF-parcelle label{clear:both;display:block}.ol-search.IGNF-parcelle>div input{text-align:right}.ol-search.IGNF-parcelle>div input,.ol-search.IGNF-parcelle>div label{box-sizing:border-box;text-overflow:ellipsis;width:4em;margin:.1em;font-size:1em;display:inline-block;overflow:hidden}.ol-search.IGNF-parcelle>div label{letter-spacing:-.04em}.ol-search.IGNF-parcelle ul.autocomplete-page{text-align:center;width:100%;margin-top:.5em;display:none}.ol-search.IGNF-parcelle.ol-collapsed-list ul.autocomplete-parcelle,.ol-search.IGNF-parcelle.ol-collapsed-list ul.autocomplete-page{display:block}.ol-search.IGNF-parcelle.ol-collapsed ul.autocomplete-page,.ol-search.IGNF-parcelle.ol-collapsed ul.autocomplete-parcelle,.ol-search.IGNF-parcelle ul.autocomplete-parcelle{display:none}.ol-search.IGNF-parcelle ul.autocomplete-page li{color:#fff;background:#003c8880;border-radius:50%;width:1.3em;height:1.3em;margin:0 .1em;padding:.1em;display:inline-block}.ol-search.IGNF-parcelle ul.autocomplete-page li.selected{background:#003c88}.ol-searchgps input.search,.ol-searchcoord input.search{display:none}.ol-control.ol-searchgps>button:first-child,.ol-control.ol-searchcoord>button:first-child{background-image:none}.ol-control.ol-searchgps>button:first-child:before,.ol-control.ol-searchcoord>button:first-child:before{content:"x/y";position:unset;border:unset;border-radius:0;width:auto;height:auto;display:block;transform:scaleX(.8)}.ol-control.ol-searchgps>button:first-child:after,.ol-control.ol-searchcoord>button:first-child:after{content:unset}.ol-control.ol-searchgps .ol-latitude,.ol-control.ol-searchgps .ol-longitude,.ol-control.ol-searchcoord .ol-latitude,.ol-control.ol-searchcoord .ol-longitude{clear:both}.ol-control.ol-searchgps .ol-latitude label,.ol-control.ol-searchgps .ol-longitude label,.ol-control.ol-searchcoord .ol-latitude label,.ol-control.ol-searchcoord .ol-longitude label{text-align:right;transform-origin:0 0;width:5.5em;margin:0 -.8em 0 0;display:inline-block;transform:scaleX(.8)}.ol-control.ol-searchcoord .ol-latitude label,.ol-control.ol-searchcoord .ol-longitude label{width:2em;margin:0}.ol-control.ol-searchgps .ol-latitude input,.ol-control.ol-searchgps .ol-longitude input{max-width:10em}.ol-control.ol-searchgps .ol-ext-toggle-switch{cursor:pointer;float:right;margin:.5em;font-size:.9em}.ol-searchgps .ol-decimal{margin-right:.7em;display:inline-block}.ol-searchgps .ol-dms,.ol-searchgps.ol-dms .ol-decimal{text-align:right;width:3em;display:none}.ol-searchgps.ol-dms .ol-dms{display:inline-block}.ol-searchgps span.ol-dms{text-align:left;width:.5em}.ol-searchgps.ol-control.ol-collapsed button.ol-geoloc,.ol-searchgps.ol-control.ol-collapsed button.ol-centerloc,.ol-searchcoord.ol-control.ol-collapsed button.ol-centerloc,.ol-searchcoord.ol-control.ol-collapsed button.ol-geoloc{display:none}.ol-searchgps button.ol-geoloc,.ol-searchgps button.ol-centerloc,.ol-searchcoord button.ol-centerloc,.ol-searchcoord button.ol-geoloc{float:right;background-image:none;margin-right:3px;position:relative;top:0}.ol-searchgps button.ol-geoloc:before,.ol-searchcoord button.ol-geoloc:before{content:"";border:.1em solid;border-radius:50%;width:.6em;height:.6em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-searchgps button.ol-geoloc:after,.ol-searchcoord button.ol-geoloc:after{content:"";background-color:#0000;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.45em 0,-.45em 0,0 -.45em,0 .45em,.25em 0,-.25em 0,0 -.25em,0 .25em}.ol-searchgps button.ol-centerloc:before,.ol-searchcoord button.ol-centerloc:before{content:"📍";border:0;width:auto;height:auto;padding:0;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-searchgps button.ol-centerloc:after,.ol-searchcoord button.ol-centerloc:after{display:none}.ol-control.ol-select{background-color:#ffffff80;top:.5em;left:3em}.ol-control.ol-select:hover{background-color:#ffffffb3}.ol-touch .ol-control.ol-select{left:3.5em}.ol-control.ol-select>button:before{content:"A";box-sizing:content-box;text-align:center;background-color:#0000;border:.2em solid;border-radius:100%;width:1em;height:1em;font-size:.6em;font-weight:400;line-height:1em;position:absolute;top:.5em;left:.5em}.ol-control.ol-select>button:after{content:"";background-color:currentColor;border-radius:.05em;width:.45em;height:.15em;position:absolute;top:1.15em;left:1em;transform:rotate(45deg);box-shadow:-.18em 0 0 -.03em}.ol-select>div button{float:right;width:auto;height:1.2em;padding:0 .5em;font-weight:400;line-height:1.2em}.ol-select .ol-delete{vertical-align:middle;cursor:pointer;width:1.5em;height:1em;display:inline-block;position:relative}.ol-select .ol-delete:before{content:"×";text-align:center;width:100%;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-select input{font-size:1em}.ol-control.ol-select select{max-width:10em;font-size:1em}.ol-control.ol-select select option.ol-default{color:#999;font-style:italic}.ol-control.ol-select>div{margin:.25em;display:block}.ol-control.ol-select.ol-collapsed>div{display:none}.ol-control.ol-select.ol-select-check{max-width:20em}.ol-control.ol-select label.ol-ext-check{margin-right:1em}.ol-control.ol-select label.ol-ext-toggle-switch span{font-size:1.1em}.ol-select ul{margin:0;padding:0;list-style:none}.ol-control.ol-select input[type=search],.ol-control.ol-select input[type=text]{width:8em}.ol-select .ol-autocomplete{display:inline}.ol-select .ol-autocomplete ul{background:#fff;border:1px solid #999;min-width:10em;font-size:.85em;display:block;position:absolute}.ol-select .ol-autocomplete ul li{padding:0 .5em}.ol-select .ol-autocomplete ul li:hover{color:#fff;background:#003c8880}.ol-select ul.ol-hidden{display:none}.ol-select-multi li>div:hover,.ol-select-multi li>div.ol-control.ol-select{top:unset;left:unset;background:0 0;position:relative}.ol-select-multi li>div>button,.ol-select-multi li>div .ol-ok{display:none}.ol-select-multi li .ol-control.ol-select.ol-collapsed>div,.ol-select-multi li>div>div{display:block}.ol-control.ol-status{color:#fff;box-sizing:border-box;background:#0003;border-radius:0;width:100%;padding:.3em 3em;font-size:.9em;display:none;top:0;left:0;pointer-events:none!important}.ol-control.ol-status.ol-visible{display:initial}.ol-control.ol-status.ol-bottom{top:auto;bottom:0}.ol-control.ol-status.ol-left{width:auto;padding:.3em .5em .3em 3em;top:0;bottom:0}.ol-control.ol-status.ol-right{width:auto;padding:.3em 3em .3em .5em;inset:0 0 0 auto}.ol-control.ol-status.ol-center{top:50%;transform:translateY(-50%)}.ol-control.ol-storymap{background-color:#ffffff80;border-radius:.5em;max-width:35%;height:auto;position:absolute;top:.5em;bottom:.5em;left:.5em}.ol-storymap{height:100%;padding:0;position:relative;overflow:hidden}.ol-storymap>div{scroll-behavior:smooth;-webkit-user-select:none;user-select:none;height:100%;padding:0;position:relative;overflow:hidden}.ol-storymap>div.ol-move{scroll-behavior:unset}.ol-control.ol-storymap .chapter{padding:.5em;position:relative;overflow:hidden}.ol-control.ol-storymap .chapter:last-child{margin-bottom:100%}.ol-storymap .chapter{cursor:pointer;opacity:.4}.ol-storymap .chapter.ol-select{cursor:default;opacity:1;background-color:#fffc}.ol-storymap .ol-scroll-top,.ol-storymap .ol-scroll-next{color:#003c8880;text-align:center;cursor:pointer;min-height:1.7em;position:relative}.ol-storymap .ol-scroll-next span{padding-bottom:1.4em;display:block}.ol-storymap .ol-scroll-top span{padding-top:1.4em;display:block}.ol-storymap .ol-scroll-top:before,.ol-storymap .ol-scroll-next:before{content:"";pointer-events:none;border:.3em solid;border-color:#0000 currentColor currentColor #0000;border-radius:.3em;width:.8em;height:.8em;animation:.35s linear infinite alternate ol-bounce-bottom;display:block;position:absolute;left:50%;transform:translate(-50%)rotate(45deg)}.ol-storymap .ol-scroll-top:before{border-color:currentColor #0000 #0000 currentColor;animation:.35s linear infinite alternate ol-bounce-top}@keyframes ol-bounce-top{0%{top:-.2em}to{top:.5em}}@keyframes ol-bounce-bottom{0%{bottom:-.2em}to{bottom:.5em}}.ol-storymap img[data-title]{cursor:pointer}.ol-storymap.scrollLine,.ol-storymap.scrollBox{background-color:#0000;border-radius:0;max-width:40%;top:0;bottom:0}.ol-storymap.scrollLine .chapter,.ol-storymap.scrollBox .chapter{background-color:#fff;margin:100% 0}.ol-storymap.scrollLine .chapter:first-child,.ol-storymap.scrollBox .chapter:first-child{margin-top:3em}.ol-storymap.scrollLine .chapter.ol-select,.ol-storymap.scrollLine .chapter,.ol-storymap.scrollBox .chapter.ol-select,.ol-storymap.scrollBox .chapter{opacity:1}.ol-storymap.scrollLine .ol-scrolldiv,.ol-storymap.scrollBox .ol-scrolldiv{padding-right:30px}.ol-storymap.scrollLine:before,.ol-storymap.scrollBox:before{content:"";background-color:#fff;width:2px;height:100%;position:absolute;top:0;bottom:0;right:14px}.ol-storymap.scrollLine .ol-scroll,.ol-storymap.scrollBox .ol-scroll{width:1px;padding:0;transition:none;right:15px;overflow:visible;opacity:1!important;display:block!important}.ol-storymap.scrollLine .ol-scroll>div{-webkit-box-shadow:unset;box-shadow:unset;background-color:#0000;left:50%;overflow:visible;transform:translate(-50%)}.ol-storymap.scrollLine .ol-scroll>div:before{content:"";background-color:#0af;border:2px solid #fff;border-radius:50%;width:10px;height:10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-storymap.scrollBox .ol-scroll>div{display:none}.ol-storymap.scrollBox .chapter:after{content:"";box-sizing:border-box;z-index:1;border:5px solid #0000;border-radius:50%;width:20px;height:20px;position:absolute;top:min(30%,5em);right:-24.5px;box-shadow:0 0 0 2px #fff,inset 0 0 0 15px #0af}.ol-swipe{-ms-touch-action:none;touch-action:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-swipe:before{content:"";z-index:-1;background:#fff;width:4px;position:absolute;top:-5000px;bottom:-5000px;left:50%;transform:translate(-2px)}.ol-swipe.horizontal:before{width:auto;height:4px;inset:50% -5000px auto}.ol-swipe,.ol-swipe button{cursor:ew-resize}.ol-swipe.horizontal,.ol-swipe.horizontal button{cursor:ns-resize}.ol-swipe:after,.ol-swipe button:before,.ol-swipe button:after{content:"";background:currentColor;width:2px;position:absolute;top:25%;bottom:25%;left:50%;transform:translate(-1px)}.ol-swipe button:after{transform:translate(4px)}.ol-swipe button:before{transform:translate(-6px)}.ol-control.ol-timeline{background-color:#fff6;transition:all .3s;bottom:0;left:0;right:0}.ol-control.ol-timeline.ol-collapsed{transform:translateY(100%)}.ol-timeline{padding:2px 0 0;overflow:hidden}.ol-timeline .ol-scroll{scroll-behavior:smooth;height:6em;padding:0 50%;line-height:1em;overflow:hidden}.ol-timeline .ol-scroll.ol-move{scroll-behavior:unset}.ol-timeline.ol-hasbutton .ol-scroll{margin-left:1.5em;padding:0 calc(50% - .75em)}.ol-timeline .ol-buttons{z-index:10;background:#ffffff80;width:1.5em;display:none;position:absolute;top:0;bottom:0;left:0}.ol-timeline.ol-hasbutton .ol-buttons{display:block}.ol-timeline .ol-buttons button{margin:1px;font-size:1em;position:relative}.ol-timeline .ol-buttons .ol-zoom-in:before,.ol-timeline .ol-buttons .ol-zoom-out:before{content:"+";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-timeline .ol-buttons .ol-zoom-out:before{content:"−"}.ol-timeline .ol-scroll>div{height:100%;position:relative}.ol-timeline .ol-scroll .ol-times{background:#ffffff80;height:1em;position:absolute;bottom:0;left:-1000px;right:-1000px}.ol-timeline .ol-scroll .ol-time{color:#999;font-size:.7em;position:absolute;bottom:0;transform:translate(-50%)}.ol-timeline .ol-scroll .ol-time.ol-year{color:#666;z-index:1}.ol-timeline .ol-scroll .ol-time:before{content:"";border-left:1px solid;height:500px;position:absolute;bottom:1.2em;left:50%}.ol-timeline .ol-scroll .ol-features{margin:0 0 0 200px;position:absolute;inset:0 -1000px 1em -200px;overflow:hidden}.ol-timeline .ol-scroll .ol-feature{color:#999;cursor:pointer;box-sizing:border-box;background:#fff;border:1px solid #ccc;max-width:3em;min-height:1em;max-height:2.4em;padding:0 .5em 0 0;font-size:.7em;line-height:1.2em;transition:all .3s;position:absolute;top:0;overflow:hidden}.ol-timeline.ol-zoomhover .ol-scroll .ol-feature:hover,.ol-timeline.ol-zoomhover .ol-scroll .ol-feature.ol-select{z-index:1;background:#eee;transform:scale(1.2)}.ol-timeline .ol-center-date{z-index:2;pointer-events:none;opacity:.4;background-color:red;width:2px;height:100%;display:none;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.ol-timeline.ol-hasbutton .ol-center-date{left:calc(50% + .75em)}.ol-timeline.ol-pointer .ol-center-date{display:block}.ol-timeline.ol-pointer .ol-center-date:before,.ol-timeline.ol-pointer .ol-center-date:after{content:"";border:.3em solid #0000;border-width:.3em .25em;position:absolute;left:50%;transform:translate(-50%)}.ol-timeline.ol-pointer .ol-center-date:before{border-top-color:red;top:0}.ol-timeline.ol-pointer .ol-center-date:after{border-bottom-color:red;bottom:0}.ol-timeline.ol-interval .ol-center-date{box-sizing:content-box;opacity:.2;background-color:#0000;border:0 solid #000;border-width:0 10000px;display:block}.ol-control.ol-videorec{white-space:nowrap;top:0;left:50%;transform:translate(-50%)}.ol-control.ol-videorec button{vertical-align:middle;display:inline-block;position:relative}.ol-control.ol-videorec button:before{content:"";background-color:currentColor;width:.8em;height:.8em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-videorec button.ol-start:before{background-color:#c00;border-radius:50%;width:.9em;height:.9em}.ol-control.ol-videorec button.ol-pause:before{background-color:#0000;width:.2em;box-shadow:-.2em 0,.2em 0}.ol-control.ol-videorec button.ol-resume:before{box-sizing:border-box;background:0 0;border:.4em solid #0000;border-left:.6em solid;border-right-width:0;width:auto}.ol-control.ol-videorec button.ol-stop,.ol-control.ol-videorec button.ol-pause,.ol-control.ol-videorec button.ol-resume,.ol-control.ol-videorec[data-state=rec] .ol-start,.ol-control.ol-videorec[data-state=pause] .ol-start{display:none}.ol-control.ol-videorec[data-state=rec] .ol-stop,.ol-control.ol-videorec[data-state=pause] .ol-stop,.ol-control.ol-videorec[data-state=rec] .ol-pause,.ol-control.ol-videorec[data-state=pause] .ol-resume{display:inline-block}.ol-control.ol-wmscapabilities{top:.5em;right:2.5em}.ol-touch .ol-control.ol-wmscapabilities{right:3em}.ol-control.ol-wmscapabilities.ol-hidden{display:none}.ol-control.ol-wmscapabilities button:before{content:"+";position:absolute;top:calc(50% - .35em);left:50%;transform:translate(-50%,-50%)}.ol-control.ol-wmscapabilities button:after{content:"";background:0 0;border:.15em solid #0000;border-width:0 .15em .15em 0;border-radius:.1em 0;width:.75em;height:.75em;position:absolute;top:calc(50% - .05em);left:50%;transform:scaleY(.6)translate(-50%,-50%)rotate(45deg);box-shadow:inset -.18em -.18em,-.4em .1em 0 -.25em,.1em -.35em 0 -.25em,.15em .15em}.ol-wmscapabilities .ol-searching{opacity:.5}.ol-wmscapabilities .ol-searching .ol-url:after{content:"";background-color:currentColor;border-radius:50%;width:.7em;height:.7em;animation:2s linear infinite ol-wmscapabilities-rotate;display:block;position:absolute;top:6em;left:calc(50% - .35em);box-shadow:0 1em,0 -1em,1em 0,-1em 0}@keyframes ol-wmscapabilities-rotate{to{transform:rotate(360deg)}}.ol-wmscapabilities .ol-url input{box-sizing:border-box;width:calc(100% - 10em);min-width:min(100%,20em)}.ol-wmscapabilities .ol-url select{width:2em;height:100%;padding:1px}.ol-wmscapabilities .ol-url button{width:7.5em;margin-left:.5em}.ol-wmscapabilities .ol-result{margin-top:.5em;display:none}.ol-wmscapabilities .ol-result.ol-visible{display:block}.ol-wmscapabilities .ol-select-list{box-sizing:border-box;border:1px solid #369;border-radius:0;width:calc(100% - 120px);max-height:14.5em;font-size:1em;position:relative;overflow-x:hidden}.ol-wmscapabilities .ol-select-list option{cursor:pointer;box-sizing:border-box;text-overflow:ellipsis;width:100%;padding:.1em .5em 0;overflow:hidden}.ol-wmscapabilities .ol-select-list .level-1{padding-left:1em}.ol-wmscapabilities .ol-select-list .level-2{padding-left:1.5em}.ol-wmscapabilities .ol-select-list .level-3{padding-left:2em}.ol-wmscapabilities .ol-select-list .level-4{padding-left:2.5em}.ol-wmscapabilities .ol-select-list .level-5{padding-left:3em}.ol-wmscapabilities .ol-select-list .ol-info{font-style:italic}.ol-wmscapabilities .ol-select-list .ol-title{background-color:#003c881a}.ol-wmscapabilities .ol-select-list option:hover{color:#fff;background-color:#003c8880}.ol-wmscapabilities .ol-select-list .selected{color:#fff;background-color:#003c88b3}.ol-wmscapabilities .ol-preview{float:right;color:#666;text-align:center;background:#003c881a;width:100px;margin-left:10px;padding:0 5px 5px}.ol-wmscapabilities .ol-preview.tainted{float:right;color:#666;text-align:center;background:#88003c1a;width:100px;margin-left:10px;padding:0 5px 5px}.ol-wmscapabilities .ol-preview img{background:#fff;width:100%;display:block}.ol-wmscapabilities .ol-legend{max-width:100%;display:none}.ol-wmscapabilities .ol-legend.visible{display:block}.ol-wmscapabilities .ol-buttons{clear:both;text-align:right}.ol-wmscapabilities .ol-data p{margin:0}.ol-wmscapabilities .ol-data p.ol-title{margin:1em 0 .5em;font-weight:700}.ol-wmscapabilities .ol-error{color:#800}.ol-wmscapabilities ul.ol-wmsform{padding:0;list-style:none;display:none}.ol-wmscapabilities ul.ol-wmsform.visible{display:block}.ol-wmscapabilities .ol-wmsform label{text-align:right;width:calc(40% - .5em);margin-right:.5em;display:inline-block}.ol-wmscapabilities .ol-wmsform input{box-sizing:border-box;width:60%;display:inline-block}.ol-wmscapabilities .ol-wmsform input[type=checkbox]{width:auto}.ol-wmscapabilities .ol-wmsform button{float:right;margin:1em 0}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] input{width:calc(60% - 2em)}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button{vertical-align:middle;color:#444;width:2em;height:1.6em;margin:0;position:relative}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:before,.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:after{content:"";border:.1em solid;width:.25em;height:.9em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)skewY(-15deg)}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:after{transform:translate(.4em)translate(-50%,-50%)skewY(15deg);box-shadow:-.8em .25em}.ol-ext-dialog.ol-wmscapabilities form{width:600px;min-height:15em;top:15%;transform:translate(-50%,-15%)}.ol-ext-dialog.ol-wmscapabilities .ol-content{max-height:calc(100vh - 6em)}.ol-ext-dialog.ol-wmtscapabilities [data-param=map],.ol-ext-dialog [data-param=style]{display:none}.ol-ext-dialog.ol-wmtscapabilities [data-param=style]{display:list-item}.ol-ext-dialog.ol-wmtscapabilities [data-param=proj],.ol-ext-dialog.ol-wmtscapabilities [data-param=version]{opacity:.6;pointer-events:none}.ol-ext-dialog.ol-wmscapabilities button.ol-wmsform{text-align:center;width:1.8em}.ol-ext-dialog.ol-wmscapabilities button.ol-wmsform:before{content:"+"}.ol-ext-dialog.ol-wmscapabilities .ol-form button.ol-wmsform:before{content:"-"}.ol-ext-dialog.ol-wmscapabilities .ol-form button.ol-load,.ol-ext-dialog.ol-wmscapabilities .ol-form .ol-legend{display:none}.ol-ext-dialog.ol-wmscapabilities .ol-form ul.ol-wmsform{clear:both;display:block}.ol-target-overlay .ol-target{border:1px solid #0000;width:0;height:20px;display:block;box-shadow:0 0 1px 1px #fff}.ol-target-overlay .ol-target:after,.ol-target-overlay .ol-target:before{content:"";border:1px solid #369;width:20px;height:0;display:block;position:absolute;top:10px;left:-10px;box-shadow:0 0 1px 1px #fff}.ol-target-overlay .ol-target:after{-webkit-box-shadow:none;box-shadow:none;width:0;height:20px;top:0;left:0}.ol-overlaycontainer .ol-touch-cursor{cursor:pointer;background:#fff6;border-radius:50%;width:56px;height:56px;margin:6px;box-shadow:inset 0 0 0 5px #369}.ol-overlaycontainer .ol-touch-cursor:after{content:"";transform-origin:100% 100%;background:radial-gradient(circle at 100% 100%,#0000,#0000 70%,#369 70%,#369);width:50%;height:50%;position:absolute;top:0;left:0}.ol-overlaycontainer .ol-touch-cursor-center{margin-top:16px;margin-left:-28px}.ol-overlaycontainer .ol-touch-cursor-center:after{transform:rotate(45deg)}.ol-overlaycontainer .ol-touch-cursor-right{margin-left:-62px}.ol-overlaycontainer .ol-touch-cursor-right:after{transform:rotate(90deg)}.ol-overlaycontainer .ol-touch-cursor .ol-button{color:#369;cursor:pointer;background:#fff6;border-radius:50%;width:55%;height:55%;transition:all .5s,opacity,background;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)scale(0);box-shadow:inset 0 0 0 3px}.ol-overlaycontainer .ol-touch-cursor.active.disable .ol-button{opacity:.8;background:#3693}.ol-overlaycontainer .ol-touch-cursor.active .ol-button{transform:translate(-50%,-50%)scale(1)}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-0{top:-18%;left:118%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-1{top:50%;left:140%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-2{top:120%;left:120%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-3{top:140%;left:50%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-4{top:118%;left:-18%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-5{top:50%;left:-40%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-6{top:-18%;left:-18%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-7{top:-40%;left:50%}.ol-overlaycontainer .ol-touch-cursor .ol-button:before{content:"";text-align:center;width:1.5em;height:1em;line-height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-add:before,.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-remove:before{content:"−";font-size:1.375em;font-weight:700;line-height:.95em}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-add:before{content:"+"}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-x:before{content:"×";font-size:1.2em;font-weight:700}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-move:before{content:"✥";font-size:1.2em}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-check:before{content:"✓";font-weight:700}.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-x,.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-remove,.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-check{opacity:.8;background:#3693}.ol-overlaycontainer .ol-touch-cursor .ol-button>div{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlaycontainer .ol-touch-cursor .ol-button-type:before{content:"⇎";font-weight:700}.mapboxgl-canvas:focus{outline:none}.ol-perspective-map{width:200%;height:200%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-perspective-map .ol-layer{z-index:-1!important}.ol-perspective-map .ol-layers{transform:translateY(0)perspective(200px)rotateX(0)scaleY(1)}.ol-perspective-map .ol-overlaycontainer,.ol-perspective-map .ol-overlaycontainer-stopevent{top:50%;left:50%;transform:translate(-50%,-50%);width:50%!important;height:50%!important}.ol-overlay-container .ol-magnify{z-index:0;background:#00000080;border:3px solid #369;border-radius:50%;width:150px;height:150px;position:relative;overflow:hidden;box-shadow:5px 5px 5px #00000080}.ol-overlay-container .ol-magnify:before{content:"";z-index:1;border-radius:50%;width:100%;height:100%;display:block;position:absolute;top:0;left:0;box-shadow:inset 0 0 40px 2px #00000040}.ol-overlay-container .ol-magnify:after{content:"";z-index:1;border-radius:50%;width:20%;height:0;display:block;position:absolute;top:20%;left:23%;transform:rotate(-40deg);box-shadow:0 0 20px 7px #fff}.ol-popup.anim{visibility:hidden}.ol-popup.anim.visible{visibility:visible}.ol-popup.anim.visible>div{visibility:visible;animation:.4s ol-popup_bounce;transform:none}@keyframes ol-popup_bounce{0%{transform:scale(0)}50%{transform:scale(1.1)}80%{transform:scale(.95)}to{transform:scale(1)}}.ol-popup.anim.ol-popup-bottom.ol-popup-left>div{transform-origin:0 100%}.ol-popup.anim.ol-popup-bottom.ol-popup-right>div{transform-origin:100% 100%}.ol-popup.anim.ol-popup-bottom.ol-popup-center>div{transform-origin:50% 100%}.ol-popup.anim.ol-popup-top.ol-popup-left>div{transform-origin:0 0}.ol-popup.anim.ol-popup-top.ol-popup-right>div{transform-origin:100% 0}.ol-popup.anim.ol-popup-top.ol-popup-center>div{transform-origin:50% 0}.ol-popup.anim.ol-popup-middle.ol-popup-left>div{transform-origin:0}.ol-popup.anim.ol-popup-middle.ol-popup-right>div{transform-origin:100%}.ol-popup{-webkit-user-select:none;user-select:none;font-size:.9em}.ol-popup .ol-popup-content{cursor:default;padding:.25em .5em;overflow:hidden}.ol-popup.hasclosebox .ol-popup-content{margin-right:1.7em}.ol-popup .ol-popup-content:after{clear:both;content:"";height:0;font-size:0;display:block}.ol-popup .anchor{pointer-events:none;background:red;width:0;height:0;margin:-11px 22px;display:block;position:absolute}.ol-popup .anchor:after,.ol-popup .anchor:before{position:absolute}.ol-popup-right .anchor:after,.ol-popup-right .anchor:before{right:0}.ol-popup-top .anchor{top:0}.ol-popup-bottom .anchor{bottom:0}.ol-popup-right .anchor{right:0}.ol-popup-left .anchor{left:0}.ol-popup-center .anchor{left:50%;margin-left:0!important}.ol-popup-middle .anchor{top:50%;margin-top:0!important}.ol-popup-center.ol-popup-middle .anchor{display:none}.ol-popup.ol-fixed{margin:0!important;inset:.5em .5em auto auto!important;transform:none!important}.ol-popup.ol-fixed .anchor{display:none}.ol-popup.ol-fixed.anim>div{animation:none}.ol-popup .ol-fix{float:right;cursor:pointer;background:#fff;width:1em;height:.9em;margin:.2em;position:relative}.ol-popup .ol-fix:before{content:"";box-sizing:border-box;border:.1em solid #666;border-right-width:.3em;width:.8em;height:.7em;margin:.1em;display:block}.ol-popup.shadow{box-shadow:2px 2px 2px 2px #00000080}.ol-popup .closeBox{color:#fff;cursor:pointer;float:right;background-color:#003c8880;border:0;border-radius:2px;width:1.4em;height:1.4em;margin:5px 5px 0 0;padding:0;font-size:.9em;font-weight:700;display:none;position:relative}.ol-popup.hasclosebox .closeBox{display:block}.ol-popup .closeBox:hover{background-color:#003c88b3}.ol-popup .closeBox:after{content:"×";text-align:center;width:100%;margin:-.5em 0;font-size:1.5em;line-height:1em;position:absolute;top:50%;left:0;right:0}.ol-popup.modifytouch{background-color:#eee}.ol-popup.modifytouch .ol-popup-content{white-space:nowrap;padding:0 .25em;font-size:.85em}.ol-popup.modifytouch .ol-popup-content a{text-decoration:none}.ol-popup.tooltips{background-color:#ffa}.ol-popup.tooltips .ol-popup-content{white-space:nowrap;padding:0 .25em;font-size:.85em}.ol-popup.default>div{background-color:#fff;border:1px solid #69f;border-radius:5px}.ol-popup.default{margin:-11px 0;transform:translateY(-22px)}.ol-popup-top.ol-popup.default{margin:11px 0;transform:none}.ol-popup-left.default{margin:-11px -22px;transform:translateY(-22px)}.ol-popup-top.ol-popup-left.default{margin:11px -22px;transform:none}.ol-popup-right.default{margin:-11px 22px;transform:translate(44px,-22px)}.ol-popup-top.ol-popup-right.default{margin:11px 22px;transform:translate(44px)}.ol-popup-middle.default{margin:0 10px;transform:none}.ol-popup-middle.ol-popup-right.default{margin:0 -10px;transform:translate(-20px)}.ol-popup.default .anchor{color:#69f}.ol-popup.default .anchor:after,.ol-popup.default .anchor:before{content:"";border:11px solid;border-color:currentColor #0000;margin:0 -11px}.ol-popup.default .anchor:after{border-width:11px;border-color:#fff #0000;margin:2px -11px}.ol-popup-top.default .anchor:before,.ol-popup-top.default .anchor:after{border-top:0;top:0}.ol-popup-bottom.default .anchor:before,.ol-popup-bottom.default .anchor:after{border-bottom:0;bottom:0}.ol-popup-middle.default .anchor:before{border-color:#0000 currentColor;margin:-11px -33px}.ol-popup-middle.default .anchor:after{border-color:#0000 #fff;margin:-11px -31px}.ol-popup-middle.ol-popup-left.default .anchor:before,.ol-popup-middle.ol-popup-left.default .anchor:after{border-left:0}.ol-popup-middle.ol-popup-right.default .anchor:before,.ol-popup-middle.ol-popup-right.default .anchor:after{border-right:0}.ol-popup.placemark{color:#c00;margin:-.65em 0;transform:translateY(-1.3em)}.ol-popup.placemark>div{width:2em;height:2em;min-width:unset;box-sizing:border-box;background-color:#fff;border:0;border-radius:50%;font-size:15px;position:relative;box-shadow:inset 0 0 0 .45em}.ol-popup.placemark .ol-popup-content{cursor:default;text-align:center;width:1em;height:1em;padding:.25em 0;line-height:1em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-popup.placemark .anchor{margin:0}.ol-popup.placemark .anchor:before{content:"";background:0 0;border-radius:50%;width:1em;height:.5em;margin:-.5em;box-shadow:0 1em .5em #00000080}.ol-popup.placemark .anchor:after{content:"";border:.7em solid #0000;border-top:1em solid;border-bottom:0 solid;margin:-.75em -.7em;bottom:0}.ol-popup.placemark.shield>div{border-radius:.2em}.ol-popup.placemark.shield .anchor:after{border-width:.8em 1em 0;margin:-.7em -1em}.ol-popup.placemark.blazon>div{border-radius:.2em}.ol-popup.placemark.pushpin{margin:-2.2em 0;transform:translateY(-4em)}.ol-popup.placemark.pushpin>div{border-radius:0;width:1.1em;box-shadow:inset 2em 0;background:0 0!important}.ol-popup.placemark.pushpin>div:before{content:"";pointer-events:none;border:.5em solid #0000;border-top:.3em solid;border-bottom-color:currentColor;width:1.3em;height:1.5em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-popup.placemark.needle{margin:-2em 0;transform:translateY(-4em)}.ol-popup.placemark.pushpin .anchor,.ol-popup.placemark.needle .anchor{margin:-1.2em}.ol-popup.placemark.pushpin .anchor:after,.ol-popup.placemark.needle .anchor:after{border-style:solid;border-width:2em .15em 0;width:.1em;margin:-.55em -.2em}.ol-popup.placemark.pushpin .anchor:before,.ol-popup.placemark.needle .anchor:before{margin:-.75em -.5em}.ol-popup.placemark.flagv{margin:-2em 1em;transform:translateY(-4em)}.ol-popup.placemark.flagv>div{-webkit-box-shadow:none;box-shadow:none;background-color:#0000;border-radius:0}.ol-popup.placemark.flagv>div:before{content:"";pointer-events:none;border:1em solid #0000;border-left:2em solid;position:absolute}.ol-popup.placemark.flagv .anchor{margin:-1.4em}.ol-popup.placemark.flag{margin:-2em 1em;transform:translateY(-4em)}.ol-popup.placemark.flag>div{border-radius:0;transform-origin:0 150%!important}.ol-popup.placemark.flag .anchor{margin:-1.4em}.ol-popup.placemark.flagv .anchor:after,.ol-popup.placemark.flag .anchor:after{border-style:solid;border-width:2em .15em 0;width:.1em;margin:-.55em -1em}.ol-popup.placemark.flagv .anchor:before,.ol-popup.placemark.flag .anchor:before{margin:-.75em -1.25em}.ol-popup.placemark.flag.finish{margin:-2em 1em}.ol-popup.placemark.flag.finish>div{background-image:linear-gradient(45deg,currentColor 25%,#0000 25% 75%,currentColor 75%,currentColor),linear-gradient(45deg,currentColor 25%,#0000 25% 75%,currentColor 75%,currentColor);background-position:.5em 0,0 .5em;background-size:1em 1em;box-shadow:inset 0 0 0 .25em}.ol-popup.black .closeBox{color:#f80;background-color:#00000080;border-radius:5px}.ol-popup.black .closeBox:hover{color:#da2;background-color:#000000b3}.ol-popup.black{margin:-20px 0;transform:translateY(-40px)}.ol-popup.black>div{color:#fff;background-color:#0009;border-radius:5px}.ol-popup-top.ol-popup.black{margin:20px 0;transform:none}.ol-popup-left.black{margin:-20px -22px;transform:translateY(-40px)}.ol-popup-top.ol-popup-left.black{margin:20px -22px;transform:none}.ol-popup-right.black{margin:-20px 22px;transform:translate(44px,-40px)}.ol-popup-top.ol-popup-right.black{margin:20px 22px;transform:translate(44px)}.ol-popup-middle.black{margin:0 11px;transform:none}.ol-popup-left.ol-popup-middle.black{transform:none}.ol-popup-right.ol-popup-middle.black{margin:0 -11px;transform:translate(-22px)}.ol-popup.black .anchor{color:#0009;margin:-20px 11px}.ol-popup.black .anchor:before{content:"";border:20px solid;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.black .anchor:before{border-top:0;top:0}.ol-popup-bottom.black .anchor:before{border-bottom:0;bottom:0}.ol-popup-middle.black .anchor:before{border-color:#0000 currentColor;margin:-20px -22px}.ol-popup-middle.ol-popup-left.black .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.black .anchor:before{border-right:0}.ol-popup-center.black .anchor:before{margin:0 -10px}.ol-popup.tips .closeBox{color:#fff;background-color:red;border-radius:50%;width:1.2em;height:1.2em}.ol-popup.tips .closeBox:hover{background-color:#f40}.ol-popup.tips{margin:-20px 0;transform:translateY(-40px)}.ol-popup.tips>div{color:#333;background-color:#cea;border:5px solid #ad7;border-radius:5px}.ol-popup-top.ol-popup.tips{margin:20px 0;transform:none}.ol-popup-left.tips{margin:-20px -22px;transform:translateY(-40px)}.ol-popup-top.ol-popup-left.tips{margin:20px -22px;transform:none}.ol-popup-right.tips{margin:-20px 22px;transform:translate(44px,-40px)}.ol-popup-top.ol-popup-right.tips{margin:20px 22px;transform:translate(44px)}.ol-popup-middle.tips{margin:0;transform:none}.ol-popup-left.ol-popup-middle.tips{margin:0 22px;transform:none}.ol-popup-right.ol-popup-middle.tips{margin:0 -22px;transform:translate(-44px)}.ol-popup.tips .anchor{color:#ad7;margin:-18px 22px}.ol-popup.tips .anchor:before{content:"";border:20px solid;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.tips .anchor:before{border-top:0;top:0}.ol-popup-bottom.tips .anchor:before{border-bottom:0;bottom:0}.ol-popup-center.tips .anchor:before{border-width:20px 6px;margin:0 -6px}.ol-popup-left.tips .anchor:before{border-left:0;margin-left:0}.ol-popup-right.tips .anchor:before{border-right:0;margin-right:0}.ol-popup-middle.tips .anchor:before{border-width:6px 20px;border-color:#0000 currentColor;margin:-6px -41px}.ol-popup-middle.ol-popup-left.tips .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.tips .anchor:before{border-right:0}.ol-popup.warning .closeBox{color:#fff;background-color:red;border-radius:50%;font-size:.83em}.ol-popup.warning .closeBox:hover{background-color:#f40}.ol-popup.warning{color:#900;background-color:#fd0;border:4px dashed red;border-radius:3px;margin:-28px 10px;transform:translateY(-56px)}.ol-popup-top.ol-popup.warning{margin:28px 10px;transform:none}.ol-popup-left.warning{margin:-28px -22px;transform:translateY(-56px)}.ol-popup-top.ol-popup-left.warning{margin:28px -22px;transform:none}.ol-popup-right.warning{margin:-28px 22px;transform:translate(44px,-56px)}.ol-popup-top.ol-popup-right.warning{margin:28px 22px;transform:translate(44px)}.ol-popup-middle.warning{margin:0;transform:none}.ol-popup-left.ol-popup-middle.warning{margin:0 22px;transform:none}.ol-popup-right.ol-popup-middle.warning{margin:0 -22px;transform:translate(-44px)}.ol-popup.warning .anchor{margin:-33px 7px}.ol-popup.warning .anchor:before{content:"";border:30px solid red;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.warning .anchor:before{border-top:0;top:0}.ol-popup-bottom.warning .anchor:before{border-bottom:0;bottom:0}.ol-popup-center.warning .anchor:before{margin:0 -21px}.ol-popup-middle.warning .anchor:before{border-width:10px 22px;border-color:#0000 red;margin:-10px -33px}.ol-popup-middle.ol-popup-left.warning .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.warning .anchor:before{border-right:0}.ol-popup .ol-popupfeature table{width:100%}.ol-popup .ol-popupfeature table td{text-overflow:ellipsis;max-width:25em;overflow:hidden}.ol-popup .ol-popupfeature table td img{max-width:100px;max-height:100px}.ol-popup .ol-popupfeature tr:nth-child(odd){background-color:#eee}.ol-popup .ol-popupfeature .ol-zoombt{color:#003c8880;background:0 0;border:0;outline:none;width:2em;height:2em;display:inline-block;position:relative}.ol-popup .ol-popupfeature .ol-zoombt:before{content:"";box-sizing:border-box;background-color:#0000;border:.17em solid;border-radius:100%;width:1em;height:1em;position:absolute;top:.3em;left:.3em}.ol-popup .ol-popupfeature .ol-zoombt:after{content:"";box-sizing:border-box;border-style:solid;border-width:.1em .3em;border-radius:.03em;position:absolute;top:1.35em;left:1.15em;transform:rotate(45deg);box-shadow:-.2em 0 0 -.04em}.ol-popup .ol-popupfeature .ol-count{float:right;margin:.25em 0}.ol-popup .ol-popupfeature .ol-prev,.ol-popup .ol-popupfeature .ol-next{vertical-align:bottom;cursor:pointer;border:.5em solid #0000;border-left-color:#003c8880;border-right:0 solid #003c8880;margin:0 .5em;display:inline-block}.ol-popup .ol-popupfeature .ol-prev{border-width:.5em .5em .5em 0}.ol-popup.tooltips.black{background-color:#0000}.ol-popup.tooltips.black>div{background-color:#00000080;padding:.2em .5em;transform:scaleY(1.3)}.ol-popup-middle.tooltips.black .anchor:before{border-width:5px 10px;margin:-5px -21px}.ol-popup-center.ol-popup-middle,.ol-popup-top.ol-popup-left.ol-fixPopup,.ol-popup-top.ol-popup-right.ol-fixPopup,.ol-popup.ol-fixPopup{margin:0}.ol-miniscroll{position:relative}.ol-miniscroll:hover .ol-scroll{opacity:.5;transition:opacity 1s}.ol-miniscroll .ol-scroll{-ms-touch-action:none;touch-action:none;opacity:0;z-index:1;border-radius:9px;width:9px;height:auto;max-height:100%;transition:opacity 1s .5s;position:absolute;right:0;overflow:hidden}.ol-miniscroll .ol-scroll>div{-ms-touch-action:none;touch-action:none;box-sizing:border-box;cursor:pointer;border:2px solid #0000;border-radius:9px/12px;width:9px;height:9px;position:absolute;top:0;right:0;box-shadow:inset 10px 0}.ol-miniscroll .ol-scroll.ol-100pc{opacity:0}.ol-viewport canvas.ol-fixedoverlay{width:100%;height:100%;position:absolute;top:0;left:0}.ol-ext-toggle-switch{cursor:pointer;position:relative}.ol-ext-toggle-switch input[type=radio],.ol-ext-toggle-switch input[type=checkbox]{opacity:0;width:0;height:0;margin:0;padding:0;display:inline-block}.ol-ext-toggle-switch span{color:#003c8880;cursor:pointer;vertical-align:middle;background-color:#ccc;border-radius:1em;width:1.6em;height:1em;margin:-.15em .2em .15em;font-size:1.3em;transition:all .4s,background-color,border-color,box-shadow;display:inline-block;position:relative}.ol-ext-toggle-switch span:before{content:"";box-sizing:border-box;background-color:#fff;border:2px solid #ccc;border-radius:1em;width:1em;height:1em;transition:all .4s;display:block;position:absolute;top:50%;left:0;transform:translateY(-50%)}.ol-ext-toggle-switch:hover span{background-color:#999}.ol-ext-toggle-switch:hover span:before{border-color:#999}.ol-ext-toggle-switch input:checked+span{background-color:currentColor}.ol-ext-toggle-switch input:checked+span:before{border-color:currentColor;transform:translate(.6em,-50%)}.ol-ext-check{display:inline-block;position:relative}.ol-ext-check input{opacity:0;cursor:pointer;width:0;height:0;margin:0;padding:0;display:inline-block;position:absolute}.ol-ext-check span{color:#003c8880;vertical-align:middle;background-color:#ccc;width:1em;height:1em;margin:-.1em .5em .1em;display:inline-block;position:relative}.ol-ext-check:hover span{background-color:#999}.ol-ext-checkbox input:checked~span{background-color:currentColor}.ol-ext-checkbox input:checked~span:before{content:"";width:.5em;height:.8em;position:absolute;top:50%;left:50%;transform:translateY(-.1em)translate(-50%,-50%)rotate(45deg);box-shadow:inset -.2em -.2em #fff}.ol-ext-radio span{border-radius:50%;width:1.1em;height:1.1em}.ol-ext-radio:hover input:checked~span{background-color:#ccc}.ol-ext-radio input:checked~span:before{content:"";background-color:currentColor;border-radius:50%;width:50%;height:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-ext-toggle-switch input:focus-visible+span,.ol-ext-check input:focus-visible+span{box-shadow:inset 0 0 0 1px #fff,0 0 0 1.8px #000c}.ol-collection-list{margin:0;padding:0;list-style:none}.ol-collection-list li{padding:0 2em 0 1em;position:relative}.ol-collection-list li:hover{background-color:#003c8833}.ol-collection-list li.ol-select{color:#fff;background-color:#003c8880}.ol-collection-list li .ol-order{-ms-touch-action:none;touch-action:none;cursor:n-resize;-webkit-user-select:none;user-select:none;width:2em;height:100%;position:absolute;top:50%;right:0;transform:translateY(-50%)}.ol-collection-list li .ol-order:before{content:"";background-color:currentColor;border-radius:2px;width:18px;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 5px,0 -5px}.ol-collection-list li>input.ol-input-focus{opacity:0;z-index:-1;width:0;height:0;position:absolute}.ol-collection-list li:has(>input.ol-input-focus:focus){outline:2px solid #369}.ol-ext-colorpicker.ol-popup{background-color:#0000;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 -1px,5px 4px;background-size:10px 10px;width:2em;height:1.5em}.ol-ext-colorpicker .ol-tabbar{background-color:#eee;border-bottom:1px solid #999;display:none}.ol-ext-colorpicker.ol-tab .ol-tabbar{display:block}.ol-ext-colorpicker .ol-tabbar>div{cursor:pointer;background-color:#fff;border:1px solid #999;border-radius:2px 2px 0 0;padding:0 .5em;display:inline-block;position:relative;top:1px}.ol-ext-colorpicker .ol-tabbar>div:first-child{border-bottom-color:#fff}.ol-ext-colorpicker.ol-picker-tab .ol-tabbar>div:first-child{border-bottom-color:#999}.ol-ext-colorpicker.ol-picker-tab .ol-tabbar>div:nth-child(2){border-bottom-color:#fff}.ol-ext-colorpicker.ol-popup.ol-tab .ol-popup{width:180px}.ol-ext-colorpicker.ol-tab .ol-palette{margin:0 10px}.ol-ext-colorpicker.ol-tab .ol-container{display:none}.ol-ext-colorpicker.ol-tab.ol-picker-tab .ol-container{display:block}.ol-ext-colorpicker.ol-tab.ol-picker-tab .ol-palette{display:none}.ol-ext-colorpicker.ol-popup .ol-popup{width:340px}.ol-ext-colorpicker.ol-popup .ol-vignet{content:"";pointer-events:none;background-color:currentColor;border:0;width:100%;height:100%;position:absolute;top:0;left:0}.ol-ext-colorpicker .ol-container{vertical-align:top;display:inline-block;position:relative}.ol-ext-colorpicker .ol-cursor{pointer-events:none}.ol-ext-colorpicker .ol-picker{cursor:crosshair;background-color:currentColor;background-image:-webkit-gradient(linear, left top, left bottom, from(0), color-stop(#000), to(transparent)), -webkit-gradient(linear, left top, right top, from(#fff), to(transparent));background-image:linear-gradient(#0000,#000),linear-gradient(90deg,#fff,#0000);border:5px solid #fff;width:150px;height:150px;position:relative}.ol-ext-colorpicker .ol-picker .ol-cursor{border:1px solid #000000b3;border-radius:50%;width:10px;height:10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #ffffffb3}.ol-ext-colorpicker .ol-slider{cursor:crosshair;background-color:#fff;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 -1px,5px 4px;background-size:10px 10px;border:0 solid #fff;border-width:0 5px;width:150px;height:10px;margin:5px 0 10px;position:relative}.ol-ext-colorpicker .ol-slider>div{pointer-events:none;background-image:linear-gradient(45deg,#0000,#fff);width:100%;height:100%}.ol-ext-colorpicker .ol-slider .ol-cursor{background:0 0;border:1px solid #000;width:4px;height:12px;position:absolute;top:50%;left:0;transform:translate(-50%,-50%)}.ol-ext-colorpicker .ol-tint{cursor:crosshair;box-sizing:border-box;background-image:-webkit-gradient(linear, left top, left bottom, from(0), color-stop(red), color-stop(#f0f), color-stop(#00f), color-stop(#0ff), color-stop(#0f0), color-stop(#ff0), to(red));background-image:linear-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red);border:5px solid #fff;border-width:5px 0;width:10px;height:150px;position:absolute;top:0;right:5px}.ol-ext-colorpicker .ol-tint .ol-cursor{border:1px solid #000;width:12px;height:4px;position:absolute;top:0;left:50%;transform:translate(-50%,-50%)}.ol-ext-colorpicker .ol-clear{border:2px solid #999;width:10px;height:10px;position:absolute;top:163px;right:4px}.ol-ext-colorpicker .ol-clear:before,.ol-ext-colorpicker .ol-clear:after{content:"";background-color:#999;width:15px;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-ext-colorpicker .ol-clear:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-ext-colorpicker.ol-nopacity .ol-slider,.ol-ext-colorpicker.ol-nopacity .ol-clear,.ol-ext-colorpicker.ol-nopacity .ol-alpha{display:none}.ol-ext-colorpicker .ol-rgb{width:170px;padding:5px;display:none;position:relative}.ol-ext-colorpicker .ol-rgb input{box-sizing:border-box;border:1px solid #999;border-radius:2px;width:25%;padding:0 0 0 2px;font-size:13px}.ol-ext-colorpicker .ol-rgb input:first-child{background-color:#ff00001a}.ol-ext-colorpicker .ol-rgb input:nth-child(2){background-color:#00ff001a}.ol-ext-colorpicker .ol-rgb input:nth-child(3){background-color:#0000ff1f}.ol-ext-colorpicker button,.ol-ext-colorpicker .ol-txt-color{text-align:center;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:170px;margin:0 5px 5px;padding:0;font-size:13px;display:block}.ol-ext-colorpicker .ol-txtcolor{width:170px;margin:0 5px}.ol-ext-colorpicker .ol-txtcolor input.ol-txt-color{width:100%;margin:0}.ol-ext-colorpicker.eyedropper .ol-txtcolor input.ol-txt-color{width:calc(100% - 2em);height:2em;margin:0;display:inline-block}.ol-ext-colorpicker button{background-color:#eee}.ol-ext-colorpicker button:hover{background-color:#e9e9e9}.ol-ext-colorpicker button.ol-eyedropper{vertical-align:middle;width:2em;height:2em;margin:0;display:inline-block;position:relative}.ol-ext-colorpicker button.ol-eyedropper:before{content:"";background-color:#999;width:100%;height:100%;position:absolute;top:0;left:0;-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20width='24'%20height='24'%3e%3cpath%20d='m18.203%203.676%202.121%202.121a1%201%200%200%201%200%201.414l-2.828%202.829%201.767%201.768-1.414%201.414-1.414-1.414L7.243%2021H3v-4.243l9.192-9.192-1.414-1.414%201.414-1.414%201.768%201.767%202.829-2.828a1%201%200%200%201%201.414%200Zm-4.596%205.303-8.564%208.564%201.414%201.414%208.564-8.564-1.414-1.414Z'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20width='24'%20height='24'%3e%3cpath%20d='m18.203%203.676%202.121%202.121a1%201%200%200%201%200%201.414l-2.828%202.829%201.767%201.768-1.414%201.414-1.414-1.414L7.243%2021H3v-4.243l9.192-9.192-1.414-1.414%201.414-1.414%201.768%201.767%202.829-2.828a1%201%200%200%201%201.414%200Zm-4.596%205.303-8.564%208.564%201.414%201.414%208.564-8.564-1.414-1.414Z'/%3e%3c/svg%3e");-webkit-mask-size:100% 100%;mask-size:100% 100%}.ol-ext-colorpicker .ol-txt-color.ol-error{background-color:#f003}.ol-ext-colorpicker .ol-palette{width:152px;padding:2px;display:inline-block}.ol-ext-colorpicker .ol-palette>div{cursor:pointer;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 0,5px 5px;background-size:10px 10px;border-radius:1px;width:15px;height:15px;margin:2px;display:inline-block;position:relative;box-shadow:0 0 2px #666}.ol-ext-colorpicker .ol-palette>div:before{content:"";background-color:currentColor;width:100%;height:100%;position:absolute}.ol-ext-colorpicker .ol-palette>div.ol-select:after{content:"";width:6px;height:12px;position:absolute;top:30%;left:50%;transform:translate(-50%,-50%)rotate(45deg);box-shadow:1px 1px #fff,2px 2px #000}.ol-ext-colorpicker .ol-palette>div:hover{box-shadow:0 0 2px 1px #d90}.ol-ext-colorpicker .ol-palette hr{margin:0}.ol-input-hidden{opacity:0;width:0;height:0;margin:0;padding:0;display:block;position:absolute}.ol-input-popup{display:inline-block;position:relative}.ol-input-popup .ol-popup{z-index:1;white-space:nowrap;background-color:#fff;margin:0;padding:0;list-style:none;display:none;position:absolute;left:-5px;box-shadow:1px 1px 3px 1px #999}.ol-input-popup.ol-hover:hover .ol-popup,.ol-input-popup.ol-focus .ol-popup{display:block}.ol-input-popup.ol-right .ol-popup{left:auto;right:-5px}.ol-input-popup.ol-middle .ol-popup{top:50%;transform:translateY(-50%)}.ol-input-popup .ol-popup li{padding:10px 5px;position:relative}.ol-input-popup li:hover,.ol-input-popup li.ol-selected{background-color:#ccc}.ol-input-popup.ol-fixed:hover .ol-popup,.ol-input-popup.ol-fixed .ol-popup{-webkit-box-shadow:unset;box-shadow:unset;vertical-align:middle;background-color:#0000;display:inline-block;position:relative;left:0}.ol-input-popup.ol-fixed.ol-left .ol-popup{float:left}.ol-input-popup>div{vertical-align:middle;border:1px solid #999;border-radius:2px;padding:3px 20px 3px 10px;display:inline-block;position:relative}.ol-input-popup>div:before{content:"";border:5px solid #0000;border-top-color:#999;position:absolute;top:50%;right:5px}.ol-ext-popup-input{vertical-align:top;display:inline-block}.ol-ext-popup-input.ol-popup{box-sizing:content-box;-webkit-user-select:none;user-select:none;vertical-align:middle;border:3px solid #fff;border-right-width:1em;border-radius:2px;width:2em;height:1.5em;display:inline-block;position:relative;box-shadow:0 0 2px 1px #666}.ol-ext-popup-input.ol-popup:after{content:"";pointer-events:none;border:.3em solid #0000;border-top:.5em solid #999;border-bottom:0 solid #999;position:absolute;top:50%;right:-.8em;transform:translateY(-50%)}.ol-ext-popup-input *{box-sizing:content-box}.ol-ext-popup-input.ol-popup .ol-popup{z-index:1;background-color:#fff;min-width:3em;min-height:3em;display:none;position:absolute;top:100%;left:0;box-shadow:1px 1px 3px 1px #999}.ol-ext-popup-input.ol-popup .ol-popup.ol-visible{display:block}.ol-ext-popup-input.ol-popup-fixed .ol-popup{position:fixed;top:auto;left:auto}.ol-input-popup.ol-size li{vertical-align:middle;height:100%;padding:5px;display:table-cell}.ol-input-popup.ol-size li>*{vertical-align:middle;background-color:#369;border-radius:50%;width:1em;height:1em}.ol-input-popup.ol-size li>.ol-option-0{color:#aaa;box-sizing:border-box;background-color:#0000;border:2px solid;width:1em;height:1em;position:relative}.ol-input-popup.ol-size li>:before{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-input-popup.ol-size li>.ol-option-0:before{content:"";background-color:#aaa;width:1em;height:2px;transform:translate(-50%,-50%)rotate(-45deg)}.ol-input-slider{display:inline-block;position:relative}.ol-input-slider .ol-popup{z-index:1;background-color:#fff;display:none;position:absolute;left:-5px;box-shadow:1px 1px 3px 1px #999}.ol-input-slider.ol-right .ol-popup{left:auto;right:-5px}.ol-input-slider.ol-hover:hover .ol-popup,.ol-input-slider.ol-focus .ol-popup{white-space:nowrap;display:block}.ol-input-slider.ol-hover:hover .ol-popup>*,.ol-input-slider.ol-focus .ol-popup>*{vertical-align:middle;display:inline-block}.ol-input-slider.ol-hover:hover .ol-popup>.ol-before,.ol-input-slider.ol-focus .ol-popup>.ol-before{margin-left:10px}.ol-input-slider.ol-hover:hover .ol-popup>.ol-after,.ol-input-slider.ol-focus .ol-popup>.ol-after{margin-right:10px}.ol-input-slider .ol-slider{vertical-align:middle;box-sizing:content-box;cursor:pointer;border:10px solid #0000;border-width:10px 15px;width:100px;height:3px;display:inline-block;position:relative;box-shadow:inset 0 0 0 1px #999}.ol-input-slider .ol-slider>.ol-cursor{pointer-events:none;background-color:#999;width:5px;height:10px;position:absolute;top:50%;transform:translate(-50%,-50%)}.ol-input-range .ol-slider{cursor:default;width:150px}.ol-input-range .ol-slider>.ol-cursor{pointer-events:all;cursor:pointer;background-color:#003c88;border-radius:50%;width:10px}.ol-input-range.ol-moving .ol-slider>.ol-cursor{pointer-events:none}.ol-input-range .ol-slider>.ol-back{pointer-events:none;background-color:#003c88;height:100%;position:absolute;top:50%;left:30%;right:20%;transform:translateY(-50%)}.ol-input-slider.ol-fixed:hover .ol-popup,.ol-input-slider.ol-fixed .ol-popup{-webkit-box-shadow:unset;box-shadow:unset;vertical-align:middle;background-color:#0000;display:inline-block;position:relative;left:0}.ol-input-slider.ol-fixed.ol-left .ol-popup{float:left}.ol-input-slider.ol-size .ol-slider{height:auto;-webkit-box-shadow:none;box-shadow:none}.ol-input-slider.ol-size .ol-slider .ol-back{color:#aaa;pointer-events:none;border-top:0 solid;border-bottom:20px solid;border-left:100px solid #0000;border-right:0 solid #0000;width:0}.ol-input-slider.ol-size .ol-slider>.ol-cursor{border:5px solid red;border-left:3px solid #0000;border-right:3px solid #0000;-o-border-image:initial;border-image:initial;background-color:#0000;width:2px;height:calc(100% + 4px);box-shadow:inset 3px 0 red}.ol-input-popup.ol-width li{padding:5px}.ol-input-popup.ol-width li>*{background-color:#369;width:100px;height:1em}.ol-input-popup.ol-width li>.ol-option-0{background-color:#0000;background-image:linear-gradient(90deg,#aaa 2px,#0000 2px);background-size:4px;height:1px;position:relative}html,body{height:100%;margin:0;padding:0}body{font-family:Calibri,sans-serif}.viewer-app{width:100%;height:100%;position:relative;overflow:hidden}.viewer-app:fullscreen{width:100%;height:100%}.viewer-app:fullscreen{width:100%;height:100%}.map{width:100%;height:100%}.ol-zoom,.ol-rotate,.ol-full-screen,.ol-graticule,.ol-screen-space-graticule,.viewer-panel-control,.layer-editor-control{background:#111;border-radius:4px;padding:0;overflow:hidden;box-shadow:0 2px 7px #0000004d}.ol-zoom:hover,.ol-rotate:hover,.ol-full-screen:hover,.ol-graticule:hover,.ol-screen-space-graticule:hover,.viewer-panel-control:hover,.layer-editor-control:hover{background:#111}.ol-zoom button,.ol-rotate button,.ol-full-screen button,.ol-graticule button,.ol-screen-space-graticule button,.viewer-panel-control button,.layer-editor-control button{color:#fff;cursor:pointer;background:#111;border:0;width:32px;height:32px;margin:0}.ol-zoom button:hover:not(:disabled),.ol-rotate button:hover:not(:disabled),.ol-full-screen button:hover:not(:disabled),.ol-graticule button:hover:not(:disabled),.ol-screen-space-graticule button:hover:not(:disabled),.viewer-panel-control button:hover:not(:disabled),.layer-editor-control button:hover:not(:disabled){color:#fff;background:#333;border-radius:4px;outline:none}.ol-zoom button:active:not(:disabled),.ol-rotate button:active:not(:disabled),.ol-full-screen button:active:not(:disabled),.ol-graticule button:active:not(:disabled),.ol-screen-space-graticule button:active:not(:disabled),.viewer-panel-control button:active:not(:disabled),.layer-editor-control button:active:not(:disabled){color:#fff;background:#555;border-radius:4px;outline:none}.ol-control button:disabled,.ol-control button:disabled:hover,.ol-control button:disabled:active,.ol-control button:disabled:focus,.ol-control.ol-toggle button:disabled,.ol-control.ol-toggle button:disabled:hover,.ol-control.ol-toggle button:disabled:active,.ol-control.ol-toggle button:disabled:focus{color:#fff;opacity:.4;cursor:default;pointer-events:none;background:#111;outline:none}.viewer-control-hidden{display:none!important}.ol-zoom{flex-direction:column;display:flex;top:8px;left:8px}.ol-zoom button{border-radius:0}.ol-zoom .ol-zoom-in,.ol-zoom .ol-zoom-in:hover,.ol-zoom .ol-zoom-in:active,.ol-zoom .ol-zoom-in:focus{border-radius:4px 4px 0 0}.ol-zoom .ol-zoom-out,.ol-zoom .ol-zoom-out:hover,.ol-zoom .ol-zoom-out:active,.ol-zoom .ol-zoom-out:focus{border-radius:0 0 4px 4px}.ol-zoom-level{box-sizing:border-box;color:#fff;cursor:default;-webkit-user-select:none;user-select:none;background:#111;border-top:1px solid #333;border-bottom:1px solid #333;justify-content:center;align-items:center;width:32px;height:26px;font-size:11px;font-weight:600;display:flex}.layer-editor-control{top:8px;left:50px;right:auto}.layer-editor-control button,.layer-editor-control button:hover,.layer-editor-control button:active,.layer-editor-control button:focus,.layer-editor-control button.active,.layer-editor-control button.active:hover,.layer-editor-control button.active:active,.layer-editor-control button.active:focus{border-radius:4px}.layer-editor{z-index:1000;box-sizing:border-box;color:#fff;background:#111;border-radius:10px;width:230px;position:absolute;top:50px;left:50px;overflow:hidden;box-shadow:0 3px 10px #00000059}.layer-editor.hidden{display:none}.layer-editor-header{border-bottom:1px solid #333;padding:12px 14px;font-size:13px;font-weight:600}.layer-editor-list{padding:12px 14px}.layer-editor-empty{color:#ccc;font-size:12px}.layer-editor-item{margin-bottom:14px}.layer-editor-item:last-child{margin-bottom:0}.layer-editor-item-header{align-items:center;gap:8px;margin-bottom:8px;display:flex}.layer-editor-visibility{accent-color:#1f5278;cursor:pointer;flex-shrink:0;margin:0}.layer-editor-name{color:#fff;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:12px;overflow:hidden}.layer-editor-order{flex-shrink:0;gap:3px;display:flex}.layer-editor-order button{color:#fff;cursor:pointer;background:#222;border:0;border-radius:4px;width:22px;height:22px;padding:0;font-size:9px}.layer-editor-order button:hover:not(:disabled){color:#fff;background:#333;outline:none}.layer-editor-order button:active:not(:disabled){color:#fff;background:#555;outline:none}.layer-editor-order button:focus{color:#fff;outline:none}.layer-editor-order button:disabled{color:#555;cursor:default;pointer-events:none;outline:none}.layer-editor-opacity{align-items:center;gap:9px;display:flex}.layer-editor-slider{accent-color:#1f5278;cursor:pointer;flex:1;min-width:0;margin:0}.layer-editor-value{color:#aaa;text-align:right;flex-shrink:0;width:32px;font-size:11px}.ol-rotate,.ol-full-screen,.ol-graticule,.ol-screen-space-graticule{border-radius:0;left:8px;right:auto}.ol-rotate{border-radius:4px 4px 0 0;top:108px}.ol-full-screen{top:140px}.ol-graticule{top:172px}.ol-screen-space-graticule{border-radius:0 0 4px 4px;top:204px}.ol-rotate button,.ol-full-screen button,.ol-graticule button,.ol-screen-space-graticule button{border-radius:0}.ol-rotate button,.ol-rotate button:hover,.ol-rotate button:active,.ol-rotate button:focus{border-radius:4px 4px 0 0}.ol-full-screen button,.ol-full-screen button:hover,.ol-full-screen button:active,.ol-full-screen button:focus,.ol-graticule button,.ol-graticule button:hover,.ol-graticule button:active,.ol-graticule button:focus{border-radius:0}.ol-screen-space-graticule button,.ol-screen-space-graticule button:hover,.ol-screen-space-graticule button:active,.ol-screen-space-graticule button:focus{border-radius:0 0 4px 4px}.viewer-panel-control{top:246px;left:8px;right:auto}.viewer-panel-control button,.viewer-panel-control button:hover,.viewer-panel-control button:active,.viewer-panel-control button:focus,.viewer-panel-control button.active,.viewer-panel-control button.active:hover,.viewer-panel-control button.active:active,.viewer-panel-control button.active:focus{border-radius:4px}.viewer-panel{z-index:1000;box-sizing:border-box;color:#fff;background:#111;border-radius:10px;width:240px;position:absolute;top:288px;left:8px;overflow:hidden;box-shadow:0 3px 10px #00000059}.viewer-panel.hidden{display:none}.viewer-panel-header{border-bottom:1px solid #333;padding:12px 14px;font-weight:600}.viewer-panel-section{border-bottom:1px solid #333;padding:12px 14px}.viewer-panel-section:last-child{border-bottom:0}.viewer-panel-section h2{color:#fff;margin:0 0 10px;font-size:13px}.current-slide{color:#ccc;overflow-wrap:anywhere;margin-bottom:10px;font-size:12px}.map .ol-custom-overviewmap{background:0 0;border-radius:4px;width:300px;height:284px;padding:0;transition:width .18s,height .18s;inset:8px 8px auto auto;overflow:hidden}.map .ol-custom-overviewmap.ol-collapsed{width:28px;height:28px}.map .ol-custom-overviewmap .ol-overviewmap-map,.map .ol-custom-overviewmap.ol-collapsed .ol-overviewmap-map{box-sizing:border-box;opacity:1;background:#fff;border:2px solid #444;border-radius:4px;width:300px;height:250px;margin:0;transition:opacity .16s,transform .18s;display:block;position:absolute;top:32px;right:0;overflow:hidden;transform:translateY(0)}.map .ol-custom-overviewmap.ol-collapsed .ol-overviewmap-map{opacity:0;pointer-events:none;transform:translateY(-8px)}.map .ol-custom-overviewmap .ol-overviewmap-map .ol-viewport{background:#fff}.map .ol-custom-overviewmap .ol-overviewmap-box{box-sizing:border-box;border:3px dotted #163a59}.map .ol-custom-overviewmap button,.map .ol-custom-overviewmap:not(.ol-collapsed) button{z-index:2;color:#fff;cursor:pointer;background:#111;border:0;border-radius:4px;width:28px;height:28px;margin:0;position:absolute;inset:0 0 auto auto}.map .ol-custom-overviewmap button:hover{color:#fff;background:#333;outline:none}.map .ol-custom-overviewmap button:active{color:#fff;background:#555;outline:none}.map .ol-custom-overviewmap button:focus{color:#fff;outline:none}.overview-toggle-icon{justify-content:center;align-items:center;width:100%;height:100%;font-size:11px;transition:transform .18s;display:flex}.ol-scale-line{background:#1111118c;border-radius:4px;padding:5px 8px;font-family:Calibri,sans-serif;bottom:8px;left:8px;box-shadow:0 2px 7px #00000040}.ol-scale-line-inner{color:#fff;border:1px solid #fff;border-bottom:0;margin:0;font-size:14px;line-height:1.2}.ol-mouse-position{z-index:100;color:#fff;background:#111;border-radius:4px;padding:6px 9px;font-family:Calibri,sans-serif;font-size:12px;position:absolute;inset:auto 8px 8px auto;box-shadow:0 2px 7px #0000004d}.ol-zoom button:focus,.ol-rotate button:focus,.ol-full-screen button:focus,.ol-graticule button:focus,.ol-screen-space-graticule button:focus,.viewer-panel-control button:focus,.layer-editor-control button:focus{color:#fff;outline:none}.ol-graticule.active button,.ol-screen-space-graticule.active button,.ol-full-screen button.ol-full-screen-true,.viewer-panel-control button.active,.layer-editor-control button.active{background:#163a59}.ol-graticule.active button:hover,.ol-screen-space-graticule.active button:hover,.ol-full-screen button.ol-full-screen-true:hover,.viewer-panel-control button.active:hover,.layer-editor-control button.active:hover{background:#1f5278}.ol-graticule.active button:active,.ol-screen-space-graticule.active button:active,.ol-full-screen button.ol-full-screen-true:active,.viewer-panel-control button.active:active,.layer-editor-control button.active:active{background:#555}.ol-layerswitcher,.ol-control.ol-layerswitcher{display:none} ->>>>>>> Stashed changes /*$vite$:1*/ diff --git a/tiatoolbox/data/visualization/static/openlayers/viewer_legacy.css b/tiatoolbox/data/visualization/static/openlayers/viewer_legacy.css index 76ac53caa6..8e7a4d4279 100644 --- a/tiatoolbox/data/visualization/static/openlayers/viewer_legacy.css +++ b/tiatoolbox/data/visualization/static/openlayers/viewer_legacy.css @@ -1,2 +1,2 @@ -:root,:host{--ol-background-color:white;--ol-accent-background-color:#f5f5f5;--ol-subtle-background-color:#80808040;--ol-partial-background-color:#ffffffbf;--ol-foreground-color:#333;--ol-subtle-foreground-color:#666;--ol-brand-color:#0af}.ol-box{box-sizing:border-box;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color);border-radius:2px}.ol-mouse-position{position:absolute;top:8px;right:8px}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;padding:2px;position:absolute;bottom:8px;left:8px}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-align:center;will-change:contents, width;border-top:none;margin:1px;font-size:10px;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{background-color:var(--ol-foreground-color);float:right;z-index:10;width:1px;height:15px}.ol-scale-step-text{z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:10px;position:absolute;bottom:-5px}.ol-scale-text{text-align:center;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:12px;position:absolute;bottom:25px}.ol-scale-singlebar{z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color);height:10px;position:relative}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset;overflow:hidden}.ol-viewport{touch-action:pan-x pan-y}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{background-color:var(--ol-subtle-background-color);border-radius:4px;position:absolute}.ol-zoom{top:.5em;left:.5em}.ol-rotate{transition:opacity .25s linear,visibility linear;top:.5em;right:.5em}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{top:.5em;right:.5em}.ol-control button{color:var(--ol-subtle-foreground-color);font-weight:700;font-size:inherit;text-align:center;background-color:var(--ol-background-color);border:none;border-radius:2px;width:1.375em;height:1.375em;margin:1px;padding:0;line-height:.4em;text-decoration:none;display:block}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{will-change:transform;font-weight:400;display:block}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-decoration:none}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;flex-flow:row-reverse;align-items:center;max-width:calc(100% - 1.3em);display:flex;bottom:.5em;right:.5em}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);margin:0;padding:1px .5em;font-size:12px}.ol-attribution li{list-style:none;display:inline}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{border-radius:4px 0 0;bottom:0;right:0}.ol-attribution.ol-uncollapsible img{max-height:1.6em;margin-top:-.2em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{height:200px;top:4.5em;left:.5em}.ol-zoomslider button{height:10px;position:relative}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{bottom:.5em;left:.5em}.ol-overviewmap.ol-uncollapsible{border-radius:0 4px 0 0;bottom:0;left:0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);width:150px;height:150px}.ol-overviewmap:not(.ol-collapsed) button{position:absolute;bottom:0;left:0}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.ol-overviewmap .ol-viewport:hover{cursor:pointer}.ol-control i{cursor:default}.ol-control.ol-bar{white-space:nowrap;min-width:1em;min-height:1em;position:absolute;top:.5em;left:50%;transform:translate(-50%)}.ol-control.ol-toggle .ol-option-bar{display:none}.ol-control.ol-bar .ol-control{vertical-align:middle;background-color:#0000;margin:0;padding:0;display:inline-block;position:relative;inset:auto;transform:none}.ol-control.ol-bar .ol-bar{position:static}.ol-control.ol-bar .ol-control button{outline:none;margin:2px 1px}.ol-control.ol-bar.ol-left{top:50%;left:.5em;transform:translateY(-50%)}.ol-control.ol-bar.ol-left .ol-control{display:block}.ol-control.ol-bar.ol-right{top:50%;left:auto;right:.5em;transform:translateY(-50%)}.ol-control.ol-bar.ol-right .ol-control{display:block}.ol-control.ol-bar.ol-bottom{top:auto;bottom:.5em}.ol-control.ol-bar.ol-top.ol-left,.ol-control.ol-bar.ol-top.ol-right{top:4.5em;transform:none}.ol-touch .ol-control.ol-bar.ol-top.ol-left,.ol-touch .ol-control.ol-bar.ol-top.ol-right{top:5.5em}.ol-control.ol-bar.ol-bottom.ol-left,.ol-control.ol-bar.ol-bottom.ol-right{top:auto;bottom:.5em;transform:none}.ol-control.ol-bar.ol-group{margin:1px 1px 1px 0}.ol-control.ol-bar.ol-right .ol-group,.ol-control.ol-bar.ol-left .ol-group{margin:1px 1px 0}.ol-control.ol-bar.ol-group button{border-radius:0;margin:0 0 0 1px}.ol-control.ol-bar.ol-right.ol-group button,.ol-control.ol-bar.ol-left.ol-group button,.ol-control.ol-bar.ol-right .ol-group button,.ol-control.ol-bar.ol-left .ol-group button{margin:0 0 1px}.ol-control.ol-bar.ol-group .ol-control:first-child>button{border-radius:5px 0 0 5px}.ol-control.ol-bar.ol-group .ol-control:last-child>button{border-radius:0 5px 5px 0}.ol-control.ol-bar.ol-left.ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-right.ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-left .ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-right .ol-group .ol-control:first-child>button{border-radius:5px 5px 0 0}.ol-control.ol-bar.ol-left.ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-right.ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-left .ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-right .ol-group .ol-control:last-child>button{border-radius:0 0 5px 5px}.ol-control.ol-bar .ol-rotate{opacity:1;visibility:visible}.ol-control.ol-bar .ol-rotate button{display:block}.ol-control.ol-bar .ol-toggle.ol-active>button,.ol-control.ol-bar .ol-toggle.ol-active button:hover{color:#fff;background-color:#0af}.ol-control.ol-toggle button:disabled{background-color:#ccc}.ol-control.ol-bar .ol-control.ol-option-bar{background-color:#fffc;border-radius:0;margin:5px 0;display:none;position:absolute;top:100%;left:0;box-shadow:0 0 0 1px #003c8880,1px 1px 2px #00000080}.ol-control.ol-bar .ol-option-bar:before{content:"";pointer-events:none;border:.5em solid #0000;border-bottom-color:#003c8880;position:absolute;bottom:100%;left:.3em}.ol-control.ol-bar .ol-option-bar .ol-control{display:table-cell}.ol-control.ol-bar .ol-control .ol-bar{display:none}.ol-control.ol-bar .ol-control.ol-active>.ol-option-bar{display:block}.ol-control.ol-bar .ol-control.ol-collapsed ul{display:none}.ol-control.ol-bar .ol-control.ol-text-button>div:hover,.ol-control.ol-bar .ol-control.ol-text-button>div{color:#003c8880;background-color:#0000;width:auto;min-width:1.375em;margin:0}.ol-control.ol-bar .ol-control.ol-text-button{border-left:1px solid #003c88cc;border-radius:0;font-size:.9em}.ol-control.ol-bar .ol-control.ol-text-button:first-child{border-left:0}.ol-control.ol-bar .ol-control.ol-text-button>div{padding:.11em .3em;font-family:Arial,Helvetica,sans-serif;font-size:1.14em;font-weight:400}.ol-control.ol-bar .ol-control.ol-text-button div:hover{color:#003c88}.ol-control.ol-bar.ol-bottom .ol-option-bar{top:auto;bottom:100%}.ol-control.ol-bar.ol-bottom .ol-option-bar:before{border-color:#003c8880 #0000 #0000;top:100%;bottom:auto}.ol-control.ol-bar.ol-left .ol-option-bar{margin:0 5px;top:0;bottom:auto;left:100%}.ol-control.ol-bar.ol-left .ol-option-bar:before{border-color:#0000 #003c8880 #0000 #0000;inset:.3em 100% auto auto}.ol-control.ol-bar.ol-right .ol-option-bar{margin:0 5px;inset:0 100% auto auto}.ol-control.ol-bar.ol-right .ol-option-bar:before{border-color:#0000 #0000 #0000 #003c8880;top:.3em;bottom:auto;left:100%}.ol-control.ol-bar.ol-left .ol-option-bar .ol-option-bar,.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar{margin:5px 0;inset:100% auto auto .3em}.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar{left:auto;right:.3em}.ol-control.ol-bar.ol-left .ol-option-bar .ol-option-bar:before,.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar:before{border-color:#0000 #0000 #003c8880;inset:auto auto 100% .3em}.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar:before{left:auto;right:.3em}.ol-control-title{position:absolute;top:0;left:0;right:0}.ol-center-position{background-color:#fffc;padding:.1em 1em;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.ol-compassctrl{display:none;top:1em;left:auto;right:1em}.ol-compassctrl.ol-visible{display:block!important}.ol-ext-dialog{opacity:0;z-index:1000;background-color:#00000080;width:150%;height:100%;transition:opacity .2s,top 0s .2s;position:fixed;top:-100%;left:0;pointer-events:none!important}.ol-ext-dialog.ol-visible{opacity:1;transition:opacity .2s,top;top:0;pointer-events:all!important}.ol-viewport .ol-ext-dialog{position:absolute}.ol-ext-dialog>form>h2{text-overflow:ellipsis;white-space:nowrap;margin:0 .5em .5em 0;display:none;overflow:hidden}.ol-ext-dialog>form.ol-title>h2{display:block}.ol-ext-dialog>form{box-sizing:border-box;background-color:#fff;border:1px solid #333;min-width:5em;max-width:60%;min-height:3em;max-height:100%;padding:1em;transition:top .2s,transform .2s;position:absolute;top:0;left:33.33%;overflow:hidden auto;transform:translate(-50%,-30%);box-shadow:3px 3px 4px #00000080}dialog.ol-ext-dialog>form{width:max-content;max-width:90%;left:50%}.ol-ext-dialog>form.ol-closebox{padding-top:1.5em}.ol-ext-dialog>form.ol-title{padding-top:1em}.ol-ext-dialog>form.ol-button{padding-bottom:.5em}.ol-ext-dialog.ol-zoom>form{top:30%;transform:translate(-50%,-30%)scale(0)}.ol-ext-dialog.ol-visible>form{top:30%}.ol-ext-dialog.ol-zoom.ol-visible>form{transform:translate(-50%,-30%)scale(1)}.ol-ext-dialog>form .ol-content{overflow:hidden auto}.ol-ext-dialog>form .ol-closebox{cursor:pointer;width:1em;height:1em;display:none;position:absolute;top:.5em;right:.5em}.ol-ext-dialog>form.ol-closebox .ol-closebox{display:block}.ol-ext-dialog>form .ol-closebox:before,.ol-ext-dialog>form .ol-closebox:after{content:"";background-color:currentColor;border-radius:.1em;width:1em;height:.1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-ext-dialog>form .ol-closebox:before{transform:translate(-50%,-50%)rotate(-45deg)}.ol-ext-dialog>form .ol-buttons{text-align:right;overflow-x:hidden}.ol-ext-dialog>form .ol-buttons input{color:#003c88;cursor:pointer;background:0 0;border:0;border-radius:.25em;margin-top:.5em;padding:.5em;font-size:1em}.ol-ext-dialog>form .ol-buttons input:hover{background-color:#003c881a}.ol-ext-dialog>form .ol-buttons input[type=submit]{font-weight:700}.ol-ext-dialog .ol-progress-message{text-align:center;padding-bottom:.5em;font-size:.9em}.ol-ext-dialog .ol-progress-bar{border:1px solid #369;width:20em;max-width:100%;height:1em;margin:.5em auto 0;padding:2px;overflow:hidden}.ol-ext-dialog .ol-progress-bar>div{background:#369;width:50%;height:100%;transition:width .3s}.ol-ext-dialog .ol-progress-bar>div.notransition{transition:unset}.ol-ext-dialog.ol-fullscreen-dialog form{text-align:center;max-width:calc(66.6% - 2em);-webkit-box-shadow:none;box-shadow:none;color:#fff;background:0 0;border:none;inset:1em;transform:none}.ol-ext-dialog.ol-fullscreen-dialog form .ol-closebox{font-size:2em;top:0;right:0}.ol-ext-dialog.ol-fullscreen-dialog .ol-closebox:before,.ol-ext-dialog.ol-fullscreen-dialog .ol-closebox:after{border:.1em solid}.ol-ext-dialog.ol-fullscreen-dialog img,.ol-ext-dialog.ol-fullscreen-dialog video{max-width:100%}body>.ol-ext-dialog .ol-content{max-height:calc(100vh - 10em)}body>.ol-ext-dialog>form{overflow:visible}.ol-editbar .ol-button button{box-sizing:border-box;vertical-align:middle;font-style:normal;display:inline-block;position:relative}.ol-editbar .ol-button button:before,.ol-editbar .ol-button button:after{content:"";box-sizing:border-box;background-color:currentColor;border-width:0;position:absolute}.ol-editbar .ol-button button:focus{outline:none}.ol-editbar .ol-selection>button:before{background-color:#0000;border:.25em solid #0000;border-top:0 solid;border-bottom:.65em solid;width:.6em;height:1em;top:.35em;left:.5em;transform:translate(-50%,-50%)rotate(-30deg);box-shadow:0 .6em 0 -.23em}.ol-editbar .ol-selection0>button:after{background-color:#0000;border:.05em solid #0000;border-top:0 solid;border-bottom:.7em solid;width:.28em;height:.6em;top:.5em;left:.7em;transform:rotate(-45deg)}.ol-editbar .ol-delete button:after,.ol-editbar .ol-delete button:before{width:1em;height:.2em;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-editbar .ol-delete button:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-editbar .ol-info button:before{border-radius:.03em;width:.25em;height:.6em;top:.47em;left:50%;transform:translate(-50%)}.ol-editbar .ol-info button:after{border-radius:.03em;width:.25em;height:.2em;top:.12em;left:50%;transform:translate(-50%);box-shadow:-.1em .35em,-.1em .82em,.1em .82em}.ol-editbar .ol-drawpoint button:before{background-color:#0000;border:.15em solid;border-radius:50%;width:.7em;height:.7em;top:.2em;left:50%;transform:translate(-50%)}.ol-editbar .ol-drawpoint button:after{background-color:#0000;border:.2em solid #0000;border-top:.4em solid;border-bottom:0 solid;width:.4em;height:.4em;top:.8em;left:50%;transform:translate(-50%)}.ol-editbar .ol-drawline>button:before,.ol-editbar .ol-drawpolygon>button:before,.ol-editbar .ol-drawhole>button:before{background-color:#0000;border:.13em solid;border-width:.2em .13em .09em;width:.8em;height:.8em;top:.2em;left:.25em;transform:rotate(10deg)perspective(1em)rotateX(40deg)}.ol-editbar .ol-drawline>button:before{border-bottom:0}.ol-editbar .ol-drawline>button:after,.ol-editbar .ol-drawhole>button:after,.ol-editbar .ol-drawpolygon>button:after{width:.3em;height:.3em;top:.2em;left:.25em;box-shadow:-.2em .55em,.6em .1em,.65em .7em}.ol-editbar .ol-drawhole>button:after{box-shadow:-.2em .55em,.6em .1em,.65em .7em,.25em .35em}.ol-editbar .ol-offset>button i,.ol-editbar .ol-transform>button i{width:.9em;height:.9em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-editbar .ol-offset>button i{width:.8em;height:.8em}.ol-editbar .ol-offset>button i:before,.ol-editbar .ol-transform>button i:before,.ol-editbar .ol-transform>button i:after{content:"";background-color:currentColor;width:.1em;height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg);box-shadow:.5em 0 0 .1em,-.5em 0 0 .1em}.ol-editbar .ol-offset>button i:before{box-shadow:.45em 0 0 .1em,-.45em 0 0 .1em}.ol-editbar .ol-transform>button i:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-editbar .ol-split>button:before{border-radius:50%;width:.3em;height:.3em;top:.81em;left:.75em;box-shadow:.1em -.4em,-.15em -.25em}.ol-editbar .ol-split>button:after{background-color:#0000;border:.2em solid;border-width:0 .2em .2em 0;border-radius:.1em;width:.8em;height:.8em;top:.15em;left:-.1em;transform:rotate(20deg)scaleY(.6)rotate(-45deg)}.ol-editbar .ol-drawregular>button:before{background-color:#0000;border:.1em solid;width:.9em;height:.9em;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div{cursor:pointer;vertical-align:text-bottom;border:.5em solid #0000;border-color:#0000 currentColor;display:inline-block}.ol-editbar .ol-drawregular .ol-bar:before,.ol-control.ol-bar.ol-editbar .ol-drawregular .ol-bar{left:50%;transform:translate(-50%)}.ol-editbar .ol-drawregular .ol-bar .ol-text-button{text-align:center;min-width:6em}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div:first-child{border-width:.5em .5em .5em 0;margin:0 .5em 0 0}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div:last-child{border-width:.5em 0 .5em .5em;margin:0 0 0 .5em}.ol-feature-list{position:relative}.ol-control.ol-feature-list{width:100%;position:absolute;bottom:0;left:0}.ol-control.ol-feature-list>button:before{content:"";background-image:linear-gradient(90deg,currentColor,#0000);width:60%;height:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 2.5px}.ol-control.ol-feature-list.ol-collapsed{width:auto;bottom:.5em;left:.5em}.ol-feature-list .ol-content{clear:both;background-color:#f4f6f8}.ol-feature-list.ol-collapsed .ol-content>*{display:none}.ol-feature-list .ol-header{position:relative;overflow:hidden}.ol-feature-list.ol-collapsed .ol-header{display:block}.ol-control.ol-feature-list>button,.ol-control.ol-feature-list.ol-collapsed .ol-content{display:none}.ol-control.ol-feature-list.ol-collapsed>button{display:block}.ol-feature-list .ol-sizer{cursor:row-resize;background-color:#ccc;border:1px solid #f4f6f8;border-width:1px 0;width:100%;height:1px;position:relative}.ol-feature-list.ol-bottom .ol-sizer{position:absolute;bottom:0}.ol-feature-list .ol-sizer:before{content:"";z-index:1;background-color:#ddd;border:3px solid #0000;border-width:3px 1.5em;border-radius:2px;width:1.5em;height:4px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 -1px #aaa,inset 0 1px #aaa}.ol-feature-list .ol-sizer:hover:before{background-color:#ccc}.ol-feature-list .ol-content .ol-header p{vertical-align:middle;white-space:nowrap;text-overflow:ellipsis;width:calc(100% - 2em);margin:.1em .25em;display:inline-block;overflow:hidden}.ol-feature-list .ol-content .ol-header .ol-buttons{position:absolute;top:50%;right:0;transform:translateY(-50%)}.ol-feature-list .ol-content .ol-header button{vertical-align:middle;box-sizing:border-box;background:0 0;border:0;width:1em;height:1em;margin:0 .2em;position:relative}.ol-feature-list .ol-content .ol-header button.ol-closebox:before,.ol-feature-list .ol-content .ol-header button.ol-closebox:after{content:"";background:currentColor;width:.1em;height:1em;font-style:normal;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-feature-list .ol-content .ol-header button.ol-closebox:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox{border:1px solid}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox:before{transform:translate(-50%,-50%)rotate(90deg)}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox:after{display:none}.ol-feature-list .ol-scroll-container{height:10em;min-height:3em;overflow:auto}.ol-feature-list .ol-scroll-container:focus{outline:unset}.ol-feature-list table{border-collapse:collapse;white-space:nowrap;background-color:#fff;position:relative}.ol-feature-list table thead{background-color:#f4f6f8;position:sticky;top:0;overflow:hidden}.ol-feature-list table tr{box-sizing:border-box;height:1.4em}.ol-feature-list table tbody tr:hover{cursor:pointer;background-color:#eee}.ol-feature-list table tbody tr.ol-selected{background-color:#eee}.ol-feature-list table td{border:0 solid #ddd;border-width:0 0 1px 1px;width:100px;overflow:hidden}.ol-feature-list table td.number{text-align:right}.ol-feature-list table td.undefined{text-align:center;background-color:#fafafa}.ol-feature-list table tr:hover td,.ol-feature-list table .ol-selected td{background-color:#0000}.ol-feature-list thead td{position:relative}.ol-feature-list thead td.sort{padding-right:1.5em}.ol-feature-list thead td p{margin:0;display:inline-block}.ol-feature-list table td button{background-color:#0000;border:0;width:1.2em;height:1.4em;margin:.1em 0;padding:0;position:absolute;top:0;right:0}.ol-feature-list thead td button.sort:before{content:"⇅";cursor:pointer;font-size:1em;font-style:normal;font-weight:400;line-height:1em}.ol-feature-list thead td button.sortup:before{content:"↧"}.ol-feature-list thead td button.sortdown:before{content:"↥"}.ol-gauge{background-color:#ffffff80;padding:.1em .5em;top:.5em;left:50%;transform:translate(-50%)}.ol-gauge>*{vertical-align:middle;display:inline-block}.ol-gauge>span{margin:0 .5em 0 0}.ol-gauge>div{border:1px solid #003c8880;border-radius:3px;width:200px;padding:1px;display:inline-block}.ol-gauge button{max-width:100%;height:.8em;margin:0}.ol-control.ol-bookmark{background-color:#ffffff80;top:.5em;left:3em}.ol-control.ol-bookmark button{position:relative}.ol-control.ol-bookmark>button:before{content:"";border:5px solid;border-top-width:10px;border-bottom:4px solid #0000;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-bookmark>div{min-width:5em;display:block}.ol-control.ol-bookmark.ol-collapsed>div{display:none}.ol-control.ol-bookmark input{margin:0 .5em .5em;padding:0 .5em;font-size:.9em}.ol-control.ol-bookmark ul{min-width:10em;margin:0 0 .5em;padding:0;list-style:none}.ol-control.ol-bookmark li{color:#003c88cc;cursor:default;clear:both;padding:0 .2em 0 .5em;font-size:.9em}.ol-control.ol-bookmark li:hover{color:#fff;background-color:#003c8880}.ol-control.ol-bookmark>div button{float:right;cursor:pointer;background-color:#0000;border-radius:0;width:1em;height:.8em}.ol-control.ol-bookmark>div button:before{content:"⨯";color:#936;border-radius:0;font-size:1.2em;line-height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-bookmark ul li button,.ol-bookmark input{display:none}.ol-bookmark.ol-editable ul li button,.ol-bookmark.ol-editable input{display:block}.ol-control.ol-geobt{inset:auto .5em 3em auto}.ol-touch .ol-control.ol-geobt{bottom:3.5em}.ol-control.ol-geobt button:before{content:"";background:0 0;border:.16em solid;border-radius:50%;width:.4em;height:.4em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-geobt button:after{content:"";background:0 0;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.42em 0,-.42em 0,0 .42em,0 -.42em}.ol-control.ol-bar.ol-geobar .ol-control{vertical-align:middle;display:inline-block}.ol-control.ol-bar.ol-geobar .ol-bar{display:none}.ol-bar.ol-geobar.ol-active .ol-bar{display:inline-block}.ol-bar.ol-geobar .geolocBt button:before,.ol-bar.ol-geobar .geolocBt button:after{content:"";border-top:.3em solid;border-bottom:0 solid #0000;border-left:.2em solid #0000;border-right:.8em solid #0000;font-size:1.2em;display:block;position:absolute;top:.45em;left:.15em;transform:rotate(-30deg)}.ol-bar.ol-geobar .geolocBt button:after{border-width:0 .8em .3em .2em;border-color:#0000 #0000 currentColor;transform:rotate(-61deg)}.ol-bar.ol-geobar .startBt button:before{content:"";background-color:#800;border-radius:50%;width:1em;height:1em;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-bar.ol-geobar .pauseBt button:before,.ol-bar.ol-geobar .pauseBt button:after{content:"";background-color:currentColor;width:.25em;height:1em;display:block;position:absolute;top:50%;left:35%;transform:translate(-50%,-50%)}.ol-bar.ol-geobar .pauseBt button:after{left:65%}.ol-control.ol-bar.ol-geobar .centerBt,.ol-control.ol-bar.ol-geobar .pauseBt,.ol-bar.ol-geobar.pauseTrack .startBt,.ol-bar.ol-geobar.centerTrack .startBt,.ol-bar.ol-geobar.centerTrack.pauseTrack .pauseBt,.ol-bar.ol-geobar.centerTrack .pauseBt{display:none}.ol-bar.ol-geobar.pauseTrack .pauseBt,.ol-bar.ol-geobar.centerTrack .centerBt{display:inline-block}.ol-control.ol-globe{opacity:.7;transform-origin:0 100%;border-radius:50%;position:absolute;bottom:.5em;left:.5em;transform:scale(.5)}.ol-control.ol-globe:hover{opacity:.9}.ol-control.ol-globe .panel{cursor:pointer;background-color:#fff;border-radius:50%;width:170px;height:170px;display:block;overflow:hidden;box-shadow:0 0 10px 5px #ffffff80}.ol-control.ol-globe .panel .ol-viewport{border-radius:50%}.ol-control.ol-globe .ol-pointer{z-index:1;background-color:#fff;border:10px solid red;border-radius:50%;width:10px;height:10px;transition:opacity .15s,top,left;display:block;position:absolute;top:50%;left:50%;transform:translate(-15px,-40px)}.ol-control.ol-globe .ol-pointer.hidden{opacity:0;transition:opacity .15s,top 3s,left 5s}.ol-control.ol-globe .ol-pointer:before{content:"";border-radius:50%;width:0;height:0;display:block;position:absolute;top:23px;left:0;box-shadow:6px 6px 10px 5px #000}.ol-control.ol-globe .ol-pointer:after{content:"";border:10px solid #0000;border-top:20px solid red;border-bottom:0 solid red;width:0;height:0;display:block;position:absolute;top:100%;left:-50%}.ol-control.ol-globe .panel:before{content:"";z-index:1;border-radius:50%;width:100%;height:100%;display:block;position:absolute;top:0;left:0;box-shadow:inset -20px -20px 80px 2px #000000b3}.ol-control.ol-globe .panel:after{content:"";z-index:1;border-radius:50%;width:20%;height:0;display:block;position:absolute;top:20%;left:23%;transform:rotate(-40deg);box-shadow:0 0 20px 7px #fff}.ol-control.ol-globe.ol-collapsed .panel{display:none}.ol-control-top.ol-globe{transform-origin:0 0;top:5em;bottom:auto}.ol-control-right.ol-globe{transform-origin:100% 100%;left:auto;right:.5em}.ol-control-right.ol-control-top.ol-globe{transform-origin:100% 0;left:auto;right:.5em}.ol-gridreference{background:#fff;border:1px solid #000;max-height:100%;top:0;right:0;overflow:auto}.ol-gridreference input{width:100%}.ol-gridreference ul{margin:0;padding:0;list-style:none}.ol-gridreference li{cursor:pointer;padding:0 .5em}.ol-gridreference ul li:hover{background-color:#ccc}.ol-gridreference li.ol-title,.ol-gridreference li.ol-title:hover{color:#fff;cursor:default;background:#003c8880}.ol-gridreference ul li .ol-ref{margin-left:.5em}.ol-gridreference ul li .ol-ref:before{content:"("}.ol-gridreference ul li .ol-ref:after{content:")"}.ol-control.ol-imageline{border-radius:0;padding:0;transition:all .3s;bottom:0;left:0;right:0;overflow:visible}.ol-control.ol-imageline.ol-collapsed{transform:translateY(100%)}.ol-imageline>div{white-space:nowrap;scroll-behavior:smooth;width:100%;height:4em;position:relative;overflow:hidden}.ol-imageline>div.ol-move{scroll-behavior:unset}.ol-control.ol-imageline button{margin:.65em;position:absolute;top:-1em;transform:translateY(-100%);box-shadow:0 0 0 .15em #fff6}.ol-control.ol-imageline button:before{content:"";border:.15em solid;border-width:.15em .15em 0 0;width:.4em;height:.4em;position:absolute;top:40%;left:50%;transform:translate(-50%,-50%)rotate(135deg)}.ol-control.ol-imageline.ol-collapsed button:before{top:60%;transform:translate(-50%,-50%)rotate(-45deg)}.ol-imageline,.ol-imageline:hover{background-color:#000000bf}.ol-imageline.ol-arrow:after,.ol-imageline.ol-arrow:before{content:"";z-index:1;opacity:.8;pointer-events:none;border:1em solid #fff;border-left:0 solid #000;border-right:.6em solid #000;position:absolute;top:50%;left:.2em;transform:translateY(-50%);box-shadow:-.6em 0 0 1em #fff}.ol-imageline.ol-arrow:after{border-width:1em 0 1em .6em;left:auto;right:.2em;box-shadow:.6em 0 0 1em #fff}.ol-imageline.ol-scroll0.ol-arrow:before,.ol-imageline.ol-scroll1.ol-arrow:after{display:none}.ol-imageline .ol-image{cursor:pointer;height:100%;display:inline-block;position:relative}.ol-imageline img{box-sizing:border-box;opacity:0;border:.25em solid #0000;max-height:100%;transition:all 1s}.ol-imageline img.ol-loaded{opacity:1}.ol-imageline .ol-image.select{background-color:#fff}.ol-imageline .ol-image span{color:#fff;white-space:normal;text-align:center;background-color:#00000080;width:125%;max-height:2.4em;font-size:.8em;line-height:1.2em;display:none;position:absolute;bottom:0;left:50%;overflow:hidden;transform:translate(-50%)scaleX(.8)}.ol-imageline .ol-image:hover span{display:block}.ol-control.ol-routing.ol-isochrone .ol-method-time,.ol-control.ol-routing.ol-isochrone .ol-method-distance,.ol-control.ol-routing.ol-isochrone>button{position:relative}.ol-control.ol-routing.ol-isochrone .ol-method-time:before,.ol-control.ol-routing.ol-isochrone>button:before{content:"";clip:unset;border:.1em solid;border-radius:50%;width:.8em;height:.8em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 -.5em 0 -.35em,.4em -.35em 0 -.35em}.ol-control.ol-routing.ol-isochrone .ol-method-time:after,.ol-control.ol-routing.ol-isochrone>button:after{content:"";-webkit-box-shadow:none;box-shadow:none;box-sizing:border-box;clip:unset;border:.3em solid #0000;border-right-color:currentColor;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-60deg)}.ol-control.ol-routing.ol-isochrone .ol-method-distance:before{content:"";box-sizing:border-box;border:.1em solid;width:1em;height:.5em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-30deg)}.ol-control.ol-routing.ol-isochrone .ol-method-distance:after{content:"";width:.1em;height:.15em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-30deg);box-shadow:inset 0 -.15em,0 .1em,.25em .1em,-.25em .1em}.ol-control.ol-routing.ol-isochrone .ol-direction-direct:before,.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:before{content:"";box-sizing:border-box;border:.1em solid;border-radius:50%;width:.3em;height:.3em;position:absolute;top:50%;left:30%;transform:translate(-50%,-50%);box-shadow:.25em 0 0 -.05em}.ol-control.ol-routing.ol-isochrone .ol-direction-direct:after,.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:after{content:"";border:.4em solid #0000;border-left-color:currentColor;border-right:0 solid;position:absolute;top:50%;left:70%;transform:translate(-50%,-50%)}.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:after{border-width:.4em .4em .4em 0}.ol-control.ol-isochrone.ol-collapsed .content{display:none}.ol-control.ol-isochrone input[type=number]{text-align:right;width:3em;margin:0 .1em}.ol-control.ol-isochrone .ol-distance input[type=number]{width:5em}.ol-isochrone .ol-time,.ol-isochrone .ol-distance{display:none}.ol-isochrone .ol-time.selected,.ol-isochrone .ol-distance.selected{display:block}.ol-control.ol-layerswitcher-popup{text-align:left;position:absolute;top:3em;right:.5em}.ol-control.ol-layerswitcher-popup .panel{clear:both;background:#fff}.ol-layerswitcher-popup .panel{margin:0;padding:.25em;list-style:none;overflow:hidden}.ol-layerswitcher-popup .panel ul{padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher-popup.ol-collapsed .panel{display:none}.ol-layerswitcher-popup.ol-forceopen .panel{display:block}.ol-layerswitcher-popup button{float:right;background-color:#fff;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACE1BMVEX///8A//8AgICA//8AVVVAQID///8rVVVJtttgv98nTmJ2xNgkW1ttyNsmWWZmzNZYxM4gWGgeU2JmzNNr0N1Rwc0eU2VXxdEhV2JqytQeVmMhVmNoydUfVGUgVGQfVGQfVmVqy9hqy9dWw9AfVWRpydVry9YhVmMgVGNUw9BrytchVWRexdGw294gVWQgVmUhVWPd4N6HoaZsy9cfVmQgVGRrytZsy9cgVWQgVWMgVWRsy9YfVWNsy9YgVWVty9YgVWVry9UgVWRsy9Zsy9UfVWRsy9YgVWVty9YgVWRty9Vsy9aM09sgVWRTws/AzM0gVWRtzNYgVWRuy9Zsy9cgVWRGcHxty9bb5ORbxdEgVWRty9bn6OZTws9mydRfxtLX3Nva5eRix9NFcXxOd4JPeINQeIMiVmVUws9Vws9Vw9BXw9BYxNBaxNBbxNBcxdJexdElWWgmWmhjyNRlx9IqXGtoipNpytVqytVryNNrytZsjZUuX210k5t1y9R2zNR3y9V4lp57zth9zdaAnKOGoaeK0NiNpquV09mesrag1tuitbmj1tuj19uktrqr2d2svcCu2d2xwMO63N+7x8nA3uDC3uDFz9DK4eHL4eLN4eIyYnDX5OM5Z3Tb397e4uDf4uHf5uXi5ePi5+Xj5+Xk5+Xm5+Xm6OY6aHXQ19fT4+NfhI1Ww89gx9Nhx9Nsy9ZWw9Dpj2abAAAAWnRSTlMAAQICAwQEBgcIDQ0ODhQZGiAiIyYpKywvNTs+QklPUlNUWWJjaGt0dnd+hIWFh4mNjZCSm6CpsbW2t7nDzNDT1dje5efr7PHy9PT29/j4+Pn5+vr8/f39/f6DPtKwAAABTklEQVR4Xr3QVWPbMBSAUTVFZmZmhhSXMjNvkhwqMzMzMzPDeD+xASvObKePPa+ffHVl8PlsnE0+qPpBuQjVJjno6pZpSKXYl7/bZyFaQxhf98hHDKEppwdWIW1frFnrxSOWHFfWesSEWC6R/P4zOFrix3TzDFLlXRTR8c0fEEJ1/itpo7SVO9Jdr1DVxZ0USyjZsEY5vZfiiAC0UoTGOrm9PZLuRl8X+Dq1HQtoFbJZbv61i+Poblh/97TC7n0neCcK0ETNUrz1/xPHf+DNAW9Ac6t8O8WH3Vp98f5lCaYKAOFZMLyHL4Y0fe319idMNgMMp+zWVSybUed/+/h7I4wRAG1W6XDy4XmjR9HnzvDRZXUAYDFOhC1S/Hh+fIXxen+eO+AKqbs+wAo30zDTDvDxKoJN88sjUzDFAvBzEUGFsnADoIvAJzoh2BZ8sner+Ke/vwECuQAAAABJRU5ErkJggg==);background-position:50%;background-repeat:no-repeat;width:38px;height:38px}.ol-layerswitcher-popup li{color:#369;cursor:pointer;padding:.25em 1em;font-family:Trebuchet MS,Helvetica,sans-serif}.ol-layerswitcher-popup li.ol-header{display:none}.ol-layerswitcher-popup li.select,.ol-layerswitcher-popup li.ol-visible{color:#fff;background:#003c88b3}.ol-layerswitcher-popup li:hover{color:#fff;background:#003c88e6}.ol-control.ol-layerswitcher.ol-layer-shop{height:calc(100% - 4em);max-height:unset;background-color:#0000;max-width:16em;overflow:visible;pointer-events:none!important}.ol-control.ol-layerswitcher>*{pointer-events:auto}.ol-control.ol-layer-shop>button,.ol-control.ol-layer-shop .panel-container{box-shadow:0 0 0 3px #ffffff80}.ol-control.ol-layerswitcher.ol-layer-shop .panel-container{border:2px solid #369;border-width:2px 0;max-height:calc(100% - 6.5em);padding:0;overflow-y:scroll}.ol-control.ol-layer-shop .panel{box-sizing:border-box;margin:.25em .5em;padding:0}.ol-control.ol-layerswitcher.ol-layer-shop .panel-container.ol-scrolldiv{overflow:hidden}.ol-control.ol-layer-shop .ol-scroll{opacity:.5;background-color:#0000004d}.ol-layerswitcher.ol-layer-shop ul.panel li.ol-header{display:none}.ol-layerswitcher.ol-layer-shop ul.panel li{margin-right:0;padding-right:0}.ol-layerswitcher.ol-layer-shop .layerup{box-sizing:border-box;color:#003c88;background-color:#0000;border-radius:3px;width:1.4em;height:1.5em;margin:0}.ol-layerswitcher.ol-layer-shop .layerup:hover{background-color:#003c884d}.ol-layerswitcher.ol-layer-shop .layerup:before{background-color:currentColor;border:0;width:1em;height:2px;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 -4px,0 4px}.ol-layerswitcher.ol-layer-shop .layerup:after{content:unset}.ol-control.ol-layer-shop .ol-title-bar{box-sizing:border-box;text-overflow:ellipsis;white-space:nowrap;text-align:right;transform-origin:100% 0;background-color:#ffffff80;max-width:14.6em;height:calc(2.8em - 4px);padding:.7em .5em;font-size:.9em;transition:transform .1s,width;overflow:hidden;transform:scaleY(1.1)}.ol-control.ol-layer-shop:hover .ol-title-bar{background-color:#ffffffb3}.ol-control.ol-layer-shop.ol-collapsed .ol-title-bar{max-width:10em;transform:scale(.9,1.1)}.ol-control.ol-layer-shop.ol-forceopen .ol-title-bar{max-width:14.6em;transform:scaleY(1.1)}.ol-control.ol-layer-shop .ol-bar{clear:both;text-align:right;z-index:10;background-color:#fff;height:1.75em;position:relative;box-shadow:0 0 0 3px #ffffff80}.ol-control.ol-layer-shop.ol-collapsed .ol-scroll,.ol-control.ol-layer-shop.ol-collapsed .ol-bar{border-width:2px 0 0;display:none}.ol-control.ol-layer-shop.ol-forceopen .ol-scroll,.ol-control.ol-layer-shop.ol-forceopen .ol-bar{display:block}.ol-control.ol-layer-shop .ol-bar>*{vertical-align:middle;background-color:#0000;margin-top:.25em;font-size:.9em;display:inline-block}.ol-layer-shop .ol-bar .ol-button,.ol-touch .ol-layer-shop .ol-bar .ol-button{top:unset;left:unset;bottom:unset;right:unset;margin:0;position:relative}.ol-layer-shop .ol-bar button{color:#003c88;background-color:#fff}.ol-layer-shop .ol-bar button:hover{background-color:#003c8833}.ol-touch .ol-layerswitcher.ol-layer-shop>button{font-size:1.7em}.ol-touch .ol-layer-shop .ol-bar{height:2em}.ol-touch .ol-layer-shop .ol-control button{font-size:1.4em}.ol-touch .ol-control.ol-layer-shop .panel{max-height:calc(100% - 7em)}.ol-touch .ol-control.ol-layer-shop .panel label{height:1.8em}.ol-touch .ol-control.ol-layer-shop .panel label span{margin-left:.5em;padding-top:.25em}.ol-touch .ol-control.ol-layer-shop .panel label:before,.ol-touch .ol-control.ol-layer-shop .panel label:after{z-index:1;font-size:1.3em}.ol-control.ol-layerswitcher{text-align:left;box-sizing:border-box;max-height:calc(100% - 6em);position:absolute;top:3em;right:.5em;overflow:hidden}.ol-control.ol-layerswitcher .ol-switchertopdiv,.ol-control.ol-layerswitcher .ol-switcherbottomdiv{display:block}.ol-control.ol-layerswitcher.ol-collapsed .ol-switchertopdiv,.ol-control.ol-layerswitcher.ol-collapsed .ol-switcherbottomdiv{display:none}.ol-layerswitcher.ol-forceopen.ol-collapsed .ol-switchertopdiv,.ol-layerswitcher.ol-forceopen.ol-collapsed .ol-switcherbottomdiv{display:block}.ol-control.ol-layerswitcher .ol-switchertopdiv,.ol-control.ol-layerswitcher .ol-switcherbottomdiv{z-index:2;opacity:1;cursor:pointer;box-sizing:border-box;background:#fff;border-top:2px solid #0000;border-bottom:2px solid #369;height:45px;margin:0 2px;position:absolute;top:0;left:0;right:0}.ol-control.ol-layerswitcher .ol-switcherbottomdiv{border-top:2px solid #369;border-bottom:2px solid #0000;height:2em;top:auto;bottom:0}.ol-control.ol-layerswitcher .ol-switchertopdiv:before,.ol-control.ol-layerswitcher .ol-switcherbottomdiv:before{content:"";opacity:.8;border:10px solid #0000;width:0;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-layerswitcher .ol-switchertopdiv:hover:before,.ol-control.ol-layerswitcher .ol-switcherbottomdiv:hover:before{opacity:1}.ol-control.ol-layerswitcher .ol-switchertopdiv:before{border-top:0;border-bottom-color:#369}.ol-control.ol-layerswitcher .ol-switcherbottomdiv:before{border-top-color:#369;border-bottom:0}.ol-control.ol-layerswitcher .panel-container{clear:both;background-color:#fff;border-radius:0 0 2px 2px;padding:.5em .5em 0;display:block}.ol-layerswitcher .panel{margin:0;padding:0;font-family:Tahoma,Geneva,sans-serif;font-size:.9em;list-style:none;transition:top .3s;position:relative;top:0;overflow:hidden}.ol-layerswitcher .panel ul{clear:both;padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher input[type=radio],.ol-layerswitcher input[type=checkbox]{opacity:0;width:0;height:0;position:absolute}.ol-layerswitcher .panel li{-weblit-transition:-webkit-transform .2s linear;clear:both;box-sizing:border-box;border:1px solid #0000;transition:transform .2s linear;display:block}.ol-layerswitcher .panel li.ol-layer-select{background-color:#003c8833;margin:0 -.5em;padding:0 .5em}.ol-layerswitcher .panel li.drag{opacity:.5;transform:scale(.8)}.ol-dragover{opacity:.8;background:#33669980}.ol-layerswitcher .panel li.forbidden,.forbidden .ol-layerswitcher-buttons div,.forbidden .layerswitcher-opacity div{background:#ff000080;color:red!important}.ol-layerswitcher.drag,.ol-layerswitcher.drag *{cursor:not-allowed!important;cursor:no-drop!important}.ol-layerswitcher.drag .panel li.dropover,.ol-layerswitcher.drag .panel li.dropover *{cursor:pointer!important;cursor:n-resize!important;cursor:ns-resize!important;cursor:-webkit-grab!important;cursor:grab!important;cursor:-webkit-grabbing!important;cursor:grabbing!important}.ol-layerswitcher .panel li.dropover{background:#33669980}.ol-layerswitcher .panel li label{white-space:nowrap;text-overflow:ellipsis;max-width:12em;height:1.4em;padding:0 0 0 1.7em;display:inline-block;position:relative;overflow:hidden}.ol-layerswitcher .panel li label span{text-overflow:ellipsis;width:100%;height:100%;padding-right:.2em;display:inline-block;overflow:hidden}.ol-layerswitcher [type=radio]+label:before,.ol-layerswitcher [type=checkbox]+label:before,.ol-layerswitcher [type=radio]:checked+label:after,.ol-layerswitcher [type=checkbox]:checked+label:after{content:"";box-sizing:border-box;background:#fff;border:2px solid #369;width:1.2em;height:1.2em;position:absolute;top:.1em;left:.1em}.ol-layerswitcher li:has(>div.li-content>.ol-visibility:focus){border-color:#369;box-shadow:inset 0 0 0 1px #369}.ol-layerswitcher [type=radio]+label:before,.ol-layerswitcher [type=radio]+label:after{border-radius:50%}.ol-layerswitcher [type=radio]:checked+label:after{background:#369;width:.6em;height:.6em;margin:.3em}.ol-layerswitcher [type=checkbox]:checked+label:after{background:0 0;border:3px solid #369;border-width:0 3px 3px 0;width:.7em;height:1em;top:-.05em;left:.55em;transform:rotate(45deg);box-shadow:1px 0 1px 1px #fff}.ol-layerswitcher .panel li.ol-layer-hidden{opacity:.6}.ol-layerswitcher.ol-collapsed .panel-container{display:none}.ol-layerswitcher.ol-forceopen .panel-container{display:block}.ol-control.ol-layerswitcher .ol-counter{z-index:22;text-align:left;font-size:.65em;line-height:1.5em;display:none;position:absolute;top:0;right:.3em}.ol-control.ol-layerswitcher.ol-counter .ol-counter{display:block}.ol-control.ol-layer-shop .ol-counter{text-align:center;background:#fff;border-radius:50%;width:1.5em;line-height:1.5em;transform:translate(50%,-50%);box-shadow:.5px .5px 2px}.ol-layerswitcher-image>button,.ol-layerswitcher>button{float:right;z-index:10;background-color:#fff;font-size:1.7em;position:relative}.ol-touch .ol-layerswitcher-image>button,.ol-touch .ol-layerswitcher>button{font-size:2.5em}.ol-layerswitcher-image>button:before,.ol-layerswitcher-image>button:after,.ol-layerswitcher>button:before,.ol-layerswitcher>button:after{content:"";border-radius:.15em;width:.75em;height:.75em;position:absolute;transform:scaleY(.8)rotate(45deg)}.ol-layerswitcher-image>button:before,.ol-layerswitcher>button:before{background:#e2e4e1;top:.32em;left:.34em;box-shadow:.1em .1em #325158}.ol-layerswitcher-image>button:after,.ol-layerswitcher>button:after{background:#83bcc5 radial-gradient(circle at .85em .6em,#70b3be 0 .65em,#83bcc5 .65em);top:.22em;left:.34em}.ol-layerswitcher-buttons{float:right;text-align:right;display:block}.ol-layerswitcher-buttons>div{cursor:pointer;text-align:center;vertical-align:middle;color:#fff;background:#369;width:1em;height:1em;margin:2px;line-height:1em;display:inline-block;position:relative}.ol-layerswitcher .panel li>div{display:inline-block;position:relative}.ol-layerswitcher .ol-separator{width:0;height:0;margin:0;padding:0;display:block}.ol-layerswitcher .layerup{float:right;opacity:.5;cursor:move;cursor:ns-resize;background-color:#369;height:2.5em}.ol-layerswitcher .layerup:before,.ol-layerswitcher .layerup:after{content:"";border:.4em solid #0000;border-top-color:#fff;border-bottom:0 solid #fff;width:0;height:0;position:absolute;bottom:3px;left:.1em}.ol-layerswitcher .layerup:after{border-width:0 .4em .4em;top:3px;bottom:auto}.ol-layerswitcher .layerInfo{background:#369;border-radius:100%}.ol-layerswitcher .layerInfo:before{color:#fff;content:"i";text-align:center;width:1.25em;font-size:.8em;font-weight:700;display:block;position:absolute;top:0;left:0}.ol-layerswitcher .layerTrash{background:#369}.ol-layerswitcher .layerTrash:before{color:#fff;content:"×";text-align:center;margin:-.5em 0;font-size:1em;line-height:1em;position:absolute;top:50%;left:0;right:0}.ol-layerswitcher .layerExtent{background:#369}.ol-layerswitcher .layerExtent:before{content:"";border-bottom:1px solid #fff;border-right:1px solid #fff;display:block;position:absolute;inset:6px 2px 3px 6px}.ol-layerswitcher .layerExtent:after{content:"";border-top:1px solid #fff;border-left:1px solid #fff;display:block;position:absolute;inset:3px 6px 6px 2px}.ol-layerswitcher .expend-layers,.ol-layerswitcher .collapse-layers{background-color:#0000;margin:0 2px}.ol-layerswitcher .expend-layers:before,.ol-layerswitcher .collapse-layers:before{content:"";background:#369;width:100%;height:4px;margin-top:-2px;position:absolute;top:50%;left:0}.ol-layerswitcher .expend-layers:after{content:"";background:#369;width:4px;height:100%;margin-left:-2px;position:absolute;top:0;left:50%}.ol-layerswitcher .layerswitcher-opacity{box-sizing:border-box;background:#69c;cursor:pointer;background:linear-gradient(90deg,#003c8800,#003c8899);border:1px solid #369;border-radius:3px;width:120px;height:3px;margin:5px 1em 10px 7px;position:relative;box-shadow:1px 1px 1px #00000080}.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor,.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor:before{z-index:1;background:#003c8880;border-radius:50%;width:20px;height:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor:before{content:"";width:50%;height:50%;position:absolute}.ol-touch .ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor{width:26px;height:26px}.ol-layerswitcher .layerswitcher-opacity-label{font-size:.8em;display:none;position:absolute;bottom:5px;right:-2.5em}.ol-layerswitcher .layerswitcher-opacity-label:after{content:"%"}.ol-layerswitcher .layerswitcher-progress{width:120px;margin:-4px 1em 2px 7px;display:block}.ol-layerswitcher .layerswitcher-progress div{background-color:#369;width:0;height:2px;display:block}.ol-control.ol-layerswitcher-image{text-align:left;transition:all .2s;position:absolute;top:1em;right:.5em}.ol-control.ol-layerswitcher-image.ol-collapsed{transition:none;top:3em}.ol-layerswitcher-image .panel{margin:0;padding:.25em;list-style:none;overflow:hidden}.ol-layerswitcher-image .panel ul{padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher-image.ol-collapsed .panel{display:none}.ol-layerswitcher-image.ol-forceopen .panel{clear:both;display:block}.ol-layerswitcher-image button{float:right;display:none}.ol-layerswitcher-image.ol-collapsed button{display:block;position:relative}.ol-layerswitcher-image li{vertical-align:middle;cursor:pointer;background-color:#fff;border:3px solid #0000;border-radius:4px;width:64px;height:64px;margin:2px;display:inline-block;position:relative;overflow:hidden;box-shadow:1px 1px 4px #00000080}.ol-layerswitcher-image li.ol-layer-hidden{opacity:.5;border-color:#555}.ol-layerswitcher-image li.ol-header{display:none}.ol-layerswitcher-image li img{max-width:100%;position:absolute}.ol-layerswitcher-image li.select,.ol-layerswitcher-image li.ol-visible{border:3px solid red}.ol-layerswitcher-image li p{display:none}.ol-layerswitcher-image li:hover p{color:#fff;text-align:center;background-color:#00000080;height:1.2em;margin:0;font-family:Verdana,Geneva,sans-serif;font-size:.8em;display:block;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.ol-control.ol-legend{z-index:1;background-color:#fff9;max-width:90%;max-height:90%;bottom:.5em;left:.5em;overflow:hidden auto}.ol-control.ol-legend:hover{background-color:#fffc}.ol-control.ol-legend.ol-empty,.ol-control.ol-legend.ol-collapsed{overflow:hidden}.ol-control.ol-legend button{display:none;position:relative}.ol-control.ol-legend.ol-empty button,.ol-control.ol-legend.ol-collapsed button{display:block}.ol-control.ol-legend.ol-uncollapsible button{display:none}.ol-control.ol-legend>ul,.ol-control.ol-legend>canvas{margin:2px}.ol-control.ol-legend button.ol-closebox{cursor:pointer;z-index:1;background:0 0;display:block;position:absolute;top:0;right:0}.ol-control.ol-legend.ol-empty button.ol-closebox,.ol-control.ol-legend.ol-uncollapsible button.ol-closebox,.ol-control.ol-legend.ol-collapsed button.ol-closebox{display:none}.ol-control.ol-legend button.ol-closebox:before{content:"×";color:#003c8880;background:0 0;font-size:1.3em}.ol-control.ol-legend button.ol-closebox:hover:before{color:#003c88}.ol-control.ol-legend .ol-legendImg{display:block}.ol-control.ol-legend.ol-empty .ol-legendImg,.ol-control.ol-legend.ol-collapsed .ol-legendImg{display:none}.ol-control.ol-legend.ol-uncollapsible .ol-legendImg{display:block}.ol-control.ol-legend>button:first-child:before,.ol-control.ol-legend>button:first-child:after{content:"";background-color:currentColor;width:.2em;height:.2em;position:absolute;top:.25em;left:.2em;box-shadow:0 .35em,0 .7em}.ol-control.ol-legend button:first-child:after{width:.6em;height:.15em;top:.27em;left:.55em}ul.ol-legend{width:100%;margin:0;padding:0;list-style:none;position:absolute;top:0;left:0}.ol-control.ol-legend.ol-empty ul,.ol-control.ol-legend.ol-collapsed ul{display:none}.ol-control.ol-legend.ol-uncollapsible ul{display:block}ul.ol-legend li.ol-title{text-align:center;font-weight:700}ul.ol-legend li.ol-title>div:first-child{width:0!important}ul.ol-legend li{white-space:nowrap;padding:0;overflow:hidden}ul.ol-legend li div{vertical-align:top;display:inline-block}.ol-control.ol-legend .ol-legend{display:inline-block}.ol-control.ol-legend.ol-empty .ol-legend,.ol-control.ol-legend.ol-collapsed .ol-legend{display:none}.ol-control.ol-legend.ol-empty button{opacity:.4}.ol-control.ol-mapzone{text-align:left;box-sizing:border-box;max-height:calc(100% - 6em);position:absolute;top:.5em;right:.5em;overflow:hidden}.ol-control.ol-mapzone.ol-collapsed{top:3em}.ol-control.ol-mapzone button{float:right;margin-top:2.5em;position:relative}.ol-touch .ol-control.ol-mapzone button{margin-top:1.67em}.ol-control.ol-mapzone.ol-collapsed button{margin-top:0}.ol-control.ol-mapzone button i{border:.1em solid;border-radius:50%;width:.9em;height:.9em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-control.ol-mapzone button i:before{content:"";background-color:currentColor;border-radius:50%;width:.4em;height:.4em;position:absolute;top:.3em;left:.5em;box-shadow:.05em .3em 0 -.051em,-.05em -.35em 0 -.1em,-.5em -.35em 0 0,-.65em .1em 0 -.03em,-.65em -.05em 0 -.05em}.ol-mapzone>div{width:5em;height:5em;margin:0 .2em 0 0;display:inline-block;position:relative}.ol-mapzone>div:focus{box-shadow:0 0 0 .2em #369}.ol-control.ol-mapzone.ol-collapsed>div{display:none}.ol-mapzone>div p{color:#fff;text-align:center;transform-origin:0 0;cursor:default;width:160%;margin:0;font-family:Lucida Grande,Verdana,Geneva,Lucida,Arial,Helvetica,sans-serif;font-weight:700;position:absolute;bottom:0;overflow:hidden;transform:scaleX(.625)}.ol-notification{background:0 0;border:0;width:150%;margin:0;padding:0;bottom:0}.ol-notification>div,.ol-notification>div:hover{color:#fff;text-align:center;box-sizing:border-box;opacity:1;background-color:#000c;border-radius:4px 4px 0 0;min-width:5em;max-width:calc(66% - 4em);min-height:1em;max-height:5em;padding:.2em .5em;transition:all .3s;position:absolute;bottom:0;left:33.33%;transform:translate(-50%)}.ol-notification.ol-collapsed>div{opacity:0;bottom:-5em}.ol-notification a{color:#9cf;cursor:pointer}.ol-notification .ol-close,.ol-notification .ol-close:hover{padding-right:1.5em}.ol-notification .closeBox{position:absolute;top:0;right:.3em}.ol-notification .closeBox:before{content:"×"}.ol-overlay{color:#fff;box-sizing:border-box;z-index:1;opacity:0;cursor:default;pointer-events:none;z-index:9;background-color:#0006;width:100%;height:100%;padding:1em;transition:all .5s;display:none;position:absolute;top:0;left:0;overflow:hidden}.ol-overlay.slide-up{transform:translateY(100%)}.ol-overlay.slide-down{transform:translateY(-100%)}.ol-overlay.slide-left{transform:translate(-100%)}.ol-overlay.slide-right{transform:translate(100%)}.ol-overlay.zoom{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)}.ol-overlay.zoomout{transform:scale(3)}.ol-overlay.zoomrotate{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)rotate(360deg)}.ol-overlay.stretch{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scaleX(0)}.ol-overlay.stretchy{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scaleY(0)}.ol-overlay.wipe{opacity:1}.ol-overlay.flip{transform:perspective(600px)rotateY(180deg)}.ol-overlay.card{opacity:.5;transform:translate(-80%,100%)rotate(-.5turn)}.ol-overlay.book{transform-origin:10%;transform:perspective(600px)rotateY(-180deg)scaleX(.6)}.ol-overlay.book.visible{transform-origin:10%}.ol-overlay.ol-visible{opacity:1;pointer-events:all;inset:0;transform:none}.ol-overlay .ol-closebox{cursor:pointer;z-index:1;width:1em;height:1em;position:absolute;top:1em;right:1em}.ol-overlay .ol-closebox:before{content:"❌";text-align:center;vertical-align:middle;display:block}.ol-overlay .ol-fullscreen-image{position:absolute;inset:0}.ol-overlay .ol-fullscreen-image img{box-sizing:border-box;max-width:100%;max-height:100%;padding:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlay .ol-fullscreen-image.ol-has-title img{padding-bottom:3em}.ol-overlay .ol-fullscreen-image p{text-align:center;background-color:#00000080;margin:0;padding:.5em;position:absolute;bottom:0;left:0;right:0}.ol-control.ol-overview{text-align:left;position:absolute;bottom:.5em;left:.5em}.ol-control.ol-overview .panel{cursor:pointer;background-color:#fff;border:1px solid #369;width:150px;height:150px;margin:2px;display:block}.ol-overview:not(.ol-collapsed) button{z-index:2;position:absolute;bottom:2px;left:2px}.ol-control.ol-overview.ol-collapsed .panel{display:none}.ol-overview.ol-collapsed button:before{content:"»"}.ol-overview button:before{content:"«"}.ol-control-right.ol-overview{left:auto;right:.5em}.ol-control-right.ol-overview:not(.ol-collapsed) button{left:auto;right:2px}.ol-control-right.ol-overview.ol-collapsed button:before{content:"«"}.ol-control-right.ol-overview button:before{content:"»"}.ol-control-top.ol-overview{top:5em;bottom:auto}.ol-control-top.ol-overview:not(.ol-collapsed) button{top:2px;bottom:auto}.ol-permalink{position:absolute;top:.5em;right:2.5em}.ol-touch .ol-permalink{right:3em}.ol-permalink button i{width:1em;height:1em;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-permalink button i:before{content:"↗";box-sizing:border-box;border:0 solid;border-width:1px 0 0 1px;width:.3em;height:1em;padding:0 .2em;position:absolute;top:0;left:0}.ol-permalink button i:after{content:"";box-sizing:border-box;border:1px solid;border-width:0 1px 1px 0;width:1em;height:.3em;padding:.2em;position:absolute;bottom:0;right:0}.ol-control.ol-print{top:.5em;left:3em}.ol-control.ol-print button:before{content:"";width:.9em;height:.35em;position:absolute;top:50%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 .1em,inset .55em 0,0 .2em 0 -.1em}.ol-control.ol-print button:after{content:"";width:.7em;height:.6em;position:absolute;top:25%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 .15em}.ol-ext-print-dialog{width:100%;height:100%}.ol-ext-print-dialog>form .ol-closebox{z-index:1;color:#999;left:16.5em;right:auto}.ol-ext-print-dialog .ol-content[data-status=printing]{opacity:.5}.ol-ext-print-dialog .ol-content .ol-error{color:#ff0;text-align:center;background:#b00;margin:0 -1em;padding:1em .5em;font-weight:700;display:none}.ol-ext-print-dialog .ol-content[data-status=error] .ol-error{display:block}.ol-ext-print-dialog>form,.ol-ext-print-dialog.ol-visible>form{max-width:100%;max-height:100%;width:unset;background-color:#eee;padding:0;transition:none;inset:1em;transform:none}.ol-ext-print-dialog .ol-print-map{width:calc(100% - 18em);position:absolute;top:0;bottom:0;right:0;overflow:hidden}.ol-ext-print-dialog .ol-print-map .ol-page{box-sizing:border-box;background:#fff;position:absolute;top:50%;left:50%}.ol-ext-print-dialog .ol-print-map .ol-page.margin{box-sizing:content-box}.ol-ext-print-dialog .ol-map{width:100%;height:100%}.ol-ext-print-dialog .ol-print-map .ol-control{display:none!important}.ol-ext-print-dialog .ol-print-param{box-sizing:border-box;background-color:#fff;width:18em;padding:1em;position:absolute;top:0;bottom:0;left:0;overflow-x:hidden}.ol-ext-print-dialog .ol-print-param h2{color:#003c88b3;font-size:1.1em;display:block}.ol-ext-print-dialog .ol-print-param ul{padding:0;list-style:none}.ol-ext-print-dialog .ol-print-param li{margin:.5em 0;font-size:.9em;position:relative}.ol-ext-print-dialog .ol-print-param li.hidden{display:none}.ol-ext-print-dialog .ol-print-param label{vertical-align:middle;width:8em;display:inline-block}.ol-ext-print-dialog select{vertical-align:middle;outline:none}.ol-ext-print-dialog .ol-orientation{text-align:center}.ol-ext-print-dialog .ol-orientation label{cursor:pointer;width:7em;position:relative}.ol-ext-print-dialog .ol-orientation input{opacity:0;width:0;height:0;position:absolute}.ol-ext-print-dialog .ol-orientation span{width:80%;padding:3.5em 0 .2em;display:block;position:relative}.ol-ext-print-dialog .ol-orientation span:before{content:"";color:#333;opacity:.5;background-color:currentColor;border:1px solid;border-radius:0 1em 0 0;width:2em;height:2.6em;position:absolute;bottom:1.5em;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:inset 1.3em -1.91em #ddd}.ol-ext-print-dialog .ol-orientation .landscape span:before{width:2.6em;height:2em;margin:.2em 0;box-shadow:inset 1.91em -1.3em #ddd}.ol-ext-print-dialog .ol-orientation input:checked+span{opacity:1;box-shadow:0 0 .2em #00000080}.ol-ext-print-dialog .ol-ext-toggle-switch span{position:absolute;top:50%;right:-2em;transform:translateY(-50%)}.ol-print-title input[type=text]{width:calc(100% - 6em);margin-top:.5em;margin-left:6em}.ol-ext-print-dialog .ol-size option:first-child{font-style:italic}.ol-ext-print-dialog .ol-saveas,.ol-ext-print-dialog .ol-savelegend{text-align:center}.ol-ext-print-dialog .ol-saveas select,.ol-ext-print-dialog .ol-savelegend select{color:#fff;background-color:#003c88b3;border:0;max-width:12em;margin:1em 0 0;padding:.5em;font-size:1em;font-weight:700}.ol-ext-print-dialog .ol-saveas select option,.ol-ext-print-dialog .ol-savelegend select option{color:#666;background-color:#fff}.ol-ext-print-dialog .ol-savelegend select{margin-top:0}.ol-ext-print-dialog .ol-ext-buttons{text-align:right;border-top:1px solid #ccc;margin:0 -1em;padding:.8em .5em}.ol-ext-print-dialog button{color:#333;background:0 0;border:1px solid #999;margin:0 .2em;padding:.3em 1em;font-size:1em}.ol-ext-print-dialog button[type=submit]{color:#fff;background-color:#003c88b3;font-weight:700}.ol-ext-print-dialog .ol-clipboard-copy{pointer-events:none;color:#fff;opacity:0;background-color:#00000080;border-radius:1em;width:fit-content;padding:.5em 1em;transition:all;position:absolute;top:0;left:50%;transform:translate(-50%)}.ol-ext-print-dialog .ol-clipboard-copy.visible{animation:1s ol-clipboard-copy}.ol-ext-print-dialog .ol-print-map .ol-control.ol-canvas-control,.ol-ext-print-dialog .ol-print-map .ol-control.ol-print-compass{display:block!important}.ol-ext-print-dialog .ol-print-map .ol-control.olext-print-compass{width:60px;height:60px;margin:20px;top:0;right:0}.ol-ext-print-dialog .ol-orientation input:focus-visible+span,.ol-ext-print-dialog select:focus-visible{outline:2px solid #000}@keyframes ol-clipboard-copy{0%{opacity:0;top:0}80%{opacity:1;top:-3em}to{opacity:0;top:-3em}}@media print{body.ol-print-document{margin:0!important;padding:0!important}body.ol-print-document>*{display:none!important}body.ol-print-document>.ol-ext-print-dialog{display:block!important}body.ol-print-document>.ol-ext-print-dialog .ol-content{max-height:unset!important;max-width:unset!important;width:unset!important;height:unset!important}.ol-ext-print-dialog>form,.ol-ext-print-dialog{position:unset;-webkit-box-shadow:none;box-shadow:none;border:0;background:0 0!important}.ol-ext-print-dialog>form>*,.ol-ext-print-dialog .ol-print-param{background:0 0;display:none!important}.ol-ext-print-dialog .ol-content{background:0 0;border:0;display:block!important}.ol-ext-print-dialog .ol-print-map{position:unset;background:0 0;width:auto;overflow:visible}.ol-ext-print-dialog .ol-print-map .ol-page{position:unset;-webkit-box-shadow:none!important;box-shadow:none!important;transform:none!important}}@media (width<=25em){.ol-ext-print-dialog .ol-print-param{width:13em}.ol-ext-print-dialog .ol-print-map{width:calc(100% - 13em)}.ol-ext-print-dialog .ol-print-param .ol-print-title input[type=text]{width:100%;margin:0}}.ol-ext-print-dialog2x .ol-map,.ol-ext-print-dialog2x .ol-map2{width:100%;height:50%}.ol-ext-print-dialog2x[data-orientation=landscape] .ol-map,.ol-ext-print-dialog2x[data-orientation=landscape] .ol-map2{width:50%;height:100%;display:inline-block}.ol-ext-print-dialog2x[data-clip-map] .ol-map,.ol-ext-print-dialog2x[data-swipe-orientation] .ol-map{width:100%!important;height:100%!important}.ol-ext-print-dialog2x[data-clip-map] .ol-map2,.ol-ext-print-dialog2x[data-swipe-orientation] .ol-map2{top:-100%;left:0;width:100%!important;height:100%!important;position:relative!important}.ol-profile{-webkit-user-select:none;user-select:none;position:relative}.ol-control.ol-profile{text-align:right;position:absolute;top:.5em;right:3em;overflow:hidden}.ol-profile .ol-zoom-out{cursor:pointer;border:1px solid #000;border-radius:2px;width:1em;height:1em;padding:0;position:absolute;top:10px;right:10px}.ol-profile .ol-zoom-out:before{content:"";background:currentColor;width:60%;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-profile .ol-inner{padding:.5em;font-size:.8em;position:relative}.ol-control.ol-profile .ol-inner{background-color:#ffffffb3;margin:2.3em 2px 2px;display:block}.ol-control.ol-profile.ol-collapsed .ol-inner{display:none}.ol-profile canvas{display:block}.ol-profile button{display:block;position:absolute;right:0;overflow:hidden}.ol-profile button i{width:1em;height:1em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-profile button i:before,.ol-profile button i:after{content:"";background-color:currentColor;width:1em;height:.9em;display:block;position:absolute;transform:scaleX(.8)translate(-.25em,.5em)rotate(45deg)}.ol-profile button i:after{transform:scaleX(.8)translate(.35em,.7em)rotate(45deg)}.ol-profile.ol-collapsed button{position:static}.ol-profile .ol-profilebar,.ol-profile .ol-profilecursor{pointer-events:none;width:1px;display:none;position:absolute}.ol-profile .ol-profilecursor{width:0;height:0}.ol-profile .ol-profilecursor:before{content:"";pointer-events:none;width:5px;height:5px;margin:-2px;display:block}.ol-profile .ol-profilebar,.ol-profile .ol-profilecursor:before{background:red}.ol-profile table{text-align:center;border-collapse:collapse;width:100%;margin-top:.5em}.ol-profile table tr{border-top:1px solid #00000040;margin:.1em 0}.ol-profile table td{padding:2px}.ol-profile table span{display:block}.ol-profile table span.elevationGain,.ol-profile table span.elevationLoss{display:inline-block}.ol-profilepopup{white-space:nowrap;background-color:#ffffff80;margin:.5em;padding:0 .5em;position:absolute;top:-1em}.ol-profilepopup.ol-left{right:0}.ol-profile table .track-info{display:table-row}.ol-profile table .point-info,.ol-profile .over table .track-info{display:none}.ol-profile .over table .point-info{display:table-row}.ol-profile p{text-align:center;margin:0}.ol-control.ol-progress-bar{background-color:#0000;padding:0;position:absolute;inset:0;pointer-events:none!important}.ol-control.ol-progress-bar>.ol-bar{box-sizing:border-box;background-color:#003c8880;width:0;height:.5em;transition:width .2s;position:absolute;bottom:0;left:0}.ol-progress-bar>.ol-waiting{display:none}.ol-viewport .ol-control.ol-progress-bar>.ol-waiting{color:#fff;font-size:2em;animation:1s linear infinite ol-progress-bar-blink;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes ol-progress-bar-blink{0%,30%{visibility:hidden}to{visibility:visible}}.ol-control.ol-routing{max-height:90%;top:.5em;left:3em;overflow-y:auto}.ol-touch .ol-control.ol-routing{left:3.5em}.ol-control.ol-routing.ol-searching{opacity:.5}.ol-control.ol-routing .ol-car,.ol-control.ol-routing>button{position:relative}.ol-control.ol-routing .ol-car:after,.ol-control.ol-routing>button:after{content:"";clip:rect(0 1em .5em -1em);border-radius:40% 50% 0 0/50% 70% 0 0;width:.78em;height:.6em;position:absolute;top:.35em;left:.4em;box-shadow:inset 0 0 0 .065em,-.35em .14em 0 -.09em,inset 0 -.37em,inset -.14em .005em}.ol-control.ol-routing .ol-car:before,.ol-control.ol-routing>button:before{content:"";border-radius:50%;width:.28em;height:.28em;position:absolute;top:.73em;left:.2em;box-shadow:inset 0 0 0 1em,.65em 0}.ol-control.ol-routing .ol-pedestrian:after{content:"";border-top:.2em solid #0000;width:.3em;height:.4em;position:absolute;top:.25em;left:50%;transform:translate(-50%);box-shadow:inset .3em 0,.1em .5em 0 -.1em,-.1em .5em 0 -.1em,.25em .1em 0 -.1em,-.25em .1em 0 -.1em}.ol-control.ol-routing .ol-pedestrian:before{content:"";background-color:currentColor;border-radius:50%;width:.3em;height:.3em;position:absolute;top:.1em;left:50%;transform:translate(-50%)}.ol-control.ol-routing .content{margin:.5em}.ol-control.ol-routing.ol-collapsed .content,.ol-routing .ol-search.ol-collapsed ul,.ol-routing .ol-search ul .copy{display:none}.ol-routing .content .search-input>div>*{vertical-align:top;display:inline-block}.ol-routing .ol-result ul{list-style:none;display:block}.ol-routing .ol-result li{min-height:1.65em;position:relative}.ol-routing .ol-result li i{font-size:.8em;font-weight:700;display:block}.ol-routing .ol-result li:before{content:"";transform-origin:50% 125%;border:.4em solid #0000;border-top-width:.6em;border-bottom:.6em solid #369;position:absolute;top:-.8em;left:-1.75em;box-shadow:0 .65em 0 -.25em #369}.ol-routing .ol-result li:after{content:"";background:#369;border-radius:.1em;width:.25em;height:.6em;position:absolute;top:.6em;left:-1.5em}.ol-routing .ol-result li.R:before{transform:rotate(90deg)}.ol-routing .ol-result li.FR:before{transform:rotate(45deg)}.ol-routing .ol-result li.L:before{transform:rotate(-90deg)}.ol-routing .ol-result li.FL:before{transform:rotate(-45deg)}.ol-routing .content>i{vertical-align:middle;margin:0 .3em 0 .1em;font-style:normal}.ol-routing .ol-button,.ol-routing .ol-button:focus,.ol-routing .ol-pedestrian,.ol-routing .ol-car{color:#003c88;opacity:.5;vertical-align:middle;cursor:pointer;background-color:#0000;outline:none;width:1.4em;height:1.4em;margin:0 .1em;font-size:1.1em;display:inline-block;position:relative}.ol-routing .ol-constraints{display:block}.ol-routing .ol-button:hover,.ol-routing .ol-button.selected,.ol-routing i.selected{opacity:1;background:0 0}.ol-routing .ol-method{display:block}.ol-control.ol-routing{background-color:#ffffff40}.ol-control.ol-routing:hover{background-color:#ffffffbf}.search-input>div>button:before{content:"±"}.ol-viewport .ol-scale{text-align:center;transform-origin:0 0;background-color:#ffffffbf;bottom:2.5em;left:.5em;transform:scaleX(.8)}.ol-viewport .ol-scale input{text-align:center;background:0 0;border:0;width:8em}.ol-search{top:.5em;left:3em}.ol-touch .ol-search{left:3.5em}.ol-search button{float:left;top:2px;left:2px}.ol-control.ol-search>button:before{content:"";box-sizing:border-box;background-color:#0000;border:.12em solid;border-radius:100%;width:.7em;height:.7em;position:absolute;top:.35em;left:.35em}.ol-control.ol-search>button:after{content:"";background-color:currentColor;border-radius:.05em;width:.45em;height:.15em;position:absolute;top:1.1em;left:.95em;transform:rotate(45deg);box-shadow:-.18em 0 0 -.03em}.ol-search button.ol-revers{float:none;vertical-align:bottom;background-image:none;display:inline-block;position:relative;top:0;left:0}.ol-search.ol-revers button.ol-revers{background-color:#00883c80}.ol-control.ol-search.ol-collapsed button.ol-revers{display:none}.ol-search button.ol-revers:before{content:"";box-sizing:border-box;border:.1em solid;border-radius:50%;width:.55em;height:.55em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-search button.ol-revers:after{content:"";background-color:#0000;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.35em 0,0 .35em,-.35em 0,0 -.35em}.ol-search input{box-sizing:border-box;border:0;height:1.375em;margin:1px 1px 1px 2px;padding-left:.3em;font-size:1.14em;transition:all .1s;display:inline-block}.ol-touch .ol-search input,.ol-touch .ol-search ul{font-size:1.5em}.ol-search.ol-revers>ul,.ol-control.ol-search.ol-collapsed>*{display:none}.ol-control.ol-search.ol-collapsed>button{display:block}.ol-search ul{clear:both;cursor:pointer;z-index:1;background:#fff;max-width:17em;margin:0;padding:0;list-style:none;display:block;overflow-x:hidden}.ol-search ul li{white-space:nowrap;text-overflow:ellipsis;padding:.1em .5em;overflow:hidden}.ol-search ul li.select,.ol-search ul li:hover{color:#fff;background-color:#003c8880}.ol-search ul li img{float:left;max-height:2em}.ol-search li.copy{color:#fff;background:#00000080}.ol-search li.copy a{color:#fff;text-decoration:none}.ol-search.searching:before{content:"";z-index:2;background:red;height:3px;animation:.5s linear infinite alternate ol-pulse;position:absolute;top:1.6em;left:0}@keyframes ol-pulse{0%{left:0;right:95%}50%{left:30%;right:30%}to{left:95%;right:0}}.ol-control.ol-search.IGNF-parcelle{background-color:#ffffffb3;padding-bottom:.2em}.ol-search.IGNF-parcelle input{width:14.5em}.ol-search.IGNF-parcelle input:read-only{opacity:.8;background:#ccc}.ol-search.IGNF-parcelle.ol-collapsed-list>ul.autocomplete{display:none}.ol-search.IGNF-parcelle label{clear:both;display:block}.ol-search.IGNF-parcelle>div input{text-align:right}.ol-search.IGNF-parcelle>div input,.ol-search.IGNF-parcelle>div label{box-sizing:border-box;text-overflow:ellipsis;width:4em;margin:.1em;font-size:1em;display:inline-block;overflow:hidden}.ol-search.IGNF-parcelle>div label{letter-spacing:-.04em}.ol-search.IGNF-parcelle ul.autocomplete-page{text-align:center;width:100%;margin-top:.5em;display:none}.ol-search.IGNF-parcelle.ol-collapsed-list ul.autocomplete-parcelle,.ol-search.IGNF-parcelle.ol-collapsed-list ul.autocomplete-page{display:block}.ol-search.IGNF-parcelle.ol-collapsed ul.autocomplete-page,.ol-search.IGNF-parcelle.ol-collapsed ul.autocomplete-parcelle,.ol-search.IGNF-parcelle ul.autocomplete-parcelle{display:none}.ol-search.IGNF-parcelle ul.autocomplete-page li{color:#fff;background:#003c8880;border-radius:50%;width:1.3em;height:1.3em;margin:0 .1em;padding:.1em;display:inline-block}.ol-search.IGNF-parcelle ul.autocomplete-page li.selected{background:#003c88}.ol-searchgps input.search,.ol-searchcoord input.search{display:none}.ol-control.ol-searchgps>button:first-child,.ol-control.ol-searchcoord>button:first-child{background-image:none}.ol-control.ol-searchgps>button:first-child:before,.ol-control.ol-searchcoord>button:first-child:before{content:"x/y";position:unset;border:unset;border-radius:0;width:auto;height:auto;display:block;transform:scaleX(.8)}.ol-control.ol-searchgps>button:first-child:after,.ol-control.ol-searchcoord>button:first-child:after{content:unset}.ol-control.ol-searchgps .ol-latitude,.ol-control.ol-searchgps .ol-longitude,.ol-control.ol-searchcoord .ol-latitude,.ol-control.ol-searchcoord .ol-longitude{clear:both}.ol-control.ol-searchgps .ol-latitude label,.ol-control.ol-searchgps .ol-longitude label,.ol-control.ol-searchcoord .ol-latitude label,.ol-control.ol-searchcoord .ol-longitude label{text-align:right;transform-origin:0 0;width:5.5em;margin:0 -.8em 0 0;display:inline-block;transform:scaleX(.8)}.ol-control.ol-searchcoord .ol-latitude label,.ol-control.ol-searchcoord .ol-longitude label{width:2em;margin:0}.ol-control.ol-searchgps .ol-latitude input,.ol-control.ol-searchgps .ol-longitude input{max-width:10em}.ol-control.ol-searchgps .ol-ext-toggle-switch{cursor:pointer;float:right;margin:.5em;font-size:.9em}.ol-searchgps .ol-decimal{margin-right:.7em;display:inline-block}.ol-searchgps .ol-dms,.ol-searchgps.ol-dms .ol-decimal{text-align:right;width:3em;display:none}.ol-searchgps.ol-dms .ol-dms{display:inline-block}.ol-searchgps span.ol-dms{text-align:left;width:.5em}.ol-searchgps.ol-control.ol-collapsed button.ol-geoloc,.ol-searchgps.ol-control.ol-collapsed button.ol-centerloc,.ol-searchcoord.ol-control.ol-collapsed button.ol-centerloc,.ol-searchcoord.ol-control.ol-collapsed button.ol-geoloc{display:none}.ol-searchgps button.ol-geoloc,.ol-searchgps button.ol-centerloc,.ol-searchcoord button.ol-centerloc,.ol-searchcoord button.ol-geoloc{float:right;background-image:none;margin-right:3px;position:relative;top:0}.ol-searchgps button.ol-geoloc:before,.ol-searchcoord button.ol-geoloc:before{content:"";border:.1em solid;border-radius:50%;width:.6em;height:.6em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-searchgps button.ol-geoloc:after,.ol-searchcoord button.ol-geoloc:after{content:"";background-color:#0000;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.45em 0,-.45em 0,0 -.45em,0 .45em,.25em 0,-.25em 0,0 -.25em,0 .25em}.ol-searchgps button.ol-centerloc:before,.ol-searchcoord button.ol-centerloc:before{content:"📍";border:0;width:auto;height:auto;padding:0;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-searchgps button.ol-centerloc:after,.ol-searchcoord button.ol-centerloc:after{display:none}.ol-control.ol-select{background-color:#ffffff80;top:.5em;left:3em}.ol-control.ol-select:hover{background-color:#ffffffb3}.ol-touch .ol-control.ol-select{left:3.5em}.ol-control.ol-select>button:before{content:"A";box-sizing:content-box;text-align:center;background-color:#0000;border:.2em solid;border-radius:100%;width:1em;height:1em;font-size:.6em;font-weight:400;line-height:1em;position:absolute;top:.5em;left:.5em}.ol-control.ol-select>button:after{content:"";background-color:currentColor;border-radius:.05em;width:.45em;height:.15em;position:absolute;top:1.15em;left:1em;transform:rotate(45deg);box-shadow:-.18em 0 0 -.03em}.ol-select>div button{float:right;width:auto;height:1.2em;padding:0 .5em;font-weight:400;line-height:1.2em}.ol-select .ol-delete{vertical-align:middle;cursor:pointer;width:1.5em;height:1em;display:inline-block;position:relative}.ol-select .ol-delete:before{content:"×";text-align:center;width:100%;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-select input{font-size:1em}.ol-control.ol-select select{max-width:10em;font-size:1em}.ol-control.ol-select select option.ol-default{color:#999;font-style:italic}.ol-control.ol-select>div{margin:.25em;display:block}.ol-control.ol-select.ol-collapsed>div{display:none}.ol-control.ol-select.ol-select-check{max-width:20em}.ol-control.ol-select label.ol-ext-check{margin-right:1em}.ol-control.ol-select label.ol-ext-toggle-switch span{font-size:1.1em}.ol-select ul{margin:0;padding:0;list-style:none}.ol-control.ol-select input[type=search],.ol-control.ol-select input[type=text]{width:8em}.ol-select .ol-autocomplete{display:inline}.ol-select .ol-autocomplete ul{background:#fff;border:1px solid #999;min-width:10em;font-size:.85em;display:block;position:absolute}.ol-select .ol-autocomplete ul li{padding:0 .5em}.ol-select .ol-autocomplete ul li:hover{color:#fff;background:#003c8880}.ol-select ul.ol-hidden{display:none}.ol-select-multi li>div:hover,.ol-select-multi li>div.ol-control.ol-select{top:unset;left:unset;background:0 0;position:relative}.ol-select-multi li>div>button,.ol-select-multi li>div .ol-ok{display:none}.ol-select-multi li .ol-control.ol-select.ol-collapsed>div,.ol-select-multi li>div>div{display:block}.ol-control.ol-status{color:#fff;box-sizing:border-box;background:#0003;border-radius:0;width:100%;padding:.3em 3em;font-size:.9em;display:none;top:0;left:0;pointer-events:none!important}.ol-control.ol-status.ol-visible{display:initial}.ol-control.ol-status.ol-bottom{top:auto;bottom:0}.ol-control.ol-status.ol-left{width:auto;padding:.3em .5em .3em 3em;top:0;bottom:0}.ol-control.ol-status.ol-right{width:auto;padding:.3em 3em .3em .5em;inset:0 0 0 auto}.ol-control.ol-status.ol-center{top:50%;transform:translateY(-50%)}.ol-control.ol-storymap{background-color:#ffffff80;border-radius:.5em;max-width:35%;height:auto;position:absolute;top:.5em;bottom:.5em;left:.5em}.ol-storymap{height:100%;padding:0;position:relative;overflow:hidden}.ol-storymap>div{scroll-behavior:smooth;-webkit-user-select:none;user-select:none;height:100%;padding:0;position:relative;overflow:hidden}.ol-storymap>div.ol-move{scroll-behavior:unset}.ol-control.ol-storymap .chapter{padding:.5em;position:relative;overflow:hidden}.ol-control.ol-storymap .chapter:last-child{margin-bottom:100%}.ol-storymap .chapter{cursor:pointer;opacity:.4}.ol-storymap .chapter.ol-select{cursor:default;opacity:1;background-color:#fffc}.ol-storymap .ol-scroll-top,.ol-storymap .ol-scroll-next{color:#003c8880;text-align:center;cursor:pointer;min-height:1.7em;position:relative}.ol-storymap .ol-scroll-next span{padding-bottom:1.4em;display:block}.ol-storymap .ol-scroll-top span{padding-top:1.4em;display:block}.ol-storymap .ol-scroll-top:before,.ol-storymap .ol-scroll-next:before{content:"";pointer-events:none;border:.3em solid;border-color:#0000 currentColor currentColor #0000;border-radius:.3em;width:.8em;height:.8em;animation:.35s linear infinite alternate ol-bounce-bottom;display:block;position:absolute;left:50%;transform:translate(-50%)rotate(45deg)}.ol-storymap .ol-scroll-top:before{border-color:currentColor #0000 #0000 currentColor;animation:.35s linear infinite alternate ol-bounce-top}@keyframes ol-bounce-top{0%{top:-.2em}to{top:.5em}}@keyframes ol-bounce-bottom{0%{bottom:-.2em}to{bottom:.5em}}.ol-storymap img[data-title]{cursor:pointer}.ol-storymap.scrollLine,.ol-storymap.scrollBox{background-color:#0000;border-radius:0;max-width:40%;top:0;bottom:0}.ol-storymap.scrollLine .chapter,.ol-storymap.scrollBox .chapter{background-color:#fff;margin:100% 0}.ol-storymap.scrollLine .chapter:first-child,.ol-storymap.scrollBox .chapter:first-child{margin-top:3em}.ol-storymap.scrollLine .chapter.ol-select,.ol-storymap.scrollLine .chapter,.ol-storymap.scrollBox .chapter.ol-select,.ol-storymap.scrollBox .chapter{opacity:1}.ol-storymap.scrollLine .ol-scrolldiv,.ol-storymap.scrollBox .ol-scrolldiv{padding-right:30px}.ol-storymap.scrollLine:before,.ol-storymap.scrollBox:before{content:"";background-color:#fff;width:2px;height:100%;position:absolute;top:0;bottom:0;right:14px}.ol-storymap.scrollLine .ol-scroll,.ol-storymap.scrollBox .ol-scroll{width:1px;padding:0;transition:none;right:15px;overflow:visible;opacity:1!important;display:block!important}.ol-storymap.scrollLine .ol-scroll>div{-webkit-box-shadow:unset;box-shadow:unset;background-color:#0000;left:50%;overflow:visible;transform:translate(-50%)}.ol-storymap.scrollLine .ol-scroll>div:before{content:"";background-color:#0af;border:2px solid #fff;border-radius:50%;width:10px;height:10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-storymap.scrollBox .ol-scroll>div{display:none}.ol-storymap.scrollBox .chapter:after{content:"";box-sizing:border-box;z-index:1;border:5px solid #0000;border-radius:50%;width:20px;height:20px;position:absolute;top:min(30%,5em);right:-24.5px;box-shadow:0 0 0 2px #fff,inset 0 0 0 15px #0af}.ol-swipe{-ms-touch-action:none;touch-action:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-swipe:before{content:"";z-index:-1;background:#fff;width:4px;position:absolute;top:-5000px;bottom:-5000px;left:50%;transform:translate(-2px)}.ol-swipe.horizontal:before{width:auto;height:4px;inset:50% -5000px auto}.ol-swipe,.ol-swipe button{cursor:ew-resize}.ol-swipe.horizontal,.ol-swipe.horizontal button{cursor:ns-resize}.ol-swipe:after,.ol-swipe button:before,.ol-swipe button:after{content:"";background:currentColor;width:2px;position:absolute;top:25%;bottom:25%;left:50%;transform:translate(-1px)}.ol-swipe button:after{transform:translate(4px)}.ol-swipe button:before{transform:translate(-6px)}.ol-control.ol-timeline{background-color:#fff6;transition:all .3s;bottom:0;left:0;right:0}.ol-control.ol-timeline.ol-collapsed{transform:translateY(100%)}.ol-timeline{padding:2px 0 0;overflow:hidden}.ol-timeline .ol-scroll{scroll-behavior:smooth;height:6em;padding:0 50%;line-height:1em;overflow:hidden}.ol-timeline .ol-scroll.ol-move{scroll-behavior:unset}.ol-timeline.ol-hasbutton .ol-scroll{margin-left:1.5em;padding:0 calc(50% - .75em)}.ol-timeline .ol-buttons{z-index:10;background:#ffffff80;width:1.5em;display:none;position:absolute;top:0;bottom:0;left:0}.ol-timeline.ol-hasbutton .ol-buttons{display:block}.ol-timeline .ol-buttons button{margin:1px;font-size:1em;position:relative}.ol-timeline .ol-buttons .ol-zoom-in:before,.ol-timeline .ol-buttons .ol-zoom-out:before{content:"+";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-timeline .ol-buttons .ol-zoom-out:before{content:"−"}.ol-timeline .ol-scroll>div{height:100%;position:relative}.ol-timeline .ol-scroll .ol-times{background:#ffffff80;height:1em;position:absolute;bottom:0;left:-1000px;right:-1000px}.ol-timeline .ol-scroll .ol-time{color:#999;font-size:.7em;position:absolute;bottom:0;transform:translate(-50%)}.ol-timeline .ol-scroll .ol-time.ol-year{color:#666;z-index:1}.ol-timeline .ol-scroll .ol-time:before{content:"";border-left:1px solid;height:500px;position:absolute;bottom:1.2em;left:50%}.ol-timeline .ol-scroll .ol-features{margin:0 0 0 200px;position:absolute;inset:0 -1000px 1em -200px;overflow:hidden}.ol-timeline .ol-scroll .ol-feature{color:#999;cursor:pointer;box-sizing:border-box;background:#fff;border:1px solid #ccc;max-width:3em;min-height:1em;max-height:2.4em;padding:0 .5em 0 0;font-size:.7em;line-height:1.2em;transition:all .3s;position:absolute;top:0;overflow:hidden}.ol-timeline.ol-zoomhover .ol-scroll .ol-feature:hover,.ol-timeline.ol-zoomhover .ol-scroll .ol-feature.ol-select{z-index:1;background:#eee;transform:scale(1.2)}.ol-timeline .ol-center-date{z-index:2;pointer-events:none;opacity:.4;background-color:red;width:2px;height:100%;display:none;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.ol-timeline.ol-hasbutton .ol-center-date{left:calc(50% + .75em)}.ol-timeline.ol-pointer .ol-center-date{display:block}.ol-timeline.ol-pointer .ol-center-date:before,.ol-timeline.ol-pointer .ol-center-date:after{content:"";border:.3em solid #0000;border-width:.3em .25em;position:absolute;left:50%;transform:translate(-50%)}.ol-timeline.ol-pointer .ol-center-date:before{border-top-color:red;top:0}.ol-timeline.ol-pointer .ol-center-date:after{border-bottom-color:red;bottom:0}.ol-timeline.ol-interval .ol-center-date{box-sizing:content-box;opacity:.2;background-color:#0000;border:0 solid #000;border-width:0 10000px;display:block}.ol-control.ol-videorec{white-space:nowrap;top:0;left:50%;transform:translate(-50%)}.ol-control.ol-videorec button{vertical-align:middle;display:inline-block;position:relative}.ol-control.ol-videorec button:before{content:"";background-color:currentColor;width:.8em;height:.8em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-videorec button.ol-start:before{background-color:#c00;border-radius:50%;width:.9em;height:.9em}.ol-control.ol-videorec button.ol-pause:before{background-color:#0000;width:.2em;box-shadow:-.2em 0,.2em 0}.ol-control.ol-videorec button.ol-resume:before{box-sizing:border-box;background:0 0;border:.4em solid #0000;border-left:.6em solid;border-right-width:0;width:auto}.ol-control.ol-videorec button.ol-stop,.ol-control.ol-videorec button.ol-pause,.ol-control.ol-videorec button.ol-resume,.ol-control.ol-videorec[data-state=rec] .ol-start,.ol-control.ol-videorec[data-state=pause] .ol-start{display:none}.ol-control.ol-videorec[data-state=rec] .ol-stop,.ol-control.ol-videorec[data-state=pause] .ol-stop,.ol-control.ol-videorec[data-state=rec] .ol-pause,.ol-control.ol-videorec[data-state=pause] .ol-resume{display:inline-block}.ol-control.ol-wmscapabilities{top:.5em;right:2.5em}.ol-touch .ol-control.ol-wmscapabilities{right:3em}.ol-control.ol-wmscapabilities.ol-hidden{display:none}.ol-control.ol-wmscapabilities button:before{content:"+";position:absolute;top:calc(50% - .35em);left:50%;transform:translate(-50%,-50%)}.ol-control.ol-wmscapabilities button:after{content:"";background:0 0;border:.15em solid #0000;border-width:0 .15em .15em 0;border-radius:.1em 0;width:.75em;height:.75em;position:absolute;top:calc(50% - .05em);left:50%;transform:scaleY(.6)translate(-50%,-50%)rotate(45deg);box-shadow:inset -.18em -.18em,-.4em .1em 0 -.25em,.1em -.35em 0 -.25em,.15em .15em}.ol-wmscapabilities .ol-searching{opacity:.5}.ol-wmscapabilities .ol-searching .ol-url:after{content:"";background-color:currentColor;border-radius:50%;width:.7em;height:.7em;animation:2s linear infinite ol-wmscapabilities-rotate;display:block;position:absolute;top:6em;left:calc(50% - .35em);box-shadow:0 1em,0 -1em,1em 0,-1em 0}@keyframes ol-wmscapabilities-rotate{to{transform:rotate(360deg)}}.ol-wmscapabilities .ol-url input{box-sizing:border-box;width:calc(100% - 10em);min-width:min(100%,20em)}.ol-wmscapabilities .ol-url select{width:2em;height:100%;padding:1px}.ol-wmscapabilities .ol-url button{width:7.5em;margin-left:.5em}.ol-wmscapabilities .ol-result{margin-top:.5em;display:none}.ol-wmscapabilities .ol-result.ol-visible{display:block}.ol-wmscapabilities .ol-select-list{box-sizing:border-box;border:1px solid #369;border-radius:0;width:calc(100% - 120px);max-height:14.5em;font-size:1em;position:relative;overflow-x:hidden}.ol-wmscapabilities .ol-select-list option{cursor:pointer;box-sizing:border-box;text-overflow:ellipsis;width:100%;padding:.1em .5em 0;overflow:hidden}.ol-wmscapabilities .ol-select-list .level-1{padding-left:1em}.ol-wmscapabilities .ol-select-list .level-2{padding-left:1.5em}.ol-wmscapabilities .ol-select-list .level-3{padding-left:2em}.ol-wmscapabilities .ol-select-list .level-4{padding-left:2.5em}.ol-wmscapabilities .ol-select-list .level-5{padding-left:3em}.ol-wmscapabilities .ol-select-list .ol-info{font-style:italic}.ol-wmscapabilities .ol-select-list .ol-title{background-color:#003c881a}.ol-wmscapabilities .ol-select-list option:hover{color:#fff;background-color:#003c8880}.ol-wmscapabilities .ol-select-list .selected{color:#fff;background-color:#003c88b3}.ol-wmscapabilities .ol-preview{float:right;color:#666;text-align:center;background:#003c881a;width:100px;margin-left:10px;padding:0 5px 5px}.ol-wmscapabilities .ol-preview.tainted{float:right;color:#666;text-align:center;background:#88003c1a;width:100px;margin-left:10px;padding:0 5px 5px}.ol-wmscapabilities .ol-preview img{background:#fff;width:100%;display:block}.ol-wmscapabilities .ol-legend{max-width:100%;display:none}.ol-wmscapabilities .ol-legend.visible{display:block}.ol-wmscapabilities .ol-buttons{clear:both;text-align:right}.ol-wmscapabilities .ol-data p{margin:0}.ol-wmscapabilities .ol-data p.ol-title{margin:1em 0 .5em;font-weight:700}.ol-wmscapabilities .ol-error{color:#800}.ol-wmscapabilities ul.ol-wmsform{padding:0;list-style:none;display:none}.ol-wmscapabilities ul.ol-wmsform.visible{display:block}.ol-wmscapabilities .ol-wmsform label{text-align:right;width:calc(40% - .5em);margin-right:.5em;display:inline-block}.ol-wmscapabilities .ol-wmsform input{box-sizing:border-box;width:60%;display:inline-block}.ol-wmscapabilities .ol-wmsform input[type=checkbox]{width:auto}.ol-wmscapabilities .ol-wmsform button{float:right;margin:1em 0}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] input{width:calc(60% - 2em)}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button{vertical-align:middle;color:#444;width:2em;height:1.6em;margin:0;position:relative}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:before,.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:after{content:"";border:.1em solid;width:.25em;height:.9em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)skewY(-15deg)}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:after{transform:translate(.4em)translate(-50%,-50%)skewY(15deg);box-shadow:-.8em .25em}.ol-ext-dialog.ol-wmscapabilities form{width:600px;min-height:15em;top:15%;transform:translate(-50%,-15%)}.ol-ext-dialog.ol-wmscapabilities .ol-content{max-height:calc(100vh - 6em)}.ol-ext-dialog.ol-wmtscapabilities [data-param=map],.ol-ext-dialog [data-param=style]{display:none}.ol-ext-dialog.ol-wmtscapabilities [data-param=style]{display:list-item}.ol-ext-dialog.ol-wmtscapabilities [data-param=proj],.ol-ext-dialog.ol-wmtscapabilities [data-param=version]{opacity:.6;pointer-events:none}.ol-ext-dialog.ol-wmscapabilities button.ol-wmsform{text-align:center;width:1.8em}.ol-ext-dialog.ol-wmscapabilities button.ol-wmsform:before{content:"+"}.ol-ext-dialog.ol-wmscapabilities .ol-form button.ol-wmsform:before{content:"-"}.ol-ext-dialog.ol-wmscapabilities .ol-form button.ol-load,.ol-ext-dialog.ol-wmscapabilities .ol-form .ol-legend{display:none}.ol-ext-dialog.ol-wmscapabilities .ol-form ul.ol-wmsform{clear:both;display:block}.ol-target-overlay .ol-target{border:1px solid #0000;width:0;height:20px;display:block;box-shadow:0 0 1px 1px #fff}.ol-target-overlay .ol-target:after,.ol-target-overlay .ol-target:before{content:"";border:1px solid #369;width:20px;height:0;display:block;position:absolute;top:10px;left:-10px;box-shadow:0 0 1px 1px #fff}.ol-target-overlay .ol-target:after{-webkit-box-shadow:none;box-shadow:none;width:0;height:20px;top:0;left:0}.ol-overlaycontainer .ol-touch-cursor{cursor:pointer;background:#fff6;border-radius:50%;width:56px;height:56px;margin:6px;box-shadow:inset 0 0 0 5px #369}.ol-overlaycontainer .ol-touch-cursor:after{content:"";transform-origin:100% 100%;background:radial-gradient(circle at 100% 100%,#0000,#0000 70%,#369 70%,#369);width:50%;height:50%;position:absolute;top:0;left:0}.ol-overlaycontainer .ol-touch-cursor-center{margin-top:16px;margin-left:-28px}.ol-overlaycontainer .ol-touch-cursor-center:after{transform:rotate(45deg)}.ol-overlaycontainer .ol-touch-cursor-right{margin-left:-62px}.ol-overlaycontainer .ol-touch-cursor-right:after{transform:rotate(90deg)}.ol-overlaycontainer .ol-touch-cursor .ol-button{color:#369;cursor:pointer;background:#fff6;border-radius:50%;width:55%;height:55%;transition:all .5s,opacity,background;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)scale(0);box-shadow:inset 0 0 0 3px}.ol-overlaycontainer .ol-touch-cursor.active.disable .ol-button{opacity:.8;background:#3693}.ol-overlaycontainer .ol-touch-cursor.active .ol-button{transform:translate(-50%,-50%)scale(1)}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-0{top:-18%;left:118%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-1{top:50%;left:140%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-2{top:120%;left:120%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-3{top:140%;left:50%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-4{top:118%;left:-18%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-5{top:50%;left:-40%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-6{top:-18%;left:-18%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-7{top:-40%;left:50%}.ol-overlaycontainer .ol-touch-cursor .ol-button:before{content:"";text-align:center;width:1.5em;height:1em;line-height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-add:before,.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-remove:before{content:"−";font-size:1.375em;font-weight:700;line-height:.95em}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-add:before{content:"+"}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-x:before{content:"×";font-size:1.2em;font-weight:700}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-move:before{content:"✥";font-size:1.2em}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-check:before{content:"✓";font-weight:700}.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-x,.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-remove,.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-check{opacity:.8;background:#3693}.ol-overlaycontainer .ol-touch-cursor .ol-button>div{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlaycontainer .ol-touch-cursor .ol-button-type:before{content:"⇎";font-weight:700}.mapboxgl-canvas:focus{outline:none}.ol-perspective-map{width:200%;height:200%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-perspective-map .ol-layer{z-index:-1!important}.ol-perspective-map .ol-layers{transform:translateY(0)perspective(200px)rotateX(0)scaleY(1)}.ol-perspective-map .ol-overlaycontainer,.ol-perspective-map .ol-overlaycontainer-stopevent{top:50%;left:50%;transform:translate(-50%,-50%);width:50%!important;height:50%!important}.ol-overlay-container .ol-magnify{z-index:0;background:#00000080;border:3px solid #369;border-radius:50%;width:150px;height:150px;position:relative;overflow:hidden;box-shadow:5px 5px 5px #00000080}.ol-overlay-container .ol-magnify:before{content:"";z-index:1;border-radius:50%;width:100%;height:100%;display:block;position:absolute;top:0;left:0;box-shadow:inset 0 0 40px 2px #00000040}.ol-overlay-container .ol-magnify:after{content:"";z-index:1;border-radius:50%;width:20%;height:0;display:block;position:absolute;top:20%;left:23%;transform:rotate(-40deg);box-shadow:0 0 20px 7px #fff}.ol-popup.anim{visibility:hidden}.ol-popup.anim.visible{visibility:visible}.ol-popup.anim.visible>div{visibility:visible;animation:.4s ol-popup_bounce;transform:none}@keyframes ol-popup_bounce{0%{transform:scale(0)}50%{transform:scale(1.1)}80%{transform:scale(.95)}to{transform:scale(1)}}.ol-popup.anim.ol-popup-bottom.ol-popup-left>div{transform-origin:0 100%}.ol-popup.anim.ol-popup-bottom.ol-popup-right>div{transform-origin:100% 100%}.ol-popup.anim.ol-popup-bottom.ol-popup-center>div{transform-origin:50% 100%}.ol-popup.anim.ol-popup-top.ol-popup-left>div{transform-origin:0 0}.ol-popup.anim.ol-popup-top.ol-popup-right>div{transform-origin:100% 0}.ol-popup.anim.ol-popup-top.ol-popup-center>div{transform-origin:50% 0}.ol-popup.anim.ol-popup-middle.ol-popup-left>div{transform-origin:0}.ol-popup.anim.ol-popup-middle.ol-popup-right>div{transform-origin:100%}.ol-popup{-webkit-user-select:none;user-select:none;font-size:.9em}.ol-popup .ol-popup-content{cursor:default;padding:.25em .5em;overflow:hidden}.ol-popup.hasclosebox .ol-popup-content{margin-right:1.7em}.ol-popup .ol-popup-content:after{clear:both;content:"";height:0;font-size:0;display:block}.ol-popup .anchor{pointer-events:none;background:red;width:0;height:0;margin:-11px 22px;display:block;position:absolute}.ol-popup .anchor:after,.ol-popup .anchor:before{position:absolute}.ol-popup-right .anchor:after,.ol-popup-right .anchor:before{right:0}.ol-popup-top .anchor{top:0}.ol-popup-bottom .anchor{bottom:0}.ol-popup-right .anchor{right:0}.ol-popup-left .anchor{left:0}.ol-popup-center .anchor{left:50%;margin-left:0!important}.ol-popup-middle .anchor{top:50%;margin-top:0!important}.ol-popup-center.ol-popup-middle .anchor{display:none}.ol-popup.ol-fixed{margin:0!important;inset:.5em .5em auto auto!important;transform:none!important}.ol-popup.ol-fixed .anchor{display:none}.ol-popup.ol-fixed.anim>div{animation:none}.ol-popup .ol-fix{float:right;cursor:pointer;background:#fff;width:1em;height:.9em;margin:.2em;position:relative}.ol-popup .ol-fix:before{content:"";box-sizing:border-box;border:.1em solid #666;border-right-width:.3em;width:.8em;height:.7em;margin:.1em;display:block}.ol-popup.shadow{box-shadow:2px 2px 2px 2px #00000080}.ol-popup .closeBox{color:#fff;cursor:pointer;float:right;background-color:#003c8880;border:0;border-radius:2px;width:1.4em;height:1.4em;margin:5px 5px 0 0;padding:0;font-size:.9em;font-weight:700;display:none;position:relative}.ol-popup.hasclosebox .closeBox{display:block}.ol-popup .closeBox:hover{background-color:#003c88b3}.ol-popup .closeBox:after{content:"×";text-align:center;width:100%;margin:-.5em 0;font-size:1.5em;line-height:1em;position:absolute;top:50%;left:0;right:0}.ol-popup.modifytouch{background-color:#eee}.ol-popup.modifytouch .ol-popup-content{white-space:nowrap;padding:0 .25em;font-size:.85em}.ol-popup.modifytouch .ol-popup-content a{text-decoration:none}.ol-popup.tooltips{background-color:#ffa}.ol-popup.tooltips .ol-popup-content{white-space:nowrap;padding:0 .25em;font-size:.85em}.ol-popup.default>div{background-color:#fff;border:1px solid #69f;border-radius:5px}.ol-popup.default{margin:-11px 0;transform:translateY(-22px)}.ol-popup-top.ol-popup.default{margin:11px 0;transform:none}.ol-popup-left.default{margin:-11px -22px;transform:translateY(-22px)}.ol-popup-top.ol-popup-left.default{margin:11px -22px;transform:none}.ol-popup-right.default{margin:-11px 22px;transform:translate(44px,-22px)}.ol-popup-top.ol-popup-right.default{margin:11px 22px;transform:translate(44px)}.ol-popup-middle.default{margin:0 10px;transform:none}.ol-popup-middle.ol-popup-right.default{margin:0 -10px;transform:translate(-20px)}.ol-popup.default .anchor{color:#69f}.ol-popup.default .anchor:after,.ol-popup.default .anchor:before{content:"";border:11px solid;border-color:currentColor #0000;margin:0 -11px}.ol-popup.default .anchor:after{border-width:11px;border-color:#fff #0000;margin:2px -11px}.ol-popup-top.default .anchor:before,.ol-popup-top.default .anchor:after{border-top:0;top:0}.ol-popup-bottom.default .anchor:before,.ol-popup-bottom.default .anchor:after{border-bottom:0;bottom:0}.ol-popup-middle.default .anchor:before{border-color:#0000 currentColor;margin:-11px -33px}.ol-popup-middle.default .anchor:after{border-color:#0000 #fff;margin:-11px -31px}.ol-popup-middle.ol-popup-left.default .anchor:before,.ol-popup-middle.ol-popup-left.default .anchor:after{border-left:0}.ol-popup-middle.ol-popup-right.default .anchor:before,.ol-popup-middle.ol-popup-right.default .anchor:after{border-right:0}.ol-popup.placemark{color:#c00;margin:-.65em 0;transform:translateY(-1.3em)}.ol-popup.placemark>div{width:2em;height:2em;min-width:unset;box-sizing:border-box;background-color:#fff;border:0;border-radius:50%;font-size:15px;position:relative;box-shadow:inset 0 0 0 .45em}.ol-popup.placemark .ol-popup-content{cursor:default;text-align:center;width:1em;height:1em;padding:.25em 0;line-height:1em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-popup.placemark .anchor{margin:0}.ol-popup.placemark .anchor:before{content:"";background:0 0;border-radius:50%;width:1em;height:.5em;margin:-.5em;box-shadow:0 1em .5em #00000080}.ol-popup.placemark .anchor:after{content:"";border:.7em solid #0000;border-top:1em solid;border-bottom:0 solid;margin:-.75em -.7em;bottom:0}.ol-popup.placemark.shield>div{border-radius:.2em}.ol-popup.placemark.shield .anchor:after{border-width:.8em 1em 0;margin:-.7em -1em}.ol-popup.placemark.blazon>div{border-radius:.2em}.ol-popup.placemark.pushpin{margin:-2.2em 0;transform:translateY(-4em)}.ol-popup.placemark.pushpin>div{border-radius:0;width:1.1em;box-shadow:inset 2em 0;background:0 0!important}.ol-popup.placemark.pushpin>div:before{content:"";pointer-events:none;border:.5em solid #0000;border-top:.3em solid;border-bottom-color:currentColor;width:1.3em;height:1.5em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-popup.placemark.needle{margin:-2em 0;transform:translateY(-4em)}.ol-popup.placemark.pushpin .anchor,.ol-popup.placemark.needle .anchor{margin:-1.2em}.ol-popup.placemark.pushpin .anchor:after,.ol-popup.placemark.needle .anchor:after{border-style:solid;border-width:2em .15em 0;width:.1em;margin:-.55em -.2em}.ol-popup.placemark.pushpin .anchor:before,.ol-popup.placemark.needle .anchor:before{margin:-.75em -.5em}.ol-popup.placemark.flagv{margin:-2em 1em;transform:translateY(-4em)}.ol-popup.placemark.flagv>div{-webkit-box-shadow:none;box-shadow:none;background-color:#0000;border-radius:0}.ol-popup.placemark.flagv>div:before{content:"";pointer-events:none;border:1em solid #0000;border-left:2em solid;position:absolute}.ol-popup.placemark.flagv .anchor{margin:-1.4em}.ol-popup.placemark.flag{margin:-2em 1em;transform:translateY(-4em)}.ol-popup.placemark.flag>div{border-radius:0;transform-origin:0 150%!important}.ol-popup.placemark.flag .anchor{margin:-1.4em}.ol-popup.placemark.flagv .anchor:after,.ol-popup.placemark.flag .anchor:after{border-style:solid;border-width:2em .15em 0;width:.1em;margin:-.55em -1em}.ol-popup.placemark.flagv .anchor:before,.ol-popup.placemark.flag .anchor:before{margin:-.75em -1.25em}.ol-popup.placemark.flag.finish{margin:-2em 1em}.ol-popup.placemark.flag.finish>div{background-image:linear-gradient(45deg,currentColor 25%,#0000 25% 75%,currentColor 75%,currentColor),linear-gradient(45deg,currentColor 25%,#0000 25% 75%,currentColor 75%,currentColor);background-position:.5em 0,0 .5em;background-size:1em 1em;box-shadow:inset 0 0 0 .25em}.ol-popup.black .closeBox{color:#f80;background-color:#00000080;border-radius:5px}.ol-popup.black .closeBox:hover{color:#da2;background-color:#000000b3}.ol-popup.black{margin:-20px 0;transform:translateY(-40px)}.ol-popup.black>div{color:#fff;background-color:#0009;border-radius:5px}.ol-popup-top.ol-popup.black{margin:20px 0;transform:none}.ol-popup-left.black{margin:-20px -22px;transform:translateY(-40px)}.ol-popup-top.ol-popup-left.black{margin:20px -22px;transform:none}.ol-popup-right.black{margin:-20px 22px;transform:translate(44px,-40px)}.ol-popup-top.ol-popup-right.black{margin:20px 22px;transform:translate(44px)}.ol-popup-middle.black{margin:0 11px;transform:none}.ol-popup-left.ol-popup-middle.black{transform:none}.ol-popup-right.ol-popup-middle.black{margin:0 -11px;transform:translate(-22px)}.ol-popup.black .anchor{color:#0009;margin:-20px 11px}.ol-popup.black .anchor:before{content:"";border:20px solid;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.black .anchor:before{border-top:0;top:0}.ol-popup-bottom.black .anchor:before{border-bottom:0;bottom:0}.ol-popup-middle.black .anchor:before{border-color:#0000 currentColor;margin:-20px -22px}.ol-popup-middle.ol-popup-left.black .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.black .anchor:before{border-right:0}.ol-popup-center.black .anchor:before{margin:0 -10px}.ol-popup.tips .closeBox{color:#fff;background-color:red;border-radius:50%;width:1.2em;height:1.2em}.ol-popup.tips .closeBox:hover{background-color:#f40}.ol-popup.tips{margin:-20px 0;transform:translateY(-40px)}.ol-popup.tips>div{color:#333;background-color:#cea;border:5px solid #ad7;border-radius:5px}.ol-popup-top.ol-popup.tips{margin:20px 0;transform:none}.ol-popup-left.tips{margin:-20px -22px;transform:translateY(-40px)}.ol-popup-top.ol-popup-left.tips{margin:20px -22px;transform:none}.ol-popup-right.tips{margin:-20px 22px;transform:translate(44px,-40px)}.ol-popup-top.ol-popup-right.tips{margin:20px 22px;transform:translate(44px)}.ol-popup-middle.tips{margin:0;transform:none}.ol-popup-left.ol-popup-middle.tips{margin:0 22px;transform:none}.ol-popup-right.ol-popup-middle.tips{margin:0 -22px;transform:translate(-44px)}.ol-popup.tips .anchor{color:#ad7;margin:-18px 22px}.ol-popup.tips .anchor:before{content:"";border:20px solid;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.tips .anchor:before{border-top:0;top:0}.ol-popup-bottom.tips .anchor:before{border-bottom:0;bottom:0}.ol-popup-center.tips .anchor:before{border-width:20px 6px;margin:0 -6px}.ol-popup-left.tips .anchor:before{border-left:0;margin-left:0}.ol-popup-right.tips .anchor:before{border-right:0;margin-right:0}.ol-popup-middle.tips .anchor:before{border-width:6px 20px;border-color:#0000 currentColor;margin:-6px -41px}.ol-popup-middle.ol-popup-left.tips .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.tips .anchor:before{border-right:0}.ol-popup.warning .closeBox{color:#fff;background-color:red;border-radius:50%;font-size:.83em}.ol-popup.warning .closeBox:hover{background-color:#f40}.ol-popup.warning{color:#900;background-color:#fd0;border:4px dashed red;border-radius:3px;margin:-28px 10px;transform:translateY(-56px)}.ol-popup-top.ol-popup.warning{margin:28px 10px;transform:none}.ol-popup-left.warning{margin:-28px -22px;transform:translateY(-56px)}.ol-popup-top.ol-popup-left.warning{margin:28px -22px;transform:none}.ol-popup-right.warning{margin:-28px 22px;transform:translate(44px,-56px)}.ol-popup-top.ol-popup-right.warning{margin:28px 22px;transform:translate(44px)}.ol-popup-middle.warning{margin:0;transform:none}.ol-popup-left.ol-popup-middle.warning{margin:0 22px;transform:none}.ol-popup-right.ol-popup-middle.warning{margin:0 -22px;transform:translate(-44px)}.ol-popup.warning .anchor{margin:-33px 7px}.ol-popup.warning .anchor:before{content:"";border:30px solid red;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.warning .anchor:before{border-top:0;top:0}.ol-popup-bottom.warning .anchor:before{border-bottom:0;bottom:0}.ol-popup-center.warning .anchor:before{margin:0 -21px}.ol-popup-middle.warning .anchor:before{border-width:10px 22px;border-color:#0000 red;margin:-10px -33px}.ol-popup-middle.ol-popup-left.warning .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.warning .anchor:before{border-right:0}.ol-popup .ol-popupfeature table{width:100%}.ol-popup .ol-popupfeature table td{text-overflow:ellipsis;max-width:25em;overflow:hidden}.ol-popup .ol-popupfeature table td img{max-width:100px;max-height:100px}.ol-popup .ol-popupfeature tr:nth-child(odd){background-color:#eee}.ol-popup .ol-popupfeature .ol-zoombt{color:#003c8880;background:0 0;border:0;outline:none;width:2em;height:2em;display:inline-block;position:relative}.ol-popup .ol-popupfeature .ol-zoombt:before{content:"";box-sizing:border-box;background-color:#0000;border:.17em solid;border-radius:100%;width:1em;height:1em;position:absolute;top:.3em;left:.3em}.ol-popup .ol-popupfeature .ol-zoombt:after{content:"";box-sizing:border-box;border-style:solid;border-width:.1em .3em;border-radius:.03em;position:absolute;top:1.35em;left:1.15em;transform:rotate(45deg);box-shadow:-.2em 0 0 -.04em}.ol-popup .ol-popupfeature .ol-count{float:right;margin:.25em 0}.ol-popup .ol-popupfeature .ol-prev,.ol-popup .ol-popupfeature .ol-next{vertical-align:bottom;cursor:pointer;border:.5em solid #0000;border-left-color:#003c8880;border-right:0 solid #003c8880;margin:0 .5em;display:inline-block}.ol-popup .ol-popupfeature .ol-prev{border-width:.5em .5em .5em 0}.ol-popup.tooltips.black{background-color:#0000}.ol-popup.tooltips.black>div{background-color:#00000080;padding:.2em .5em;transform:scaleY(1.3)}.ol-popup-middle.tooltips.black .anchor:before{border-width:5px 10px;margin:-5px -21px}.ol-popup-center.ol-popup-middle,.ol-popup-top.ol-popup-left.ol-fixPopup,.ol-popup-top.ol-popup-right.ol-fixPopup,.ol-popup.ol-fixPopup{margin:0}.ol-miniscroll{position:relative}.ol-miniscroll:hover .ol-scroll{opacity:.5;transition:opacity 1s}.ol-miniscroll .ol-scroll{-ms-touch-action:none;touch-action:none;opacity:0;z-index:1;border-radius:9px;width:9px;height:auto;max-height:100%;transition:opacity 1s .5s;position:absolute;right:0;overflow:hidden}.ol-miniscroll .ol-scroll>div{-ms-touch-action:none;touch-action:none;box-sizing:border-box;cursor:pointer;border:2px solid #0000;border-radius:9px/12px;width:9px;height:9px;position:absolute;top:0;right:0;box-shadow:inset 10px 0}.ol-miniscroll .ol-scroll.ol-100pc{opacity:0}.ol-viewport canvas.ol-fixedoverlay{width:100%;height:100%;position:absolute;top:0;left:0}.ol-ext-toggle-switch{cursor:pointer;position:relative}.ol-ext-toggle-switch input[type=radio],.ol-ext-toggle-switch input[type=checkbox]{opacity:0;width:0;height:0;margin:0;padding:0;display:inline-block}.ol-ext-toggle-switch span{color:#003c8880;cursor:pointer;vertical-align:middle;background-color:#ccc;border-radius:1em;width:1.6em;height:1em;margin:-.15em .2em .15em;font-size:1.3em;transition:all .4s,background-color,border-color,box-shadow;display:inline-block;position:relative}.ol-ext-toggle-switch span:before{content:"";box-sizing:border-box;background-color:#fff;border:2px solid #ccc;border-radius:1em;width:1em;height:1em;transition:all .4s;display:block;position:absolute;top:50%;left:0;transform:translateY(-50%)}.ol-ext-toggle-switch:hover span{background-color:#999}.ol-ext-toggle-switch:hover span:before{border-color:#999}.ol-ext-toggle-switch input:checked+span{background-color:currentColor}.ol-ext-toggle-switch input:checked+span:before{border-color:currentColor;transform:translate(.6em,-50%)}.ol-ext-check{display:inline-block;position:relative}.ol-ext-check input{opacity:0;cursor:pointer;width:0;height:0;margin:0;padding:0;display:inline-block;position:absolute}.ol-ext-check span{color:#003c8880;vertical-align:middle;background-color:#ccc;width:1em;height:1em;margin:-.1em .5em .1em;display:inline-block;position:relative}.ol-ext-check:hover span{background-color:#999}.ol-ext-checkbox input:checked~span{background-color:currentColor}.ol-ext-checkbox input:checked~span:before{content:"";width:.5em;height:.8em;position:absolute;top:50%;left:50%;transform:translateY(-.1em)translate(-50%,-50%)rotate(45deg);box-shadow:inset -.2em -.2em #fff}.ol-ext-radio span{border-radius:50%;width:1.1em;height:1.1em}.ol-ext-radio:hover input:checked~span{background-color:#ccc}.ol-ext-radio input:checked~span:before{content:"";background-color:currentColor;border-radius:50%;width:50%;height:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-ext-toggle-switch input:focus-visible+span,.ol-ext-check input:focus-visible+span{box-shadow:inset 0 0 0 1px #fff,0 0 0 1.8px #000c}.ol-collection-list{margin:0;padding:0;list-style:none}.ol-collection-list li{padding:0 2em 0 1em;position:relative}.ol-collection-list li:hover{background-color:#003c8833}.ol-collection-list li.ol-select{color:#fff;background-color:#003c8880}.ol-collection-list li .ol-order{-ms-touch-action:none;touch-action:none;cursor:n-resize;-webkit-user-select:none;user-select:none;width:2em;height:100%;position:absolute;top:50%;right:0;transform:translateY(-50%)}.ol-collection-list li .ol-order:before{content:"";background-color:currentColor;border-radius:2px;width:18px;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 5px,0 -5px}.ol-collection-list li>input.ol-input-focus{opacity:0;z-index:-1;width:0;height:0;position:absolute}.ol-collection-list li:has(>input.ol-input-focus:focus){outline:2px solid #369}.ol-ext-colorpicker.ol-popup{background-color:#0000;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 -1px,5px 4px;background-size:10px 10px;width:2em;height:1.5em}.ol-ext-colorpicker .ol-tabbar{background-color:#eee;border-bottom:1px solid #999;display:none}.ol-ext-colorpicker.ol-tab .ol-tabbar{display:block}.ol-ext-colorpicker .ol-tabbar>div{cursor:pointer;background-color:#fff;border:1px solid #999;border-radius:2px 2px 0 0;padding:0 .5em;display:inline-block;position:relative;top:1px}.ol-ext-colorpicker .ol-tabbar>div:first-child{border-bottom-color:#fff}.ol-ext-colorpicker.ol-picker-tab .ol-tabbar>div:first-child{border-bottom-color:#999}.ol-ext-colorpicker.ol-picker-tab .ol-tabbar>div:nth-child(2){border-bottom-color:#fff}.ol-ext-colorpicker.ol-popup.ol-tab .ol-popup{width:180px}.ol-ext-colorpicker.ol-tab .ol-palette{margin:0 10px}.ol-ext-colorpicker.ol-tab .ol-container{display:none}.ol-ext-colorpicker.ol-tab.ol-picker-tab .ol-container{display:block}.ol-ext-colorpicker.ol-tab.ol-picker-tab .ol-palette{display:none}.ol-ext-colorpicker.ol-popup .ol-popup{width:340px}.ol-ext-colorpicker.ol-popup .ol-vignet{content:"";pointer-events:none;background-color:currentColor;border:0;width:100%;height:100%;position:absolute;top:0;left:0}.ol-ext-colorpicker .ol-container{vertical-align:top;display:inline-block;position:relative}.ol-ext-colorpicker .ol-cursor{pointer-events:none}.ol-ext-colorpicker .ol-picker{cursor:crosshair;background-color:currentColor;background-image:-webkit-gradient(linear, left top, left bottom, from(0), color-stop(#000), to(transparent)), -webkit-gradient(linear, left top, right top, from(#fff), to(transparent));background-image:linear-gradient(#0000,#000),linear-gradient(90deg,#fff,#0000);border:5px solid #fff;width:150px;height:150px;position:relative}.ol-ext-colorpicker .ol-picker .ol-cursor{border:1px solid #000000b3;border-radius:50%;width:10px;height:10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #ffffffb3}.ol-ext-colorpicker .ol-slider{cursor:crosshair;background-color:#fff;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 -1px,5px 4px;background-size:10px 10px;border:0 solid #fff;border-width:0 5px;width:150px;height:10px;margin:5px 0 10px;position:relative}.ol-ext-colorpicker .ol-slider>div{pointer-events:none;background-image:linear-gradient(45deg,#0000,#fff);width:100%;height:100%}.ol-ext-colorpicker .ol-slider .ol-cursor{background:0 0;border:1px solid #000;width:4px;height:12px;position:absolute;top:50%;left:0;transform:translate(-50%,-50%)}.ol-ext-colorpicker .ol-tint{cursor:crosshair;box-sizing:border-box;background-image:-webkit-gradient(linear, left top, left bottom, from(0), color-stop(red), color-stop(#f0f), color-stop(#00f), color-stop(#0ff), color-stop(#0f0), color-stop(#ff0), to(red));background-image:linear-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red);border:5px solid #fff;border-width:5px 0;width:10px;height:150px;position:absolute;top:0;right:5px}.ol-ext-colorpicker .ol-tint .ol-cursor{border:1px solid #000;width:12px;height:4px;position:absolute;top:0;left:50%;transform:translate(-50%,-50%)}.ol-ext-colorpicker .ol-clear{border:2px solid #999;width:10px;height:10px;position:absolute;top:163px;right:4px}.ol-ext-colorpicker .ol-clear:before,.ol-ext-colorpicker .ol-clear:after{content:"";background-color:#999;width:15px;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-ext-colorpicker .ol-clear:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-ext-colorpicker.ol-nopacity .ol-slider,.ol-ext-colorpicker.ol-nopacity .ol-clear,.ol-ext-colorpicker.ol-nopacity .ol-alpha{display:none}.ol-ext-colorpicker .ol-rgb{width:170px;padding:5px;display:none;position:relative}.ol-ext-colorpicker .ol-rgb input{box-sizing:border-box;border:1px solid #999;border-radius:2px;width:25%;padding:0 0 0 2px;font-size:13px}.ol-ext-colorpicker .ol-rgb input:first-child{background-color:#ff00001a}.ol-ext-colorpicker .ol-rgb input:nth-child(2){background-color:#00ff001a}.ol-ext-colorpicker .ol-rgb input:nth-child(3){background-color:#0000ff1f}.ol-ext-colorpicker button,.ol-ext-colorpicker .ol-txt-color{text-align:center;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:170px;margin:0 5px 5px;padding:0;font-size:13px;display:block}.ol-ext-colorpicker .ol-txtcolor{width:170px;margin:0 5px}.ol-ext-colorpicker .ol-txtcolor input.ol-txt-color{width:100%;margin:0}.ol-ext-colorpicker.eyedropper .ol-txtcolor input.ol-txt-color{width:calc(100% - 2em);height:2em;margin:0;display:inline-block}.ol-ext-colorpicker button{background-color:#eee}.ol-ext-colorpicker button:hover{background-color:#e9e9e9}.ol-ext-colorpicker button.ol-eyedropper{vertical-align:middle;width:2em;height:2em;margin:0;display:inline-block;position:relative}.ol-ext-colorpicker button.ol-eyedropper:before{content:"";background-color:#999;width:100%;height:100%;position:absolute;top:0;left:0;-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20width='24'%20height='24'%3e%3cpath%20d='m18.203%203.676%202.121%202.121a1%201%200%200%201%200%201.414l-2.828%202.829%201.767%201.768-1.414%201.414-1.414-1.414L7.243%2021H3v-4.243l9.192-9.192-1.414-1.414%201.414-1.414%201.768%201.767%202.829-2.828a1%201%200%200%201%201.414%200Zm-4.596%205.303-8.564%208.564%201.414%201.414%208.564-8.564-1.414-1.414Z'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20width='24'%20height='24'%3e%3cpath%20d='m18.203%203.676%202.121%202.121a1%201%200%200%201%200%201.414l-2.828%202.829%201.767%201.768-1.414%201.414-1.414-1.414L7.243%2021H3v-4.243l9.192-9.192-1.414-1.414%201.414-1.414%201.768%201.767%202.829-2.828a1%201%200%200%201%201.414%200Zm-4.596%205.303-8.564%208.564%201.414%201.414%208.564-8.564-1.414-1.414Z'/%3e%3c/svg%3e");-webkit-mask-size:100% 100%;mask-size:100% 100%}.ol-ext-colorpicker .ol-txt-color.ol-error{background-color:#f003}.ol-ext-colorpicker .ol-palette{width:152px;padding:2px;display:inline-block}.ol-ext-colorpicker .ol-palette>div{cursor:pointer;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 0,5px 5px;background-size:10px 10px;border-radius:1px;width:15px;height:15px;margin:2px;display:inline-block;position:relative;box-shadow:0 0 2px #666}.ol-ext-colorpicker .ol-palette>div:before{content:"";background-color:currentColor;width:100%;height:100%;position:absolute}.ol-ext-colorpicker .ol-palette>div.ol-select:after{content:"";width:6px;height:12px;position:absolute;top:30%;left:50%;transform:translate(-50%,-50%)rotate(45deg);box-shadow:1px 1px #fff,2px 2px #000}.ol-ext-colorpicker .ol-palette>div:hover{box-shadow:0 0 2px 1px #d90}.ol-ext-colorpicker .ol-palette hr{margin:0}.ol-input-hidden{opacity:0;width:0;height:0;margin:0;padding:0;display:block;position:absolute}.ol-input-popup{display:inline-block;position:relative}.ol-input-popup .ol-popup{z-index:1;white-space:nowrap;background-color:#fff;margin:0;padding:0;list-style:none;display:none;position:absolute;left:-5px;box-shadow:1px 1px 3px 1px #999}.ol-input-popup.ol-hover:hover .ol-popup,.ol-input-popup.ol-focus .ol-popup{display:block}.ol-input-popup.ol-right .ol-popup{left:auto;right:-5px}.ol-input-popup.ol-middle .ol-popup{top:50%;transform:translateY(-50%)}.ol-input-popup .ol-popup li{padding:10px 5px;position:relative}.ol-input-popup li:hover,.ol-input-popup li.ol-selected{background-color:#ccc}.ol-input-popup.ol-fixed:hover .ol-popup,.ol-input-popup.ol-fixed .ol-popup{-webkit-box-shadow:unset;box-shadow:unset;vertical-align:middle;background-color:#0000;display:inline-block;position:relative;left:0}.ol-input-popup.ol-fixed.ol-left .ol-popup{float:left}.ol-input-popup>div{vertical-align:middle;border:1px solid #999;border-radius:2px;padding:3px 20px 3px 10px;display:inline-block;position:relative}.ol-input-popup>div:before{content:"";border:5px solid #0000;border-top-color:#999;position:absolute;top:50%;right:5px}.ol-ext-popup-input{vertical-align:top;display:inline-block}.ol-ext-popup-input.ol-popup{box-sizing:content-box;-webkit-user-select:none;user-select:none;vertical-align:middle;border:3px solid #fff;border-right-width:1em;border-radius:2px;width:2em;height:1.5em;display:inline-block;position:relative;box-shadow:0 0 2px 1px #666}.ol-ext-popup-input.ol-popup:after{content:"";pointer-events:none;border:.3em solid #0000;border-top:.5em solid #999;border-bottom:0 solid #999;position:absolute;top:50%;right:-.8em;transform:translateY(-50%)}.ol-ext-popup-input *{box-sizing:content-box}.ol-ext-popup-input.ol-popup .ol-popup{z-index:1;background-color:#fff;min-width:3em;min-height:3em;display:none;position:absolute;top:100%;left:0;box-shadow:1px 1px 3px 1px #999}.ol-ext-popup-input.ol-popup .ol-popup.ol-visible{display:block}.ol-ext-popup-input.ol-popup-fixed .ol-popup{position:fixed;top:auto;left:auto}.ol-input-popup.ol-size li{vertical-align:middle;height:100%;padding:5px;display:table-cell}.ol-input-popup.ol-size li>*{vertical-align:middle;background-color:#369;border-radius:50%;width:1em;height:1em}.ol-input-popup.ol-size li>.ol-option-0{color:#aaa;box-sizing:border-box;background-color:#0000;border:2px solid;width:1em;height:1em;position:relative}.ol-input-popup.ol-size li>:before{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-input-popup.ol-size li>.ol-option-0:before{content:"";background-color:#aaa;width:1em;height:2px;transform:translate(-50%,-50%)rotate(-45deg)}.ol-input-slider{display:inline-block;position:relative}.ol-input-slider .ol-popup{z-index:1;background-color:#fff;display:none;position:absolute;left:-5px;box-shadow:1px 1px 3px 1px #999}.ol-input-slider.ol-right .ol-popup{left:auto;right:-5px}.ol-input-slider.ol-hover:hover .ol-popup,.ol-input-slider.ol-focus .ol-popup{white-space:nowrap;display:block}.ol-input-slider.ol-hover:hover .ol-popup>*,.ol-input-slider.ol-focus .ol-popup>*{vertical-align:middle;display:inline-block}.ol-input-slider.ol-hover:hover .ol-popup>.ol-before,.ol-input-slider.ol-focus .ol-popup>.ol-before{margin-left:10px}.ol-input-slider.ol-hover:hover .ol-popup>.ol-after,.ol-input-slider.ol-focus .ol-popup>.ol-after{margin-right:10px}.ol-input-slider .ol-slider{vertical-align:middle;box-sizing:content-box;cursor:pointer;border:10px solid #0000;border-width:10px 15px;width:100px;height:3px;display:inline-block;position:relative;box-shadow:inset 0 0 0 1px #999}.ol-input-slider .ol-slider>.ol-cursor{pointer-events:none;background-color:#999;width:5px;height:10px;position:absolute;top:50%;transform:translate(-50%,-50%)}.ol-input-range .ol-slider{cursor:default;width:150px}.ol-input-range .ol-slider>.ol-cursor{pointer-events:all;cursor:pointer;background-color:#003c88;border-radius:50%;width:10px}.ol-input-range.ol-moving .ol-slider>.ol-cursor{pointer-events:none}.ol-input-range .ol-slider>.ol-back{pointer-events:none;background-color:#003c88;height:100%;position:absolute;top:50%;left:30%;right:20%;transform:translateY(-50%)}.ol-input-slider.ol-fixed:hover .ol-popup,.ol-input-slider.ol-fixed .ol-popup{-webkit-box-shadow:unset;box-shadow:unset;vertical-align:middle;background-color:#0000;display:inline-block;position:relative;left:0}.ol-input-slider.ol-fixed.ol-left .ol-popup{float:left}.ol-input-slider.ol-size .ol-slider{height:auto;-webkit-box-shadow:none;box-shadow:none}.ol-input-slider.ol-size .ol-slider .ol-back{color:#aaa;pointer-events:none;border-top:0 solid;border-bottom:20px solid;border-left:100px solid #0000;border-right:0 solid #0000;width:0}.ol-input-slider.ol-size .ol-slider>.ol-cursor{border:5px solid red;border-left:3px solid #0000;border-right:3px solid #0000;-o-border-image:initial;border-image:initial;background-color:#0000;width:2px;height:calc(100% + 4px);box-shadow:inset 3px 0 red}.ol-input-popup.ol-width li{padding:5px}.ol-input-popup.ol-width li>*{background-color:#369;width:100px;height:1em}.ol-input-popup.ol-width li>.ol-option-0{background-color:#0000;background-image:linear-gradient(90deg,#aaa 2px,#0000 2px);background-size:4px;height:1px;position:relative}html,body{height:100%;margin:0;padding:0}body{font-family:Calibri,sans-serif}.viewer-app{--viewer-control-background:#111;--viewer-control-surface-background:#222;--viewer-control-hover-background:#333;--viewer-control-pressed-background:#555;--viewer-control-selected-background:#163a59;--viewer-control-selected-hover-background:#1f5278;--viewer-control-selected-pressed-background:#555;--viewer-control-foreground:#fff;--viewer-control-hover-foreground:#fff;--viewer-control-pressed-foreground:#fff;--viewer-control-selected-foreground:#fff;--viewer-control-muted-foreground:#ffffffb3;--viewer-control-subtle-foreground:#ffffff8c;--viewer-control-border:#555c;--viewer-control-focus-border:#787878f2;--viewer-control-foreground-shadow:#000000bf;width:100%;height:100%;position:relative;overflow:hidden}.viewer-app:fullscreen{background:#fff;width:100%;height:100%}.viewer-app:fullscreen{background:#fff;width:100%;height:100%}.map{width:100%;height:100%}.ol-zoom,.ol-rotate,.ol-full-screen,.ol-graticule,.ol-screen-space-graticule,.reset-view-control,.viewer-panel-control,.layer-editor-control,.settings-control{background:var(--viewer-control-background);border-radius:4px;padding:0;overflow:hidden;box-shadow:0 2px 7px #0000004d}.ol-zoom:hover,.ol-rotate:hover,.ol-full-screen:hover,.ol-graticule:hover,.ol-screen-space-graticule:hover,.reset-view-control:hover,.viewer-panel-control:hover,.layer-editor-control:hover,.settings-control:hover{background:var(--viewer-control-background)}.ol-zoom button,.ol-rotate button,.ol-full-screen button,.ol-graticule button,.ol-screen-space-graticule button,.reset-view-control button,.viewer-panel-control button,.layer-editor-control button,.settings-control button{background:var(--viewer-control-background);width:32px;height:32px;color:var(--viewer-control-foreground);cursor:pointer;border:0;margin:0}.ol-zoom button:hover:not(:disabled),.ol-rotate button:hover:not(:disabled),.ol-full-screen button:hover:not(:disabled),.ol-graticule button:hover:not(:disabled),.ol-screen-space-graticule button:hover:not(:disabled),.reset-view-control button:hover:not(:disabled),.viewer-panel-control button:hover:not(:disabled),.layer-editor-control button:hover:not(:disabled),.settings-control button:hover:not(:disabled){background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground);border-radius:4px;outline:none}.ol-zoom button:active:not(:disabled),.ol-rotate button:active:not(:disabled),.ol-full-screen button:active:not(:disabled),.ol-graticule button:active:not(:disabled),.ol-screen-space-graticule button:active:not(:disabled),.reset-view-control button:active:not(:disabled),.viewer-panel-control button:active:not(:disabled),.layer-editor-control button:active:not(:disabled),.settings-control button:active:not(:disabled){background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground);border-radius:4px;outline:none}.ol-zoom{flex-direction:row;display:flex}.ol-zoom.viewer-control-disabled{opacity:.4}.ol-zoom.viewer-control-disabled button:disabled,.ol-zoom.viewer-control-disabled button:disabled:hover,.ol-zoom.viewer-control-disabled button:disabled:active,.ol-zoom.viewer-control-disabled button:disabled:focus{opacity:1;background:0 0}.ol-zoom button{background:0 0;border-radius:0}.ol-zoom .ol-zoom-out{order:1}.ol-zoom .ol-zoom-out,.ol-zoom .ol-zoom-out:hover,.ol-zoom .ol-zoom-out:active,.ol-zoom .ol-zoom-out:focus{border-radius:4px 0 0 4px}.ol-zoom-level{box-sizing:border-box;border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);width:42px;height:24px;color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);text-align:center;appearance:textfield;border-radius:3px;order:2;margin:4px 3px;padding:0 3px;font-family:inherit;font-size:11px;font-weight:600}.ol-zoom-level::-webkit-inner-spin-button{appearance:none;margin:0}.ol-zoom-level::-webkit-outer-spin-button{appearance:none;margin:0}.ol-zoom-level:hover:not(:disabled){border-color:var(--viewer-control-focus-border)}.ol-zoom-level:focus{border-color:var(--viewer-control-focus-border);background:var(--viewer-control-hover-background);outline:none}.ol-zoom-level:disabled{opacity:1;cursor:default;background:0 0}.ol-zoom .ol-zoom-in{order:3}.ol-zoom .ol-zoom-in,.ol-zoom .ol-zoom-in:hover,.ol-zoom .ol-zoom-in:active,.ol-zoom .ol-zoom-in:focus{border-radius:0 4px 4px 0}.settings-control,.settings-control:hover{z-index:1002;background:0 0;top:8px;left:auto;right:8px}.settings-control button,.settings-control button:hover,.settings-control button:active,.settings-control button:focus,.settings-control button.active,.settings-control button.active:hover,.settings-control button.active:active,.settings-control button.active:focus{border-radius:4px}.viewer-tools-group{z-index:1000;border-radius:4px;flex-direction:column;width:32px;display:flex;position:absolute;top:80px;left:8px;overflow:hidden;box-shadow:0 2px 7px #0000004d}.viewer-tools-group .ol-rotate,.viewer-tools-group .ol-graticule,.viewer-tools-group .ol-screen-space-graticule{box-shadow:none;background:0 0;border-radius:0;margin:0;padding:0;position:static;inset:auto}.viewer-tools-group .ol-rotate:hover,.viewer-tools-group .ol-graticule:hover,.viewer-tools-group .ol-screen-space-graticule:hover{background:0 0}.viewer-tools-group button{border-radius:0!important}.reset-view-control{background:0 0;border-radius:4px}.reset-view-control:hover{background:0 0}.ol-full-screen{background:0 0;border-radius:4px}.ol-full-screen:hover{background:0 0}.ol-full-screen button,.ol-full-screen button:hover,.ol-full-screen button:active,.ol-full-screen button:focus,.reset-view-control button,.reset-view-control button:hover,.reset-view-control button:active,.reset-view-control button:focus{border-radius:4px}.ol-full-screen button,.reset-view-control button{justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;display:flex}.bottom-controls-group{z-index:1000;align-items:center;gap:8px;display:flex;position:absolute;bottom:8px;left:50%;transform:translate(-50%)}.bottom-controls-group .reset-view-control,.bottom-controls-group .ol-zoom,.bottom-controls-group .ol-full-screen{margin:0;position:static;inset:auto;transform:none}.ol-scale-line{background:var(--viewer-control-background);border-radius:4px;padding:5px 8px;font-family:Calibri,sans-serif;bottom:8px;left:8px;box-shadow:0 2px 7px #00000040}.ol-scale-line-inner{border:1px solid var(--viewer-control-foreground);color:var(--viewer-control-foreground);border-bottom:0;margin:0;font-size:14px;line-height:1.2}.ol-mouse-position{z-index:100;background:var(--viewer-control-background);color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);border-radius:4px;padding:6px 9px;font-family:Calibri,sans-serif;font-size:12px;position:absolute;inset:auto 8px 8px auto;box-shadow:0 2px 7px #0000004d}.ol-layerswitcher,.ol-control.ol-layerswitcher{display:none}.layer-editor-header,.viewer-panel-header{border-bottom:1px solid var(--viewer-control-border);padding:12px 14px;font-size:13px;font-weight:600}.left-panel-controls{z-index:1000;border-radius:4px;flex-direction:column;width:32px;display:flex;position:absolute;top:8px;left:8px;overflow:hidden;box-shadow:0 2px 7px #0000004d}.left-panel-controls .viewer-panel-control,.left-panel-controls .layer-editor-control{box-shadow:none;background:0 0;border-radius:0;margin:0;position:static;inset:auto}.left-panel-controls .viewer-panel-control:hover,.left-panel-controls .layer-editor-control:hover{background:0 0}.left-panel-controls .viewer-panel-control button,.left-panel-controls .viewer-panel-control button:hover,.left-panel-controls .viewer-panel-control button:active,.left-panel-controls .viewer-panel-control button:focus,.left-panel-controls .viewer-panel-control button.active,.left-panel-controls .viewer-panel-control button.active:hover,.left-panel-controls .viewer-panel-control button.active:active,.left-panel-controls .viewer-panel-control button.active:focus,.left-panel-controls .layer-editor-control button,.left-panel-controls .layer-editor-control button:hover,.left-panel-controls .layer-editor-control button:active,.left-panel-controls .layer-editor-control button:focus,.left-panel-controls .layer-editor-control button.active,.left-panel-controls .layer-editor-control button.active:hover,.left-panel-controls .layer-editor-control button.active:active,.left-panel-controls .layer-editor-control button.active:focus{border-radius:0}.layer-editor{z-index:1000;box-sizing:border-box;background:var(--viewer-control-background);width:240px;color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);border-radius:10px;position:absolute;top:8px;left:48px;overflow:hidden;box-shadow:0 3px 10px #00000059}.layer-editor.hidden{display:none}.layer-editor-list{padding:12px 14px}.layer-editor-empty{color:var(--viewer-control-muted-foreground);font-size:12px}.layer-editor-item{margin-bottom:14px}.layer-editor-item:last-child{margin-bottom:0}.layer-editor-item-header{align-items:center;gap:8px;margin-bottom:8px;display:flex}.layer-editor-visibility{accent-color:var(--viewer-control-selected-background);cursor:pointer;flex-shrink:0;margin:0}.layer-editor-name{min-width:0;color:var(--viewer-control-foreground);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;overflow:hidden}.layer-editor-order{flex-shrink:0;gap:3px;display:flex}.layer-editor-order button{background:var(--viewer-control-surface-background);width:22px;height:22px;color:var(--viewer-control-foreground);cursor:pointer;border:0;border-radius:4px;padding:0;font-size:9px}.layer-editor-order button:hover:not(:disabled){background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground);outline:none}.layer-editor-order button:active:not(:disabled){background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground);outline:none}.layer-editor-order button:focus{color:var(--viewer-control-foreground);outline:none}.layer-editor-order button:disabled{color:var(--viewer-control-subtle-foreground);cursor:default;pointer-events:none;outline:none}.layer-editor-opacity{align-items:center;gap:9px;display:flex}.layer-editor-slider{min-width:0;accent-color:var(--viewer-control-selected-background);cursor:pointer;flex:1;margin:0}.layer-editor-value{width:32px;color:var(--viewer-control-muted-foreground);text-align:right;flex-shrink:0;font-size:11px}.settings-panel{z-index:1100;box-sizing:border-box;background:var(--viewer-control-background);width:720px;max-width:calc(100vw - 80px);height:480px;max-height:calc(100vh - 80px);color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);border-radius:10px;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%);box-shadow:0 4px 18px #00000073}.settings-panel.hidden{display:none}.settings-panel-header{border-bottom:1px solid var(--viewer-control-border);justify-content:space-between;align-items:center;padding:8px 10px 8px 18px;font-size:16px;font-weight:600;display:flex}.settings-close{width:28px;height:28px;color:var(--viewer-control-foreground);cursor:pointer;background:0 0;border:0;border-radius:4px;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:14px;display:flex}.settings-close:hover{background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground)}.settings-close:active{background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground)}.settings-close:focus{outline:none}.settings-tabs{border-bottom:1px solid var(--viewer-control-border);padding:0 18px;display:flex}.settings-tab{color:var(--viewer-control-muted-foreground);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;padding:11px 16px;font-family:inherit;font-size:12px;font-weight:600}.settings-tab:hover{color:var(--viewer-control-hover-foreground);background:var(--viewer-control-hover-background)}.settings-tab.active{border-bottom-color:var(--viewer-control-selected-background);color:var(--viewer-control-selected-foreground);background:var(--viewer-control-selected-background)}.settings-tab:focus{outline:none}.settings-panel-body{height:calc(100% - 83px);overflow-y:auto}.settings-tab-panel{padding:0 20px 20px}.settings-tab-panel.hidden{display:none}.settings-option{border-bottom:1px solid var(--viewer-control-border);justify-content:space-between;align-items:center;gap:24px;padding:16px 0;display:flex}.settings-option:last-child{border-bottom:0}.settings-option-text{min-width:0}.settings-option-label{margin-bottom:3px;font-size:12px;font-weight:600}.settings-option-description{color:var(--viewer-control-muted-foreground);font-size:11px;line-height:1.35}.settings-switch{flex-shrink:0;width:38px;height:20px;position:relative}.settings-switch input{opacity:0;width:0;height:0;position:absolute}.settings-switch-slider{background:var(--viewer-control-surface-background);cursor:pointer;border-radius:10px;transition:background .15s;position:absolute;inset:0}.settings-switch-slider:before{background:var(--viewer-control-foreground);content:"";border-radius:50%;width:14px;height:14px;transition:transform .15s;position:absolute;top:3px;left:3px}.settings-switch input:checked+.settings-switch-slider{background:var(--viewer-control-selected-background)}.settings-switch input:checked+.settings-switch-slider:before{transform:translate(18px)}.settings-switch input:focus-visible+.settings-switch-slider{outline:2px solid var(--viewer-control-focus-border);outline-offset:2px}.settings-colour-input{border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);cursor:pointer;border-radius:4px;flex-shrink:0;width:38px;height:28px;padding:2px}.settings-colour-input::-webkit-color-swatch-wrapper{padding:0}.settings-colour-input::-webkit-color-swatch{border:0;border-radius:2px}.settings-colour-input::-moz-color-swatch{border:0;border-radius:2px}.settings-select{box-sizing:border-box;border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);width:150px;height:30px;color:var(--viewer-control-foreground);cursor:pointer;border-radius:4px;flex-shrink:0;padding:4px 8px;font-family:inherit;font-size:11px}.settings-select:hover{border-color:var(--viewer-control-focus-border)}.settings-select:focus{border-color:var(--viewer-control-focus-border);outline:none}.settings-reset-button{border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);height:30px;color:var(--viewer-control-foreground);cursor:pointer;border-radius:4px;flex-shrink:0;padding:4px 10px;font-family:inherit;font-size:11px}.settings-reset-button:hover{background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground)}.settings-reset-button:active{background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground)}.settings-reset-button:focus{border-color:var(--viewer-control-focus-border);outline:none}.settings-range-control{flex-shrink:0;align-items:center;gap:10px;width:190px;display:flex}.settings-range{min-width:0;accent-color:var(--viewer-control-selected-background);cursor:pointer;flex:1;margin:0}.settings-range-value{width:34px;color:var(--viewer-control-muted-foreground);text-align:right;flex-shrink:0;font-size:11px}.viewer-panel{z-index:1000;box-sizing:border-box;background:var(--viewer-control-background);width:240px;max-height:170px;color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);border-radius:10px;position:absolute;top:8px;left:48px;overflow:visible;box-shadow:0 3px 10px #00000059}.viewer-panel.hidden{display:none}.viewer-panel-section{border-bottom:1px solid var(--viewer-control-border);padding:9px 12px}.viewer-panel-section:last-child{border-bottom:0}.viewer-file-selectors{gap:6px;min-width:0;margin-bottom:6px;display:grid}.viewer-file-select{min-width:0;position:relative}.viewer-file-select-button{box-sizing:border-box;border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);width:100%;min-width:0;max-width:100%;height:30px;color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);text-align:left;cursor:pointer;border-radius:4px;align-items:center;padding:5px 24px 5px 7px;font-family:inherit;font-size:11px;display:flex;position:relative}.viewer-file-select-button:after{border-right:1px solid var(--viewer-control-muted-foreground);border-bottom:1px solid var(--viewer-control-muted-foreground);content:"";width:5px;height:5px;position:absolute;top:10px;right:9px;transform:rotate(45deg)}.viewer-file-select.open .viewer-file-select-button:after{top:13px;transform:rotate(225deg)}.viewer-file-select-button:hover:not(:disabled){background:var(--viewer-control-hover-background)}.viewer-file-select-button:focus{border-color:var(--viewer-control-focus-border);outline:none}.viewer-file-select-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.viewer-file-select.disabled{opacity:.4}.viewer-file-select-button:disabled{cursor:default}.viewer-file-select-menu{z-index:20;box-sizing:border-box;border:1px solid var(--viewer-control-border);background:var(--viewer-control-surface-background);border-radius:4px;width:320px;max-width:calc(100vw - 70px);padding:5px;position:absolute;top:calc(100% + 2px);left:0;box-shadow:0 3px 8px #00000059}.viewer-file-select-search{box-sizing:border-box;border:1px solid var(--viewer-control-border);background:var(--viewer-control-background);width:100%;min-width:0;height:28px;color:var(--viewer-control-foreground);text-shadow:0 0 2px var(--viewer-control-foreground-shadow);border-radius:3px;padding:5px 7px;font-family:inherit;font-size:11px}.viewer-file-select-search::placeholder{color:var(--viewer-control-subtle-foreground);opacity:1}.viewer-file-select-search:focus{border-color:var(--viewer-control-focus-border);outline:none}.viewer-file-select-options{max-height:220px;margin-top:4px;overflow-y:auto}.viewer-file-select-option{width:100%;min-width:0;color:var(--viewer-control-foreground);text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:3px;padding:6px 7px;font-family:inherit;font-size:11px;display:block;overflow:hidden}.viewer-file-select-option:hover,.viewer-file-select-option.active{background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground)}.viewer-file-select-option.selected{background:var(--viewer-control-selected-background);color:var(--viewer-control-selected-foreground)}.viewer-file-select-option.selected:hover,.viewer-file-select-option.selected.active{background:var(--viewer-control-selected-hover-background);color:var(--viewer-control-selected-foreground)}.viewer-file-select-option:focus{outline:none}.viewer-file-select-empty{color:var(--viewer-control-subtle-foreground);padding:6px 7px;font-size:11px}.viewer-file-actions{grid-template-columns:1fr 1fr;gap:6px;display:grid}.viewer-file-actions button{background:var(--viewer-control-surface-background);min-width:0;height:30px;color:var(--viewer-control-foreground);cursor:pointer;border:0;border-radius:4px;padding:5px 7px;font-size:11px}.viewer-file-actions button:hover:not(:disabled){background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground)}.viewer-file-actions button:active:not(:disabled){background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground)}.viewer-file-actions button:disabled{opacity:.4;cursor:default}.map .ol-custom-overviewmap{--overview-map-width:300px;--overview-map-height:250px;width:var(--overview-map-width);height:calc(var(--overview-map-height) + 42px);background:0 0;border-radius:4px;padding:0;transition:width .18s,height .18s;inset:8px 8px auto auto;overflow:hidden}.map .ol-custom-overviewmap.ol-collapsed{width:72px;height:32px}.map .ol-custom-overviewmap .ol-overviewmap-map,.map .ol-custom-overviewmap.ol-collapsed .ol-overviewmap-map{width:var(--overview-map-width);height:var(--overview-map-height);box-sizing:border-box;border:2px solid var(--viewer-control-border);opacity:1;background:#fff;border-radius:4px;margin:0;transition:opacity .16s,transform .18s;display:block;position:absolute;top:40px;right:0;overflow:hidden;transform:translateY(0)}.map .ol-custom-overviewmap.ol-collapsed .ol-overviewmap-map{opacity:0;pointer-events:none;transform:translateY(-8px)}.map .ol-custom-overviewmap .ol-overviewmap-map .ol-viewport{background:#fff}.map .ol-custom-overviewmap .ol-overviewmap-box{box-sizing:border-box;border:3px dotted #163a59}.map .ol-custom-overviewmap button,.map .ol-custom-overviewmap:not(.ol-collapsed) button{z-index:2;background:var(--viewer-control-background);width:32px;height:32px;color:var(--viewer-control-foreground);cursor:pointer;border:0;border-radius:4px;margin:0;position:absolute;inset:0 40px auto auto}.map .ol-custom-overviewmap button:hover{background:var(--viewer-control-hover-background);color:var(--viewer-control-hover-foreground);outline:none}.map .ol-custom-overviewmap button:active{background:var(--viewer-control-pressed-background);color:var(--viewer-control-pressed-foreground);outline:none}.map .ol-custom-overviewmap button:focus{color:var(--viewer-control-foreground);outline:none}.overview-toggle-icon{justify-content:center;align-items:center;width:100%;height:100%;font-size:11px;transition:transform .18s;display:flex}.ol-control button:disabled,.ol-control button:disabled:hover,.ol-control button:disabled:active,.ol-control button:disabled:focus,.ol-control.ol-toggle button:disabled,.ol-control.ol-toggle button:disabled:hover,.ol-control.ol-toggle button:disabled:active,.ol-control.ol-toggle button:disabled:focus{background:var(--viewer-control-background);color:var(--viewer-control-foreground);opacity:.4;cursor:default;pointer-events:none;outline:none}.viewer-control-hidden{display:none!important}.ol-zoom button:focus:not(:active):not(:disabled){color:var(--viewer-control-foreground);box-shadow:none;background:0 0;outline:none}.ol-rotate button:focus:not(:active):not(:disabled),.reset-view-control button:focus:not(:active):not(:disabled),.map .ol-custom-overviewmap button:focus:not(:active),.ol-graticule:not(.active) button:focus:not(:active):not(:disabled),.ol-screen-space-graticule:not(.active) button:focus:not(:active):not(:disabled),.ol-full-screen button:not(.ol-full-screen-true):focus:not(:active),.viewer-panel-control button:not(.active):focus:not(:active),.layer-editor-control button:not(.active):focus:not(:active),.settings-control button:not(.active):focus:not(:active){background:var(--viewer-control-background);color:var(--viewer-control-foreground);box-shadow:none;outline:none}.ol-graticule.active button,.ol-screen-space-graticule.active button,.ol-full-screen button.ol-full-screen-true,.viewer-panel-control button.active,.layer-editor-control button.active,.settings-control button.active{background:var(--viewer-control-selected-background);color:var(--viewer-control-selected-foreground)}.ol-graticule.active button:hover,.ol-screen-space-graticule.active button:hover,.ol-full-screen button.ol-full-screen-true:hover,.viewer-panel-control button.active:hover,.layer-editor-control button.active:hover,.settings-control button.active:hover{background:var(--viewer-control-selected-hover-background);color:var(--viewer-control-selected-foreground)}.ol-graticule.active button:active,.ol-screen-space-graticule.active button:active,.ol-full-screen button.ol-full-screen-true:active,.viewer-panel-control button.active:active,.layer-editor-control button.active:active,.settings-control button.active:active{background:var(--viewer-control-selected-pressed-background);color:var(--viewer-control-selected-foreground)} +:root,:host{--ol-background-color:white;--ol-accent-background-color:#f5f5f5;--ol-subtle-background-color:#80808040;--ol-partial-background-color:#ffffffbf;--ol-foreground-color:#333;--ol-subtle-foreground-color:#666;--ol-brand-color:#0af}.ol-box{box-sizing:border-box;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color);border-radius:2px}.ol-mouse-position{position:absolute;top:8px;right:8px}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;padding:2px;position:absolute;bottom:8px;left:8px}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-align:center;will-change:contents, width;border-top:none;margin:1px;font-size:10px;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{background-color:var(--ol-foreground-color);float:right;z-index:10;width:1px;height:15px}.ol-scale-step-text{z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:10px;position:absolute;bottom:-5px}.ol-scale-text{text-align:center;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:12px;position:absolute;bottom:25px}.ol-scale-singlebar{z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color);height:10px;position:relative}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset;overflow:hidden}.ol-viewport{touch-action:pan-x pan-y}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{background-color:var(--ol-subtle-background-color);border-radius:4px;position:absolute}.ol-zoom{top:.5em;left:.5em}.ol-rotate{transition:opacity .25s linear,visibility linear;top:.5em;right:.5em}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{top:.5em;right:.5em}.ol-control button{color:var(--ol-subtle-foreground-color);font-weight:700;font-size:inherit;text-align:center;background-color:var(--ol-background-color);border:none;border-radius:2px;width:1.375em;height:1.375em;margin:1px;padding:0;line-height:.4em;text-decoration:none;display:block}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{will-change:transform;font-weight:400;display:block}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-decoration:none}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;flex-flow:row-reverse;align-items:center;max-width:calc(100% - 1.3em);display:flex;bottom:.5em;right:.5em}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);margin:0;padding:1px .5em;font-size:12px}.ol-attribution li{list-style:none;display:inline}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{border-radius:4px 0 0;bottom:0;right:0}.ol-attribution.ol-uncollapsible img{max-height:1.6em;margin-top:-.2em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{height:200px;top:4.5em;left:.5em}.ol-zoomslider button{height:10px;position:relative}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{bottom:.5em;left:.5em}.ol-overviewmap.ol-uncollapsible{border-radius:0 4px 0 0;bottom:0;left:0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);width:150px;height:150px}.ol-overviewmap:not(.ol-collapsed) button{position:absolute;bottom:0;left:0}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.ol-overviewmap .ol-viewport:hover{cursor:pointer}.ol-control i{cursor:default}.ol-control.ol-bar{white-space:nowrap;min-width:1em;min-height:1em;position:absolute;top:.5em;left:50%;transform:translate(-50%)}.ol-control.ol-toggle .ol-option-bar{display:none}.ol-control.ol-bar .ol-control{vertical-align:middle;background-color:#0000;margin:0;padding:0;display:inline-block;position:relative;inset:auto;transform:none}.ol-control.ol-bar .ol-bar{position:static}.ol-control.ol-bar .ol-control button{outline:none;margin:2px 1px}.ol-control.ol-bar.ol-left{top:50%;left:.5em;transform:translateY(-50%)}.ol-control.ol-bar.ol-left .ol-control{display:block}.ol-control.ol-bar.ol-right{top:50%;left:auto;right:.5em;transform:translateY(-50%)}.ol-control.ol-bar.ol-right .ol-control{display:block}.ol-control.ol-bar.ol-bottom{top:auto;bottom:.5em}.ol-control.ol-bar.ol-top.ol-left,.ol-control.ol-bar.ol-top.ol-right{top:4.5em;transform:none}.ol-touch .ol-control.ol-bar.ol-top.ol-left,.ol-touch .ol-control.ol-bar.ol-top.ol-right{top:5.5em}.ol-control.ol-bar.ol-bottom.ol-left,.ol-control.ol-bar.ol-bottom.ol-right{top:auto;bottom:.5em;transform:none}.ol-control.ol-bar.ol-group{margin:1px 1px 1px 0}.ol-control.ol-bar.ol-right .ol-group,.ol-control.ol-bar.ol-left .ol-group{margin:1px 1px 0}.ol-control.ol-bar.ol-group button{border-radius:0;margin:0 0 0 1px}.ol-control.ol-bar.ol-right.ol-group button,.ol-control.ol-bar.ol-left.ol-group button,.ol-control.ol-bar.ol-right .ol-group button,.ol-control.ol-bar.ol-left .ol-group button{margin:0 0 1px}.ol-control.ol-bar.ol-group .ol-control:first-child>button{border-radius:5px 0 0 5px}.ol-control.ol-bar.ol-group .ol-control:last-child>button{border-radius:0 5px 5px 0}.ol-control.ol-bar.ol-left.ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-right.ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-left .ol-group .ol-control:first-child>button,.ol-control.ol-bar.ol-right .ol-group .ol-control:first-child>button{border-radius:5px 5px 0 0}.ol-control.ol-bar.ol-left.ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-right.ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-left .ol-group .ol-control:last-child>button,.ol-control.ol-bar.ol-right .ol-group .ol-control:last-child>button{border-radius:0 0 5px 5px}.ol-control.ol-bar .ol-rotate{opacity:1;visibility:visible}.ol-control.ol-bar .ol-rotate button{display:block}.ol-control.ol-bar .ol-toggle.ol-active>button,.ol-control.ol-bar .ol-toggle.ol-active button:hover{color:#fff;background-color:#0af}.ol-control.ol-toggle button:disabled{background-color:#ccc}.ol-control.ol-bar .ol-control.ol-option-bar{background-color:#fffc;border-radius:0;margin:5px 0;display:none;position:absolute;top:100%;left:0;box-shadow:0 0 0 1px #003c8880,1px 1px 2px #00000080}.ol-control.ol-bar .ol-option-bar:before{content:"";pointer-events:none;border:.5em solid #0000;border-bottom-color:#003c8880;position:absolute;bottom:100%;left:.3em}.ol-control.ol-bar .ol-option-bar .ol-control{display:table-cell}.ol-control.ol-bar .ol-control .ol-bar{display:none}.ol-control.ol-bar .ol-control.ol-active>.ol-option-bar{display:block}.ol-control.ol-bar .ol-control.ol-collapsed ul{display:none}.ol-control.ol-bar .ol-control.ol-text-button>div:hover,.ol-control.ol-bar .ol-control.ol-text-button>div{color:#003c8880;background-color:#0000;width:auto;min-width:1.375em;margin:0}.ol-control.ol-bar .ol-control.ol-text-button{border-left:1px solid #003c88cc;border-radius:0;font-size:.9em}.ol-control.ol-bar .ol-control.ol-text-button:first-child{border-left:0}.ol-control.ol-bar .ol-control.ol-text-button>div{padding:.11em .3em;font-family:Arial,Helvetica,sans-serif;font-size:1.14em;font-weight:400}.ol-control.ol-bar .ol-control.ol-text-button div:hover{color:#003c88}.ol-control.ol-bar.ol-bottom .ol-option-bar{top:auto;bottom:100%}.ol-control.ol-bar.ol-bottom .ol-option-bar:before{border-color:#003c8880 #0000 #0000;top:100%;bottom:auto}.ol-control.ol-bar.ol-left .ol-option-bar{margin:0 5px;top:0;bottom:auto;left:100%}.ol-control.ol-bar.ol-left .ol-option-bar:before{border-color:#0000 #003c8880 #0000 #0000;inset:.3em 100% auto auto}.ol-control.ol-bar.ol-right .ol-option-bar{margin:0 5px;inset:0 100% auto auto}.ol-control.ol-bar.ol-right .ol-option-bar:before{border-color:#0000 #0000 #0000 #003c8880;top:.3em;bottom:auto;left:100%}.ol-control.ol-bar.ol-left .ol-option-bar .ol-option-bar,.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar{margin:5px 0;inset:100% auto auto .3em}.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar{left:auto;right:.3em}.ol-control.ol-bar.ol-left .ol-option-bar .ol-option-bar:before,.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar:before{border-color:#0000 #0000 #003c8880;inset:auto auto 100% .3em}.ol-control.ol-bar.ol-right .ol-option-bar .ol-option-bar:before{left:auto;right:.3em}.ol-control-title{position:absolute;top:0;left:0;right:0}.ol-center-position{background-color:#fffc;padding:.1em 1em;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.ol-compassctrl{display:none;top:1em;left:auto;right:1em}.ol-compassctrl.ol-visible{display:block!important}.ol-ext-dialog{opacity:0;z-index:1000;background-color:#00000080;width:150%;height:100%;transition:opacity .2s,top 0s .2s;position:fixed;top:-100%;left:0;pointer-events:none!important}.ol-ext-dialog.ol-visible{opacity:1;transition:opacity .2s,top;top:0;pointer-events:all!important}.ol-viewport .ol-ext-dialog{position:absolute}.ol-ext-dialog>form>h2{text-overflow:ellipsis;white-space:nowrap;margin:0 .5em .5em 0;display:none;overflow:hidden}.ol-ext-dialog>form.ol-title>h2{display:block}.ol-ext-dialog>form{box-sizing:border-box;background-color:#fff;border:1px solid #333;min-width:5em;max-width:60%;min-height:3em;max-height:100%;padding:1em;transition:top .2s,transform .2s;position:absolute;top:0;left:33.33%;overflow:hidden auto;transform:translate(-50%,-30%);box-shadow:3px 3px 4px #00000080}dialog.ol-ext-dialog>form{width:max-content;max-width:90%;left:50%}.ol-ext-dialog>form.ol-closebox{padding-top:1.5em}.ol-ext-dialog>form.ol-title{padding-top:1em}.ol-ext-dialog>form.ol-button{padding-bottom:.5em}.ol-ext-dialog.ol-zoom>form{top:30%;transform:translate(-50%,-30%)scale(0)}.ol-ext-dialog.ol-visible>form{top:30%}.ol-ext-dialog.ol-zoom.ol-visible>form{transform:translate(-50%,-30%)scale(1)}.ol-ext-dialog>form .ol-content{overflow:hidden auto}.ol-ext-dialog>form .ol-closebox{cursor:pointer;width:1em;height:1em;display:none;position:absolute;top:.5em;right:.5em}.ol-ext-dialog>form.ol-closebox .ol-closebox{display:block}.ol-ext-dialog>form .ol-closebox:before,.ol-ext-dialog>form .ol-closebox:after{content:"";background-color:currentColor;border-radius:.1em;width:1em;height:.1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-ext-dialog>form .ol-closebox:before{transform:translate(-50%,-50%)rotate(-45deg)}.ol-ext-dialog>form .ol-buttons{text-align:right;overflow-x:hidden}.ol-ext-dialog>form .ol-buttons input{color:#003c88;cursor:pointer;background:0 0;border:0;border-radius:.25em;margin-top:.5em;padding:.5em;font-size:1em}.ol-ext-dialog>form .ol-buttons input:hover{background-color:#003c881a}.ol-ext-dialog>form .ol-buttons input[type=submit]{font-weight:700}.ol-ext-dialog .ol-progress-message{text-align:center;padding-bottom:.5em;font-size:.9em}.ol-ext-dialog .ol-progress-bar{border:1px solid #369;width:20em;max-width:100%;height:1em;margin:.5em auto 0;padding:2px;overflow:hidden}.ol-ext-dialog .ol-progress-bar>div{background:#369;width:50%;height:100%;transition:width .3s}.ol-ext-dialog .ol-progress-bar>div.notransition{transition:unset}.ol-ext-dialog.ol-fullscreen-dialog form{text-align:center;max-width:calc(66.6% - 2em);-webkit-box-shadow:none;box-shadow:none;color:#fff;background:0 0;border:none;inset:1em;transform:none}.ol-ext-dialog.ol-fullscreen-dialog form .ol-closebox{font-size:2em;top:0;right:0}.ol-ext-dialog.ol-fullscreen-dialog .ol-closebox:before,.ol-ext-dialog.ol-fullscreen-dialog .ol-closebox:after{border:.1em solid}.ol-ext-dialog.ol-fullscreen-dialog img,.ol-ext-dialog.ol-fullscreen-dialog video{max-width:100%}body>.ol-ext-dialog .ol-content{max-height:calc(100vh - 10em)}body>.ol-ext-dialog>form{overflow:visible}.ol-editbar .ol-button button{box-sizing:border-box;vertical-align:middle;font-style:normal;display:inline-block;position:relative}.ol-editbar .ol-button button:before,.ol-editbar .ol-button button:after{content:"";box-sizing:border-box;background-color:currentColor;border-width:0;position:absolute}.ol-editbar .ol-button button:focus{outline:none}.ol-editbar .ol-selection>button:before{background-color:#0000;border:.25em solid #0000;border-top:0 solid;border-bottom:.65em solid;width:.6em;height:1em;top:.35em;left:.5em;transform:translate(-50%,-50%)rotate(-30deg);box-shadow:0 .6em 0 -.23em}.ol-editbar .ol-selection0>button:after{background-color:#0000;border:.05em solid #0000;border-top:0 solid;border-bottom:.7em solid;width:.28em;height:.6em;top:.5em;left:.7em;transform:rotate(-45deg)}.ol-editbar .ol-delete button:after,.ol-editbar .ol-delete button:before{width:1em;height:.2em;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-editbar .ol-delete button:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-editbar .ol-info button:before{border-radius:.03em;width:.25em;height:.6em;top:.47em;left:50%;transform:translate(-50%)}.ol-editbar .ol-info button:after{border-radius:.03em;width:.25em;height:.2em;top:.12em;left:50%;transform:translate(-50%);box-shadow:-.1em .35em,-.1em .82em,.1em .82em}.ol-editbar .ol-drawpoint button:before{background-color:#0000;border:.15em solid;border-radius:50%;width:.7em;height:.7em;top:.2em;left:50%;transform:translate(-50%)}.ol-editbar .ol-drawpoint button:after{background-color:#0000;border:.2em solid #0000;border-top:.4em solid;border-bottom:0 solid;width:.4em;height:.4em;top:.8em;left:50%;transform:translate(-50%)}.ol-editbar .ol-drawline>button:before,.ol-editbar .ol-drawpolygon>button:before,.ol-editbar .ol-drawhole>button:before{background-color:#0000;border:.13em solid;border-width:.2em .13em .09em;width:.8em;height:.8em;top:.2em;left:.25em;transform:rotate(10deg)perspective(1em)rotateX(40deg)}.ol-editbar .ol-drawline>button:before{border-bottom:0}.ol-editbar .ol-drawline>button:after,.ol-editbar .ol-drawhole>button:after,.ol-editbar .ol-drawpolygon>button:after{width:.3em;height:.3em;top:.2em;left:.25em;box-shadow:-.2em .55em,.6em .1em,.65em .7em}.ol-editbar .ol-drawhole>button:after{box-shadow:-.2em .55em,.6em .1em,.65em .7em,.25em .35em}.ol-editbar .ol-offset>button i,.ol-editbar .ol-transform>button i{width:.9em;height:.9em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-editbar .ol-offset>button i{width:.8em;height:.8em}.ol-editbar .ol-offset>button i:before,.ol-editbar .ol-transform>button i:before,.ol-editbar .ol-transform>button i:after{content:"";background-color:currentColor;width:.1em;height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg);box-shadow:.5em 0 0 .1em,-.5em 0 0 .1em}.ol-editbar .ol-offset>button i:before{box-shadow:.45em 0 0 .1em,-.45em 0 0 .1em}.ol-editbar .ol-transform>button i:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-editbar .ol-split>button:before{border-radius:50%;width:.3em;height:.3em;top:.81em;left:.75em;box-shadow:.1em -.4em,-.15em -.25em}.ol-editbar .ol-split>button:after{background-color:#0000;border:.2em solid;border-width:0 .2em .2em 0;border-radius:.1em;width:.8em;height:.8em;top:.15em;left:-.1em;transform:rotate(20deg)scaleY(.6)rotate(-45deg)}.ol-editbar .ol-drawregular>button:before{background-color:#0000;border:.1em solid;width:.9em;height:.9em;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div{cursor:pointer;vertical-align:text-bottom;border:.5em solid #0000;border-color:#0000 currentColor;display:inline-block}.ol-editbar .ol-drawregular .ol-bar:before,.ol-control.ol-bar.ol-editbar .ol-drawregular .ol-bar{left:50%;transform:translate(-50%)}.ol-editbar .ol-drawregular .ol-bar .ol-text-button{text-align:center;min-width:6em}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div:first-child{border-width:.5em .5em .5em 0;margin:0 .5em 0 0}.ol-editbar .ol-drawregular .ol-bar .ol-text-button>div>div>div:last-child{border-width:.5em 0 .5em .5em;margin:0 0 0 .5em}.ol-feature-list{position:relative}.ol-control.ol-feature-list{width:100%;position:absolute;bottom:0;left:0}.ol-control.ol-feature-list>button:before{content:"";background-image:linear-gradient(90deg,currentColor,#0000);width:60%;height:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 2.5px}.ol-control.ol-feature-list.ol-collapsed{width:auto;bottom:.5em;left:.5em}.ol-feature-list .ol-content{clear:both;background-color:#f4f6f8}.ol-feature-list.ol-collapsed .ol-content>*{display:none}.ol-feature-list .ol-header{position:relative;overflow:hidden}.ol-feature-list.ol-collapsed .ol-header{display:block}.ol-control.ol-feature-list>button,.ol-control.ol-feature-list.ol-collapsed .ol-content{display:none}.ol-control.ol-feature-list.ol-collapsed>button{display:block}.ol-feature-list .ol-sizer{cursor:row-resize;background-color:#ccc;border:1px solid #f4f6f8;border-width:1px 0;width:100%;height:1px;position:relative}.ol-feature-list.ol-bottom .ol-sizer{position:absolute;bottom:0}.ol-feature-list .ol-sizer:before{content:"";z-index:1;background-color:#ddd;border:3px solid #0000;border-width:3px 1.5em;border-radius:2px;width:1.5em;height:4px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 -1px #aaa,inset 0 1px #aaa}.ol-feature-list .ol-sizer:hover:before{background-color:#ccc}.ol-feature-list .ol-content .ol-header p{vertical-align:middle;white-space:nowrap;text-overflow:ellipsis;width:calc(100% - 2em);margin:.1em .25em;display:inline-block;overflow:hidden}.ol-feature-list .ol-content .ol-header .ol-buttons{position:absolute;top:50%;right:0;transform:translateY(-50%)}.ol-feature-list .ol-content .ol-header button{vertical-align:middle;box-sizing:border-box;background:0 0;border:0;width:1em;height:1em;margin:0 .2em;position:relative}.ol-feature-list .ol-content .ol-header button.ol-closebox:before,.ol-feature-list .ol-content .ol-header button.ol-closebox:after{content:"";background:currentColor;width:.1em;height:1em;font-style:normal;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-feature-list .ol-content .ol-header button.ol-closebox:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox{border:1px solid}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox:before{transform:translate(-50%,-50%)rotate(90deg)}.ol-feature-list.ol-collapsed .ol-content .ol-header button.ol-closebox:after{display:none}.ol-feature-list .ol-scroll-container{height:10em;min-height:3em;overflow:auto}.ol-feature-list .ol-scroll-container:focus{outline:unset}.ol-feature-list table{border-collapse:collapse;white-space:nowrap;background-color:#fff;position:relative}.ol-feature-list table thead{background-color:#f4f6f8;position:sticky;top:0;overflow:hidden}.ol-feature-list table tr{box-sizing:border-box;height:1.4em}.ol-feature-list table tbody tr:hover{cursor:pointer;background-color:#eee}.ol-feature-list table tbody tr.ol-selected{background-color:#eee}.ol-feature-list table td{border:0 solid #ddd;border-width:0 0 1px 1px;width:100px;overflow:hidden}.ol-feature-list table td.number{text-align:right}.ol-feature-list table td.undefined{text-align:center;background-color:#fafafa}.ol-feature-list table tr:hover td,.ol-feature-list table .ol-selected td{background-color:#0000}.ol-feature-list thead td{position:relative}.ol-feature-list thead td.sort{padding-right:1.5em}.ol-feature-list thead td p{margin:0;display:inline-block}.ol-feature-list table td button{background-color:#0000;border:0;width:1.2em;height:1.4em;margin:.1em 0;padding:0;position:absolute;top:0;right:0}.ol-feature-list thead td button.sort:before{content:"⇅";cursor:pointer;font-size:1em;font-style:normal;font-weight:400;line-height:1em}.ol-feature-list thead td button.sortup:before{content:"↧"}.ol-feature-list thead td button.sortdown:before{content:"↥"}.ol-gauge{background-color:#ffffff80;padding:.1em .5em;top:.5em;left:50%;transform:translate(-50%)}.ol-gauge>*{vertical-align:middle;display:inline-block}.ol-gauge>span{margin:0 .5em 0 0}.ol-gauge>div{border:1px solid #003c8880;border-radius:3px;width:200px;padding:1px;display:inline-block}.ol-gauge button{max-width:100%;height:.8em;margin:0}.ol-control.ol-bookmark{background-color:#ffffff80;top:.5em;left:3em}.ol-control.ol-bookmark button{position:relative}.ol-control.ol-bookmark>button:before{content:"";border:5px solid;border-top-width:10px;border-bottom:4px solid #0000;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-bookmark>div{min-width:5em;display:block}.ol-control.ol-bookmark.ol-collapsed>div{display:none}.ol-control.ol-bookmark input{margin:0 .5em .5em;padding:0 .5em;font-size:.9em}.ol-control.ol-bookmark ul{min-width:10em;margin:0 0 .5em;padding:0;list-style:none}.ol-control.ol-bookmark li{color:#003c88cc;cursor:default;clear:both;padding:0 .2em 0 .5em;font-size:.9em}.ol-control.ol-bookmark li:hover{color:#fff;background-color:#003c8880}.ol-control.ol-bookmark>div button{float:right;cursor:pointer;background-color:#0000;border-radius:0;width:1em;height:.8em}.ol-control.ol-bookmark>div button:before{content:"⨯";color:#936;border-radius:0;font-size:1.2em;line-height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-bookmark ul li button,.ol-bookmark input{display:none}.ol-bookmark.ol-editable ul li button,.ol-bookmark.ol-editable input{display:block}.ol-control.ol-geobt{inset:auto .5em 3em auto}.ol-touch .ol-control.ol-geobt{bottom:3.5em}.ol-control.ol-geobt button:before{content:"";background:0 0;border:.16em solid;border-radius:50%;width:.4em;height:.4em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-geobt button:after{content:"";background:0 0;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.42em 0,-.42em 0,0 .42em,0 -.42em}.ol-control.ol-bar.ol-geobar .ol-control{vertical-align:middle;display:inline-block}.ol-control.ol-bar.ol-geobar .ol-bar{display:none}.ol-bar.ol-geobar.ol-active .ol-bar{display:inline-block}.ol-bar.ol-geobar .geolocBt button:before,.ol-bar.ol-geobar .geolocBt button:after{content:"";border-top:.3em solid;border-bottom:0 solid #0000;border-left:.2em solid #0000;border-right:.8em solid #0000;font-size:1.2em;display:block;position:absolute;top:.45em;left:.15em;transform:rotate(-30deg)}.ol-bar.ol-geobar .geolocBt button:after{border-width:0 .8em .3em .2em;border-color:#0000 #0000 currentColor;transform:rotate(-61deg)}.ol-bar.ol-geobar .startBt button:before{content:"";background-color:#800;border-radius:50%;width:1em;height:1em;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-bar.ol-geobar .pauseBt button:before,.ol-bar.ol-geobar .pauseBt button:after{content:"";background-color:currentColor;width:.25em;height:1em;display:block;position:absolute;top:50%;left:35%;transform:translate(-50%,-50%)}.ol-bar.ol-geobar .pauseBt button:after{left:65%}.ol-control.ol-bar.ol-geobar .centerBt,.ol-control.ol-bar.ol-geobar .pauseBt,.ol-bar.ol-geobar.pauseTrack .startBt,.ol-bar.ol-geobar.centerTrack .startBt,.ol-bar.ol-geobar.centerTrack.pauseTrack .pauseBt,.ol-bar.ol-geobar.centerTrack .pauseBt{display:none}.ol-bar.ol-geobar.pauseTrack .pauseBt,.ol-bar.ol-geobar.centerTrack .centerBt{display:inline-block}.ol-control.ol-globe{opacity:.7;transform-origin:0 100%;border-radius:50%;position:absolute;bottom:.5em;left:.5em;transform:scale(.5)}.ol-control.ol-globe:hover{opacity:.9}.ol-control.ol-globe .panel{cursor:pointer;background-color:#fff;border-radius:50%;width:170px;height:170px;display:block;overflow:hidden;box-shadow:0 0 10px 5px #ffffff80}.ol-control.ol-globe .panel .ol-viewport{border-radius:50%}.ol-control.ol-globe .ol-pointer{z-index:1;background-color:#fff;border:10px solid red;border-radius:50%;width:10px;height:10px;transition:opacity .15s,top,left;display:block;position:absolute;top:50%;left:50%;transform:translate(-15px,-40px)}.ol-control.ol-globe .ol-pointer.hidden{opacity:0;transition:opacity .15s,top 3s,left 5s}.ol-control.ol-globe .ol-pointer:before{content:"";border-radius:50%;width:0;height:0;display:block;position:absolute;top:23px;left:0;box-shadow:6px 6px 10px 5px #000}.ol-control.ol-globe .ol-pointer:after{content:"";border:10px solid #0000;border-top:20px solid red;border-bottom:0 solid red;width:0;height:0;display:block;position:absolute;top:100%;left:-50%}.ol-control.ol-globe .panel:before{content:"";z-index:1;border-radius:50%;width:100%;height:100%;display:block;position:absolute;top:0;left:0;box-shadow:inset -20px -20px 80px 2px #000000b3}.ol-control.ol-globe .panel:after{content:"";z-index:1;border-radius:50%;width:20%;height:0;display:block;position:absolute;top:20%;left:23%;transform:rotate(-40deg);box-shadow:0 0 20px 7px #fff}.ol-control.ol-globe.ol-collapsed .panel{display:none}.ol-control-top.ol-globe{transform-origin:0 0;top:5em;bottom:auto}.ol-control-right.ol-globe{transform-origin:100% 100%;left:auto;right:.5em}.ol-control-right.ol-control-top.ol-globe{transform-origin:100% 0;left:auto;right:.5em}.ol-gridreference{background:#fff;border:1px solid #000;max-height:100%;top:0;right:0;overflow:auto}.ol-gridreference input{width:100%}.ol-gridreference ul{margin:0;padding:0;list-style:none}.ol-gridreference li{cursor:pointer;padding:0 .5em}.ol-gridreference ul li:hover{background-color:#ccc}.ol-gridreference li.ol-title,.ol-gridreference li.ol-title:hover{color:#fff;cursor:default;background:#003c8880}.ol-gridreference ul li .ol-ref{margin-left:.5em}.ol-gridreference ul li .ol-ref:before{content:"("}.ol-gridreference ul li .ol-ref:after{content:")"}.ol-control.ol-imageline{border-radius:0;padding:0;transition:all .3s;bottom:0;left:0;right:0;overflow:visible}.ol-control.ol-imageline.ol-collapsed{transform:translateY(100%)}.ol-imageline>div{white-space:nowrap;scroll-behavior:smooth;width:100%;height:4em;position:relative;overflow:hidden}.ol-imageline>div.ol-move{scroll-behavior:unset}.ol-control.ol-imageline button{margin:.65em;position:absolute;top:-1em;transform:translateY(-100%);box-shadow:0 0 0 .15em #fff6}.ol-control.ol-imageline button:before{content:"";border:.15em solid;border-width:.15em .15em 0 0;width:.4em;height:.4em;position:absolute;top:40%;left:50%;transform:translate(-50%,-50%)rotate(135deg)}.ol-control.ol-imageline.ol-collapsed button:before{top:60%;transform:translate(-50%,-50%)rotate(-45deg)}.ol-imageline,.ol-imageline:hover{background-color:#000000bf}.ol-imageline.ol-arrow:after,.ol-imageline.ol-arrow:before{content:"";z-index:1;opacity:.8;pointer-events:none;border:1em solid #fff;border-left:0 solid #000;border-right:.6em solid #000;position:absolute;top:50%;left:.2em;transform:translateY(-50%);box-shadow:-.6em 0 0 1em #fff}.ol-imageline.ol-arrow:after{border-width:1em 0 1em .6em;left:auto;right:.2em;box-shadow:.6em 0 0 1em #fff}.ol-imageline.ol-scroll0.ol-arrow:before,.ol-imageline.ol-scroll1.ol-arrow:after{display:none}.ol-imageline .ol-image{cursor:pointer;height:100%;display:inline-block;position:relative}.ol-imageline img{box-sizing:border-box;opacity:0;border:.25em solid #0000;max-height:100%;transition:all 1s}.ol-imageline img.ol-loaded{opacity:1}.ol-imageline .ol-image.select{background-color:#fff}.ol-imageline .ol-image span{color:#fff;white-space:normal;text-align:center;background-color:#00000080;width:125%;max-height:2.4em;font-size:.8em;line-height:1.2em;display:none;position:absolute;bottom:0;left:50%;overflow:hidden;transform:translate(-50%)scaleX(.8)}.ol-imageline .ol-image:hover span{display:block}.ol-control.ol-routing.ol-isochrone .ol-method-time,.ol-control.ol-routing.ol-isochrone .ol-method-distance,.ol-control.ol-routing.ol-isochrone>button{position:relative}.ol-control.ol-routing.ol-isochrone .ol-method-time:before,.ol-control.ol-routing.ol-isochrone>button:before{content:"";clip:unset;border:.1em solid;border-radius:50%;width:.8em;height:.8em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 -.5em 0 -.35em,.4em -.35em 0 -.35em}.ol-control.ol-routing.ol-isochrone .ol-method-time:after,.ol-control.ol-routing.ol-isochrone>button:after{content:"";-webkit-box-shadow:none;box-shadow:none;box-sizing:border-box;clip:unset;border:.3em solid #0000;border-right-color:currentColor;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-60deg)}.ol-control.ol-routing.ol-isochrone .ol-method-distance:before{content:"";box-sizing:border-box;border:.1em solid;width:1em;height:.5em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-30deg)}.ol-control.ol-routing.ol-isochrone .ol-method-distance:after{content:"";width:.1em;height:.15em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-30deg);box-shadow:inset 0 -.15em,0 .1em,.25em .1em,-.25em .1em}.ol-control.ol-routing.ol-isochrone .ol-direction-direct:before,.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:before{content:"";box-sizing:border-box;border:.1em solid;border-radius:50%;width:.3em;height:.3em;position:absolute;top:50%;left:30%;transform:translate(-50%,-50%);box-shadow:.25em 0 0 -.05em}.ol-control.ol-routing.ol-isochrone .ol-direction-direct:after,.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:after{content:"";border:.4em solid #0000;border-left-color:currentColor;border-right:0 solid;position:absolute;top:50%;left:70%;transform:translate(-50%,-50%)}.ol-control.ol-routing.ol-isochrone .ol-direction-reverse:after{border-width:.4em .4em .4em 0}.ol-control.ol-isochrone.ol-collapsed .content{display:none}.ol-control.ol-isochrone input[type=number]{text-align:right;width:3em;margin:0 .1em}.ol-control.ol-isochrone .ol-distance input[type=number]{width:5em}.ol-isochrone .ol-time,.ol-isochrone .ol-distance{display:none}.ol-isochrone .ol-time.selected,.ol-isochrone .ol-distance.selected{display:block}.ol-control.ol-layerswitcher-popup{text-align:left;position:absolute;top:3em;right:.5em}.ol-control.ol-layerswitcher-popup .panel{clear:both;background:#fff}.ol-layerswitcher-popup .panel{margin:0;padding:.25em;list-style:none;overflow:hidden}.ol-layerswitcher-popup .panel ul{padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher-popup.ol-collapsed .panel{display:none}.ol-layerswitcher-popup.ol-forceopen .panel{display:block}.ol-layerswitcher-popup button{float:right;background-color:#fff;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACE1BMVEX///8A//8AgICA//8AVVVAQID///8rVVVJtttgv98nTmJ2xNgkW1ttyNsmWWZmzNZYxM4gWGgeU2JmzNNr0N1Rwc0eU2VXxdEhV2JqytQeVmMhVmNoydUfVGUgVGQfVGQfVmVqy9hqy9dWw9AfVWRpydVry9YhVmMgVGNUw9BrytchVWRexdGw294gVWQgVmUhVWPd4N6HoaZsy9cfVmQgVGRrytZsy9cgVWQgVWMgVWRsy9YfVWNsy9YgVWVty9YgVWVry9UgVWRsy9Zsy9UfVWRsy9YgVWVty9YgVWRty9Vsy9aM09sgVWRTws/AzM0gVWRtzNYgVWRuy9Zsy9cgVWRGcHxty9bb5ORbxdEgVWRty9bn6OZTws9mydRfxtLX3Nva5eRix9NFcXxOd4JPeINQeIMiVmVUws9Vws9Vw9BXw9BYxNBaxNBbxNBcxdJexdElWWgmWmhjyNRlx9IqXGtoipNpytVqytVryNNrytZsjZUuX210k5t1y9R2zNR3y9V4lp57zth9zdaAnKOGoaeK0NiNpquV09mesrag1tuitbmj1tuj19uktrqr2d2svcCu2d2xwMO63N+7x8nA3uDC3uDFz9DK4eHL4eLN4eIyYnDX5OM5Z3Tb397e4uDf4uHf5uXi5ePi5+Xj5+Xk5+Xm5+Xm6OY6aHXQ19fT4+NfhI1Ww89gx9Nhx9Nsy9ZWw9Dpj2abAAAAWnRSTlMAAQICAwQEBgcIDQ0ODhQZGiAiIyYpKywvNTs+QklPUlNUWWJjaGt0dnd+hIWFh4mNjZCSm6CpsbW2t7nDzNDT1dje5efr7PHy9PT29/j4+Pn5+vr8/f39/f6DPtKwAAABTklEQVR4Xr3QVWPbMBSAUTVFZmZmhhSXMjNvkhwqMzMzMzPDeD+xASvObKePPa+ffHVl8PlsnE0+qPpBuQjVJjno6pZpSKXYl7/bZyFaQxhf98hHDKEppwdWIW1frFnrxSOWHFfWesSEWC6R/P4zOFrix3TzDFLlXRTR8c0fEEJ1/itpo7SVO9Jdr1DVxZ0USyjZsEY5vZfiiAC0UoTGOrm9PZLuRl8X+Dq1HQtoFbJZbv61i+Poblh/97TC7n0neCcK0ETNUrz1/xPHf+DNAW9Ac6t8O8WH3Vp98f5lCaYKAOFZMLyHL4Y0fe319idMNgMMp+zWVSybUed/+/h7I4wRAG1W6XDy4XmjR9HnzvDRZXUAYDFOhC1S/Hh+fIXxen+eO+AKqbs+wAo30zDTDvDxKoJN88sjUzDFAvBzEUGFsnADoIvAJzoh2BZ8sner+Ke/vwECuQAAAABJRU5ErkJggg==);background-position:50%;background-repeat:no-repeat;width:38px;height:38px}.ol-layerswitcher-popup li{color:#369;cursor:pointer;padding:.25em 1em;font-family:Trebuchet MS,Helvetica,sans-serif}.ol-layerswitcher-popup li.ol-header{display:none}.ol-layerswitcher-popup li.select,.ol-layerswitcher-popup li.ol-visible{color:#fff;background:#003c88b3}.ol-layerswitcher-popup li:hover{color:#fff;background:#003c88e6}.ol-control.ol-layerswitcher.ol-layer-shop{height:calc(100% - 4em);max-height:unset;background-color:#0000;max-width:16em;overflow:visible;pointer-events:none!important}.ol-control.ol-layerswitcher>*{pointer-events:auto}.ol-control.ol-layer-shop>button,.ol-control.ol-layer-shop .panel-container{box-shadow:0 0 0 3px #ffffff80}.ol-control.ol-layerswitcher.ol-layer-shop .panel-container{border:2px solid #369;border-width:2px 0;max-height:calc(100% - 6.5em);padding:0;overflow-y:scroll}.ol-control.ol-layer-shop .panel{box-sizing:border-box;margin:.25em .5em;padding:0}.ol-control.ol-layerswitcher.ol-layer-shop .panel-container.ol-scrolldiv{overflow:hidden}.ol-control.ol-layer-shop .ol-scroll{opacity:.5;background-color:#0000004d}.ol-layerswitcher.ol-layer-shop ul.panel li.ol-header{display:none}.ol-layerswitcher.ol-layer-shop ul.panel li{margin-right:0;padding-right:0}.ol-layerswitcher.ol-layer-shop .layerup{box-sizing:border-box;color:#003c88;background-color:#0000;border-radius:3px;width:1.4em;height:1.5em;margin:0}.ol-layerswitcher.ol-layer-shop .layerup:hover{background-color:#003c884d}.ol-layerswitcher.ol-layer-shop .layerup:before{background-color:currentColor;border:0;width:1em;height:2px;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 -4px,0 4px}.ol-layerswitcher.ol-layer-shop .layerup:after{content:unset}.ol-control.ol-layer-shop .ol-title-bar{box-sizing:border-box;text-overflow:ellipsis;white-space:nowrap;text-align:right;transform-origin:100% 0;background-color:#ffffff80;max-width:14.6em;height:calc(2.8em - 4px);padding:.7em .5em;font-size:.9em;transition:transform .1s,width;overflow:hidden;transform:scaleY(1.1)}.ol-control.ol-layer-shop:hover .ol-title-bar{background-color:#ffffffb3}.ol-control.ol-layer-shop.ol-collapsed .ol-title-bar{max-width:10em;transform:scale(.9,1.1)}.ol-control.ol-layer-shop.ol-forceopen .ol-title-bar{max-width:14.6em;transform:scaleY(1.1)}.ol-control.ol-layer-shop .ol-bar{clear:both;text-align:right;z-index:10;background-color:#fff;height:1.75em;position:relative;box-shadow:0 0 0 3px #ffffff80}.ol-control.ol-layer-shop.ol-collapsed .ol-scroll,.ol-control.ol-layer-shop.ol-collapsed .ol-bar{border-width:2px 0 0;display:none}.ol-control.ol-layer-shop.ol-forceopen .ol-scroll,.ol-control.ol-layer-shop.ol-forceopen .ol-bar{display:block}.ol-control.ol-layer-shop .ol-bar>*{vertical-align:middle;background-color:#0000;margin-top:.25em;font-size:.9em;display:inline-block}.ol-layer-shop .ol-bar .ol-button,.ol-touch .ol-layer-shop .ol-bar .ol-button{top:unset;left:unset;bottom:unset;right:unset;margin:0;position:relative}.ol-layer-shop .ol-bar button{color:#003c88;background-color:#fff}.ol-layer-shop .ol-bar button:hover{background-color:#003c8833}.ol-touch .ol-layerswitcher.ol-layer-shop>button{font-size:1.7em}.ol-touch .ol-layer-shop .ol-bar{height:2em}.ol-touch .ol-layer-shop .ol-control button{font-size:1.4em}.ol-touch .ol-control.ol-layer-shop .panel{max-height:calc(100% - 7em)}.ol-touch .ol-control.ol-layer-shop .panel label{height:1.8em}.ol-touch .ol-control.ol-layer-shop .panel label span{margin-left:.5em;padding-top:.25em}.ol-touch .ol-control.ol-layer-shop .panel label:before,.ol-touch .ol-control.ol-layer-shop .panel label:after{z-index:1;font-size:1.3em}.ol-control.ol-layerswitcher{text-align:left;box-sizing:border-box;max-height:calc(100% - 6em);position:absolute;top:3em;right:.5em;overflow:hidden}.ol-control.ol-layerswitcher .ol-switchertopdiv,.ol-control.ol-layerswitcher .ol-switcherbottomdiv{display:block}.ol-control.ol-layerswitcher.ol-collapsed .ol-switchertopdiv,.ol-control.ol-layerswitcher.ol-collapsed .ol-switcherbottomdiv{display:none}.ol-layerswitcher.ol-forceopen.ol-collapsed .ol-switchertopdiv,.ol-layerswitcher.ol-forceopen.ol-collapsed .ol-switcherbottomdiv{display:block}.ol-control.ol-layerswitcher .ol-switchertopdiv,.ol-control.ol-layerswitcher .ol-switcherbottomdiv{z-index:2;opacity:1;cursor:pointer;box-sizing:border-box;background:#fff;border-top:2px solid #0000;border-bottom:2px solid #369;height:45px;margin:0 2px;position:absolute;top:0;left:0;right:0}.ol-control.ol-layerswitcher .ol-switcherbottomdiv{border-top:2px solid #369;border-bottom:2px solid #0000;height:2em;top:auto;bottom:0}.ol-control.ol-layerswitcher .ol-switchertopdiv:before,.ol-control.ol-layerswitcher .ol-switcherbottomdiv:before{content:"";opacity:.8;border:10px solid #0000;width:0;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-layerswitcher .ol-switchertopdiv:hover:before,.ol-control.ol-layerswitcher .ol-switcherbottomdiv:hover:before{opacity:1}.ol-control.ol-layerswitcher .ol-switchertopdiv:before{border-top:0;border-bottom-color:#369}.ol-control.ol-layerswitcher .ol-switcherbottomdiv:before{border-top-color:#369;border-bottom:0}.ol-control.ol-layerswitcher .panel-container{clear:both;background-color:#fff;border-radius:0 0 2px 2px;padding:.5em .5em 0;display:block}.ol-layerswitcher .panel{margin:0;padding:0;font-family:Tahoma,Geneva,sans-serif;font-size:.9em;list-style:none;transition:top .3s;position:relative;top:0;overflow:hidden}.ol-layerswitcher .panel ul{clear:both;padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher input[type=radio],.ol-layerswitcher input[type=checkbox]{opacity:0;width:0;height:0;position:absolute}.ol-layerswitcher .panel li{-weblit-transition:-webkit-transform .2s linear;clear:both;box-sizing:border-box;border:1px solid #0000;transition:transform .2s linear;display:block}.ol-layerswitcher .panel li.ol-layer-select{background-color:#003c8833;margin:0 -.5em;padding:0 .5em}.ol-layerswitcher .panel li.drag{opacity:.5;transform:scale(.8)}.ol-dragover{opacity:.8;background:#33669980}.ol-layerswitcher .panel li.forbidden,.forbidden .ol-layerswitcher-buttons div,.forbidden .layerswitcher-opacity div{background:#ff000080;color:red!important}.ol-layerswitcher.drag,.ol-layerswitcher.drag *{cursor:not-allowed!important;cursor:no-drop!important}.ol-layerswitcher.drag .panel li.dropover,.ol-layerswitcher.drag .panel li.dropover *{cursor:pointer!important;cursor:n-resize!important;cursor:ns-resize!important;cursor:-webkit-grab!important;cursor:grab!important;cursor:-webkit-grabbing!important;cursor:grabbing!important}.ol-layerswitcher .panel li.dropover{background:#33669980}.ol-layerswitcher .panel li label{white-space:nowrap;text-overflow:ellipsis;max-width:12em;height:1.4em;padding:0 0 0 1.7em;display:inline-block;position:relative;overflow:hidden}.ol-layerswitcher .panel li label span{text-overflow:ellipsis;width:100%;height:100%;padding-right:.2em;display:inline-block;overflow:hidden}.ol-layerswitcher [type=radio]+label:before,.ol-layerswitcher [type=checkbox]+label:before,.ol-layerswitcher [type=radio]:checked+label:after,.ol-layerswitcher [type=checkbox]:checked+label:after{content:"";box-sizing:border-box;background:#fff;border:2px solid #369;width:1.2em;height:1.2em;position:absolute;top:.1em;left:.1em}.ol-layerswitcher li:has(>div.li-content>.ol-visibility:focus){border-color:#369;box-shadow:inset 0 0 0 1px #369}.ol-layerswitcher [type=radio]+label:before,.ol-layerswitcher [type=radio]+label:after{border-radius:50%}.ol-layerswitcher [type=radio]:checked+label:after{background:#369;width:.6em;height:.6em;margin:.3em}.ol-layerswitcher [type=checkbox]:checked+label:after{background:0 0;border:3px solid #369;border-width:0 3px 3px 0;width:.7em;height:1em;top:-.05em;left:.55em;transform:rotate(45deg);box-shadow:1px 0 1px 1px #fff}.ol-layerswitcher .panel li.ol-layer-hidden{opacity:.6}.ol-layerswitcher.ol-collapsed .panel-container{display:none}.ol-layerswitcher.ol-forceopen .panel-container{display:block}.ol-control.ol-layerswitcher .ol-counter{z-index:22;text-align:left;font-size:.65em;line-height:1.5em;display:none;position:absolute;top:0;right:.3em}.ol-control.ol-layerswitcher.ol-counter .ol-counter{display:block}.ol-control.ol-layer-shop .ol-counter{text-align:center;background:#fff;border-radius:50%;width:1.5em;line-height:1.5em;transform:translate(50%,-50%);box-shadow:.5px .5px 2px}.ol-layerswitcher-image>button,.ol-layerswitcher>button{float:right;z-index:10;background-color:#fff;font-size:1.7em;position:relative}.ol-touch .ol-layerswitcher-image>button,.ol-touch .ol-layerswitcher>button{font-size:2.5em}.ol-layerswitcher-image>button:before,.ol-layerswitcher-image>button:after,.ol-layerswitcher>button:before,.ol-layerswitcher>button:after{content:"";border-radius:.15em;width:.75em;height:.75em;position:absolute;transform:scaleY(.8)rotate(45deg)}.ol-layerswitcher-image>button:before,.ol-layerswitcher>button:before{background:#e2e4e1;top:.32em;left:.34em;box-shadow:.1em .1em #325158}.ol-layerswitcher-image>button:after,.ol-layerswitcher>button:after{background:#83bcc5 radial-gradient(circle at .85em .6em,#70b3be 0 .65em,#83bcc5 .65em);top:.22em;left:.34em}.ol-layerswitcher-buttons{float:right;text-align:right;display:block}.ol-layerswitcher-buttons>div{cursor:pointer;text-align:center;vertical-align:middle;color:#fff;background:#369;width:1em;height:1em;margin:2px;line-height:1em;display:inline-block;position:relative}.ol-layerswitcher .panel li>div{display:inline-block;position:relative}.ol-layerswitcher .ol-separator{width:0;height:0;margin:0;padding:0;display:block}.ol-layerswitcher .layerup{float:right;opacity:.5;cursor:move;cursor:ns-resize;background-color:#369;height:2.5em}.ol-layerswitcher .layerup:before,.ol-layerswitcher .layerup:after{content:"";border:.4em solid #0000;border-top-color:#fff;border-bottom:0 solid #fff;width:0;height:0;position:absolute;bottom:3px;left:.1em}.ol-layerswitcher .layerup:after{border-width:0 .4em .4em;top:3px;bottom:auto}.ol-layerswitcher .layerInfo{background:#369;border-radius:100%}.ol-layerswitcher .layerInfo:before{color:#fff;content:"i";text-align:center;width:1.25em;font-size:.8em;font-weight:700;display:block;position:absolute;top:0;left:0}.ol-layerswitcher .layerTrash{background:#369}.ol-layerswitcher .layerTrash:before{color:#fff;content:"×";text-align:center;margin:-.5em 0;font-size:1em;line-height:1em;position:absolute;top:50%;left:0;right:0}.ol-layerswitcher .layerExtent{background:#369}.ol-layerswitcher .layerExtent:before{content:"";border-bottom:1px solid #fff;border-right:1px solid #fff;display:block;position:absolute;inset:6px 2px 3px 6px}.ol-layerswitcher .layerExtent:after{content:"";border-top:1px solid #fff;border-left:1px solid #fff;display:block;position:absolute;inset:3px 6px 6px 2px}.ol-layerswitcher .expend-layers,.ol-layerswitcher .collapse-layers{background-color:#0000;margin:0 2px}.ol-layerswitcher .expend-layers:before,.ol-layerswitcher .collapse-layers:before{content:"";background:#369;width:100%;height:4px;margin-top:-2px;position:absolute;top:50%;left:0}.ol-layerswitcher .expend-layers:after{content:"";background:#369;width:4px;height:100%;margin-left:-2px;position:absolute;top:0;left:50%}.ol-layerswitcher .layerswitcher-opacity{box-sizing:border-box;background:#69c;cursor:pointer;background:linear-gradient(90deg,#003c8800,#003c8899);border:1px solid #369;border-radius:3px;width:120px;height:3px;margin:5px 1em 10px 7px;position:relative;box-shadow:1px 1px 1px #00000080}.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor,.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor:before{z-index:1;background:#003c8880;border-radius:50%;width:20px;height:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor:before{content:"";width:50%;height:50%;position:absolute}.ol-touch .ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor{width:26px;height:26px}.ol-layerswitcher .layerswitcher-opacity-label{font-size:.8em;display:none;position:absolute;bottom:5px;right:-2.5em}.ol-layerswitcher .layerswitcher-opacity-label:after{content:"%"}.ol-layerswitcher .layerswitcher-progress{width:120px;margin:-4px 1em 2px 7px;display:block}.ol-layerswitcher .layerswitcher-progress div{background-color:#369;width:0;height:2px;display:block}.ol-control.ol-layerswitcher-image{text-align:left;transition:all .2s;position:absolute;top:1em;right:.5em}.ol-control.ol-layerswitcher-image.ol-collapsed{transition:none;top:3em}.ol-layerswitcher-image .panel{margin:0;padding:.25em;list-style:none;overflow:hidden}.ol-layerswitcher-image .panel ul{padding:0 0 0 20px;list-style:none;overflow:hidden}.ol-layerswitcher-image.ol-collapsed .panel{display:none}.ol-layerswitcher-image.ol-forceopen .panel{clear:both;display:block}.ol-layerswitcher-image button{float:right;display:none}.ol-layerswitcher-image.ol-collapsed button{display:block;position:relative}.ol-layerswitcher-image li{vertical-align:middle;cursor:pointer;background-color:#fff;border:3px solid #0000;border-radius:4px;width:64px;height:64px;margin:2px;display:inline-block;position:relative;overflow:hidden;box-shadow:1px 1px 4px #00000080}.ol-layerswitcher-image li.ol-layer-hidden{opacity:.5;border-color:#555}.ol-layerswitcher-image li.ol-header{display:none}.ol-layerswitcher-image li img{max-width:100%;position:absolute}.ol-layerswitcher-image li.select,.ol-layerswitcher-image li.ol-visible{border:3px solid red}.ol-layerswitcher-image li p{display:none}.ol-layerswitcher-image li:hover p{color:#fff;text-align:center;background-color:#00000080;height:1.2em;margin:0;font-family:Verdana,Geneva,sans-serif;font-size:.8em;display:block;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.ol-control.ol-legend{z-index:1;background-color:#fff9;max-width:90%;max-height:90%;bottom:.5em;left:.5em;overflow:hidden auto}.ol-control.ol-legend:hover{background-color:#fffc}.ol-control.ol-legend.ol-empty,.ol-control.ol-legend.ol-collapsed{overflow:hidden}.ol-control.ol-legend button{display:none;position:relative}.ol-control.ol-legend.ol-empty button,.ol-control.ol-legend.ol-collapsed button{display:block}.ol-control.ol-legend.ol-uncollapsible button{display:none}.ol-control.ol-legend>ul,.ol-control.ol-legend>canvas{margin:2px}.ol-control.ol-legend button.ol-closebox{cursor:pointer;z-index:1;background:0 0;display:block;position:absolute;top:0;right:0}.ol-control.ol-legend.ol-empty button.ol-closebox,.ol-control.ol-legend.ol-uncollapsible button.ol-closebox,.ol-control.ol-legend.ol-collapsed button.ol-closebox{display:none}.ol-control.ol-legend button.ol-closebox:before{content:"×";color:#003c8880;background:0 0;font-size:1.3em}.ol-control.ol-legend button.ol-closebox:hover:before{color:#003c88}.ol-control.ol-legend .ol-legendImg{display:block}.ol-control.ol-legend.ol-empty .ol-legendImg,.ol-control.ol-legend.ol-collapsed .ol-legendImg{display:none}.ol-control.ol-legend.ol-uncollapsible .ol-legendImg{display:block}.ol-control.ol-legend>button:first-child:before,.ol-control.ol-legend>button:first-child:after{content:"";background-color:currentColor;width:.2em;height:.2em;position:absolute;top:.25em;left:.2em;box-shadow:0 .35em,0 .7em}.ol-control.ol-legend button:first-child:after{width:.6em;height:.15em;top:.27em;left:.55em}ul.ol-legend{width:100%;margin:0;padding:0;list-style:none;position:absolute;top:0;left:0}.ol-control.ol-legend.ol-empty ul,.ol-control.ol-legend.ol-collapsed ul{display:none}.ol-control.ol-legend.ol-uncollapsible ul{display:block}ul.ol-legend li.ol-title{text-align:center;font-weight:700}ul.ol-legend li.ol-title>div:first-child{width:0!important}ul.ol-legend li{white-space:nowrap;padding:0;overflow:hidden}ul.ol-legend li div{vertical-align:top;display:inline-block}.ol-control.ol-legend .ol-legend{display:inline-block}.ol-control.ol-legend.ol-empty .ol-legend,.ol-control.ol-legend.ol-collapsed .ol-legend{display:none}.ol-control.ol-legend.ol-empty button{opacity:.4}.ol-control.ol-mapzone{text-align:left;box-sizing:border-box;max-height:calc(100% - 6em);position:absolute;top:.5em;right:.5em;overflow:hidden}.ol-control.ol-mapzone.ol-collapsed{top:3em}.ol-control.ol-mapzone button{float:right;margin-top:2.5em;position:relative}.ol-touch .ol-control.ol-mapzone button{margin-top:1.67em}.ol-control.ol-mapzone.ol-collapsed button{margin-top:0}.ol-control.ol-mapzone button i{border:.1em solid;border-radius:50%;width:.9em;height:.9em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-control.ol-mapzone button i:before{content:"";background-color:currentColor;border-radius:50%;width:.4em;height:.4em;position:absolute;top:.3em;left:.5em;box-shadow:.05em .3em 0 -.051em,-.05em -.35em 0 -.1em,-.5em -.35em 0 0,-.65em .1em 0 -.03em,-.65em -.05em 0 -.05em}.ol-mapzone>div{width:5em;height:5em;margin:0 .2em 0 0;display:inline-block;position:relative}.ol-mapzone>div:focus{box-shadow:0 0 0 .2em #369}.ol-control.ol-mapzone.ol-collapsed>div{display:none}.ol-mapzone>div p{color:#fff;text-align:center;transform-origin:0 0;cursor:default;width:160%;margin:0;font-family:Lucida Grande,Verdana,Geneva,Lucida,Arial,Helvetica,sans-serif;font-weight:700;position:absolute;bottom:0;overflow:hidden;transform:scaleX(.625)}.ol-notification{background:0 0;border:0;width:150%;margin:0;padding:0;bottom:0}.ol-notification>div,.ol-notification>div:hover{color:#fff;text-align:center;box-sizing:border-box;opacity:1;background-color:#000c;border-radius:4px 4px 0 0;min-width:5em;max-width:calc(66% - 4em);min-height:1em;max-height:5em;padding:.2em .5em;transition:all .3s;position:absolute;bottom:0;left:33.33%;transform:translate(-50%)}.ol-notification.ol-collapsed>div{opacity:0;bottom:-5em}.ol-notification a{color:#9cf;cursor:pointer}.ol-notification .ol-close,.ol-notification .ol-close:hover{padding-right:1.5em}.ol-notification .closeBox{position:absolute;top:0;right:.3em}.ol-notification .closeBox:before{content:"×"}.ol-overlay{color:#fff;box-sizing:border-box;z-index:1;opacity:0;cursor:default;pointer-events:none;z-index:9;background-color:#0006;width:100%;height:100%;padding:1em;transition:all .5s;display:none;position:absolute;top:0;left:0;overflow:hidden}.ol-overlay.slide-up{transform:translateY(100%)}.ol-overlay.slide-down{transform:translateY(-100%)}.ol-overlay.slide-left{transform:translate(-100%)}.ol-overlay.slide-right{transform:translate(100%)}.ol-overlay.zoom{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)}.ol-overlay.zoomout{transform:scale(3)}.ol-overlay.zoomrotate{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)rotate(360deg)}.ol-overlay.stretch{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scaleX(0)}.ol-overlay.stretchy{opacity:.5;top:50%;left:50%;transform:translate(-50%,-50%)scaleY(0)}.ol-overlay.wipe{opacity:1}.ol-overlay.flip{transform:perspective(600px)rotateY(180deg)}.ol-overlay.card{opacity:.5;transform:translate(-80%,100%)rotate(-.5turn)}.ol-overlay.book{transform-origin:10%;transform:perspective(600px)rotateY(-180deg)scaleX(.6)}.ol-overlay.book.visible{transform-origin:10%}.ol-overlay.ol-visible{opacity:1;pointer-events:all;inset:0;transform:none}.ol-overlay .ol-closebox{cursor:pointer;z-index:1;width:1em;height:1em;position:absolute;top:1em;right:1em}.ol-overlay .ol-closebox:before{content:"❌";text-align:center;vertical-align:middle;display:block}.ol-overlay .ol-fullscreen-image{position:absolute;inset:0}.ol-overlay .ol-fullscreen-image img{box-sizing:border-box;max-width:100%;max-height:100%;padding:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlay .ol-fullscreen-image.ol-has-title img{padding-bottom:3em}.ol-overlay .ol-fullscreen-image p{text-align:center;background-color:#00000080;margin:0;padding:.5em;position:absolute;bottom:0;left:0;right:0}.ol-control.ol-overview{text-align:left;position:absolute;bottom:.5em;left:.5em}.ol-control.ol-overview .panel{cursor:pointer;background-color:#fff;border:1px solid #369;width:150px;height:150px;margin:2px;display:block}.ol-overview:not(.ol-collapsed) button{z-index:2;position:absolute;bottom:2px;left:2px}.ol-control.ol-overview.ol-collapsed .panel{display:none}.ol-overview.ol-collapsed button:before{content:"»"}.ol-overview button:before{content:"«"}.ol-control-right.ol-overview{left:auto;right:.5em}.ol-control-right.ol-overview:not(.ol-collapsed) button{left:auto;right:2px}.ol-control-right.ol-overview.ol-collapsed button:before{content:"«"}.ol-control-right.ol-overview button:before{content:"»"}.ol-control-top.ol-overview{top:5em;bottom:auto}.ol-control-top.ol-overview:not(.ol-collapsed) button{top:2px;bottom:auto}.ol-permalink{position:absolute;top:.5em;right:2.5em}.ol-touch .ol-permalink{right:3em}.ol-permalink button i{width:1em;height:1em;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-permalink button i:before{content:"↗";box-sizing:border-box;border:0 solid;border-width:1px 0 0 1px;width:.3em;height:1em;padding:0 .2em;position:absolute;top:0;left:0}.ol-permalink button i:after{content:"";box-sizing:border-box;border:1px solid;border-width:0 1px 1px 0;width:1em;height:.3em;padding:.2em;position:absolute;bottom:0;right:0}.ol-control.ol-print{top:.5em;left:3em}.ol-control.ol-print button:before{content:"";width:.9em;height:.35em;position:absolute;top:50%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 .1em,inset .55em 0,0 .2em 0 -.1em}.ol-control.ol-print button:after{content:"";width:.7em;height:.6em;position:absolute;top:25%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 .15em}.ol-ext-print-dialog{width:100%;height:100%}.ol-ext-print-dialog>form .ol-closebox{z-index:1;color:#999;left:16.5em;right:auto}.ol-ext-print-dialog .ol-content[data-status=printing]{opacity:.5}.ol-ext-print-dialog .ol-content .ol-error{color:#ff0;text-align:center;background:#b00;margin:0 -1em;padding:1em .5em;font-weight:700;display:none}.ol-ext-print-dialog .ol-content[data-status=error] .ol-error{display:block}.ol-ext-print-dialog>form,.ol-ext-print-dialog.ol-visible>form{max-width:100%;max-height:100%;width:unset;background-color:#eee;padding:0;transition:none;inset:1em;transform:none}.ol-ext-print-dialog .ol-print-map{width:calc(100% - 18em);position:absolute;top:0;bottom:0;right:0;overflow:hidden}.ol-ext-print-dialog .ol-print-map .ol-page{box-sizing:border-box;background:#fff;position:absolute;top:50%;left:50%}.ol-ext-print-dialog .ol-print-map .ol-page.margin{box-sizing:content-box}.ol-ext-print-dialog .ol-map{width:100%;height:100%}.ol-ext-print-dialog .ol-print-map .ol-control{display:none!important}.ol-ext-print-dialog .ol-print-param{box-sizing:border-box;background-color:#fff;width:18em;padding:1em;position:absolute;top:0;bottom:0;left:0;overflow-x:hidden}.ol-ext-print-dialog .ol-print-param h2{color:#003c88b3;font-size:1.1em;display:block}.ol-ext-print-dialog .ol-print-param ul{padding:0;list-style:none}.ol-ext-print-dialog .ol-print-param li{margin:.5em 0;font-size:.9em;position:relative}.ol-ext-print-dialog .ol-print-param li.hidden{display:none}.ol-ext-print-dialog .ol-print-param label{vertical-align:middle;width:8em;display:inline-block}.ol-ext-print-dialog select{vertical-align:middle;outline:none}.ol-ext-print-dialog .ol-orientation{text-align:center}.ol-ext-print-dialog .ol-orientation label{cursor:pointer;width:7em;position:relative}.ol-ext-print-dialog .ol-orientation input{opacity:0;width:0;height:0;position:absolute}.ol-ext-print-dialog .ol-orientation span{width:80%;padding:3.5em 0 .2em;display:block;position:relative}.ol-ext-print-dialog .ol-orientation span:before{content:"";color:#333;opacity:.5;background-color:currentColor;border:1px solid;border-radius:0 1em 0 0;width:2em;height:2.6em;position:absolute;bottom:1.5em;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:inset 1.3em -1.91em #ddd}.ol-ext-print-dialog .ol-orientation .landscape span:before{width:2.6em;height:2em;margin:.2em 0;box-shadow:inset 1.91em -1.3em #ddd}.ol-ext-print-dialog .ol-orientation input:checked+span{opacity:1;box-shadow:0 0 .2em #00000080}.ol-ext-print-dialog .ol-ext-toggle-switch span{position:absolute;top:50%;right:-2em;transform:translateY(-50%)}.ol-print-title input[type=text]{width:calc(100% - 6em);margin-top:.5em;margin-left:6em}.ol-ext-print-dialog .ol-size option:first-child{font-style:italic}.ol-ext-print-dialog .ol-saveas,.ol-ext-print-dialog .ol-savelegend{text-align:center}.ol-ext-print-dialog .ol-saveas select,.ol-ext-print-dialog .ol-savelegend select{color:#fff;background-color:#003c88b3;border:0;max-width:12em;margin:1em 0 0;padding:.5em;font-size:1em;font-weight:700}.ol-ext-print-dialog .ol-saveas select option,.ol-ext-print-dialog .ol-savelegend select option{color:#666;background-color:#fff}.ol-ext-print-dialog .ol-savelegend select{margin-top:0}.ol-ext-print-dialog .ol-ext-buttons{text-align:right;border-top:1px solid #ccc;margin:0 -1em;padding:.8em .5em}.ol-ext-print-dialog button{color:#333;background:0 0;border:1px solid #999;margin:0 .2em;padding:.3em 1em;font-size:1em}.ol-ext-print-dialog button[type=submit]{color:#fff;background-color:#003c88b3;font-weight:700}.ol-ext-print-dialog .ol-clipboard-copy{pointer-events:none;color:#fff;opacity:0;background-color:#00000080;border-radius:1em;width:fit-content;padding:.5em 1em;transition:all;position:absolute;top:0;left:50%;transform:translate(-50%)}.ol-ext-print-dialog .ol-clipboard-copy.visible{animation:1s ol-clipboard-copy}.ol-ext-print-dialog .ol-print-map .ol-control.ol-canvas-control,.ol-ext-print-dialog .ol-print-map .ol-control.ol-print-compass{display:block!important}.ol-ext-print-dialog .ol-print-map .ol-control.olext-print-compass{width:60px;height:60px;margin:20px;top:0;right:0}.ol-ext-print-dialog .ol-orientation input:focus-visible+span,.ol-ext-print-dialog select:focus-visible{outline:2px solid #000}@keyframes ol-clipboard-copy{0%{opacity:0;top:0}80%{opacity:1;top:-3em}to{opacity:0;top:-3em}}@media print{body.ol-print-document{margin:0!important;padding:0!important}body.ol-print-document>*{display:none!important}body.ol-print-document>.ol-ext-print-dialog{display:block!important}body.ol-print-document>.ol-ext-print-dialog .ol-content{max-height:unset!important;max-width:unset!important;width:unset!important;height:unset!important}.ol-ext-print-dialog>form,.ol-ext-print-dialog{position:unset;-webkit-box-shadow:none;box-shadow:none;border:0;background:0 0!important}.ol-ext-print-dialog>form>*,.ol-ext-print-dialog .ol-print-param{background:0 0;display:none!important}.ol-ext-print-dialog .ol-content{background:0 0;border:0;display:block!important}.ol-ext-print-dialog .ol-print-map{position:unset;background:0 0;width:auto;overflow:visible}.ol-ext-print-dialog .ol-print-map .ol-page{position:unset;-webkit-box-shadow:none!important;box-shadow:none!important;transform:none!important}}@media (width<=25em){.ol-ext-print-dialog .ol-print-param{width:13em}.ol-ext-print-dialog .ol-print-map{width:calc(100% - 13em)}.ol-ext-print-dialog .ol-print-param .ol-print-title input[type=text]{width:100%;margin:0}}.ol-ext-print-dialog2x .ol-map,.ol-ext-print-dialog2x .ol-map2{width:100%;height:50%}.ol-ext-print-dialog2x[data-orientation=landscape] .ol-map,.ol-ext-print-dialog2x[data-orientation=landscape] .ol-map2{width:50%;height:100%;display:inline-block}.ol-ext-print-dialog2x[data-clip-map] .ol-map,.ol-ext-print-dialog2x[data-swipe-orientation] .ol-map{width:100%!important;height:100%!important}.ol-ext-print-dialog2x[data-clip-map] .ol-map2,.ol-ext-print-dialog2x[data-swipe-orientation] .ol-map2{top:-100%;left:0;width:100%!important;height:100%!important;position:relative!important}.ol-profile{-webkit-user-select:none;user-select:none;position:relative}.ol-control.ol-profile{text-align:right;position:absolute;top:.5em;right:3em;overflow:hidden}.ol-profile .ol-zoom-out{cursor:pointer;border:1px solid #000;border-radius:2px;width:1em;height:1em;padding:0;position:absolute;top:10px;right:10px}.ol-profile .ol-zoom-out:before{content:"";background:currentColor;width:60%;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-profile .ol-inner{padding:.5em;font-size:.8em;position:relative}.ol-control.ol-profile .ol-inner{background-color:#ffffffb3;margin:2.3em 2px 2px;display:block}.ol-control.ol-profile.ol-collapsed .ol-inner{display:none}.ol-profile canvas{display:block}.ol-profile button{display:block;position:absolute;right:0;overflow:hidden}.ol-profile button i{width:1em;height:1em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-profile button i:before,.ol-profile button i:after{content:"";background-color:currentColor;width:1em;height:.9em;display:block;position:absolute;transform:scaleX(.8)translate(-.25em,.5em)rotate(45deg)}.ol-profile button i:after{transform:scaleX(.8)translate(.35em,.7em)rotate(45deg)}.ol-profile.ol-collapsed button{position:static}.ol-profile .ol-profilebar,.ol-profile .ol-profilecursor{pointer-events:none;width:1px;display:none;position:absolute}.ol-profile .ol-profilecursor{width:0;height:0}.ol-profile .ol-profilecursor:before{content:"";pointer-events:none;width:5px;height:5px;margin:-2px;display:block}.ol-profile .ol-profilebar,.ol-profile .ol-profilecursor:before{background:red}.ol-profile table{text-align:center;border-collapse:collapse;width:100%;margin-top:.5em}.ol-profile table tr{border-top:1px solid #00000040;margin:.1em 0}.ol-profile table td{padding:2px}.ol-profile table span{display:block}.ol-profile table span.elevationGain,.ol-profile table span.elevationLoss{display:inline-block}.ol-profilepopup{white-space:nowrap;background-color:#ffffff80;margin:.5em;padding:0 .5em;position:absolute;top:-1em}.ol-profilepopup.ol-left{right:0}.ol-profile table .track-info{display:table-row}.ol-profile table .point-info,.ol-profile .over table .track-info{display:none}.ol-profile .over table .point-info{display:table-row}.ol-profile p{text-align:center;margin:0}.ol-control.ol-progress-bar{background-color:#0000;padding:0;position:absolute;inset:0;pointer-events:none!important}.ol-control.ol-progress-bar>.ol-bar{box-sizing:border-box;background-color:#003c8880;width:0;height:.5em;transition:width .2s;position:absolute;bottom:0;left:0}.ol-progress-bar>.ol-waiting{display:none}.ol-viewport .ol-control.ol-progress-bar>.ol-waiting{color:#fff;font-size:2em;animation:1s linear infinite ol-progress-bar-blink;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes ol-progress-bar-blink{0%,30%{visibility:hidden}to{visibility:visible}}.ol-control.ol-routing{max-height:90%;top:.5em;left:3em;overflow-y:auto}.ol-touch .ol-control.ol-routing{left:3.5em}.ol-control.ol-routing.ol-searching{opacity:.5}.ol-control.ol-routing .ol-car,.ol-control.ol-routing>button{position:relative}.ol-control.ol-routing .ol-car:after,.ol-control.ol-routing>button:after{content:"";clip:rect(0 1em .5em -1em);border-radius:40% 50% 0 0/50% 70% 0 0;width:.78em;height:.6em;position:absolute;top:.35em;left:.4em;box-shadow:inset 0 0 0 .065em,-.35em .14em 0 -.09em,inset 0 -.37em,inset -.14em .005em}.ol-control.ol-routing .ol-car:before,.ol-control.ol-routing>button:before{content:"";border-radius:50%;width:.28em;height:.28em;position:absolute;top:.73em;left:.2em;box-shadow:inset 0 0 0 1em,.65em 0}.ol-control.ol-routing .ol-pedestrian:after{content:"";border-top:.2em solid #0000;width:.3em;height:.4em;position:absolute;top:.25em;left:50%;transform:translate(-50%);box-shadow:inset .3em 0,.1em .5em 0 -.1em,-.1em .5em 0 -.1em,.25em .1em 0 -.1em,-.25em .1em 0 -.1em}.ol-control.ol-routing .ol-pedestrian:before{content:"";background-color:currentColor;border-radius:50%;width:.3em;height:.3em;position:absolute;top:.1em;left:50%;transform:translate(-50%)}.ol-control.ol-routing .content{margin:.5em}.ol-control.ol-routing.ol-collapsed .content,.ol-routing .ol-search.ol-collapsed ul,.ol-routing .ol-search ul .copy{display:none}.ol-routing .content .search-input>div>*{vertical-align:top;display:inline-block}.ol-routing .ol-result ul{list-style:none;display:block}.ol-routing .ol-result li{min-height:1.65em;position:relative}.ol-routing .ol-result li i{font-size:.8em;font-weight:700;display:block}.ol-routing .ol-result li:before{content:"";transform-origin:50% 125%;border:.4em solid #0000;border-top-width:.6em;border-bottom:.6em solid #369;position:absolute;top:-.8em;left:-1.75em;box-shadow:0 .65em 0 -.25em #369}.ol-routing .ol-result li:after{content:"";background:#369;border-radius:.1em;width:.25em;height:.6em;position:absolute;top:.6em;left:-1.5em}.ol-routing .ol-result li.R:before{transform:rotate(90deg)}.ol-routing .ol-result li.FR:before{transform:rotate(45deg)}.ol-routing .ol-result li.L:before{transform:rotate(-90deg)}.ol-routing .ol-result li.FL:before{transform:rotate(-45deg)}.ol-routing .content>i{vertical-align:middle;margin:0 .3em 0 .1em;font-style:normal}.ol-routing .ol-button,.ol-routing .ol-button:focus,.ol-routing .ol-pedestrian,.ol-routing .ol-car{color:#003c88;opacity:.5;vertical-align:middle;cursor:pointer;background-color:#0000;outline:none;width:1.4em;height:1.4em;margin:0 .1em;font-size:1.1em;display:inline-block;position:relative}.ol-routing .ol-constraints{display:block}.ol-routing .ol-button:hover,.ol-routing .ol-button.selected,.ol-routing i.selected{opacity:1;background:0 0}.ol-routing .ol-method{display:block}.ol-control.ol-routing{background-color:#ffffff40}.ol-control.ol-routing:hover{background-color:#ffffffbf}.search-input>div>button:before{content:"±"}.ol-viewport .ol-scale{text-align:center;transform-origin:0 0;background-color:#ffffffbf;bottom:2.5em;left:.5em;transform:scaleX(.8)}.ol-viewport .ol-scale input{text-align:center;background:0 0;border:0;width:8em}.ol-search{top:.5em;left:3em}.ol-touch .ol-search{left:3.5em}.ol-search button{float:left;top:2px;left:2px}.ol-control.ol-search>button:before{content:"";box-sizing:border-box;background-color:#0000;border:.12em solid;border-radius:100%;width:.7em;height:.7em;position:absolute;top:.35em;left:.35em}.ol-control.ol-search>button:after{content:"";background-color:currentColor;border-radius:.05em;width:.45em;height:.15em;position:absolute;top:1.1em;left:.95em;transform:rotate(45deg);box-shadow:-.18em 0 0 -.03em}.ol-search button.ol-revers{float:none;vertical-align:bottom;background-image:none;display:inline-block;position:relative;top:0;left:0}.ol-search.ol-revers button.ol-revers{background-color:#00883c80}.ol-control.ol-search.ol-collapsed button.ol-revers{display:none}.ol-search button.ol-revers:before{content:"";box-sizing:border-box;border:.1em solid;border-radius:50%;width:.55em;height:.55em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-search button.ol-revers:after{content:"";background-color:#0000;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.35em 0,0 .35em,-.35em 0,0 -.35em}.ol-search input{box-sizing:border-box;border:0;height:1.375em;margin:1px 1px 1px 2px;padding-left:.3em;font-size:1.14em;transition:all .1s;display:inline-block}.ol-touch .ol-search input,.ol-touch .ol-search ul{font-size:1.5em}.ol-search.ol-revers>ul,.ol-control.ol-search.ol-collapsed>*{display:none}.ol-control.ol-search.ol-collapsed>button{display:block}.ol-search ul{clear:both;cursor:pointer;z-index:1;background:#fff;max-width:17em;margin:0;padding:0;list-style:none;display:block;overflow-x:hidden}.ol-search ul li{white-space:nowrap;text-overflow:ellipsis;padding:.1em .5em;overflow:hidden}.ol-search ul li.select,.ol-search ul li:hover{color:#fff;background-color:#003c8880}.ol-search ul li img{float:left;max-height:2em}.ol-search li.copy{color:#fff;background:#00000080}.ol-search li.copy a{color:#fff;text-decoration:none}.ol-search.searching:before{content:"";z-index:2;background:red;height:3px;animation:.5s linear infinite alternate ol-pulse;position:absolute;top:1.6em;left:0}@keyframes ol-pulse{0%{left:0;right:95%}50%{left:30%;right:30%}to{left:95%;right:0}}.ol-control.ol-search.IGNF-parcelle{background-color:#ffffffb3;padding-bottom:.2em}.ol-search.IGNF-parcelle input{width:14.5em}.ol-search.IGNF-parcelle input:read-only{opacity:.8;background:#ccc}.ol-search.IGNF-parcelle.ol-collapsed-list>ul.autocomplete{display:none}.ol-search.IGNF-parcelle label{clear:both;display:block}.ol-search.IGNF-parcelle>div input{text-align:right}.ol-search.IGNF-parcelle>div input,.ol-search.IGNF-parcelle>div label{box-sizing:border-box;text-overflow:ellipsis;width:4em;margin:.1em;font-size:1em;display:inline-block;overflow:hidden}.ol-search.IGNF-parcelle>div label{letter-spacing:-.04em}.ol-search.IGNF-parcelle ul.autocomplete-page{text-align:center;width:100%;margin-top:.5em;display:none}.ol-search.IGNF-parcelle.ol-collapsed-list ul.autocomplete-parcelle,.ol-search.IGNF-parcelle.ol-collapsed-list ul.autocomplete-page{display:block}.ol-search.IGNF-parcelle.ol-collapsed ul.autocomplete-page,.ol-search.IGNF-parcelle.ol-collapsed ul.autocomplete-parcelle,.ol-search.IGNF-parcelle ul.autocomplete-parcelle{display:none}.ol-search.IGNF-parcelle ul.autocomplete-page li{color:#fff;background:#003c8880;border-radius:50%;width:1.3em;height:1.3em;margin:0 .1em;padding:.1em;display:inline-block}.ol-search.IGNF-parcelle ul.autocomplete-page li.selected{background:#003c88}.ol-searchgps input.search,.ol-searchcoord input.search{display:none}.ol-control.ol-searchgps>button:first-child,.ol-control.ol-searchcoord>button:first-child{background-image:none}.ol-control.ol-searchgps>button:first-child:before,.ol-control.ol-searchcoord>button:first-child:before{content:"x/y";position:unset;border:unset;border-radius:0;width:auto;height:auto;display:block;transform:scaleX(.8)}.ol-control.ol-searchgps>button:first-child:after,.ol-control.ol-searchcoord>button:first-child:after{content:unset}.ol-control.ol-searchgps .ol-latitude,.ol-control.ol-searchgps .ol-longitude,.ol-control.ol-searchcoord .ol-latitude,.ol-control.ol-searchcoord .ol-longitude{clear:both}.ol-control.ol-searchgps .ol-latitude label,.ol-control.ol-searchgps .ol-longitude label,.ol-control.ol-searchcoord .ol-latitude label,.ol-control.ol-searchcoord .ol-longitude label{text-align:right;transform-origin:0 0;width:5.5em;margin:0 -.8em 0 0;display:inline-block;transform:scaleX(.8)}.ol-control.ol-searchcoord .ol-latitude label,.ol-control.ol-searchcoord .ol-longitude label{width:2em;margin:0}.ol-control.ol-searchgps .ol-latitude input,.ol-control.ol-searchgps .ol-longitude input{max-width:10em}.ol-control.ol-searchgps .ol-ext-toggle-switch{cursor:pointer;float:right;margin:.5em;font-size:.9em}.ol-searchgps .ol-decimal{margin-right:.7em;display:inline-block}.ol-searchgps .ol-dms,.ol-searchgps.ol-dms .ol-decimal{text-align:right;width:3em;display:none}.ol-searchgps.ol-dms .ol-dms{display:inline-block}.ol-searchgps span.ol-dms{text-align:left;width:.5em}.ol-searchgps.ol-control.ol-collapsed button.ol-geoloc,.ol-searchgps.ol-control.ol-collapsed button.ol-centerloc,.ol-searchcoord.ol-control.ol-collapsed button.ol-centerloc,.ol-searchcoord.ol-control.ol-collapsed button.ol-geoloc{display:none}.ol-searchgps button.ol-geoloc,.ol-searchgps button.ol-centerloc,.ol-searchcoord button.ol-centerloc,.ol-searchcoord button.ol-geoloc{float:right;background-image:none;margin-right:3px;position:relative;top:0}.ol-searchgps button.ol-geoloc:before,.ol-searchcoord button.ol-geoloc:before{content:"";border:.1em solid;border-radius:50%;width:.6em;height:.6em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-searchgps button.ol-geoloc:after,.ol-searchcoord button.ol-geoloc:after{content:"";background-color:#0000;width:.2em;height:.2em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:.45em 0,-.45em 0,0 -.45em,0 .45em,.25em 0,-.25em 0,0 -.25em,0 .25em}.ol-searchgps button.ol-centerloc:before,.ol-searchcoord button.ol-centerloc:before{content:"📍";border:0;width:auto;height:auto;padding:0;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-searchgps button.ol-centerloc:after,.ol-searchcoord button.ol-centerloc:after{display:none}.ol-control.ol-select{background-color:#ffffff80;top:.5em;left:3em}.ol-control.ol-select:hover{background-color:#ffffffb3}.ol-touch .ol-control.ol-select{left:3.5em}.ol-control.ol-select>button:before{content:"A";box-sizing:content-box;text-align:center;background-color:#0000;border:.2em solid;border-radius:100%;width:1em;height:1em;font-size:.6em;font-weight:400;line-height:1em;position:absolute;top:.5em;left:.5em}.ol-control.ol-select>button:after{content:"";background-color:currentColor;border-radius:.05em;width:.45em;height:.15em;position:absolute;top:1.15em;left:1em;transform:rotate(45deg);box-shadow:-.18em 0 0 -.03em}.ol-select>div button{float:right;width:auto;height:1.2em;padding:0 .5em;font-weight:400;line-height:1.2em}.ol-select .ol-delete{vertical-align:middle;cursor:pointer;width:1.5em;height:1em;display:inline-block;position:relative}.ol-select .ol-delete:before{content:"×";text-align:center;width:100%;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-select input{font-size:1em}.ol-control.ol-select select{max-width:10em;font-size:1em}.ol-control.ol-select select option.ol-default{color:#999;font-style:italic}.ol-control.ol-select>div{margin:.25em;display:block}.ol-control.ol-select.ol-collapsed>div{display:none}.ol-control.ol-select.ol-select-check{max-width:20em}.ol-control.ol-select label.ol-ext-check{margin-right:1em}.ol-control.ol-select label.ol-ext-toggle-switch span{font-size:1.1em}.ol-select ul{margin:0;padding:0;list-style:none}.ol-control.ol-select input[type=search],.ol-control.ol-select input[type=text]{width:8em}.ol-select .ol-autocomplete{display:inline}.ol-select .ol-autocomplete ul{background:#fff;border:1px solid #999;min-width:10em;font-size:.85em;display:block;position:absolute}.ol-select .ol-autocomplete ul li{padding:0 .5em}.ol-select .ol-autocomplete ul li:hover{color:#fff;background:#003c8880}.ol-select ul.ol-hidden{display:none}.ol-select-multi li>div:hover,.ol-select-multi li>div.ol-control.ol-select{top:unset;left:unset;background:0 0;position:relative}.ol-select-multi li>div>button,.ol-select-multi li>div .ol-ok{display:none}.ol-select-multi li .ol-control.ol-select.ol-collapsed>div,.ol-select-multi li>div>div{display:block}.ol-control.ol-status{color:#fff;box-sizing:border-box;background:#0003;border-radius:0;width:100%;padding:.3em 3em;font-size:.9em;display:none;top:0;left:0;pointer-events:none!important}.ol-control.ol-status.ol-visible{display:initial}.ol-control.ol-status.ol-bottom{top:auto;bottom:0}.ol-control.ol-status.ol-left{width:auto;padding:.3em .5em .3em 3em;top:0;bottom:0}.ol-control.ol-status.ol-right{width:auto;padding:.3em 3em .3em .5em;inset:0 0 0 auto}.ol-control.ol-status.ol-center{top:50%;transform:translateY(-50%)}.ol-control.ol-storymap{background-color:#ffffff80;border-radius:.5em;max-width:35%;height:auto;position:absolute;top:.5em;bottom:.5em;left:.5em}.ol-storymap{height:100%;padding:0;position:relative;overflow:hidden}.ol-storymap>div{scroll-behavior:smooth;-webkit-user-select:none;user-select:none;height:100%;padding:0;position:relative;overflow:hidden}.ol-storymap>div.ol-move{scroll-behavior:unset}.ol-control.ol-storymap .chapter{padding:.5em;position:relative;overflow:hidden}.ol-control.ol-storymap .chapter:last-child{margin-bottom:100%}.ol-storymap .chapter{cursor:pointer;opacity:.4}.ol-storymap .chapter.ol-select{cursor:default;opacity:1;background-color:#fffc}.ol-storymap .ol-scroll-top,.ol-storymap .ol-scroll-next{color:#003c8880;text-align:center;cursor:pointer;min-height:1.7em;position:relative}.ol-storymap .ol-scroll-next span{padding-bottom:1.4em;display:block}.ol-storymap .ol-scroll-top span{padding-top:1.4em;display:block}.ol-storymap .ol-scroll-top:before,.ol-storymap .ol-scroll-next:before{content:"";pointer-events:none;border:.3em solid;border-color:#0000 currentColor currentColor #0000;border-radius:.3em;width:.8em;height:.8em;animation:.35s linear infinite alternate ol-bounce-bottom;display:block;position:absolute;left:50%;transform:translate(-50%)rotate(45deg)}.ol-storymap .ol-scroll-top:before{border-color:currentColor #0000 #0000 currentColor;animation:.35s linear infinite alternate ol-bounce-top}@keyframes ol-bounce-top{0%{top:-.2em}to{top:.5em}}@keyframes ol-bounce-bottom{0%{bottom:-.2em}to{bottom:.5em}}.ol-storymap img[data-title]{cursor:pointer}.ol-storymap.scrollLine,.ol-storymap.scrollBox{background-color:#0000;border-radius:0;max-width:40%;top:0;bottom:0}.ol-storymap.scrollLine .chapter,.ol-storymap.scrollBox .chapter{background-color:#fff;margin:100% 0}.ol-storymap.scrollLine .chapter:first-child,.ol-storymap.scrollBox .chapter:first-child{margin-top:3em}.ol-storymap.scrollLine .chapter.ol-select,.ol-storymap.scrollLine .chapter,.ol-storymap.scrollBox .chapter.ol-select,.ol-storymap.scrollBox .chapter{opacity:1}.ol-storymap.scrollLine .ol-scrolldiv,.ol-storymap.scrollBox .ol-scrolldiv{padding-right:30px}.ol-storymap.scrollLine:before,.ol-storymap.scrollBox:before{content:"";background-color:#fff;width:2px;height:100%;position:absolute;top:0;bottom:0;right:14px}.ol-storymap.scrollLine .ol-scroll,.ol-storymap.scrollBox .ol-scroll{width:1px;padding:0;transition:none;right:15px;overflow:visible;opacity:1!important;display:block!important}.ol-storymap.scrollLine .ol-scroll>div{-webkit-box-shadow:unset;box-shadow:unset;background-color:#0000;left:50%;overflow:visible;transform:translate(-50%)}.ol-storymap.scrollLine .ol-scroll>div:before{content:"";background-color:#0af;border:2px solid #fff;border-radius:50%;width:10px;height:10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-storymap.scrollBox .ol-scroll>div{display:none}.ol-storymap.scrollBox .chapter:after{content:"";box-sizing:border-box;z-index:1;border:5px solid #0000;border-radius:50%;width:20px;height:20px;position:absolute;top:min(30%,5em);right:-24.5px;box-shadow:0 0 0 2px #fff,inset 0 0 0 15px #0af}.ol-swipe{-ms-touch-action:none;touch-action:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-swipe:before{content:"";z-index:-1;background:#fff;width:4px;position:absolute;top:-5000px;bottom:-5000px;left:50%;transform:translate(-2px)}.ol-swipe.horizontal:before{width:auto;height:4px;inset:50% -5000px auto}.ol-swipe,.ol-swipe button{cursor:ew-resize}.ol-swipe.horizontal,.ol-swipe.horizontal button{cursor:ns-resize}.ol-swipe:after,.ol-swipe button:before,.ol-swipe button:after{content:"";background:currentColor;width:2px;position:absolute;top:25%;bottom:25%;left:50%;transform:translate(-1px)}.ol-swipe button:after{transform:translate(4px)}.ol-swipe button:before{transform:translate(-6px)}.ol-control.ol-timeline{background-color:#fff6;transition:all .3s;bottom:0;left:0;right:0}.ol-control.ol-timeline.ol-collapsed{transform:translateY(100%)}.ol-timeline{padding:2px 0 0;overflow:hidden}.ol-timeline .ol-scroll{scroll-behavior:smooth;height:6em;padding:0 50%;line-height:1em;overflow:hidden}.ol-timeline .ol-scroll.ol-move{scroll-behavior:unset}.ol-timeline.ol-hasbutton .ol-scroll{margin-left:1.5em;padding:0 calc(50% - .75em)}.ol-timeline .ol-buttons{z-index:10;background:#ffffff80;width:1.5em;display:none;position:absolute;top:0;bottom:0;left:0}.ol-timeline.ol-hasbutton .ol-buttons{display:block}.ol-timeline .ol-buttons button{margin:1px;font-size:1em;position:relative}.ol-timeline .ol-buttons .ol-zoom-in:before,.ol-timeline .ol-buttons .ol-zoom-out:before{content:"+";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-timeline .ol-buttons .ol-zoom-out:before{content:"−"}.ol-timeline .ol-scroll>div{height:100%;position:relative}.ol-timeline .ol-scroll .ol-times{background:#ffffff80;height:1em;position:absolute;bottom:0;left:-1000px;right:-1000px}.ol-timeline .ol-scroll .ol-time{color:#999;font-size:.7em;position:absolute;bottom:0;transform:translate(-50%)}.ol-timeline .ol-scroll .ol-time.ol-year{color:#666;z-index:1}.ol-timeline .ol-scroll .ol-time:before{content:"";border-left:1px solid;height:500px;position:absolute;bottom:1.2em;left:50%}.ol-timeline .ol-scroll .ol-features{margin:0 0 0 200px;position:absolute;inset:0 -1000px 1em -200px;overflow:hidden}.ol-timeline .ol-scroll .ol-feature{color:#999;cursor:pointer;box-sizing:border-box;background:#fff;border:1px solid #ccc;max-width:3em;min-height:1em;max-height:2.4em;padding:0 .5em 0 0;font-size:.7em;line-height:1.2em;transition:all .3s;position:absolute;top:0;overflow:hidden}.ol-timeline.ol-zoomhover .ol-scroll .ol-feature:hover,.ol-timeline.ol-zoomhover .ol-scroll .ol-feature.ol-select{z-index:1;background:#eee;transform:scale(1.2)}.ol-timeline .ol-center-date{z-index:2;pointer-events:none;opacity:.4;background-color:red;width:2px;height:100%;display:none;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.ol-timeline.ol-hasbutton .ol-center-date{left:calc(50% + .75em)}.ol-timeline.ol-pointer .ol-center-date{display:block}.ol-timeline.ol-pointer .ol-center-date:before,.ol-timeline.ol-pointer .ol-center-date:after{content:"";border:.3em solid #0000;border-width:.3em .25em;position:absolute;left:50%;transform:translate(-50%)}.ol-timeline.ol-pointer .ol-center-date:before{border-top-color:red;top:0}.ol-timeline.ol-pointer .ol-center-date:after{border-bottom-color:red;bottom:0}.ol-timeline.ol-interval .ol-center-date{box-sizing:content-box;opacity:.2;background-color:#0000;border:0 solid #000;border-width:0 10000px;display:block}.ol-control.ol-videorec{white-space:nowrap;top:0;left:50%;transform:translate(-50%)}.ol-control.ol-videorec button{vertical-align:middle;display:inline-block;position:relative}.ol-control.ol-videorec button:before{content:"";background-color:currentColor;width:.8em;height:.8em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-control.ol-videorec button.ol-start:before{background-color:#c00;border-radius:50%;width:.9em;height:.9em}.ol-control.ol-videorec button.ol-pause:before{background-color:#0000;width:.2em;box-shadow:-.2em 0,.2em 0}.ol-control.ol-videorec button.ol-resume:before{box-sizing:border-box;background:0 0;border:.4em solid #0000;border-left:.6em solid;border-right-width:0;width:auto}.ol-control.ol-videorec button.ol-stop,.ol-control.ol-videorec button.ol-pause,.ol-control.ol-videorec button.ol-resume,.ol-control.ol-videorec[data-state=rec] .ol-start,.ol-control.ol-videorec[data-state=pause] .ol-start{display:none}.ol-control.ol-videorec[data-state=rec] .ol-stop,.ol-control.ol-videorec[data-state=pause] .ol-stop,.ol-control.ol-videorec[data-state=rec] .ol-pause,.ol-control.ol-videorec[data-state=pause] .ol-resume{display:inline-block}.ol-control.ol-wmscapabilities{top:.5em;right:2.5em}.ol-touch .ol-control.ol-wmscapabilities{right:3em}.ol-control.ol-wmscapabilities.ol-hidden{display:none}.ol-control.ol-wmscapabilities button:before{content:"+";position:absolute;top:calc(50% - .35em);left:50%;transform:translate(-50%,-50%)}.ol-control.ol-wmscapabilities button:after{content:"";background:0 0;border:.15em solid #0000;border-width:0 .15em .15em 0;border-radius:.1em 0;width:.75em;height:.75em;position:absolute;top:calc(50% - .05em);left:50%;transform:scaleY(.6)translate(-50%,-50%)rotate(45deg);box-shadow:inset -.18em -.18em,-.4em .1em 0 -.25em,.1em -.35em 0 -.25em,.15em .15em}.ol-wmscapabilities .ol-searching{opacity:.5}.ol-wmscapabilities .ol-searching .ol-url:after{content:"";background-color:currentColor;border-radius:50%;width:.7em;height:.7em;animation:2s linear infinite ol-wmscapabilities-rotate;display:block;position:absolute;top:6em;left:calc(50% - .35em);box-shadow:0 1em,0 -1em,1em 0,-1em 0}@keyframes ol-wmscapabilities-rotate{to{transform:rotate(360deg)}}.ol-wmscapabilities .ol-url input{box-sizing:border-box;width:calc(100% - 10em);min-width:min(100%,20em)}.ol-wmscapabilities .ol-url select{width:2em;height:100%;padding:1px}.ol-wmscapabilities .ol-url button{width:7.5em;margin-left:.5em}.ol-wmscapabilities .ol-result{margin-top:.5em;display:none}.ol-wmscapabilities .ol-result.ol-visible{display:block}.ol-wmscapabilities .ol-select-list{box-sizing:border-box;border:1px solid #369;border-radius:0;width:calc(100% - 120px);max-height:14.5em;font-size:1em;position:relative;overflow-x:hidden}.ol-wmscapabilities .ol-select-list option{cursor:pointer;box-sizing:border-box;text-overflow:ellipsis;width:100%;padding:.1em .5em 0;overflow:hidden}.ol-wmscapabilities .ol-select-list .level-1{padding-left:1em}.ol-wmscapabilities .ol-select-list .level-2{padding-left:1.5em}.ol-wmscapabilities .ol-select-list .level-3{padding-left:2em}.ol-wmscapabilities .ol-select-list .level-4{padding-left:2.5em}.ol-wmscapabilities .ol-select-list .level-5{padding-left:3em}.ol-wmscapabilities .ol-select-list .ol-info{font-style:italic}.ol-wmscapabilities .ol-select-list .ol-title{background-color:#003c881a}.ol-wmscapabilities .ol-select-list option:hover{color:#fff;background-color:#003c8880}.ol-wmscapabilities .ol-select-list .selected{color:#fff;background-color:#003c88b3}.ol-wmscapabilities .ol-preview{float:right;color:#666;text-align:center;background:#003c881a;width:100px;margin-left:10px;padding:0 5px 5px}.ol-wmscapabilities .ol-preview.tainted{float:right;color:#666;text-align:center;background:#88003c1a;width:100px;margin-left:10px;padding:0 5px 5px}.ol-wmscapabilities .ol-preview img{background:#fff;width:100%;display:block}.ol-wmscapabilities .ol-legend{max-width:100%;display:none}.ol-wmscapabilities .ol-legend.visible{display:block}.ol-wmscapabilities .ol-buttons{clear:both;text-align:right}.ol-wmscapabilities .ol-data p{margin:0}.ol-wmscapabilities .ol-data p.ol-title{margin:1em 0 .5em;font-weight:700}.ol-wmscapabilities .ol-error{color:#800}.ol-wmscapabilities ul.ol-wmsform{padding:0;list-style:none;display:none}.ol-wmscapabilities ul.ol-wmsform.visible{display:block}.ol-wmscapabilities .ol-wmsform label{text-align:right;width:calc(40% - .5em);margin-right:.5em;display:inline-block}.ol-wmscapabilities .ol-wmsform input{box-sizing:border-box;width:60%;display:inline-block}.ol-wmscapabilities .ol-wmsform input[type=checkbox]{width:auto}.ol-wmscapabilities .ol-wmsform button{float:right;margin:1em 0}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] input{width:calc(60% - 2em)}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button{vertical-align:middle;color:#444;width:2em;height:1.6em;margin:0;position:relative}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:before,.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:after{content:"";border:.1em solid;width:.25em;height:.9em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)skewY(-15deg)}.ol-wmscapabilities ul.ol-wmsform li[data-param=extent] button:after{transform:translate(.4em)translate(-50%,-50%)skewY(15deg);box-shadow:-.8em .25em}.ol-ext-dialog.ol-wmscapabilities form{width:600px;min-height:15em;top:15%;transform:translate(-50%,-15%)}.ol-ext-dialog.ol-wmscapabilities .ol-content{max-height:calc(100vh - 6em)}.ol-ext-dialog.ol-wmtscapabilities [data-param=map],.ol-ext-dialog [data-param=style]{display:none}.ol-ext-dialog.ol-wmtscapabilities [data-param=style]{display:list-item}.ol-ext-dialog.ol-wmtscapabilities [data-param=proj],.ol-ext-dialog.ol-wmtscapabilities [data-param=version]{opacity:.6;pointer-events:none}.ol-ext-dialog.ol-wmscapabilities button.ol-wmsform{text-align:center;width:1.8em}.ol-ext-dialog.ol-wmscapabilities button.ol-wmsform:before{content:"+"}.ol-ext-dialog.ol-wmscapabilities .ol-form button.ol-wmsform:before{content:"-"}.ol-ext-dialog.ol-wmscapabilities .ol-form button.ol-load,.ol-ext-dialog.ol-wmscapabilities .ol-form .ol-legend{display:none}.ol-ext-dialog.ol-wmscapabilities .ol-form ul.ol-wmsform{clear:both;display:block}.ol-target-overlay .ol-target{border:1px solid #0000;width:0;height:20px;display:block;box-shadow:0 0 1px 1px #fff}.ol-target-overlay .ol-target:after,.ol-target-overlay .ol-target:before{content:"";border:1px solid #369;width:20px;height:0;display:block;position:absolute;top:10px;left:-10px;box-shadow:0 0 1px 1px #fff}.ol-target-overlay .ol-target:after{-webkit-box-shadow:none;box-shadow:none;width:0;height:20px;top:0;left:0}.ol-overlaycontainer .ol-touch-cursor{cursor:pointer;background:#fff6;border-radius:50%;width:56px;height:56px;margin:6px;box-shadow:inset 0 0 0 5px #369}.ol-overlaycontainer .ol-touch-cursor:after{content:"";transform-origin:100% 100%;background:radial-gradient(circle at 100% 100%,#0000,#0000 70%,#369 70%,#369);width:50%;height:50%;position:absolute;top:0;left:0}.ol-overlaycontainer .ol-touch-cursor-center{margin-top:16px;margin-left:-28px}.ol-overlaycontainer .ol-touch-cursor-center:after{transform:rotate(45deg)}.ol-overlaycontainer .ol-touch-cursor-right{margin-left:-62px}.ol-overlaycontainer .ol-touch-cursor-right:after{transform:rotate(90deg)}.ol-overlaycontainer .ol-touch-cursor .ol-button{color:#369;cursor:pointer;background:#fff6;border-radius:50%;width:55%;height:55%;transition:all .5s,opacity,background;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)scale(0);box-shadow:inset 0 0 0 3px}.ol-overlaycontainer .ol-touch-cursor.active.disable .ol-button{opacity:.8;background:#3693}.ol-overlaycontainer .ol-touch-cursor.active .ol-button{transform:translate(-50%,-50%)scale(1)}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-0{top:-18%;left:118%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-1{top:50%;left:140%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-2{top:120%;left:120%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-3{top:140%;left:50%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-4{top:118%;left:-18%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-5{top:50%;left:-40%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-6{top:-18%;left:-18%}.ol-overlaycontainer .ol-touch-cursor.active .ol-button-7{top:-40%;left:50%}.ol-overlaycontainer .ol-touch-cursor .ol-button:before{content:"";text-align:center;width:1.5em;height:1em;line-height:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-add:before,.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-remove:before{content:"−";font-size:1.375em;font-weight:700;line-height:.95em}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-add:before{content:"+"}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-x:before{content:"×";font-size:1.2em;font-weight:700}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-move:before{content:"✥";font-size:1.2em}.ol-overlaycontainer .ol-touch-cursor .ol-button.ol-button-check:before{content:"✓";font-weight:700}.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-x,.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-remove,.ol-overlaycontainer .ol-touch-cursor.nodrawing .ol-button.ol-button-check{opacity:.8;background:#3693}.ol-overlaycontainer .ol-touch-cursor .ol-button>div{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-overlaycontainer .ol-touch-cursor .ol-button-type:before{content:"⇎";font-weight:700}.mapboxgl-canvas:focus{outline:none}.ol-perspective-map{width:200%;height:200%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-perspective-map .ol-layer{z-index:-1!important}.ol-perspective-map .ol-layers{transform:translateY(0)perspective(200px)rotateX(0)scaleY(1)}.ol-perspective-map .ol-overlaycontainer,.ol-perspective-map .ol-overlaycontainer-stopevent{top:50%;left:50%;transform:translate(-50%,-50%);width:50%!important;height:50%!important}.ol-overlay-container .ol-magnify{z-index:0;background:#00000080;border:3px solid #369;border-radius:50%;width:150px;height:150px;position:relative;overflow:hidden;box-shadow:5px 5px 5px #00000080}.ol-overlay-container .ol-magnify:before{content:"";z-index:1;border-radius:50%;width:100%;height:100%;display:block;position:absolute;top:0;left:0;box-shadow:inset 0 0 40px 2px #00000040}.ol-overlay-container .ol-magnify:after{content:"";z-index:1;border-radius:50%;width:20%;height:0;display:block;position:absolute;top:20%;left:23%;transform:rotate(-40deg);box-shadow:0 0 20px 7px #fff}.ol-popup.anim{visibility:hidden}.ol-popup.anim.visible{visibility:visible}.ol-popup.anim.visible>div{visibility:visible;animation:.4s ol-popup_bounce;transform:none}@keyframes ol-popup_bounce{0%{transform:scale(0)}50%{transform:scale(1.1)}80%{transform:scale(.95)}to{transform:scale(1)}}.ol-popup.anim.ol-popup-bottom.ol-popup-left>div{transform-origin:0 100%}.ol-popup.anim.ol-popup-bottom.ol-popup-right>div{transform-origin:100% 100%}.ol-popup.anim.ol-popup-bottom.ol-popup-center>div{transform-origin:50% 100%}.ol-popup.anim.ol-popup-top.ol-popup-left>div{transform-origin:0 0}.ol-popup.anim.ol-popup-top.ol-popup-right>div{transform-origin:100% 0}.ol-popup.anim.ol-popup-top.ol-popup-center>div{transform-origin:50% 0}.ol-popup.anim.ol-popup-middle.ol-popup-left>div{transform-origin:0}.ol-popup.anim.ol-popup-middle.ol-popup-right>div{transform-origin:100%}.ol-popup{-webkit-user-select:none;user-select:none;font-size:.9em}.ol-popup .ol-popup-content{cursor:default;padding:.25em .5em;overflow:hidden}.ol-popup.hasclosebox .ol-popup-content{margin-right:1.7em}.ol-popup .ol-popup-content:after{clear:both;content:"";height:0;font-size:0;display:block}.ol-popup .anchor{pointer-events:none;background:red;width:0;height:0;margin:-11px 22px;display:block;position:absolute}.ol-popup .anchor:after,.ol-popup .anchor:before{position:absolute}.ol-popup-right .anchor:after,.ol-popup-right .anchor:before{right:0}.ol-popup-top .anchor{top:0}.ol-popup-bottom .anchor{bottom:0}.ol-popup-right .anchor{right:0}.ol-popup-left .anchor{left:0}.ol-popup-center .anchor{left:50%;margin-left:0!important}.ol-popup-middle .anchor{top:50%;margin-top:0!important}.ol-popup-center.ol-popup-middle .anchor{display:none}.ol-popup.ol-fixed{margin:0!important;inset:.5em .5em auto auto!important;transform:none!important}.ol-popup.ol-fixed .anchor{display:none}.ol-popup.ol-fixed.anim>div{animation:none}.ol-popup .ol-fix{float:right;cursor:pointer;background:#fff;width:1em;height:.9em;margin:.2em;position:relative}.ol-popup .ol-fix:before{content:"";box-sizing:border-box;border:.1em solid #666;border-right-width:.3em;width:.8em;height:.7em;margin:.1em;display:block}.ol-popup.shadow{box-shadow:2px 2px 2px 2px #00000080}.ol-popup .closeBox{color:#fff;cursor:pointer;float:right;background-color:#003c8880;border:0;border-radius:2px;width:1.4em;height:1.4em;margin:5px 5px 0 0;padding:0;font-size:.9em;font-weight:700;display:none;position:relative}.ol-popup.hasclosebox .closeBox{display:block}.ol-popup .closeBox:hover{background-color:#003c88b3}.ol-popup .closeBox:after{content:"×";text-align:center;width:100%;margin:-.5em 0;font-size:1.5em;line-height:1em;position:absolute;top:50%;left:0;right:0}.ol-popup.modifytouch{background-color:#eee}.ol-popup.modifytouch .ol-popup-content{white-space:nowrap;padding:0 .25em;font-size:.85em}.ol-popup.modifytouch .ol-popup-content a{text-decoration:none}.ol-popup.tooltips{background-color:#ffa}.ol-popup.tooltips .ol-popup-content{white-space:nowrap;padding:0 .25em;font-size:.85em}.ol-popup.default>div{background-color:#fff;border:1px solid #69f;border-radius:5px}.ol-popup.default{margin:-11px 0;transform:translateY(-22px)}.ol-popup-top.ol-popup.default{margin:11px 0;transform:none}.ol-popup-left.default{margin:-11px -22px;transform:translateY(-22px)}.ol-popup-top.ol-popup-left.default{margin:11px -22px;transform:none}.ol-popup-right.default{margin:-11px 22px;transform:translate(44px,-22px)}.ol-popup-top.ol-popup-right.default{margin:11px 22px;transform:translate(44px)}.ol-popup-middle.default{margin:0 10px;transform:none}.ol-popup-middle.ol-popup-right.default{margin:0 -10px;transform:translate(-20px)}.ol-popup.default .anchor{color:#69f}.ol-popup.default .anchor:after,.ol-popup.default .anchor:before{content:"";border:11px solid;border-color:currentColor #0000;margin:0 -11px}.ol-popup.default .anchor:after{border-width:11px;border-color:#fff #0000;margin:2px -11px}.ol-popup-top.default .anchor:before,.ol-popup-top.default .anchor:after{border-top:0;top:0}.ol-popup-bottom.default .anchor:before,.ol-popup-bottom.default .anchor:after{border-bottom:0;bottom:0}.ol-popup-middle.default .anchor:before{border-color:#0000 currentColor;margin:-11px -33px}.ol-popup-middle.default .anchor:after{border-color:#0000 #fff;margin:-11px -31px}.ol-popup-middle.ol-popup-left.default .anchor:before,.ol-popup-middle.ol-popup-left.default .anchor:after{border-left:0}.ol-popup-middle.ol-popup-right.default .anchor:before,.ol-popup-middle.ol-popup-right.default .anchor:after{border-right:0}.ol-popup.placemark{color:#c00;margin:-.65em 0;transform:translateY(-1.3em)}.ol-popup.placemark>div{width:2em;height:2em;min-width:unset;box-sizing:border-box;background-color:#fff;border:0;border-radius:50%;font-size:15px;position:relative;box-shadow:inset 0 0 0 .45em}.ol-popup.placemark .ol-popup-content{cursor:default;text-align:center;width:1em;height:1em;padding:.25em 0;line-height:1em;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.ol-popup.placemark .anchor{margin:0}.ol-popup.placemark .anchor:before{content:"";background:0 0;border-radius:50%;width:1em;height:.5em;margin:-.5em;box-shadow:0 1em .5em #00000080}.ol-popup.placemark .anchor:after{content:"";border:.7em solid #0000;border-top:1em solid;border-bottom:0 solid;margin:-.75em -.7em;bottom:0}.ol-popup.placemark.shield>div{border-radius:.2em}.ol-popup.placemark.shield .anchor:after{border-width:.8em 1em 0;margin:-.7em -1em}.ol-popup.placemark.blazon>div{border-radius:.2em}.ol-popup.placemark.pushpin{margin:-2.2em 0;transform:translateY(-4em)}.ol-popup.placemark.pushpin>div{border-radius:0;width:1.1em;box-shadow:inset 2em 0;background:0 0!important}.ol-popup.placemark.pushpin>div:before{content:"";pointer-events:none;border:.5em solid #0000;border-top:.3em solid;border-bottom-color:currentColor;width:1.3em;height:1.5em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-popup.placemark.needle{margin:-2em 0;transform:translateY(-4em)}.ol-popup.placemark.pushpin .anchor,.ol-popup.placemark.needle .anchor{margin:-1.2em}.ol-popup.placemark.pushpin .anchor:after,.ol-popup.placemark.needle .anchor:after{border-style:solid;border-width:2em .15em 0;width:.1em;margin:-.55em -.2em}.ol-popup.placemark.pushpin .anchor:before,.ol-popup.placemark.needle .anchor:before{margin:-.75em -.5em}.ol-popup.placemark.flagv{margin:-2em 1em;transform:translateY(-4em)}.ol-popup.placemark.flagv>div{-webkit-box-shadow:none;box-shadow:none;background-color:#0000;border-radius:0}.ol-popup.placemark.flagv>div:before{content:"";pointer-events:none;border:1em solid #0000;border-left:2em solid;position:absolute}.ol-popup.placemark.flagv .anchor{margin:-1.4em}.ol-popup.placemark.flag{margin:-2em 1em;transform:translateY(-4em)}.ol-popup.placemark.flag>div{border-radius:0;transform-origin:0 150%!important}.ol-popup.placemark.flag .anchor{margin:-1.4em}.ol-popup.placemark.flagv .anchor:after,.ol-popup.placemark.flag .anchor:after{border-style:solid;border-width:2em .15em 0;width:.1em;margin:-.55em -1em}.ol-popup.placemark.flagv .anchor:before,.ol-popup.placemark.flag .anchor:before{margin:-.75em -1.25em}.ol-popup.placemark.flag.finish{margin:-2em 1em}.ol-popup.placemark.flag.finish>div{background-image:linear-gradient(45deg,currentColor 25%,#0000 25% 75%,currentColor 75%,currentColor),linear-gradient(45deg,currentColor 25%,#0000 25% 75%,currentColor 75%,currentColor);background-position:.5em 0,0 .5em;background-size:1em 1em;box-shadow:inset 0 0 0 .25em}.ol-popup.black .closeBox{color:#f80;background-color:#00000080;border-radius:5px}.ol-popup.black .closeBox:hover{color:#da2;background-color:#000000b3}.ol-popup.black{margin:-20px 0;transform:translateY(-40px)}.ol-popup.black>div{color:#fff;background-color:#0009;border-radius:5px}.ol-popup-top.ol-popup.black{margin:20px 0;transform:none}.ol-popup-left.black{margin:-20px -22px;transform:translateY(-40px)}.ol-popup-top.ol-popup-left.black{margin:20px -22px;transform:none}.ol-popup-right.black{margin:-20px 22px;transform:translate(44px,-40px)}.ol-popup-top.ol-popup-right.black{margin:20px 22px;transform:translate(44px)}.ol-popup-middle.black{margin:0 11px;transform:none}.ol-popup-left.ol-popup-middle.black{transform:none}.ol-popup-right.ol-popup-middle.black{margin:0 -11px;transform:translate(-22px)}.ol-popup.black .anchor{color:#0009;margin:-20px 11px}.ol-popup.black .anchor:before{content:"";border:20px solid;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.black .anchor:before{border-top:0;top:0}.ol-popup-bottom.black .anchor:before{border-bottom:0;bottom:0}.ol-popup-middle.black .anchor:before{border-color:#0000 currentColor;margin:-20px -22px}.ol-popup-middle.ol-popup-left.black .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.black .anchor:before{border-right:0}.ol-popup-center.black .anchor:before{margin:0 -10px}.ol-popup.tips .closeBox{color:#fff;background-color:red;border-radius:50%;width:1.2em;height:1.2em}.ol-popup.tips .closeBox:hover{background-color:#f40}.ol-popup.tips{margin:-20px 0;transform:translateY(-40px)}.ol-popup.tips>div{color:#333;background-color:#cea;border:5px solid #ad7;border-radius:5px}.ol-popup-top.ol-popup.tips{margin:20px 0;transform:none}.ol-popup-left.tips{margin:-20px -22px;transform:translateY(-40px)}.ol-popup-top.ol-popup-left.tips{margin:20px -22px;transform:none}.ol-popup-right.tips{margin:-20px 22px;transform:translate(44px,-40px)}.ol-popup-top.ol-popup-right.tips{margin:20px 22px;transform:translate(44px)}.ol-popup-middle.tips{margin:0;transform:none}.ol-popup-left.ol-popup-middle.tips{margin:0 22px;transform:none}.ol-popup-right.ol-popup-middle.tips{margin:0 -22px;transform:translate(-44px)}.ol-popup.tips .anchor{color:#ad7;margin:-18px 22px}.ol-popup.tips .anchor:before{content:"";border:20px solid;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.tips .anchor:before{border-top:0;top:0}.ol-popup-bottom.tips .anchor:before{border-bottom:0;bottom:0}.ol-popup-center.tips .anchor:before{border-width:20px 6px;margin:0 -6px}.ol-popup-left.tips .anchor:before{border-left:0;margin-left:0}.ol-popup-right.tips .anchor:before{border-right:0;margin-right:0}.ol-popup-middle.tips .anchor:before{border-width:6px 20px;border-color:#0000 currentColor;margin:-6px -41px}.ol-popup-middle.ol-popup-left.tips .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.tips .anchor:before{border-right:0}.ol-popup.warning .closeBox{color:#fff;background-color:red;border-radius:50%;font-size:.83em}.ol-popup.warning .closeBox:hover{background-color:#f40}.ol-popup.warning{color:#900;background-color:#fd0;border:4px dashed red;border-radius:3px;margin:-28px 10px;transform:translateY(-56px)}.ol-popup-top.ol-popup.warning{margin:28px 10px;transform:none}.ol-popup-left.warning{margin:-28px -22px;transform:translateY(-56px)}.ol-popup-top.ol-popup-left.warning{margin:28px -22px;transform:none}.ol-popup-right.warning{margin:-28px 22px;transform:translate(44px,-56px)}.ol-popup-top.ol-popup-right.warning{margin:28px 22px;transform:translate(44px)}.ol-popup-middle.warning{margin:0;transform:none}.ol-popup-left.ol-popup-middle.warning{margin:0 22px;transform:none}.ol-popup-right.ol-popup-middle.warning{margin:0 -22px;transform:translate(-44px)}.ol-popup.warning .anchor{margin:-33px 7px}.ol-popup.warning .anchor:before{content:"";border:30px solid red;border-left:11px solid #0000;border-right:11px solid #0000}.ol-popup-top.warning .anchor:before{border-top:0;top:0}.ol-popup-bottom.warning .anchor:before{border-bottom:0;bottom:0}.ol-popup-center.warning .anchor:before{margin:0 -21px}.ol-popup-middle.warning .anchor:before{border-width:10px 22px;border-color:#0000 red;margin:-10px -33px}.ol-popup-middle.ol-popup-left.warning .anchor:before{border-left:0}.ol-popup-middle.ol-popup-right.warning .anchor:before{border-right:0}.ol-popup .ol-popupfeature table{width:100%}.ol-popup .ol-popupfeature table td{text-overflow:ellipsis;max-width:25em;overflow:hidden}.ol-popup .ol-popupfeature table td img{max-width:100px;max-height:100px}.ol-popup .ol-popupfeature tr:nth-child(odd){background-color:#eee}.ol-popup .ol-popupfeature .ol-zoombt{color:#003c8880;background:0 0;border:0;outline:none;width:2em;height:2em;display:inline-block;position:relative}.ol-popup .ol-popupfeature .ol-zoombt:before{content:"";box-sizing:border-box;background-color:#0000;border:.17em solid;border-radius:100%;width:1em;height:1em;position:absolute;top:.3em;left:.3em}.ol-popup .ol-popupfeature .ol-zoombt:after{content:"";box-sizing:border-box;border-style:solid;border-width:.1em .3em;border-radius:.03em;position:absolute;top:1.35em;left:1.15em;transform:rotate(45deg);box-shadow:-.2em 0 0 -.04em}.ol-popup .ol-popupfeature .ol-count{float:right;margin:.25em 0}.ol-popup .ol-popupfeature .ol-prev,.ol-popup .ol-popupfeature .ol-next{vertical-align:bottom;cursor:pointer;border:.5em solid #0000;border-left-color:#003c8880;border-right:0 solid #003c8880;margin:0 .5em;display:inline-block}.ol-popup .ol-popupfeature .ol-prev{border-width:.5em .5em .5em 0}.ol-popup.tooltips.black{background-color:#0000}.ol-popup.tooltips.black>div{background-color:#00000080;padding:.2em .5em;transform:scaleY(1.3)}.ol-popup-middle.tooltips.black .anchor:before{border-width:5px 10px;margin:-5px -21px}.ol-popup-center.ol-popup-middle,.ol-popup-top.ol-popup-left.ol-fixPopup,.ol-popup-top.ol-popup-right.ol-fixPopup,.ol-popup.ol-fixPopup{margin:0}.ol-miniscroll{position:relative}.ol-miniscroll:hover .ol-scroll{opacity:.5;transition:opacity 1s}.ol-miniscroll .ol-scroll{-ms-touch-action:none;touch-action:none;opacity:0;z-index:1;border-radius:9px;width:9px;height:auto;max-height:100%;transition:opacity 1s .5s;position:absolute;right:0;overflow:hidden}.ol-miniscroll .ol-scroll>div{-ms-touch-action:none;touch-action:none;box-sizing:border-box;cursor:pointer;border:2px solid #0000;border-radius:9px/12px;width:9px;height:9px;position:absolute;top:0;right:0;box-shadow:inset 10px 0}.ol-miniscroll .ol-scroll.ol-100pc{opacity:0}.ol-viewport canvas.ol-fixedoverlay{width:100%;height:100%;position:absolute;top:0;left:0}.ol-ext-toggle-switch{cursor:pointer;position:relative}.ol-ext-toggle-switch input[type=radio],.ol-ext-toggle-switch input[type=checkbox]{opacity:0;width:0;height:0;margin:0;padding:0;display:inline-block}.ol-ext-toggle-switch span{color:#003c8880;cursor:pointer;vertical-align:middle;background-color:#ccc;border-radius:1em;width:1.6em;height:1em;margin:-.15em .2em .15em;font-size:1.3em;transition:all .4s,background-color,border-color,box-shadow;display:inline-block;position:relative}.ol-ext-toggle-switch span:before{content:"";box-sizing:border-box;background-color:#fff;border:2px solid #ccc;border-radius:1em;width:1em;height:1em;transition:all .4s;display:block;position:absolute;top:50%;left:0;transform:translateY(-50%)}.ol-ext-toggle-switch:hover span{background-color:#999}.ol-ext-toggle-switch:hover span:before{border-color:#999}.ol-ext-toggle-switch input:checked+span{background-color:currentColor}.ol-ext-toggle-switch input:checked+span:before{border-color:currentColor;transform:translate(.6em,-50%)}.ol-ext-check{display:inline-block;position:relative}.ol-ext-check input{opacity:0;cursor:pointer;width:0;height:0;margin:0;padding:0;display:inline-block;position:absolute}.ol-ext-check span{color:#003c8880;vertical-align:middle;background-color:#ccc;width:1em;height:1em;margin:-.1em .5em .1em;display:inline-block;position:relative}.ol-ext-check:hover span{background-color:#999}.ol-ext-checkbox input:checked~span{background-color:currentColor}.ol-ext-checkbox input:checked~span:before{content:"";width:.5em;height:.8em;position:absolute;top:50%;left:50%;transform:translateY(-.1em)translate(-50%,-50%)rotate(45deg);box-shadow:inset -.2em -.2em #fff}.ol-ext-radio span{border-radius:50%;width:1.1em;height:1.1em}.ol-ext-radio:hover input:checked~span{background-color:#ccc}.ol-ext-radio input:checked~span:before{content:"";background-color:currentColor;border-radius:50%;width:50%;height:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-ext-toggle-switch input:focus-visible+span,.ol-ext-check input:focus-visible+span{box-shadow:inset 0 0 0 1px #fff,0 0 0 1.8px #000c}.ol-collection-list{margin:0;padding:0;list-style:none}.ol-collection-list li{padding:0 2em 0 1em;position:relative}.ol-collection-list li:hover{background-color:#003c8833}.ol-collection-list li.ol-select{color:#fff;background-color:#003c8880}.ol-collection-list li .ol-order{-ms-touch-action:none;touch-action:none;cursor:n-resize;-webkit-user-select:none;user-select:none;width:2em;height:100%;position:absolute;top:50%;right:0;transform:translateY(-50%)}.ol-collection-list li .ol-order:before{content:"";background-color:currentColor;border-radius:2px;width:18px;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 5px,0 -5px}.ol-collection-list li>input.ol-input-focus{opacity:0;z-index:-1;width:0;height:0;position:absolute}.ol-collection-list li:has(>input.ol-input-focus:focus){outline:2px solid #369}.ol-ext-colorpicker.ol-popup{background-color:#0000;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 -1px,5px 4px;background-size:10px 10px;width:2em;height:1.5em}.ol-ext-colorpicker .ol-tabbar{background-color:#eee;border-bottom:1px solid #999;display:none}.ol-ext-colorpicker.ol-tab .ol-tabbar{display:block}.ol-ext-colorpicker .ol-tabbar>div{cursor:pointer;background-color:#fff;border:1px solid #999;border-radius:2px 2px 0 0;padding:0 .5em;display:inline-block;position:relative;top:1px}.ol-ext-colorpicker .ol-tabbar>div:first-child{border-bottom-color:#fff}.ol-ext-colorpicker.ol-picker-tab .ol-tabbar>div:first-child{border-bottom-color:#999}.ol-ext-colorpicker.ol-picker-tab .ol-tabbar>div:nth-child(2){border-bottom-color:#fff}.ol-ext-colorpicker.ol-popup.ol-tab .ol-popup{width:180px}.ol-ext-colorpicker.ol-tab .ol-palette{margin:0 10px}.ol-ext-colorpicker.ol-tab .ol-container{display:none}.ol-ext-colorpicker.ol-tab.ol-picker-tab .ol-container{display:block}.ol-ext-colorpicker.ol-tab.ol-picker-tab .ol-palette{display:none}.ol-ext-colorpicker.ol-popup .ol-popup{width:340px}.ol-ext-colorpicker.ol-popup .ol-vignet{content:"";pointer-events:none;background-color:currentColor;border:0;width:100%;height:100%;position:absolute;top:0;left:0}.ol-ext-colorpicker .ol-container{vertical-align:top;display:inline-block;position:relative}.ol-ext-colorpicker .ol-cursor{pointer-events:none}.ol-ext-colorpicker .ol-picker{cursor:crosshair;background-color:currentColor;background-image:-webkit-gradient(linear, left top, left bottom, from(0), color-stop(#000), to(transparent)), -webkit-gradient(linear, left top, right top, from(#fff), to(transparent));background-image:linear-gradient(#0000,#000),linear-gradient(90deg,#fff,#0000);border:5px solid #fff;width:150px;height:150px;position:relative}.ol-ext-colorpicker .ol-picker .ol-cursor{border:1px solid #000000b3;border-radius:50%;width:10px;height:10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #ffffffb3}.ol-ext-colorpicker .ol-slider{cursor:crosshair;background-color:#fff;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 -1px,5px 4px;background-size:10px 10px;border:0 solid #fff;border-width:0 5px;width:150px;height:10px;margin:5px 0 10px;position:relative}.ol-ext-colorpicker .ol-slider>div{pointer-events:none;background-image:linear-gradient(45deg,#0000,#fff);width:100%;height:100%}.ol-ext-colorpicker .ol-slider .ol-cursor{background:0 0;border:1px solid #000;width:4px;height:12px;position:absolute;top:50%;left:0;transform:translate(-50%,-50%)}.ol-ext-colorpicker .ol-tint{cursor:crosshair;box-sizing:border-box;background-image:-webkit-gradient(linear, left top, left bottom, from(0), color-stop(red), color-stop(#f0f), color-stop(#00f), color-stop(#0ff), color-stop(#0f0), color-stop(#ff0), to(red));background-image:linear-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red);border:5px solid #fff;border-width:5px 0;width:10px;height:150px;position:absolute;top:0;right:5px}.ol-ext-colorpicker .ol-tint .ol-cursor{border:1px solid #000;width:12px;height:4px;position:absolute;top:0;left:50%;transform:translate(-50%,-50%)}.ol-ext-colorpicker .ol-clear{border:2px solid #999;width:10px;height:10px;position:absolute;top:163px;right:4px}.ol-ext-colorpicker .ol-clear:before,.ol-ext-colorpicker .ol-clear:after{content:"";background-color:#999;width:15px;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.ol-ext-colorpicker .ol-clear:after{transform:translate(-50%,-50%)rotate(-45deg)}.ol-ext-colorpicker.ol-nopacity .ol-slider,.ol-ext-colorpicker.ol-nopacity .ol-clear,.ol-ext-colorpicker.ol-nopacity .ol-alpha{display:none}.ol-ext-colorpicker .ol-rgb{width:170px;padding:5px;display:none;position:relative}.ol-ext-colorpicker .ol-rgb input{box-sizing:border-box;border:1px solid #999;border-radius:2px;width:25%;padding:0 0 0 2px;font-size:13px}.ol-ext-colorpicker .ol-rgb input:first-child{background-color:#ff00001a}.ol-ext-colorpicker .ol-rgb input:nth-child(2){background-color:#00ff001a}.ol-ext-colorpicker .ol-rgb input:nth-child(3){background-color:#0000ff1f}.ol-ext-colorpicker button,.ol-ext-colorpicker .ol-txt-color{text-align:center;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:170px;margin:0 5px 5px;padding:0;font-size:13px;display:block}.ol-ext-colorpicker .ol-txtcolor{width:170px;margin:0 5px}.ol-ext-colorpicker .ol-txtcolor input.ol-txt-color{width:100%;margin:0}.ol-ext-colorpicker.eyedropper .ol-txtcolor input.ol-txt-color{width:calc(100% - 2em);height:2em;margin:0;display:inline-block}.ol-ext-colorpicker button{background-color:#eee}.ol-ext-colorpicker button:hover{background-color:#e9e9e9}.ol-ext-colorpicker button.ol-eyedropper{vertical-align:middle;width:2em;height:2em;margin:0;display:inline-block;position:relative}.ol-ext-colorpicker button.ol-eyedropper:before{content:"";background-color:#999;width:100%;height:100%;position:absolute;top:0;left:0;-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20width='24'%20height='24'%3e%3cpath%20d='m18.203%203.676%202.121%202.121a1%201%200%200%201%200%201.414l-2.828%202.829%201.767%201.768-1.414%201.414-1.414-1.414L7.243%2021H3v-4.243l9.192-9.192-1.414-1.414%201.414-1.414%201.768%201.767%202.829-2.828a1%201%200%200%201%201.414%200Zm-4.596%205.303-8.564%208.564%201.414%201.414%208.564-8.564-1.414-1.414Z'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20width='24'%20height='24'%3e%3cpath%20d='m18.203%203.676%202.121%202.121a1%201%200%200%201%200%201.414l-2.828%202.829%201.767%201.768-1.414%201.414-1.414-1.414L7.243%2021H3v-4.243l9.192-9.192-1.414-1.414%201.414-1.414%201.768%201.767%202.829-2.828a1%201%200%200%201%201.414%200Zm-4.596%205.303-8.564%208.564%201.414%201.414%208.564-8.564-1.414-1.414Z'/%3e%3c/svg%3e");-webkit-mask-size:100% 100%;mask-size:100% 100%}.ol-ext-colorpicker .ol-txt-color.ol-error{background-color:#f003}.ol-ext-colorpicker .ol-palette{width:152px;padding:2px;display:inline-block}.ol-ext-colorpicker .ol-palette>div{cursor:pointer;background-image:linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%),linear-gradient(45deg,#aaa 25%,#0000 25% 75%,#aaa 75%);background-position:0 0,5px 5px;background-size:10px 10px;border-radius:1px;width:15px;height:15px;margin:2px;display:inline-block;position:relative;box-shadow:0 0 2px #666}.ol-ext-colorpicker .ol-palette>div:before{content:"";background-color:currentColor;width:100%;height:100%;position:absolute}.ol-ext-colorpicker .ol-palette>div.ol-select:after{content:"";width:6px;height:12px;position:absolute;top:30%;left:50%;transform:translate(-50%,-50%)rotate(45deg);box-shadow:1px 1px #fff,2px 2px #000}.ol-ext-colorpicker .ol-palette>div:hover{box-shadow:0 0 2px 1px #d90}.ol-ext-colorpicker .ol-palette hr{margin:0}.ol-input-hidden{opacity:0;width:0;height:0;margin:0;padding:0;display:block;position:absolute}.ol-input-popup{display:inline-block;position:relative}.ol-input-popup .ol-popup{z-index:1;white-space:nowrap;background-color:#fff;margin:0;padding:0;list-style:none;display:none;position:absolute;left:-5px;box-shadow:1px 1px 3px 1px #999}.ol-input-popup.ol-hover:hover .ol-popup,.ol-input-popup.ol-focus .ol-popup{display:block}.ol-input-popup.ol-right .ol-popup{left:auto;right:-5px}.ol-input-popup.ol-middle .ol-popup{top:50%;transform:translateY(-50%)}.ol-input-popup .ol-popup li{padding:10px 5px;position:relative}.ol-input-popup li:hover,.ol-input-popup li.ol-selected{background-color:#ccc}.ol-input-popup.ol-fixed:hover .ol-popup,.ol-input-popup.ol-fixed .ol-popup{-webkit-box-shadow:unset;box-shadow:unset;vertical-align:middle;background-color:#0000;display:inline-block;position:relative;left:0}.ol-input-popup.ol-fixed.ol-left .ol-popup{float:left}.ol-input-popup>div{vertical-align:middle;border:1px solid #999;border-radius:2px;padding:3px 20px 3px 10px;display:inline-block;position:relative}.ol-input-popup>div:before{content:"";border:5px solid #0000;border-top-color:#999;position:absolute;top:50%;right:5px}.ol-ext-popup-input{vertical-align:top;display:inline-block}.ol-ext-popup-input.ol-popup{box-sizing:content-box;-webkit-user-select:none;user-select:none;vertical-align:middle;border:3px solid #fff;border-right-width:1em;border-radius:2px;width:2em;height:1.5em;display:inline-block;position:relative;box-shadow:0 0 2px 1px #666}.ol-ext-popup-input.ol-popup:after{content:"";pointer-events:none;border:.3em solid #0000;border-top:.5em solid #999;border-bottom:0 solid #999;position:absolute;top:50%;right:-.8em;transform:translateY(-50%)}.ol-ext-popup-input *{box-sizing:content-box}.ol-ext-popup-input.ol-popup .ol-popup{z-index:1;background-color:#fff;min-width:3em;min-height:3em;display:none;position:absolute;top:100%;left:0;box-shadow:1px 1px 3px 1px #999}.ol-ext-popup-input.ol-popup .ol-popup.ol-visible{display:block}.ol-ext-popup-input.ol-popup-fixed .ol-popup{position:fixed;top:auto;left:auto}.ol-input-popup.ol-size li{vertical-align:middle;height:100%;padding:5px;display:table-cell}.ol-input-popup.ol-size li>*{vertical-align:middle;background-color:#369;border-radius:50%;width:1em;height:1em}.ol-input-popup.ol-size li>.ol-option-0{color:#aaa;box-sizing:border-box;background-color:#0000;border:2px solid;width:1em;height:1em;position:relative}.ol-input-popup.ol-size li>:before{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ol-input-popup.ol-size li>.ol-option-0:before{content:"";background-color:#aaa;width:1em;height:2px;transform:translate(-50%,-50%)rotate(-45deg)}.ol-input-slider{display:inline-block;position:relative}.ol-input-slider .ol-popup{z-index:1;background-color:#fff;display:none;position:absolute;left:-5px;box-shadow:1px 1px 3px 1px #999}.ol-input-slider.ol-right .ol-popup{left:auto;right:-5px}.ol-input-slider.ol-hover:hover .ol-popup,.ol-input-slider.ol-focus .ol-popup{white-space:nowrap;display:block}.ol-input-slider.ol-hover:hover .ol-popup>*,.ol-input-slider.ol-focus .ol-popup>*{vertical-align:middle;display:inline-block}.ol-input-slider.ol-hover:hover .ol-popup>.ol-before,.ol-input-slider.ol-focus .ol-popup>.ol-before{margin-left:10px}.ol-input-slider.ol-hover:hover .ol-popup>.ol-after,.ol-input-slider.ol-focus .ol-popup>.ol-after{margin-right:10px}.ol-input-slider .ol-slider{vertical-align:middle;box-sizing:content-box;cursor:pointer;border:10px solid #0000;border-width:10px 15px;width:100px;height:3px;display:inline-block;position:relative;box-shadow:inset 0 0 0 1px #999}.ol-input-slider .ol-slider>.ol-cursor{pointer-events:none;background-color:#999;width:5px;height:10px;position:absolute;top:50%;transform:translate(-50%,-50%)}.ol-input-range .ol-slider{cursor:default;width:150px}.ol-input-range .ol-slider>.ol-cursor{pointer-events:all;cursor:pointer;background-color:#003c88;border-radius:50%;width:10px}.ol-input-range.ol-moving .ol-slider>.ol-cursor{pointer-events:none}.ol-input-range .ol-slider>.ol-back{pointer-events:none;background-color:#003c88;height:100%;position:absolute;top:50%;left:30%;right:20%;transform:translateY(-50%)}.ol-input-slider.ol-fixed:hover .ol-popup,.ol-input-slider.ol-fixed .ol-popup{-webkit-box-shadow:unset;box-shadow:unset;vertical-align:middle;background-color:#0000;display:inline-block;position:relative;left:0}.ol-input-slider.ol-fixed.ol-left .ol-popup{float:left}.ol-input-slider.ol-size .ol-slider{height:auto;-webkit-box-shadow:none;box-shadow:none}.ol-input-slider.ol-size .ol-slider .ol-back{color:#aaa;pointer-events:none;border-top:0 solid;border-bottom:20px solid;border-left:100px solid #0000;border-right:0 solid #0000;width:0}.ol-input-slider.ol-size .ol-slider>.ol-cursor{border:5px solid red;border-left:3px solid #0000;border-right:3px solid #0000;-o-border-image:initial;border-image:initial;background-color:#0000;width:2px;height:calc(100% + 4px);box-shadow:inset 3px 0 red}.ol-input-popup.ol-width li{padding:5px}.ol-input-popup.ol-width li>*{background-color:#369;width:100px;height:1em}.ol-input-popup.ol-width li>.ol-option-0{background-color:#0000;background-image:linear-gradient(90deg,#aaa 2px,#0000 2px);background-size:4px;height:1px;position:relative}html,body{height:100%;margin:0;padding:0}body{flex-direction:column;display:flex}.map{flex:1;width:100%;min-height:512px}.map .ol-custom-overviewmap,.map .ol-custom-overviewmap.ol-uncollapsible{inset:6pt 6pt auto auto}.ol-scale-bar{font-family:Calibri,sans-serif;bottom:6pt;left:6pt}.ol-mouse-position{z-index:100;background-color:#ffffff80;border-radius:3pt;padding:1pt;font-family:Calibri,sans-serif;position:absolute;inset:auto 6pt 6pt auto}.ol-layerswitcher,.ol-control.ol-layerswitcher{top:6pt;left:30pt;right:auto}.ol-layerswitcher button{float:left}.ol-rotate{position:absolute;top:47pt;left:6pt;right:auto}.ol-full-screen{position:absolute;top:70pt;left:6pt;right:auto}.ol-screen-space-graticule{position:absolute;top:93pt;left:6pt;right:auto}.ol-graticule{position:absolute;top:116pt;left:6pt;right:auto} /*$vite$:1*/ From b58e4a166286e32301ff1fe9dae8a703c48d9c04 Mon Sep 17 00:00:00 2001 From: Hannah Wood Date: Thu, 10 Sep 2026 15:36:02 +0100 Subject: [PATCH 04/14] Removed unused imports --- tiatoolbox/rust/utils/misc/src/lib.rs | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/tiatoolbox/rust/utils/misc/src/lib.rs b/tiatoolbox/rust/utils/misc/src/lib.rs index 75b8078cdf..84683a7bdd 100644 --- a/tiatoolbox/rust/utils/misc/src/lib.rs +++ b/tiatoolbox/rust/utils/misc/src/lib.rs @@ -1,16 +1,6 @@ -use ndarray::Axis; use ndarray::{Array1, Array3}; -use numpy::PyReadonlyArrayDyn; -use numpy::PyUntypedArrayMethods; -use numpy::{IntoPyArray, PyArray3, PyReadonlyArray2, PyReadonlyArray3}; -use ordered_float::OrderedFloat; -use pyo3::FromPyObject; +use numpy::{IntoPyArray, PyArray3, PyReadonlyArray3}; use pyo3::prelude::*; -use pyo3::pyclass::CompareOp; -use pyo3::types::{PyDict, PyList}; -use pythonize::depythonize; -use serde_json::Value; -use std::collections::HashMap; fn rescale_intensity(x: f32, in_range_low: f32, in_range_high: f32, range: f32) -> u8 { //asssumes out_min = 0 and out_max = 255 From 32bfc4b3ac504295d14bd1e4c45cc96eb8b7a032 Mon Sep 17 00:00:00 2001 From: Hannah Wood Date: Thu, 10 Sep 2026 15:39:39 +0100 Subject: [PATCH 05/14] Removed unused imports --- tiatoolbox/rust/utils/misc/Cargo.toml | 3 --- 1 file changed, 3 deletions(-) diff --git a/tiatoolbox/rust/utils/misc/Cargo.toml b/tiatoolbox/rust/utils/misc/Cargo.toml index 25e5d1e1aa..da570b3cf1 100644 --- a/tiatoolbox/rust/utils/misc/Cargo.toml +++ b/tiatoolbox/rust/utils/misc/Cargo.toml @@ -10,7 +10,4 @@ crate-type = ["cdylib", "rlib"] [dependencies] ndarray = "0.17.2" numpy = "0.29.0" -ordered-float = "5.3.0" pyo3 = { workspace = true, features = ["extension-module"] } -pythonize = "0.29.0" -serde_json = "1.0.151" From 443f80249eca94b18122fc727a3f1eafa20a54a7 Mon Sep 17 00:00:00 2001 From: Hannah Wood Date: Thu, 10 Sep 2026 16:00:58 +0100 Subject: [PATCH 06/14] Removed unused code --- tiatoolbox/utils/misc.py | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/tiatoolbox/utils/misc.py b/tiatoolbox/utils/misc.py index 5a065c1b10..b84061355f 100644 --- a/tiatoolbox/utils/misc.py +++ b/tiatoolbox/utils/misc.py @@ -1508,20 +1508,6 @@ def dict_to_store_semantic_segmentor( ) -def poly_geo_func(coords: list) -> list: - """Used solely for function semantic_segmentation_as_qupath_json.""" - geom = make_valid_poly( - feature2geometry( - { - "type": "Polygon", - "coordinates": coords, - } - ), - (0, 0), - ) - return mapping(geom) - - def _semantic_segmentations_as_qupath_json( layer_list: list, preds: da.Array, From 0d846302e422bef251ece9e61ac233791103874e Mon Sep 17 00:00:00 2001 From: abdol Date: Thu, 22 Oct 2026 07:23:50 +0100 Subject: [PATCH 07/14] :memo: Add Rust installation instructions --- docs/installation.rst | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/docs/installation.rst b/docs/installation.rst index 3b7828ad3d..031ce0d1f6 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -8,7 +8,7 @@ Installation Prerequisites ============= -The prerequisites for TIAToolbox installation are OpenSlide binaries and OpenJPEG version 2.3.0 or above. Please follow the instructions below to install the prerequisite software according to your platform. +The prerequisites for TIAToolbox installation are OpenSlide binaries, OpenJPEG version 2.3.0 or above, and the `Rust `_ compiler. Please follow the instructions below to install the prerequisite software according to your platform. Linux (Ubuntu) -------------- @@ -18,6 +18,7 @@ On Linux, the prerequisite software can be installed using the following command .. code-block:: console $ apt-get -y install libopenjp2-7-dev libopenjp2-tools sqlite3 libsqlite3-0 + $ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh The same command is used when working on the Colab or Kaggle platforms. When working on Google Colab, the following packages should be removed **before** installing TIAToolbox, as they conflict and may produce an error message: @@ -34,6 +35,11 @@ On Windows, ``OpenJPEG`` and ``SQLite`` can be installed using the following ``c C:\> conda install -c conda-forge openjpeg sqlite +Rust compiler +^^^^^^^^^^^^^ + +Follow the instructions on the `Rust install `_ page to download and install the Rust compiler. + macOS ----- @@ -56,6 +62,11 @@ MacPorts $ port install openjpeg sqlite +Rust compiler +^^^^^^^^^^^^^ + + $ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh + Installing Stable Release ========================= From 752015022a0bcacf7f0a4f35703231caf4bdd33f Mon Sep 17 00:00:00 2001 From: abdol Date: Thu, 22 Oct 2026 07:26:06 +0100 Subject: [PATCH 08/14] :bug: Fix import in Rust notebook --- ...ring_misc_functions_in_rust_v_python.ipynb | 62 +++++++++++++++++-- 1 file changed, 58 insertions(+), 4 deletions(-) diff --git a/benchmarks/comparing_misc_functions_in_rust_v_python.ipynb b/benchmarks/comparing_misc_functions_in_rust_v_python.ipynb index a713fbb225..cf87f4493a 100644 --- a/benchmarks/comparing_misc_functions_in_rust_v_python.ipynb +++ b/benchmarks/comparing_misc_functions_in_rust_v_python.ipynb @@ -1292,22 +1292,74 @@ }, { "cell_type": "code", - "execution_count": 23, "metadata": { "execution": { "iopub.execute_input": "2026-09-02T16:04:47.155283Z", "iopub.status.busy": "2026-09-02T16:04:47.155195Z", "iopub.status.idle": "2026-09-02T16:04:47.157789Z", "shell.execute_reply": "2026-09-02T16:04:47.157491Z" + }, + "ExecuteTime": { + "end_time": "2026-10-22T06:25:31.354785Z", + "start_time": "2026-10-22T06:25:30.993752Z" } }, - "outputs": [], "source": [ "import numpy as np\n", "from skimage import exposure\n", "\n", - "from tiatoolbox import rmisc\n", + "import numpy as np\n", + "from skimage import exposure\n", + "\n", + "import tiatoolbox.rust.utils.misc as rmisc\n", + "\n", + "def rust_contrast_enhancer(\n", + " img: np.ndarray, low_p: int = 2, high_p: int = 98\n", + ") -> np.ndarray:\n", + " \"\"\"Enhance contrast of the input image using intensity adjustment.\n", + "\n", + " This method uses both image low and high percentiles.\n", + "\n", + " Args:\n", + " img (:class:`numpy.ndarray`): input image used to obtain tissue mask.\n", + " Image should be uint8.\n", + " low_p (scalar): low percentile of image values to be saturated to 0.\n", + " high_p (scalar): high percentile of image values to be saturated to 255.\n", + " high_p should always be greater than low_p.\n", + "\n", + " Returns:\n", + " img (:class:`numpy.ndarray`):\n", + " Image (uint8) with contrast enhanced.\n", + "\n", + " Raises:\n", + " AssertionError: Internal errors due to invalid img type.\n", "\n", + " Examples:\n", + " >>> from tiatoolbox import utils\n", + " >>> img = utils.misc.contrast_enhancer(img, low_p=2, high_p=98)\n", + "\n", + " \"\"\"\n", + " # check if image is not uint8\n", + " # check if image is not uint8\n", + " dimension_for_rust = 3\n", + "\n", + " if img.dtype != np.uint8:\n", + " msg = \"Image should be uint8.\"\n", + " raise AssertionError(msg)\n", + " if img.ndim == dimension_for_rust:\n", + " return rmisc.contrast_enhancer(img, low_p, high_p)\n", + " img_out = img.copy()\n", + " percentiles = np.array(np.percentile(img_out, (low_p, high_p)))\n", + " p_low, p_high = percentiles[0], percentiles[1]\n", + " if p_low >= p_high:\n", + " p_low, p_high = np.min(img_out), np.max(img_out)\n", + " if p_high > p_low:\n", + " img_out = exposure.rescale_intensity(\n", + " img_out,\n", + " in_range=(p_low, p_high),\n", + " out_range=(0.0, 255.0),\n", + " )\n", + " return img_out.astype(np.uint8)\n", "\n", "def rust_contrast_enhancer(\n", " img: np.ndarray, low_p: int = 2, high_p: int = 98\n", @@ -1356,7 +1408,9 @@ " out_range=(0.0, 255.0),\n", " )\n", " return img_out.astype(np.uint8)" - ] + ], + "outputs": [], + "execution_count": 1 }, { "cell_type": "markdown", From 5c99b628b93ecac9063023530a5bdaf7a8037a30 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 23 Oct 2026 15:56:43 +0000 Subject: [PATCH 09/14] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- ...ring_misc_functions_in_rust_v_python.ipynb | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/benchmarks/comparing_misc_functions_in_rust_v_python.ipynb b/benchmarks/comparing_misc_functions_in_rust_v_python.ipynb index cf87f4493a..8947eec0d1 100644 --- a/benchmarks/comparing_misc_functions_in_rust_v_python.ipynb +++ b/benchmarks/comparing_misc_functions_in_rust_v_python.ipynb @@ -1292,27 +1292,27 @@ }, { "cell_type": "code", + "execution_count": 1, "metadata": { + "ExecuteTime": { + "end_time": "2026-10-22T06:25:31.354785Z", + "start_time": "2026-10-22T06:25:30.993752Z" + }, "execution": { "iopub.execute_input": "2026-09-02T16:04:47.155283Z", "iopub.status.busy": "2026-09-02T16:04:47.155195Z", "iopub.status.idle": "2026-09-02T16:04:47.157789Z", "shell.execute_reply": "2026-09-02T16:04:47.157491Z" - }, - "ExecuteTime": { - "end_time": "2026-10-22T06:25:31.354785Z", - "start_time": "2026-10-22T06:25:30.993752Z" } }, + "outputs": [], "source": [ - "import numpy as np\n", - "from skimage import exposure\n", - "\n", "import numpy as np\n", "from skimage import exposure\n", "\n", "import tiatoolbox.rust.utils.misc as rmisc\n", "\n", + "\n", "def rust_contrast_enhancer(\n", " img: np.ndarray, low_p: int = 2, high_p: int = 98\n", ") -> np.ndarray:\n", @@ -1361,6 +1361,7 @@ " )\n", " return img_out.astype(np.uint8)\n", "\n", + "\n", "def rust_contrast_enhancer(\n", " img: np.ndarray, low_p: int = 2, high_p: int = 98\n", ") -> np.ndarray:\n", @@ -1408,9 +1409,7 @@ " out_range=(0.0, 255.0),\n", " )\n", " return img_out.astype(np.uint8)" - ], - "outputs": [], - "execution_count": 1 + ] }, { "cell_type": "markdown", From 69380b465a89dce0b7c35766fe73401391dac6df Mon Sep 17 00:00:00 2001 From: abdol Date: Tue, 27 Oct 2026 07:49:36 +0000 Subject: [PATCH 10/14] :fire: Clean up contrast enhancer notebook --- ...ring_misc_functions_in_rust_v_python.ipynb | 1402 +---------------- 1 file changed, 52 insertions(+), 1350 deletions(-) diff --git a/benchmarks/comparing_misc_functions_in_rust_v_python.ipynb b/benchmarks/comparing_misc_functions_in_rust_v_python.ipynb index cf87f4493a..08e7fa4efd 100644 --- a/benchmarks/comparing_misc_functions_in_rust_v_python.ipynb +++ b/benchmarks/comparing_misc_functions_in_rust_v_python.ipynb @@ -6,7 +6,7 @@ "id": "aqPkpRk-pT5q" }, "source": [ - "# Benchmarking Misc in Rust\n", + "# Benchmarking in Rust: Constract Enhancer\n", "\n" ] }, @@ -14,1279 +14,39 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This work focuses on converting code in tiatoolbox/utils/misc.py from Python to Rust with the aim of reducing the time it takes to run the code. This Juypter notebook shows the speedup that certain functions are having being written in rust.\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Rust is a programming language that is proven to be faster than Python, especially for CPU bound operations and processing large amounts of data.\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This notebook compares the execution time of several function in two forms.\n", - "One the original python version\n", - "Two the modified function where some or all of the code has been moved to Rust\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "It tests how long it runs in Python and in Rust using different sized inputs. Each input size has multiple tests and the average of all the tests is taken to minimise the impact of any outliers. The x axis shows the size of the input and the y axis shows the average time taken of each input of size x.\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This notebook will show which functions benefitted being moved into Rust.\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "execution": { - "iopub.execute_input": "2026-09-02T16:00:37.340097Z", - "iopub.status.busy": "2026-09-02T16:00:37.340021Z", - "iopub.status.idle": "2026-09-02T16:00:37.342036Z", - "shell.execute_reply": "2026-09-02T16:00:37.341644Z" - } - }, - "outputs": [], - "source": [ - "step1 = 100\n", - "step2 = 1000" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "b6S8vzFipT5w" - }, - "source": [ - "# Part 1: Json.dump\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "execution": { - "iopub.execute_input": "2026-09-02T16:00:37.342908Z", - "iopub.status.busy": "2026-09-02T16:00:37.342832Z", - "iopub.status.idle": "2026-09-02T16:00:39.354846Z", - "shell.execute_reply": "2026-09-02T16:00:39.354345Z" - } - }, - "outputs": [], - "source": [ - "import json\n", - "import time\n", - "from pathlib import Path\n", - "\n", - "import numpy as np\n", - "\n", - "import tiatoolbox.rust.utils.misc as rmisc\n", - "\n", - "example_dict = {}\n", - "sizeofarray = []\n", - "timings = []\n", - "i = 10\n", - "maxarraysize = 1000\n", - "with Path.open(\"example.txt\", \"w\") as handle: # skipcq: PTC-W6004\n", - " json.dump({\"a\": 1}, handle)\n", - "while i <= maxarraysize:\n", - " python_times = np.empty(0)\n", - " rust_times = np.empty(0)\n", - " for j in range(len(example_dict), i):\n", - " example_dict[str(j)] = 1\n", - " for _j in range(10):\n", - " start_time = time.time()\n", - " with Path.open(\"example.txt\", \"w\") as handle: # skipcq: PTC-W6004\n", - " json.dump(example_dict, handle)\n", - " python_end_time = time.time() - start_time\n", - " python_times = np.append(python_times, python_end_time)\n", - " start_time = time.time()\n", - " rmisc.json_dump_python_object(\"example.txt\", example_dict)\n", - " rust_end_time = time.time() - start_time\n", - " rust_times = np.append(rust_times, rust_end_time)\n", - " sizeofarray.append(len(example_dict))\n", - " timings.append([np.average(python_times), np.average(rust_times)])\n", - " i += 10" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "execution": { - "iopub.execute_input": "2026-09-02T16:00:39.356107Z", - "iopub.status.busy": "2026-09-02T16:00:39.355982Z", - "iopub.status.idle": "2026-09-02T16:00:39.757561Z", - "shell.execute_reply": "2026-09-02T16:00:39.757102Z" - } - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlIAAAGxCAYAAACp51jCAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvctoD+AAAAAlwSFlzAAAPYQAAD2EBqD+naQAAts9JREFUeJzsnXeYXGX5/j8zO7O995pseicFAqELCEgVUEBpFkBFFBUURX/6taMI2EAsICqiggjSQRAJLSSkkN6TzW62916mnN8f73mn7czszOxsS57Pde11zp4558zZJWTuPM/93o/FMAwDQRAEQRAEIWqsE/0AgiAIgiAIUxURUoIgCIIgCDEiQkoQBEEQBCFGREgJgiAIgiDEiAgpQRAEQRCEGBEhJQiCIAiCECMipARBEARBEGJEhJQgCIIgCEKM2Cb6AY503G43dXV1ZGRkYLFYJvpxBEEQBEGIAMMw6O7uprS0FKs1dN1JhNQYU1dXR0VFxUQ/hiAIgiAIMVBTU0N5eXnI10VIjTEZGRmA+g+RmZk5wU8jCIIgCEIkdHV1UVFR4fkcD4UIqTFGt/MyMzNFSAmCIAjCFGMkW46YzQVBEARBEGJEhJQgCIIgCEKMiJASBEEQBEGIEfFITQLcbjdDQ0MT/RhHJXa7nYSEhIl+DEEQBGGKIkJqghkaGuLgwYO43e6JfpSjluzsbIqLiyXnSxAEQYgaEVITiGEY1NfXk5CQQEVFRdjALyH+GIZBX18fTU1NAJSUlEzwEwmCIAhTDRFSE4jT6aSvr4/S0lJSU1Mn+nGOSlJSUgBoamqisLBQ2nyCIAhCVEgJZAJxuVwAJCYmTvCTHN1oEetwOCb4SQRBEISphgipSYB4cyYW+f0LgiAIsSJCSpgU3HvvvTz55JMT/RiCIAiCEBXikRKi5uGHH+btt98GVHxARUUFl156KQsWLIjo+l//+tcUFhZy5ZVXeo698MILHHfccVx22WVj8syCIAiCMBZIRUqImtWrV/Pmm2+yatUqjjnmGLZt28aSJUt46qmnIrr+5ZdfZs2aNWP8lIIgCIIw9khFSoiJkpISbrjhBgBuuukmenp6+P73v09qaiqrV6/mxz/+sd/5jz76KLW1tRQUFLBlyxaqqqo81//whz/0nPf666/z6quv4nK5uPzyy1mxYoXffbZt28Zjjz1GW1sbxxxzDNddd51n5R2oFmFlZSW5ublh7yMIgiBMHFsPd1KQkURxVvJEP8qokYqUEBcWL15MTU0NM2fO5M4772Tbtm2e19xuN3fccQc2m41Zs2aRk5NDSUkJq1atYtWqVR4h9Ne//pXvfve75OXl0drayqpVq9i4caPnPi+++CIrVqygvr6eyspK7rvvPk455RS/VPgXXniBW265Jex9BEEQhImjpq2Pi+9/i08+vG6iHyUuSEVqEmEYBv0O14S8d4o9IebVay6Xi//+978sXryYOXPmcNppp/HHP/6Re++9F4BXXnmFhoYGrr32WgoKCqioqGD27NmeipQmNzeX//73v54sp3379vHnP/+ZFStWYBgGt9xyC7fccgt33303ADfeeCMzZszg97//PV/4whciuo8gCIIwsexr7sEwYHdjNwMOF8n2qZ3fJ0JqEtHvcLHwOy9PyHvv+P65pCZG/sdh9+7d3HDDDTidTt599106Ozt5/vnnASVwbr31Vn76059it9v54x//yIUXXkhBQUHYe55xxhl+gZjz5s3j8OHDANTW1rJv3z4+/vGPe17Pzs7mggsuYPXq1X5CKtx9BEEQhImlsXMAAMNQ1ak5RRkT/ESjQ1p7QkxkZmayatUqzjjjDO6//34OHDjgqfh89KMfxeFw8Oyzz9LW1sbTTz/Npz/96RHv6et1AkhISPCEluoxLvn5+X7n5Ofn09jYGPF9BEEQhImloWvAs3+wpXcCnyQ+SEVqEpFiT2DH98+dsPeOBl+zeSDJyclcc801/PGPf6S2tpbc3FzOO+88z+uxtBArKioAOHToENOnT/ccP3ToENOmTYv6foIgCMLE0OgjpKpaRUgJccRisUTVXpvM3HjjjaxYsYLdu3fziU98wq/VlpubS1tbW1T3Kygo4LTTTuOXv/wlp5xyClarlZ07d/LCCy/wj3/8I96PLwiCIIwRjV2Dnv2DLX0T+CTx4cj41BYmHccccwzLly9n/fr1fOpTn/J77cMf/jDXXHMNQ0NDpKen+8UfhOM3v/kN55xzDitWrGD27Nm8+uqrXHXVVVx66aVj8SMIgiAIY0BDp09FSlp7wtHIpz/9abq7u0c8b/ny5SQnJzN37ly/45dddhnr169n8+bN9Pb2kpKSwm233TbM/3T11VfT2+v9n2zRokXs3buX1157jfb2dr797W+zdOlSv2siuY8g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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "plt.plot(sizeofarray, timings)\n", - "plt.xlabel(\"Size of dictionary\")\n", - "plt.ylabel(\"Time(s)\")\n", - "plt.legend([\"Python\", \"Rust\"])\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "b6S8vzFipT5w" - }, - "source": [ - "# Part 2: Patch Predictions As Annotations\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Patch predictions as annotations written fully in python\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "execution": { - "iopub.execute_input": "2026-09-02T16:00:39.774104Z", - "iopub.status.busy": "2026-09-02T16:00:39.773977Z", - "iopub.status.idle": "2026-09-02T16:00:40.198045Z", - "shell.execute_reply": "2026-09-02T16:00:40.197502Z" - } - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "from shapely.geometry import Polygon\n", - "from tqdm.auto import tqdm\n", - "\n", - "from tiatoolbox.annotation.storage import Annotation\n", - "\n", - "\n", - "def py_patch_predictions_as_annotations(\n", - " preds: list | np.ndarray,\n", - " keys: list,\n", - " class_dict: dict,\n", - " class_probs: list | np.ndarray,\n", - " patch_coords: list | np.ndarray,\n", - " classes_predicted: list,\n", - " labels: list,\n", - " *,\n", - " verbose: bool = True,\n", - ") -> list:\n", - " \"\"\"Helper function to generate annotation per patch predictions.\"\"\"\n", - " annotations = []\n", - " tqdm_loop = tqdm(\n", - " patch_coords,\n", - " leave=False,\n", - " desc=\"Converting outputs to AnnotationStore.\",\n", - " disable=not verbose,\n", - " )\n", - "\n", - " for i, _ in enumerate(tqdm_loop):\n", - " if \"probabilities\" in keys:\n", - " props = {\n", - " f\"prob_{class_dict[j]}\": class_probs[i][j] for j in classes_predicted\n", - " }\n", - " else:\n", - " props = {}\n", - " if \"labels\" in keys:\n", - " props[\"label\"] = class_dict[labels[i]]\n", - " if len(preds) > 0:\n", - " props[\"type\"] = class_dict[preds[i]]\n", - " annotations.append(Annotation(Polygon.from_bounds(*patch_coords[i]), props))\n", - "\n", - " return annotations" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Patch Predictions As Annotations with some code written in rust\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "execution": { - "iopub.execute_input": "2026-09-02T16:00:40.199390Z", - "iopub.status.busy": "2026-09-02T16:00:40.199241Z", - "iopub.status.idle": "2026-09-02T16:00:40.201749Z", - "shell.execute_reply": "2026-09-02T16:00:40.201367Z" - } - }, - "outputs": [], - "source": [ - "def rust_patch_predictions_as_annotations(\n", - " preds: list | np.ndarray,\n", - " keys: list,\n", - " class_dict: dict,\n", - " class_probs: list | np.ndarray,\n", - " patch_coords: list | np.ndarray,\n", - " classes_predicted: list,\n", - " labels: list,\n", - " *,\n", - " verbose: bool = True,\n", - ") -> list:\n", - " \"\"\"Helper function to generate annotation per patch predictions.\"\"\"\n", - " _ = verbose\n", - " if len(class_probs) == 0:\n", - " class_probs = np.empty((0, 2))\n", - " if len(patch_coords) == 0:\n", - " patch_coords = np.empty((0, 2))\n", - " return rmisc.patch_predictions_as_annotations(\n", - " Annotation,\n", - " Polygon,\n", - " np.array(preds).astype(\"float\"),\n", - " \"labels\" in keys,\n", - " \"probabilities\" in keys,\n", - " class_dict,\n", - " np.array(class_probs).astype(\"float\"),\n", - " np.array(patch_coords).astype(\"float\"),\n", - " classes_predicted,\n", - " labels,\n", - " )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Comparison of speed it takes to run code in rust vs python\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "execution": { - "iopub.execute_input": "2026-09-02T16:00:40.202747Z", - "iopub.status.busy": "2026-09-02T16:00:40.202669Z", - "iopub.status.idle": "2026-09-02T16:00:53.344379Z", - "shell.execute_reply": "2026-09-02T16:00:53.343785Z" - } - }, - "outputs": [], - "source": [ - "import time\n", - "\n", - "sizeofarray = []\n", - "timings = []\n", - "timings = []\n", - "num_patches = 10\n", - "num_classes = 10\n", - "max_patches = 1000\n", - "while num_patches <= max_patches:\n", - " python_times = np.empty(0)\n", - " rust_times = np.empty(0)\n", - " for _j in range(10):\n", - " rng = np.random.default_rng(42)\n", - " class_probs = rng.random(\n", - " (num_patches, num_classes),\n", - " dtype=np.float64,\n", - " )\n", - " class_probs /= class_probs.sum(axis=1, keepdims=True)\n", - " preds = np.argmax(class_probs, axis=1).astype(np.float64).tolist()\n", - " labels = (\n", - " rng.integers(0, num_classes, size=num_patches).astype(np.int32).tolist()\n", - " )\n", - " x = np.arange(num_patches, dtype=np.float64) * 10\n", - " y = np.zeros(num_patches, dtype=np.float64)\n", - " patch_coords = np.column_stack((x, y, x + 10, y + 10))\n", - " keys = [\"predictions\", \"probabilities\", \"labels\"]\n", - " class_dict = {index: f\"class_{index}\" for index in range(num_classes)}\n", - " classes_predicted = list(range(num_classes))\n", - " verbose: bool = False\n", - " start_time = time.time()\n", - " python_object = py_patch_predictions_as_annotations(\n", - " preds,\n", - " keys,\n", - " class_dict,\n", - " class_probs,\n", - " patch_coords,\n", - " classes_predicted,\n", - " labels,\n", - " verbose=False,\n", - " )\n", - " python_end_time = time.time() - start_time\n", - " python_times = np.append(python_times, python_end_time)\n", - " start_time = time.time()\n", - " rust_object = rust_patch_predictions_as_annotations(\n", - " preds,\n", - " keys,\n", - " class_dict,\n", - " class_probs,\n", - " patch_coords,\n", - " classes_predicted,\n", - " labels,\n", - " verbose=False,\n", - " )\n", - " rust_end_time = time.time() - start_time\n", - " rust_times = np.append(rust_times, rust_end_time)\n", - " if python_object != rust_object:\n", - " print(\"Incorrect result\")\n", - " sizeofarray.append(num_patches)\n", - " timings.append([np.average(python_times), np.average(rust_times)])\n", - " if num_patches < step1:\n", - " num_patches += 10\n", - " num_classes += 10\n", - " else:\n", - " num_patches += 100\n", - " num_classes += 100" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "execution": { - "iopub.execute_input": "2026-09-02T16:00:53.345831Z", - "iopub.status.busy": "2026-09-02T16:00:53.345741Z", - "iopub.status.idle": "2026-09-02T16:00:53.389253Z", - "shell.execute_reply": "2026-09-02T16:00:53.388825Z" - } - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAGxCAYAAACKvAkXAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvctoD+AAAAAlwSFlzAAAPYQAAD2EBqD+naQAAcJZJREFUeJzt3Xd4FNXbxvFvOiQkoUOAhN57BynSm1joUuzBXrGioj98RURQVBBFRSwIgqiAgCC9g4TeOyGEEkhIIz173j8WFiNtE5LdhNyf68plZvbMzLOrsjczp7gYYwwiIiIi+YirswsQERERcTQFIBEREcl3FIBEREQk31EAEhERkXxHAUhERETyHQUgERERyXcUgERERCTfUQASERGRfMfd2QXkVhaLhVOnTuHr64uLi4uzyxERERE7GGOIi4ujTJkyuLpe/z6PAtB1nDp1isDAQGeXISIiIlkQFhZGuXLlrvu6AtB1+Pr6AtYP0M/Pz8nViIiIiD1iY2MJDAy0fY9fjwLQdVx+7OXn56cAJCIiksfcrPuKOkGLiIhIvqMAJCIiIvmOApCIiIjkO+oDdAssFgspKSnOLiNf8vDwwM3NzdlliIhIHqUAlEUpKSkcO3YMi8Xi7FLyrcKFC1O6dGnN0yQiIpmmAJQFxhhOnz6Nm5sbgYGBN5xoSbKfMYaEhAQiIiIACAgIcHJFIiKS1ygAZUFaWhoJCQmUKVMGb29vZ5eTLxUsWBCAiIgISpYsqcdhIiKSKU6/dTF37lw6duxInTp1GDhwIIcPH75he4vFwvz58+nZsydVqlRh06ZN12wXGRnJa6+9RpMmTWjbti3Tpk3LtprT09MB8PT0zLZzSuZdDp+pqalOrkRERPIapwag+fPn07dvX+6++26mTJmCMYY2bdoQFRV13WNef/11vvzyS+69916OHDlCYmLiVW0iIyNp3rw527dvZ/z48YwfP55ly5axdu3abK1ffU+cS5+/iIhklVMfgf3vf/9jyJAhvPjiiwD8+OOPBAQE8OWXX/LWW29d85hRo0bh6enJyZMnr3veESNGkJ6ezrx58yhQoAAAU6dOtd25kezzySefUKFCBXr37u3sUkREROzmtDtAcXFxbN26la5du9r2eXp60qlTJ1auXHnd42722MkYw8yZMxkyZIgt/FyW3/uJTJ06leDgYIKDg3nqqaf44IMP2Ldvn93HT5gwgZkzZ2bYt3DhQv7555/sLlVERCRHOS0AnTx5EmMMpUuXzrC/dOnSN7y7czPnz58nKiqKwMBAHn74YerWrUvXrl2ZPn36DY9LTk4mNjY2w8/tZtWqVaxZs4YWLVpQr149du/eTd26dfnjjz/sOn7x4sVs2LAhh6sUERHJeU57BHZ5/hwPD48M+z09PW/pUdXliQlfffVVRo8ezbBhw9i0aROPPvooMTExPPXUU9c8bvTo0YwcOTLL180rAgICCA4OBuCpp54iPj6e9957D29vb1atWsUHH3yQof3PP/9MeHg4JUqUYOfOnRw/ftx2/Pvvv29rt3LlSpYuXUp6ejr9+vWjUaNGGc6ze/duZs6cSVRUFPXq1ePBBx+0jeSCK4/SihYtesPziIhI3rdo9xm83F1pX6Ok02pw2h2g4sWLA9YOy/92/vx522tZUaxYMVxdXenVqxdPP/009erVY+jQoTz88MN888031z1u+PDhxMTE2H7CwsKyXENeUqdOHcLCwqhUqRKjR49m9+7dttcsFgvDhw/H3d2dypUrU6RIEQICAmjRogUtWrSwBZhp06bxv//9j2LFihEZGUmLFi3YunWr7Tx//fUXjRo14vTp01SoUIGJEyfSunXrDLNoL1y4kOeff/6G5xERkbzv6Ll4Xvl1B498v5lVB885rQ6n3QEqVaoUgYGBbNiwgXvuuce2f926dXTr1i3L5y1QoAD16tWjcOHCGfYXLlyYixcvXvc4Ly8vvLy8snRNYwyJqc7pYF3Qwy3Lo6HS09NZtmwZderUoWrVqrRt25bvvvuOTz75BIAlS5Zw5swZHnjgAUqUKEFgYCBVqlSx3QG6rGjRoixbtszWx+rw4cP88MMPNGrUCGMMzz//PM8//zzjxo0DYOjQoVSsWJGvv/6aZ5991q7ziIhI3peYks7TP28lPjmN5hWL0qpyMafV4tRRYE8++STjx4/noYceokaNGnz99dccPXqUoUOH2tq8+eabbN++nYULF9p93meffZa33nqLZ599lipVqnDs2DGmTZvGgAEDcuJtkJiaTq13FufIuW9m73td8fa0/1/jgQMHCA4OJi0tjY0bNxITE8OCBQsAazAZNmwYY8aMwcPDg++++46ePXtSokSJG56zffv2GTqYV69e3daPKzw8nMOHDzNw4EDb64ULF+auu+5i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4erqSrly5bLtfH5+fvofykH0WTuOPmvH0WftOPqsHSenPusb3fm5TJ2gRUREJN9RABIREZF8RwEoh3l5efHuu+/i5eXl7FJue/qsHUeftePos3YcfdaOkxs+a3WCFhERkXxHd4BEREQk31EAEhERkXxHAUhERETyHQWgHBQZGcnmzZs5c+aMs0vJ08LDw9mxYwfx8fHXbRMTE0NISAhhYWG31EastmzZwvr166/52sWLF9myZQtHjx697vH2tBGIiIhg69atJCQkXPP15ORktm7dyoEDB657Dnva5Hfx8fHs3LmTvXv3kpSUdM02aWlpbN++nb179153CQV72uQ3MTExrFu3jtOnT1+3zblz59i8eTMRERE53iZTjOSId955x3h5eZlatWoZLy8v89hjj5n09HRnl5Wn/PXXX6Z+/fqmTJkypl69esbb29u88cYbV7X7/PPPTcGCBU3NmjVNwYIFTe/evU1SUlKm24jV3Llzjaurq/Hy8rrqtZ9//tn4+vqaatWqGV9fX9O+fXsTHR2d6Tb5XXR0tOnTp4/x8fExTZo0MUFBQebHH3/M0GbhwoWmWLFiplKlSqZIkSKmcePG5tSpU5luk9+9//77xsfHx9StW9dUqVLFFC1a1Pz0008Z2qxdu9YEBASYoKAgU6JECVOrVi1z+PDhTLfJT44dO2aGDh1qSpcubdzc3MyECROu2e6VV17J8F343HPPGYvFkiNtMksBKAfMmTPHeHh4mHXr1hljjNm/f7/x9/c3n332mZMry1u++OILs2PHDtv2hg0bjJeXl/nhhx9s+zZu3GhcXFzMvHnzjDHGhIeHmzJlypjhw4dnqo1YhYWFmXLlypnnnnvuqgB06NAh4+HhYb7++mtjjDEXLlww1atXN4888kim2ogxnTp1Mo0aNTLnzp0zxhhz8eJFM3XqVNvr586dM76+vua9994zxhiTmJhoWrRoYbp3756pNvnd1q1bDWD++OMP277333/fuLu7m9jYWGOMMfHx8aZ06dLm+eefN8YYk5aWZrp27WqaNm1qO8aeNvnNokWLzOTJk01cXJzx9/e/ZgCaNm2aKViwoNmyZYsxxpgdO3YYb29vM2XKlGxvkxUKQDngnnvuMd26dcuwLzg42NSvX985Bd1GWrRoYYYOHWrbfvzxx02DBg0ytHn77bdNqVKlMtVGrH+ot23b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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "plt.plot(sizeofarray, timings)\n", - "plt.xlabel(\"Size of array\")\n", - "plt.ylabel(\"Time(s)\")\n", - "plt.legend([\"Python\", \"Rust\"])\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "b6S8vzFipT5w" - }, - "source": [ - "# Part 3: Patch Predictions As QuPath\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Patch predictions as qupath written fully in python\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "execution": { - "iopub.execute_input": "2026-09-02T16:00:53.390168Z", - "iopub.status.busy": "2026-09-02T16:00:53.390086Z", - "iopub.status.idle": "2026-09-02T16:00:53.393091Z", - "shell.execute_reply": "2026-09-02T16:00:53.392722Z" - } - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "from shapely.geometry import mapping\n", - "\n", - "\n", - "def py_patch_predictions_as_qupath_json(\n", - " preds: list | np.ndarray,\n", - " class_dict: dict,\n", - " patch_coords: list | np.ndarray,\n", - " *,\n", - " verbose: bool = True,\n", - ") -> dict:\n", - " \"\"\"Helper function to generate QuPath JSON per patch predictions.\"\"\"\n", - " features = []\n", - " # pick a color for each class based on the class index, using a colormap\n", - " num_classes = len(class_dict)\n", - " cmap = plt.colormaps[\"tab20\"].resampled(num_classes)\n", - " class_colours = {\n", - " class_idx: [\n", - " int(cmap(class_idx)[0] * 255),\n", - " int(cmap(class_idx)[1] * 255),\n", - " int(cmap(class_idx)[2] * 255),\n", - " ]\n", - " for class_idx in class_dict\n", - " }\n", - "\n", - " tqdm_loop = tqdm(\n", - " range(np.asarray(patch_coords).shape[0]),\n", - " leave=False,\n", - " desc=\"Converting outputs to QuPath JSON.\",\n", - " disable=not verbose,\n", - " )\n", - "\n", - " for i in tqdm_loop:\n", - " class_idx = int(preds[i])\n", - " class_name = class_dict[class_idx]\n", - " polygon_geo = Polygon.from_bounds(*patch_coords[i])\n", - " polygon_feat = mapping(polygon_geo)\n", - "\n", - " feature = {\n", - " \"type\": \"Feature\",\n", - " \"id\": f\"patch_{i}\",\n", - " \"geometry\": polygon_feat,\n", - " \"properties\": {\n", - " \"classification\": {\n", - " \"name\": class_name,\n", - " \"color\": class_colours[class_idx],\n", - " }\n", - " },\n", - " \"objectType\": \"annotation\",\n", - " \"name\": class_name,\n", - " \"class_value\": class_idx,\n", - " }\n", - "\n", - " features.append(feature)\n", - "\n", - " return {\"type\": \"FeatureCollection\", \"features\": features}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Patch Predictions As QuPath Json with some code written in rust\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "execution": { - "iopub.execute_input": "2026-09-02T16:00:53.393837Z", - "iopub.status.busy": "2026-09-02T16:00:53.393760Z", - "iopub.status.idle": "2026-09-02T16:00:53.395950Z", - "shell.execute_reply": "2026-09-02T16:00:53.395555Z" - } - }, - "outputs": [], - "source": [ - "def rust_patch_predictions_as_qupath_json(\n", - " preds: list | np.ndarray,\n", - " class_dict: dict,\n", - " patch_coords: list | np.ndarray,\n", - ") -> dict:\n", - " \"\"\"Helper function to generate QuPath JSON per patch predictions.\"\"\"\n", - " num_classes = len(class_dict)\n", - " cmap = plt.colormaps[\"tab20\"].resampled(num_classes)\n", - " class_colours = {\n", - " class_idx: [\n", - " int(cmap(class_idx)[0] * 255),\n", - " int(cmap(class_idx)[1] * 255),\n", - " int(cmap(class_idx)[2] * 255),\n", - " ]\n", - " for class_idx in class_dict\n", - " }\n", - "\n", - " features = rmisc.patch_predictions_as_qupath_json(\n", - " class_colours,\n", - " np.array(preds).astype(\"float\"),\n", - " class_dict,\n", - " np.array(patch_coords).astype(\"float\"),\n", - " )\n", - " return {\"type\": \"FeatureCollection\", \"features\": features}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Comparison of speed it takes to run code in rust vs python\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "execution": { - "iopub.execute_input": "2026-09-02T16:00:53.396686Z", - "iopub.status.busy": "2026-09-02T16:00:53.396612Z", - "iopub.status.idle": "2026-09-02T16:00:56.775887Z", - "shell.execute_reply": "2026-09-02T16:00:56.775291Z" - } - }, - "outputs": [], - "source": [ - "import time\n", - "\n", - "import matplotlib.pyplot as plt\n", - "\n", - "sizeofarray = []\n", - "timings = []\n", - "timings = []\n", - "num_patches = 10\n", - "num_classes = 10\n", - "max_patches = 1000\n", - "while num_patches <= max_patches:\n", - " python_times = np.empty(0)\n", - " rust_times = np.empty(0)\n", - " for _j in range(10):\n", - " rng = np.random.default_rng(42)\n", - " class_probs = rng.random(\n", - " (num_patches, num_classes),\n", - " dtype=np.float64,\n", - " )\n", - " class_probs /= class_probs.sum(axis=1, keepdims=True)\n", - " preds = np.argmax(class_probs, axis=1).astype(np.float64).tolist()\n", - " x = np.arange(num_patches, dtype=np.float64) * 10\n", - " y = np.zeros(num_patches, dtype=np.float64)\n", - " patch_coords = np.column_stack((x, y, x + 10, y + 10))\n", - " class_dict = {index: f\"class_{index}\" for index in range(num_classes)}\n", - " classes_predicted = list(range(num_classes))\n", - " verbose: bool = False\n", - " start_time = time.time()\n", - " python_object = py_patch_predictions_as_qupath_json(\n", - " preds,\n", - " class_dict,\n", - " patch_coords,\n", - " verbose=False,\n", - " )\n", - " python_end_time = time.time() - start_time\n", - " python_times = np.append(python_times, python_end_time)\n", - " start_time = time.time()\n", - " rust_object = rust_patch_predictions_as_qupath_json(\n", - " preds, class_dict, patch_coords\n", - " )\n", - " rust_end_time = time.time() - start_time\n", - " rust_times = np.append(rust_times, rust_end_time)\n", - " if python_object != rust_object:\n", - " print(\"Incorrect result\")\n", - " sizeofarray.append(num_patches)\n", - " timings.append([np.average(python_times), np.average(rust_times)])\n", - " if num_patches < step1:\n", - " num_patches += 10\n", - " num_classes += 10\n", - " else:\n", - " num_patches += 100\n", - " num_classes += 100" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "execution": { - "iopub.execute_input": "2026-09-02T16:00:56.777360Z", - "iopub.status.busy": "2026-09-02T16:00:56.777267Z", - "iopub.status.idle": "2026-09-02T16:00:56.821473Z", - "shell.execute_reply": "2026-09-02T16:00:56.821077Z" - } - }, - "outputs": [ - { - "data": { - "image/png": "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J27/maenJ7fffjuff/45CQkJNGrUiBEjRtj2V+Qf9Nn3MC4uzi7YxsXFlTmfTERE6oblUUlMm7+H07lFuLs689TwTkwc2AZn55qxELBpISkkJIQGDRqwf/9+rrnmGtv2/fv307Vr1wr3GTBggN0dVQAeHh40bNiQzp074+TkVKFznz2Oh4dHhV6vk5NTuS551WT33nsvvXr14uDBg9x11112l78aNWrEqVOnynW8xo0bc8UVV/D+++9z2WWX4ezszP79+1m6dClz5syp7PJFRMRkmflFTF+8jx92WKdLdG3ux3u39KBjU98L9Kxepn1qOzs7M27cOP7zn/9w33334eXlxa5du9i0aRNPPfWUrd0333xDbGwszzzzjEN9wsLCCAsLszvXp59+SkREhG1ui5OTk0PnlrKFh4fTs2dPtm3bxj333GO3b9SoUdx+++0UFhbSoEGDcwLr+Xz88ccMGzaMXr160b59e1auXMmECRMYPXp0VbwEERExyZajaTwxdzcJ6Xk4O8F9g9rx2NUdcXc1fenGc5g6tDFz5kwGDx5M79696dGjB8uXL+fuu+/m+uuvt7VZvXo1W7Zs4ZlnnnG4T2Wduz6aOHEiWVlZF2zXs2dPPD096dixo932m266iW3btrF7925ycnLw8vLiiSeeOGe+0W233UZOTo7t+27dunH48GFWr17N6dOnef7554mIiLDr48hxRESkZiooLuHtnw/x7/VHMQwIaeTNO+Mj6BPayOzSzsvJMAzDzAIKCgpYsWIFKSkphIWF0a9fP7v9v/76K8nJyXZ3Pl2oz5999913tGzZkssuu6xc576QzMxM/P39ycjIOGcuU35+PjExMbRp0wZPT89yHbemy8zMpHXr1nz00UdMmDDB7HL+Ul3+exARqS32J2Xy+He7OJBs/SX8lkuCee66rjTwMGes5q8+v//I9JBUm9XHkPTkk0/yyy+/4OLiwtatW3F1rdnzrOrq34OISG1QYjH4dP1R3v75EIUlFgJ93Jk5JpyhXZuaWpejIalmf8JJjdOrVy/69u3LiBEjanxAEhER88SfyuWJubv5LdZ6M8/VXZoyc0wYQQ0qdgOUGfQpJ+Xyx8ueIiIif2YYBvO2H2f6j/vILijGx92FF6/vxrg+rUxf96i8FJJERESkUqRlF/DMgj2s2GtdCLhP64a8M74HIYHeJldWMQpJIiIictFW7U/h6R/2cDK7ADcXJx4f2pF/XNEOlxqyMGRFKCSJiIhIheUUFPPqkv18+9sxADo2bcC7N/egWwt/kyu7eApJIiIiUiHb404zee4u4tKszz2ddFkbpgzvhGc5H4dVUykkiYiISLkUFlv4YNVhPl5zBIsBLfw9eWt8BAPaBV24cy2ikCQiIiIOO3Iii8e+20VUQiYAN/VsyYs3dMPfy83kyiqfQpLY2bZtG7GxsQC4ubnRqlUrwsPDcXOrvH/8CQkJbN++nRtuuKHSjikiIlXLYjH47+ZYZi47QEGxhQBvN167MYyR4c3NLq3KKCSJnQ8//JAlS5YwaNAgiouL2blzJ66urixevJhu3bpVyjk2b97MpEmTSE9Pr5TjiYhI1UrKyGPK97vZeCQNgCs6NubNseE09avbTzJQSJJzdOvWjXnz5gFQWFjIgAEDePTRR1m5ciUAR44cISYmhqFDh9r6pKSksHHjRm666SbbtszMTHbs2AFYV+r28/MjNTWVLVu2UFRUZDtH586d6d69e3W9PBERKYdFuxJ4fmEUmfnFeLo58+zIrtx+aUitWxiyIhSS5C+5u7szbNgw/v3vf9u2/fTTT3z66adERUXZtu3cuZPx48dTXFwMWB9MPGbMGDp16kSDBg2Ijo7mgw8+oE2bNmzcuJGioiLmzJkDwOjRoxWSRERqmPTcQp5ftJcfdycCENHKn3du7kG7xg1Mrqz6KCRVF8OAolxzzu3mDReR+I8ePUpQUPnuWJgxYwZ/+9vfePPNNwHIyMhg69atdOvWjSeeeIJJkybZRpJERKRmWX84lSe/jyQ5Mx8XZycevrI9Dw5pj5uLs9mlVSuFpOpSlAuvtzDn3M8kgruPw81TU1OZN28excXFbN26lfnz5/PVV1+V65QeHh7ExcWRl5eHl5cX/v7+DBs2rLyVi4hINcorLOGN5Qf4z6ZYANoG+fDuzT2ICA4wtS6zKCTJOU6cOMGcOXMoKChg06ZNjBgxgtGjR5frGLNmzWLixIk0btyYgQMHct1113Hvvffi6Vm3J/mJiNRWkcfTefy7XUSn5gBwZ//WTBvRBS/3urEwZEUoJFUXN2/riI5Z5y6HP07cTklJoU+fPkydOpV33nkHAGdnZywWi12f/Px8u++7dOnC5s2bSUpKYvXq1bz22musWLGCn3766SJeiIiIVLbiEgufrInm/VWHKbYYNPH14M1xEQzq2Njs0kynkFRdnJzKdcmrpmjatClvv/02EyZM4N5776VLly60bNmShIQECgoK8PDwAGDt2rV2/ZKSkmjevDnNmzfntttuw2Kx8OijjwLQoEEDCgoKqv21iIiIvZiTOUyeu4udx9IBGBnWnFdv7E5DH3dzC6shFJLkgsaPH89bb73FtGnTWLhwIUOHDsXT05NbbrmF0aNHs23bNubOnWvX5/bbbyc4OJiBAwdSUlLCu+++y5gxYwAICwujpKSE559/noiICC0BICJSzQzD4JvfjvHqT/vJKyrB19OVV0Z1Z1SPFvXi1n5H1a9p6nJBl1xyCYMGDTpn+3vvvYebmxtJSUn4+fmxdetW2rdvz5o1a+jUqROLFy+2hSCAFStWcOWVV/Lbb7+xc+dOnn/+eT755BMAWrZsybJlyzh58iTfffcdu3fvrrbXJyJS353Iymfif37n2QVR5BWVMKBdICseu4Ibe7ZUQPoTJ8MwDLOLqK0yMzPx9/cnIyMDPz8/u335+fnExMTQpk0bTVY2kf4eRERKLY9KYtr8PZzOLcLd1Zmnr+nMPQNCcXauX+Horz6//0iX20REROq4zPwipi/exw87jgPQtbkf793Sg45NfU2urGZTSBIREanDDiZnMfE/v5OQnoezE9w3qB2PXd0Rd1fNuLkQhSQREZE6KrugmPv+t52E9DxCGnnzzvgI+oQ2MrusWkMhSUREpI56YWEUMSdzaOHvyaIHB+rW/nLSWJuIiEgdNG/7cebvTMDF2YkPbu2pgFQBCklVTDcPmkvvv4jUR9Gp2Ty/MAqAyUM76hJbBSkkVREXF+uzbgoLC02upH7Lzc0FwM3NzeRKRESqR35RCQ99s5O8ohIGtg/kvkHtzC6p1tKcpCri6uqKt7c3qampuLm54eysPFqdDMMgNzeXEydOEBAQYAutIiJ13Yyl+9mflEmgjzvvju+BSz1bA6kyKSRVEScnJ5o3b05MTAxxcXFml1NvBQQE0KxZM7PLEBGpFsujkvnvZutnztvjI2jip0V0L4ZCUhVyd3enQ4cOuuRmEjc3N40giUi9cfx0Lk/Nsz7m6R+D2jK4UxOTK6r9TA9Jp0+fZt68eaSkpBAWFsYNN9xwwWfHONLn8OHDrFy5kuzsbLp168Y111xjd8lr8eLF/Pbbb3Z9mjZtysMPP1x5Lw5wdnbW4zBERKRKFZdYeHTOLjLzi+kRHMCUYZ3MLqlOMHWiTFxcHGFhYXz55ZekpaXx8MMPM2rUKCwWy0X1ef755xk7diwHDhwgOTmZBx54gAEDBpCTk2Nrs3TpUhYuXIinp6fty8PDo0pfr4iISFV4d+UhtsedxtfDldm39sTNRfNgK4OpD7i9+eabOXbsGOvXr8fV1ZXo6Gg6d+7MV199xS233FLhPjt37qRnz562PsnJybRs2ZKvv/7a1ua+++7j5MmTzJs3r8L1O/qAPBERkaqy4fBJ7vh8K4YBH03oxcjw5maXVOM5+vltWtQsLi7mxx9/5I477sDV1XrVr127dlxxxRXMnz//ovr8MSD9UYMGDey+j4uL4/XXX+ejjz5i9+7dlfGyREREqk1qVgGPz92FYcCES0MUkCqZaSHp2LFj5OXl0b59e7vtHTp04ODBgxfd5/Dhwzz33HM88sgjDB06lKlTpzJy5Ei7Ns7OzqSnp7Np0yb69u3L1KlT/7LmgoICMjMz7b5ERETMYLEYPPH9blKzCujU1JcXrutqdkl1jmkTt8/OD/rzMJe/v7/d3KGK9nFxccHT05Ps7GyysrKIjo4mPz8fLy8vACZPnkzHjh1t7W+77TZGjhzJiBEjGDRoUJnnnzFjBtOnTy/HqxQREaka/1p/lHWHUvF0c2b2hJ54uulu3spm2kjS2UtfGRkZdtvT09PPuSxWkT5t27blueee47333mP79u2sWrWKDz74wLb/jwEJ4Nprr6Vly5asXbv2vDVPmzaNjIwM21d8fPwFXqWIiEjl23HsNG+tsF5Been6bnRs6mtyRXWTaSEpJCQEb29vDh06ZLf90KFDdO7cudL6AAQGBtKtWzf27NnzlzVZLBby8vLOu9/DwwM/Pz+7LxERkeqUkVfEI9/upNhicF14c26+JNjskuos00KSi4sLo0aN4ssvv6SoqAiAgwcPsn79esaOHWtrt3DhQmbPnu1wn8LCQnbs2GF3roSEBHbt2kV4eDhgnQD++++/27VZuHAhSUlJXHXVVVXzgkVERC6SYRg8M38Px0/nEdLIm9dvCrvg2oJScaYuARAfH8/ll19OkyZN6NOnDwsXLmTAgAF8//33tr/0SZMmsWXLFqKiohzqU1RUxJAhQ2jQoAFdu3YlPT2dhQsX0q9fP+bNm4e3tzclJSUMGjQIb29vunXrxrFjx/jpp594/PHHmTlzpsP1awkAERGpTl9vjePZBVG4Ojvxw/0DiAgOMLukWsnRz29TQxJAVlYWCxYssK2ePXz4cLtUvGTJEhISEvj73//ucB+AdevWsXPnTnx8fOjZsye9e/c+59xn2zRs2JD+/fvToUOHctWukCQiItXlQHImoz7cSEGxhWev7cK9V7Q1u6Raq9aEpNpMIUlERKpDbmExN3y4kSMnshncqTGf33UJzs66zFZRNX4xSREREXHMyz/u48iJbJr4evD2uAgFpGqikCQiIlKDLd6dyJzf43Fygvdu6UFgAz1ntLooJImIiNRQcWk5PDPfunzNw0PaM6BdkMkV1S8KSSIiIjVQYbGFh7/dSXZBMX1DG/HIVeW7uUgunkKSiIhIDfTmigNEHs8gwNuN927pgauLPrKrm95xERGRGmb1gRT+vT4GgDfHRtAiwMvkiuonhSQREZEaJDkjnynfRwJw94BQhnZtanJF9ZdCkoiISA1RYjF47LudnMoppFsLP6Zde/7nkkrVU0gSERGpIT769Qhbjp7Cx92FDyf0wsPVxeyS6jWFJBERkRpg69E03lt5CIBXR3enTZCPyRWJQpKIiIjJTucU8uicXVgMGNOrFaN7tjK7JEEhSURExFSGYfDkvN0kZ+bTtrEPL4/qZnZJcoZCkoiIiIn+symWlftP4O7qzOxbe+Lj4Wp2SXKGQpKIiIhJohIymLH0AADPjexCtxb+Jlckf6SQJCIiYoLsgmIe+mYHhSUWhnVtyh39WptdkvyJQpKIiEg1MwyD5xbsITYtl5YBXswaG46Tk5PZZcmfKCSJiIhUsx92JLBwVyIuzk68f0sPArzdzS5JyqCQJCIiUo2OnMjm+YVRAEwe2pE+oY1MrkjORyFJRESkmuQXlfDQNzvIKyphYPtA7hvUzuyS5C8oJImIiFST15fu50ByFoE+7rw7vgcuzpqHVJMpJImIiFSD5VFJfLk5DoB3bu5BEz9PkyuSC1FIEhERqWLHT+fy1LxIAP4xqC2DOjY2uSJxhEKSiIhIFSoqsfDItzvJzC+mR3AAU4Z1MrskcZBCkoiISBV6b+UhdhxLx9fTldm39sTNRR+9tYX+pkRERKrIhsMn+XhNNAAzbwonuJG3yRVJeSgkiYiIVIHUrAIe+24XhgETLg1hZHhzs0uSclJIEhERqWQWi8Hkubs4mV1Ap6a+vHBdV7NLkgpQSBIREalk/1p/lPWHT+Lp5syHE3ri6eZidklSAQpJIiIilWjHsdO8teIgANNv6EaHpr4mVyQVpZAkIiJSSTLyinj4m50UWwyuj2jB+D7BZpckF8HV7AJyc3NZsmQJKSkphIWFMWjQoErpk5SUxJo1a8jOzqZbt24MGDCgUs4tIiJSFsMwmPpDJAnpeYQ08ua10d1xctJjR2ozU0eSkpKSiIiI4LXXXmP79u2MGzeO22+//aL7zJw5k8GDB7N8+XK2bNnC6NGjGTZsGPn5+Rd1bhERkfP55rdjLItKxs3Fidm39sTP083skuQimTqS9PTTT+Pr68vmzZvx8PAgKiqKiIgIxo4dy4033ljhPgMHDuTJJ5/ExcU6US4uLo42bdrw008/MXbs2AqfW0REpCwHkjN5+cd9ADx9TWciggPMLUgqhWkjSSUlJcyfP5+77roLDw8PALp3785ll13G3LlzL6rP5ZdfbgtIAA0aNMDZ2dm2rSLnFhERKUtuYTEPfbOTgmILQzo1ZuLANmaXJJXEtJGk+Ph4cnJy6NTJ/hk2nTt35rfffrvoPrGxscybN4/MzEx+/PFH/vGPfzBq1KgKnxugoKCAgoIC2/eZmZkXfqEiIlKnTV+8jyMnsmni68Fb4yJwdtY8pLrCtJGkrKwsAAICAuy2BwQE2PZdTJ+CggKSk5M5duwYqamplJSUUFxcXOFzA8yYMQN/f3/bV3Cw7loQEanPFu1K4Ltt8Tg5wXu39CCwgYfZJUklMm0kydvb+vyaP4/GZGRk4OPjc9F9OnXqxFtvvQVAYmIi3bp1o1OnTjz++OMVOjfAtGnTmDx5su37zMxMBSURkXoq9mQOzy6IAuDhKzswoF2QyRVJZTMtJLVu3RoPDw+io6PttkdHR9OhQ4dK6wPQokULIiIi2LFjx0Udx8PDwzaHSURE6q/CYgsPf7uT7IJi+oY24pEr25tdklQB0y63ubq6MnLkSL7++mssFgtgnUe0du1aRo8ebWv3888/85///MfhPkVFRRw6dMjuXKmpqezZs8c2B8nRc4uIiJRl1vID7EnIIMDbjfdu6YGri9ZmroucDMMwzDp5dHQ0AwYMICwsjL59+zJnzhw6dOjA0qVLbXeiTZo0iS1bthAVFeVQn8LCQvr160fHjh3p2rUr6enpzJ07l9atW7Ns2TL8/PwcPveFZGZm4u/vT0ZGhu24IiJSt60+kMLE/2wD4N939mFo16YmVyTl5ejnt6khCayjPN9++61t1etx48bZhZTvv/+eY8eO8cQTTzjcp6SkhCVLlrBz5058fHzo2bMnV111VbnPfSEKSSIi9UtyRj4j3l/H6dwi7hkYyovXdzO7JKmAWhOSajOFJBGR2s1iMcgqKCYzr4jM/CIy84rP/LeIjLwiMvPt9x1MyST+VB7dWvgx/4EBeLg6/ou11ByOfn6b/uw2ERGRivqrkPPngFPW9uyCYso7VODr4cqHE3opINUDCkkiImIai8Ugu/BMaHEo4Nh/n1WBkFMWTzdn/Dzd8PNyw8/T9cx/3fDzcv3Dduv3fUMb0cTP8+JPKjWeQpKIiFS7xbsTeeWnfZzMLqiUkOPh6lxGwPmrwGPd7u/lhq+nq0aFpEwKSSIiUq0OJGcy5fvdFBZbbNsqGnL8PK0hx9NNIUcqn0KSiIhUm7zCEh76ZieFZx4GO2tshEKO1FgKSSIiUm1e/mmv3cNg9awzqcm0RKiIiFSLJZFJfPvbmYfB3qyHwUrNp5AkIiJVLv5ULlPnRwLwwOB2DGivh8FKzaeQJCIiVaqoxMIjc3aSlV9Mr5AAHru6o9kliThEIUlERKrUeysPsfNYOr6errx/S0/c9DBYqSX0L1VERKrMpiMn+XhNNAAzbwonuJG3yRWJOE4hSUREqkRadgGPfbcLw4Bb+wYzMry52SWJlItCkoiIVDqLxWDK97s5kVVAhyYNeOG6bmaXJFJuCkkiIlLpPt8Yw68HU/FwdWb2hJ54uWuxSKl9FJJERKRS7TmewRvLDwDw3HVd6dzMz+SKRCpGIUlERCpNdkExD3+7g6ISg+HdmnL7pSFmlyRSYQpJIiJSaV5YFEVsWi4t/D15Y0w4Tk5OZpckUmEKSSIiUikW7DzO/B0JODvBe7f0JMDb3eySRC6KQpKIiFy0mJM5PLcgCoBHr+pI3zaNTK5I5OIpJImIyEUpLLbwyLc7ySks4dI2jXjoyvZmlyRSKRSSRETkosxafoA9CRkEeLvx3i09cHHWPCSpGxSSRESkwn49eIJPN8QA8ObYCJr7e5lckUjlUUgSEZEKOZGZz5S5uwG4e0AoQ7s2NbkikcqlkCQiIuVmsRhMnrubtJxCujT3Y+qIzmaXJFLpFJJERKTc/m9dNBuOnMTLzYXZt/bE002PHZG6RyFJRETKZcex07z98yEApt/QjfZNGphckUjVUEgSERGHZeQV8ci3OymxGFwf0YJxfVqZXZJIlVFIEhERhxiGwTML9nD8dB7Bjbx4bXR3PXZE6jSFJBERcch3v8ezJDIJV2cnZt/aCz9PN7NLEqlSCkkiInJBR05k8dKPewGYMrwTPYIDzC1IpBq4ml1AYWEhq1atIiUlhbCwMHr37l0pfY4dO8bWrVtxdXWlb9++tGzZ0m7/+vXr2bt3r922Ro0aMX78+It7QSIidUx+UQkPfbOT/CILl3cI4u+XtzW7JJFqYWpISk1N5corr6SwsJDw8HAef/xxbr75Zv7v//6vwn0Mw2DChAls3bqVPn36kJuby2233cbrr7/OY489ZjvO119/zS+//MLQoUNt2/4cpEREBF5fup8DyVkENXDn7fEROOuxI1JPmBqSpk2bBsDOnTvx9vZm+/btXHLJJVx//fWMHDmyQn0Mw2DUqFF8/fXXODtbryZ+9dVX3H333Vx//fW0a9fOdqyePXv+ZSATEanvVuxN5svNcQC8Pb4HTXw9Ta5IpPqYNifJYrEwd+5c7rnnHry9vQHo3bs3AwYMYM6cORXu4+zszC233GILSADDhw/HYrFw8OBBu+OdOHGCL7/8kkWLFpGYmFgVL1NEpNZKTM/jqXmRAPz9irYM6tjY5IpEqpdpISk+Pp6srCy6du1qt71r167nzBW6mD4AP/30Ey4uLoSHh9ttj4uLY/ny5bzzzju0a9eODz744C9rLigoIDMz0+5LRKQuKi6x8NicXWTkFRHRyp8pwzqZXZJItTMtJJ0NGAEBAXbbGzZseN7wUZE++/fvZ/LkyUyePJlWrUoXPbvnnnuIjo7mm2++Ye3atXz88cc8/vjjbN++/bw1z5gxA39/f9tXcHDwhV6miEitNHv1EX6LPUUDD1c+uLUn7q66GVrqH9P+1Xt5eQGQlZVltz0zM9N2Ke1i+xw9epRhw4Zx7bXXMnPmTLt9l156Ka6upVOy7rnnHoKCgvj555/PW/O0adPIyMiwfcXHx//FKxQRqZ22HE1j9urDALw2ujutA31MrkjEHKZN3G7dujXu7u7ExMTYbY+JiaF9+/YX3ScmJobBgwczYMAAvvrqK7s5Sufj6enJ6dOnz7vfw8MDDw+PCx5HRKS2Op1TyOPf7cJiwJherRjVQ3f9Sv1l2kiSm5sb11xzDXPmzMEwDAASExP59ddfueGGG2zt1q5dy9y5c8vVJzY2lsGDB9O/f3++/vprXFzsn05dUlJCbGys3bYNGzZw7NgxBgwYUBUvV0SkxjMMg6d+iCQpI5+2QT68PKqb2SWJmMrJOJs2THDgwAEGDBjAZZddRr9+/fjyyy9p0qQJq1evtl0KmzRpElu2bCEqKsqhPvn5+XTp0oXc3FxeeOEFu4A0ePBgOnfuTHFxMT179uSSSy6hW7duHDt2jM8++4wbb7yRr776yuFnEWVmZuLv709GRgZ+fn6V/waJiFSjLzfH8sKivbi7ODP/gQF0b+lvdkkiVcLRz29T10nq3LkzkZGRfPnll6SkpDBlyhTuvPNOu7lCgwcPpnXr1g73KSkpYfjw4QDs2bPH7nxhYWEAuLq6smPHDr7//nt27txJ06ZNWbZsGZdffnlVv2QRkRppX2Imry7ZD8DUEZ0VkEQweSSpttNIkojUBbmFxVw/ewPRqTlc1bkJn97Vx+ERdZHayNHPb93TKSJSz01fvI/o1Bya+nnw5rgIBSSRMxSSRETqsR93J/LdtnicnODdm3vQyMfd7JJEagyFJBGReir+VC7PzLfO3XxoSHsGtAsyuSKRmkUhSUSkHioqsfDwtzvJKiimd+uGPHpVB7NLEqlxFJJEROqhd345xK74dPw8XXn/lh64uujjQOTP9H+FiEg9s+HwSf5vbTQAb4wJp1XDsh8FJVLfKSSJiNQjJ7MLeHzuLgwDJlwawoiw5maXJFJjlXsxydjYWObOncu6des4fvw4AMHBwVxxxRWMHz/ebuFHERGpOSwWgyfm7iY1q4COTRvwwnVdzS5JpEZzeCTp6NGjjB07lg4dOvC///2Ppk2bcu2113LttdfSpEkTvvzyS9q3b8+4ceM4evRoVdYsIiIV8NmGGNYeSsXD1ZkPJ/TC083lwp1E6jGHR5L69+/P3//+d9566y1CQ0PLbBMbG8tnn31G//79SUlJqawaRUTkIkUeT2fWigMAvHB9Vzo29TW5IpGaz+HHkqSlpREYGOjQQcvTtjbTY0lEpDbILijmug/WE5uWy4juzfj4tl5aVVvqtUp/LMlfhR7DMDhy5AjZ2dkXbCsiItXr+YVRxKbl0jLAi5k3hSsgiTioQne3/f777zz44IO27ydMmECHDh1o1qwZ69evr7TiRETk4vyw/TgLdibg4uzE+7f0wN/bzeySRGqNCoWkKVOmMGHCBAAiIyNZtmwZ27Zt45lnnuHZZ5+t1AJFRKRijqZm8/yiKAAeu6oDfUIbmVyRSO1SoZC0fft2evXqBcAvv/zCTTfdRO/evXnkkUfYtWtXZdYnIiIVUFBcwsPf7iS3sIR+bRvxwJD2ZpckUutUKCT5+fnZbvP/8ccfGTJkCADp6emawCwitVZxiYWYkznkFZaYXcpFe2PZQfYmZtLQ2433bu6Ji7PmIYmUV7kXkwQYP348I0eOpGvXruzZs4frrrsOgOXLl3PttddWaoEiItXBMAwembOTpXuSAWju70looA9tGvvQJtCHNkE+hAb5ENLIG3fXmv2wgtUHUvh8YwwAb42LoJm/p8kVidROFQpJb731Fh06dCAuLo4ZM2bQsGFDAKKjo3nhhRcqtUARkerw/bbjtoAEkJSRT1JGPpuPptm1c3aCVg29CQ3yoW2QD6GB3rRp3IA2gT60bOhl+ohNSmY+U76PBODuAaFc1aWpqfWI1GYOr5Mk59I6SSJ1w7G0XEa8v46cwhKmjejM+D7BHD2ZQ+zJHGLTcmx/jjmZQ+5fXIpzd3EmuJEXbYIa0CbImzZBDQgN8qZNkA/N/Dyr/Nb7EovBHZ9tZVN0Gl2b+7HgwQF4uGpVbZE/c/Tz2+GRpHHjxvHKK6/QuXPnv2y3b98+XnzxRb7//nvHqxURMUmJxeDxubvIKSyhb5tGTLq8LS7OTvT2cad364Z2bQ3DIDWrwC40nf2KO5VLYbGF6NQcolNzzjmPl5sLrQO9advYx3oZL6j0q5GPe6UEqP9bG82m6DS83V2YPaGnApLIRXI4JPXr149+/frRs2dPrr/+enr37k3Tpk0xDIPk5GR+//13Fi9ezJ49e3j++eersmYRkUrzf2uj2R53mgYerrwzPuIvL5c5OTnRxM+TJn6e9Gtrv2huicUgMT2P2DRrgPpjkIo/nUdeUQkHkrM4kJx1znF9PV2tl+7+EJxCA63f+3s5tq7R9rhTvPPLIQCm39CNdo0blONdEJGylOtyW1paGv/85z+ZM2cOUVFRnO3q5OREWFgYt956K/fee2+9WXFbl9tEareohAxu/GgjxRaDt8dFMKZ3qyo5T1GJhfhTudZLd6k5Z4JULjEnc0jMyOOvfgoH+rjbJo23+VOI8nK3jhRl5BVx7fvrSUjPY1SPFrx3cw+tqi3yFxz9/K7wnKSMjAwSEhJwcnKiRYsW+Pv7V7jY2kohSaT2yi8q4brZGzhyItvU55nlF5UQl5Zru2xnu4yXlkNqVsFf9j17B152QTF7EjJoHejNTw9fhq+nVtUW+SuVPifpz/z9/etlMBKRumHmsgMcOZFNE18PXh8dZtrIi6ebC52a+dKpme85+7Lyi84JUEfP/Dkjr8h2Bx6Aq7MTH9zSUwFJpBJVOCRlZWXx888/c/ToUZ588kkA9u/fT+fOnTXMKyI12vrDqfxnUywAs8aG09DH3dyCzsPX043uLf3p3vLcX0hP5xQSk5ZDTKp10nivkAAiggOqv0iROqxCl9sOHDjA0KFDsVgsJCYm2uYm3XXXXQwfPtz2XLe6TpfbRGqf9NxChr+3jpTMAu7s35qXR3U3uyQRqWaOfn5XaNnYxx9/nDvuuIPjx4/bbX/kkUd46623KnJIEZEqZxgGzy6MIiWzgLaNfZg2oovZJYlIDVahy22bN2/m22+/PeeyWufOndm7d2+lFCYiUtkW7UpkSWQSrs5OvHdzD9vdYSIiZanQSJJhGBQUWO+6+GNQOnr0qCZzi0iNlJCex/OLogB45KoOhLcKMLcgEanxKhSShg0bxqxZs4DSkHTixAkeeughRowYUXnViYhUAovFYMrc3WTlF9MzJIAHBrczuyQRqQUqdLntnXfeYfDgwSxevBiLxcLll1/Ozp07adasGXPmzCnXsSwWC1u3biUlJYXu3bvTvn37Sulz6tQptm/fjqurKz169LA9hPdizy0itc/nG2PYfDQNLzcX3h3fA1eXCv1+KCL1TIVCUnBwMJGRkXzzzTds27YNi8XChAkTuOOOO2jQwPGl8DMyMrjmmms4duwYXbt2ZdOmTTz88MPMnDmzwn0Mw+CBBx5g8eLFdOvWjdzcXCIjI3nvvfeYOHHiRZ1bRGqfg8lZzFp+EIDnr+tKaJCPyRWJSK1hmOjBBx80OnbsaKSnpxuGYRjr1683AGPlypUV7lNSUmJ88sknRkFBga3Pxx9/bLi6uhpxcXEXde4/y8jIMAAjIyPD8RctItUmv6jYGP7uWqP10z8ZE7/4zbBYLGaXJCI1gKOf3xc15myxWMjOzj7ny8Fwxtdff83f/vY322Tvyy67jL59+/K///2vwn2cnZ257777cHcvXRxuzJgxFBcXExUVVeFzi0jt884vhziQnEWgjzszx4RroVsRKZcKhaSDBw8yZMgQvLy88PX1PefLEcePHyc9PZ3u3e0XcgsLC2PPnj2V1gdg5cqVODk50bVr14s6TkFBAZmZmXZfIlIzbTmaxr/WHQVgxk1hNPb1MLkiEaltKjQn6a677qJZs2YsWrSIgICACp04IyMDgEaNGtltDwwMJD09vdL6xMbG8thjj3H//fcTGhpa4eMAzJgxg+nTp593v4jUDJn5RTwxdzeGATf3CWZYt2ZmlyQitVCFQtLu3btZvnx5hQMSgIeH9be6P1+ey87OxtPTs1L6JCYmMnToUC699FLee++9izo3wLRp05g8ebLt+8zMTIKDg8/bXkTM8dLivSSk5xHSyJvnr+9qdjkiUktVKCSFhoZy4sSJiwpJISEhuLq6cuzYMbvtcXFxtG3b9qL7JCYmMmTIEDp27Mi8efNwc3Or0HH+yMPDwxawRKRmWronifk7EnB2gnfGR9DAo8LP8RaReq5Cc5Jefvll7rnnHjZs2EBSUhLJycl2X47w8PDgqquu4vvvv7dtO3nyJKtXr2bkyJG2bb///jvLly8vV5+kpCSGDBlC+/btmT9//jnBxtHjiEjtciIzn2cWWOcV3j+4HX1CG12gh4jI+TkZhmGUt9Pq1asZPXr0eScuO3rIXbt2cdlllzF69Gj69+/Pp59+ipOTE5s2bbIFm0mTJrFlyxbbnWkX6lNQUEDPnj1JS0tj1qxZdgGpb9++tpEiR859IY4+RVhEqp5hGNz9xe+sPZRK95Z+zL9/IO6uWjRSRM7l6Od3hcahH3jgAUaOHMkDDzxwUZfcevTowY4dO/j000/ZunUrEyZM4P777z8n2PxxtewL9SksLCQ8PByAZcuW2Z2vadOmtpDkyLlFpPb435Y41h5KxcPVmfdu7qGAJCIXrUIjSd7e3iQnJ9f70RONJInUDNGp2Yz8YD35RRZeur4rdw9sY3ZJIlKDOfr5XaFftTp06MDx48crXJyISGUpKrHw+He7yC+ycHmHIO7sH2p2SSJSR1Toctvtt9/O7bffzhtvvEH79u3PWcX27HpEIiJVbfaqw0Qez8Dfy403x0bg7KxVtUWkclToctuFlvavwCFrJV1uEzHXjmOnGfvJJiwGfDihJ9eFtzC7JBGpBap04vbhw4crXJiISGXIKSjm8e92YTHgxh4tFJBEpNJVKCS1b9++susQESmXV5fsJy4tlxb+nkwf1f3CHUREysnhkHR2naLu3bvb/nw+f35wrIhIZVq1P4VvfzuGkxO8NT4Cfy+3C3cSESknh0NSWFgYYJ1vdPbP51Nf5iSJSPU7mV3A0z9EAjDpsjYMaBdkckUiUlc5HJKSkpLK/LOISHUxDINp8/dwMruQTk19eWJYJ7NLEpE6zOGQ1KxZMyZNmsSnn35Ks2bNqrImEZEyzd0Wzy/7UnB3cebdm3vg6eZidkkiUoeVazHJzz77rKrqEBH5S3FpOUz/cR8ATwzrSNcWWnZDRKqWHm4kIjVecYmFyXN3k1tYQt82jZh0eVuzSxKRekAhSURqvH+uO8r2uNM08HDlnfERuGhVbRGpBuVeJ8nV9cJdiouLK1SMiMifRSVk8O4vhwCYfkM3WjX0NrkiEakvyh2SPvzww6qoQ0TkHPlFJTz23S6KLQbXhjXjpl4tzS5JROqRcoek++67ryrqEBE5x8xlBzhyIpsmvh68dmPYBZ8bKSJSmTQnSURqpPWHU/nPplgA3hwXQUMfd3MLEpF6RyFJRGqc9NxCpny/G4A7+7dmUMfGJlckIvVRuUJSXl5eVdUhIgJYV9V+dmEUKZkFtG3sw7QRXcwuSUTqqXKFJE9Pz6qqQ0QEgEW7ElkSmYSrsxPv3dwDL3etqi0i5tDlNhGpMRLS83h+URQAj1zVgfBWAeYWJCL1mkKSiNQIFovBlLm7ycovpmdIAA8Mbmd2SSJSzykkiUiN8PnGGDYfTcPb3YV3x/fA1UU/nkTEXPopJCKmO5CcyazlBwF4/rquhAb5mFyRiIhCkoiYrKC4hMfm7KKwxMJVnZtwyyXBZpckIgIoJImIyd75+RAHkrMI9HFn5phwraotIjWGQpKImGbL0TT+tf4oADNuCqOxr4fJFYmIlFJIEhFTZOYX8cTc3RgG3NwnmGHdmpldkoiIHYUkETHFS4v3kpCeR0gjb56/vqvZ5YiInEMhSUSq3dI9SczfkYCzE7x7cwQNPFzNLklE5BwKSSJSrVIy83lmwR4AHhjcnt6tG5lckYhI2WrEr2979uwhJSWFrl270qJFi0rrc+jQIQ4dOkT//v0JDAw8p39cXJzdNj8/P6644oqKvQgRuSDDMHhyXiTpuUV0b+nHI1d1MLskEamJigvh2GZI2gUDHzWtDFNDUnZ2NqNGjWL37t106NCBXbt28eyzz/Lcc89dVJ/169czffp0Dh48yPHjx/n1118ZPHiw3XE++ugjFi1aRO/evW3bWrdurZAkUoW+2hLHukOpeLg6897NPXB31WC2iJyRfQIO/wyHVkD0r1CYZd3efSz4tzSlJFND0vPPP09MTAwHDx4kMDCQX375hWHDhnHFFVecN6w40icxMZGnn36azp07ExISct7zDxw4kHnz5lXJaxMRe0dOZPP60v0ATBvRmfZNfE2uSERMZbFA0k449DMcXgGJO+33+zSGDsOgpNCc+jAxJBmGwVdffcXkyZNtl8KGDh1Kr169+PLLL8sMSY72ufnmmwE4fvz4X9aQlZXF6tWr8ff3p2vXrnh5eVXmSxSRM4pKLEyeu4v8IguXdwjizv6hZpckImbIz4Sjv54JRj9Dzgn7/S16Qofh0HEYNO8JzuaONpsWkhISEkhLSyMiIsJue48ePdi9e3el9fkrmzZt4qWXXiIxMZH09HQ+/vhjxo8ff972BQUFFBQU2L7PzMws9zlF6qPZqw4TeTwDfy833hwbgbOzVtUWqRcMA9KOWC+hHV4BcZvBUlS6390X2g2GjtdA+6Hg29S0UstiWkhKT08HoFEj+ztbAgMDbfsqo8/5jB49mlmzZuHn5wfAa6+9xh133EFYWBhdunQps8+MGTOYPn16uc4jUt/tOHaaD389AsBro7vTzN/T5IpEpEoVF0DcRuto0aHlcDrGfn9g+9LRopAB4OpuTp0OMC0kubtb35Tc3Fy77bm5ubZ9ldHnfIYPH273/TPPPMPbb7/NkiVLzhuSpk2bxuTJk23fZ2ZmEhysh3GKnE9OQTGPf7cLiwGje7bkunDH7l4VkVomM8l6+ezwz9ZJ10U5pfuc3SD0Mug43DrHKLCdeXWWk2khKSQkBBcXl3PmDcXHx9OmTZtK6+MoJycnAgICSE5OPm8bDw8PPDz0bCkRR726ZD9xabm08PfkpRu6mV2OiFQWSwkk7LBeQju0ApIj7fc3aAYdhlqDUdvB4FE7b9QwLSR5enoyaNAg5s+fz1133QVYL6etWrWKmTNn2tpFRkaSnp7OFVdc4XCfC7FYLGRmZhIQEGDbdnbdpF69elXOCxSp51buS+Hb347h5ARvjY/A38vN7JJE5GLkpUP06jMjRr9A7sk/7HSClr1LR4uahZs+6boymLoEwIwZM7jiiiu4//776d+/P//3f/9HaGgof/vb32xtPvjgA7Zs2UJUVJTDfY4fP86uXbtIS0sDYPPmzWRnZ9OxY0c6duxISUkJ/fr1Y/z48XTr1o1jx47xzjvvMGjQIMaNG1e9b4JIHbQrPp2p862/WU66rA0D2gWZXJGIlJthwMlD1nlFh362Lu5olJTu9/CDdldag1H7odCgsXm1VhEnwzAMMwuIjIzk//7v/0hJSSEsLIzHHnvMboRn9uzZHDhwgI8++sjhPqtWreLdd98951wTJkxgwoQJgHUE6l//+hc7d+6kYcOGXH755dxyyy04OTl+101mZib+/v5kZGTYJoCL1Gf5RSW8u/IQ/153FIsBnZv5svDBgXi6uZhdmog4oigfYjeUXkZLt38yBUGdrBOuOwyHkH7gUjtHiB39/DY9JNVmCkkipbbHnebJebs5mmqdsHljjxa8eH03GvrU3DtXRATISDgTin6GmLVQ9Iebo1w87CddN7q4+b81haOf3zXi2W0iUnvlFZbw9s8H+WxjDIYBTXw9eH10GFd3rVnrnYjIGZYSOL6tNBil7LHf79uidLSo7SBw9zGnzhpAIUlEKuy3mFM8NW83sWnW3zzH9GrFC9d1xd+7dg7Bi9RZuaesk64PrYAjKyHv1B92OkGrS6zBqOM10LQ7lGPqSV2mkCQi5ZZbWMys5Qf57+ZYDAOa+Xky46YwhnRuYnZpInJWzknY/yPsWwgx6+0nXXv6Q/urraNF7a8Gn0DTyqzJFJJEpFy2HE3jqXmRHDtlHT26uU8wz17XBT9PjR6JmO5sMNq7wDoB+4/BqHEX69yijsOhVV9wUQS4EL1DIuKQnIJi3lh+gC83W+92aeHvyYwx4QzqWPdu+xWpVf4qGDWPgG6joesoaNTWvBprKYUkEbmgjUdO8vQPkRw/nQfArX1DeObazvhq9EjEHDknYf9i2LuwjGDUA7rdqGBUCRSSROS8svKLmLHsAN9sPQZAywAvZo0NZ2B7LQ4pUu3sgtF6MCyl+2zB6MY6c5t+TaCQJCJlWncolak/RJKYkQ/AHf1a8/SIzjTw0I8NkWqjYGQq/bQTETuZ+UW89tN+vtsWD0BwIy/eGBOuR4uIVJfsVDjwxzlGCkZmUUgSEZtfD57gmfl7SDozenT3gFCeuqYT3u76USFSpbJTrSNG+xaeJxidnXytYFSd9JNPRMjILeLln/bxw47jAIQGejNrbAR92zQyuTKROkzBqMZTSBKp51buS+GZBXs4kVWAkxNMHNiGKcM64eWuh9KKVLq/CkYtelovoykY1RgKSSL1VHpuIdN/3MeCnQkAtA3y4c1x4fRurdEjkUp1NhjtXQBxGxWMahGFJJF6aMXeZJ5dEMXJ7AKcneDey9vy+NCOeLpp9EikUigY1QkKSSL1yKmcQl5cvJcfdycC0L5JA94cG07PkIYmVyZSB2SfKL1d/3zBqNuN0DDUnPqk3BSSROqJpXuSeH5hFGk5hTg7wX2D2vHIVR00eiRyMS4UjM5OvlYwqpUUkkTquJPZBby4aC9L9iQB0KmpL2+OCye8VYC5hYnUVgpG9YZCkkgdZRgGP0Um8eLivZzKKcTF2YkHBrfjoSvb4+Gq0SMRh5UUQcJ2OLoWjv4K8Vv/FIx6lT4rTcGoTlFIEqmDTmTl8/zCKFbsTQGgS3M/3hwbTveW/iZXJlILGAac2HcmFK2xjhYVZtu3UTCqFxSSROoQwzBYtCuRl37cS3puEa7OTjx0ZXseGNwed1dns8sTqbnSj5WGoph1kHPCfr9XQ2gzCNoOgnZXQcPWppQp1UshSaSOSMnM59kFe1i53/rDvVsLP94cG0HXFn4mVyZSA+Wesoaho2sgZi2cOmq/39ULWg+whqK2g6FpGDjrF436RiFJpJYzDIMfdiTw8o97ycwvxs3FiUeu7MB9g9vh5qIf6iIAFObCsc3WQHR0DSRFAkbpficXaNm7NBS1ugRcPUwqVmoKhSSRWiwpI49n5u/h14OpAIS19OetcRF0auZrcmUiJisphsSdELPGehktfiuUFNq3adylNBS1HgieGnUVewpJIrWQYRjM3RbPqz/tJ6ugGHcXZx4b2oG/X94WV40eSX1kGJB6sHSkKHYDFGTat/FraQ1EZ+cW+TYzo1KpRRSSRGqZhPQ8pv4QyfrDJwHoERzAm2PD6dBUo0dSz2QklIaio2shO9l+v2cAtLn8TDAaDIHtwMmp2suU2kshSaSWMAyDb3+L5/Wl+8kuKMbd1Zkpwzryt8va4uKsH/xSD+Sdto4QnQ1FaYft97t6Qki/0tGi5hHgrDXBpOIUkkRqgfhTuUydH8nGI2kA9G7dkFljw2nXuIHJlYlUoaJ8iN9SGoqSdtkv4ujkbF3h+mwoCr4U3DxNKlbqIoUkkRrMYjH4emscM5YdILewBE83Z6YM68Q9A9to9EjqHkuJNQidXa8ofisU59u3CepYGopCLwOvgOqvU+oNhSSRGio6NZupP0Tye+xpAPqGNuKNseG0CfIxuTKRSmIYkHbkzEjRGohdD/kZ9m18m5+ZaD3YOtnar4UJhUp9pZAkUsMUlVj49/qjvLfyMIXFFrzdXXhqeCfu7B+Ks0aPpLZLj7eGoZh11q/MBPv9Hv7WEaKzoSiooyZbi2lqREiKj48nJSWFjh074ufn2DoVjvRJSkoiOjqasLAw/P3LfmZVRc4tUlWiEjJ4al4k+5Ksty5f0bExr4/uTquG3iZXJlJB2SdKA1HMOjgdY7/fxd06l6jtYOtX8x7gUiM+mkTMDUn5+fncdtttLFu2jNatWxMXF8cbb7zBww8/fFF9tm3bxsyZM1m3bh2pqan8+uuvDB48+KLPLVJV8otKeH/VYf617iglFoMAbzeeH9mVm3q1xEm/RUttknvK+kDYmHUQsx5S99vvd3KxTrZuc4X19vzgfuCuXwKkZjI1JE2fPp3ffvuN6OhomjdvzsKFCxk9ejR9+/bl0ksvrXCfqKgobr75Zt58803atm1baecWqQq/xZxi6g+RHD2ZA8DI8Oa8dH03GvvqkQhSCxRkQdyZx33Erj/3cR84QbPu1nlFba6AkP5a2VpqDVND0hdffMH9999P8+bNAbjxxhvp3r07X3zxxXmDiiN97r77bgCOHz9eqecWqUxZ+UXMWn6Qr7bEAdDE14NXbuzO8G5aBVhqsKI8611nZ0eKEraDUWLfJqjTmZGiK6zzi7wbmVOryEUyLSQlJiaSkpJC79697bb37duXnTt3VlqfyjxOQUEBBQUFtu8zMzPP21bkr/x64ATPLthDYob19uZbLglm2rVd8PdyM7kykT8pLrQGoZh11pGisp6B1jD0TCg6c1u+HvchdYRpIenUqVMABAYG2m0PDAy07auMPpV5nBkzZjB9+nSHzyPyZ6dyCnnlp30s2Gm9oyekkTczbgpjYPsgkysTOePsWkUxZ+5AO7YZinLt2/i2KB0panM5BISYUqpIVTMtJLm5WX9jzs+3XygsLy8Pd3f3SutTmceZNm0akydPtn2fmZlJcHCww+eV+sswDH6KTOKlxXtJyynE2QkmDmzD5GEd8XbXnTxiIosFTuwrHSmK3QgFf1qryDvIGobOjhY1aqvb8qVeMO2nc3BwMM7OziQk2K+RkZCQQEhI2b+VVKRPZR7Hw8MDDw9NppXySc7I57mFUazcnwJAx6YNeGNMOD1DGppcmdRLZxdwPHtLfux6yE2zb3N2raKzI0WNu4Czszn1ipjItJDk7e3NgAEDWLx4MbfffjsAOTk5rFy5kpdeesnW7siRI2RlZdGzZ0+H+1TWuUUuhsViMOf3eGYs3U9WQTFuLk48OKQ9Dwxuj7urPnCkGp2Os1/AMSvJfr+bD7Tuf2ai9eV6MKzIGU6GYRgXblY11q5dy9ChQ3niiSfo378/s2fPJiYmhl27dtGggfXBnZMmTWLLli1ERUU53OfEiRMcOnSI1NRUbrrpJj744AN69uxJSEiIbaTIkeNcSGZmJv7+/mRkZGghSrETezKHqfMj2XLUOsetR3AAs8aG07Gpr8mVSb2QlXxmTtFaayhKj7Pf7+IBwX1Lb8tv2QtcdNOA1B+Ofn6bGpIANm7cyEcffURKSgphYWFMnTqVZs1K74x444032Lt3L19++aXDfZYtW8Zrr712zrkmTpzIxIkTHT7OhSgkyZ8Vl1j4fGMMb/98iIJiC15uLkwZ3om7B4TqgbRSdXJP2Y8UnTxkv9/ZFVr2Lh0pCu4Lbl7m1CpSA9SakFSbKSTJH+1PyuTpHyKJPG6d9DqwfSAzRocTEqjVhKWSGQYk74HDK+DQz3D8d85ZwLF5ROkdaCH9wEOjmCJnOfr5rdtqRC5SQXEJH60+wsdroim2GPh6uvL8yK6M69NKjxSRylOQDUfXWIPR4V/OnVfUuIv1gbChl0PoQPDSjQEiF0shSeQibI87zdM/RHLkRDYAw7o25ZUbu9PUz9PkyqROSIuGwz/DoRXW56H9cRFHN2/rA2E7DLN++bc0rUyRukohSaQCcgqKeevng/xnUyyGAUEN3Hl5VHdGdG+m0SOpuOJCOLbJegnt8Arrrfp/1DAUOgyHjsOg9WXgpjAuUpUUkkTKad2hVKbN30NCeh4AY3q14rmRXWjo4/iCpiI2Wcmlo0VH10Bhduk+Z1frA2E7DreGo6AOWsRRpBopJIk4KD23kFeX7GfeduuDk1sGePH6TWEM6tjY5MqkVrFYIHGHNRQdXgFJu+33+zSxXj7rOAzaDgFP3RQiYhaFJBEHLNuTxPOL9nIyuwAnJ7irfyhThneigYf+FxIH5KVD9GrriNHhXyD3pP3+Fr3OjBYNg+Y9tLq1SA2hn/Aif+FEZj4vLNrL8r3JALRr7MMbY8LpE9rI5MqkRjMMSD1wZrToZzi2BYyS0v0eftBuiPUSWoeh0KCJebWKyHkpJImUwTAMvt9+nFd/2kdmfjGuzk7cN6gdD13ZHk83Pa5BylCUZ13l+uzaRRnH7PcHdbJeQusw3LpukVa4FqnxFJJE/iT+VC7T5u9hwxHrJZHuLf14Y0w43Vr4m1yZ1Djp8aWhKGYdFOeV7nPxsD4c9uzdaA1DTStTRCpGIUnkjBKLwX83xfLmioPkFZXg4erM5KEd+dtlbXB10RwRAUqKIX5raTBK3W+/36/lmUnXw60rXbv7mFOniFQKhSQR4HBKFk/9EMnOY+kA9G3TiDfGhNMmSB9y9V7OSTiy0jq/KHoV5GeU7nNyhuBLS4NRk666RV+kDlFIknqtsNjCJ2ui+fDXwxSVGDTwcGXatZ259ZIQnPVA2vrJMKy35R/+xTpidHwbds9F82oE7a+2hqJ2V4K3JvGL1FUKSVJv7Y5P56l5kRxMyQLgys5NeG10d5r76+no9U5RnnVO0cGl1hGjPz8XrVnYmTvRhkGrPuCsyfsi9YFCktQ7eYUlvPPLQT7bEIPFgEY+7rx4fVduiGihR4rUJ9mp1pGig8usaxgV5Zbuc/OxPhet45nnovm1MK1METGPQpLUK5uiTzL1hz0cO2X9QBzVowUvXNeVwAYeJlcmVc4w4OQh62jRwWUQ/xt2l9H8WkGnEdDpGgi9HFz1b0KkvlNIknohp6CYmcsO8NWWOACa+Xny2ujuXNWlqcmVSZU6ezfa2WB0Ktp+f/MI6HSt9atZmCZdi4gdhSSp836PPcWU73cTl2YdPZpwaQjTRnTG11OL+dVJBVlwZJU1FB1eAXmnS/e5uFtvze80AjpeA/6tzKtTRGo8hSSps/KLSnj754N8uiEGw4Dm/p7MGhvO5R30QNo6JyMBDi2DA0shdj2UFJbu82ponXTd+Vrr3WgevubVKSK1ikKS1Em749N54vvdHDmRDcC43q14/vqu+Gn0qG4wDEiOtI4WHVxqvWX/jxq1Lb2MFnwpuOhHnYiUn35ySJ1SWGzhw9WH+WhNNCUWg8a+Hsy8KUxzj+qC4gKI3XBmftFyyDz+h51OENz3zMTrkRDUQfOLROSiKSRJnbE/KZMn5u5mX1ImANdHtODlG7rR0Mfd5MqkwnJPWRd1PLjUOs+oMKt0n5u39fJZpxHWy2kNdBlVRCqXQpLUesUlFv657ijvrTxEUYlBQ283XrmxO9eFa22bWikt+sxltGVwbDMYJaX7GjS1TrjuPNI6AdtNC3+KSNVRSJJa7ciJbJ74fje749MBuLpLU16/qTtNfD3NLUwcZymBhO3W0aIDS+HkQfv9TbqduYx2LbToCc562LCIVA+FJKmVLBaDLzbFMmv5AQqKLfh6uvLS9d24qVdLrZpdGxTmwtFfSx8DkpNaus/ZFVoPPDPx+hpoGGpamSJSvykkSa0TfyqXKd/vZmvMKQAu7xDEG2PCaRGgSy81WlYKHFpuvYx29Fcozi/d5+EHHYZag1H7q6y37YuImEwhSWoNwzD45rdjvLZkP7mFJXi7u/DsyC5M6Bui0aOayDDgxP7S1a4Tttnv9w+xrl3UaQSEDABXTbAXkZpFIUlqhaSMPJ6aF8n6wycB6BvaiLfGRRAS6G1yZWIn7zTErIPoXyF6FaQfs9/foteZy2gjoGk33aYvIjWaQpLUaIZhMH9HAi/9uJes/GI8XJ15cngnJg5sg7OzPmBNV1IEx7dZL59Fr7ZOwDYspftdPKDt4NLHgPg1N61UEZHyUkiSGis1q4BnFuzhl30pAEQEB/D2uAjaN2lgcmX1mGHAqaPWQBT9q3XU6I9rFwEEdYS2Q6xrGIVeBh76+xKR2kkhSWqkpXuSeHbBHk7nFuHm4sRjV3fkH1e0xdVFt39Xu9xTZy6hrbaOGP35EppXI+toUbsrod0QPTRWROqMGhGS0tLSSE1NJTQ0FE9Px9a3caTPX7U5fvw4J0+etNvm5eVFp06dKvYipFKczinkhcV7+XF3IgBdmvvx9rgIurbwM7myeqSkCI7/fma0aDUk7rS/hObsBiH9rIGo3ZXQLEJrF4lInWRqSCoqKmLSpEnMmTOHJk2akJGRwXvvvcfEiRMvqo8jbV599VXmzJlDaGiobVv79u2ZN29elbxWubBV+1OYOn8PqVkFuDg78cDgdjx8ZQfcXfUBXKUMA9KOnJlsvRpi10Nhtn2boE5nRoquhNYDdAlNROoFU0PSa6+9xs8//8zBgwcJDQ3lm2++4Y477qBnz5707Nmzwn0cPe7VV1+tUFQDZOYX8epP+5i7zfrA0naNfXhnfA8iggPMLawuyz0FR9ecmXD9K2TE2+/3Djwzr2iI9b/+LU0pU0TETE6GYRhmnbxly5ZMnDiRV155xbata9euDBkyhI8++qjCfRxpc99995GcnMysWbPw9/enadPyPyU+MzMTf39/MjIy8PPT5aCK2HjkJE9+v5vEjHycnGDSZW14YlgnPN1czC6tbikuhOO//eES2i7gD//ru7ifuYR2pTUUNQvXJTQRqbMc/fw2bSQpKSmJxMRE+vbta7e9X79+7Nixo8J9ynPcxYsXExkZSWpqKs2bN+ef//wnQ4YMudiXJg7ILSxm5rIDfLk5DoCQRt68NS6Cvm0amVxZHWEYcPJwaSiK3QBFOfZtGncpnWzdegC4+5hTq4hIDWVaSEpLSwMgMDDQbntgYOA5E6rL08fR4w4ePJhnnnmGkJAQCgsLmTx5MqNGjWLPnj20bt26zPMXFBRQUFBg+z4zM/OCr1POtS32FE98v5u4tFwAbu8XwrQRXfDxqBH3EdReOWkQs6b09vzMBPv93kGlk63bDga/FmZUKSJSa5j2qeTm5gZgFzrOfn92X0X6OHrcW265xfZnd3d33n33Xb788ksWLlzIo48+Wub5Z8yYwfTp0y/42qRs+UUlvPPLIf69/iiGAc39PZk1NpzLOzQ2u7TaqbgA4reWhqKk3dhfQvMovYTW7kpo2l2X0EREysG0kNSypfVp7UlJSXbbExMTCQ4OrnCfihwXrOGqSZMmxMfHn7fNtGnTmDx5su37zMzMvzymlIo8ns7kubs5csJ619S43q14/vqu+HmWHYilDIYBqQdL1yuK3QBFufZtmnQ7M1o0xPo8NHc9tkVEpKJMC0kNGjSgb9++LF26lAkTJgCQn5/PqlWrmDZtmq1dfHw8ubm5dOrUyaE+jrQxDIOioiLc3UsfqBkbG0tsbCydO3c+b80eHh54eHhU7htRxxUWW/hw9WE+WhNNicUgqIEHM28K4+qu5Z8oXy/lpJU+8iP6V8hKtN/v06T0DrS2g/XYDxGRSmTqJJCXX36ZkSNH0qVLF/r37897772Hr68v//jHP2xtpk+fzpYtW4iKinK4z4XaFBUV0adPHx566CG6devGsWPHmD59Ol26dOG2226r3jehDjuQnMnk73azL8k6d+u68Oa8Mqo7DX30tPfz+uNdaEdWlX0JrfWAP1xC00NiRUSqiqkhadiwYSxdupTZs2ezePFiwsLC2LBhA/7+/rY2ISEhpKenl6vPhdq4u7uzaNEi3n33Xb766isaNmzI3/72Nx5++GGHV/yW8ysusfCv9Ud595dDFJUYNPR245Ubu3NduCYKn+OPz0I7sqrshRybdreOErW/CkL6g5uXKaWKiNQ3pq6TVNtpnaRzRadm88Tc3eyKTwfg6i5Nef2m7jTxVfi0yc+wPgvtyCprOEqPs99vuwvtKut/fZuZU6eISB1V49dJkrrFYjH4z6ZY3lh+gIJiC74errx4QzfG9LJOpK/XLCWQsKN0zaLjv4NRUrrf9iy0M5fQtJCjiEiNoJAkFy3+VC5Tvt/N1phTAFzeIYg3xoTTIqAeXxbKOH5mpGgVHF0L+en2+wM7lIai0Mv0LDQRkRpIIUkqzDAMvv0tnteW7COnsARvdxeeubYLt10aUv9GjwpzIHbjmdGiVXDykP1+D39oO8g6r6jtEGhY9oKlIiJScygkSYUkZ+Tz1A+RrDuUCkDf0Ea8OS6c1oH15NEWFgukRFkDUfRqOLYFSgpL9zs5Q8s+1lDU7kpo0Qtc9L+biEhtop/aUi6GYbBwVwIvLtpLZn4x7q7OPDW8ExMHtsHZuY6PHmWfKJ1XFP0r5Jyw3+8fAu3PXEJrMwi8AkwpU0REKodCkjjsZHYBzy2IYvneZAAiWvnz9vgI2jfxNbmyKlJcAMc2lwaj5D32+918oM3lZ+5CuxIC22nNIhGROkQhSRyyPCqZZxfsIS2nEFdnJx69qgP3D26Hq0sdugvLMKxzic6uWRS38dzHfjSPKA1FwZeCqxbGFBGpqxSS5C+dzilk+o97WbjL+jiMTk19eefmCLq18L9Az1oi9xTErD1zJ9qvkHncfn+DZqV3obUbAj5B5tQpIiLVTiFJzuvnvck8syCKk9kFODvB369ox+NDO+Dh6mJ2aRVXUgwJ20oXckzcAYaldP8fH/vR/ipo0lWX0ERE6imFJDnH6ZxCXvpxL4vOjB61b9KAN8eG0zOkocmVVVDGcTiy0hqMjq6Fggz7/Y27nLkLbQiEDAB3b3PqFBGRGkUhSWwMw2DpnmReXBzFyexCnJ3gH4Pa8ehVHfB0q0WjR0X5cGyTNRQdWQmpB+z3ezU689iPM5fR/PRMOREROZdCkgCQkpnP8wuj+HlfCgAdmjTgzXER9AgOMLcwR5x9SOyRldavmPVQnFe638kZWl0C7a+2Trpu0QOca1HoExERUygk1XOGYfDd7/G8tnQ/WfnFuDo78cCQ9jw4pF3NnntUkA2x60uD0elY+/2+za2X0NpfDW0Hg1ctvVQoIiKmUUiqx+JP5TJ1fiQbj6QB1nWP3hgbTudm538ismkMA07sKw1FcZvBUlS639nNOuG6/dXWryZdNOFaREQuikJSPWSxGHz92zFmLN1PbmEJnm7OTBnWiXsGtsGlJq2anXsKjq4pfVBsVpL9/oah0H6oNRTpIbEiIlLJFJLqmWNpuTz1w262HD0FWJ+5NmtsOKFBNeCZa5YSSNxVOlqUsM3+9nxXL2hzxZnRoqusK1yLiIhUEYWkesJiMfhycyxvLD9IXlEJXm4uPH1NJ+7sH2ruM9eyUs6scL3S+t+8U/b7z96e3/5qCOkPbp7m1CkiIvWOQlINVVBcUmkTp4+mZvPUvEi2xZ0GoG+bRrw5NpzWgSaMHpUUQfxvpaNFyZH2+z38rBOtz44W+beq/hpFRERQSKpxMvOLmLF0P78eSGX1lEF4u1f8r6i4xMJnG2J455dDFBRb8HF3Yeq1Xbitb0j1jh6lHytds+joWijMst/fvEfphOtWfcDFrfpqExEROQ+FpBrG282FTdFpkJnAnN/imXhZmwodJzo1myfm7mZXfDoAl3cIYsZNYbRqWA2rSRflWR8Oe+TMZbSTB+33ewda1ytqf7V1MccGjau+JhERkXJSSKphXIuy+MH1Bfw89nLDus+4vV9r3F2dHe5vsRj8Z1Msbyw/QEGxBV9PV56/rivjerfCqapuiTcMSDtSegktdgMU55fud3KGVn1LL6E17wHOjr8mERERMygk1TSe/jTycsI5o4SBOStZuLMP4y8Jdqhr/KlcnpxXeufa5R2CmDU2nOb+XpVfZ36m/WKO6cfs9/u2+MNijoO0mKOIiNQ6Ckk1kHPvu2DJZG5x+ZV/rBnLmN6t/nL9oqISC19sjOH9lYfJKbTeufbsyC7cdmlI5Y0e5Z22LuAYt9E6UpQcaX97vou79e4zLeYoIiJ1hEJSTRQ2FuPn5+hQlEDAqV2s2NuZa8Oal9l0U/RJXly0l8MnsgG4JLQhb42LuPg71ywlkLD9D2sW7QAM+zYN25SGojaXg3sNWGtJRESkkigk1USe/jh1Gw27vuYWl1/5eE0fRnRvZjcqdCIzn1eX7Gfx7kQAGvm4M/Wazozt3arid65lJpaubh39K+Sn2+8P6gitB575GgD+LSv4AkVERGo+haSaqtedsOtrrnPZwssJyaw/fJIrOlrvAvtxdyLPLYwiI68IJye4/dLWPDGsIwHe7uU7R2EuHNtkDUTRq63PRvsjzwBoN+TMXWhXgV/Zo1kiIiJ1kUJSTRV8KQR1wvvkQW5w2czHa1oR0SqA5xdF2UaPwlr6M+OmMLq39HfsmJYSSNplDUVH10D8Vigp/EMDJ2jZ2zrhut1V1j+76J+IiIjUT/oErKmcnKyjST8/yy0uv3LD0au48u01pOUU4uLsxIND2vPwle1xc7nArfRZyWce+7Gq7Md++LU6s8L1ldB2CHg3qrKXJCIiUpsoJNVkEbfCypcI5yhdnWLZlxNKmyAf3hkfQc+Q89xSX5QHxzZbA1H0r5ASZb/fw8/6kNh2Q6yhqFFb3YUmIiJSBoWkmswnELpcB3sX8EjDzfzWZQhThne0f1RJSTEk7YaYtRCzzhqQ/riQI0CLnqXzivTYDxEREYfUiJCUn59Peno6TZo0wdnBlZgd6VNZbUzV607Yu4BrStZxzTX/BlcXSD1kHSk6usa6blFBpn0f3xbWx320G2K9lOYTZEblIiIitZqpqcBisfDoo48SEBBAp06daNGiBfPmzbvoPpXVpkZoMxgCQqAgA769Bd4Lg48ugeVPw6Fl1oDk6Q+dr4MRs+CBLTB5H9z4EYSNVUASERGpKMNEM2fONAIDA409e/YYFovF+OijjwxXV1cjKirqovpUVpsLycjIMAAjIyOjYm+Ao9bMMowX/Uq/Xm5sGP+9wTDWv2sYCTsNo6S4as8vIiJShzj6+e1kGIZxoSBVVVq3bs2tt97KzJkzbds6dOjAyJEjee+99yrcp7LaXEhmZib+/v5kZGTg5+fn2IuuiPwMWDYVvAKs84paDwB376o7n4iISB3m6Oe3aXOSTpw4wbFjxxgwYIDd9oEDB/L7779XuE9ltalRPP1h9CdmVyEiIlKvmDYnKTU1FYDAwEC77UFBQbZ9FelTWW3KUlBQQGZmpt2XiIiI1E2mhaSzd5IVFxfbbS8qKsLFxaXCfSqrTVlmzJiBv7+/7Ss4OPj8L1BERERqNdNCUqtWrQBITk62256cnEzLlmU/ONWRPpXVpizTpk0jIyPD9hUfH3/+FygiIiK1mmkhydfXl169erFixQrbtqKiIlatWsWgQYNs29LS0khMTHS4T2W1KYuHhwd+fn52XyIiIlI3mbqY5AsvvMDYsWPp3bs3/fv35+2338bFxYX777/f1ubpp59my5YtREVFOdynstqIiIhI/WXqYpKjRo1izpw5fPfdd9x6660UFBSwbt06goJKF0AMCgqyuwTmSJ/KaiMiIiL1l6nrJNV21bZOkoiIiFQaRz+/a+DDykRERETMp5AkIiIiUgaFJBEREZEyKCSJiIiIlEEhSURERKQMCkkiIiIiZTB1Mcna7uzqCXrQrYiISO1x9nP7QqsgKSRdhKysLAA96FZERKQWysrKwt/f/7z7tZjkRbBYLCQmJuLr64uTk1OFj5OZmUlwcDDx8fFalLKK6b2uPnqvq4/e6+qj97r6VOV7bRgGWVlZtGjRAmfn88880kjSRXB2dqZVq1aVdjw9NLf66L2uPnqvq4/e6+qj97r6VNV7/VcjSGdp4raIiIhIGRSSRERERMqgkFQDeHh48OKLL+Lh4WF2KXWe3uvqo/e6+ui9rj56r6tPTXivNXFbREREpAwaSRIREREpg0KSiIiISBkUkkRERETKoJBksrS0NH7//XeSk5PNLqVWS0hIYPfu3WRnZ5+3TUZGBtu2bSM+Pv6i2ojV9u3b2bRpU5n7cnJy2L59O0ePHj1vf0faCJw4cYIdO3aQm5tb5v6CggJ27NjBwYMHz3sMR9rUd9nZ2URGRrJv3z7y8/PLbFNcXMyuXbvYt2/feR9n4Uib+iYjI4ONGzeSlJR03japqan8/vvvnDhxosrblIshpnnhhRcMDw8Po2vXroaHh4fxt7/9zSgpKTG7rFpl2bJlRkREhNGiRQsjPDzc8Pb2NqZOnXpOuw8++MDw8vIyunTpYnh5eRk33XSTkZ+fX+42YrVo0SLD2dnZ8PDwOGff119/bfj6+hodO3Y0fH19jSFDhhjp6enlblPfpaenG2PGjDF8fHyMPn36GCEhIcaXX35p12bp0qVGYGCg0bZtW6Nhw4ZG7969jcTExHK3qe9effVVw8fHxwgLCzPat29vNGrUyPjqq6/s2mzYsMFo3ry5ERISYjRu3Njo2rWrceTIkXK3qU9iYmKMe++912jWrJnh4uJizJ49u8x2U6ZMsfssfPjhhw2LxVIlbcpLIckkCxcuNNzc3IyNGzcahmEYBw4cMPz9/Y3333/f5Mpql48++sjYvXu37fvNmzcbHh4exn//+1/bti1bthhOTk7G4sWLDcMwjISEBKNFixbGtGnTytVGrOLj441WrVoZDz/88Dkh6fDhw4abm5vxr3/9yzAMwzh9+rTRqVMn45577ilXGzGMq6++2ujVq5eRmppqGIZh5OTkGF988YVtf2pqquHr62u8/PLLhmEYRl5entGvXz9jxIgR5WpT3+3YscMAjAULFti2vfrqq4arq6uRmZlpGIZhZGdnG82aNTMeeeQRwzAMo7i42Bg+fLhxySWX2Po40qa+Wb58ufHPf/7TyMrKMvz9/csMSf/73/8MLy8vY/v27YZhGMbu3bsNb29v47PPPqv0NhWhkGSSG264wbjmmmvstk2aNMmIiIgwp6A6pF+/fsa9995r+/7vf/+70aNHD7s2zz33nNG0adNytRHrD/4rrrjC+PDDD41PPvnknJD0wgsvGM2bN7f77e3DDz80PD09jdzcXIfb1Hdr1641AGPTpk3nbfPxxx8b3t7eRk5Ojm3bvHnzDCcnJ9tIkSNt6rsVK1YYgJGcnGzb9uuvvxqAERcXZxiGYcydO9dwdnY2UlJSbG3WrFljAMaePXscblOfnS8kXXnllcbYsWPttt1yyy3GwIEDK71NRWhOkkl27txJ79697bb17duXqKgoioqKTKqq9svKyuLgwYO0b9/etu1873VKSortGrkjbQRefvllGjRowIMPPljm/p07d9KrVy+7Bz737duX/Px8Dhw44HCb+m7VqlUEBgbSv39/Dh06RFRU1DnzZHbu3EmXLl3w9va2bevbty+GYbBr1y6H29R3V155JcOHD2fixIksW7aMBQsW8MQTT/Dwww8TEhICWN/H4OBgmjRpYuvXt29f2z5H28i5zvez94/vWWW1qQiFJJOcOnWKwMBAu22BgYGUlJSQmZlpUlW13/3334+npyd/+9vfbNvO916f3edom/pu7dq1/Pvf/+bzzz8/bxu915UjMTGRxo0bc+211zJy5EjGjBlD8+bN+fLLL21t9F5XDldXVx566CEiIyN58sknefLJJykq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X36Z4uJiEhIS6NatG/3792fw4MHs3LmT1atXA9YHLm/fvp1PPvmE22+/HbCOxF1//fUkJCQQFBRkO88999zDsGHDFJJEKpshIlJNHnzwQSMgIMD44osvjJSUlDLbvPnmm0ZERESZ+/bs2WM0aNDAmDVrlmEYhvH6668bPXr0MDIzM21tHnvsMWPgwIHnreGll14yQkJCbOdPTU01QkNDjWnTptnarF+/3gCMvLw8h19bXFyc4e/vb6xZs8a27cUXXzQA48cff7RrO2jQICMgIMCIj4//y2MuWrTI8PPzs70+i8VitG3b1nj33XdtbXbu3GkAxoEDBxyuVUQco7vbRKTazJw5kzvuuIPJkyfTtGlT2rZty0MPPURycvIF+546dYpRo0YxatQonnzySQC++OILIiIiWLFiBd9//z1z584lMDCQzZs3k5+fX+Zx5syZw6RJk2jSpAlgHcm67777yrysdyH5+fls3LiRefPmsWnTJlq0aMFvv/1m16ZNmzZcd9115/QdPXo0rVq1Omf7yZMnWb16NXPnziU7O5vs7GwOHDgAgJOTExMnTuSLL76wtf/ss88YOHAgnTp1Knf9IvLXdLlNRKpNgwYN+OCDD3j33XfZs2cP69at46233mLJkiXs2bOHBg0alNmvuLiY8ePH06hRIz799FPb9tjYWIKCgpg3b55d+3HjxpGbm3vOJTKwziVq27at3bZ27dpx7NgxDMPAycnJodeyceNGbrrpJoKCgmjXrh3e3t6cPn2aEydO2LU738TvsrbPnj2badOmER4eTvPmzW1zs/54zHvuuYcXX3yRbdu2ERYWxjfffMObb77pUM0iUj4KSSJS7VxcXOjRowc9evTg0ksvpV+/fmzatOmcCclnPfHEE+zdu5dt27bZBR8/Pz9uvPFGnnrqKYfPHRQUxKlTp+y2nTp1isDAQIcDEsCTTz7J7bffzttvv23b1qdPHwzDsGt3vmP+eXtubi6PP/44CxYs4PrrrwcgOzub7777zu6YLVq04Nprr+Xzzz9n0KBBFBYW2k1iF5HKo8ttIlJtYmJiztl29rJYQEBAmX2++OIL/vnPf7JgwQJatmxpt++aa67h888/p7Cw0G57QkLCeWu47LLLmD9/vt22efPmcdlllznyEmySk5PtLnEdPnyYyMjIch3jj06ePElJSYndMf88QnbWpEmT+Pbbb/nkk08YP378eUfgROTiaCRJRKrN008/zYkTJ7jqqqsICQkhLi6OTz75hGuuuYbevXuf0z4pKYn777+fa6+9ltjYWGJjY4HSJQDeeOMNLr/8ci699FLuuusuXF1d2bBhA3l5eSxatKjMGl555RUuueQSxowZwzXXXMMvv/zC1q1b2bp1a7ley4033sj06dMpKCigqKiId999F29v73K/J2cFBwfTq1cv7rrrLiZNmsSRI0f47LPPcHY+93fZkSNH4u3tzdq1a3nttdcqfE4R+WsKSSJSbebOncvGjRv5+eef+fXXXwkKCuLjjz/mhhtuwMXFBbBfTNIwDG688UbAfikAFxcXxo8fT8uWLdm9ezdffvkl27dvx9fXlzFjxjBmzJjz1tCuXTt27drFv//9b9avX0+HDh144403aNOmja1N48aNufnmm201lWXWrFl06tSJrVu34uPjw1dffcWWLVsIDg62tenevXuZfa+88ko6d+5st83JyYlffvmFDz/8kLVr19KyZUs2bdrEyy+/fM4ImouLC9dddx1r165l4MCB561RRC6Ok/HnC+giIlKjWSwW2rVrx4MPPsiUKVPMLkekztJIkohILbJw4UKWLFlCbm4uf//7380uR6RO08RtEZFaZPny5bi4uPDzzz/j5+dndjkidZout4mIiIiUQSNJIiIiImVQSBIREREpg0KSiIiISBkUkkRERETKoJAkIiIiUgaFJBEREZEyKCSJiIiIlEEhSURERKQMCkkiIiIiZfh/N4G047/TOqEAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "plt.plot(sizeofarray, timings)\n", - "plt.xlabel(\"Size of array\")\n", - "plt.ylabel(\"Time(s)\")\n", - "plt.legend([\"Python\", \"Rust\"])\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Part 4: Semantic Segmentations As QuPath Json\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "execution": { - "iopub.execute_input": "2026-09-02T16:00:56.822408Z", - "iopub.status.busy": "2026-09-02T16:00:56.822324Z", - "iopub.status.idle": "2026-09-02T16:01:00.075588Z", - "shell.execute_reply": "2026-09-02T16:01:00.075063Z" - } - }, - "outputs": [], - "source": [ - "from pathlib import Path\n", - "\n", - "from tiatoolbox.utils.misc import make_valid_poly, save_qupath_json" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "execution": { - "iopub.execute_input": "2026-09-02T16:01:00.077332Z", - "iopub.status.busy": "2026-09-02T16:01:00.077131Z", - "iopub.status.idle": "2026-09-02T16:01:00.079081Z", - "shell.execute_reply": "2026-09-02T16:01:00.078740Z" - } - }, - "outputs": [], - "source": [ - "def poly_geo_func(coords: list) -> list:\n", - " \"\"\"Used solely for function semantic_segmentation_as_qupath_json.\"\"\"\n", - " geom = make_valid_poly(\n", - " feature2geometry(\n", - " {\n", - " \"type\": \"Polygon\",\n", - " \"coordinates\": coords,\n", - " }\n", - " ),\n", - " (0, 0),\n", - " )\n", - " return mapping(geom)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "execution": { - "iopub.execute_input": "2026-09-02T16:01:00.079889Z", - "iopub.status.busy": "2026-09-02T16:01:00.079810Z", - "iopub.status.idle": "2026-09-02T16:01:00.083258Z", - "shell.execute_reply": "2026-09-02T16:01:00.082943Z" - } - }, - "outputs": [], - "source": [ - "from pathlib import Path\n", - "\n", - "import dask.array as da\n", - "\n", - "\n", - "def py_semantic_segmentations_as_qupath_json(\n", - " layer_list: list,\n", - " preds: da.Array,\n", - " scale_factor: tuple[float, float],\n", - " class_dict: dict,\n", - " save_path: Path | None = None,\n", - " *,\n", - " verbose: bool = True,\n", - ") -> dict | Path:\n", - " \"\"\"Helper function to save semantic segmentation as QuPath json.\"\"\"\n", - " features: list = []\n", - "\n", - " # color map for classes\n", - " num_classes = len(class_dict)\n", - " cmap = plt.colormaps[\"tab20\"].resampled(num_classes)\n", - " class_colours = {\n", - " class_idx: [\n", - " int(cmap(class_idx)[0] * 255),\n", - " int(cmap(class_idx)[1] * 255),\n", - " int(cmap(class_idx)[2] * 255),\n", - " ]\n", - " for class_idx in class_dict\n", - " }\n", - "\n", - " tqdm_loop = tqdm(\n", - " layer_list,\n", - " leave=False,\n", - " desc=\"Converting outputs to QuPath JSON.\",\n", - " disable=not verbose,\n", - " )\n", - "\n", - " for type_class in tqdm_loop:\n", - " class_id = int(type_class)\n", - " class_label = class_dict[class_id]\n", - "\n", - " # binary mask for this class\n", - " layer = da.where(preds == type_class, 1, 0).astype(\"uint8\").compute()\n", - "\n", - " contours, _ = cv2.findContours(layer, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_NONE)\n", - "\n", - " contours = cast(\"list[np.ndarray]\", contours)\n", - "\n", - " # Convert contours to polygons\n", - " for cnt in contours:\n", - " if cnt.shape[0] < 3: # noqa: PLR2004\n", - " continue\n", - "\n", - " # scale coordinates\n", - " cnt_scaled: np.ndarray = cnt.squeeze(1).astype(float)\n", - "\n", - " geom = make_valid_poly(\n", - " feature2geometry(\n", - " {\n", - " \"type\": \"Polygon\",\n", - " \"coordinates\": scale_factor * np.array([cnt_scaled]),\n", - " }\n", - " ),\n", - " (0, 0),\n", - " )\n", - " poly_geo = mapping(geom)\n", - "\n", - " feature = {\n", - " \"type\": \"Feature\",\n", - " \"geometry\": poly_geo,\n", - " \"id\": f\"class_{class_id}_{len(features)}\",\n", - " \"properties\": {\n", - " \"classification\": {\n", - " \"name\": class_label,\n", - " \"color\": class_colours[class_id],\n", - " }\n", - " },\n", - " \"objectType\": \"annotation\",\n", - " \"name\": class_label,\n", - " \"class_value\": class_id,\n", - " }\n", - "\n", - " features.append(feature)\n", - "\n", - " qupath_json = {\"type\": \"FeatureCollection\", \"features\": features}\n", - "\n", - " # if a save directory is provided, then dump JSON into a file\n", - " if save_path:\n", - " return save_qupath_json(save_path=save_path, qupath_json=qupath_json)\n", - "\n", - " return qupath_json" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "execution": { - "iopub.execute_input": "2026-09-02T16:01:00.084032Z", - "iopub.status.busy": "2026-09-02T16:01:00.083953Z", - "iopub.status.idle": "2026-09-02T16:01:00.086135Z", - "shell.execute_reply": "2026-09-02T16:01:00.085836Z" - } - }, - "outputs": [], - "source": [ - "def rust_semantic_segmentations_as_qupath_json(\n", - " layer_list: list,\n", - " preds: da.Array,\n", - " scale_factor: tuple[float, float],\n", - " class_dict: dict,\n", - " save_path: Path | None = None,\n", - " *,\n", - " verbose: bool = True,\n", - ") -> dict | Path:\n", - " \"\"\"Helper function to save semantic segmentation as QuPath json.\"\"\"\n", - " _ = verbose\n", - " num_classes = len(class_dict)\n", - " cmap = plt.colormaps[\"tab20\"].resampled(num_classes)\n", - " class_colours = {\n", - " class_idx: [\n", - " int(cmap(class_idx)[0] * 255),\n", - " int(cmap(class_idx)[1] * 255),\n", - " int(cmap(class_idx)[2] * 255),\n", - " ]\n", - " for class_idx in class_dict\n", - " }\n", - "\n", - " features = rmisc.semantic_segmentations_as_qupath_json(\n", - " layer_list, preds, scale_factor, class_dict, class_colours, cv2, poly_geo_func\n", - " )\n", - "\n", - " qupath_json = {\"type\": \"FeatureCollection\", \"features\": features}\n", - "\n", - " # if a save directory is provided, then dump JSON into a file\n", - " if save_path:\n", - " return save_qupath_json(save_path=save_path, qupath_json=qupath_json)\n", - "\n", - " return qupath_json" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "execution": { - "iopub.execute_input": "2026-09-02T16:01:00.086919Z", - "iopub.status.busy": "2026-09-02T16:01:00.086841Z", - "iopub.status.idle": "2026-09-02T16:03:42.374752Z", - "shell.execute_reply": "2026-09-02T16:03:42.374244Z" - } - }, - "outputs": [], - "source": [ - "import time\n", - "from typing import cast\n", - "\n", - "import cv2\n", - "import dask.array as da\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "from shapely.geometry import shape as feature2geometry\n", - "\n", - "sizeofarray = []\n", - "timings = []\n", - "timings = []\n", - "num_patches = 10\n", - "num_classes = 10\n", - "max_patches = 1000\n", - "while num_patches <= max_patches:\n", - " python_times = np.empty(0)\n", - " rust_times = np.empty(0)\n", - " for _j in range(5):\n", - " rng = np.random.default_rng(42)\n", - "\n", - " # Exclude background\n", - " layer_list = list(range(1, num_classes))\n", - "\n", - " # Make the image reasonably large compared with number of patches\n", - " height = 64\n", - " width = 64\n", - "\n", - " # Start entirely as background\n", - " preds_np = np.zeros((height, width), dtype=np.int32)\n", - "\n", - " for _ in range(num_patches):\n", - " class_id = int(rng.integers(1, num_classes))\n", - "\n", - " # Rectangle dimensions, at least 3x3\n", - " rect_h = int(rng.integers(3, 10))\n", - " rect_w = int(rng.integers(3, 10))\n", - "\n", - " y = int(rng.integers(1, height - rect_h - 1))\n", - " x = int(rng.integers(1, width - rect_w - 1))\n", - "\n", - " # Only place the rectangle if the surrounding region is empty.\n", - " # The extra 1-pixel margin prevents polygons from touching.\n", - " region = preds_np[\n", - " y - 1 : y + rect_h + 1,\n", - " x - 1 : x + rect_w + 1,\n", - " ]\n", - "\n", - " if np.all(region == 0):\n", - " preds_np[\n", - " y : y + rect_h,\n", - " x : x + rect_w,\n", - " ] = class_id\n", - "\n", - " preds = da.from_array(\n", - " preds_np,\n", - " chunks=(32, 32),\n", - " )\n", - "\n", - " scale_factor = (0.5, 0.5)\n", - "\n", - " class_dict = {\n", - " 0: \"background\",\n", - " **{class_id: f\"class_{class_id}\" for class_id in range(1, num_classes)},\n", - " }\n", - " start_time = time.time()\n", - " python_object = py_semantic_segmentations_as_qupath_json(\n", - " layer_list, preds, scale_factor, class_dict, None, verbose=False\n", - " )\n", - " python_end_time = time.time() - start_time\n", - " python_times = np.append(python_times, python_end_time)\n", - " start_time = time.time()\n", - " rust_object = rust_semantic_segmentations_as_qupath_json(\n", - " layer_list, preds, scale_factor, class_dict, None, verbose=False\n", - " )\n", - " rust_end_time = time.time() - start_time\n", - " rust_times = np.append(rust_times, rust_end_time)\n", - " if python_object != rust_object:\n", - " print(\"Incorrect result\")\n", - " sizeofarray.append(num_patches)\n", - " timings.append([np.average(python_times), np.average(rust_times)])\n", - " if num_patches < step1:\n", - " num_patches += 10\n", - " num_classes += 10\n", - " else:\n", - " num_patches += 100\n", - " num_classes += 100" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "execution": { - "iopub.execute_input": "2026-09-02T16:03:42.376539Z", - "iopub.status.busy": "2026-09-02T16:03:42.376438Z", - "iopub.status.idle": "2026-09-02T16:03:42.417059Z", - "shell.execute_reply": "2026-09-02T16:03:42.416702Z" - } - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAG0CAYAAADO5AZFAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvctoD+AAAAAlwSFlzAAAPYQAAD2EBqD+naQAAbclJREFUeJzt3Xd4FFXfxvFveghpQOiE3juhCFJVQJCigIAURRE7TRSVxwcVLIjYEB6xgQIqRZSm9Cq9hhKa9BIgoaaQutl5/xjMa4RAAklms7k/15Xrypk9M/vbJWTvzJw5x8UwDAMRERERJ+FqdQEiIiIiWUnhRkRERJyKwo2IiIg4FYUbERERcSoKNyIiIuJUFG5ERETEqSjciIiIiFNRuBERERGnonAjIiIiTsXd6gJ2797NsmXLiI2NpUaNGnTp0gUPD49b7hMREcHPP/9MREQEtWrVomfPnri7W/5SRERExAFYeubm1Vdf5fnnn+fq1asAvPXWWzRs2JDo6Oh09zl8+DC1atViyZIleHh48Pbbb9OuXTtSUlJyqGoRERFxZC5Wri118OBBqlatmtq+ePEiRYsW5ccff6RXr1433adr165cvHiRNWvW4OrqyqlTp6hYsSKTJ0/m8ccfz9Dz2u12zp49i5+fHy4uLlnyWkRERCR7GYZBTEwMJUqUwNU1/fMzll7L+WewAYiPj8cwDAoUKHDT/snJySxatIjPP/889UWVLl2aVq1aMW/evAyHm7NnzxIcHHx3xYuIiIglTp8+TalSpdJ93PKBKgcPHuSrr74iOjqajRs38v7779OuXbub9j116hSJiYlUqFAhzfYKFSqwYcOGdJ8jMTGRxMTE1PbfJ6tOnz6Nv79/FrwKERERyW7R0dEEBwfj5+d3y36Wh5t8+fJRtmxZLl68iN1uZ8OGDcTGxuLr63tD37i4OIAbXpS/v3/qYzczZswYRo0adcN2f39/hRsREZFc5nZDSiy/FbxMmTIMHTqU9957j23btrFt2zY+//zzm/b9O9T8PQD5b1euXLllihsxYgRRUVGpX6dPn86q8kVERMTBWB5u/ikgIICqVaty8ODBmz5eunRpfH19b3j84MGDVK9ePd3jenl5pZ6l0dkaERER52ZZuElKSmL9+vVpth0/fpzQ0FDq16+fum3WrFmMHTsWAFdXV7p168YPP/xAQkICAHv27GHDhg306NEj54oXERERh2XZreDJyck89NBDxMfHU716da5evcrixYtp374906dPx8vLC4ABAwawefNmwsLCADh//jwtW7bE09OTevXqsWjRIjp06MDUqVMz/NzR0dEEBAQQFRWV7lkcu91OUlLS3b9QyTQPDw/c3NysLkNERBxMRj6/weJ5bgB27txJaGgo+fPnp27dujfcHr5ixQrOnz9P3759U7fFx8ezePHi1BmKmzVrlqnnvN2bk5SUxPHjx7Hb7Xf2ouSuBQYGUqxYMc1DJCIiqXJNuLHCrd4cwzA4deoUycnJt50kSLKeYRjExcURGRlJYGAgxYsXt7okERFxEBkNN5bfCu5obDYbcXFxlChRAh8fH6vLyZPy5csHQGRkJEWKFNElKhERyRSdlviXv9eo8vT0tLiSvO3vYJmcnGxxJSIiktso3KRDYz2spfdfRETulMKNpOvTTz/lt99+s7oMERGRTNGYGyfx/fffp66v5eHhQXBwMF26dKFatWoZ2n/ChAkUKVKEnj17pm5btGgRDRo0oGvXrtlSs4iISHbQmRsnsXbtWtatW0fjxo2pXbs2YWFh1KpVi7lz52Zo/6VLl7Jp06ZsrlJERCT76cyNEylevDgDBgwA4IUXXiA2NpbRo0fj4+PD2rVr+eCDD9L0/+mnnwgPD6dw4cLs2bOHEydOpO7/3nvvpfZbs2YNK1asICUlhe7duxMSEpLmOGFhYcyaNYvLly9Tu3ZtnnjiidQ7nsC8vFW2bFkKFix4y+OIiEjuFxYexfYTl3myaTnLatCZGydWs2ZNTp8+Tfny5RkzZkzqLM9gzsA8YsQI3N3dqVChAgUKFKB48eI0btyYxo0bp4aTH3/8kXfeeYdChQpx6dIlGjduzM6dO1OPs3jxYkJCQjh37hxly5Zl4sSJNGvWLM3szosWLWLw4MG3PI6IiORu+89G8+y07XScsJ7Rv+/n6IVYy2rRmZvbMAyD+OQUS547n4fbHd81lJKSwsqVK6lZsyaVKlWiRYsWTJkyhU8//RSA5cuXc/78eR5//HEKFy5McHAwFStWTD1z87eCBQuycuXK1Llmjhw5wtSpUwkJCcEwDAYPHszgwYP5+OOPAXjmmWcoV64c33zzDQMHDszQcUREJPc6eD6a8SsOszjsPAAuLtCpTgk83aw7f6JwcxvxySlUf2upJc+9f/SD+Hhm/J/o0KFDDBgwAJvNxubNm4mKiuKPP/4AzNAxbNgwxo4di4eHB1OmTKFjx44ULlz4lse877770kyiV6VKFc6cOQNAeHg4R44coVevXqmPBwYG0qFDB9auXZsm3NzqOCIikvv8FRHD+BWH+WPvOcAMNR1qFWfIA5WoVNTP0toUbpyIv78/jRs3xsPDg8cff5x777039fLSo48+yqBBg1i4cCGtWrVi/vz5zJkz57bH/OfYGQA3N7fUiQ4jIyMBCAoKStMnKCjohktOtzqOiIjkHkciYxi/8gi/7znL3ws4dahVnCGtK1HZ4lDzN4Wb28jn4cb+0Q9a9tyZ8c8Bxf/m7e1N3759mTJlCuHh4RQsWJD27dunPn4nl7+Cg4MBOHnyJGXKlEndfvLkSUqXLp3p44mIiOM6diGWL1YeZv7u/w817WoUY0jrSlQrnv46T1ZQuLkNFxeXTF0acmTPPPMMISEhHDp0iH79+qW5TFSwYEEuX76cqeMVLlyYFi1aMH78eJo1a4arqysHDhxg0aJFzJw5M6vLFxERC5y4eI0vVh5m3q5w7NdDTZvqRRnauhI1SgRYW1w6nONTWzKkdu3a1KtXj+3bt/PUU0+leezhhx+mb9++JCUl4evrm+ZW8Fv58ssvadu2LSEhIVSsWJEVK1bQu3dvunTpkh0vQUREcsipS3F8seowc0PDSbmealpXK8LQ1pWpWdIxQ83fFG6cRP/+/YmJibltv3r16uHt7U3lypXTbO/atSvbt29n9+7dXLt2jXz58vHKK6/cMJ6mT58+XLt2LbVdo0YNDh8+zKpVq7hy5QojR46kTp06afbJyHFERMQxnL4cx8RVR5iz80xqqLmvSmGGtq5MneBAa4vLIBfD+PvKWd4RHR1NQEAAUVFR+PunvU6YkJDA8ePHKVeuHN7e3hZVmD2io6MpU6YM//vf/+jdu7fV5dySM/87iIg4ojNX4vjf6iP8sv0MtuuhpmXlwgxtXYl6pQtYXJ3pVp/f/6QzN3nE8OHDWb58OeXLl6dHjx5WlyMiIg7i7NV4/rf6CLO3nyY5xQw1zSsFMbR1ZeqXcYxQk1kKN3lESEgIjRo1on379ri7659dRCSvOx+VwJdrjjBz62mSUuwA3FuhEC+3qUzDsgUtru7u6FMuj/jnRHsiIpJ3RUQnMGnNUX7eeookmxlqGpcvyMutK3NP+UIWV5c1FG5ERETygMiYBL5ac4yftpwk8XqoaVS2IEPbVOLeCkG32Tt3UbgRERFxYhdjE/l67VGmbz5JQrIZauqXKcDLrSvTtGKhO17D0JEp3IiIiDihS7GJfPPnMaZtOpm6AHS90oG83LoyzSsFOWWo+ZvCjYiIiBO5ci2Jb9YdY+rGE8QlmaGmTqkAhrapTKvKhZ061PxN4UZERMQJXI1L4tt1x/hhwwmuXQ81NUv6M6xNZe6rUiRPhJq/KdyIiIjkYlFxyUxef4wpG04Qm2gDoHpxf15uU5nW1fJWqPmbwo2T2L59OydOnADAw8ODUqVKUbt2bTw8PLLsOcLDw9mxYwedO3fOsmOKiMidiU5IZsr640xef5yYBDPUVC3mx9DWlXmwRtE8GWr+pnDjJCZOnMgff/xBy5YtsdlshIaG4u7uzoIFC6hRo0aWPMemTZsYMGAAV69ezZLjiYhI5sUkJPP9hhN8t+4Y0ddDTZWifgxtXYkHaxTD1TXvhpq/Kdw4kRo1ajBnzhwAkpKSuPfeexkyZAgrVqwA4MiRIxw/fpw2bdqk7hMREcGGDRvo2rVr6rbo6Gh27twJmDMb+/v7c+HCBTZv3kxycnLqc1StWpWaNWvm1MsTEcnTYhNtTN14gm/XHeNqXDIAlYr4MqR1JR6qWVyh5h8UbpyUp6cnbdu25dtvv03d9vvvv/Pdd98RFhaWui00NJQePXpgs5npf/Xq1XTr1o0qVarg6+vL0aNH+eKLLyhXrhwbNmwgOTmZmTNnAtClSxeFGxGRbHYt0cbUTSf49s9jXLkeasoXzs+QByrRsXYJ3BRqbqBwczuGAclx1jy3hw/cxTXTY8eOERSUuVknx4wZw9NPP824ceMAiIqKYsuWLdSoUYNXXnmFAQMGpJ65ERGR7JNoS2HqxhN8tfYYl68lAVAuyAw1neoo1NyKws3tJMfBByWsee7/nAXP/BnufuHCBebMmYPNZmPLli389ttvTJ8+PVNP6eXlxcmTJ4mPjydfvnwEBATQtm3bzFYuIiJ34UJMIs9N387OU1cBKFPIh8H3V+LhuiVwd3O1trhcQOHGiURGRjJz5kwSExPZuHEj7du3p0uXLpk6xkcffUT//v0pXLgwTZs2pWPHjjzzzDN4e3tnU9UiIvJPB85FM2DqdsKvxuPv7c5/O1ana72SCjWZoHBzOx4+5hkUq547E/45oDgiIoIGDRrwxhtv8OmnnwLg6uqK3W5Ps09CQkKadrVq1di0aRPnzp1j1apVvP/++yxdupTff//9Ll6IiIhkxIr9EQyZGcq1pBTKBeXnu34NqFDY1+qych2Fm9txccnUpSFHUbRoUT755BN69+7NM888Q7Vq1ShZsiTh4eEkJibi5eUFwNq1a9Psd+7cOYoXL07x4sXp06cPdrudIUOGAODr60tiYmKOvxYREWdnGAbfrTvOB4sPYBhwb4VCfNknhEAfT6tLy5UUbpxYjx49+PjjjxkxYgTz5s2jTZs2eHt789hjj9GlSxe2b9/O7Nmz0+zTt29fgoODadq0KSkpKXz22Wd069YNgFq1apGSksLIkSOpU6eObgUXEckCSTY7/523l9nbzwDQq1FpRj9cAw9dhrpjeuecRMOGDWnZsuUN2z///HM8PDw4d+4c/v7+bNmyhYoVK7JmzRqqVKnCggULUsMLwNKlS7n//vvZunUroaGhjBw5kkmTJgFQsmRJFi9ezMWLF5k1axa7d+/OsdcnIuKMLl9Lou/kLczefgZXF3irY3U+6FJTweYuuRiGYVhdRE6Ljo4mICCAqKgo/P390zyWkJDA8ePHKVeunAbRWkj/DiLi7I5ExtD/h+2cuhyHr5c7E3rX474qRawuy6Hd6vP7n3RZSkREJIet/esCA3/aSUyijeCC+ZjcryGVi/pZXZbTULgRERHJQVM3nmDUwn3YDWhYtgBf9a1PIV8vq8vKOpEH4NoFKNfCshIUbkRERHJAcoqd0Qv3M33zSQC6hZTig6418XJ3s7iyLBSxH6Z2gqRr8MR8KH2PJWUo3IiIiGSzqLhkXvp5J+uPXMTFBV5vV5XnWpTH5S6W2HE4EfvMYBN3CYrXgaBKlpWicCMiIpKNjl+8xtNTt3HswjV8PN34rGddHqxRzOqystb5vTC1M8RfhuJ14Yl5kK+AZeUo3KQjD95E5lD0/ouIM9h49CIv/LiTqPhkSgR4822/BtQoEWB1WVnr3B6Y1hnir0CJEHh8LuQLtLQkhZt/cXMzr30mJSWRL18+i6vJu+LizJXYPTw8LK5EROTOzNh6ipHzwrDZDeoGB/LNE/Up4udkU1uc3QXTHoaEq1CyAfT91fJgAwo3N3B3d8fHx4cLFy7g4eGBq6smUspJhmEQFxdHZGQkgYGBqWFTRCS3SLEbfLDoAJPXHwegc50SfPRobbw9nOz32dlQmPaIGWxKNTSDjbdjnJVSuPkXFxcXihcvzvHjxzl58qTV5eRZgYGBFCvmZNekRcTpxSQkM3hGKKsPXQBgWJvKDLq/onMNHAYI3wnTH4GEKCjV6HqwSX9SvZymcHMTnp6eVKpUiaSkJKtLyZM8PDx0xkZEcp3Tl+MYMHU7hyJi8HJ35ZMedehYu4TVZWW9MztgehdIjILgxtB3Dng51gSEloab5ORkZs+ezcaNG3F3d6dZs2Y8+uijt0y4kydPZvny5Wm2BQcHM27cuCytzdXVVdP+i4hIhmw/cZnnpu/g0rUkivh58e0TDagTHGh1WVnvzPbrwSYaSjeBPr84XLABC8ON3W6nevXqNG7cmCZNmhAXF8eQIUOYNWsWv/zyS7oBZ9u2bZw4cYKhQ4embgsMDMyZokVERP7lt51neOPXvSSl2KlRwp/v+jWgeIAT3pByeitM7wpJMVCmKfSeDV6+Vld1U5aFGxcXF1atWkVwcHDqtiZNmtCsWTN27txJ/fr10923VKlSPPbYYzlRpoiIyE3Z7QYfLzvEl2uOAtCuRjE+7VkHH08nHPFxagv82M0MNmWbQ+9Z4Jnf6qrSZWm4+WewAShTpgwAly9fvuW++/bto3///gQEBNC8eXO6du2abXWKiIj8W1ySjZdn7WLpvggAXrqvAq+0qYKrq5MNHAY4tfl6sInNFcEGwKHuc544cSIBAQE0atQo3T5ubm6EhITQuHFj/P39GTBgAN27d7/lcRMTE4mOjk7zJSIicifOXo3n0UmbWLovAk83Vz7rWYfhD1Z1zmBzcuP1S1Gx5kKYvWc7fLABB7pb6tdff2XcuHH8+OOPBASkf5/86NGjKVSoUGq7c+fONGzYkIULF9KpU6eb7jNmzBhGjRqV5TWLiEjesuv0VZ6Ztp0LMYkUyu/JN0/Up36ZglaXlT1OrIefekDyNSjfCh6bAZ4+VleVIQ5x5uaPP/6gT58+jB8/nl69et2y7z+DDUD9+vUpU6YMW7duTXefESNGEBUVlfp1+vTpLKlbRETyjoW7z9Lz601ciEmkSlE/5g9s6rzB5vg6+Km7GWwq3A+9ZuaaYAMOcOZm0aJFdOvWjXHjxjFw4MA7OkZMTMwtbx/38vLCy8vrTksUEZE8zDAMxq88zOcrDgPwQNUijO9VD18vyz9Cs8extfBzT7DFQ8XW0PMn8MhdU6NYeuZmyZIlqcFm0KBBN+3zzTffMHz4cMCcF2fWrFlpHv/888+5dOlSupekRERE7lRCcgqDZoSmBptnmpfjmycaOHGwWfOPYNMmVwYbABfDouWXY2JiKFKkCH5+ftx///1pHnvuuee47777ABgwYACbN28mLCwMu91Ov3792Lx5M1WrVuXUqVOcOnWKcePGMWDAgAw/d3R0NAEBAURFReHv7zjTRYuIiOOIjE7gmWnb2X0mCndXF97vUpOeDUtbXVb2OboKZvQCWwJUehB6Tgd3x7rqkdHPb8uip5eXF99///1NH/v7lnAwg86jjz4KmLMGT58+nTNnzrB7924KFChArVq18PNzvNkRRUQk9woLj+KZads5F5VAoI8HX/WtT+PyhW6/Y251ZAXM6A0piVC5HfSY5nDBJjMsO3NjJZ25ERGR9Czdd56hM3cRn5xChcL5mdyvIWWDHP/25zt2eAXMvB5sqjwE3X9w2GDj8GduREREHIlhGExae5SPlhwCoHmlICb2DiEgn4fFlWWjv5bBrD6QkgRVO8Kj34O7p9VV3TWFGxERyfMSbSmM+G0vv+0MB6BfkzKM7FgddzeHmDEle/y1FGb1NYNNtU5msHFzjiCncCMiInnapdhEnpu+g+0nr+Dm6sI7narzeJOyVpeVvQ4thlmPgz0ZqnWGR6c4TbABhRsREcnDDp2P4emp2zhzJR4/b3e+7BNC80qFrS4rex38A2b3M4NN9Ueg23dOFWxA4UZERPKo1QcjGTQjlNhEG2UK+TC5X0MqFvG1uqzsdWAh/PIk2G1Qoyt0/RbcnC8KON8rEhERuQXDMJi8/jgfLDqA3YDG5QsyqU99CuTP/QNpb2n/ApjzlBlsaj4KXb52ymADCjciIpKHJNnsvL0gjBlbzTUGH2sYzOiHa+Lp7sQDhwH2zYM5/cFIgVo94JFJThtsQOFGRETyiKtxSTz/4w42H7uMiwu8+VA1nm5W7pZrEzqFsN/g1wFmsKn9GDzyJbi6WV1VtlK4ERERp3f0QixP/7CNE5fiyO/pxoTe9bi/alGry8p+e+fAb8+awaZOL3j4f04fbEDhRkREnNzGIxd5/scdRCfYKBmYjylPNqRKsTywbM+eX2Dus2DYoW4f6DwhTwQbULgREREnNnPrKf47Lwyb3aB+mQJ8/Xh9gnwdc2mBLLVnNsx9zgw29R6HTl+Aq5OPK/oHhRsREXE6drvB2CUH+frPYwA8XLcEY7vVxtsjD5y52D0T5r1gBpuQJ6Dj+DwVbEDhRkREnExcko2hM3exbH8EAC+3rszgByo6/8BhgF0/w7wXAQPqPwkdPstzwQYUbkRExIlERCfw9NRthIVH4+nmyrjutXm4bkmry8oZoT/C/IGAAQ36w0Of5MlgAwo3IiLiJPadjeLpH7ZzPjqBgvk9+ebx+jQoW9DqsnLGzmmwYDBgQMMB8NDHkBfOVKVD4UZERHK9FfsjGDwzlLikFCoW8WVKv4aULuRjdVk5Y8cPsHCI+X2j56D92DwdbEDhRkREcrG/l1J4f9EBDAOaVQzif31CCMjnXAtBpmv7FPj9ZfP7e16AdmPyfLABhRsREcmlklPsvLNgHz9tOQVA73tKM6pzDTzc8sg4k23fwR+vmN83fhEe/EDB5jqFGxERyXWiE5J56aedrDt8MW8tpfC3rd/ColfN75sMhLbvKdj8g8KNiIjkKqcvx9H/h20cjowln4cbX/SqR5vqeWAphb9t+RoWv2Z+f+9gaDNaweZfFG5ERCTX2HHyMs9O28Gla0kU9fdicr+G1CwZYHVZOWfzJFjyhvl906HQ+h0Fm5tQuBERkVxh/q5whs/ZQ5LNTo0S/kzu15BiAd5Wl5VzNv0Plv7H/L7ZMHjgLQWbdCjciIiIQzMMgy9WHuGzFX8B0KZ6UcY/Vhcfzzz0EbZxAiz7r/l981fh/v8q2NxCHvrJEBGR3CYhOYU3ft3DvF1nAXi2RXleb1cVN9c89MG+YTwsf8v8vuXr0GqEgs1tKNyIiIhDuhSbyHPTd7D95BXcXF149+Ga9L6ntNVl5az1n8GKd8zvW42AVm9YWk5uoXAjIiIO50hkLP1/2Mapy3H4ebszqU99mlUKsrqsnHPpKKx6D/b9ZrZb/QdavW5tTbmIwo2IiDiU9Ycv8sJPO4hJsBFcMB/fP9mQikX8rC4rZ8Sch7Ufwc6pYLcBLub4mhavWl1ZrqJwIyIiDmPG1lP8d14YKXaDBmUK8PXj9Snk62V1WdkvIcocW7N5EiTHmdsqtTXviCpWy9raciGFGxERsVyK3WDskoN88+cxAB6uW4Kx3Wrj7eFmcWXZLDkBtn0L6z6B+CvmtlINofUoKNvU2tpyMYUbERGxVFySjSEzd7F8fwQAL7euzOAHKjr3UgopNtg9A9aMgehwc1tQFfNMTdUOuhvqLinciIiIZc5HJTBg2jbCwqPxdHdl3KO1ebhuSavLyj6GAQd/h5XvwsVD5jb/UnDfCKjTC1yd/ExVDlG4ERERS4SFR/H01G1ERCdSKL8n3zxRn/plClpdVvY5sd68rfvMNrOdr4A5IV/DAeCRh2ZazgEKNyIikuOW749g8IxQ4pNTqFjEl++fbEhwQR+ry8oe5/bAylFwZIXZ9vCBxi9C08HgnYfWxcpBCjciIpJjDMNg8vrjvL/oAIYBzSsFMbF3CAH5PKwuLetdPg6r34e9v5htV3eo/yS0GA5+xSwtzdkp3IiISI5ITrHz1vx9zNh6CoDe95RmVOcaeLi5WlxZFouNNOeq2fH99blqgJrd4L43oVAFa2vLIxRuREQk20XFJ/PSTztZf+QiLi7w5kPVeLpZOee6Iyoh2lzgctP/IPmaua3CA9D6bShex9ra8hiFGxERyVanLsXRf+o2jkTG4uPpxvjH6tGmelGry8o6yQmwfTL8+THEXza3lawPrd+Bci0sLS2vUrgREZFss+PkZZ6ZtoPL15Io5u/Nd/0aULOkkwyitafA7pnmXDVRp81thSqZc9VU66S5aiykcCMiItli/q5whs/ZQ5LNTo0S/kzu15BiAU5wy7NhwKHFsHI0XDhgbvMrYa7YXbcPuOmj1Wr6FxARkSxlGAbjVx7m8xWHAWhTvSjjH6uLj6cTfOSc3GjOVXN6i9n2DoTmw6DRs+CRz8rK5B+c4CdNREQcRUJyCq//uof5u84C8GyL8rzeripurrn8Ek3EPlgxCg4vNdvu+aDx89B0KOQLtLIyuQmFGxERyRKXYhN5dvoOdpy8grurC+8+UpNejUpbXdbduXICVo+BPbMAA1zcIOQJaPk6+Be3ujpJh8KNiIjctcMRMfSfuo3Tl+Px83bnq771aVoxyOqy7lzsBVj3MWybDPZkc1uNLnDffyGoorW1yW0p3IiIyF1Zf/giL/y0g5gEG6UL+jDlyQZULOJndVl3JjEGNk6ETRMhKdbcVr4VPPA2lAyxtDTJOIUbERG5Yz9vOcXI+WGk2A0alCnA14/Xp5Cvl9VlZZ4tEbZ/D3+Og7iL5rbidc25aircZ2VlcgcUbkREJNNS7AZjFh3gu/XHAXikbgk+7FYbbw83iyvLJHuKufbT6vfhqrksBAUrwAMjodrD4OpkS0PkEQo3IiKSKdcSbQyZuYsVByIAeLl1ZQY/UDF3LaVgGPDXUnOumsh95jbfYtDqdaj3OLg54UKeeYil4SYqKorvvvuOjRs34u7uTrNmzXj22Wfx8rr1Kc0tW7bw5ZdfEhERQa1atXjttdcoXLhwDlUtIpJ3nYuKZ8DU7ew7G42nuyvjHq3Nw3VLWl1W5pzaAivehlObzLZXADQbCvc8D54+lpYmWcOy820pKSnUqVOH8+fP06dPHzp16sTEiRNp3749KSkp6e63fv16mjdvTuHChXnmmWfYsWMHTZs25dq1azlYvYhI3rPyQAQPjV/HvrPRFMrvyYxn7sldwSZiP8zoBVPamsHG3RuaDoEhu8yJ+BRsnIaLYRiGVU8eFRVFQMD/rzESGhpKSEgImzZtonHjxjfdp2XLlhQpUoRffvkFgNjYWIoXL867777L0KFDM/S80dHRBAQEEBUVhb+//12/DhERZ5ZkszN2yUEmXx9fU7OkP5P61Ce4YC4JA3GXYflICP0Jc64aV6jXF1q+AQG5KJxJhj+/LR0p9c9gAxAYGAhAXFzcTfvHxcWxfv16OnfunLrN19eX1q1bs2zZsmyrU0Qkrzp56RqPfrUxNdg8eW9Zfn3h3twRbAwD9vwCExtA6I+AYS5o+eIW6DxBwcaJOdSA4o8++ogiRYpwzz333PTxM2fOYLfbKVky7Q9kyZIlWb16dbrHTUxMJDExMbUdHR2dNQWLiDix3/ecZcSve4lJtBGQz4Nxj9ambY1iVpeVMVdPwe/D4Mhys124GnQaD6Vv/vkizsVhws3XX3/Nd999x8KFC8mfP/9N+yQlJQGQL1/axcl8fHxSH7uZMWPGMGrUqKwrVkTEiSUkpzBq4X5mbDVvja5fpgBf9KpHycBcsDCkPQW2fgMr34Xka+DmCS1eM8fWuHtaXZ3kEIcIN1OnTmXQoEH8+OOPtGvXLt1+BQoUAODSpUtptl+6dCn1sZsZMWIEw4YNS21HR0cTHBx8l1WLiDifwxExDPw5lEMRMbi4wIutKjC0dWU83HLBfC8R+2DBIAjfYbZLN4FOX0DhytbWJTnO8nAzffp0nn32WaZNm0bPnj1v2bdkyZIUKVKEnTt30rFjx9Tt27Zto0mTJunu5+Xlddvby0VE8jLDMPhl+xneXrCP+OQUgnw9+axnXZpXygXTbCQnmDMLb/gc7Dbw8oc2oyDkSU3Cl0dZ+q/+008/MWDAAKZOncpjjz120z7jxo3jqaeeSm0/+eSTfPfdd0REmJNHLVy4kL179/Lkk0/mRMkiIk4nNtHGy7N28dqve4hPTqFZxSAWDWmeO4LNiQ3wVVNzkUu7Dap2hJe2QIP+CjZ5mGVnbqKioujXrx8BAQF89dVXfPXVV6mPDR8+nA4dOgBw6NAhtm3blvrYO++8w4EDB6hYsSLlypXj8OHDfPrpp7c8cyMiIjcXFh7FoBmhHL94DTdXF4a1qcwLLSvg6urgsw3HXzUn4tvxg9n2LQoPfQzVO99qL8kjLAs3Pj4+rFix4qaPValSJfX74cOHp7m7KV++fCxYsIBjx44RERFBlSpVKFiwYLbXKyLiTAzDYOrGE3yw6CBJKXZKBHgzvlc9GpbNBb9P9y+ARcMh9rzZDukHbUZDvkBLyxLHYekkflbRJH4ikpddjUvitTl7WLbfvLzfulpRPu5em0AfB7+bKPocLHoVDv5utgtWgM5fQNlm1tYlOSajn9+WDygWEZGcs+PkZQbP2EX41Xg83FwY0b4aTzUt69iLXtrtsHMqLH8LEqPB1d28tbvFa+DhbXV14oAUbkRE8gC73eCrP4/yybK/SLEblCnkw8ReIdQqFXD7na108TAsGAynNprtEiHm7MLFalpblzg0hRsRESd3ISaRYbN3se7wRQA61SnBB11q4uftYXFlt2BLgo3jYe1HkJIEHj5w/0i45zlwdbO6OnFwCjciIk5sw5GLDJ21iwsxiXh7uPJOpxr0bBjs2Jehzmw3J+OL3G+2K7aGDp9CgTLW1iW5hsKNiIgTsqXY+XzFYf635giGAZWK+PK/PiFULupndWnpS4yFVe/Clq8BA3wKQbuxUOtRcOQwJg5H4UZExMmci4pn8IxQtp24AsBjDYN5u1MN8nk68OWcv5bBH8Mg6rTZrv0YPPgB5C9kbV2SKynciIg4kRX7I3h1zm6uxiXj6+XOB11r0blOCavLSl/sBVjyBoTNMduBpaHj51DxAUvLktxN4UZExAkk2ex8uPggUzYcB6BWyQAm9KpH2aD8FleWDsOA3TNh6QiIvwIurtD4RbjvP+DpoDVLrqFwIyKSy528dI2BP4eyNzwKgP5Ny/F6+yp4uTvoZajLx+H3l+HYarNdtJY5GV/JEGvrEqehcCMikost2H2W//y2l9hEG4E+Hox7tA5tqhe1uqybS7HBlkmw6n2wxYO7N7R8He4dBG4OfFu65DoKNyIiuVB8Ugqjf9/HjK3mANwGZQrwRa96lAjMZ3Fl6Ti325yM79wus122OXQaD4UqWFqWOCeFGxGRXOZwRAwv/byTvyJicXGBl1pVZGjrSri7uVpd2o2S42HNh7BxAhgp4B0Abd+Deo/r9m7JNgo3IiK5hGEY/LL9DG8tCCMh2U6Qrxef96xLs0pBVpd2c8fWwsIhcMUc5Ez1R6D9R+DnoJfNxGko3IiI5AIxCcn8d14Y83edBaB5pSA+7VGXwn5eFld2E3GXYflICP3RbPuVgA4fQ9UO1tYleYbCjYiIgwsLj2Lgzzs5cSkON1cXXmlbmedbVMDV1cEu6xgG7JsLi1+DaxfMbQ0HwANvg7e/tbVJnqJwIyLioAzD4IeNJxiz6CBJKXZKBHjzRa96NChb0OrSbhR1Bv54Ff5abLaDqpi3d5dubG1dkicp3IiIOKCrcUkMn7OH5fsjAGhTvSjjHq1NoI+nxZX9i90O2yfDincgKRZcPaD5K9B8GLg74CUzyRMUbkREHMz2E5cZPCOUs1EJeLq58p+HqtLv3rKOt5J35EFYOBhObzHbpRqZZ2uKVLO2LsnzFG5ERByE3W4wae1RPl3+Fyl2g7KFfJjYO4SaJQOsLi0tWyKs+xTWfQL2ZPD0hdbvQIOnwdUBb0eXPEfhRkTEAVyISWTY7F2sO3wRgIfrluD9LrXw9XKwX9OnNpuT8V08ZLYrt4MOn0BAKWvrEvkHB/tfIyKS96w/fJGhs3ZxMTYRbw9XRj9ck+71SznWZaj4K7D8bdg51WznL2zOWVOjiybjE4ejcCMiYhFbip3PVxzmf2uOYBhQpagfE3vXo1JRP6tL+3+GAWG/wpI3/v/27np9oc274OOAd22JoHAjImKJg+ejeXNuGDtOXgGgV6PSvN2pOt4eDrSS9+Vj8McrcHSV2Q6qDB0/h7JNLS1L5HYUbkREclBUfDKfLf+L6ZtPkmI38PNy54OutehUp4TVpf0/WxJsmgBrPwJbArh5QYvh0HSwbu+WXEHhRkQkB9jtBr/sOM1HSw5x6VoSAO1rFuPNDtUoVcDH4ur+4dRmWDgULhww2+VaQsfPtHq35CoKNyIi2WzX6au8PT+M3WeiAKhYxJd3OtVwrAUv46+YE/Ht+MFs+xSCB8dA7R4aMCy5jsKNiEg2uRibyEdLDjJ7+xkAfL3cGdq6Ev3uLYuHm4PMB5M6YHgEXIs0t2nAsORyCjciIlnMlmJn2qaTfLbiL2ISbAB0CynF6+2rUMTP2+Lq/uHy8esDhlea7aDK5iWoss2srUvkLinciIhkoU1HL/HOgn0ciogBoGZJf0Z1rkn9MgUsruwfUpJh4wRYO/YfA4ZfhaZDNGBYnILCjYhIFjh7NZ73Fx3gjz3nACjg48HwB6vSs2Ewbq4ONGbl1Bb4fShE7jfb5VpAh88gqKKlZYlkJYUbEZG7kGhL4bt1x5m46gjxySm4ukCfe8rwStvKjrWCd/xVWDkKtk8x2z6F4MEPoHZPDRgWp6NwIyJyh1YeiGD07/s5eSkOgIZlCzCqc02ql/C3uLJ/MAzY9xssfkMDhiXPyHS4OXHiBLNnz+bPP//kzBnzDoDg4GBatGhBjx49KFOmTJYXKSLiSI5fvMbohftYfchcjqCInxdvdqhG5zolHGs9qCsnzAHDR1aY7UKVoNPnGjAsTs/FMAwjIx2PHTvGa6+9xvz586lWrRoNGzakaNGiAERERLB161YOHjzII488wtixYylfvny2Fn43oqOjCQgIICoqCn9/B/oLS0QcWlySjYmrjvDduuMkpdjxcHOhf7NyDLq/kmOt3p2SDJsmwpqxYIsHN09o/io0G6oBw5KrZfTzO8P/G5s0acKzzz7Lxx9/TNmyZW/a58SJE0yePJkmTZoQERGR6aJFRByRYRj8vuccHyw6wLmoBABaVC7M252qU6Gwr8XV/cvpreYMw5H7zHbZ5ubt3UGVLC1LJCdl+MzNpUuXKFSoUIYOmpm+VtCZGxHJqIPno3lnwT42H7sMQHDBfIzsUJ021Ys61iWo+KuwcvT1AcMG5CtoDhiu85gGDIvTyPIzN7cKK4ZhcPToUYoVK4avr69DBxsRkYz49wKXXu6uvHRfRZ5tUd6xVu42DNg3F5a8AbHXz5jX7WMOGM6v38WSN93R/N/btm3jpZdeSm337t2bSpUqUaxYMdatW5dlxYmI5DS73WDWtlPc//Eafth4ghS7QfuaxVj5SksGP1DJsYLNlRPwU3eY85QZbApVgn6/wyNfKthInnZHI+BeffVVPvjgAwD27NnD4sWL2b59O0uXLuXNN9/kzz//zNIiRURyQq5Y4BKuDxj+H6z58B8Dhl+BZi9rwLAIdxhuduzYQUhICADLly+na9eu1K9fnypVqvDhhx9maYEiItktVyxw+bfT28wZhiPCzLYGDIvc4I7Cjb+/P8eOHaNGjRosXLiQp59+GoCrV69qgK6I5Bq5ZoFLgIQoWDHqXwOG34c6vTRgWORf7ijc9OjRgw4dOlC9enX27t1Lx44dAViyZAkPPfRQlhYoIpIdcsUCl2AOGN4/Dxa/rgHDIhl0R+Hm448/plKlSpw8eZIxY8ZQoID5y+Do0aO89dZbWVqgiEhWyjULXAJcOQmLXoXDy8x2oYrmJahyLaytS8TBZXieG2eieW5E8p5cs8AlmAOGN39pDhhOjjMHDDcbZg4Y9nCwy2UiOSijn98ZHinXvXt3Dh48eNt++/fvp3v37hk9rIhItlt5IIK2n/3JuKWHiE9OoWHZAvw+qDnvPlLT8YLNme3wTStY/pYZbMo0g+c3wH0jFGxEMijDl6UaN25M48aNqVevHp06daJ+/foULVoUwzA4f/4827ZtY8GCBezdu5eRI0dmZ80iIhmSaxa4BHPA8Mp3Ydt3mAOGC0Db96Fubw0YFsmkTF2WunTpEl9//TUzZ84kLCyMv3d1cXGhVq1a9OrVi2eeecbhZyjWZSkR55ZrFriE6wOG518fMHze3FanN7R9F/I72Pw6IhbL6Of3HY+5iYqKIjw8HBcXF0qUKEFAQECmj2EYBkuXLuWrr77i4MGDTJs2jUaNGt1yn3feeYeZM2em2Va5cmUWLFiQ4edVuBFxTrlqgUu4PmB4OBxearYLVjAHDJdvaW1dIg4qy9eW+reAgIA7CjT/9Prrr7N7924eeeQR5s+fT1xc3G33OX/+PGXKlGH8+PGp27y8NCOnSF6Xaxa4/FvYr7BgMCTFgqsHNB9mDhrWuBqRu3bH4SYmJoZly5Zx7Ngxhg8fDsCBAweoWrVqhn+RvPvuu3h5eXHmzBlefPHFDD+3n58fVatWvaO6RcS5GIbBhFVHGL/ysGMvcPk3WxIsHwlbvjLbpZtApy+gcGVr6xJxIncUbg4ePEibNm2w2+2cPXs2Ndx8+OGHPPjgg/Tu3TtDx7nTMy4bNmwgJCSEgIAAmjdvzmuvvYavrwOechaRbGVLsfPm3DBmbT8NQPuaxXizQzVKFfCxuLJ0RIXDL0/Cma1mu9kwuO9NcHOwcUAiudwdLZry8ssv8/jjj3PmzJk02wcPHszHH3+cJYWlJzAwkGHDhvHVV18xePBg5s6dS/PmzUlKSkp3n8TERKKjo9N8iUjuFpdk49npO5i1/TSuLvBBl1pM6lvfcYPNsTXwdQsz2HgFQK+Z0PptBRuRbHBH/6s2bdrEjBkzbrj8VLVqVfbt25clhaXn/fffx83t/081N2jQgPLlyzNr1iwef/zxm+4zZswYRo0ala11iUjOuRSbSP+p29l9+ireHq5M6BVCm+pFrS7r5ux2WP8JrP4ADDsUqwU9pkHB8lZXJuK07ujMjWEYJCYmAqQJOMeOHbvrQca3889gAxAcHEzZsmVvGapGjBhBVFRU6tfp06eztUYRyT6nLsXx6Feb2H36KgV8PPhpQGPHDTbxV2DGY7DqPTPY1OsLTy9XsBHJZncUbtq2bctHH30E/H+4iYyMZODAgbRv3z7rqsuApKQkzp8/f8tQ5eXlhb+/f5ovEcl99p6JouukDRy/eI1SBfIx54V7HW+hy7+d3QVftzRv83bzgs4T4OH/gUc+qysTcXp3FG4+/fRT5s2bR6VKlbDb7TRv3pzy5csTHh7Ohx9+mKUFjhw5ks6dOwNmkPn7LAxAQkICAwcOxGaz0aNHjyx9XhFxLGv/ukDPbzZxMTaJ6sX9+e2Fex1z7hqAndNgclu4ehIKlIUByyHkCaurEskz7mjMTXBwMHv27OHnn39m+/bt2O12evfuzeOPP56pu5bmzp3LiBEjsNlsADzxxBP4+PgwcOBABg4cCMC5c+c4duwYAB4eHgQFBVGlShU8PDy4ePEi1atXZ/ny5VSoUOFOXoqI5AK/7jjD67/uwWY3aFYxiEl9Q/Dz9rC6rBslx8Mfr8KuH8125fbQZZK5lIKI5BhLVwWPiori3LlzN2wPCgoiKMicdvz8+fPEx8dTrly5NH3Cw8MpUKAAPj6ZvzNCMxSL5A6GYfDlmqOMW3oIgC71SjK2W2083e/opHP2unwMZj0BEXvBxRXu/y80fRlcHbBWkVwq22coBrDb7TedVTijZ28yMstxsWLFbrq9ZMmSGXoOEcmdUuwG7yzYx/TNJwF4vmUFXnuwCq6uDjjb8ME/YO4LkBgFPkHw6BQtoSBioTsKN4cOHeL5559n48aNN51fxsKTQSLiBBKSUxgyM5Sl+yJwcYG3O1bnyablbr9jTkuxwap3YcPnZjv4Huj+A/iXsLIqkTzvjsJNv379KFasGPPnzycwMDCLSxKRvOxqXBIDpm5n+8kreLq78nnPujxUq7jVZd0oNhLm9IcT68x24xehzWhwc8CxQCJ5zB2Fm927d7NkyRIFGxHJUmeuxNFvylaOXriGv7c73z7RgHvKF7K6rBud3GQuoxB7Hjx9zdu8a3a1uioRue6Owk3ZsmWJjIxUuBGRLLP/bDRPfr+VyJhEigd4M7V/IyoX9bO6rLQMAzZ/CctGgpEChatCj+la9FLEwdxRuBk9ejRPPfUUY8eOpUKFCjcsw5DeIGARkZvZeOQiz07fQWyijSpF/fihf0OKBzjYZHcJ0bBgIOyfb7ZrPgqdxoOXg861I5KH3VG4KVSoEGFhYTRv3vymj2tAsYhk1Pxd4bz6y26SUwzuKVeQb55oQEA+Bxu3EnkAZj0Olw6Dqwc8+AE0egZcHPDOLRG5s3Dz4osv0qFDB1588UVdmhKRO/btn8d4f9EBADrULs6nPerg5e52m71y2J7ZsHAIJMeBf0noPhWCG1pdlYjcwh2Fm1OnTrF161ZNgCcid8RuN3h/0QEmrz8OQP+m5fhvh2qONYeNLRGWvgnbvjXb5e+Dbt9B/iBr6xKR27qjcFOpUiXOnDlD9erVs7oeEXFyibYUhs3ezR97zNnJ33yoGs+0cLBVsq+ehl/6QfgOs93iNWj1Brg62FklEbmpOwo3ffv2pW/fvowdO5aKFSveMKC4bNmyWVGbiDiZqPhknpu+nc3HLuPh5sLH3evwcF0Hm238yEr4dQDEXwbvQOj6LVRua3VVIpIJd7S21L/DzL85+oBirS0lkvPORyXw5PdbOXg+Bl8vd755vD73VnSgSzx2O/w5DtaMAQwoXhd6TIMCZayuTESuy9a1pQ4fPnzHhYlI3vNXRAxPTtnK2agEivh58cNTjahewoH+sIi7DL89C0eWm+36T0K7seDhbWlZInJn7ijcVKxYMavrEBEntfX4ZQZM3UZ0go0KhfMztX8jShXwsbqs/xe+A2b3g6jT4O4NHT+Dur2trkpE7kKGw01YWBgANWvWTP0+PTVr1ry7qkTEKSzee44hs3aRZLNTv0wBJvdrQKCPp9VlmQwDdnwPi1+HlCQoWN6cbbiYfn+J5HYZDje1atUCzPE0f3+fHkcfcyMi2W/qxhO8s3AfhgFtqxfli1718PZwkLuNkuLgj2Gwe4bZrtoRHvkSvAOsrUtEskSGw825c+du+r2IyD8ZhsFHSw8xac1RAPo2Ls2ozjVxc5Q5bC4dNWcbjtwHLm7Q+m24d7BmGxZxIhkON8WKFWPAgAF89913WjtKRG4qyWbnjV/38FtoOADDH6zCi61uXH/OMvsXwPyXIDEa8heB7t9D2WZWVyUiWSxTt4K7uLg4xSUn3QoukvViE2288OMO1h2+iJurCx92rUX3BsFWl2VKscHKd2DjBLNd+l4z2PjpDzWR3CRbbwUXEfmnyJgEnvp+G/vORuPj6caXfUJoVaWI1WWZYs7DnP5wcoPZvncQPPA2uDnY4pwikmUUbkTkrhy9EEu/KVs5cyWeIF9PpjzZkNqlAq0uy3RiA/zyJFyLBE8/c9Bw9c5WVyUi2SzT4cbd/fa72Gy2OypGRHKXnaeu8PQP27gSl0zZQj5M7d+IMoXyW12WeZv3xgmw4h0wUqBIdfM27yDN0SWSF2Q63EycODE76hCRXGb5/ggGzdhJQrKdOqUCmPxkQ4J8vawuCxKiYN6LcPB3s127pzkxn6cDhC4RyRGZDjfPP/98dtQhIrnIz1tO8d95e7EbcF+VwvyvTwg+ng5wlft8GMx+HC4fAzdPaPchNOiv27xF8hgH+G0kIrmFYRh8tuIwX6w015fr2SCY97vUxN3N1eLKgF0z4PeXwRYPAcHQYyqUrG91VSJiAYUbEckQW4qdN+eGMWv7aQCGPFCJoa0rWT+HTdQZWP4WhP1qtiu2hq7fgk9Ba+sSEctkKtzEx8dnVx0i4sDikmy89NNOVh+6gKsLvN+lFr0alba2qKRrsGE8bPjCPFuDC7QaAS2Gg6sDnEkSEctkKtx4e3tnVx0i4qAuxSbS/4dt7D4ThbeHKxN7hdC6elHrCrLbIWwOLH8bYs6a20rfC+0+gBL1rKtLRByGLkuJSLpOXrpGvylbOXEpjgI+Hkx+siEhpQtYV9DpbbDkDQjfbrYDS0Obd6H6wxo0LCKpFG5E5Kb2nLlK/x+2cTE2iVIF8jG1fyMqFPa1ppioM7BiFOydbbY98kOLV6DxS+ChM8oikpbCjYjcYM2hSF78aSdxSSnUKOHP9081pIifBSEiKQ42fgHrP///cTV1+8ADI7UulIikS+FGRNKYs+MMb/y6B5vdoHmlICb1rY+vVw7/qjAM2DsHVrwN0eYK45RuAu3GaFyNiNyWwo2IAJBiN/h42SEmrTkKQJd6JRnbrTae7jl859GZ7ea4mjPbzHZAaWg7Gqo/onE1IpIhCjciQnRCMkNmhLL60AUAXmxVgeEPVsnZOWyiwmHlKNgzy2x75Ifmw6DJS+CRL+fqEJFcT+FGJI87EhnLs9O2c+ziNbw9XBnbrTYP1y2ZcwUkxZmLXG74HJLjzG11+8D9I8G/eM7VISJOQ+FGJA9bdTCCITN2EZNoo0SAN9880YCaJQNy5skNw5xVePnbEH3G3Bbc2BxXUzIkZ2oQEaekcCOSBxmGwZdrjvLxskMYBjQqW5Av+4bk3KreZ3ZcH1ez1WwHBEObUVCjq8bViMhdU7gRyWPikmwMn7OHP/acA6Bv49K81bFGzgwcjj5rzlezZ6bZ9vCBZsPg3oEaVyMiWUbhRiQPOX05jmen7+DAuWg83FwY1bkmve/JgTWikuPNcTXrP/v/cTV1esMDb2lcjYhkOYUbkTxi09FLvPTzTi5fSyLI15NJfevTsGw2r5x903E191wfV1M/e59bRPIshRsRJ2cYBtM3n2TUwv2k2A1qlQzg68frUyIwmy8Dhe+AJSPg9Baz7V/KHFdTs5vG1YhItlK4EXFiibYU3pq3j1nbTwPmxHxjutbC28Mt+540+pw5X83uGWbbwweavQz3DtK4GhHJEQo3Ik4qMjqB53/cwc5TV3F1gRHtqzGgebnsm5gvOR42ToT1n/5jXE2v6+NqSmTPc4qI3ITCjYgT2nX6Ks9N305EdCL+3u5M6B1Cy8qFs+fJDAP2/WaOq4kyzxBRqhG0+xBKaVyNiOQ8hRsRJ/PrjjOMmLuXJJudSkV8+faJBpQNyp89Txa+8/q4ms1mW+NqRMQBKNyIOAlbip0xiw8yef1xANpUL8pnPetmz4re0edg1buw6yez/fe4miYDwdMn659PRCQTFG5EnMDVuCQG/hzK+iMXARj8QCWGPlAJV9csPnuSHA+bJsK6zyD5mrmt9mPmuJqAHFyPSkTkFhRuRHK5Q+djeGbadk5djsPH041Pe9ShXc0snhjPMGDf3Ovjak6Z20o1vD6upkHWPpeIyF3KgfnW0xcfH88PP/xA48aNCQwMZP369Rnab8qUKdSpU4dixYrRpk0bQkNDs7lSEce0JOw8Xb7cwKnLcQQXzMdvL96b9cHmbCh83x7mPGUGG/+S0PU7eHq5go2IOCRLw80777zD6tWrGT58OFFRUdhsttvuM2PGDF544QWGDx/Ohg0bqFChAvfffz/nzp3LgYpFHIPdbvDZ8r94/scdxCWl0LRiIRa81Iyqxfyz7klizsO8l+Cb++DUJnDPB61GwMDtULu7BgyLiMNyMQzDsOrJDcPAxcWFM2fOEBwczOrVq2nVqtUt96lduzb33nsvX331FQApKSmULFmSZ599ltGjR2foeaOjowkICCAqKgp//yz8MBDJAbGJNobN2sWy/REA9G9ajv88VBV3tyz6WyU54fq4mk//f1xNrR7Q+h2NqxERS2X089vSMTeZnUzs6tWr7N27l5EjR6Zuc3Nz4/7778/wJS2R3OzExWs8O307f0XE4unuygddavFo/VJZ9wSHl8Mfr8DVk2a7ZANzXE1ww6x7DhGRbJarBhSfPXsWgKJFi6bZXqRIEXbu3JnufomJiSQmJqa2o6Ojs6dAkWz0518XGPjzTqITbBT19+LrxxtQNzgwaw4eGwlL3jAXuQTwK3F9vppHwdXSq9ciIpmWq8LN31z/9cvW3d2dW11dGzNmDKNGjcruskSyhWEYTF5/nA8WHcBuQL3SgXzdtz5F/L2z4uAQ+iMs+y8kXAUXV2j8ojm2xsv37o8vImKBXBVuihQpAsDFixfTbI+MjEx97GZGjBjBsGHDUtvR0dEEBwdnT5EiWSghOYURv+1lbmg4AD0alOLdR2ri5Z4FC19ePAK/D4UT68x2sdrQ+QsoUe/ujy0iYqFcFW6CgoIoX74869at45FHHknd/ueff/Loo4+mu5+XlxdeXl45UKFI1jkXFc9z03ew50wUbq4uvNWxOk80KXP3C1/akmDDePhzHKQkmrML3/cfuOcFcMtVvxJERG7K4S+mDx48mHvvvTe1PWTIEL777js2bNhAUlISY8aM4fz58zz33HMWVimStXacvEynCRvYcyaKAj4eTH+6Ef3uLXv3webUFvi6Oax+zww2FVvDi5vg3kEKNiLiNCz9bfbzzz/z4osvpo6X6dixI+7u7rzxxhu88cYbAMTFxaUZADxo0CAuXrzIQw89xLVr1yhbtizz5s2jUqVKlrwGkaw2Y+sp3pofRnKKQdVifnz7RAOCC97lek0JUbBiFGyfAhjgEwTtx2qBSxFxSpbOc5OUlERcXNwN2729vfH2NgdLxsfHY7PZ8PPzS9PHMAwSEhLIly9fpp9X89yII0pOsTN64X6mbzZvw+5QqzjjutfGx/Mu/wY5sBAWDYeY6xNd1usLbd4Fn4J3WbGISM7KFfPceHp64unpecs+6YUXFxeXOwo2Io7oUmwiL/y0k63HL+PiAq+2rcKLrSrc3WWoqHBY/Boc/N1sFywPncZDuRZZU7SIiIPSRXYRi+07G8Wz03YQfjUeXy93xj9WlweqFb39jumxp5iXn1aMgqQYcHWHpkOhxavgoT8IRMT5KdyIWGjh7rMMn7ObhGQ75YLy8+0T9alYxO/2O6YnYh8sHAJntpntUg2h0xdQtHrWFCwikgso3IhYIMVu8PGyQ0xacxSAlpUL80WvegTk87izAybHm7d2bxgPdht4+kHrt6HB05phWETyHIUbkRwWnZDMkBmhrD50AYDnW1Zg+INVcHO9w/E1x9aak/FdPma2q3aEh8aBf4msKVhEJJdRuBHJQUciY3l22naOXbyGt4crY7vV5uG6d7jSdtxlWDYSdv1otv2Km6GmWqesK1hEJBdSuBHJIasORjBkxi5iEm2UCPDmmycaULNkQOYPZBiwd4650GXcRcAFGj4ND7wF3ndwPBERJ6NwI5LNDMPgyzVH+XjZIQwDGpUtyJd9QwjyvYMlQa6cgN+HwdGVZrtwNXM9qOBGWVqziEhupnAjko3ikmwMn7OHP/aYE+j1bVyatzrWwNM9k4N8U2yw+UtY/QHY4sHNC1oOh3uHgPut54oSEclrFG5Essnpy3E8O30HB85F4+HmwqjONel9T+nMH+hsKCwYDOf3mO2yzaHj5xBUMUvrFRFxFgo3ItlgSdh5Xpuzm+gEG0G+nkzqW5+GZTO53EFiLKwZY56xMezgHQgPvg91+2g9KBGRW1C4EclCCckpvP/HgdT1oeoGB/JlnxBKBGZyZuC/lsEfr0DUKbNdqzs8OAZ8C2dxxSIizkfhRiSLHImMYeDPoRw8HwOY89e80rYyHm6ZGF8TG2neBRX2q9kOLA0dPoNKrbOhYhER56RwI3KXDMPglx1neHv+PuKTUwjy9eTTHnVpUTkTZ1kMA0Knw7L/QkIUuLhC4xfhvv+AZ/7sK15ExAkp3IjchZiEZN6cG8aC3WcBaF4piE961KGIn3fGD3LxiLke1Mn1Zrt4HXM9qBJ1s75gEZE8QOFG5A7tOXOVQTNCOXkpDjdXF15tW4XnWpTHNaPLKNiSzLWg/hwHKYng4QP3vQn3PA9u+q8pInKn9BtUJJPsdoMpG44zdslBklMMSgbm44te9ahfpkDGD3JqCywcDBcOmu2KraHDp1CgTPYULSKShyjciGTCpdhEXvllN2uuL3r5UK1ijOlaO+OreSdEwYpRsH2y2c5fGNp9CDW76fZuEZEsonAjkkEbj1xk6KxdRMYk4uXuyludqtO7UWlcMhJKDAMOLIRFwyH2vLmt3uPQZjT4ZHL+GxERuSWFG5HbsKXYGb/yMBNXH8EwoGIRXyb2rkfVYv4ZO0BUuBlqDv1htgtVNGcYLtc822oWEcnLFG5EbiH8ajxDZoSy/eQVAHo1CuatjjXI5+l2+53tKbBtMqwcDUkx4OoOzV6G5q+CRybuphIRkUxRuBFJx5Kw87z+6x6i4pPx83Lng6616FSnRMZ2jthn3t59ZpvZLtUIOo2HotWzr2AREQEUbkRukJCcwgeLDjBtk7mEQp3gQCY8Vo/ShXxuv3Nygnlr94bPwW4DTz9o8w7U7w+umVwJXERE7ojCjcg/HImMZeDPO1OXUHiuRXleaVsFT/cMBJPj68yzNZePmu2qHeGhceCfwbM9IiKSJRRuRDCXUJiz4wxvXV9CoVB+Tz7tWZeWGVlCIe4yLB8JoT+abb/iZqip1il7ixYRkZtSuJE8LzbRxn/n7mXeLnMJhaYVC/FZj7oU8b/NoF/DMBe4XPIGXDPnvaHB09D6bfAOyOaqRUQkPQo3kqftPRPFoBk7OXF9CYVhbSrzQssKt19C4eop+OMVOLzMbBeuag4YLt04+4sWEZFbUriRPMkwDCav//cSCnWpX+Y2E+rZU2DL17DqPUi+Bm6e5q3dzYaCu1eO1C4iIremcCN5zqXYRIbP2cOqg5EAtK9ZjA+71ibA5zZLKJzfCwsGwdlQs136XvNsTeHK2VyxiIhkhsKN5Cmbjl5i6KxQIqIT8XR35a2O1elzz22WUEiKg7VjYeMEMFLAKwDajoZ6T+j2bhERB6RwI3mCLcXOFysPMyGzSygcXQ2/D4UrJ8x29Ueg/VjwK5bNFYuIyJ1SuBGnd/ZqPENmhrLthLmEwmMNg3mrU3V8PG/x43/tEix7E3bPMNv+JaHDJ1ClfQ5ULCIid0PhRpzasn3nGT7HXELB9/oSCp1vtYSCYcCe2bB0BMRdAlyg0bPwwEjw8suxukVE5M4p3IhTSkhOYcyiA0z9ewmFUgFM6BVy6yUUrpyA34fB0ZVmu0h16PQFBDfM/oJFRCTLKNyI0zl6IZaBP4dy4Fw0kIElFFJssPlLWP0B2OLBzQtavgZNh4Dbbe6gEhERh6NwI07DMAx+3RnOW/PDiEsyl1D4pEcdWlUpkv5OZ3eZt3ef32O2yzY3b+8uVCFHahYRkayncCNOITbRxsh5YcwNDQcysIRC0jXzTM3mL8Gwg3cgtH0P6vWFW90WLiIiDk/hRnK9my2h8HzLCrilt4TCkRXw+8vmEgoANbtBuw/B9xZneEREJNdQuJFcyzAMpmw4wYeLD2RsCYXYC+ZdUHt/MdsBwdDhU6jcNueKFhGRbKdwI7nS5WtJDP9lNyuvL6HwYI2ifNStzs2XUDAMc76apf+B+Cvg4gr3PA/3vQlevjlcuYiIZDeFG8l1/r2EwsiO1emb3hIKl46al6COrzXbRWtB5/FQsn7OFi0iIjlG4UZyDVuKnS9WHWHCqsMYBlQonJ+JvUOoVvwmSyikJJtrQa0dC7YEcPeGViOgyUu6vVtExMkp3EiucPZqPENn7mLricsA9GhQinc617j5EgpndsDCwRARZrbLt4KOn0HB8jlXsIiIWEbhRhzeiv0RvDpnN1fjzCUU3u9Sk4frlryxY2IMrHoftnwFGJCvIDz4AdR5TLd3i4jkIQo34rCSbHY+WnKQ79YfB6B2qQAm9KpHmUL5b+z811Jz6YToM2a7dk8z2OQPysGKRUTEESjciEM6cyWOgT+Hsuv0VQD6Ny3HG+2r3riEQkwELHkd9s0124GlzUtQFVvnbMEiIuIwFG7E4Szbd55Xf9lNdIINf293Pu5eh7Y1iqXtZBgQOh2W/RcSoszbu5u8ZA4a9rzJmR0REckzHCbc2O12XF3TWdjwH2w2GzabLc02V1dXPD09s6s0ySFJNjsfLj7IlA3mZai6wYFM6FWP4IL/Wsn74hFYOAROrjfbxeuYq3eXqJuzBYuIiEO6fZrIZmPGjKFo0aJ4eHhQq1YtVq1adcv+AwcOJH/+/AQGBqZ+NWnSJIeqlexy+nIc3b/amBpsnmlejtnPNUkbbGxJ8Oc4mHSvGWw8fMz1oAasUrAREZFUlp65+eqrr/jggw+YO3cujRs3Zty4cXTs2JF9+/ZRrly5dPfr0qULc+bMycFKJTstCTvP8Dm7iUmwEZDPg0+616F19aJpO53eap6tidxvtis8AB0/hQJlc7xeERFxbJaeufn00095+umnad26Nb6+vrzzzjsEBQXx1Vdf3XZfu92eAxVKdkq0pfDOgn08/+MOYhJshJQOZNGQ5mmDTUI0/PEqTG5rBhufIOj6HfT9VcFGRERuyrIzN5cuXeLw4cO0bNkydZuLiwstW7Zk06ZNt9x30aJFeHl54efnR7Nmzfjkk0+oVKlSdpcsWejUpThe+nkne8OjAHiuZXlebVsFD7d/5O0DC2HRcIg5Z7br9IYH3wefdBbGFBERwcIzNxEREQAULlw4zfYiRYqkPnYzVatWZf78+cTGxrJjxw4Mw6Bly5ZcuXIl3X0SExOJjo5O8yXWWbT3HB2+WMfe8CgCfTyY8mQDRrSv9v/BJvoszOwDs/qawaZgeXhiPnSZpGAjIiK3ZfndUv++vGS322++AOJ1Q4cOTf2+XLly/PTTTxQrVoxZs2bx/PPP33SfMWPGMGrUqCypV+5cQnIKHyw6wLRNJwFoUKYAX/SqR4nAfGYHewpsnwIrRkFSDLi6Q9Mh0GI4eOSzsHIREclNLAs3xYsXByAyMjLN9sjISIoVK3azXW7K39+fUqVKcfTo0XT7jBgxgmHDhqW2o6OjCQ4OzmTFcjdOXLzGSz/vZN9Z86zZC60qMKxN5f8/WxOxzxwwfGab2S7VEDqNh6I1LKpYRERyK8vCTYECBahevTqrV6/m0UcfBcyzNqtXr+app55K7Wez2bDb7enOY3P58mVOnTpFqVKl0n0uLy8vvLy8svYFSIYt3H2WEb/tJTbRRsH8nnzSow73VSliPpgcb97evWE82G3g6Qet34YG/cHVzdrCRUQkV7L0bqnXX3+dKVOm8Ouvv3L27FmGDRtGbGwsL7zwQmqf559/npCQEMAcO/PQQw/x559/cunSJUJDQ3n00UcpUKAAffv2teplSDoSklN4c+5eBs0IJTbRRqOyBVk0uPn/B5tja8w5a9Z9Ygabqh1h4FZo9IyCjYiI3DFLx9w88cQTxMbGMmLECCIiIqhVqxbLly9PcxbGw8Mj9ayLl5cXr776Ku+99x6hoaEUKFCA5s2bM23aNAoVKmTVy5CbOHYhlpd+DuXAuWhcXODFVhV4uXVl3N1c4dolc9mE3T+bnf2Kw0PjoFona4sWERGn4GIYhmF1ETktOjqagIAAoqKi8Pf3t7ocpzN/Vzj/+W0v15JSKJTfk8961qVF5cLmelB7ZsPSERB3CXCBhgPggbfAW/8OIiJyaxn9/Lb8bilxHgnJKYxauJ8ZW08BcE+5gnzRqx5F/b3h8jH4fRgcW212LlLdXA8quKGFFYuIiDNSuJEscfRCLC/9tJOD52NwcYGB91VkyAOVcCcF1n8Gaz4EWwK4eUGr1+HeweDmYXXZIiLihBRu5K7NCw3nP3P3EpeUQpCvJ5/3rEezSkFwZgcsHAwRYWbHci2g4+dQqIKl9YqIiHNTuJE7Fp9krg01a/tpAJqUL8T4x+pSxCsZFr8OW74GDMhXAB78AOr0gltM0CgiIpIVFG7kjhyJjOGln0I5FGFehhp8fyUGP1AJt78Ww6JXITrc7Fi7pxls8gdZW7CIiOQZCjeSab/uOMN/54URn5xCkK8XXzxWl3uLJMMvT8CBBWanAmWh42dQ4X5LaxURkbxH4UYyLC7Jxlvz9zFnxxkAmlYsxGc9alPk0Az45R1IjAYXN7h3ELR8HTx9rC1YRETyJIUbyZC/ImJ46aedHI6MxdUFhrauzEs1knH75RE4vcXsVCIEOn8BxWpZWquIiORtCjdyW79sP83I+WEkJNsp7OfFhO7VaXxmCnzzOdiTwdMX7h+pZRNERMQhKNxIuq4l2hg5P4zfdpqDg5tXCmJCk2sELukIl6+vwl65PXT4GALSX7hUREQkJyncyE0dOh/Diz/t4OiFa7i6wIhWRRkQ/z0us380O/gWg4c+gmqddXu3iIg4FIUbScMwDGZvP81b8/eRaLNT1M+Tn+45TcWdgyHuotmpQX944G3IF2hprSIiIjejcCOpriXaeHPuXubtOgtA1/I2PvT8Fs/119eDKlwVOo2H0o0trFJEROTWFG4EgAPnonnpp50cu3gNT1c7P1TdRpNT3+Biiwc3T2jxGjQdAu6eVpcqIiJySwo3eZxhGMzYeppRC83LUK18z/A//x/If2y/2aFMM+j0OQRVsrROERGRjFK4ycNiEpL5z9wwFu4+iw8JfF34d9rGzsPlsh28A6Hte1CvrwYMi4hIrqJwk0ftOxvFwJ9DOX7xGg+4hfK573T8Ys6bD9bqDg+OAd/C1hYpIiJyBxRu8hjDMPhxyyne/X0/AbbLfOfzI63tGyERCCwNHT6DSq2tLlNEROSOKdzkIdEJyYz4bS+L9oTT020Nb+WbgY/9mrkeVJMXodUI8MxvdZkiIiJ3ReEmj9h1+iqDZuzE/coxZnl+SyPXg2AAxeua60EVr2N1iSIiIllC4cbJ2e0G360/xkdLDlHIfokF3qMoQDR45If7/wuNngU3/RiIiIjz0KeaE7sUm8grv+xmzaELuGPj58BJFEiIhqI1odcMc4yNiIiIk1G4cVJ//nWBV37ZzYWYRLzcXZlXcRkVTuwDrwDoOV3BRkREnJbCjZNJstn5eNkhvvnzGACVi/ryfaNwSi6/vuBll0lQsLyFFYqIiGQvhRsncuxCLINnhhIWHg1A38alGdnYA68pvc0OTYdA1Q4WVigiIpL9FG6cxO97zvL6nD1cS0oh0MeDsd1q82AFH5jcFpJizWUU7n/L6jJFRESyncJNLpecYmfMooNM2XAcgEblCjL+sboUj9wAk4ZC1GnwLQqPTtFdUSIikifo0y4Xi4hO4KWfdrL95BUAnm9ZgVebBeG+fCjsmWl2CiwN3X8Av6KW1SkiIpKTFG5yqY2HI5gxYxqlEy5S2yuFHnWDqOq9ByZ9B3EXARdo/CLc/6ZmHRYRkTxF4SaXsaXY+WLFIaqtH8wEt63gef2B3f/oVKQ6dJ4ApRpYUaKIiIilFG5ykfNRCQyeGUrjU9/R3mMrNhd3XMo2x80rP7h7g0c+c4K+Bv3B3fP2BxQREXFCCje5xOqDkQybvYuGCRsZ5jkHAPdOn0PI49YWJiIi4mAUbhxcoi2FsYsPMWXDcSq7nOZzr6/MBxo9p2AjIiJyEwo3DuxIZCyDZ4Sy/1w0AcQy0288PknxUK4FPPi+1eWJiIg4JIUbB2QYBrO3n+adBfuJT06hvE88vwZNpkDkWQgsA92ngpuH1WWKiIg4JIUbB3Mt0caI3/ayYPdZwGB4iT28EP8drpGXwCO/uZq3T0GryxQREXFYCjcO5EhkLC/8uIPDkbEEu17ix2IzKXN5g/lg0Zrw8EQoWsPaIkVERBycwo3VEqJg8RtcPbWX+MtxjDMMPPK5UtXtLG6X48DNE1q+Bk2H6lKUiIhIBijcWMlux/7b87j+tYhAINAFcAEMwAYENzYn4ytc2coqRUREchWFGwtdWvYRhf5aRKLhzn+SB9C4ZkW61iuJm6srePlB6Sbg6mp1mSIiIrmKwo0FDMNg7ZI5NN/8IbjAR679advnZR6sUczq0kRERHI9hZscFhWXzNjZKxl2fBhuLgZr8rXhmedGUywwn9WliYiIOAWFmxy04+Rlhv28jc/i3yTINZoLvlVoPmgabl4KNiIiIllF4SYH2O0Gk9Ye5Yfl2xnt9h0hbkewefpTuP8s8PKxujwRERGnonCTzSJjEnhlZijFT/zKco+fCXS5huHiinu3b6FgOavLExERcToKN9loSdg5Js9dzKvJX3OPx0EAjGK1cOk4HkrVt7g6ERER56Rwkw0iYxL4YO52qvz1FT+5LcLTNQW7ez5c7/8vLvc8D25620VERLKLQ3zKJiUlER0dTaFChXBxccm2fbKbYRj8tuMMG3+fwmvGD5RwvwxASqV2uHUYB4GlLa5QRETE+Vk6Q5zdbueVV14hMDCQsmXLUqpUKebOnZvl++SEq3FJvPHNbxSe34tP+JQSLpdJ8guGXjNx6zNLwUZERCSHWBpuPvnkE77//ns2btxIdHQ0r7/+Oj179uTAgQNZuk9OyG+7wuhzz9PCbS82F0/szV/Dc/A2qNLe0rpERETyGhfDMAyrnrxs2bL06NGDjz76KHVbxYoV6dSpE5999lmW7fNv0dHRBAQEEBUVhb+//929iH+4MmcInjGnyP/wJ1CwfJYdV0RERDL++W3ZmJvIyEhOnjxJ06ZN02xv1qwZW7duzbJ9clKBLh+Dqzs4yBggERGRvMiyy1IXLlwAICgoKM32oKCg1MeyYh+AxMREoqOj03xlCzcPBRsRERGLWRZuXK+vdm2z2dJsT05Oxs3NLcv2ARgzZgwBAQGpX8HBwXdTuoiIiDgwy8JNyZIlATh//nya7REREamPZcU+ACNGjCAqKir16/Tp03dTuoiIiDgwy8KNv78/devWZfny5anbbDYbK1eupEWLFqnbrly5QkRERKb2+TcvLy/8/f3TfImIiIhzsnQSv5EjR9KzZ08aNmxIkyZN+PjjjwF44YUXUvsMHz6czZs3ExYWluF9REREJO+ydJ6brl278uOPPzJ16lS6dOlCdHQ0a9eupXDhwql9ChYsSLFixTK1j4iIiORdls5zY5XsmudGREREsk9GP78tPXMjIiIiktUUbkRERMSpKNyIiIiIU1G4EREREaeicCMiIiJOReFGREREnIqlk/hZ5e+737NtAU0RERHJcn9/bt9uFps8GW5iYmIAtICmiIhILhQTE0NAQEC6j+fJSfzsdjtnz57Fz88PFxeXOz5OdHQ0wcHBnD59WpMBZjO91zlH73XO0Xudc/Re55zsfK8NwyAmJoYSJUrg6pr+yJo8eebG1dWVUqVKZdnxtBhnztF7nXP0Xuccvdc5R+91zsmu9/pWZ2z+pgHFIiIi4lQUbkRERMSpKNzcBS8vL95++228vLysLsXp6b3OOXqvc47e65yj9zrnOMJ7nScHFIuIiIjz0pkbERERcSoKNyIiIuJUFG5ERETEqSjc3KFLly6xbds2zp8/b3UpuVp4eDi7d+8mNjY23T5RUVFs376d06dP31UfMe3YsYONGzfe9LFr166xY8cOjh07lu7+GekjEBkZyc6dO4mLi7vp44mJiezcuZNDhw6le4yM9MnrYmNj2bNnD/v37ychIeGmfWw2G7t27WL//v3pTtufkT55TVRUFBs2bODcuXPp9rlw4QLbtm0jMjIy2/tkiiGZ9tZbbxleXl5G9erVDS8vL+Ppp582UlJSrC4rV1m8eLFRp04do0SJEkbt2rUNHx8f44033rih3xdffGHky5fPqFatmpEvXz6ja9euRkJCQqb7iGn+/PmGq6ur4eXldcNjP/30k+Hn52dUrlzZ8PPzM+677z7j6tWrme6T1129etXo1q2bkT9/fqNBgwZG6dKljWnTpqXps2jRIqNQoUJG+fLljQIFChj169c3zp49m+k+ed17771n5M+f36hVq5ZRsWJFo2DBgsb06dPT9Fm/fr1RvHhxo3Tp0kbhwoWN6tWrG0eOHMl0n7zk+PHjxjPPPGMUK1bMcHNzMyZMmHDTfq+++mqaz8JBgwYZdrs9W/pklsJNJs2bN8/w8PAwNmzYYBiGYRw8eNAICAgwxo8fb3Flucv//vc/Y/fu3antTZs2GV5eXsbUqVNTt23evNlwcXExFixYYBiGYYSHhxslSpQwRowYkak+Yjp9+rRRqlQpY9CgQTeEm8OHDxseHh7GN998YxiGYVy5csWoUqWK8dRTT2WqjxhG69atjZCQEOPChQuGYRjGtWvXjO+//z718QsXLhh+fn7G6NGjDcMwjPj4eKNx48ZG+/btM9Unr9u5c6cBGHPnzk3d9t577xnu7u5GdHS0YRiGERsbaxQrVswYPHiwYRiGYbPZjAcffNBo2LBh6j4Z6ZPXLFmyxPj666+NmJgYIyAg4Kbh5scffzTy5ctn7NixwzAMw9i9e7fh4+NjTJ48Ocv73AmFm0zq3Lmz0a5duzTbBgwYYNSpU8eagpxI48aNjWeeeSa1/eyzzxp169ZN0+e///2vUbRo0Uz1EfMXdosWLYyJEycakyZNuiHcvPXWW0bx4sXT/LU0ceJEw9vb24iLi8twn7xu7dq1BmBs3Lgx3T5ffvml4ePjY1y7di1125w5cwwXF5fUMzMZ6ZPXLV261ACM8+fPp25bvXq1ARgnT540DMMwZs+ebbi6uhoRERGpfdasWWMAxt69ezPcJy9LL9zcf//9xqOPPppm22OPPWY0bdo0y/vcCY25yaTQ0FDq16+fZlujRo0ICwsjOTnZoqpyv5iYGA4dOkTFihVTt6X3XkdERKReA85IH4HRo0fj6+vLSy+9dNPHQ0NDCQkJSbOQbKNGjUhISODgwYMZ7pPXrVy5kkKFCtGkSRP++usvwsLCbhgHEhoaSrVq1fDx8Und1qhRIwzDYNeuXRnuk9fdf//9PPjgg/Tv35/Fixczd+5cXnnlFQYNGkTp0qUB830MDg6mSJEiqfs1atQo9bGM9pEbpfe795/vWVb1uRMKN5l0+fJlChUqlGZboUKFSElJITo62qKqcr8XXngBb29vnn766dRt6b3Xfz+W0T553dq1a/n222+ZMmVKun30XmeNs2fPUrhwYR566CE6dOhAt27dKF68ONOmTUvto/c6a7i7uzNw4ED27NnD8OHDGT58OMnJyTzxxBOpfW72PubLl498+fLd8r3+dx9JyzAMrl69etOf0bi4OBITE7Osz51SuMkkDw+PG/4Si4+PB8DT09OKknK94cOH8/vvv7NgwYI0P+QZea/173FrhmHQp08fnnzySQ4fPsz69es5evQohmGwfv361LNbeq+zhoeHBwcPHuS+++7j8OHDHDp0iNGjRzNgwACOHDmS2kfv9d1bv349Dz/8MF9//TVhYWEcOXKEp556ilatWnHmzBng5u+jYRgkJSXd8r3+dx9Jy8XFBXd393R/Rj08PLKsz51SuMmkMmXKEB4enmZbeHg4gYGB+Pn5WVRV7jVixAi++eYbli5dSoMGDdI8lt577erqSqlSpTLcJy+z2+2ULVuWP//8kzfeeIM33niDuXPnkpyczBtvvMGmTZuA9N9HIPUUf0b65HVly5YF4Pnnn0/d9uyzz2Kz2di8eTOg9zqr/PHHH5QtW5aHHnoodduLL75IXFwcq1atAsz38dy5c2lu7T537hwpKSlp3uvb9ZEblS5d+qY/o6VKlcLV1TVL+9wJhZtMatOmDYsWLSIlJSV12/z582nTpo2FVeVO//nPf/jyyy9ZunQp99xzzw2Pt2nThhUrVqSZJ2T+/Pk0bdqUfPnyZbhPXubm5sb69evTfL366qt4enqyfv16unbtCpjv45YtW9LMMTF//nwqVapEmTJlMtwnr3vwwQcB0vyyPnv2LIZhULhwYcB8H48ePcr+/ftT+8yfP5+CBQsSEhKS4T55XeHChbl06VKav/rDw8NveK+vXLnCunXrUvvMnz8fb29vmjdvnuE+cqM2bdrw+++/p4ZCwzBYsGBBms/CrOpzR+5qOHIedPbsWaNIkSLGo48+aixYsMB47rnnDB8fH42qz6T333/fcHFxMT7++GNj3bp1qV/79u1L7RMdHW2UL1/eaNu2rTF//nzj9ddfN9zd3Y21a9dmqo+kdbO7pZKTk42QkBCjcePGxm+//Wa8//77hpubmzFnzpxM9RHDePzxx426desav/76q/Hbb78ZDRo0MBo2bGgkJSWl9mnbtq1RvXp145dffjHGjx9veHl5GV9++WWa42SkT1529uxZIygoyGjXrp2xcOFC45dffjHq1atn1KhRw4iPj0/t16tXL6Ns2bLGzz//bHzzzTdpbrHPTJ+8JCYmJvV3sq+vr/Hyyy8b69atMw4cOJDa5/jx40aBAgWMPn36GAsWLDD69etn+Pv7G4cPH87yPndCq4LfgePHj/PRRx9x6NAhSpcuzcsvv0ydOnWsLitXefHFF9mzZ88N25s2bcrYsWNT2+fPn+fDDz9k7969FC1alJdeeommTZum2ScjfeT/zZ8/ny+++IKVK1em2X716lXGjh3Ltm3bKFCgAAMGDEg9E5GZPnmdzWZj0qRJLF68GHd3dxo3bsyQIUPInz9/ap+4uDg+/fRT/vzzT3x8fOjTpw/du3dPc5yM9Mnrzpw5w/jx49m3bx8eHh40aNCAQYMGERgYmNonKSmJCRMmsGzZMjw9PenWrRtPPvlkmuNkpE9ecujQoTQ3d/ztvvvu4913301t//XXX4wbN46jR49Srlw5Xn31VapVq5Zmn6zqk1kKNyIiIuJUNOZGREREnIrCjYiIiDgVhRsRERFxKgo3IiIi4lQUbkRERMSpKNyIiIiIU1G4EREREaeicCMiWeLQoUMsXbrU6jJISUlh3bp1zJ49m7/++svqckTEAu5WFyAiucfevXs5ceIERYsWpU6dOnh5eaU+tnDhQn788UdLZyw2DIPWrVsTERFB7dq18fPzo3LlypbVIyLWULgRkduKjIykc+fOHD9+nIYNG3LlyhXOnj3LyJEj6d+/PwBVq1alXbt2ltb5119/sWbNGs6ePUvx4sUtrUVErKNwIyK39dprrxEfH8+JEydSV1u/ePEiK1asSO1TqVIlPDw8UtszZ8684Tiurq706NEjtX3kyBHCwsIoWrQoISEhac4EpWfHjh2cPHmS4OBgGjZsmLr9r7/+Sn3OFStW4OHhwSOPPIK3t3ea/U+ePMmmTZsAyJ8/P9WrV6dChQpp+oSFhREREUGzZs3YuHEjFy9epHv37qxatYrChQtTokQJtmzZgo+PD61atWLbtm0cPXoUgKCgIOrUqZO6MjXAnj17OH/+PG3btk3zPLt27eLChQt3vwKyiKShcCMitxUWFkaTJk1Sgw2YH+KPPfZYavvfl6XmzZuX5hg7d+7k5MmT9OjRA5vNxoABA1i0aBH33HMPZ86c4dq1a8yfPz/dBfPi4uLo3Lkze/bsoUGDBuzcuZOqVauycOFC/Pz8OHr0KOvWrUutxdXVlfbt298Qbk6fPp1aW0xMDOvWraNfv35MmDAhtc+cOXOYPn06+fPnp3DhwhQrVozu3bszevRobDYb4eHh1KhRgyZNmtCqVStCQ0NZtWoVYC7kumPHDiZNmkTfvn0B88xXp06dCA8PJygoKPV5nnrqKdq2batwI5LV7mpNcRHJE1566SUjMDDQ+P77742IiIib9hk3bpxRp06dmz62d+9ew9fX1/joo48MwzCMDz74wKhbt64RHR2d2mfo0KFG06ZN063hnXfeMUqXLp36/BcuXDDKli1rjBgxIrXPunXrDMCIj4/P8Gs7efKkERAQYKxZsyZ129tvv20AxsKFC9P0bdmypREYGGicPn36lsecP3++4e/vn/r67Ha7Ub58eeOzzz5L7RMaGmoAxsGDBzNcq4hkjO6WEpHb+vDDD3n88ccZNmwYRYsWpXz58gwcOJDz58/fdt/Lly/z8MMP8/DDDzN8+HAAvv/+e+rUqcPSpUv55ZdfmD17NoUKFWLTpk0kJCTc9DgzZ85kwIABFClSBDDPHD3//PM3vfx1OwkJCWzYsIE5c+awceNGSpQowdatW9P0KVeuHB07drxh3y5dulCqVKkbtl+8eJFVq1Yxe/ZsYmNjiY2N5eDBgwC4uLjQv39/vv/++9T+kydPpmnTplSpUiXT9YvIremylIjclq+vL1988QWfffYZe/fu5c8//+Tjjz/mjz/+YO/evfj6+t50P5vNRo8ePShYsCDfffdd6vYTJ04QFBTEnDlz0vTv3r07cXFxN1xKAnOsTPny5dNsq1ChAqdOncIwDFxcXDL0WjZs2EDXrl0JCgqiQoUK+Pj4cOXKFSIjI9P0S29A8s22T5gwgREjRlC7dm2KFy+eOvbon8d86qmnePvtt9m+fTu1atXi559/Zty4cRmqWUQyR+FGRDLMzc2NunXrUrduXe655x4aN27Mxo0bbxgo+7dXXnmFffv2sX379jSBxd/fn0ceeYTXXnstw88dFBTE5cuX02y7fPkyhQoVynCwARg+fDh9+/blk08+Sd3WoEEDDMNI0y+9Y/57e1xcHC+//DJz586lU6dOAMTGxjJr1qw0xyxRogQPPfQQU6ZMoWXLliQlJaUZXC0iWUeXpUTkto4fP37Dtr8vHwUGBt50n++//56vv/6auXPnUrJkyTSPtWvXjilTppCUlJRme3h4eLo1NGvWjN9++y3Ntjlz5tCsWbOMvIRU58+fT3Mp6PDhw+zZsydTx/inixcvkpKSkuaY/z4j9bcBAwYwY8YMJk2aRI8ePdI94yUid0dnbkTktl5//XUiIyN54IEHKF26NCdPnmTSpEm0a9eO+vXr39D/3LlzvPDCCzz00EOcOHGCEydOAP9/K/jYsWNp3rw599xzD/369cPd3Z3169cTHx/P/Pnzb1rDu+++S8OGDenWrRvt2rVj+fLlbNmyhS1btmTqtTzyyCOMGjWKxMREkpOT+eyzz/Dx8cn0e/K34OBgQkJC6NevHwMGDODIkSNMnjwZV9cb/3bs0KEDPj4+rF27lvfff/+On1NEbk3hRkRua/bs2WzYsIFly5axevVqgoKC+PLLL+ncuTNubm5A2kn8DMPgkUceAdLeEu7m5kaPHj0oWbIku3fvZtq0aezYsQM/Pz+6detGt27d0q2hQoUK7Nq1i2+//ZZ169ZRqVIlxo4dS7ly5VL7FC5cmJ49e6bWdDMfffQRVapUYcuWLeTPn5/p06ezefNmgoODU/vUrFnzpvvef//9VK1aNc02FxcXli9fzsSJE1m7di0lS5Zk48aNjB49+oYzVm5ubnTs2JG1a9fStGnTdGsUkbvjYvz7QrOIiGQLu91OhQoVeOmll3j11VetLkfEaenMjYhIDpg3bx5//PEHcXFxPPvss1aXI+LUNKBYRCQHLFmyBDc3N5YtW4a/v7/V5Yg4NV2WEhEREaeiMzciIiLiVBRuRERExKko3IiIiIhTUbgRERERp6JwIyIiIk5F4UZEREScisKNiIiIOBWFGxEREXEqCjciIiLiVP4Pa8DaDFU+hRoAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "plt.plot(sizeofarray, timings)\n", - "plt.xlabel(\"Size of array\")\n", - "plt.ylabel(\"Time(s)\")\n", - "plt.legend([\"Python\", \"Rust\"])\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Part 5: Semantic Segmentations As Annotations\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "execution": { - "iopub.execute_input": "2026-09-02T16:03:42.418023Z", - "iopub.status.busy": "2026-09-02T16:03:42.417940Z", - "iopub.status.idle": "2026-09-02T16:03:42.419436Z", - "shell.execute_reply": "2026-09-02T16:03:42.419142Z" - } - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "from tiatoolbox.annotation.storage import AnnotationStore, SQLiteStore\n", - "from tiatoolbox.utils.misc import process_contours, save_annotations" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "execution": { - "iopub.execute_input": "2026-09-02T16:03:42.420167Z", - "iopub.status.busy": "2026-09-02T16:03:42.420094Z", - "iopub.status.idle": "2026-09-02T16:03:42.422788Z", - "shell.execute_reply": "2026-09-02T16:03:42.422491Z" - } - }, - "outputs": [], - "source": [ - "def py_semantic_segmentations_as_annotations(\n", - " layer_list: list,\n", - " preds: da.Array,\n", - " scale_factor: tuple[float, float],\n", - " class_dict: dict,\n", - " save_path: Path | None = None,\n", - " offset: np.ndarray | None = None,\n", - " *,\n", - " verbose: bool = True,\n", - ") -> AnnotationStore | Path:\n", - " \"\"\"Helper function to save semantic segmentation as annotations.\"\"\"\n", - " store = SQLiteStore()\n", - " annotations_list: list[Annotation] = []\n", - "\n", - " tqdm_loop = tqdm(\n", - " layer_list,\n", - " leave=False,\n", - " desc=\"Converting outputs to AnnotationStore.\",\n", - " disable=not verbose,\n", - " )\n", - "\n", - " for type_class in tqdm_loop:\n", - " class_id = int(type_class)\n", - " class_label = class_dict.get(class_id, class_id)\n", - " layer = da.where(preds == type_class, 1, 0).astype(\"uint8\").compute()\n", - " contours, hierarchy = cv2.findContours(\n", - " layer,\n", - " cv2.RETR_CCOMP,\n", - " cv2.CHAIN_APPROX_NONE,\n", - " )\n", - "\n", - " contours = cast(\"list[np.ndarray]\", contours)\n", - "\n", - " annotations_list_ = process_contours(\n", - " contours=contours,\n", - " hierarchy=hierarchy,\n", - " scale_factor=scale_factor,\n", - " offset=offset,\n", - " properties={\"type\": class_label, \"class\": class_id},\n", - " )\n", - " annotations_list.extend(annotations_list_)\n", - "\n", - " _ = store.append_many(\n", - " annotations_list, [str(i) for i in range(len(annotations_list))]\n", - " )\n", - "\n", - " # # if a save directory is provided, then dump store into a file\n", - " if save_path:\n", - " return save_annotations(\n", - " save_path=save_path,\n", - " store=store,\n", - " )\n", - "\n", - " return store" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": { - "execution": { - "iopub.execute_input": "2026-09-02T16:03:42.423504Z", - "iopub.status.busy": "2026-09-02T16:03:42.423424Z", - "iopub.status.idle": "2026-09-02T16:03:42.425551Z", - "shell.execute_reply": "2026-09-02T16:03:42.425264Z" - } - }, - "outputs": [], - "source": [ - "from pathlib import Path\n", + "This work focuses on converting code in tiatoolbox/utils/misc.py from Python to Rust with the aim of reducing the time it takes to run the code. Namely, this notebook benchmarks the contrast enhancer using a Rust implementation and compares performance with a Python implementation.\n", "\n", - "import dask.array as da\n", - "import numpy as np\n", - "\n", - "\n", - "def rust_semantic_segmentations_as_annotations(\n", - " layer_list: list,\n", - " preds: da.Array,\n", - " scale_factor: tuple[float, float],\n", - " class_dict: dict,\n", - " save_path: Path | None = None,\n", - " offset: np.ndarray | None = None,\n", - " *,\n", - " verbose: bool = True,\n", - ") -> AnnotationStore | Path:\n", - " \"\"\"Helper function to save semantic segmentation as annotations.\"\"\"\n", - " _ = verbose\n", - " store = SQLiteStore()\n", - " annotations_list: list[Annotation] = rmisc.semantic_segmentations_as_annotations(\n", - " layer_list, preds, scale_factor, class_dict, offset, cv2, process_contours\n", - " )\n", - "\n", - " _ = store.append_many(\n", - " annotations_list, [str(i) for i in range(len(annotations_list))]\n", - " )\n", - "\n", - " # # if a save directory is provided, then dump store into a file\n", - " if save_path:\n", - " return save_annotations(\n", - " save_path=save_path,\n", - " store=store,\n", - " )\n", + "Rust is a programming language that is proven to be faster than Python, especially for CPU bound operations and processing large amounts of data.\n", "\n", - " return store" + "It tests how long it runs in Python and in Rust using different sized inputs. Each input size has multiple tests and the average of all the tests is taken to minimise the impact of any outliers. The x axis shows the size of the input and the y axis shows the average time taken of each input of size x." ] }, { "cell_type": "code", - "execution_count": 21, "metadata": { "execution": { - "iopub.execute_input": "2026-09-02T16:03:42.426289Z", - "iopub.status.busy": "2026-09-02T16:03:42.426214Z", - "iopub.status.idle": "2026-09-02T16:04:47.111988Z", - "shell.execute_reply": "2026-09-02T16:04:47.111505Z" + "iopub.execute_input": "2026-09-02T16:00:37.340097Z", + "iopub.status.busy": "2026-09-02T16:00:37.340021Z", + "iopub.status.idle": "2026-09-02T16:00:37.342036Z", + "shell.execute_reply": "2026-09-02T16:00:37.341644Z" + }, + "ExecuteTime": { + "end_time": "2026-10-27T07:30:12.872809Z", + "start_time": "2026-10-27T07:30:12.796430Z" } }, - "outputs": [], "source": [ - "import time\n", - "\n", - "import dask.array as da\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "\n", - "from tiatoolbox import rmisc\n", - "\n", - "sizeofarray = []\n", - "timings = []\n", - "timings = []\n", - "num_patches = 10\n", - "num_classes = 10\n", - "max_patches = 1000\n", - "while num_patches <= max_patches:\n", - " python_times = np.empty(0)\n", - " rust_times = np.empty(0)\n", - " for _j in range(2):\n", - " rng = np.random.default_rng(42)\n", - "\n", - " # Exclude background\n", - " layer_list = list(range(1, num_classes))\n", - "\n", - " # Make the image reasonably large compared with number of patches\n", - " height = 64\n", - " width = 64\n", - "\n", - " # Start entirely as background\n", - " preds_np = np.zeros((height, width), dtype=np.int32)\n", - "\n", - " for _ in range(num_patches):\n", - " class_id = int(rng.integers(1, num_classes))\n", - "\n", - " # Rectangle dimensions, at least 3x3\n", - " rect_h = int(rng.integers(3, 10))\n", - " rect_w = int(rng.integers(3, 10))\n", - "\n", - " y = int(rng.integers(1, height - rect_h - 1))\n", - " x = int(rng.integers(1, width - rect_w - 1))\n", - "\n", - " # Only place the rectangle if the surrounding region is empty.\n", - " # The extra 1-pixel margin prevents polygons from touching.\n", - " region = preds_np[\n", - " y - 1 : y + rect_h + 1,\n", - " x - 1 : x + rect_w + 1,\n", - " ]\n", - "\n", - " if np.all(region == 0):\n", - " preds_np[\n", - " y : y + rect_h,\n", - " x : x + rect_w,\n", - " ] = class_id\n", - "\n", - " preds = da.from_array(\n", - " preds_np,\n", - " chunks=(32, 32),\n", - " )\n", - "\n", - " scale_factor = (0.5, 0.5)\n", - "\n", - " class_dict = {\n", - " 0: \"background\",\n", - " **{class_id: f\"class_{class_id}\" for class_id in range(1, num_classes)},\n", - " }\n", - " start_time = time.time()\n", - " python_object = py_semantic_segmentations_as_annotations(\n", - " layer_list, preds, scale_factor, class_dict, None, None, verbose=False\n", - " )\n", - " python_end_time = time.time() - start_time\n", - " python_times = np.append(python_times, python_end_time)\n", - " start_time = time.time()\n", - " rust_object = rust_semantic_segmentations_as_annotations(\n", - " layer_list, preds, scale_factor, class_dict, None, None, verbose=False\n", - " )\n", - " rust_end_time = time.time() - start_time\n", - " rust_times = np.append(rust_times, rust_end_time)\n", - " if python_object != rust_object:\n", - " print(\"Incorrect result\")\n", - " sizeofarray.append(num_patches)\n", - " timings.append([np.average(python_times), np.average(rust_times)])\n", - " if num_patches < step1:\n", - " num_patches += 10\n", - " num_classes += 10\n", - " else:\n", - " num_patches += 100\n", - " num_classes += 100" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": { - "execution": { - "iopub.execute_input": "2026-09-02T16:04:47.113564Z", - "iopub.status.busy": "2026-09-02T16:04:47.113461Z", - "iopub.status.idle": "2026-09-02T16:04:47.154285Z", - "shell.execute_reply": "2026-09-02T16:04:47.153910Z" - } - }, - "outputs": [ - { - "data": { - "image/png": "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+0yePNlo3rz5ZV/bs2eP4e3tbUyaNMkwDMN46623jBYtWhjx8fHZfZ566imjc+fOudbwyiuvGNWrV89+/zNnzhghISHG+PHjs/usWbPGAIyUlJQ8/2zh4eGGn5+fsWrVquy2l19+2QCM3377LUffbt26Gf7+/sbJkyeveM358+cbvr6+2T+fzWYzatWqZbz33nvZfXbs2GEAxoEDB/Jcq4jkjWZLichVvf322wwbNowxY8ZQqVIlatWqxeOPP87p06eveu758+e57bbbuO222xg3bhwAM2fOpHnz5ixZsoQff/yRuXPnUqFCBTZs2EBqauplr/PDDz8wcuRIKlasCJh3jh5++OHLPv66mtTUVNatW8e8efNYv349VapUYfPmzTn61KxZk5tvvvmSc++44w6qVat2SfvZs2dZsWIFc+fOJTExkcTERA4cOACAg4MD999/PzNnzszu/+WXX9K5c2fq16+f7/pF5Mr0WEpErsrb25tp06bx3nvvsWfPHv766y+mTJnCwoUL2bNnD97e3pc9LzMzk8GDB1O+fHm++OKL7Pbjx48TEBDAvHnzcvQfNGgQycnJlzxKAnOsTK1atXK01a5dmxMnTmAYBg4ODnn6WdatW0f//v0JCAigdu3aeHp6cuHCBWJiYnL0y21A8uXaP/jgA8aPH0+zZs0ICgrKHnv072uOGDGCl19+ma1bt9K0aVO+++47Jk+enKeaRSR/FG5EJM+cnJxo0aIFLVq0oH379nTo0IH169dfMlD2b2PHjmXv3r1s3bo1R2Dx9fXl9ttv59lnn83zewcEBHD+/PkcbefPn6dChQp5DjYA48aNY+jQobzzzjvZbW3atMEwjBz9crvmf9uTk5N5+umn+eWXX7jlllsASExMZM6cOTmuWaVKFfr168eMGTPo1q0b6enpOQZXi0jh0WMpEbmqY8eOXdL29+Mjf3//y54zc+ZMPv30U3755ReqVq2a47U+ffowY8YM0tPTc7RHRETkWkOXLl34+eefc7TNmzePLl265OVHyHb69Okcj4IOHTrE7t2783WNfzt79ixZWVk5rvnfO1J/GzlyJN9//z3Tp09n8ODBud7xEpFrozs3InJVzz33HDExMdxwww1Ur16d8PBwpk+fTp8+fWjduvUl/aOionjkkUfo168fx48f5/jx48A/U8EnTpxI165dad++PcOHD8fZ2Zm1a9eSkpLC/PnzL1vD66+/Ttu2bRkwYAB9+vRh6dKlbNq0iU2bNuXrZ7n99tt59dVXSUtLIyMjg/feew9PT898fyZ/Cw4OplWrVgwfPpyRI0dy+PBhvvzySxwdL/2340033YSnpyerV6/mzTffLPB7isiVKdyIyFXNnTuXdevW8eeff7Jy5UoCAgL4+OOPufXWW3FycgJyLuJnGAa33347kHNKuJOTE4MHD6Zq1ars2rWLWbNmsW3bNnx8fBgwYAADBgzItYbatWuzc+dOPv/8c9asWUPdunWZOHEiNWvWzO4TGBjInXfemV3T5UyaNIn69euzadMmvLy8mD17Nhs3biQ4ODi7T5MmTS577vXXX0+DBg1ytDk4OLB06VI+/PBDVq9eTdWqVVm/fj2vvfbaJXesnJycuPnmm1m9ejWdO3fOtUYRuTYOxn8fNIuISJGw2WzUrl2bxx57jGeeecbqckRKLd25EREpBr/++isLFy4kOTmZBx980OpyREo1DSgWESkGixcvxsnJiT///BNfX1+ryxEp1fRYSkREREoV3bkRERGRUkXhRkREREoVhRsREREpVRRuREREpFRRuBEREZFSReFGREREShWFGxERESlVFG5ERESkVFG4ERERkVLl/wGovfFWQoN8WQAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } + "step1 = 100\n", + "step2 = 1000" ], - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "plt.plot(sizeofarray, timings)\n", - "plt.xlabel(\"Size of array\")\n", - "plt.ylabel(\"Time(s)\")\n", - "plt.legend([\"Python\", \"Rust\"])\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "b6S8vzFipT5w" - }, - "source": [ - "# Part 6: Contrast Enhancer\n", - "\n" - ] + "outputs": [], + "execution_count": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Contrast Enhancer with some code written in rust\n", + "## Contrast Enhancer with Rust\n", "\n" ] }, @@ -1300,17 +60,13 @@ "shell.execute_reply": "2026-09-02T16:04:47.157491Z" }, "ExecuteTime": { - "end_time": "2026-10-22T06:25:31.354785Z", - "start_time": "2026-10-22T06:25:30.993752Z" + "end_time": "2026-10-27T07:30:13.076223Z", + "start_time": "2026-10-27T07:30:12.876521Z" } }, "source": [ "import numpy as np\n", "from skimage import exposure\n", - "\n", - "import numpy as np\n", - "from skimage import exposure\n", - "\n", "import tiatoolbox.rust.utils.misc as rmisc\n", "\n", "def rust_contrast_enhancer(\n", @@ -1334,58 +90,6 @@ " Raises:\n", " AssertionError: Internal errors due to invalid img type.\n", "\n", - " Examples:\n", - " >>> from tiatoolbox import utils\n", - " >>> img = utils.misc.contrast_enhancer(img, low_p=2, high_p=98)\n", - "\n", - " \"\"\"\n", - " # check if image is not uint8\n", - " # check if image is not uint8\n", - " dimension_for_rust = 3\n", - "\n", - " if img.dtype != np.uint8:\n", - " msg = \"Image should be uint8.\"\n", - " raise AssertionError(msg)\n", - " if img.ndim == dimension_for_rust:\n", - " return rmisc.contrast_enhancer(img, low_p, high_p)\n", - " img_out = img.copy()\n", - " percentiles = np.array(np.percentile(img_out, (low_p, high_p)))\n", - " p_low, p_high = percentiles[0], percentiles[1]\n", - " if p_low >= p_high:\n", - " p_low, p_high = np.min(img_out), np.max(img_out)\n", - " if p_high > p_low:\n", - " img_out = exposure.rescale_intensity(\n", - " img_out,\n", - " in_range=(p_low, p_high),\n", - " out_range=(0.0, 255.0),\n", - " )\n", - " return img_out.astype(np.uint8)\n", - "\n", - "def rust_contrast_enhancer(\n", - " img: np.ndarray, low_p: int = 2, high_p: int = 98\n", - ") -> np.ndarray:\n", - " \"\"\"Enhance contrast of the input image using intensity adjustment.\n", - "\n", - " This method uses both image low and high percentiles.\n", - "\n", - " Args:\n", - " img (:class:`numpy.ndarray`): input image used to obtain tissue mask.\n", - " Image should be uint8.\n", - " low_p (scalar): low percentile of image values to be saturated to 0.\n", - " high_p (scalar): high percentile of image values to be saturated to 255.\n", - " high_p should always be greater than low_p.\n", - "\n", - " Returns:\n", - " img (:class:`numpy.ndarray`):\n", - " Image (uint8) with contrast enhanced.\n", - "\n", - " Raises:\n", - " AssertionError: Internal errors due to invalid img type.\n", - "\n", - " Examples:\n", - " >>> from tiatoolbox import utils\n", - " >>> img = utils.misc.contrast_enhancer(img, low_p=2, high_p=98)\n", - "\n", " \"\"\"\n", " # check if image is not uint8\n", " # check if image is not uint8\n", @@ -1410,28 +114,30 @@ " return img_out.astype(np.uint8)" ], "outputs": [], - "execution_count": 1 + "execution_count": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Contrast Enhancer written fully in python\n", + "## Contrast Enhancer in Python\n", "\n" ] }, { "cell_type": "code", - "execution_count": 24, "metadata": { "execution": { "iopub.execute_input": "2026-09-02T16:04:47.158622Z", "iopub.status.busy": "2026-09-02T16:04:47.158543Z", "iopub.status.idle": "2026-09-02T16:04:47.160711Z", "shell.execute_reply": "2026-09-02T16:04:47.160415Z" + }, + "ExecuteTime": { + "end_time": "2026-10-27T07:30:13.154646Z", + "start_time": "2026-10-27T07:30:13.104896Z" } }, - "outputs": [], "source": [ "def py_contrast_enhancer(\n", " img: np.ndarray, low_p: int = 2, high_p: int = 98\n", @@ -1454,10 +160,6 @@ " Raises:\n", " AssertionError: Internal errors due to invalid img type.\n", "\n", - " Examples:\n", - " >>> from tiatoolbox import utils\n", - " >>> img = utils.misc.contrast_enhancer(img, low_p=2, high_p=98)\n", - "\n", " \"\"\"\n", " # check if image is not uint8\n", " if img.dtype != np.uint8:\n", @@ -1475,7 +177,9 @@ " out_range=(0.0, 255.0),\n", " )\n", " return img_out.astype(np.uint8)" - ] + ], + "outputs": [], + "execution_count": 3 }, { "cell_type": "markdown", @@ -1487,7 +191,6 @@ }, { "cell_type": "code", - "execution_count": 25, "metadata": { "execution": { "iopub.execute_input": "2026-09-02T16:04:47.161489Z", @@ -1495,9 +198,12 @@ "iopub.status.idle": "2026-09-02T16:06:50.802025Z", "shell.execute_reply": "2026-09-02T16:06:50.801325Z" }, - "id": "DZBiw_EepT5x" + "id": "DZBiw_EepT5x", + "ExecuteTime": { + "end_time": "2026-10-27T07:30:13.343489Z", + "start_time": "2026-10-27T07:30:13.157602Z" + } }, - "outputs": [], "source": [ "import time\n", "\n", @@ -1529,11 +235,25 @@ " i += 100\n", " else:\n", " i += 1000" - ] + ], + "outputs": [ + { + "ename": "AttributeError", + "evalue": "module 'tiatoolbox.rust.utils.misc' has no attribute 'contrast_enhancer'", + "output_type": "error", + "traceback": [ + "\u001B[31m---------------------------------------------------------------------------\u001B[39m", + "\u001B[31mAttributeError\u001B[39m Traceback (most recent call last)", + "\u001B[36mCell\u001B[39m\u001B[36m \u001B[39m\u001B[32mIn[4]\u001B[39m\u001B[32m, line 18\u001B[39m\n\u001B[32m 14\u001B[39m python_result = py_contrast_enhancer(temp, \u001B[32m2\u001B[39m, \u001B[32m96\u001B[39m)\n\u001B[32m 15\u001B[39m python_end_time = time.time() - start_time\n\u001B[32m 16\u001B[39m python_times = np.append(python_times, python_end_time)\n\u001B[32m 17\u001B[39m start_time = time.time()\n\u001B[32m---> \u001B[39m\u001B[32m18\u001B[39m rust_result = rust_contrast_enhancer(temp, \u001B[32m2\u001B[39m, \u001B[32m96\u001B[39m)\n\u001B[32m 19\u001B[39m rust_end_time = time.time() - start_time\n\u001B[32m 20\u001B[39m rust_times = np.append(rust_times, rust_end_time)\n\u001B[32m 21\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28;01mnot\u001B[39;00m np.allclose(python_result, rust_result, atol=\u001B[32m1\u001B[39m):\n", + "\u001B[36mCell\u001B[39m\u001B[36m \u001B[39m\u001B[32mIn[2]\u001B[39m\u001B[32m, line 35\u001B[39m, in \u001B[36mrust_contrast_enhancer\u001B[39m\u001B[34m(img, low_p, high_p)\u001B[39m\n\u001B[32m 31\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m img.dtype != np.uint8:\n\u001B[32m 32\u001B[39m msg = \u001B[33m\"Image should be uint8.\"\u001B[39m\n\u001B[32m 33\u001B[39m \u001B[38;5;28;01mraise\u001B[39;00m AssertionError(msg)\n\u001B[32m 34\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m img.ndim == dimension_for_rust:\n\u001B[32m---> \u001B[39m\u001B[32m35\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m rmisc.contrast_enhancer(img, low_p, high_p)\n\u001B[32m 36\u001B[39m img_out = img.copy()\n\u001B[32m 37\u001B[39m percentiles = np.array(np.percentile(img_out, (low_p, high_p)))\n\u001B[32m 38\u001B[39m p_low, p_high = percentiles[\u001B[32m0\u001B[39m], percentiles[\u001B[32m1\u001B[39m]\n", + "\u001B[31mAttributeError\u001B[39m: module 'tiatoolbox.rust.utils.misc' has no attribute 'contrast_enhancer'" + ] + } + ], + "execution_count": 4 }, { "cell_type": "code", - "execution_count": 26, "metadata": { "execution": { "iopub.execute_input": "2026-09-02T16:06:50.803595Z", @@ -1542,18 +262,6 @@ "shell.execute_reply": "2026-09-02T16:06:50.844028Z" } }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAGxCAYAAACeKZf2AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvctoD+AAAAAlwSFlzAAAPYQAAD2EBqD+naQAAZbZJREFUeJzt3XmcjeX/x/HX7IvZMGYMxr6OfUlEtkpEpKJSWlVKq1bfVn0rSaV9L7+vNiGhiMhOCGMZu6wzZsEw+3bOuX9/3BxNBoOZuc+ceT8fj3nkXOe6z3zmGDPvrvtaPAzDMBARERFxE55WFyAiIiJSkhRuRERExK0o3IiIiIhbUbgRERERt6JwIyIiIm5F4UZERETcisKNiIiIuBWFGxEREXEr3lYXYAWHw8GhQ4cIDg7Gw8PD6nJERESkGAzDICMjgxo1auDpeebxmQoZbg4dOkR0dLTVZYiIiMgFOHjwILVq1Trj8xUy3AQHBwPmmxMSEmJxNSIiIlIc6enpREdHO3+Pn0mFDDcnb0WFhIQo3IiIiJQz55pSognFIiIi4lYUbkRERMStKNyIiIiIW6mQc26Kw+FwkJ+fb3UZFZKPjw9eXl5WlyEiIuWUwk0R8vPz2bt3Lw6Hw+pSKqywsDCqV6+ufYhEROS8Kdz8i2EYJCYm4uXlRXR09Fk3CZKSZxgG2dnZpKSkABAVFWVxRSIiUt4o3PyLzWYjOzubGjVqEBgYaHU5FVJAQAAAKSkpRERE6BaViIicFw1L/IvdbgfA19fX4koqtpPBsqCgwOJKRESkvFG4OQPN9bCW3n8REblQCjdyRu+88w7Tp0+3ugwREZHzojk3bmLixImsWLECMJdSR0dHM2jQIJo1a1as6z/44AMiIiK46aabnG1z5syhQ4cOXH/99aVSs4iISGnQyI2bWLJkCcuWLaNTp060atWKuLg4WrZsyc8//1ys6+fNm8eff/5ZylWKiIiUPo3cuJGoqCiGDx8OwAMPPEBmZiavvPIKgYGBLFmyhNdff71Q/++++46EhASqVavGpk2b2Ldvn/P6V1991dlv8eLFLFiwALvdzuDBg2nXrl2h14mLi+PHH38kNTWVVq1acfvttztXPIF5e6tu3bpUqVLlrK8jIiLl3y8bDxEW6MPljapZVoNGbtxYixYtOHjwIPXr12fs2LHExcU5n3M4HIwePRpvb28aNGhA5cqViYqKolOnTnTq1MkZTr799ltefvllqlatytGjR+nUqRPr1693vs5vv/1Gu3btSExMpG7dunz44Yd07dq10O7Oc+bM4ZFHHjnr64iISPmXlJbLf6ZvZthXa1iy87BldVg6cnPw4EHGjh3LvHnzyMzMpHnz5jz33HNcccUVZ73u448/5r333iM5OZmWLVvy9ttv07Fjx1Kp0TAMcgrspfLa5xLg43XBq4bsdjt//PEHLVq0oFGjRnTr1o2vv/6ad955B4D58+eTlJTEsGHDqFatGtHR0TRs2NA5cnNSlSpV+OOPP5x7zezevZv//e9/tGvXDsMweOSRR3jkkUd46623ALj33nupV68en3/+OQ899FCxXkdERMo/wzB4YWYcGXk22kSH0bVhuGW1WBpuXnvtNTp16uQcQfj444/p27cv69evp0WLFkVeM2nSJEaNGsW3335L586defPNN7nqqqvYunUrNWvWLPEacwrsxLw4r8Rftzi2vnI1gb7F/yvasWMHw4cPx2azsWrVKtLS0pg9ezZgho5Ro0Yxbtw4fHx8+Prrr+nfvz/Vqp192LBnz56FNtFr0qQJ8fHxACQkJLB7925uueUW5/NhYWH069ePJUuWFAo3Z3sdEREp/+ZsTmL+1mR8vDx488ZWeHlat6WHpbelPv30U+68806io6OJiopizJgxGIbB6tWrz3jNuHHjuOeee7jxxhupWbMmEyZMoFKlSnz88cdlWLlrCgkJoVOnTvTs2ZOPPvqIPXv2OEdGbrzxRgoKCvjll19ITU1l5syZ3H333ed8zX/OnQHw8vJybnR48oiE8PDC6Tw8PJzk5ORiv46IiJRvx7PzeWmWOfXhgR4NaRwZbGk9LjOhOC8vj88//5yAgAB69uxZZJ9jx46xdetWxowZ42zz9PSkZ8+ezmXQJS3Ax4utr1xdKq9dnM99Pv45ofjf/P39ue222/j6669JSEigSpUq9O3b1/n8hdz+io6OBmD//v3UqVPH2b5//35q16593q8nIiLl02uzt3EkM5+GEUGM7NnA6nKsDzfz58/n2muvJT8/n9DQUKZNm0b9+vWL7JuYmAhAREREofaIiAjWrVt3xs+Rl5dHXl6e83F6enqx6/Pw8DivW0Ou7N5776Vdu3bs2LGDO+64o9BtoipVqpCamnper1etWjW6devGe++9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Bw9aXUq5YBgGu3btYvv27eTn55+xX1JSEn/99RdHjx4t9T7u7q+//mL16tVFPpeRkcHatWvZt2/fGa8vqT7u7Pjx46xbt460tLQin7fb7WzatInNmzfjcDhKtY+7stvt7Nq1i/Xr15OamnrGfnv27GHdunVkZWWVeh93sXnz5jP+jABzA9zNmzezadMm7Ha75X3OypCL9v777xsBAQFGs2bNjICAAOP66683cnNzrS7LZX344YdGdHS00ahRI6NRo0ZGeHi4MWnSpEJ9bDabcc899xj+/v5GTEyM4efnZ7z44oul0qci+P777w1PT0+jatWqpz33xRdfGIGBgUaTJk2MSpUqGX379jUyMzNLpY+7ys/PNx588EEjICDAaNeunREdHW289tprhfqsX7/eqFOnjlGzZk2jevXqRoMGDYzNmzeXSh93tXTpUqNu3bpGrVq1jLZt2xoBAQHG3XffbdhsNmef48ePGz179jSCg4ONxo0bG8HBwcZ3331X6HVKqo+7+Prrr402bdoYlStXLvJnhGEYxqZNm4wGDRoYUVFRRs2aNY06deoY69evt6zPuSjcXKRVq1YZHh4exqxZswzDMIyEhASjRo0axujRoy2uzHW9/PLLRkJCgvPxJ598Ynh5eRlbtmxxtr377rtGWFiYsWPHDsMwDGPZsmWGt7e3MXPmzBLv4+52795t1KxZ03jggQdO+8G1adMmw9PT0/j+++8NwzCMlJQUo27dusbDDz9c4n3c2YgRI4zo6Ghj9+7dhmGYofrTTz91Pp+fn2/Ur1/fuOOOOwzDMAyHw2EMHjzYaNq0qWG320u0jzurX7++MWzYMOfXunnzZsPb29v45ptvnH3uvPNOIyYmxjh+/LhhGObPFx8fH+ffTUn2cRfPPvussW7dOmPChAlFhhu73W40bdrUuOmmmwyHw2EYhmHcdtttRv369Y2CgoIy71McCjcX6b777jPatGlTqO355583IiMjLaqo/LHZbIaXl5fx1VdfOdtatWpljBgxolC/K6+80hg4cGCJ93FneXl5RocOHYz/+7//M8aPH3/aD65Ro0YZDRs2LNT2xhtvGKGhoc7/Gy6pPu7qwIEDhqen52mjj//0+++/G0ChX4wbNmwwAGPZsmUl2sedBQcHGx9++GGhtvDwcOOdd94xDMMwsrOzDX9//0LB0m63G5GRkcZLL71Uon3c0ZnCzdKlSw3AiIuLc7bt2LHDAIz58+eXeZ/i0JybixQbG0v79u0LtXXs2JHk5GQSExMtqqp8iY2NxW6307BhQwAKCgrYsmVLke9rbGxsifZxd6NHj6ZevXrccccdRT5/pu/ftLQ09uzZU6J93NXixYtxOBz079+fAwcOsGHDBjIzMwv1iY2NJTQ0lAYNGjjbWrduja+vr/N7saT6uLPXX3+dt99+m2+//Zb58+dz3333ERUVxe233w7Atm3byM3NLfS96OnpSfv27Z3vT0n1qUhiY2Px8/OjefPmzrbGjRsTEhJS6HuzrPoUh8LNRUpNTaVq1aqF2k4+PttkNzFlZWUxfPhwunfvzuWXXw6Yk7PtdnuR7+vJ97Sk+riz3377jalTp/LZZ5+dsU9xvn9Lqo+7OnToECEhITz11FN06dKFYcOGERERwdixY519inp/oPD3Ykn1cWf9+/enfv36PPPMMzz11FP89NNPjBw58rTvtbP9my+pPhVJWX7/ltT3eIU8Fbwk+fj4kJubW6gtJycHAF9fXytKKjdyc3O57rrryM/PZ8qUKXh4eADme3ry+X/Kyclxvqcl1cdd5eXlcccdd/Dwww+zZcsWAPbt24fNZmP58uU0btyYiIiIYn3/llQfd+Xj40N6ejo+Pj7s378fT09P5syZQ//+/enYsSNXXHFFke8PnP79WhJ93FVeXh49e/akd+/ezJs3Dy8vL7Zu3UqnTp3w8vJi+PDh+tlRSsry+7ekvsc1cnOR6tSpQ0JCQqG2hIQEPD09qVWrlkVVub68vDyuu+46Dh48yMKFC4mIiHA+FxoaSlhYWJHva+3atUu0j7sqKCigcePGzJs3j2effZZnn32W2bNnk5WVxbPPPsu6deuAM3//As73qKT6uKu6desCcN999+Hpaf5Iveaaa4iOjmbZsmWA+f4cOXKk0LYHWVlZpKWlFXoPS6KPu4qLi2Pfvn2MGDECLy8vAGJiYujZsyezZs0CzPcHOOu/+ZLqU5HUqVOHY8eOkZ2d7WzLy8vj6NGjhd6zsupTHAo3F+mqq65iwYIFhf4iZs6cSZcuXQgICLCwMtd1Mtjs27ePRYsWUb169dP6XHnllfzyyy/OxzabjdmzZ3PVVVeVeB93FBQUxPLlywt9jBw5ktDQUJYvX07fvn0B8/t36dKlhfZlmTlzJm3btnUODZdUH3fVo0cPfH19C/0izM7O5tixY1SrVg2AK664goKCAubOnevsM2vWLDw9PenVq1eJ9nFXJ9/L+Pj4Qu3x8fHO5+rWrUvDhg2dYQcgMTGRNWvWOP/Nl1SfiqRXr154enry66+/OtvmzJmDzWbjiiuuKPM+xVLsqcdSpPT0dKN+/fpG7969jZkzZxrPPPOM4e3tbSxZssTq0lzWtddeawQHBxtTp041li1b5vw4cOCAs8+mTZuMwMBAY8SIEcasWbOMG264wYiIiDASExNLvE9FUdRqqZycHCMmJsbo1q2bMWPGDOPFF180vLy8jN9++63E+7izMWPGGHXq1DEmTZpk/Prrr0bfvn2N6Oho4+jRo84+DzzwgFG9enVj0qRJxsSJE42qVasao0aNKvQ6JdXHXQ0cONCIjo42Jk6caPz222/GPffcY3h7extr1qxx9pk2bZrh7e1tvPbaa8b06dONjh07Gu3atSu0jLik+riLLVu2GMuWLTMeeeQRIzQ01PkzOSsry9nn8ccfN8LDw42JEycakyZNMiIjI40HH3yw0OuUZZ9z0angJSApKYk33niDzZs3ExkZyciRI+nSpYvVZbmsHj16YLPZTmu/7777nKseADZu3MiECRM4cOAATZo04emnn6ZevXqFrimpPhXB5MmT+fbbbwv9HxHAkSNHGDduHLGxsVStWpURI0bQs2fPUunjzr799lumTp1KQUEBrVu3ZtSoUc4RBTB31v3kk0+YPXs2Hh4eDBgwoNCtrJLs467y8/P5/PPPWbJkCenp6TRo0IAHHniAli1bFuo3b948vvzyS44dO8Yll1zCM888Q1hYWKn0cQfPPPMMK1asOK39m2++cf6sdDgcfP7558yaNQvDMOjXrx8PPPCA8xZhWfc5F4UbERERcSvuH/VFRESkQlG4EREREbeicCMiIiJuReFGRERE3IrCjYiIiLgVhRsRERFxKwo3IiIi4lYUbkSkROzYsYN58+ZZXQZ2u51ly5YxZcoUdu7caXU5ImIBnQouIsW2efNm9u3bR2RkJK1bt8bPz8/53C+//MK3337L1VdfbVl9hmFw5ZVXkpycTKtWrQgODqZx48aW1SMi1lC4EZFzSklJYcCAAezdu5dLLrmEY8eOcejQIV544QXuvvtuAJo2bUqfPn0srXPnzp0sXryYQ4cOERUVZWktImIdhRsROaenn36anJwc9u3b5zzt/siRIyxYsMDZp1GjRvj4+DgfT548+bTX8fT0ZMiQIc7Hu3fvJi4ujsjISNq1a1doJOhM1q1bx/79+4mOjuaSSy5xtu/cudP5ORcsWICPjw/XXXcd/v7+ha7fv38/f/75JwCVKlUiJiaGBg0aFOoTFxdHcnIyXbt2ZeXKlRw5coTBgwezcOFCqlWrRo0aNVi9ejWBgYH06NGDv/76i7///huA8PBwWrduXehcqU2bNpGUlETv3r0LfZ4NGzZw+PDhCnnStEhpUrgRkXOKi4ujc+fOzmAD5i/xm2++2fn437elZsyYUeg11q9fz/79+xkyZAg2m43hw4czZ84cLr30UuLj48nKymLmzJk0a9asyBqys7MZMGAAmzZtokOHDqxfv56mTZvyyy+/EBwczN9//82yZcuctXh6etK3b9/Tws3BgwedtWVkZLBs2TLuuOMOPvjgA2efadOm8c0331CpUiWqVatG9erVGTx4MK+88go2m42EhASaN29O586d6dGjB7GxsSxcuBAwD9Jdt24dn3zyCbfddhtgjnxde+21JCQkEB4e7vw8d911F71791a4ESlp53WGuIhUSCNHjjTCwsKMiRMnGsnJyUX2GT9+vNG6desin9u8ebMRFBRkvPnmm4ZhGMbrr79utGnTxkhPT3f2eeyxx4wuXbqcsYaXX37ZqF27tvPzHz582Khbt64xevRoZ59ly5YZgJGTk1Psr23//v1GaGiosXjxYmfbSy+9ZADGL7/8Uqhv9+7djbCwMOPgwYNnfc2ZM2caISEhzq/P4XAY9evXNyZMmODsExsbawDG9u3bi12riBSPVkuJyDm98cYbDBs2jFGjRhEZGUn9+vV56KGHSEpKOue1qampDBw4kIEDB/LUU08BMHHiRFq3bs28efOYOnUqU6ZMoWrVqvz555/k5uYW+TqTJ09m+PDhREREAObI0YgRI4q8/XUuubm5rFixgmnTprFy5Upq1KjBmjVrCvWpV68e/fv3P+3aQYMGUatWrdPajxw5wsKFC5kyZQqZmZlkZmayfft2ADw8PLj77ruZOHGis/9XX31Fly5daNKkyXnXLyJnp9tSInJOQUFBvP/++0yYMIHNmzezdOlS3nrrLWbPns3mzZsJCgoq8jqbzcaQIUOoUqUKX375pbN93759hIeHM23atEL9Bw8eTHZ29mm3ksCcK1O/fv1CbQ0aNODAgQMYhoGHh0exvpYVK1Zw/fXXEx4eToMGDQgMDOTYsWOkpKQU6nemCclFtX/wwQeMHj2aVq1aERUV5Zx79M/XvOuuu3jppZdYu3YtLVu25Pvvv2f8+PHFqllEzo/CjYgUm5eXF23atKFNmzZceumldOrUiZUrV542UfakJ554gi1btrB27dpCgSUkJITrrruOp59+utifOzw8nNTU1EJtqampVK1atdjBBuCpp57itttu4+2333a2dejQAcMwCvU702v+uz07O5vHH3+cn3/+mWuvvRaAzMxMfvzxx0KvWaNGDa655hq+/vprunfvTn5+fqHJ1SJScnRbSkTOae/evae1nbx9FBYWVuQ1EydO5LPPPuPnn3+mZs2ahZ7r06cPX3/9Nfn5+YXaExISzlhD165dmT59eqG2adOm0bVr1+J8CU5JSUmFbgXt2rWLTZs2nddr/NORI0ew2+2FXvPfI1InDR8+nB9++IFPPvmEIUOGnHHES0QujkZuROScnnnmGVJSUrjiiiuoXbs2+/fv55NPPqFPnz60b9/+tP6JiYk88MADXHPNNezbt499+/YBp5aCjxs3jssvv5xLL72UO+64A29vb5YvX05OTg4zZ84ssob//ve/XHLJJdxwww306dOH+fPns3r1alavXn1eX8t1113HmDFjyMvLo6CggAkTJhAYGHje78lJ0dHRtGvXjjvuuIPhw4eze/duvvrqKzw9T/9/x379+hEYGMiSJUt47bXXLvhzisjZKdyIyDlNmTKFFStW8Pvvv7No0SLCw8P5+OOPGTBgAF5eXkDhTfwMw+C6664DCi8J9/LyYsiQIdSsWZONGzcyadIk1q1bR3BwMDfccAM33HDDGWto0KABGzZs4IsvvmDZsmU0atSIcePGUa9ePWefatWqcdNNNzlrKsqbb75JkyZNWL16NZUqVeKbb75h1apVREdHO/u0aNGiyGt79epF06ZNC7V5eHgwf/58PvzwQ5YsWULNmjVZuXIlr7zyymkjVl5eXvTv358lS5bQpUuXM9YoIhfHw/j3jWYRESkVDoeDBg0aMHLkSJ588kmryxFxWxq5EREpAzNmzGD27NlkZ2dz3333WV2OiFvThGIRkTIwd+5cvLy8+P333wkJCbG6HBG3pttSIiIi4lY0ciMiIiJuReFGRERE3IrCjYiIiLgVhRsRERFxKwo3IiIi4lYUbkRERMStKNyIiIiIW1G4EREREbeicCMiIiJu5f8Bu7GwOhy2u+IAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], "source": [ "import matplotlib.pyplot as plt\n", "\n", @@ -1562,15 +270,9 @@ "plt.ylabel(\"Time(s)\")\n", "plt.legend([\"Python\", \"Rust\"])\n", "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Caution - The rust version differs from the python version by max 1\n", - "\n" - ] + ], + "outputs": [], + "execution_count": null } ], "metadata": { From 4d9dbcf261f7ad0a01f5b00cebd1605df1c279e9 Mon Sep 17 00:00:00 2001 From: abdol Date: Fri, 30 Oct 2026 06:45:00 +0000 Subject: [PATCH 11/14] :rotating_light: Fix import lint error --- ...ring_misc_functions_in_rust_v_python.ipynb | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/benchmarks/comparing_misc_functions_in_rust_v_python.ipynb b/benchmarks/comparing_misc_functions_in_rust_v_python.ipynb index 54eae33fc7..57b01288f8 100644 --- a/benchmarks/comparing_misc_functions_in_rust_v_python.ipynb +++ b/benchmarks/comparing_misc_functions_in_rust_v_python.ipynb @@ -1,16 +1,16 @@ { "cells": [ { - "metadata": {}, "cell_type": "markdown", + "metadata": {}, "source": [ "# Benchmarking in Rust: Constract Enhancer\n", "\n" ] }, { - "metadata": {}, "cell_type": "markdown", + "metadata": {}, "source": [ "This work focuses on converting code in tiatoolbox/utils/misc.py from Python to Rust with the aim of reducing the time it takes to run the code. Namely, this notebook benchmarks the contrast enhancer using a Rust implementation and compares performance with a Python implementation.\n", "\n", @@ -20,33 +20,35 @@ ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "step1 = 100\n", "step2 = 1000" ] }, { - "metadata": {}, "cell_type": "markdown", + "metadata": {}, "source": [ "## Contrast Enhancer with Rust\n", "\n" ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "import numpy as np\n", "from skimage import exposure\n", + "\n", "import tiatoolbox.rust.utils.misc as rmisc\n", "\n", + "\n", "def rust_contrast_enhancer(\n", " img: np.ndarray, low_p: int = 2, high_p: int = 98\n", ") -> np.ndarray:\n", @@ -93,18 +95,18 @@ ] }, { - "metadata": {}, "cell_type": "markdown", + "metadata": {}, "source": [ "## Contrast Enhancer in Python\n", "\n" ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "def py_contrast_enhancer(\n", " img: np.ndarray, low_p: int = 2, high_p: int = 98\n", @@ -147,18 +149,18 @@ ] }, { - "metadata": {}, "cell_type": "markdown", + "metadata": {}, "source": [ "## Comparison of speed it takes to run code in rust vs python\n", "\n" ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "import time\n", "\n", @@ -193,10 +195,10 @@ ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "\n", From 8997db24fe9d6936927a81e9483ef6c86d4dc1e7 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 30 Oct 2026 06:45:53 +0000 Subject: [PATCH 12/14] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- benchmarks/comparing_misc_functions_in_rust_v_python.ipynb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/benchmarks/comparing_misc_functions_in_rust_v_python.ipynb b/benchmarks/comparing_misc_functions_in_rust_v_python.ipynb index 57b01288f8..89fd20ecdb 100644 --- a/benchmarks/comparing_misc_functions_in_rust_v_python.ipynb +++ b/benchmarks/comparing_misc_functions_in_rust_v_python.ipynb @@ -16,7 +16,8 @@ "\n", "Rust is a programming language that is proven to be faster than Python, especially for CPU bound operations and processing large amounts of data.\n", "\n", - "It tests how long it runs in Python and in Rust using different sized inputs. Each input size has multiple tests and the average of all the tests is taken to minimise the impact of any outliers. The x axis shows the size of the input and the y axis shows the average time taken of each input of size x." + "It tests how long it runs in Python and in Rust using different sized inputs. Each input size has multiple tests and the average of all the tests is taken to minimise the impact of any outliers. The x axis shows the size of the input and the y axis shows the average time taken of each input of size x.\n", + "\n" ] }, { From 89264a168f9561f58898a4f803cf9f797a8a0c64 Mon Sep 17 00:00:00 2001 From: abdol Date: Fri, 30 Oct 2026 07:19:26 +0000 Subject: [PATCH 13/14] :rotating_light: Fix compile error on macOS --- .cargo/config.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .cargo/config.toml diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000000..9e6d03be69 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,5 @@ +[target.aarch64-apple-darwin] +rustflags = [ + "-C", "link-arg=-undefined", + "-C", "link-arg=dynamic_lookup", +] From bccb5b1c2e03c78e98b86b81ea07214f14ea1fd8 Mon Sep 17 00:00:00 2001 From: abdol Date: Fri, 30 Oct 2026 07:20:13 +0000 Subject: [PATCH 14/14] :memo: Add docstring to Rust module --- tiatoolbox/rust/utils/misc/src/lib.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/tiatoolbox/rust/utils/misc/src/lib.rs b/tiatoolbox/rust/utils/misc/src/lib.rs index 84683a7bdd..a38668b9f1 100644 --- a/tiatoolbox/rust/utils/misc/src/lib.rs +++ b/tiatoolbox/rust/utils/misc/src/lib.rs @@ -73,6 +73,7 @@ fn contrast_enhancer<'py>( rust_contrast_enhancer(data, low_p, high_p).into_pyarray(py) } +/// Contrast enhancer implemented in Rust. #[pymodule] fn misc(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_function(wrap_pyfunction!(contrast_enhancer, m)?)?;