diff --git a/README.md b/README.md
index a25464b..98b49c3 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,8 @@
-# titiler-stacapi
+# titiler-stacapi-mspc
-
Connect titiler to STAC APIs
+ Connect titiler to MS Planetary Computer STAC API
diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml
index a2f0f9f..c8caaec 100644
--- a/docs/mkdocs.yml
+++ b/docs/mkdocs.yml
@@ -1,8 +1,8 @@
site_name: TiTiler.STACApi
site_description: Connect titiler to STAC APIs.
-docs_dir: 'src'
-site_dir: 'build'
+docs_dir: "src"
+site_dir: "build"
repo_name: developmentseed/titiler-stacapi
repo_url: https://github.com/developmentseed/titiler-stacapi
@@ -17,13 +17,10 @@ extra:
nav:
- Home: index.md
- Endpoints:
- - endpoints/index.md
- - OGC WMTS: endpoints/ogc_wmts_endpoints.md
- - Collections: endpoints/collections_endpoints.md
- - Items: endpoints/items_endpoints.md
- - TileMatrixSet: endpoints/tms_endpoints.md
- - Customization:
- - Authentication: custom/application_with_auth.md
+ - endpoints/index.md
+ - Collections: endpoints/collections_endpoints.md
+ - Items: endpoints/items_endpoints.md
+ - TileMatrixSet: endpoints/tms_endpoints.md
- Technical Considerations: technical-considerations.md
- Development - Contributing: contributing.md
- Release notes: release-notes.md
@@ -37,7 +34,6 @@ theme:
features:
- navigation.indexes
-
# https://github.com/kylebarron/cogeo-mosaic/blob/mkdocs/mkdocs.yml#L50-L75
markdown_extensions:
- admonition
diff --git a/docs/src/custom/application_with_auth.md b/docs/src/custom/application_with_auth.md
deleted file mode 100644
index 27a617c..0000000
--- a/docs/src/custom/application_with_auth.md
+++ /dev/null
@@ -1,88 +0,0 @@
-
-
-Goal: add `Authentication` forwarding to the `/wmts` endpoints
-
-requirements: titiler.stacapi
-
-
-```python
-"""TiTiler+stacapi FastAPI application."""
-
-
-from fastapi import Depends, FastAPI
-from fastapi.security import APIKeyHeader
-from starlette.middleware.cors import CORSMiddleware
-from starlette.requests import Request
-from typing_extensions import Annotated
-
-import morecantile
-from titiler.core.errors import DEFAULT_STATUS_CODES, add_exception_handlers
-from titiler.core.middleware import CacheControlMiddleware
-from titiler.mosaic.errors import MOSAIC_STATUS_CODES
-from titiler.stacapi import __version__ as titiler_stacapi_version
-from titiler.stacapi.dependencies import APIParams
-from titiler.stacapi.factory import OGCWMTSFactory
-from titiler.stacapi.settings import ApiSettings, STACAPISettings
-
-settings = ApiSettings()
-stacapi_config = STACAPISettings()
-
-
-header_scheme = APIKeyHeader(name="Authorization", description="STAC API Authorization")
-
-
-def STACApiParamsAuth(
- request: Request,
- token: Annotated[str, Depends(header_scheme)],
-) -> APIParams:
- """Return STAC API Parameters."""
- return APIParams(
- api_url=request.app.state.stac_url,
- headers={"Authorization": token},
- )
-
-
-app = FastAPI(
- title=settings.name,
- openapi_url="/api",
- docs_url="/api.html",
- description="""Connect titiler to STAC APIs.""",
- version=titiler_stacapi_version,
- root_path=settings.root_path,
-)
-
-# We store the STAC API url in the application state
-app.state.stac_url = stacapi_config.stac_api_url
-
-add_exception_handlers(app, DEFAULT_STATUS_CODES)
-add_exception_handlers(app, MOSAIC_STATUS_CODES)
-
-# Set all CORS enabled origins
-if settings.cors_origins:
- app.add_middleware(
- CORSMiddleware,
- allow_origins=settings.cors_origins,
- allow_credentials=True,
- allow_methods=["GET"],
- allow_headers=["*"],
- )
-
-app.add_middleware(CacheControlMiddleware, cachecontrol=settings.cachecontrol)
-
-webmerc = morecantile.tms.get("WebMercatorQuad")
-webmerc.id = "EPSG:3857"
-supported_tms = morecantile.TileMatrixSets({"EPSG:3857": webmerc})
-
-###############################################################################
-# OGC WMTS Endpoints
-wmts = OGCWMTSFactory(
- path_dependency=STACApiParamsAuth,
- supported_tms=supported_tms,
-)
-
-app.include_router(
- wmts.router,
- tags=["Web Map Tile Service"],
-)
-
-```
diff --git a/docs/src/endpoints/collections_endpoints.md b/docs/src/endpoints/collections_endpoints.md
index 9c99384..c9bcbd0 100644
--- a/docs/src/endpoints/collections_endpoints.md
+++ b/docs/src/endpoints/collections_endpoints.md
@@ -6,7 +6,6 @@
| ------ | ---------------------------------------------------------------------------------|-----------------------------------------|--------------
| `GET` | `/collections/{collection_id}/tiles/{TileMatrixSetId}/{z}/{x}/{y}[@{scale}x][.{format}]` | image/bin | Create a web map tile image for a collection and a tile index
| `GET` | `/collections/{collection_id}/{TileMatrixSetId}/tilejson.json` | JSON ([TileJSON][tilejson_model]) | Return a Mapbox TileJSON document
-| `GET` | `/collections/{collection_id}/{TileMatrixSetId}/WMTSCapabilities.xml` | XML | return OGC WMTS Get Capabilities
| `GET` | `/collections/{collection_id}/{TileMatrixSetId}/map` | HTML | simple map viewer
### Tiles
@@ -106,29 +105,4 @@ Example:
- `https://myendpoint/collections/my-collection/WebMercatorQuad/tilejson.json?assets=B01&tile_format=png`
- `https://myendpoint/collections/my-collection/WorldCRS84Quad/tilejson.json?assets=B01&tile_scale=2`
-
-### WMTS
-
-`:endpoint:/collections/{collection_id}/{TileMatrixSetId}/WMTSCapabilities.xml`
-
-- PathParams:
- - **collection_id**: STAC Collection Identifier.
- - **TileMatrixSetId**: TileMatrixSet name (e.g `WebMercatorQuad`).
-
-- QueryParams:
- - **tile_format**: Output image format, default is set to PNG.
- - **tile_scale**: Tile size scale, default is set to 1 (256x256). OPTIONAL
- - **minzoom**: Overwrite default minzoom. OPTIONAL
- - **maxzoom**: Overwrite default maxzoom. OPTIONAL
-
-!!! important
- additional query-parameters will be forwarded to the `tile` URL. If no `defaults` mosaic metadata, **assets** OR **expression** will be required
-
-Example:
-
-- `https://myendpoint/collections/my-collection/WebMercatorQuad/WMTSCapabilities.xml?assets=B01`
-- `https://myendpoint/collections/my-collection/WebMercatorQuad/WMTSCapabilities.xml?assets=B01&tile_format=png`
-- `https://myendpoint/collections/my-collection/WorldCRS84Quad/WMTSCapabilities.xml?assets=B01&tile_scale=2`
-
-
[tilejson_model]: https://github.com/developmentseed/titiler/blob/2335048a407f17127099cbbc6c14e1328852d619/src/titiler/core/titiler/core/models/mapbox.py#L16-L38
diff --git a/docs/src/endpoints/items_endpoints.md b/docs/src/endpoints/items_endpoints.md
index 5934a41..12310c4 100644
--- a/docs/src/endpoints/items_endpoints.md
+++ b/docs/src/endpoints/items_endpoints.md
@@ -13,7 +13,6 @@ The `Item` endpoints are created using TiTiler's [MultiBaseTilerFactory](https:/
| `POST` | `/collections/{collection_id}/items/{item_id}/statistics` | GeoJSON ([Statistics][multistats_geojson_model]) | return assets statistics for a GeoJSON (merged)
| `GET` | `/collections/{collection_id}/items/{item_id}/tiles[/{TileMatrixSetId}]/{z}/{x}/{y}[@{scale}x][.{format}]` | image/bin | create a web map tile image from assets
| `GET` | `/collections/{collection_id}/items/{item_id}[/{TileMatrixSetId}]/tilejson.json` | JSON ([TileJSON][tilejson_model]) | return a Mapbox TileJSON document
-| `GET` | `/collections/{collection_id}/items/{item_id}[/{TileMatrixSetId}]/WMTSCapabilities.xml` | XML | return OGC WMTS Get Capabilities
| `GET` | `/collections/{collection_id}/items/{item_id}[/{TileMatrixSetId}]/map` | HTML | simple map viewer
| `GET` | `/collections/{collection_id}/items/{item_id}/point/{lon},{lat}` | JSON ([Point][multipoint_model]) | return pixel values from assets
| `GET` | `/collections/{collection_id}/items/{item_id}/preview[.{format}]` | image/bin | create a preview image from assets
diff --git a/docs/src/endpoints/ogc_wmts_endpoints.md b/docs/src/endpoints/ogc_wmts_endpoints.md
deleted file mode 100644
index d7c0c08..0000000
--- a/docs/src/endpoints/ogc_wmts_endpoints.md
+++ /dev/null
@@ -1,62 +0,0 @@
-
-### OGC WMTS endpoints
-
-
-| Method | URL | Output | Description
-| ------ | ------------------------------------------------------------------------------------|------------------------------|--------------
-| `GET` | `/wmts` | XML or image/bin or GeoJSON | OGC Web map tile service (KVP encoding)
-| `GET` | `/{LAYER}/{STYLE}/{TIME}/{TileMatrixSet}/{TileMatrix}/{TileCol}/{TileRow}.{FORMAT}` | image/bin | return a web map tile image
-
-### WMTS (GetCapabilities / GetTile / GetFeatureInfo) - KVP Encoding
-
-`:endpoint:/wmts`
-
-- QueryParams:
-
- - `GetCapabilities`:
-
- - **Request** ([`GetCapabilities`, `GetTile`, `GetFeatureInfo`]): Operation name
- - **Service** ([`wmts`]): Service type identifier
- - **Version** ([`1.0.0`], optional): Standard and schema version
-
- - `GetTile`:
-
- - **Layer** (str): Layer identifier
- - **Format** (str): Output image format
- - **Style** (str): Style identifier
- - **TileMatrixSet** (str): TileMatrixSet identifier
- - **TileMatrix** (int): TileMatrix identifier
- - **TileRow** (int): Row index of tile matrix
- - **TileCol** (int): Column index of tile matrix
- - **Time** (str, Optional): TIME Dimension
-
- - `GetFeatureInfo`:
-
- - **I** (int): Column index of a pixel in the tile
- - **J** (int): Row index of a pixel in the tile
- - **InfoFormat** ([`application/geo+json`]): Output format of the retrieved information
-
-Example:
-
-- `https://myendpoint/wmts?Request=GetCapabilities&Services=wmts&Version=1.0.0`
-- `https://myendpoint/wmts?Request=GetTiles&Services=wmts&Version=1.0.0&Style=default&Layer=MyLayer&TileMatrixSet=WebMercatorQuad&TileMatrix=0&TileRow=0&TileCol=0&Time=2023-01-01&Format=image/png`
-- `https://myendpoint/wmts?Request=GetTiles&Services=wmts&Version=1.0.0&Style=default&Layer=MyLayer&TileMatrixSet=WebMercatorQuad&TileMatrix=0&TileRow=0&TileCol=0&Time=2023-01-01&Format=image/png&I=100&J=100&InfoFormat="application/geo+json`
-
-
-### GetTile - REST
-
-`:endpoint:/{LAYER}/{STYLE}/{TIME}/{TileMatrixSet}/{TileMatrix}/{TileCol}/{TileRow}.{FORMAT}`
-
-- PathParams:
- - **Layer** (str): Layer identifier
- - **Style** (str): Style identifier
- - **Time** (str): TIME Dimension
- - **TileMatrixSet** (str): TileMatrixSet identifier
- - **TileMatrix** (int): TileMatrix identifier
- - **TileRow** (int): Row index of tile matrix
- - **TileCol** (int): Column index of tile matrix
- - **Format** (str): Output image format
-
-Example:
-
-- `https://myendpoint/MyLayer/default/2023-01-01/WebMercatorQuad/0/0/0.png
diff --git a/notebooks/demo_wmts_eoapi.ipynb b/notebooks/demo_wmts_eoapi.ipynb
deleted file mode 100644
index f52b443..0000000
--- a/notebooks/demo_wmts_eoapi.ipynb
+++ /dev/null
@@ -1,350 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Requirements\n",
- "\n",
- "- httpx\n",
- "- folium\n",
- "- owslib\n",
- "\n",
- "`!python -m pip install httpx folium owslib`\n",
- "\n",
- "By default this notebook will assume you have titiler-stacfastpi application running locally \n",
- "\n",
- "```\n",
- "uvicorn titiler.stacapi.main:app --port 8000\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n"
- ]
- }
- ],
- "source": [
- "import httpx\n",
- "\n",
- "endpoint = \"http://127.0.0.1:8000\"\n",
- "\n",
- "resp = httpx.get(endpoint)\n",
- "print(resp)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "Headers({'date': 'Wed, 17 Apr 2024 11:13:58 GMT', 'server': 'uvicorn', 'content-length': '3911270', 'content-type': 'application/xml', 'cache-control': 'public, max-age=3600'})\n"
- ]
- }
- ],
- "source": [
- "resp = httpx.get(\n",
- " f\"{endpoint}/wmts\",\n",
- " params={\n",
- " \"service\": \"wmts\", # Mandatory\n",
- " \"request\": \"GetCapabilities\", # Mandatory\n",
- " \"version\": \"1.0.0\", # Optional\n",
- " },\n",
- ")\n",
- "print(resp)\n",
- "print(resp.headers)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "http://127.0.0.1:8000/wmts?service=wmts&request=GetCapabilities&version=1.0.0\n"
- ]
- }
- ],
- "source": [
- "print(resp.url)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Service: OGC WMTS, title=Web Map Tile Service\n",
- "\n",
- "MAXAR_BayofBengal_Cyclone_Mocha_May_23_visual\n",
- "MAXAR_ghana_explosion22_visual\n",
- "MAXAR_kentucky_flooding_7_29_2022_visual\n",
- "MAXAR_Emilia_Romagna_Italy_flooding_may23_visual\n",
- "MAXAR_Gambia_flooding_8_11_2022_visual\n",
- "MAXAR_Hurricane_Fiona_9_19_2022_visual\n",
- "MAXAR_Hurricane_Ian_9_26_2022_visual\n",
- "MAXAR_Hurricane_Idalia_Florida_Aug23_visual\n",
- "MAXAR_India_Floods_Oct_2023_visual\n",
- "MAXAR_Indonesia_Earthquake22_visual\n",
- "MAXAR_Kahramanmaras_turkey_earthquake_23_visual\n",
- "MAXAR_Kalehe_DRC_Flooding_5_8_23_visual\n",
- "MAXAR_Libya_Floods_Sept_2023_visual\n",
- "MAXAR_Marshall_Fire_21_Update_visual\n",
- "MAXAR_Maui_Hawaii_fires_Aug_23_visual\n",
- "MAXAR_McDougallCreekWildfire_BC_Canada_Aug_23_visual\n",
- "MAXAR_Morocco_Earthquake_Sept_2023_visual\n",
- "MAXAR_NWT_Canada_Aug_23_visual\n",
- "MAXAR_Nepal_Earthquake_Nov_2023_visual\n",
- "MAXAR_New_Zealand_Flooding23_visual\n",
- "MAXAR_Sudan_flooding_8_22_2022_visual\n",
- "MAXAR_afghanistan_earthquake22_visual\n",
- "MAXAR_cyclone_emnati22_visual\n",
- "MAXAR_pakistan_flooding22_visual\n",
- "MAXAR_shovi_georgia_landslide_8Aug23_visual\n",
- "MAXAR_southafrica_flooding22_visual\n",
- "MAXAR_tonga_volcano21_visual\n",
- "MAXAR_volcano_indonesia21_visual\n",
- "MAXAR_yellowstone_flooding22_visual\n",
- "\n",
- "Layer Name: MAXAR_Emilia_Romagna_Italy_flooding_may23_visual Title: None\n",
- "(11.486376265966378, 43.78329841260962, 12.710788, 44.53512165841268)\n",
- "\n",
- "Supported TMS:\n",
- "{'CDB1GlobalGrid': , 'CanadianNAD83_LCC': , 'EuropeanETRS89_LAEAQuad': , 'GNOSISGlobalGrid': , 'LINZAntarticaMapTilegrid': , 'NZTM2000Quad': , 'UPSAntarcticWGS84Quad': , 'UPSArcticWGS84Quad': , 'UTM31WGS84Quad': , 'WGS1984Quad': , 'WebMercatorQuad': , 'WorldCRS84Quad': , 'WorldMercatorWGS84Quad': }\n",
- "\n",
- "TMS Limits:\n",
- "{}\n",
- "\n",
- "Layer dimensions\n",
- "{'TIME': {'values': ['2015-05-28', '2015-05-29', '2015-05-30', '2015-05-31', '2015-06-01', '2015-06-02', '2015-06-03', '2015-06-04', '2015-06-05', '2015-06-06', '2015-06-07', '2015-06-08', '2015-06-09', '2015-06-10', '2015-06-11', '2015-06-12', '2015-06-13', '2015-06-14', '2015-06-15', '2015-06-16', '2015-06-17', '2015-06-18', '2015-06-19', '2015-06-20', '2015-06-21', '2015-06-22', '2015-06-23', '2015-06-24', '2015-06-25', '2015-06-26', '2015-06-27', '2015-06-28', '2015-06-29', '2015-06-30', '2015-07-01', '2015-07-02', '2015-07-03', '2015-07-04', '2015-07-05', '2015-07-06', '2015-07-07', '2015-07-08', '2015-07-09', '2015-07-10', '2015-07-11', '2015-07-12', '2015-07-13', '2015-07-14', '2015-07-15', '2015-07-16', '2015-07-17', '2015-07-18', '2015-07-19', '2015-07-20', '2015-07-21', '2015-07-22', '2015-07-23', '2015-07-24', '2015-07-25', '2015-07-26', '2015-07-27', '2015-07-28', '2015-07-29', '2015-07-30', '2015-07-31', '2015-08-01', '2015-08-02', '2015-08-03', '2015-08-04', '2015-08-05', '2015-08-06', '2015-08-07', '2015-08-08', '2015-08-09', '2015-08-10', '2015-08-11', '2015-08-12', '2015-08-13', '2015-08-14', '2015-08-15', '2015-08-16', '2015-08-17', '2015-08-18', '2015-08-19', '2015-08-20', '2015-08-21', '2015-08-22', '2015-08-23', '2015-08-24', '2015-08-25', '2015-08-26', '2015-08-27', '2015-08-28', '2015-08-29', '2015-08-30', '2015-08-31', '2015-09-01', '2015-09-02', '2015-09-03', '2015-09-04', '2015-09-05', '2015-09-06', '2015-09-07', '2015-09-08', '2015-09-09', '2015-09-10', '2015-09-11', '2015-09-12', '2015-09-13', '2015-09-14', '2015-09-15', '2015-09-16', '2015-09-17', '2015-09-18', '2015-09-19', '2015-09-20', '2015-09-21', '2015-09-22', '2015-09-23', '2015-09-24', '2015-09-25', '2015-09-26', '2015-09-27', '2015-09-28', '2015-09-29', '2015-09-30', '2015-10-01', '2015-10-02', '2015-10-03', '2015-10-04', '2015-10-05', '2015-10-06', '2015-10-07', '2015-10-08', '2015-10-09', '2015-10-10', '2015-10-11', '2015-10-12', '2015-10-13', '2015-10-14', '2015-10-15', '2015-10-16', '2015-10-17', '2015-10-18', '2015-10-19', '2015-10-20', '2015-10-21', '2015-10-22', '2015-10-23', '2015-10-24', '2015-10-25', '2015-10-26', '2015-10-27', '2015-10-28', '2015-10-29', '2015-10-30', '2015-10-31', '2015-11-01', '2015-11-02', '2015-11-03', '2015-11-04', '2015-11-05', '2015-11-06', '2015-11-07', '2015-11-08', '2015-11-09', '2015-11-10', '2015-11-11', '2015-11-12', '2015-11-13', '2015-11-14', '2015-11-15', '2015-11-16', '2015-11-17', '2015-11-18', '2015-11-19', '2015-11-20', '2015-11-21', '2015-11-22', '2015-11-23', '2015-11-24', '2015-11-25', '2015-11-26', '2015-11-27', '2015-11-28', '2015-11-29', '2015-11-30', '2015-12-01', '2015-12-02', '2015-12-03', '2015-12-04', '2015-12-05', '2015-12-06', '2015-12-07', '2015-12-08', '2015-12-09', '2015-12-10', '2015-12-11', '2015-12-12', '2015-12-13', '2015-12-14', '2015-12-15', '2015-12-16', '2015-12-17', '2015-12-18', '2015-12-19', '2015-12-20', '2015-12-21', '2015-12-22', '2015-12-23', '2015-12-24', '2015-12-25', '2015-12-26', '2015-12-27', '2015-12-28', '2015-12-29', '2015-12-30', '2015-12-31', '2016-01-01', '2016-01-02', '2016-01-03', '2016-01-04', '2016-01-05', '2016-01-06', '2016-01-07', '2016-01-08', '2016-01-09', '2016-01-10', '2016-01-11', '2016-01-12', '2016-01-13', '2016-01-14', '2016-01-15', '2016-01-16', '2016-01-17', '2016-01-18', '2016-01-19', '2016-01-20', '2016-01-21', '2016-01-22', '2016-01-23', '2016-01-24', '2016-01-25', '2016-01-26', '2016-01-27', '2016-01-28', '2016-01-29', '2016-01-30', '2016-01-31', '2016-02-01', '2016-02-02', '2016-02-03', '2016-02-04', '2016-02-05', '2016-02-06', '2016-02-07', '2016-02-08', '2016-02-09', '2016-02-10', '2016-02-11', '2016-02-12', '2016-02-13', '2016-02-14', '2016-02-15', '2016-02-16', '2016-02-17', '2016-02-18', '2016-02-19', '2016-02-20', '2016-02-21', '2016-02-22', '2016-02-23', '2016-02-24', '2016-02-25', '2016-02-26', '2016-02-27', '2016-02-28', '2016-02-29', '2016-03-01', '2016-03-02', '2016-03-03', '2016-03-04', '2016-03-05', '2016-03-06', '2016-03-07', '2016-03-08', '2016-03-09', '2016-03-10', '2016-03-11', '2016-03-12', '2016-03-13', '2016-03-14', '2016-03-15', '2016-03-16', '2016-03-17', '2016-03-18', '2016-03-19', '2016-03-20', '2016-03-21', '2016-03-22', '2016-03-23', '2016-03-24', '2016-03-25', '2016-03-26', '2016-03-27', '2016-03-28', '2016-03-29', '2016-03-30', '2016-03-31', '2016-04-01', '2016-04-02', '2016-04-03', '2016-04-04', '2016-04-05', '2016-04-06', '2016-04-07', '2016-04-08', '2016-04-09', '2016-04-10', '2016-04-11', '2016-04-12', '2016-04-13', '2016-04-14', '2016-04-15', '2016-04-16', '2016-04-17', '2016-04-18', '2016-04-19', '2016-04-20', '2016-04-21', '2016-04-22', '2016-04-23', '2016-04-24', '2016-04-25', '2016-04-26', '2016-04-27', '2016-04-28', '2016-04-29', '2016-04-30', '2016-05-01', '2016-05-02', '2016-05-03', '2016-05-04', '2016-05-05', '2016-05-06', '2016-05-07', '2016-05-08', '2016-05-09', '2016-05-10', '2016-05-11', '2016-05-12', '2016-05-13', '2016-05-14', '2016-05-15', '2016-05-16', '2016-05-17', '2016-05-18', '2016-05-19', '2016-05-20', '2016-05-21', '2016-05-22', '2016-05-23', '2016-05-24', '2016-05-25', '2016-05-26', '2016-05-27', '2016-05-28', '2016-05-29', '2016-05-30', '2016-05-31', '2016-06-01', '2016-06-02', '2016-06-03', '2016-06-04', '2016-06-05', '2016-06-06', '2016-06-07', '2016-06-08', '2016-06-09', '2016-06-10', '2016-06-11', '2016-06-12', '2016-06-13', '2016-06-14', '2016-06-15', '2016-06-16', '2016-06-17', '2016-06-18', '2016-06-19', '2016-06-20', '2016-06-21', '2016-06-22', '2016-06-23', '2016-06-24', '2016-06-25', '2016-06-26', '2016-06-27', '2016-06-28', '2016-06-29', '2016-06-30', '2016-07-01', '2016-07-02', '2016-07-03', '2016-07-04', '2016-07-05', '2016-07-06', '2016-07-07', '2016-07-08', '2016-07-09', '2016-07-10', '2016-07-11', '2016-07-12', '2016-07-13', '2016-07-14', '2016-07-15', '2016-07-16', '2016-07-17', '2016-07-18', '2016-07-19', '2016-07-20', '2016-07-21', '2016-07-22', '2016-07-23', '2016-07-24', '2016-07-25', '2016-07-26', '2016-07-27', '2016-07-28', '2016-07-29', '2016-07-30', '2016-07-31', '2016-08-01', '2016-08-02', '2016-08-03', '2016-08-04', '2016-08-05', '2016-08-06', '2016-08-07', '2016-08-08', '2016-08-09', '2016-08-10', '2016-08-11', '2016-08-12', '2016-08-13', '2016-08-14', '2016-08-15', '2016-08-16', '2016-08-17', '2016-08-18', '2016-08-19', '2016-08-20', '2016-08-21', '2016-08-22', '2016-08-23', '2016-08-24', '2016-08-25', '2016-08-26', '2016-08-27', '2016-08-28', '2016-08-29', '2016-08-30', '2016-08-31', '2016-09-01', '2016-09-02', '2016-09-03', '2016-09-04', '2016-09-05', '2016-09-06', '2016-09-07', '2016-09-08', '2016-09-09', '2016-09-10', '2016-09-11', '2016-09-12', '2016-09-13', '2016-09-14', '2016-09-15', '2016-09-16', '2016-09-17', '2016-09-18', '2016-09-19', '2016-09-20', '2016-09-21', '2016-09-22', '2016-09-23', '2016-09-24', '2016-09-25', '2016-09-26', '2016-09-27', '2016-09-28', '2016-09-29', '2016-09-30', '2016-10-01', '2016-10-02', '2016-10-03', '2016-10-04', '2016-10-05', '2016-10-06', '2016-10-07', '2016-10-08', '2016-10-09', '2016-10-10', '2016-10-11', '2016-10-12', '2016-10-13', '2016-10-14', '2016-10-15', '2016-10-16', '2016-10-17', '2016-10-18', '2016-10-19', '2016-10-20', '2016-10-21', '2016-10-22', '2016-10-23', '2016-10-24', '2016-10-25', '2016-10-26', '2016-10-27', '2016-10-28', '2016-10-29', '2016-10-30', '2016-10-31', '2016-11-01', '2016-11-02', '2016-11-03', '2016-11-04', '2016-11-05', '2016-11-06', '2016-11-07', '2016-11-08', '2016-11-09', '2016-11-10', '2016-11-11', '2016-11-12', '2016-11-13', '2016-11-14', '2016-11-15', '2016-11-16', '2016-11-17', '2016-11-18', '2016-11-19', '2016-11-20', '2016-11-21', '2016-11-22', '2016-11-23', '2016-11-24', '2016-11-25', '2016-11-26', '2016-11-27', '2016-11-28', '2016-11-29', '2016-11-30', '2016-12-01', '2016-12-02', '2016-12-03', '2016-12-04', '2016-12-05', '2016-12-06', '2016-12-07', '2016-12-08', '2016-12-09', '2016-12-10', '2016-12-11', '2016-12-12', '2016-12-13', '2016-12-14', '2016-12-15', '2016-12-16', '2016-12-17', '2016-12-18', '2016-12-19', '2016-12-20', '2016-12-21', '2016-12-22', '2016-12-23', '2016-12-24', '2016-12-25', '2016-12-26', '2016-12-27', '2016-12-28', '2016-12-29', '2016-12-30', '2016-12-31', '2017-01-01', '2017-01-02', '2017-01-03', '2017-01-04', '2017-01-05', '2017-01-06', '2017-01-07', '2017-01-08', '2017-01-09', '2017-01-10', '2017-01-11', '2017-01-12', '2017-01-13', '2017-01-14', '2017-01-15', '2017-01-16', '2017-01-17', '2017-01-18', '2017-01-19', '2017-01-20', '2017-01-21', '2017-01-22', '2017-01-23', '2017-01-24', '2017-01-25', '2017-01-26', '2017-01-27', '2017-01-28', '2017-01-29', '2017-01-30', '2017-01-31', '2017-02-01', '2017-02-02', '2017-02-03', '2017-02-04', '2017-02-05', '2017-02-06', '2017-02-07', '2017-02-08', '2017-02-09', '2017-02-10', '2017-02-11', '2017-02-12', '2017-02-13', '2017-02-14', '2017-02-15', '2017-02-16', '2017-02-17', '2017-02-18', '2017-02-19', '2017-02-20', '2017-02-21', '2017-02-22', '2017-02-23', '2017-02-24', '2017-02-25', '2017-02-26', '2017-02-27', '2017-02-28', '2017-03-01', '2017-03-02', '2017-03-03', '2017-03-04', '2017-03-05', '2017-03-06', '2017-03-07', '2017-03-08', '2017-03-09', '2017-03-10', '2017-03-11', '2017-03-12', '2017-03-13', '2017-03-14', '2017-03-15', '2017-03-16', '2017-03-17', '2017-03-18', '2017-03-19', '2017-03-20', '2017-03-21', '2017-03-22', '2017-03-23', '2017-03-24', '2017-03-25', '2017-03-26', '2017-03-27', '2017-03-28', '2017-03-29', '2017-03-30', '2017-03-31', '2017-04-01', '2017-04-02', '2017-04-03', '2017-04-04', '2017-04-05', '2017-04-06', '2017-04-07', '2017-04-08', '2017-04-09', '2017-04-10', '2017-04-11', '2017-04-12', '2017-04-13', '2017-04-14', '2017-04-15', '2017-04-16', '2017-04-17', '2017-04-18', '2017-04-19', '2017-04-20', '2017-04-21', '2017-04-22', '2017-04-23', '2017-04-24', '2017-04-25', '2017-04-26', '2017-04-27', '2017-04-28', '2017-04-29', '2017-04-30', '2017-05-01', '2017-05-02', '2017-05-03', '2017-05-04', '2017-05-05', '2017-05-06', '2017-05-07', '2017-05-08', '2017-05-09', '2017-05-10', '2017-05-11', '2017-05-12', '2017-05-13', '2017-05-14', '2017-05-15', '2017-05-16', '2017-05-17', '2017-05-18', '2017-05-19', '2017-05-20', '2017-05-21', '2017-05-22', '2017-05-23', '2017-05-24', '2017-05-25', '2017-05-26', '2017-05-27', '2017-05-28', '2017-05-29', '2017-05-30', '2017-05-31', '2017-06-01', '2017-06-02', '2017-06-03', '2017-06-04', '2017-06-05', '2017-06-06', '2017-06-07', '2017-06-08', '2017-06-09', '2017-06-10', '2017-06-11', '2017-06-12', '2017-06-13', '2017-06-14', '2017-06-15', '2017-06-16', '2017-06-17', '2017-06-18', '2017-06-19', '2017-06-20', '2017-06-21', '2017-06-22', '2017-06-23', '2017-06-24', '2017-06-25', '2017-06-26', '2017-06-27', '2017-06-28', '2017-06-29', '2017-06-30', '2017-07-01', '2017-07-02', '2017-07-03', '2017-07-04', '2017-07-05', '2017-07-06', '2017-07-07', '2017-07-08', '2017-07-09', '2017-07-10', '2017-07-11', '2017-07-12', '2017-07-13', '2017-07-14', '2017-07-15', '2017-07-16', '2017-07-17', '2017-07-18', '2017-07-19', '2017-07-20', '2017-07-21', '2017-07-22', '2017-07-23', '2017-07-24', '2017-07-25', '2017-07-26', '2017-07-27', '2017-07-28', '2017-07-29', '2017-07-30', '2017-07-31', '2017-08-01', '2017-08-02', '2017-08-03', '2017-08-04', '2017-08-05', '2017-08-06', '2017-08-07', '2017-08-08', '2017-08-09', '2017-08-10', '2017-08-11', '2017-08-12', '2017-08-13', '2017-08-14', '2017-08-15', '2017-08-16', '2017-08-17', '2017-08-18', '2017-08-19', '2017-08-20', '2017-08-21', '2017-08-22', '2017-08-23', '2017-08-24', '2017-08-25', '2017-08-26', '2017-08-27', '2017-08-28', '2017-08-29', '2017-08-30', '2017-08-31', '2017-09-01', '2017-09-02', '2017-09-03', '2017-09-04', '2017-09-05', '2017-09-06', '2017-09-07', '2017-09-08', '2017-09-09', '2017-09-10', '2017-09-11', '2017-09-12', '2017-09-13', '2017-09-14', '2017-09-15', '2017-09-16', '2017-09-17', '2017-09-18', '2017-09-19', '2017-09-20', '2017-09-21', '2017-09-22', '2017-09-23', '2017-09-24', '2017-09-25', '2017-09-26', '2017-09-27', '2017-09-28', '2017-09-29', '2017-09-30', '2017-10-01', '2017-10-02', '2017-10-03', '2017-10-04', '2017-10-05', '2017-10-06', '2017-10-07', '2017-10-08', '2017-10-09', '2017-10-10', '2017-10-11', '2017-10-12', '2017-10-13', '2017-10-14', '2017-10-15', '2017-10-16', '2017-10-17', '2017-10-18', '2017-10-19', '2017-10-20', '2017-10-21', '2017-10-22', '2017-10-23', '2017-10-24', '2017-10-25', '2017-10-26', '2017-10-27', '2017-10-28', '2017-10-29', '2017-10-30', '2017-10-31', '2017-11-01', '2017-11-02', '2017-11-03', '2017-11-04', '2017-11-05', '2017-11-06', '2017-11-07', '2017-11-08', '2017-11-09', '2017-11-10', '2017-11-11', '2017-11-12', '2017-11-13', '2017-11-14', '2017-11-15', '2017-11-16', '2017-11-17', '2017-11-18', '2017-11-19', '2017-11-20', '2017-11-21', '2017-11-22', '2017-11-23', '2017-11-24', '2017-11-25', '2017-11-26', '2017-11-27', '2017-11-28', '2017-11-29', '2017-11-30', '2017-12-01', '2017-12-02', '2017-12-03', '2017-12-04', '2017-12-05', '2017-12-06', '2017-12-07', '2017-12-08', '2017-12-09', '2017-12-10', '2017-12-11', '2017-12-12', '2017-12-13', '2017-12-14', '2017-12-15', '2017-12-16', '2017-12-17', '2017-12-18', '2017-12-19', '2017-12-20', '2017-12-21', '2017-12-22', '2017-12-23', '2017-12-24', '2017-12-25', '2017-12-26', '2017-12-27', '2017-12-28', '2017-12-29', '2017-12-30', '2017-12-31', '2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04', '2018-01-05', '2018-01-06', '2018-01-07', '2018-01-08', '2018-01-09', '2018-01-10', '2018-01-11', '2018-01-12', '2018-01-13', '2018-01-14', '2018-01-15', '2018-01-16', '2018-01-17', '2018-01-18', '2018-01-19', '2018-01-20', '2018-01-21', '2018-01-22', '2018-01-23', '2018-01-24', '2018-01-25', '2018-01-26', '2018-01-27', '2018-01-28', '2018-01-29', '2018-01-30', '2018-01-31', '2018-02-01', '2018-02-02', '2018-02-03', '2018-02-04', '2018-02-05', '2018-02-06', '2018-02-07', '2018-02-08', '2018-02-09', '2018-02-10', '2018-02-11', '2018-02-12', '2018-02-13', '2018-02-14', '2018-02-15', '2018-02-16', '2018-02-17', '2018-02-18', '2018-02-19', '2018-02-20', '2018-02-21', '2018-02-22', '2018-02-23', '2018-02-24', '2018-02-25', '2018-02-26', '2018-02-27', '2018-02-28', '2018-03-01', '2018-03-02', '2018-03-03', '2018-03-04', '2018-03-05', '2018-03-06', '2018-03-07', '2018-03-08', '2018-03-09', '2018-03-10', '2018-03-11', '2018-03-12', '2018-03-13', '2018-03-14', '2018-03-15', '2018-03-16', '2018-03-17', '2018-03-18', '2018-03-19', '2018-03-20', '2018-03-21', '2018-03-22', '2018-03-23', '2018-03-24', '2018-03-25', '2018-03-26', '2018-03-27', '2018-03-28', '2018-03-29', '2018-03-30', '2018-03-31', '2018-04-01', '2018-04-02', '2018-04-03', '2018-04-04', '2018-04-05', '2018-04-06', '2018-04-07', '2018-04-08', '2018-04-09', '2018-04-10', '2018-04-11', '2018-04-12', '2018-04-13', '2018-04-14', '2018-04-15', '2018-04-16', '2018-04-17', '2018-04-18', '2018-04-19', '2018-04-20', '2018-04-21', '2018-04-22', '2018-04-23', '2018-04-24', '2018-04-25', '2018-04-26', '2018-04-27', '2018-04-28', '2018-04-29', '2018-04-30', '2018-05-01', '2018-05-02', '2018-05-03', '2018-05-04', '2018-05-05', '2018-05-06', '2018-05-07', '2018-05-08', '2018-05-09', '2018-05-10', '2018-05-11', '2018-05-12', '2018-05-13', '2018-05-14', '2018-05-15', '2018-05-16', '2018-05-17', '2018-05-18', '2018-05-19', '2018-05-20', '2018-05-21', '2018-05-22', '2018-05-23', '2018-05-24', '2018-05-25', '2018-05-26', '2018-05-27', '2018-05-28', '2018-05-29', '2018-05-30', '2018-05-31', '2018-06-01', '2018-06-02', '2018-06-03', '2018-06-04', '2018-06-05', '2018-06-06', '2018-06-07', '2018-06-08', '2018-06-09', '2018-06-10', '2018-06-11', '2018-06-12', '2018-06-13', '2018-06-14', '2018-06-15', '2018-06-16', '2018-06-17', '2018-06-18', '2018-06-19', '2018-06-20', '2018-06-21', '2018-06-22', '2018-06-23', '2018-06-24', '2018-06-25', '2018-06-26', '2018-06-27', '2018-06-28', '2018-06-29', '2018-06-30', '2018-07-01', '2018-07-02', '2018-07-03', '2018-07-04', '2018-07-05', '2018-07-06', '2018-07-07', '2018-07-08', '2018-07-09', '2018-07-10', '2018-07-11', '2018-07-12', '2018-07-13', '2018-07-14', '2018-07-15', '2018-07-16', '2018-07-17', '2018-07-18', '2018-07-19', '2018-07-20', '2018-07-21', '2018-07-22', '2018-07-23', '2018-07-24', '2018-07-25', '2018-07-26', '2018-07-27', '2018-07-28', '2018-07-29', '2018-07-30', '2018-07-31', '2018-08-01', '2018-08-02', '2018-08-03', '2018-08-04', '2018-08-05', '2018-08-06', '2018-08-07', '2018-08-08', '2018-08-09', '2018-08-10', '2018-08-11', '2018-08-12', '2018-08-13', '2018-08-14', '2018-08-15', '2018-08-16', '2018-08-17', '2018-08-18', '2018-08-19', '2018-08-20', '2018-08-21', '2018-08-22', '2018-08-23', '2018-08-24', '2018-08-25', '2018-08-26', '2018-08-27', '2018-08-28', '2018-08-29', '2018-08-30', '2018-08-31', '2018-09-01', '2018-09-02', '2018-09-03', '2018-09-04', '2018-09-05', '2018-09-06', '2018-09-07', '2018-09-08', '2018-09-09', '2018-09-10', '2018-09-11', '2018-09-12', '2018-09-13', '2018-09-14', '2018-09-15', '2018-09-16', '2018-09-17', '2018-09-18', '2018-09-19', '2018-09-20', '2018-09-21', '2018-09-22', '2018-09-23', '2018-09-24', '2018-09-25', '2018-09-26', '2018-09-27', '2018-09-28', '2018-09-29', '2018-09-30', '2018-10-01', '2018-10-02', '2018-10-03', '2018-10-04', '2018-10-05', '2018-10-06', '2018-10-07', '2018-10-08', '2018-10-09', '2018-10-10', '2018-10-11', '2018-10-12', '2018-10-13', '2018-10-14', '2018-10-15', '2018-10-16', '2018-10-17', '2018-10-18', '2018-10-19', '2018-10-20', '2018-10-21', '2018-10-22', '2018-10-23', '2018-10-24', '2018-10-25', '2018-10-26', '2018-10-27', '2018-10-28', '2018-10-29', '2018-10-30', '2018-10-31', '2018-11-01', '2018-11-02', '2018-11-03', '2018-11-04', '2018-11-05', '2018-11-06', '2018-11-07', '2018-11-08', '2018-11-09', '2018-11-10', '2018-11-11', '2018-11-12', '2018-11-13', '2018-11-14', '2018-11-15', '2018-11-16', '2018-11-17', '2018-11-18', '2018-11-19', '2018-11-20', '2018-11-21', '2018-11-22', '2018-11-23', '2018-11-24', '2018-11-25', '2018-11-26', '2018-11-27', '2018-11-28', '2018-11-29', '2018-11-30', '2018-12-01', '2018-12-02', '2018-12-03', '2018-12-04', '2018-12-05', '2018-12-06', '2018-12-07', '2018-12-08', '2018-12-09', '2018-12-10', '2018-12-11', '2018-12-12', '2018-12-13', '2018-12-14', '2018-12-15', '2018-12-16', '2018-12-17', '2018-12-18', '2018-12-19', '2018-12-20', '2018-12-21', '2018-12-22', '2018-12-23', '2018-12-24', '2018-12-25', '2018-12-26', '2018-12-27', '2018-12-28', '2018-12-29', '2018-12-30', '2018-12-31', '2019-01-01', '2019-01-02', '2019-01-03', '2019-01-04', '2019-01-05', '2019-01-06', '2019-01-07', '2019-01-08', '2019-01-09', '2019-01-10', '2019-01-11', '2019-01-12', '2019-01-13', '2019-01-14', '2019-01-15', '2019-01-16', '2019-01-17', '2019-01-18', '2019-01-19', '2019-01-20', '2019-01-21', '2019-01-22', '2019-01-23', '2019-01-24', '2019-01-25', '2019-01-26', '2019-01-27', '2019-01-28', '2019-01-29', '2019-01-30', '2019-01-31', '2019-02-01', '2019-02-02', '2019-02-03', '2019-02-04', '2019-02-05', '2019-02-06', '2019-02-07', '2019-02-08', '2019-02-09', '2019-02-10', '2019-02-11', '2019-02-12', '2019-02-13', '2019-02-14', '2019-02-15', '2019-02-16', '2019-02-17', '2019-02-18', '2019-02-19', '2019-02-20', '2019-02-21', '2019-02-22', '2019-02-23', '2019-02-24', '2019-02-25', '2019-02-26', '2019-02-27', '2019-02-28', '2019-03-01', '2019-03-02', '2019-03-03', '2019-03-04', '2019-03-05', '2019-03-06', '2019-03-07', '2019-03-08', '2019-03-09', '2019-03-10', '2019-03-11', '2019-03-12', '2019-03-13', '2019-03-14', '2019-03-15', '2019-03-16', '2019-03-17', '2019-03-18', '2019-03-19', '2019-03-20', '2019-03-21', '2019-03-22', '2019-03-23', '2019-03-24', '2019-03-25', '2019-03-26', '2019-03-27', '2019-03-28', '2019-03-29', '2019-03-30', '2019-03-31', '2019-04-01', '2019-04-02', '2019-04-03', '2019-04-04', '2019-04-05', '2019-04-06', '2019-04-07', '2019-04-08', '2019-04-09', '2019-04-10', '2019-04-11', '2019-04-12', '2019-04-13', '2019-04-14', '2019-04-15', '2019-04-16', '2019-04-17', '2019-04-18', '2019-04-19', '2019-04-20', '2019-04-21', '2019-04-22', '2019-04-23', '2019-04-24', '2019-04-25', '2019-04-26', '2019-04-27', '2019-04-28', '2019-04-29', '2019-04-30', '2019-05-01', '2019-05-02', '2019-05-03', '2019-05-04', '2019-05-05', '2019-05-06', '2019-05-07', '2019-05-08', '2019-05-09', '2019-05-10', '2019-05-11', '2019-05-12', '2019-05-13', '2019-05-14', '2019-05-15', '2019-05-16', '2019-05-17', '2019-05-18', '2019-05-19', '2019-05-20', '2019-05-21', '2019-05-22', '2019-05-23', '2019-05-24', '2019-05-25', '2019-05-26', '2019-05-27', '2019-05-28', '2019-05-29', '2019-05-30', '2019-05-31', '2019-06-01', '2019-06-02', '2019-06-03', '2019-06-04', '2019-06-05', '2019-06-06', '2019-06-07', '2019-06-08', '2019-06-09', '2019-06-10', '2019-06-11', '2019-06-12', '2019-06-13', '2019-06-14', '2019-06-15', '2019-06-16', '2019-06-17', '2019-06-18', '2019-06-19', '2019-06-20', '2019-06-21', '2019-06-22', '2019-06-23', '2019-06-24', '2019-06-25', '2019-06-26', '2019-06-27', '2019-06-28', '2019-06-29', '2019-06-30', '2019-07-01', '2019-07-02', '2019-07-03', '2019-07-04', '2019-07-05', '2019-07-06', '2019-07-07', '2019-07-08', '2019-07-09', '2019-07-10', '2019-07-11', '2019-07-12', '2019-07-13', '2019-07-14', '2019-07-15', '2019-07-16', '2019-07-17', '2019-07-18', '2019-07-19', '2019-07-20', '2019-07-21', '2019-07-22', '2019-07-23', '2019-07-24', '2019-07-25', '2019-07-26', '2019-07-27', '2019-07-28', '2019-07-29', '2019-07-30', '2019-07-31', '2019-08-01', '2019-08-02', '2019-08-03', '2019-08-04', '2019-08-05', '2019-08-06', '2019-08-07', '2019-08-08', '2019-08-09', '2019-08-10', '2019-08-11', '2019-08-12', '2019-08-13', '2019-08-14', '2019-08-15', '2019-08-16', '2019-08-17', '2019-08-18', '2019-08-19', '2019-08-20', '2019-08-21', '2019-08-22', '2019-08-23', '2019-08-24', '2019-08-25', '2019-08-26', '2019-08-27', '2019-08-28', '2019-08-29', '2019-08-30', '2019-08-31', '2019-09-01', '2019-09-02', '2019-09-03', '2019-09-04', '2019-09-05', '2019-09-06', '2019-09-07', '2019-09-08', '2019-09-09', '2019-09-10', '2019-09-11', '2019-09-12', '2019-09-13', '2019-09-14', '2019-09-15', '2019-09-16', '2019-09-17', '2019-09-18', '2019-09-19', '2019-09-20', '2019-09-21', '2019-09-22', '2019-09-23', '2019-09-24', '2019-09-25', '2019-09-26', '2019-09-27', '2019-09-28', '2019-09-29', '2019-09-30', '2019-10-01', '2019-10-02', '2019-10-03', '2019-10-04', '2019-10-05', '2019-10-06', '2019-10-07', '2019-10-08', '2019-10-09', '2019-10-10', '2019-10-11', '2019-10-12', '2019-10-13', '2019-10-14', '2019-10-15', '2019-10-16', '2019-10-17', '2019-10-18', '2019-10-19', '2019-10-20', '2019-10-21', '2019-10-22', '2019-10-23', '2019-10-24', '2019-10-25', '2019-10-26', '2019-10-27', '2019-10-28', '2019-10-29', '2019-10-30', '2019-10-31', '2019-11-01', '2019-11-02', '2019-11-03', '2019-11-04', '2019-11-05', '2019-11-06', '2019-11-07', '2019-11-08', '2019-11-09', '2019-11-10', '2019-11-11', '2019-11-12', '2019-11-13', '2019-11-14', '2019-11-15', '2019-11-16', '2019-11-17', '2019-11-18', '2019-11-19', '2019-11-20', '2019-11-21', '2019-11-22', '2019-11-23', '2019-11-24', '2019-11-25', '2019-11-26', '2019-11-27', '2019-11-28', '2019-11-29', '2019-11-30', '2019-12-01', '2019-12-02', '2019-12-03', '2019-12-04', '2019-12-05', '2019-12-06', '2019-12-07', '2019-12-08', '2019-12-09', '2019-12-10', '2019-12-11', '2019-12-12', '2019-12-13', '2019-12-14', '2019-12-15', '2019-12-16', '2019-12-17', '2019-12-18', '2019-12-19', '2019-12-20', '2019-12-21', '2019-12-22', '2019-12-23', '2019-12-24', '2019-12-25', '2019-12-26', '2019-12-27', '2019-12-28', '2019-12-29', '2019-12-30', '2019-12-31', '2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04', '2020-01-05', '2020-01-06', '2020-01-07', '2020-01-08', '2020-01-09', '2020-01-10', '2020-01-11', '2020-01-12', '2020-01-13', '2020-01-14', '2020-01-15', '2020-01-16', '2020-01-17', '2020-01-18', '2020-01-19', '2020-01-20', '2020-01-21', '2020-01-22', '2020-01-23', '2020-01-24', '2020-01-25', '2020-01-26', '2020-01-27', '2020-01-28', '2020-01-29', '2020-01-30', '2020-01-31', '2020-02-01', '2020-02-02', '2020-02-03', '2020-02-04', '2020-02-05', '2020-02-06', '2020-02-07', '2020-02-08', '2020-02-09', '2020-02-10', '2020-02-11', '2020-02-12', '2020-02-13', '2020-02-14', '2020-02-15', '2020-02-16', '2020-02-17', '2020-02-18', '2020-02-19', '2020-02-20', '2020-02-21', '2020-02-22', '2020-02-23', '2020-02-24', '2020-02-25', '2020-02-26', '2020-02-27', '2020-02-28', '2020-02-29', '2020-03-01', '2020-03-02', '2020-03-03', '2020-03-04', '2020-03-05', '2020-03-06', '2020-03-07', '2020-03-08', '2020-03-09', '2020-03-10', '2020-03-11', '2020-03-12', '2020-03-13', '2020-03-14', '2020-03-15', '2020-03-16', '2020-03-17', '2020-03-18', '2020-03-19', '2020-03-20', '2020-03-21', '2020-03-22', '2020-03-23', '2020-03-24', '2020-03-25', '2020-03-26', '2020-03-27', '2020-03-28', '2020-03-29', '2020-03-30', '2020-03-31', '2020-04-01', '2020-04-02', '2020-04-03', '2020-04-04', '2020-04-05', '2020-04-06', '2020-04-07', '2020-04-08', '2020-04-09', '2020-04-10', '2020-04-11', '2020-04-12', '2020-04-13', '2020-04-14', '2020-04-15', '2020-04-16', '2020-04-17', '2020-04-18', '2020-04-19', '2020-04-20', '2020-04-21', '2020-04-22', '2020-04-23', '2020-04-24', '2020-04-25', '2020-04-26', '2020-04-27', '2020-04-28', '2020-04-29', '2020-04-30', '2020-05-01', '2020-05-02', '2020-05-03', '2020-05-04', '2020-05-05', '2020-05-06', '2020-05-07', '2020-05-08', '2020-05-09', '2020-05-10', '2020-05-11', '2020-05-12', '2020-05-13', '2020-05-14', '2020-05-15', '2020-05-16', '2020-05-17', '2020-05-18', '2020-05-19', '2020-05-20', '2020-05-21', '2020-05-22', '2020-05-23', '2020-05-24', '2020-05-25', '2020-05-26', '2020-05-27', '2020-05-28', '2020-05-29', '2020-05-30', '2020-05-31', '2020-06-01', '2020-06-02', '2020-06-03', '2020-06-04', '2020-06-05', '2020-06-06', '2020-06-07', '2020-06-08', '2020-06-09', '2020-06-10', '2020-06-11', '2020-06-12', '2020-06-13', '2020-06-14', '2020-06-15', '2020-06-16', '2020-06-17', '2020-06-18', '2020-06-19', '2020-06-20', '2020-06-21', '2020-06-22', '2020-06-23', '2020-06-24', '2020-06-25', '2020-06-26', '2020-06-27', '2020-06-28', '2020-06-29', '2020-06-30', '2020-07-01', '2020-07-02', '2020-07-03', '2020-07-04', '2020-07-05', '2020-07-06', '2020-07-07', '2020-07-08', '2020-07-09', '2020-07-10', '2020-07-11', '2020-07-12', '2020-07-13', '2020-07-14', '2020-07-15', '2020-07-16', '2020-07-17', '2020-07-18', '2020-07-19', '2020-07-20', '2020-07-21', '2020-07-22', '2020-07-23', '2020-07-24', '2020-07-25', '2020-07-26', '2020-07-27', '2020-07-28', '2020-07-29', '2020-07-30', '2020-07-31', '2020-08-01', '2020-08-02', '2020-08-03', '2020-08-04', '2020-08-05', '2020-08-06', '2020-08-07', '2020-08-08', '2020-08-09', '2020-08-10', '2020-08-11', '2020-08-12', '2020-08-13', '2020-08-14', '2020-08-15', '2020-08-16', '2020-08-17', '2020-08-18', '2020-08-19', '2020-08-20', '2020-08-21', '2020-08-22', '2020-08-23', '2020-08-24', '2020-08-25', '2020-08-26', '2020-08-27', '2020-08-28', '2020-08-29', '2020-08-30', '2020-08-31', '2020-09-01', '2020-09-02', '2020-09-03', '2020-09-04', '2020-09-05', '2020-09-06', '2020-09-07', '2020-09-08', '2020-09-09', '2020-09-10', '2020-09-11', '2020-09-12', '2020-09-13', '2020-09-14', '2020-09-15', '2020-09-16', '2020-09-17', '2020-09-18', '2020-09-19', '2020-09-20', '2020-09-21', '2020-09-22', '2020-09-23', '2020-09-24', '2020-09-25', '2020-09-26', '2020-09-27', '2020-09-28', '2020-09-29', '2020-09-30', '2020-10-01', '2020-10-02', '2020-10-03', '2020-10-04', '2020-10-05', '2020-10-06', '2020-10-07', '2020-10-08', '2020-10-09', '2020-10-10', '2020-10-11', '2020-10-12', '2020-10-13', '2020-10-14', '2020-10-15', '2020-10-16', '2020-10-17', '2020-10-18', '2020-10-19', '2020-10-20', '2020-10-21', '2020-10-22', '2020-10-23', '2020-10-24', '2020-10-25', '2020-10-26', '2020-10-27', '2020-10-28', '2020-10-29', '2020-10-30', '2020-10-31', '2020-11-01', '2020-11-02', '2020-11-03', '2020-11-04', '2020-11-05', '2020-11-06', '2020-11-07', '2020-11-08', '2020-11-09', '2020-11-10', '2020-11-11', '2020-11-12', '2020-11-13', '2020-11-14', '2020-11-15', '2020-11-16', '2020-11-17', '2020-11-18', '2020-11-19', '2020-11-20', '2020-11-21', '2020-11-22', '2020-11-23', '2020-11-24', '2020-11-25', '2020-11-26', '2020-11-27', '2020-11-28', '2020-11-29', '2020-11-30', '2020-12-01', '2020-12-02', '2020-12-03', '2020-12-04', '2020-12-05', '2020-12-06', '2020-12-07', '2020-12-08', '2020-12-09', '2020-12-10', '2020-12-11', '2020-12-12', '2020-12-13', '2020-12-14', '2020-12-15', '2020-12-16', '2020-12-17', '2020-12-18', '2020-12-19', '2020-12-20', '2020-12-21', '2020-12-22', '2020-12-23', '2020-12-24', '2020-12-25', '2020-12-26', '2020-12-27', '2020-12-28', '2020-12-29', '2020-12-30', '2020-12-31', '2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05', '2021-01-06', '2021-01-07', '2021-01-08', '2021-01-09', '2021-01-10', '2021-01-11', '2021-01-12', '2021-01-13', '2021-01-14', '2021-01-15', '2021-01-16', '2021-01-17', '2021-01-18', '2021-01-19', '2021-01-20', '2021-01-21', '2021-01-22', '2021-01-23', '2021-01-24', '2021-01-25', '2021-01-26', '2021-01-27', '2021-01-28', '2021-01-29', '2021-01-30', '2021-01-31', '2021-02-01', '2021-02-02', '2021-02-03', '2021-02-04', '2021-02-05', '2021-02-06', '2021-02-07', '2021-02-08', '2021-02-09', '2021-02-10', '2021-02-11', '2021-02-12', '2021-02-13', '2021-02-14', '2021-02-15', '2021-02-16', '2021-02-17', '2021-02-18', '2021-02-19', '2021-02-20', '2021-02-21', '2021-02-22', '2021-02-23', '2021-02-24', '2021-02-25', '2021-02-26', '2021-02-27', '2021-02-28', '2021-03-01', '2021-03-02', '2021-03-03', '2021-03-04', '2021-03-05', '2021-03-06', '2021-03-07', '2021-03-08', '2021-03-09', '2021-03-10', '2021-03-11', '2021-03-12', '2021-03-13', '2021-03-14', '2021-03-15', '2021-03-16', '2021-03-17', '2021-03-18', '2021-03-19', '2021-03-20', '2021-03-21', '2021-03-22', '2021-03-23', '2021-03-24', '2021-03-25', '2021-03-26', '2021-03-27', '2021-03-28', '2021-03-29', '2021-03-30', '2021-03-31', '2021-04-01', '2021-04-02', '2021-04-03', '2021-04-04', '2021-04-05', '2021-04-06', '2021-04-07', '2021-04-08', '2021-04-09', '2021-04-10', '2021-04-11', '2021-04-12', '2021-04-13', '2021-04-14', '2021-04-15', '2021-04-16', '2021-04-17', '2021-04-18', '2021-04-19', '2021-04-20', '2021-04-21', '2021-04-22', '2021-04-23', '2021-04-24', '2021-04-25', '2021-04-26', '2021-04-27', '2021-04-28', '2021-04-29', '2021-04-30', '2021-05-01', '2021-05-02', '2021-05-03', '2021-05-04', '2021-05-05', '2021-05-06', '2021-05-07', '2021-05-08', '2021-05-09', '2021-05-10', '2021-05-11', '2021-05-12', '2021-05-13', '2021-05-14', '2021-05-15', '2021-05-16', '2021-05-17', '2021-05-18', '2021-05-19', '2021-05-20', '2021-05-21', '2021-05-22', '2021-05-23', '2021-05-24', '2021-05-25', '2021-05-26', '2021-05-27', '2021-05-28', '2021-05-29', '2021-05-30', '2021-05-31', '2021-06-01', '2021-06-02', '2021-06-03', '2021-06-04', '2021-06-05', '2021-06-06', '2021-06-07', '2021-06-08', '2021-06-09', '2021-06-10', '2021-06-11', '2021-06-12', '2021-06-13', '2021-06-14', '2021-06-15', '2021-06-16', '2021-06-17', '2021-06-18', '2021-06-19', '2021-06-20', '2021-06-21', '2021-06-22', '2021-06-23', '2021-06-24', '2021-06-25', '2021-06-26', '2021-06-27', '2021-06-28', '2021-06-29', '2021-06-30', '2021-07-01', '2021-07-02', '2021-07-03', '2021-07-04', '2021-07-05', '2021-07-06', '2021-07-07', '2021-07-08', '2021-07-09', '2021-07-10', '2021-07-11', '2021-07-12', '2021-07-13', '2021-07-14', '2021-07-15', '2021-07-16', '2021-07-17', '2021-07-18', '2021-07-19', '2021-07-20', '2021-07-21', '2021-07-22', '2021-07-23', '2021-07-24', '2021-07-25', '2021-07-26', '2021-07-27', '2021-07-28', '2021-07-29', '2021-07-30', '2021-07-31', '2021-08-01', '2021-08-02', '2021-08-03', '2021-08-04', '2021-08-05', '2021-08-06', '2021-08-07', '2021-08-08', '2021-08-09', '2021-08-10', '2021-08-11', '2021-08-12', '2021-08-13', '2021-08-14', '2021-08-15', '2021-08-16', '2021-08-17', '2021-08-18', '2021-08-19', '2021-08-20', '2021-08-21', '2021-08-22', '2021-08-23', '2021-08-24', '2021-08-25', '2021-08-26', '2021-08-27', '2021-08-28', '2021-08-29', '2021-08-30', '2021-08-31', '2021-09-01', '2021-09-02', '2021-09-03', '2021-09-04', '2021-09-05', '2021-09-06', '2021-09-07', '2021-09-08', '2021-09-09', '2021-09-10', '2021-09-11', '2021-09-12', '2021-09-13', '2021-09-14', '2021-09-15', '2021-09-16', '2021-09-17', '2021-09-18', '2021-09-19', '2021-09-20', '2021-09-21', '2021-09-22', '2021-09-23', '2021-09-24', '2021-09-25', '2021-09-26', '2021-09-27', '2021-09-28', '2021-09-29', '2021-09-30', '2021-10-01', '2021-10-02', '2021-10-03', '2021-10-04', '2021-10-05', '2021-10-06', '2021-10-07', '2021-10-08', '2021-10-09', '2021-10-10', '2021-10-11', '2021-10-12', '2021-10-13', '2021-10-14', '2021-10-15', '2021-10-16', '2021-10-17', '2021-10-18', '2021-10-19', '2021-10-20', '2021-10-21', '2021-10-22', '2021-10-23', '2021-10-24', '2021-10-25', '2021-10-26', '2021-10-27', '2021-10-28', '2021-10-29', '2021-10-30', '2021-10-31', '2021-11-01', '2021-11-02', '2021-11-03', '2021-11-04', '2021-11-05', '2021-11-06', '2021-11-07', '2021-11-08', '2021-11-09', '2021-11-10', '2021-11-11', '2021-11-12', '2021-11-13', '2021-11-14', '2021-11-15', '2021-11-16', '2021-11-17', '2021-11-18', '2021-11-19', '2021-11-20', '2021-11-21', '2021-11-22', '2021-11-23', '2021-11-24', '2021-11-25', '2021-11-26', '2021-11-27', '2021-11-28', '2021-11-29', '2021-11-30', '2021-12-01', '2021-12-02', '2021-12-03', '2021-12-04', '2021-12-05', '2021-12-06', '2021-12-07', '2021-12-08', '2021-12-09', '2021-12-10', '2021-12-11', '2021-12-12', '2021-12-13', '2021-12-14', '2021-12-15', '2021-12-16', '2021-12-17', '2021-12-18', '2021-12-19', '2021-12-20', '2021-12-21', '2021-12-22', '2021-12-23', '2021-12-24', '2021-12-25', '2021-12-26', '2021-12-27', '2021-12-28', '2021-12-29', '2021-12-30', '2021-12-31', '2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04', '2022-01-05', '2022-01-06', '2022-01-07', '2022-01-08', '2022-01-09', '2022-01-10', '2022-01-11', '2022-01-12', '2022-01-13', '2022-01-14', '2022-01-15', '2022-01-16', '2022-01-17', '2022-01-18', '2022-01-19', '2022-01-20', '2022-01-21', '2022-01-22', '2022-01-23', '2022-01-24', '2022-01-25', '2022-01-26', '2022-01-27', '2022-01-28', '2022-01-29', '2022-01-30', '2022-01-31', '2022-02-01', '2022-02-02', '2022-02-03', '2022-02-04', '2022-02-05', '2022-02-06', '2022-02-07', '2022-02-08', '2022-02-09', '2022-02-10', '2022-02-11', '2022-02-12', '2022-02-13', '2022-02-14', '2022-02-15', '2022-02-16', '2022-02-17', '2022-02-18', '2022-02-19', '2022-02-20', '2022-02-21', '2022-02-22', '2022-02-23', '2022-02-24', '2022-02-25', '2022-02-26', '2022-02-27', '2022-02-28', '2022-03-01', '2022-03-02', '2022-03-03', '2022-03-04', '2022-03-05', '2022-03-06', '2022-03-07', '2022-03-08', '2022-03-09', '2022-03-10', '2022-03-11', '2022-03-12', '2022-03-13', '2022-03-14', '2022-03-15', '2022-03-16', '2022-03-17', '2022-03-18', '2022-03-19', '2022-03-20', '2022-03-21', '2022-03-22', '2022-03-23', '2022-03-24', '2022-03-25', '2022-03-26', '2022-03-27', '2022-03-28', '2022-03-29', '2022-03-30', '2022-03-31', '2022-04-01', '2022-04-02', '2022-04-03', '2022-04-04', '2022-04-05', '2022-04-06', '2022-04-07', '2022-04-08', '2022-04-09', '2022-04-10', '2022-04-11', '2022-04-12', '2022-04-13', '2022-04-14', '2022-04-15', '2022-04-16', '2022-04-17', '2022-04-18', '2022-04-19', '2022-04-20', '2022-04-21', '2022-04-22', '2022-04-23', '2022-04-24', '2022-04-25', '2022-04-26', '2022-04-27', '2022-04-28', '2022-04-29', '2022-04-30', '2022-05-01', '2022-05-02', '2022-05-03', '2022-05-04', '2022-05-05', '2022-05-06', '2022-05-07', '2022-05-08', '2022-05-09', '2022-05-10', '2022-05-11', '2022-05-12', '2022-05-13', '2022-05-14', '2022-05-15', '2022-05-16', '2022-05-17', '2022-05-18', '2022-05-19', '2022-05-20', '2022-05-21', '2022-05-22', '2022-05-23', '2022-05-24', '2022-05-25', '2022-05-26', '2022-05-27', '2022-05-28', '2022-05-29', '2022-05-30', '2022-05-31', '2022-06-01', '2022-06-02', '2022-06-03', '2022-06-04', '2022-06-05', '2022-06-06', '2022-06-07', '2022-06-08', '2022-06-09', '2022-06-10', '2022-06-11', '2022-06-12', '2022-06-13', '2022-06-14', '2022-06-15', '2022-06-16', '2022-06-17', '2022-06-18', '2022-06-19', '2022-06-20', '2022-06-21', '2022-06-22', '2022-06-23', '2022-06-24', '2022-06-25', '2022-06-26', '2022-06-27', '2022-06-28', '2022-06-29', '2022-06-30', '2022-07-01', '2022-07-02', '2022-07-03', '2022-07-04', '2022-07-05', '2022-07-06', '2022-07-07', '2022-07-08', '2022-07-09', '2022-07-10', '2022-07-11', '2022-07-12', '2022-07-13', '2022-07-14', '2022-07-15', '2022-07-16', '2022-07-17', '2022-07-18', '2022-07-19', '2022-07-20', '2022-07-21', '2022-07-22', '2022-07-23', '2022-07-24', '2022-07-25', '2022-07-26', '2022-07-27', '2022-07-28', '2022-07-29', '2022-07-30', '2022-07-31', '2022-08-01', '2022-08-02', '2022-08-03', '2022-08-04', '2022-08-05', '2022-08-06', '2022-08-07', '2022-08-08', '2022-08-09', '2022-08-10', '2022-08-11', '2022-08-12', '2022-08-13', '2022-08-14', '2022-08-15', '2022-08-16', '2022-08-17', '2022-08-18', '2022-08-19', '2022-08-20', '2022-08-21', '2022-08-22', '2022-08-23', '2022-08-24', '2022-08-25', '2022-08-26', '2022-08-27', '2022-08-28', '2022-08-29', '2022-08-30', '2022-08-31', '2022-09-01', '2022-09-02', '2022-09-03', '2022-09-04', '2022-09-05', '2022-09-06', '2022-09-07', '2022-09-08', '2022-09-09', '2022-09-10', '2022-09-11', '2022-09-12', '2022-09-13', '2022-09-14', '2022-09-15', '2022-09-16', '2022-09-17', '2022-09-18', '2022-09-19', '2022-09-20', '2022-09-21', '2022-09-22', '2022-09-23', '2022-09-24', '2022-09-25', '2022-09-26', '2022-09-27', '2022-09-28', '2022-09-29', '2022-09-30', '2022-10-01', '2022-10-02', '2022-10-03', '2022-10-04', '2022-10-05', '2022-10-06', '2022-10-07', '2022-10-08', '2022-10-09', '2022-10-10', '2022-10-11', '2022-10-12', '2022-10-13', '2022-10-14', '2022-10-15', '2022-10-16', '2022-10-17', '2022-10-18', '2022-10-19', '2022-10-20', '2022-10-21', '2022-10-22', '2022-10-23', '2022-10-24', '2022-10-25', '2022-10-26', '2022-10-27', '2022-10-28', '2022-10-29', '2022-10-30', '2022-10-31', '2022-11-01', '2022-11-02', '2022-11-03', '2022-11-04', '2022-11-05', '2022-11-06', '2022-11-07', '2022-11-08', '2022-11-09', '2022-11-10', '2022-11-11', '2022-11-12', '2022-11-13', '2022-11-14', '2022-11-15', '2022-11-16', '2022-11-17', '2022-11-18', '2022-11-19', '2022-11-20', '2022-11-21', '2022-11-22', '2022-11-23', '2022-11-24', '2022-11-25', '2022-11-26', '2022-11-27', '2022-11-28', '2022-11-29', '2022-11-30', '2022-12-01', '2022-12-02', '2022-12-03', '2022-12-04', '2022-12-05', '2022-12-06', '2022-12-07', '2022-12-08', '2022-12-09', '2022-12-10', '2022-12-11', '2022-12-12', '2022-12-13', '2022-12-14', '2022-12-15', '2022-12-16', '2022-12-17', '2022-12-18', '2022-12-19', '2022-12-20', '2022-12-21', '2022-12-22', '2022-12-23', '2022-12-24', '2022-12-25', '2022-12-26', '2022-12-27', '2022-12-28', '2022-12-29', '2022-12-30', '2022-12-31', '2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05', '2023-01-06', '2023-01-07', '2023-01-08', '2023-01-09', '2023-01-10', '2023-01-11', '2023-01-12', '2023-01-13', '2023-01-14', '2023-01-15', '2023-01-16', '2023-01-17', '2023-01-18', '2023-01-19', '2023-01-20', '2023-01-21', '2023-01-22', '2023-01-23', '2023-01-24', '2023-01-25', '2023-01-26', '2023-01-27', '2023-01-28', '2023-01-29', '2023-01-30', '2023-01-31', '2023-02-01', '2023-02-02', '2023-02-03', '2023-02-04', '2023-02-05', '2023-02-06', '2023-02-07', '2023-02-08', '2023-02-09', '2023-02-10', '2023-02-11', '2023-02-12', '2023-02-13', '2023-02-14', '2023-02-15', '2023-02-16', '2023-02-17', '2023-02-18', '2023-02-19', '2023-02-20', '2023-02-21', '2023-02-22', '2023-02-23', '2023-02-24', '2023-02-25', '2023-02-26', '2023-02-27', '2023-02-28', '2023-03-01', '2023-03-02', '2023-03-03', '2023-03-04', '2023-03-05', '2023-03-06', '2023-03-07', '2023-03-08', '2023-03-09', '2023-03-10', '2023-03-11', '2023-03-12', '2023-03-13', '2023-03-14', '2023-03-15', '2023-03-16', '2023-03-17', '2023-03-18', '2023-03-19', '2023-03-20', '2023-03-21', '2023-03-22', '2023-03-23', '2023-03-24', '2023-03-25', '2023-03-26', '2023-03-27', '2023-03-28', '2023-03-29', '2023-03-30', '2023-03-31', '2023-04-01', '2023-04-02', '2023-04-03', '2023-04-04', '2023-04-05', '2023-04-06', '2023-04-07', '2023-04-08', '2023-04-09', '2023-04-10', '2023-04-11', '2023-04-12', '2023-04-13', '2023-04-14', '2023-04-15', '2023-04-16', '2023-04-17', '2023-04-18', '2023-04-19', '2023-04-20', '2023-04-21', '2023-04-22', '2023-04-23', '2023-04-24', '2023-04-25', '2023-04-26', '2023-04-27', '2023-04-28', '2023-04-29', '2023-04-30', '2023-05-01', '2023-05-02', '2023-05-03', '2023-05-04', '2023-05-05', '2023-05-06', '2023-05-07', '2023-05-08', '2023-05-09', '2023-05-10', '2023-05-11', '2023-05-12', '2023-05-13', '2023-05-14', '2023-05-15', '2023-05-16', '2023-05-17', '2023-05-18', '2023-05-19', '2023-05-20', '2023-05-21', '2023-05-22', '2023-05-23'], 'default': '2023-05-23', 'current': False}}\n"
- ]
- }
- ],
- "source": [
- "\n",
- "from owslib.wmts import WebMapTileService\n",
- "\n",
- "wmts = WebMapTileService(\n",
- " f\"{endpoint}/wmts?service=wmts&request=GetCapabilities&version=1.0.0\",\n",
- ")\n",
- "print(wmts.identification)\n",
- "print()\n",
- "for layer in list(wmts.contents):\n",
- " print(layer)\n",
- "\n",
- "print()\n",
- "layer = wmts[\"MAXAR_Emilia_Romagna_Italy_flooding_may23_visual\"]\n",
- "print(layer)\n",
- "print(layer.boundingBoxWGS84)\n",
- "print()\n",
- "print(\"Supported TMS:\")\n",
- "print(layer.tilematrixsetlinks)\n",
- "print()\n",
- "print(\"TMS Limits:\")\n",
- "print(layer.tilematrixsetlinks[\"WebMercatorQuad\"].tilematrixlimits)\n",
- "print()\n",
- "print(\"Layer dimensions\")\n",
- "print(layer.dimensions)\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {},
- "outputs": [],
- "source": [
- "tile = wmts.gettile(\n",
- " layer='MAXAR_Emilia_Romagna_Italy_flooding_may23_visual',\n",
- " style=\"default\",\n",
- " tilematrixset='WebMercatorQuad',\n",
- " tilematrix='13',\n",
- " column=4373,\n",
- " row=2963,\n",
- " format=\"image/png\",\n",
- " time=\"2023-05-23\",\n",
- ")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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",
- "text/plain": [
- ""
- ]
- },
- "execution_count": 11,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "from IPython.display import Image\n",
- "\n",
- "Image(tile.read())"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 13,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "Make this Notebook Trusted to load map: File -> Trust Notebook
"
- ],
- "text/plain": [
- ""
- ]
- },
- "execution_count": 13,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "from folium import Map, TileLayer\n",
- "\n",
- "m = Map(\n",
- " location=(44.52, 12.22),\n",
- " zoom_start=14\n",
- ")\n",
- "\n",
- "collection = \"MAXAR_Emilia_Romagna_Italy_flooding_may23\"\n",
- "TIME = \"2023-05-23\"\n",
- "TileMatrixSet = \"WebMercatorQuad\"\n",
- "\n",
- "tiles_url = f\"http://127.0.0.1:8000/{collection}/default/{TIME}/{TileMatrixSet}/{{z}}/{{x}}/{{y}}.png?assets=visual&asset_bidx=visual%7C1%2C2%2C3\"\n",
- "\n",
- "TileLayer(\n",
- " tiles=tiles_url,\n",
- " opacity=1,\n",
- " attr=\"DigitalGlobe OpenData\"\n",
- ").add_to(m)\n",
- "\n",
- "m"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "py39",
- "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.9.18"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/pyproject.toml b/pyproject.toml
index 7e04952..46007a6 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -29,6 +29,7 @@ dependencies = [
"pystac-client",
"pydantic>=2.4,<3.0",
"pydantic-settings~=2.0",
+ "planetary_computer~=1.0.0",
]
dynamic = ["version"]
diff --git a/tests/test_render.py b/tests/test_render.py
deleted file mode 100644
index 379962d..0000000
--- a/tests/test_render.py
+++ /dev/null
@@ -1,53 +0,0 @@
-"""test render extension."""
-
-import json
-import os
-from unittest.mock import patch
-
-import pystac
-
-from titiler.core import dependencies
-from titiler.stacapi.factory import get_dependency_params, get_layer_from_collections
-
-catalog_json = os.path.join(os.path.dirname(__file__), "fixtures", "catalog.json")
-
-
-@patch("titiler.stacapi.factory.Client")
-def test_render(client):
- """test STAC items endpoints."""
-
- with open(catalog_json, "r") as f:
- collections = [
- pystac.Collection.from_dict(c) for c in json.loads(f.read())["collections"]
- ]
- client.open.return_value.get_collections.return_value = collections
-
- collections_render = get_layer_from_collections(
- "https://something.stac", None, None
- )
- assert len(collections_render) == 3
-
- visual = collections_render["MAXAR_BayofBengal_Cyclone_Mocha_May_23_visual"]
- assert visual["bbox"]
- assert visual["tilematrixsets"]["WebMercatorQuad"]
- assert visual["time"]
- assert visual["render"]["asset_bidx"]
-
- color = collections_render["MAXAR_BayofBengal_Cyclone_Mocha_May_23_color"]["render"]
- assert isinstance(color["colormap"], str)
-
- cmap = get_dependency_params(
- dependency=dependencies.ColorMapParams,
- query_params=color,
- )
- assert cmap
-
- visualr = collections_render["MAXAR_BayofBengal_Cyclone_Mocha_May_23_visualr"][
- "render"
- ]
- assert isinstance(visualr["rescale"][0], str)
- rescale = get_dependency_params(
- dependency=dependencies.RescalingParams,
- query_params=visualr,
- )
- assert rescale
diff --git a/titiler/stacapi/factory.py b/titiler/stacapi/factory.py
index 3c9d92b..cb2810b 100644
--- a/titiler/stacapi/factory.py
+++ b/titiler/stacapi/factory.py
@@ -107,7 +107,7 @@ class MosaicTilerFactory(BaseTilerFactory):
layer_dependency: Type[DefaultDependency] = AssetsBidxExprParams
# The `tile_dependency` define options like `buffer` or `padding`
- # used in Tile/Tilejson/WMTS Dependencies
+ # used in Tile/Tilejson Dependencies
tile_dependency: Type[DefaultDependency] = TileParams
pixel_selection_dependency: Callable[..., MosaicMethodBase] = PixelSelectionParams
@@ -139,7 +139,6 @@ def register_routes(self) -> None:
self.register_tiles()
self.register_tilejson()
- self.register_wmts()
if self.add_viewer:
self.register_map()
@@ -439,925 +438,3 @@ def map_viewer(
media_type="text/html",
)
- def register_wmts(self): # noqa: C901
- """Add wmts endpoint."""
-
- @self.router.get(
- "/{tileMatrixSetId}/WMTSCapabilities.xml",
- response_class=XMLResponse,
- )
- def wmts(
- request: Request,
- tileMatrixSetId: Annotated[
- Literal[tuple(self.supported_tms.list())],
- Path(
- description="Identifier selecting one of the TileMatrixSetId supported"
- ),
- ],
- search_query=Depends(self.search_dependency),
- tile_format: Annotated[
- ImageType,
- Query(description="Output image type. Default is png."),
- ] = ImageType.png,
- tile_scale: Annotated[
- int,
- Query(
- gt=0, lt=4, description="Tile size scale. 1=256x256, 2=512x512..."
- ),
- ] = 1,
- minzoom: Annotated[
- Optional[int],
- Query(description="Overwrite default minzoom."),
- ] = None,
- maxzoom: Annotated[
- Optional[int],
- Query(description="Overwrite default maxzoom."),
- ] = None,
- ):
- """OGC WMTS endpoint."""
- route_params = {
- "z": "{TileMatrix}",
- "x": "{TileCol}",
- "y": "{TileRow}",
- "scale": tile_scale,
- "format": tile_format.value,
- "tileMatrixSetId": tileMatrixSetId,
- }
-
- tiles_url = self.url_for(request, "tile", **route_params)
-
- qs_key_to_remove = [
- "tilematrixsetid",
- "tile_format",
- "tile_scale",
- "minzoom",
- "maxzoom",
- "service",
- "request",
- ]
- qs = [
- (key, value)
- for (key, value) in request.query_params._list
- if key.lower() not in qs_key_to_remove
- ]
- if qs:
- tiles_url += f"?{urlencode(qs)}"
-
- tms = self.supported_tms.get(tileMatrixSetId)
- minzoom = minzoom if minzoom is not None else tms.minzoom
- maxzoom = maxzoom if maxzoom is not None else tms.maxzoom
- bounds = search_query.get("bbox") or tms.bbox
-
- tileMatrix = []
- for zoom in range(minzoom, maxzoom + 1): # type: ignore
- matrix = tms.matrix(zoom)
- tm = f"""
-
- {matrix.id}
- {matrix.scaleDenominator}
- {matrix.pointOfOrigin[0]} {matrix.pointOfOrigin[1]}
- {matrix.tileWidth}
- {matrix.tileHeight}
- {matrix.matrixWidth}
- {matrix.matrixHeight}
- """
- tileMatrix.append(tm)
-
- return self.templates.TemplateResponse(
- "wmts.xml",
- {
- "request": request,
- "title": "STAC API",
- "bounds": bounds,
- "tileMatrix": tileMatrix,
- "tms": tms,
- "media_type": tile_format.mediatype,
- },
- media_type="application/xml",
- )
-
-
-class WMTSMediaType(str, Enum):
- """Responses Media types for WMTS"""
-
- tif = "image/tiff; application=geotiff"
- jp2 = "image/jp2"
- png = "image/png"
- jpeg = "image/jpeg"
- jpg = "image/jpg"
- webp = "image/webp"
-
-
-@cached( # type: ignore
- TTLCache(maxsize=cache_config.maxsize, ttl=cache_config.ttl),
- key=lambda url, headers, supported_tms: hashkey(url, json.dumps(headers)),
-)
-def get_layer_from_collections( # noqa: C901
- url: str,
- headers: Optional[Dict] = None,
- supported_tms: Optional[TileMatrixSets] = None,
-) -> Dict[str, LayerDict]:
- """Get Layers from STAC Collections."""
- supported_tms = supported_tms or morecantile_tms
-
- stac_api_io = StacApiIO(
- max_retries=Retry(
- total=retry_config.retry,
- backoff_factor=retry_config.retry_factor,
- ),
- headers=headers,
- )
- catalog = Client.open(url, stac_io=stac_api_io)
-
- layers: Dict[str, LayerDict] = {}
- for collection in catalog.get_collections():
- spatial_extent = collection.extent.spatial
- temporal_extent = collection.extent.temporal
-
- if "renders" in collection.extra_fields:
- for name, render in collection.extra_fields["renders"].items():
-
- tilematrixsets = render.pop("tilematrixsets", None)
- output_format = render.pop("format", None)
-
- _ = render.pop("minmax_zoom", None) # Not Used
- _ = render.pop("title", None) # Not Used
-
- # see https://github.com/developmentseed/eoAPI-vito/issues/9#issuecomment-2034025021
- render_title = f"{collection.id}_{name}"
- layer = {
- "id": render_title,
- "collection": collection.id,
- "bbox": [-180, -90, 180, 90],
- "style": "default",
- "render": render,
- }
- if output_format:
- layer["format"] = output_format
-
- if spatial_extent:
- layer["bbox"] = spatial_extent.bboxes[0]
-
- # NB. The WMTS spec is contradictory re. the multiplicity
- # relationships between Layer and TileMatrixSetLink, and
- # TileMatrixSetLink and tileMatrixSet (URI).
- # WMTS only support 1 set of limits for a TileMatrixSet
- if tilematrixsets:
- if len(tilematrixsets) == 1:
- layer["tilematrixsets"] = {
- tms_id: _tms_limits(
- supported_tms.get(tms_id), layer["bbox"], zooms=zooms
- )
- for tms_id, zooms in tilematrixsets.items()
- }
- else:
- layer["tilematrixsets"] = {
- tms_id: None for tms_id, _ in tilematrixsets.items()
- }
-
- else:
- tilematrixsets = supported_tms.list()
- if len(tilematrixsets) == 1:
- layer["tilematrixsets"] = {
- tms_id: _tms_limits(
- supported_tms.get(tms_id), layer["bbox"]
- )
- for tms_id in tilematrixsets
- }
- else:
- layer["tilematrixsets"] = {
- tms_id: None for tms_id in tilematrixsets
- }
-
- # TODO: handle multiple intervals
- # Check datacube extension
- # https://github.com/stac-extensions/datacube?tab=readme-ov-file#temporal-dimension-object
- if intervals := temporal_extent.intervals:
- start_date = intervals[0][0]
- end_date = (
- intervals[0][1]
- if intervals[0][1]
- else python_datetime.datetime.now(python_datetime.timezone.utc)
- )
-
- layer["time"] = [
- (start_date + python_datetime.timedelta(days=x)).strftime(
- "%Y-%m-%d"
- )
- for x in range(0, (end_date - start_date).days + 1)
- ]
-
- render = layer["render"] or {}
-
- # special encoding for rescale
- # Per Specification, the rescale entry is a 2d array in form of `[[min, max], [min,max]]`
- # We need to convert this to `['{min},{max}', '{min},{max}']` for titiler dependency
- if rescale := render.pop("rescale", None):
- rescales = []
- for r in rescale:
- if not isinstance(r, str):
- rescales.append(",".join(map(str, r)))
- else:
- rescales.append(r)
-
- render["rescale"] = rescales
-
- # special encoding for ColorMaps
- # Per Specification, the colormap is a JSON object. TiTiler dependency expects a string encoded dict
- if colormap := render.pop("colormap", None):
- if not isinstance(colormap, str):
- colormap = json.dumps(colormap)
-
- render["colormap"] = colormap
-
- qs = urlencode(
- [(k, v) for k, v in render.items() if v is not None],
- doseq=True,
- )
- layer["query_string"] = str(qs)
-
- layers[render_title] = LayerDict(
- id=layer["id"],
- collection=layer["collection"],
- bbox=layer["bbox"],
- format=layer.get("format"),
- style=layer["style"],
- render=layer.get("render", {}),
- tilematrixsets=layer["tilematrixsets"],
- time=layer.get("time"),
- query_string=layer["query_string"],
- )
-
- return layers
-
-
-@dataclass
-class OGCWMTSFactory(BaseTilerFactory):
- """Create /wmts endpoint"""
-
- path_dependency: Callable[..., APIParams] = STACApiParams
-
- # In this factory, `reader` should be a Mosaic Backend
- # https://developmentseed.org/cogeo-mosaic/advanced/backends/
- reader: Type[BaseBackend] = STACAPIBackend
-
- # Because the endpoints should work with STAC Items,
- # the `layer_dependency` define which query parameters are mandatory/optional to `display` images
- # Defaults to `titiler.core.dependencies.AssetsBidxExprParams`, `assets=` or `expression=` is required
- layer_dependency: Type[DefaultDependency] = AssetsBidxExprParams
-
- # The `tile_dependency` define options like `buffer` or `padding`
- # used in Tile/Tilejson/WMTS Dependencies
- tile_dependency: Type[DefaultDependency] = TileParams
-
- pixel_selection_dependency: Callable[..., MosaicMethodBase] = PixelSelectionParams
-
- backend_dependency: Type[DefaultDependency] = DefaultDependency
-
- supported_format: List[str] = field(
- default_factory=lambda: [
- "image/png",
- "image/jpeg",
- "image/jpg",
- "image/webp",
- "image/jp2",
- "image/tiff; application=geotiff",
- ]
- )
-
- supported_version: List[str] = field(default_factory=lambda: ["1.0.0"])
-
- templates: Jinja2Templates = DEFAULT_TEMPLATES
-
- def get_tile( # noqa: C901
- self,
- req: Dict,
- layer: LayerDict,
- stac_url: str,
- headers: Optional[Dict] = None,
- ) -> ImageData:
- """Get Tile Data."""
- layer_time = layer.get("time")
- req_time = req.get("time")
- if layer_time and "time" not in req:
- raise HTTPException(
- status_code=400,
- detail=f"Missing TIME parameters for layer {layer['id']}",
- )
-
- if layer_time and req_time not in layer_time:
- raise HTTPException(
- status_code=400,
- detail=f"Invalid 'TIME' parameter: {req_time}. Not available.",
- )
-
- tms_id = req["tilematrixset"]
- if tms_id not in self.supported_tms.list():
- raise HTTPException(
- status_code=400,
- detail=f"Invalid 'TILEMATRIXSET' parameter: {tms_id}. Should be one of {self.supported_tms.list()}.",
- )
-
- z = int(req["tilematrix"])
- x = int(req["tilecol"])
- y = int(req["tilerow"])
-
- tms = self.supported_tms.get(tms_id)
- with self.reader(
- url=stac_url,
- headers=headers,
- tms=tms,
- ) as src_dst:
- if MOSAIC_STRICT_ZOOM and (z < src_dst.minzoom or z > src_dst.maxzoom):
- raise HTTPException(
- 400,
- f"Invalid ZOOM level {z}. Should be between {src_dst.minzoom} and {src_dst.maxzoom}",
- )
-
- ###########################################################
- # STAC Query parameter provided by the the render extension and QueryParameters
- ###########################################################
- search_query: Dict[str, Any] = {
- "collections": [layer["collection"]],
- }
-
- if req_time:
- start_datetime = python_datetime.datetime.strptime(
- req_time,
- "%Y-%m-%d",
- ).replace(tzinfo=python_datetime.timezone.utc)
- end_datetime = start_datetime + python_datetime.timedelta(days=1)
-
- search_query[
- "datetime"
- ] = f"{start_datetime.strftime('%Y-%m-%dT%H:%M:%SZ')}/{end_datetime.strftime('%Y-%m-%dT%H:%M:%SZ')}"
-
- query_params = layer.get("render") or {}
- layer_params = get_dependency_params(
- dependency=self.layer_dependency,
- query_params=query_params,
- )
- tile_params = get_dependency_params(
- dependency=self.tile_dependency,
- query_params=query_params,
- )
- dataset_params = get_dependency_params(
- dependency=self.dataset_dependency,
- query_params=query_params,
- )
-
- pixel_selection = get_dependency_params(
- dependency=self.pixel_selection_dependency,
- query_params=query_params,
- )
-
- image, _ = src_dst.tile(
- x,
- y,
- z,
- # STAC Query Params
- search_query=search_query,
- pixel_selection=pixel_selection,
- threads=MOSAIC_THREADS,
- **tile_params,
- **layer_params,
- **dataset_params,
- )
-
- if post_process := get_dependency_params(
- dependency=self.process_dependency,
- query_params=query_params,
- ):
- image = post_process(image)
-
- if rescale := get_dependency_params(
- dependency=self.rescale_dependency,
- query_params=query_params,
- ):
- image.rescale(rescale)
-
- if color_formula := get_dependency_params(
- dependency=self.color_formula_dependency,
- query_params=query_params,
- ):
- image.apply_color_formula(color_formula)
-
- return image
-
- def register_routes(self): # noqa: C901
- """Register endpoints."""
-
- # WMTS - KPV Implementation
- @self.router.get(
- "/wmts",
- response_class=Response,
- responses={
- 200: {
- "description": "Web Map Tile Server responses",
- "content": {
- "application/xml": {},
- "application/geo+json": {"schema": FeatureInfo.schema()},
- "image/png": {},
- "image/jpeg": {},
- "image/jpg": {},
- "image/webp": {},
- "image/jp2": {},
- "image/tiff; application=geotiff": {},
- },
- },
- },
- openapi_extra={
- "parameters": [
- {
- "required": True,
- "schema": {
- "title": "Operation name",
- "type": "string",
- "enum": ["GetCapabilities", "GetTile", "GetFeatureInfo"],
- },
- "name": "Request",
- "in": "query",
- },
- {
- "required": True,
- "schema": {
- "title": "Service type identifier",
- "type": "string",
- "enum": ["wmts"],
- },
- "name": "Service",
- "in": "query",
- },
- {
- "required": False,
- "schema": {
- "title": "Standard and schema version",
- "type": "string",
- "enum": self.supported_version,
- },
- "name": "Version",
- "in": "query",
- },
- {
- "required": False,
- "schema": {"title": "Layer identifier"},
- "name": "Layer",
- "in": "query",
- },
- {
- "required": False,
- "schema": {
- "title": "Output image format",
- "type": "string",
- "enum": self.supported_format,
- },
- "name": "Format",
- "in": "query",
- },
- {
- "required": False,
- "schema": {"title": "Style identifier."},
- "name": "Style",
- "in": "query",
- },
- ################
- # GetTile
- {
- "required": False,
- "schema": {
- "title": "TileMatrixSet identifier.",
- "type": "str",
- "enum": self.supported_tms.list(),
- },
- "name": "TileMatrixSet",
- "in": "query",
- },
- {
- "required": False,
- "schema": {
- "title": "TileMatrix identifier",
- "type": "integer",
- },
- "name": "TileMatrix",
- "in": "query",
- },
- {
- "required": False,
- "schema": {
- "title": "Row index of tile matrix",
- "type": "integer",
- },
- "name": "TileRow",
- "in": "query",
- },
- {
- "required": False,
- "schema": {
- "title": "Column index of tile matrix",
- "type": "integer",
- },
- "name": "TileCol",
- "in": "query",
- },
- ################
- # GetFeatureInfo
- # InfoFormat
- {
- "required": False,
- "schema": {
- "title": "Column index of a pixel in the tile",
- "type": "integer",
- },
- "name": "I",
- "in": "query",
- },
- {
- "required": False,
- "schema": {
- "title": "Row index of a pixel in the tile",
- "type": "integer",
- },
- "name": "J",
- "in": "query",
- },
- {
- "required": False,
- "schema": {
- "title": "Output format of the retrieved information",
- "type": "str",
- "enum": ["application/geo+json"],
- },
- "name": "InfoFormat",
- "in": "query",
- },
- # TIME dimension
- {
- "required": False,
- "schema": {
- "title": "Time value of layer desired.",
- "type": "string",
- },
- "name": "Time",
- "in": "query",
- },
- ]
- },
- )
- def web_map_tile_service( # noqa: C901
- request: Request,
- api_params=Depends(self.path_dependency),
- ):
- """OGC WMTS Service (KVP encoding)"""
- req = {k.lower(): v for k, v in request.query_params.items()}
-
- # Service is mandatory
- service = req.get("service")
- if service is None:
- raise HTTPException(
- status_code=400, detail="Missing WMTS 'SERVICE' parameter."
- )
-
- if not service.lower() == "wmts":
- raise HTTPException(
- status_code=400,
- detail=f"Invalid 'SERVICE' parameter: {service}. Only 'wmts' is accepted",
- )
-
- # Version is mandatory is mandatory in the specification but we default to 1.0.0
- version = req.get("version", "1.0.0")
- if version is None:
- raise HTTPException(
- status_code=400, detail="Missing WMTS 'VERSION' parameter."
- )
-
- if version not in self.supported_version:
- raise HTTPException(
- status_code=400,
- detail=f"Invalid 'VERSION' parameter: {version}. Allowed versions include: {self.supported_version}",
- )
-
- # Request is mandatory
- request_type = req.get("request")
- if not request_type:
- raise HTTPException(
- status_code=400, detail="Missing WMTS 'REQUEST' parameter."
- )
-
- layers = get_layer_from_collections(
- url=api_params["api_url"],
- headers=api_params.get("headers", {}),
- supported_tms=self.supported_tms,
- )
-
- ###################################################################
- # GetCapabilities request
- if request_type.lower() == "getcapabilities":
- return self.templates.TemplateResponse(
- request,
- name=f"wmts-getcapabilities_{version}.xml",
- context={
- "request": request,
- "layers": [layer for k, layer in layers.items()],
- "service_url": self.url_for(request, "web_map_tile_service"),
- "tilematrixsets": [
- self.supported_tms.get(tms)
- for tms in self.supported_tms.list()
- ],
- "media_types": WMTSMediaType,
- },
- media_type=MediaType.xml.value,
- )
-
- ###################################################################
- # GetTile Request
- elif request_type.lower() == "gettile":
- # List of required parameters (styles and crs are excluded)
- req_keys = {
- "service",
- "request",
- "version",
- "layer",
- "style",
- "format",
- "tilematrixset",
- "tilematrix",
- "tilerow",
- "tilecol",
- }
-
- intrs = set(req.keys()).intersection(req_keys)
- missing_keys = req_keys.difference(intrs)
- if len(missing_keys) > 0:
- raise HTTPException(
- status_code=400,
- detail=f"Missing '{request_type}' parameters: {missing_keys}",
- )
-
- if req["format"] not in self.supported_format:
- raise HTTPException(
- status_code=400,
- detail=f"Invalid 'FORMAT' parameter: {req['format']}. Should be one of {self.supported_format}.",
- )
-
- output_format = ImageType(WMTSMediaType(req["format"]).name)
-
- if req["layer"] not in layers:
- raise HTTPException(
- status_code=400,
- detail=f"Invalid 'LAYER' parameter: {req['layer']}. Should be one of {list(layers)}.",
- )
-
- layer = layers[req["layer"]]
-
- style = layer.get("style", "default").lower()
- req_style = req.get("style") or "default"
- if req_style != style:
- raise HTTPException(
- status_code=400,
- detail=f"Invalid STYLE parameters {req_style} for layer {layer['id']}",
- )
-
- image = self.get_tile(
- req,
- layer,
- stac_url=api_params["api_url"],
- headers=api_params.get("headers", {}),
- )
-
- colormap = get_dependency_params(
- dependency=self.colormap_dependency,
- query_params=layer.get("render") or {},
- )
-
- content, media_type = render_image(
- image,
- output_format=output_format,
- colormap=colormap,
- add_mask=True,
- )
-
- return Response(content, media_type=media_type)
-
- ###################################################################
- # GetFeatureInfo Request
- elif request_type.lower() == "getfeatureinfo":
- req_keys = {
- "service" "request", # wmts
- "version",
- "layer",
- "style",
- # "format",
- "tilematrixset",
- "tilematrix",
- "tilerow",
- "tilecol",
- "i",
- "j",
- "infoformat",
- }
- intrs = set(req.keys()).intersection(req_keys)
- missing_keys = req_keys.difference(intrs)
- if len(missing_keys) > 0:
- raise HTTPException(
- status_code=400,
- detail=f"Missing '{request_type}' parameters: {missing_keys}",
- )
-
- if req["infoformat"] != "application/xml":
- raise HTTPException(
- status_code=400,
- detail=f"Invalid 'InfoFormat' parameter: {req['infoformat']}. Should be 'application/xml'.",
- )
-
- if req["layer"] not in layers:
- raise HTTPException(
- status_code=400,
- detail=f"Invalid 'LAYER' parameter: {req['layer']}. Should be one of {list(layers)}.",
- )
-
- layer = layers[req["layer"]]
-
- style = layer.get("style", "default").lower()
- req_style = req.get("style") or "default"
- if req_style != style:
- raise HTTPException(
- status_code=400,
- detail=f"Invalid STYLE parameters {req_style} for layer {layer['id']}",
- )
-
- image = self.get_tile(
- req,
- layer,
- stac_url=api_params["api_url"],
- headers=api_params.get("headers", {}),
- )
-
- colormap = get_dependency_params(
- dependency=self.colormap_dependency,
- query_params=layer.get("render") or {},
- )
- if colormap:
- image = image.apply_colormap(colormap)
-
- # output_format = ImageType(WMTSMediaType(req["format"]).name)
-
- i = int(req["i"])
- j = int(req["j"])
-
- ys, xs = rowcol_to_coords(image.transform, [j], [i])
- xs_wgs84, ys_wgs84 = transform_points(image.crs, "epsg:4326", xs, ys)
-
- geojson = {
- "type": "Feature",
- "id": layer["id"],
- "geometry": {
- "type": "Point",
- "coordinates": (xs_wgs84[0], ys_wgs84[0]),
- },
- "properties": {
- "values": image.data[:, j, i],
- "I": i,
- "J": j,
- "style": req_style,
- "dimension": {"time": req.get("time")},
- "tileMatrixSet": req["tilematrixset"],
- "tileMatrix": req["tilematrix"],
- "tileRow": req["tilerow"],
- "tileCol": req["tilecol"],
- },
- }
-
- return GeoJSONResponse(geojson)
-
- else:
- raise HTTPException(
- status_code=400,
- detail=f"Invalid 'REQUEST' parameter: {request_type}. Should be one of ['GetCapabilities', 'GetTile', 'GetFeatureInfo'].",
- )
-
- @self.router.get(
- "/{LAYER}/{STYLE}/{TIME}/{TileMatrixSet}/{TileMatrix}/{TileCol}/{TileRow}.{FORMAT}",
- **img_endpoint_params,
- )
- def WMTS_getTile(
- request: Request,
- collectionId: Annotated[
- str,
- Path(
- description="Layer Identifier",
- alias="LAYER",
- ),
- ],
- styleId: Annotated[
- Literal["default"],
- Path(
- description="Style Identifier",
- alias="STYLE",
- ),
- ],
- timeId: Annotated[
- str,
- Path(
- description="Time Dimension Identifier",
- alias="TIME",
- ),
- ],
- tileMatrixSetId: Annotated[ # type: ignore
- Literal[tuple(self.supported_tms.list())],
- Path(
- description="Identifier selecting one of the TileMatrixSetId supported",
- alias="TileMatrixSet",
- ),
- ],
- z: Annotated[
- int,
- Path(
- description="Identifier (Z) selecting one of the scales defined in the TileMatrixSet and representing the scaleDenominator the tile.",
- alias="TileMatrix",
- ),
- ],
- x: Annotated[
- int,
- Path(
- description="Column (X) index of the tile on the selected TileMatrix. It cannot exceed the MatrixHeight-1 for the selected TileMatrix.",
- alias="TileCol",
- ),
- ],
- y: Annotated[
- int,
- Path(
- description="Row (Y) index of the tile on the selected TileMatrix. It cannot exceed the MatrixWidth-1 for the selected TileMatrix.",
- alias="TileRow",
- ),
- ],
- format: Annotated[
- ImageType,
- Path(
- description="Output Image format",
- alias="FORMAT",
- ),
- ],
- api_params=Depends(self.path_dependency),
- layer_params=Depends(self.layer_dependency),
- dataset_params=Depends(self.dataset_dependency),
- pixel_selection=Depends(self.pixel_selection_dependency),
- tile_params=Depends(self.tile_dependency),
- post_process=Depends(self.process_dependency),
- rescale=Depends(self.rescale_dependency),
- color_formula=Depends(ColorFormulaParams),
- colormap=Depends(self.colormap_dependency),
- render_params=Depends(self.render_dependency),
- backend_params=Depends(self.backend_dependency),
- reader_params=Depends(self.reader_dependency),
- env=Depends(self.environment_dependency),
- ):
- """Create map tile."""
- search_query = {"collections": [collectionId], "datetime": timeId}
-
- tms = self.supported_tms.get(tileMatrixSetId)
- with rasterio.Env(**env):
- with self.reader(
- url=api_params["api_url"],
- headers=api_params.get("headers", {}),
- tms=tms,
- reader_options={**reader_params},
- **backend_params,
- ) as src_dst:
- if MOSAIC_STRICT_ZOOM and (
- z < src_dst.minzoom or z > src_dst.maxzoom
- ):
- raise HTTPException(
- 400,
- f"Invalid ZOOM level {z}. Should be between {src_dst.minzoom} and {src_dst.maxzoom}",
- )
-
- image, assets = src_dst.tile(
- x,
- y,
- z,
- search_query=search_query,
- tilesize=256,
- pixel_selection=pixel_selection,
- threads=MOSAIC_THREADS,
- **tile_params,
- **layer_params,
- **dataset_params,
- )
-
- if post_process:
- image = post_process(image)
-
- if rescale:
- image.rescale(rescale)
-
- if color_formula:
- image.apply_color_formula(color_formula)
-
- content, media_type = render_image(
- image,
- output_format=format,
- colormap=colormap,
- **render_params,
- )
-
- return Response(content, media_type=media_type)
diff --git a/titiler/stacapi/main.py b/titiler/stacapi/main.py
index 5abd396..ef145fc 100644
--- a/titiler/stacapi/main.py
+++ b/titiler/stacapi/main.py
@@ -20,7 +20,7 @@
from titiler.stacapi import models
from titiler.stacapi.dependencies import ItemIdParams, OutputType, STACApiParams
from titiler.stacapi.enums import MediaType
-from titiler.stacapi.factory import MosaicTilerFactory, OGCWMTSFactory
+from titiler.stacapi.factory import MosaicTilerFactory
from titiler.stacapi.reader import STACReader
from titiler.stacapi.settings import ApiSettings, STACAPISettings
from titiler.stacapi.utils import create_html_response
@@ -118,17 +118,6 @@
prefix="/collections/{collection_id}/items/{item_id}",
)
-###############################################################################
-# OGC WMTS Endpoints
-wmts = OGCWMTSFactory(
- path_dependency=STACApiParams,
- templates=templates,
-)
-app.include_router(
- wmts.router,
- tags=["Web Map Tile Service"],
-)
-
###############################################################################
# Tiling Schemes Endpoints
tms = TMSFactory()
diff --git a/titiler/stacapi/reader.py b/titiler/stacapi/reader.py
index 10ef9d7..5358871 100644
--- a/titiler/stacapi/reader.py
+++ b/titiler/stacapi/reader.py
@@ -6,6 +6,7 @@
import pystac
import rasterio
from morecantile import TileMatrixSet
+import planetary_computer
from rasterio.crs import CRS
from rio_tiler.constants import WEB_MERCATOR_TMS, WGS84_CRS
from rio_tiler.errors import InvalidAssetName
@@ -13,9 +14,10 @@
from rio_tiler.types import AssetInfo
from titiler.stacapi.settings import STACSettings
+from titiler.stacapi.settings import STACAPISettings
stac_config = STACSettings()
-
+stac_api_config = STACAPISettings()
@attr.s
class STACReader(stac.STACReader):
@@ -82,6 +84,15 @@ def _get_asset_info(self, asset: str) -> AssetInfo:
url = asset_info.get_absolute_href() or asset_info.href
if alternate := stac_config.alternate_url:
url = asset_info.to_dict()["alternate"][alternate]["href"]
+
+ # No caching of this should be necessary. From the docs https://planetarycomputer.microsoft.com/docs/concepts/sas/#planetary-computer-python-package:
+ # A cache is also kept, which tracks expiration values, to ensure new SAS tokens are only requested when needed.
+ # We only want to sign requests to MS PC API. Other ways to handle this could be:
+ # 1. Check the asset's URL to see if contains 'blob.core.windows.net' (seems brittle)
+ # 2. Set a boolean in settings, something like "SIGN_REQUESTS"
+ # 3. Just assume all requests are to MS PC API and sign them. Stub out this function in tests and/or when ENV=test
+ if stac_api_config.stac_api_url == stac_api_config.mspc_default_api_url:
+ url = planetary_computer.sign(url)
info = AssetInfo(
url=url,
diff --git a/titiler/stacapi/settings.py b/titiler/stacapi/settings.py
index 8c6be03..4158e87 100644
--- a/titiler/stacapi/settings.py
+++ b/titiler/stacapi/settings.py
@@ -77,6 +77,7 @@ class STACAPISettings(BaseSettings):
"""STAC API settings"""
stac_api_url: str
+ mspc_default_api_url: str = "https://planetarycomputer.microsoft.com/api/stac/v1"
model_config = {
"env_prefix": "TITILER_STACAPI_",
@@ -87,7 +88,7 @@ class STACAPISettings(BaseSettings):
class STACSettings(BaseSettings):
"""STAC API settings"""
-
+
alternate_url: Optional[str] = None
model_config = {
diff --git a/titiler/stacapi/templates/wmts-getcapabilities_1.0.0.xml b/titiler/stacapi/templates/wmts-getcapabilities_1.0.0.xml
deleted file mode 100644
index e896e65..0000000
--- a/titiler/stacapi/templates/wmts-getcapabilities_1.0.0.xml
+++ /dev/null
@@ -1,136 +0,0 @@
-
-
-
-
- Web Map Tile Service
- OGC WMTS
- 1.0.0
-
-
- {{ service_url }}
-
-
- TerraScope User
-
-
-
-
-
-
-
-
-
- KVP
-
-
-
-
-
-
-
-
-
-
-
-
- KVP
-
-
-
-
-
-
-
-
-
-
-
-
- KVP
-
-
-
-
-
-
-
-
- {% for layer in layers %}
-
- {{ layer.title or layer.id }}
-
- {{ layer.bbox[0] }} {{ layer.bbox[1] }}
- {{ layer.bbox[2] }} {{ layer.bbox[3] }}
-
- {{ layer.id or layer.title }}
-
- {% if layer.format %}
- {{ layer.format }}
- {% else %}
- image/png
- {% endif %}
-
- {% if layer.time %}
- TIME
- {{ layer.time[-1] }}
- {% for date in layer.time %}
- {{ date }}
- {% endfor %}
- {% else %}
- _empty
- {% endif %}
-
-
- {% if layer.tilematrixsets %}
- {% for tms_id, limits in layer.tilematrixsets.items() %}
- {{ tms_id }}
- {% if limits %}
-
- {% for limit in limits %}
-
- {{ limit.tileMatrix }}
- {{ limit.minTileRow }}
- {{ limit.maxTileRow }}
- {{ limit.minTileCol }}
- {{ limit.maxTileCol }}
-
- {% endfor %}
-
- {% endif %}
- {% endfor %}
- {% endif %}
-
- {% if layer.format %}
-
- {% else %}
-
- {% endif %}
-
- {% endfor %}
- {% for tms in tilematrixsets %}
-
- {{ tms.id }}
- {% if tms.crs.to_epsg() %}
- urn:ogc:def:crs:epsg::{{tms.crs.to_epsg()}}
- {% else %}
- {{ tms.crs.srs.replace("http://www.opengis.net/def/", "urn:ogc:def:").replace("/", ":")}}
- {% endif %}
- {% for matrix in tms %}
-
- {{ matrix.id }}
- {{ matrix.scaleDenominator }}
- {{ matrix.pointOfOrigin[0] }} {{ matrix.pointOfOrigin[1] }}
- {{ matrix.tileWidth }}
- {{ matrix.tileHeight }}
- {{ matrix.matrixWidth }}
- {{ matrix.matrixHeight }}
-
- {% endfor %}
-
- {% endfor %}
-
-
-