diff --git a/.github/workflows/makefile.yml b/.github/workflows/makefile.yml index 837fffd6..a1a79397 100644 --- a/.github/workflows/makefile.yml +++ b/.github/workflows/makefile.yml @@ -23,7 +23,7 @@ jobs: - run: | python3 "${GITHUB_WORKSPACE}/setup.py" install_lib - run: | - python3 -m pip uninstall botocore boto3 -y + python3 -m pip uninstall botocore boto3 s3transfer -y - run: | # make file runnable, might not be necessary chmod +x "${GITHUB_WORKSPACE}/ci.cd/create_aws_lambda_zip.sh" diff --git a/CHANGELOG.md b/CHANGELOG.md index 3745ffd1..4376d83d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,26 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [9.6.0] - 2025-02-03 +### Changed +- [#517](https://github.com/unity-sds/unity-data-services/pull/517) feat: stac browser oidc cookie + +## [9.5.2] - 2025-01-31 +### Fixed +- [#524](https://github.com/unity-sds/unity-data-services/pull/524) fix: default boto3 from aws already has s3transfer library + +## [9.5.1] - 2025-01-17 +### Fixed +- [#502](https://github.com/unity-sds/unity-data-services/pull/502) fix: get granules pagination + +## [9.5.0] - 2025-01-17 +### Changed +- [#499](https://github.com/unity-sds/unity-data-services/pull/499) feat: duplicate granules diff index + +## [9.4.2] - 2025-01-17 +### Fixed +- [#498](https://github.com/unity-sds/unity-data-services/pull/498) fix: restructure bbox for geoshape + ## [9.4.1] - 2024-12-18 ### Fixed - [#489](https://github.com/unity-sds/unity-data-services/pull/489) fix: delete bug diff --git a/cumulus_lambda_functions/lib/uds_db/granules_db_index.py b/cumulus_lambda_functions/lib/uds_db/granules_db_index.py index 9ace9ce9..f07253f3 100644 --- a/cumulus_lambda_functions/lib/uds_db/granules_db_index.py +++ b/cumulus_lambda_functions/lib/uds_db/granules_db_index.py @@ -34,12 +34,25 @@ def __init__(self): @staticmethod def to_es_bbox(bbox_array): + # lon = x, lat = y + # lon, lat, lon, lat + # x can be 170 to -170 + # 170, 0, -170, 10 + minX, minY, maxX, maxY = bbox_array + + # Ensure the values are properly sorted + # if minX > maxX: + # minX, maxX = maxX, minX + if minY > maxY: + minY, maxY = maxY, minY + return { "type": "envelope", - "coordinates": [ - [bbox_array[0], bbox_array[3]], # Top-left corner (minLon, maxLat) - [bbox_array[2], bbox_array[1]] # Bottom-right corner (maxLon, minLat) - ] + "coordinates": [[minX, maxY], [maxX, minY]], + # "coordinates": [ + # [bbox_array[0], bbox_array[3]], # Top-left corner (minLon, maxLat) + # [bbox_array[2], bbox_array[1]] # Bottom-right corner (maxLon, minLat) + # ] } @staticmethod @@ -152,16 +165,20 @@ def create_new_index(self, tenant, tenant_venue, es_mapping: dict): self.__es.swap_index_for_alias(write_perc_alias_name, current_perc_index_name, new_perc_index_name) try: self.__es.migrate_index_data(current_perc_index_name, new_perc_index_name) - except Exception as e: + except: LOGGER.exception(f'failed to migrate index data: {(current_perc_index_name, new_perc_index_name)}') return - def get_latest_index(self, tenant, tenant_venue): + def get_latest_index_name(self, tenant, tenant_venue): write_alias_name = f'{DBConstants.granules_write_alias_prefix}_{tenant}_{tenant_venue}'.lower().strip() write_alias_name = self.__es.get_alias(write_alias_name) if len(write_alias_name) != 1: raise ValueError(f'missing index for {tenant}_{tenant_venue}. {write_alias_name}') latest_index_name = [k for k in write_alias_name.keys()][0] + return latest_index_name + + def get_latest_index(self, tenant, tenant_venue): + latest_index_name = self.get_latest_index_name(tenant, tenant_venue) index_mapping = self.__es.get_index_mapping(latest_index_name) if index_mapping is None: raise ValueError(f'missing index: {latest_index_name}') @@ -201,15 +218,25 @@ def get_entry(self, tenant: str, tenant_venue: str, doc_id: str, ): raise ValueError(f"no such granule: {doc_id}") return result - def delete_entry(self, tenant: str, tenant_venue: str, doc_id: str, ): + def __query_by_id_local(self, tenant: str, tenant_venue: str, doc_id: str, ): read_alias_name = f'{DBConstants.granules_read_alias_prefix}_{tenant}_{tenant_venue}'.lower().strip() - result = self.__es.query({ + dsl = { 'size': 9999, - 'query': {'term': {'_id': doc_id}} - }, read_alias_name) - if result is None: - raise ValueError(f"no such granule: {doc_id}") - for each_granule in result['hits']['hits']: + 'sort': [ + {'properties.datetime': {'order': 'desc'}}, + {'id': {'order': 'asc'}} + ], + 'query': { + 'term': {'_id': doc_id} + } + } + result = self.__es.query(dsl, read_alias_name) + if result is None or len(result['hits']['hits']) < 1: + return [] + return result['hits']['hits'] + + def __delete_old_entries(self, dsl_result): + for each_granule in dsl_result: LOGGER.debug(f"deleting {each_granule['_id']} from {each_granule['_index']}") delete_result = self.__es.delete_by_query({ 'query': {'term': {'id': each_granule['_id']}} @@ -217,37 +244,80 @@ def delete_entry(self, tenant: str, tenant_venue: str, doc_id: str, ): LOGGER.debug(f'delete_result: {delete_result}') if delete_result is None: raise ValueError(f"error deleting {each_granule}") + return + + def delete_entry(self, tenant: str, tenant_venue: str, doc_id: str, ): + result = self.__query_by_id_local(tenant, tenant_venue, doc_id) + if len(result) < 1: + raise ValueError(f"no such granule: {doc_id}") + self.__delete_old_entries(result) return result def update_entry(self, tenant: str, tenant_venue: str, json_body: dict, doc_id: str, ): + # find existing doc_id + # if not found, throw error. Cannot update + # if found, check index. + # if latest index, proceed with update + # if older index, proceed with get + delete + # tweak meta locally, and add it. write_alias_name = f'{DBConstants.granules_write_alias_prefix}_{tenant}_{tenant_venue}'.lower().strip() json_body['event_time'] = TimeUtils.get_current_unix_milli() - self.__es.update_one(json_body, doc_id, index=write_alias_name) # TODO assuming granule_id is prefixed with collection id - LOGGER.debug(f'custom_metadata indexed') + existing_entries = self.__query_by_id_local(tenant, tenant_venue, doc_id) + if len(existing_entries) < 1: + raise ValueError(f'unable to update {doc_id} as it is not found. ') + latest_index_name = self.get_latest_index_name(tenant, tenant_venue) + existing_entry = existing_entries[0] + if existing_entry['_index'] == latest_index_name: + LOGGER.debug(f'{doc_id} in latest index: {latest_index_name}. continuing with update') + self.__es.update_one(json_body, doc_id, index=write_alias_name) # TODO assuming granule_id is prefixed with collection id + self.__delete_old_entries(existing_entries[1:]) + return + LOGGER.debug(f'{doc_id} in older index: {latest_index_name} v. {existing_entry["_index"]}') + new_doc = {**existing_entry['_source'], **json_body} + self.__es.index_one(new_doc, doc_id, index=write_alias_name) # TODO assuming granule_id is prefixed with collection id + self.__delete_old_entries(existing_entries) return def add_entry(self, tenant: str, tenant_venue: str, json_body: dict, doc_id: str, ): + # find existing doc_id + # if not found, add it + # if found, and it is in latest index, add it. + # if found, and it is in older index, add current one, and delete the older one. + write_alias_name = f'{DBConstants.granules_write_alias_prefix}_{tenant}_{tenant_venue}'.lower().strip() json_body['event_time'] = TimeUtils.get_current_unix_milli() - # TODO validate custom metadata vs the latest index to filter extra items + existing_entries = self.__query_by_id_local(tenant, tenant_venue, doc_id) + if len(existing_entries) < 1: + self.__es.index_one(json_body, doc_id, index=write_alias_name) # TODO assuming granule_id is prefixed with collection id + return + latest_index_name = self.get_latest_index_name(tenant, tenant_venue) + existing_entry = existing_entries[0] + if existing_entry['_index'] == latest_index_name: + self.__es.index_one(json_body, doc_id, index=write_alias_name) # TODO assuming granule_id is prefixed with collection id + self.__delete_old_entries(existing_entries[1:]) + return self.__es.index_one(json_body, doc_id, index=write_alias_name) # TODO assuming granule_id is prefixed with collection id - LOGGER.debug(f'custom_metadata indexed') + self.__delete_old_entries(existing_entries) + # TODO validate custom metadata vs the latest index to filter extra items return def dsl_search(self, tenant: str, tenant_venue: str, search_dsl: dict): read_alias_name = f'{DBConstants.granules_read_alias_prefix}_{tenant}_{tenant_venue}'.lower().strip() - if 'sort' not in search_dsl: - search_result = self.__es.query(search_dsl, - querying_index=read_alias_name) if 'sort' in search_dsl else self.__es.query( - search_dsl, querying_index=read_alias_name) + if 'sort' not in search_dsl: # We cannot paginate w/o sort. So, max is 10k items: + # This also assumes "size" should be part of search_dsl + search_result = self.__es.query(search_dsl, querying_index=read_alias_name) LOGGER.debug(f'search_finished: {len(search_result["hits"]["hits"])}') return search_result + # we can run paginate search original_size = search_dsl['size'] if 'size' in search_dsl else 20 + total_size = -999 result = [] duplicates = set([]) while len(result) < original_size: search_dsl['size'] = (original_size - len(result)) * 2 - search_result = self.__es.query_pages(search_dsl, querying_index=read_alias_name) if 'sort' in search_dsl else self.__es.query(search_dsl, querying_index=read_alias_name) + search_result = self.__es.query_pages(search_dsl, querying_index=read_alias_name) + if total_size == -999: + total_size = self.__es.get_result_size(search_result) if len(search_result['hits']['hits']) < 1: break for each in search_result['hits']['hits']: @@ -257,11 +327,16 @@ def dsl_search(self, tenant: str, tenant_venue: str, search_dsl: dict): search_dsl['search_after'] = search_result['hits']['hits'][-1]['sort'] LOGGER.debug(f'search_finished: {len(result)}') + if len(result) > original_size: + result = result[:original_size] return { 'hits': { "total": { - "value": len(result) + "value": total_size, }, 'hits': result } } + + + diff --git a/cumulus_lambda_functions/uds_api/dapa/granules_dapa_query_es.py b/cumulus_lambda_functions/uds_api/dapa/granules_dapa_query_es.py index 1685f90f..706c8073 100644 --- a/cumulus_lambda_functions/uds_api/dapa/granules_dapa_query_es.py +++ b/cumulus_lambda_functions/uds_api/dapa/granules_dapa_query_es.py @@ -39,7 +39,7 @@ def __generate_es_dsl(self): if self.__filter_input is not None: query_terms.append(CqlParser('properties').transform(self.__filter_input)) query_dsl = { - 'track_total_hits': True, + 'track_total_hits': self.__offset is None, 'size': self.__limit, # "collapse": {"field": "id"}, 'sort': [ @@ -228,11 +228,11 @@ def start(self): each_granules_query_result_stripped['links'].append(self_link) self.__restructure_each_granule_result(each_granules_query_result_stripped) - pagination_link = '' if len(granules_query_result['hits']['hits']) < self.__limit else ','.join([k if isinstance(k, str) else str(k) for k in granules_query_result['hits']['hits'][-1]['sort']]) + pagination_link = '' if len(granules_query_result['hits']['hits']) < 1 else ','.join([k if isinstance(k, str) else str(k) for k in granules_query_result['hits']['hits'][-1]['sort']]) return { 'statusCode': 200, 'body': { - 'numberMatched': {'total_size': result_size}, + 'numberMatched': {'total_size': -1 if self.__offset is not None else result_size}, 'numberReturned': len(granules_query_result['hits']['hits']), 'stac_version': '1.0.0', 'type': 'FeatureCollection', # TODO correct name? diff --git a/cumulus_lambda_functions/uds_api/misc_api.py b/cumulus_lambda_functions/uds_api/misc_api.py index 4d5dbbe2..1fd88f78 100644 --- a/cumulus_lambda_functions/uds_api/misc_api.py +++ b/cumulus_lambda_functions/uds_api/misc_api.py @@ -46,6 +46,13 @@ async def stac_entry(request: Request, response: Response): @router.get(f'/stac_entry') @router.get(f'/stac_entry/') async def stac_entry(request: Request, response: Response): + """ + How to re-load UCS + https://github.com/unity-sds/unity-data-services/issues/381#issuecomment-2201165672 + :param request: + :param response: + :return: + """ request_headers = dict(request.headers) LOGGER.debug(f'stac_entry - request_headers: {request_headers}') print(request_headers) diff --git a/cumulus_lambda_functions/uds_api/stac_browser/index.html b/cumulus_lambda_functions/uds_api/stac_browser/index.html index 80e1b2ad..053c38d2 100644 --- a/cumulus_lambda_functions/uds_api/stac_browser/index.html +++ b/cumulus_lambda_functions/uds_api/stac_browser/index.html @@ -1 +1 @@ -STAC Browser
\ No newline at end of file +STAC Browser
\ No newline at end of file diff --git a/cumulus_lambda_functions/uds_api/stac_browser/js/app.79583f94.js.map b/cumulus_lambda_functions/uds_api/stac_browser/js/app.79583f94.js.map deleted file mode 100644 index 6a216d8d..00000000 --- a/cumulus_lambda_functions/uds_api/stac_browser/js/app.79583f94.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/app.79583f94.js","mappings":"mGAAA,IAAIA,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,UAAU,CAACE,YAAY,eAAe,CAAEJ,EAAIK,aAAcH,EAAG,KAAK,CAACF,EAAIM,GAAGN,EAAIO,GAAGP,EAAIK,iBAAiBL,EAAIQ,KAAKN,EAAG,MAAM,CAACE,YAAY,YAAYK,MAAM,CAAC,KAAO,YAAYT,EAAIU,GAAIV,EAAIW,QAAQ,SAASC,EAAMC,GAAK,OAAOX,EAAG,QAAQ,CAACW,IAAIA,EAAIJ,MAAM,CAAC,MAAQG,EAAM,OAASZ,EAAIc,OAAO,QAAUd,EAAIe,QAAQ,WAAaf,EAAIgB,WAAW,MAAQhB,EAAIiB,MAAMC,SAASL,GAAK,GAAKA,GAAKM,GAAG,CAAC,KAAOnB,EAAIoB,OAAO,IAAG,IACld,EACIC,EAAkB,GCFlBtB,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,SAAS,CAACE,YAAY,QAAQK,MAAM,CAAC,UAAU,KAAK,CAACP,EAAG,gBAAgB,CAACE,YAAY,MAAMK,MAAM,CAAC,aAAa,SAAS,KAAO,QAAQ,CAACP,EAAG,WAAW,CAACoB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAOzB,EAAI0B,IAAKC,WAAW,QAAQvB,YAAY,aAAaK,MAAM,CAAC,MAAQ,GAAG,QAAU,QAAQ,QAAU,KAAK,CAACP,EAAG,OAAO,CAACE,YAAY,SAAS,CAACF,EAAG,OAAO,CAACE,YAAY,OAAOK,MAAM,CAAC,cAAc,SAAS,CAAET,EAAI4B,SAAU1B,EAAG,uBAAuBA,EAAG,yBAAyB,GAAGF,EAAIM,GAAG,IAAIN,EAAIO,GAAGP,EAAIY,MAAMiB,OAAS7B,EAAI8B,IAAI,OAAQC,MAAMC,QAAQhC,EAAIY,MAAMqB,OAAQ/B,EAAG,MAAM,CAACE,YAAY,eAAe,CAAEJ,EAAIiB,MAAOf,EAAG,UAAU,CAACE,YAAY,kBAAkBK,MAAM,CAAC,QAAU,UAAU,MAAQT,EAAIkC,GAAG,2BAA2B,CAAChC,EAAG,gBAAgBF,EAAIM,GAAG,IAAIN,EAAIO,GAAGP,EAAIkC,GAAG,iBAAiB,MAAM,GAAGlC,EAAIQ,KAAMR,EAAIY,MAAMuB,WAAYjC,EAAG,UAAU,CAACE,YAAY,uBAAuBK,MAAM,CAAC,QAAU,YAAY,CAACT,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,kBAAkBlC,EAAIQ,KAAKR,EAAIU,GAAIV,EAAIY,MAAMqB,OAAO,SAASG,GAAM,OAAOlC,EAAG,UAAU,CAACW,IAAIuB,EAAKhC,YAAY,iBAAiBK,MAAM,CAAC,QAAmB,SAAT2B,EAAkB,UAAY,cAAc,CAACpC,EAAIM,GAAGN,EAAIO,GAAGP,EAAIqC,YAAYD,MAAS,IAAIpC,EAAIsC,gBAAiBpC,EAAG,UAAU,CAACE,YAAY,mBAAmBK,MAAM,CAAC,QAAU,OAAO,MAAQT,EAAIuC,aAAa,CAACrC,EAAG,OAAO,CAACsC,SAAS,CAAC,UAAYxC,EAAIO,GAAGP,EAAIsC,sBAAsBtC,EAAIQ,MAAM,GAAGR,EAAIQ,QAAQ,GAAGN,EAAG,aAAa,CAACO,MAAM,CAAC,GAAKT,EAAI0B,IAAI,UAAY1B,EAAIyC,KAAK,KAAO,YAAYtB,GAAG,CAAC,MAAQnB,EAAI0C,iBAAiBC,MAAM,CAAClB,MAAOzB,EAAI4B,SAAUgB,SAAS,SAAUC,GAAM7C,EAAI4B,SAASiB,CAAG,EAAElB,WAAW,aAAa,CAACzB,EAAG,cAAc,CAACA,EAAG,eAAe,CAACA,EAAG,OAAO,CAACsC,SAAS,CAAC,UAAYxC,EAAIO,GAAGP,EAAIuC,iBAAkBvC,EAAI8C,KAAM5C,EAAG,iBAAiB,CAACE,YAAY,WAAW,CAAGJ,EAAI+C,kBAA+H7C,EAAG,WAAW,CAACO,MAAM,CAAC,KAAOT,EAAI8C,KAAK,OAAS,SAAS,QAAU,YAAY,CAAE9C,EAAIgD,mBAAoB9C,EAAG,6BAA6BA,EAAG,mBAAmBF,EAAIM,GAAG,IAAIN,EAAIO,GAAGP,EAAIiD,YAAY,MAAM,GAAlT/C,EAAG,aAAa,CAACO,MAAM,CAAC,QAAU,UAAU,SAAWT,EAAI8C,OAAO,CAAC9C,EAAIM,GAAG,IAAIN,EAAIO,GAAGP,EAAIiD,YAAY,OAAiNjD,EAAIkD,UAAYlD,EAAIiB,MAAOf,EAAG,WAAW,CAACO,MAAM,CAAC,QAAU,WAAWU,GAAG,CAAC,MAAQnB,EAAIoB,OAAO,CAAClB,EAAG,cAAcF,EAAIM,GAAG,MAAON,EAAImD,YAAa,CAACnD,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,2BAA2B,CAAClC,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,wBAAwB,GAAGlC,EAAIQ,MAAM,GAAGR,EAAIQ,KAAMR,EAAIY,MAAMwC,YAAalD,EAAG,cAAc,CAACE,YAAY,QAAQ,CAACF,EAAG,cAAc,CAACO,MAAM,CAAC,YAAcT,EAAIY,MAAMwC,YAAY,QAAU,OAAO,GAAGpD,EAAIQ,KAAKN,EAAG,WAAW,CAACE,YAAY,OAAOK,MAAM,CAAC,KAAOT,EAAIY,MAAM,QAAUZ,EAAIe,QAAQ,aAAef,EAAIqD,OAAO,MAAQ,GAAG,KAAO,YAAY,IAAI,IAAI,EACvoF,EACIhC,EAAkB,G,wFCuDtB,GACAE,KAAA,QACA+B,WAAA,CACAC,UAAA,IACAC,qBAAA,MACAC,WAAA,MACAC,iBAAA,MACAC,kBAAA,MACAC,cAAA,MACAC,SAAA,MACAC,WAAAA,IAAA,gCACAC,YAAA,aACAC,SAAAA,IAAA,oEAEAC,OAAA,EACAC,EAAAA,EAAAA,GAAA,CAAAC,gBAAAA,EAAAA,mBAEAC,MAAA,CACAxD,MAAA,CACA6B,KAAA4B,OACAC,UAAA,GAEAxC,GAAA,CACAW,KAAA8B,OACAD,UAAA,GAEAvD,QAAA,CACA0B,KAAA4B,OACAG,QAAA,MAEAxD,WAAA,CACAyB,KAAAgC,QACAD,SAAA,GAEA1D,OAAA,CACA2B,KAAAgC,QACAD,QAAA,MAEAvD,MAAA,CACAwB,KAAAgC,QACAD,SAAA,IAGAE,IAAAA,GACA,OACA9C,UAAA,EACAyB,OAAA,CAEA,OACA,QACA,cACA,OACA,QAEA,YACA,gBAEA,wBACA,qBACA,0BAGA,EACAsB,SAAA,KACAC,EAAAA,EAAAA,IAAA,oFACAC,EAAAA,EAAAA,IAAA,mBACAC,gBAAAA,GACA,YAAAC,uBAAA,KAAAC,uBACA,SAGA,QAEA,EACAvC,IAAAA,GACA,YAAAzB,WAAA,iBACA,EACAU,GAAAA,GACA,cAAAe,QAAA,KAAAX,IACA,EACAqB,WAAAA,GACA,OAAApB,MAAAC,QAAA,KAAApB,MAAAqB,QAAA,KAAArB,MAAAqB,MAAAf,SAAA,YACA,EACAgC,OAAAA,GAEA,6BAAAtC,MAAA6B,SAIA,gBAAAqC,mBAAAG,EAAAA,GAAA/D,SAAA,KAAAN,MAAA6B,UAIA,KAAAyC,WAAA,gBAAAJ,sBAIA,KAAA/B,qBAIAoC,EAAAA,GAAAjE,SAAA,KAAAN,MAAA6B,OAIA,EACAF,UAAAA,GACA,6BAAA3B,MAAA6B,MAAA,KAAA7B,MAAA6B,KAAA2C,OAAA,EACA,KAAAjB,gBAAA,KAAAvD,MAAA6B,MAEA,IACA,EACAH,eAAAA,GACA,6BAAA1B,MAAA6B,MAAA,KAAA7B,MAAA6B,KAAA2C,OAAA,EACA,KAAAjB,gBAAA,KAAAvD,MAAA6B,KAAA,MAAA4C,SAAA,IAEA,IACA,EACAC,QAAAA,GACA,0BAAAxC,MACA,KAAAA,KAAA,CACA,IAAAyC,EAAA,KAAAzC,KAAAyC,MAAA,eACA,GAAAA,EACA,OAAAA,EAAA,GAAAC,aAEA,CAEA,WACA,EACAzC,iBAAAA,GACA,YAAAuC,WAAA,KAAAJ,WAAAO,EAAAA,GAAAvE,SAAA,KAAAoE,SACA,EACAJ,SAAAA,GACA,OAAAQ,EAAAA,GAAAC,aAAA,KAAA/E,MAAAkC,KACA,EACAA,IAAAA,GACA,0BAAAlC,MAAAkC,KACA,YAEA,IAAA8C,EAAA,KAIA,OAHA,KAAA7E,mBAAA8E,EAAAA,IACAD,EAAA,KAAA7E,QAAA+E,kBAEA,KAAAC,cAAA,KAAAnF,MAAAkC,KAAA8C,EACA,EACAI,IAAAA,GACA,QAAAd,UAAA,CACA,IAAAzC,EAAA,KAAA7B,MAAAkC,KAAAyC,MAAA,mCACA,YAAAU,aAAAxD,EACA,CAEA,YAAAwD,aAAA,KAAAX,SAEA,EACAtC,kBAAAA,GACA,QAAAkC,UACA,SAEA,GAAAQ,EAAAA,GAAAQ,uBAAA,KAAAtF,OACA,SAEA,0BAAAA,MAAA6B,KACA,YAAA7B,MAAA6B,KAAA+C,eACA,gBACA,4BACA,iBACA,sBACA,SAGA,QACA,EACAvC,UAAAA,GACA,QAAAD,oBAAA,KAAAD,kBACA,YAAAb,GAAA,QAEA,IAAAiE,EAAA,WACA,KAAAjB,UACAiB,EAAA,iBAEA,KAAApD,oBACAoD,EAAA,WAEA,IAAAC,GAAA,KAAArD,mBAAA,KAAAiD,KAAA,uBACA,YAAA9D,GAAA,UAAAiE,KAAAC,IAAA,CAAAC,OAAA,KAAAL,MACA,GAEAM,OAAAA,GACA,KAAAC,qBAAA,KAAA9D,MAAA+D,QAAA,KAAA9E,MAAA,EACA,KAAAE,UAAA,EAIA,wBAAAd,OACA,KAAAc,SAAA,KAAAd,OAGA,KAAAc,UAAA,CAEA,EACA6E,QAAA,CACApE,WAAAA,CAAAD,GACA,IAAAvB,EAAA,eAAAuB,IACA,YAAAsE,IAAA7F,GACA,KAAAqB,GAAArB,GAEAuB,CACA,EACAhB,IAAAA,GACA,IAAAR,EAAAyD,OAAAsC,OAAA,QAAA/F,OAEA,KAAAsE,YACAtE,EAAAkC,KAAA,KAAAA,MAEA,KAAA8D,MAAA,OAAAhG,EAAA,KAAAkB,GAAA,KAAAqB,YACA,EACA8C,YAAAA,CAAAX,GACA,qBAAAA,EACA,SAEA,OAAAA,EAAAE,eACA,SACA,YAAAtD,GAAA,eACA,WACA,YACA,YAAAA,GAAA,kBACA,UACA,YAAAA,GAAA,gBACA,UACA,YAAAA,GAAA,gBACA,UACA,YAAAA,GAAA,gBACA,WACA,YAAAA,GAAA,iBAEA,QACA,EACAQ,eAAAA,CAAAmE,GACA,IAAAC,EAAAD,EAAA,qCACA,KAAAE,OAAAC,OAAAF,EAAA,CAAArE,KAAA,KAAAA,KAAAf,IAAA,KAAAA,KACA,ICzSoP,I,WCQhPuF,GAAY,OACd,EACA,EACA,GACA,EACA,KACA,KACA,MAIF,EAAeA,EAAiB,QCFhC,GACA1F,KAAA,SACA+B,WAAA,CACA4D,MAAAA,GAEA9C,MAAA,CACAzD,OAAA,CACA8B,KAAA4B,OACAC,UAAA,GAEArD,MAAA,CACAwB,KAAAV,MACAyC,QAAAA,IAAA,IAEAzD,QAAA,CACA0B,KAAA4B,OACAG,QAAA,MAEAxD,WAAA,CACAyB,KAAAgC,QACAD,SAAA,GAEA3C,MAAA,CACAY,KAAA8B,OACAC,QAAA,OAGAG,SAAA,CACAwC,KAAAA,GACA,OAAAzB,EAAAA,GAAA0B,KAAA,KAAAzG,OACA,EACAN,YAAAA,GACA,eAAAwB,MAAA,CACA,IAAAwF,EAAA,KAAArG,WAAA,8BACA,YAAAsG,IAAAD,EAAA,KAAAF,MACA,CAEA,YAAAtF,KAEA,EACAf,MAAAA,GACA,YAAAE,eAGA,SAAAmG,QAAA,KAAAI,OAAA,KAAAA,KAAAC,WAGA,KACA,GAEAf,QAAA,CACArF,IAAAA,CAAAR,EAAAkB,EAAAqB,GACA,KAAAyD,MAAA,YAAAhG,EAAAkB,EAAAqB,EACA,ICtEqP,ICOjP,GAAY,OACd,EACApD,EACAsB,GACA,EACA,KACA,KACA,MAIF,EAAe,EAAiB,O,qEClBhC,IAAItB,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,SAAS,CAACoB,WAAW,CAAC,CAACC,KAAK,YAAYC,QAAQ,kBAAkBC,MAAOzB,EAAIyH,KAAM9F,WAAW,OAAO+F,UAAU,CAAC,KAAM,KAAQC,MAAM3H,EAAI4H,QAAQnH,MAAM,CAAC,UAAU,GAAG,YAAYT,EAAI6H,SAAS,CAAE7H,EAAI8H,SAAU5H,EAAG,kBAAkBF,EAAI+H,GAAG,CAAC3H,YAAY,YAAYK,MAAM,CAAC,OAAS,QAAQ,kBAAkBT,EAAIgI,WAAU,IAAQhI,EAAIQ,KAAKN,EAAG,cAAc,CAACA,EAAG,eAAe,CAACA,EAAG,WAAW,CAACE,YAAY,iBAAiBK,MAAM,CAAC,KAAO,CAACT,EAAI0E,KAAM1E,EAAIiI,aAAa,GAAIjI,EAAI0E,OAAS1E,EAAIkI,YAAY9C,OAAS,GAAKpF,EAAI0E,KAAKtB,aAAepD,EAAI0E,KAAKvC,YAAajC,EAAG,cAAc,CAACE,YAAY,SAAS,CAAEJ,EAAI0E,KAAKvC,WAAYjC,EAAG,UAAU,CAACE,YAAY,uBAAuBK,MAAM,CAAC,QAAU,YAAY,CAACT,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,kBAAkBlC,EAAIQ,KAAKR,EAAIU,GAAIV,EAAIkI,aAAa,SAASC,GAAQ,OAAOjI,EAAG,UAAU,CAACW,IAAIsH,EAAO/H,YAAY,uBAAuBK,MAAM,CAAC,QAAU,cAAc,CAACT,EAAIM,GAAGN,EAAIO,GAAGP,EAAIoI,GAAG,kBAAPpI,CAA0BmI,MAAW,IAAGnI,EAAIM,GAAG,IAAIN,EAAIO,GAAGP,EAAIoI,GAAG,YAAPpI,CAAoBA,EAAI0E,KAAKtB,cAAc,MAAM,GAAGpD,EAAIQ,KAAMR,EAAIqI,eAAgBnI,EAAG,cAAc,CAACE,YAAY,YAAY,CAACF,EAAG,OAAO,CAACsC,SAAS,CAAC,UAAYxC,EAAIO,GAAGP,EAAIqI,qBAAqBrI,EAAIQ,MAAM,IAAI,EACvsC,EACIa,EAAkB,G,wFCwBtB,GACAE,KAAA,UACA+B,WAAA,CACAgF,SAAAA,EAAAA,YAEAC,QAAA,CACAC,UAAAC,GAAA/C,EAAAA,GAAAgD,YAAAD,EAAA,KACAtE,gBAAA1C,IAAA0C,EAAAA,EAAAA,iBAAA1C,EAAA,MAAA4D,SAAA,KAEApB,OAAA,CACA0E,EAAAA,GACAzE,EAAAA,EAAAA,GAAA,CAAA0E,qBAAAA,EAAAA,wBAEAxE,MAAA,CACA6D,QAAA,CACAxF,KAAA4B,OACAC,UAAA,IAGAK,SAAA,KACAE,EAAAA,EAAAA,IAAA,aACA+C,OAAAA,GACA,IAAAA,EAAA,iBAaA,OAZA,KAAAlD,MACAkD,EAAAiB,KAAA,UAEA,KAAAnE,MAAA,KAAAA,KAAAvC,YACAyF,EAAAiB,KAAA,cAEA,KAAAf,UACAF,EAAAiB,KAAA,iBAEA,KAAAR,gBACAT,EAAAiB,KAAA,cAEAjB,CACA,EACAlD,IAAAA,GACA,YAAAoE,QAAA,KAAAb,QACA,EACAI,cAAAA,GAAA,IAAAU,EAAAC,EAAAC,EACA,WAAAF,EAAA,KAAArE,YAAA,IAAAqE,GAAAA,EAAAG,iBAAA,QAAAF,EAAA,KAAAtE,KAAAyE,cAAA,IAAAH,GAAA,QAAAC,EAAAD,EAAAI,gBAAA,IAAAH,OAAA,EAAAA,EAAAI,SAAAjE,QAAA,GACA,IAAA+D,EAAA,KAAAzE,KAAAyE,OAAAC,SAAAC,SAAA,GACA,GAAAtH,MAAAC,QAAAmH,KAAA,kBAAAA,EAAA,sBAAAA,EAAA,IACA,YAAAP,qBAAA,KAAAlE,KAAAyE,OAAAC,SAAAC,SAAA,MAEA,CACA,WACA,EACAnB,WAAAA,GACA,YAAAxD,KACA,KAAAA,KAAA4E,iBAEA,EACA,GAEA7C,QAAA,CACAgB,IAAAA,CAAA8B,GACA,KAAAtB,mBAAApC,EAAAA,GAGA,KAAAkB,OAAAC,OAAAuC,EAAA,uBAAAtB,QAAAnF,KACA,ICxFsP,I,WCQlPmE,GAAY,OACd,EACAlH,EACAsB,GACA,EACA,KACA,KACA,MAIF,EAAe4F,EAAiB,O,kFCnBhC,IAAIlH,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,qBAAqBuH,MAAM,CAAC6B,QAASxJ,EAAIwJ,QAASC,OAAQzJ,EAAIyJ,QAAQjH,SAAS,CAAC,UAAYxC,EAAIO,GAAGP,EAAI0J,OAAO1J,EAAIoD,gBAC3M,EACI/B,EAAkB,G,WCKtB,GACAE,KAAA,cACA6C,MAAA,CACAhB,YAAA,CACAX,KAAA8B,OACAC,QAAA,IAEAgF,QAAA,CACA/G,KAAAgC,QACAD,SAAA,GAEAiF,OAAA,CACAhH,KAAAgC,QACAD,SAAA,GAEAmF,UAAA,CACAlH,KAAAgC,QACAD,SAAA,IAGAiC,QAAA,CACAiD,MAAAA,CAAAjB,GACA,qBAAAA,EACA,SAIA,IAAAmB,EAAA,IAAAC,EAAAA,GACAC,EAAA,IAAAD,EAAAA,GAAA,CAAAE,MAAA,KAAAJ,UAAAK,OAAA,IACAC,EAAAL,EAAAM,MAAAzB,GACA,OAAAqB,EAAA/J,OAAAkK,EACA,ICtC0P,I,WCQtPhD,GAAY,OACd,EACAlH,EACAsB,GACA,EACA,KACA,KACA,MAIF,EAAe4F,EAAiB,O,iFCnBhC,IAAIlH,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,SAAS,CAACoB,WAAW,CAAC,CAACC,KAAK,YAAYC,QAAQ,kBAAkBC,MAAOzB,EAAIyH,KAAM9F,WAAW,OAAO+F,UAAU,CAAC,KAAM,KAAQtH,YAAY,YAAYuH,MAAM,CAACwC,QAASnK,EAAI0E,KAAMvC,WAAYnC,EAAIoK,aAAchH,YAAapD,EAAIqK,gBAAgB5J,MAAM,CAAC,UAAU,KAAK,CAAET,EAAI8H,SAAU5H,EAAG,kBAAkBF,EAAI+H,GAAG,CAAC3H,YAAY,YAAYK,MAAM,CAAC,OAAS,QAAQ,kBAAkBT,EAAIgI,WAAU,IAAQhI,EAAIQ,KAAKN,EAAG,cAAc,CAACA,EAAG,eAAe,CAACA,EAAG,WAAW,CAACE,YAAY,iBAAiBK,MAAM,CAAC,KAAO,CAACT,EAAI0E,KAAM1E,EAAIsK,UAAU,GAAItK,EAAIkI,YAAY9C,OAAS,GAAKpF,EAAIqK,gBAAkBrK,EAAIoK,aAAclK,EAAG,cAAc,CAACE,YAAY,SAAS,CAAEJ,EAAIoK,aAAclK,EAAG,UAAU,CAACE,YAAY,uBAAuBK,MAAM,CAAC,QAAU,YAAY,CAACT,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,kBAAkBlC,EAAIQ,KAAKR,EAAIU,GAAIV,EAAIkI,aAAa,SAASC,GAAQ,OAAOjI,EAAG,UAAU,CAACW,IAAIsH,EAAO/H,YAAY,uBAAuBK,MAAM,CAAC,QAAU,cAAc,CAACT,EAAIM,GAAGN,EAAIO,GAAGP,EAAIoI,GAAG,kBAAPpI,CAA0BmI,MAAW,IAAInI,EAAIqK,eAAgB,CAACrK,EAAIM,GAAGN,EAAIO,GAAGP,EAAIoI,GAAG,YAAPpI,CAAoBA,EAAI0E,KAAK6F,WAAWnH,gBAAgBpD,EAAIQ,MAAM,GAAGR,EAAIQ,KAAKN,EAAG,cAAc,CAACA,EAAG,QAAQ,CAACE,YAAY,cAAc,CAAEJ,EAAImJ,OAAQ,CAACnJ,EAAIM,GAAGN,EAAIO,GAAGP,EAAIoI,GAAG,uBAAPpI,CAA+BA,EAAImJ,WAAYnJ,EAAI0E,MAAQ1E,EAAI0E,KAAK6F,WAAWC,SAAU,CAACxK,EAAIM,GAAGN,EAAIO,GAAGP,EAAIoI,GAAG,kBAAPpI,CAA0BA,EAAI0E,KAAK6F,WAAWC,aAAa,CAACxK,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,oBAAoB,MAAM,IAAI,EACt7C,EACIb,EAAkB,G,sFC8BtBoJ,IAAAA,cAAA,eAAAC,EAAA,QAEA,OACAnJ,KAAA,OACA+B,WAAA,CACAgF,SAAAA,EAAAA,YAEAC,QAAA,CACAC,UAAAC,GAAA/C,EAAAA,GAAAgD,YAAAD,EAAA,KACAtE,gBAAA1C,IAAA0C,EAAAA,EAAAA,iBAAA1C,EAAA,MAAA4D,SAAA,IACAuD,qBAAA,uBACA+B,gBAAAA,EAAAA,iBAEA1G,OAAA,CACA0E,EAAAA,GAEAvE,MAAA,CACAkG,KAAA,CACA7H,KAAA4B,OACAC,UAAA,IAGAK,SAAA,KACAE,EAAAA,EAAAA,IAAA,aACAH,IAAAA,GACA,YAAAoE,QAAA,KAAAwB,KACA,EACAnB,MAAAA,GACA,YAAAzE,OAAA,KAAAA,KAAA6F,WAAAK,gBAAA,KAAAlG,KAAA6F,WAAAM,cACA,MAAAnG,KAAA6F,WAAAK,eAAA,KAAAlG,KAAA6F,WAAAM,cAEA,IACA,EACA3C,WAAAA,GACA,YAAAxD,KACA,KAAAA,KAAA4E,iBAEA,EACA,EACAc,YAAAA,GACA,YAAA1F,gBAAAmB,EAAAA,GAAApB,QAAA,KAAAC,KAAA6F,WAAApI,WACA,EACAkI,cAAAA,GACA,YAAA3F,gBAAAmB,EAAAA,GAAAH,EAAAA,GAAAoF,QAAA,KAAApG,KAAA6F,WAAAnH,YACA,GAEAqD,QAAA,CACAgB,IAAAA,CAAA8B,GACA,KAAAe,gBAAAzE,EAAAA,GAGA,KAAAkB,OAAAC,OAAAuC,EAAA,uBAAAe,KAAAxH,KACA,ICpFmP,I,WCQ/OmE,GAAY,OACd,EACAlH,EACAsB,GACA,EACA,KACA,KACA,MAIF,EAAe4F,EAAiB,O,qECnBhC,IAAIlH,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,UAAU,CAACE,YAAY,cAAc,CAACF,EAAG,KAAK,CAACA,EAAG,OAAO,CAACE,YAAY,SAAS,CAACJ,EAAIM,GAAGN,EAAIO,GAAGP,EAAIsH,IAAI,WAAYtH,EAAI+K,MAAM3F,aAAepF,EAAIgL,KAAOhL,EAAI+K,MAAM3F,OAAS,EAAGlF,EAAG,UAAU,CAACO,MAAM,CAAC,KAAO,GAAG,QAAU,mBAAmB,CAACT,EAAIM,GAAGN,EAAIO,GAAGP,EAAI+K,MAAM3F,WAAWpF,EAAIQ,MAAOR,EAAIgL,KAAOhL,EAAI+K,MAAM3F,OAAS,EAAGlF,EAAG,cAAc,CAACE,YAAY,OAAOuC,MAAM,CAAClB,MAAOzB,EAAIiL,KAAMrI,SAAS,SAAUC,GAAM7C,EAAIiL,KAAKpI,CAAG,EAAElB,WAAW,UAAU3B,EAAIQ,MAAM,GAAIR,EAAIkL,eAAgBhL,EAAG,aAAa,CAACiL,IAAI,gBAAgB1K,MAAM,CAAC,WAAaT,EAAIoL,WAAW,UAAY,OAAOjK,GAAG,CAAC,SAAWnB,EAAIqL,YAAYrL,EAAIQ,KAAMR,EAAIsL,YAAa,CAAEtL,EAAIgL,IAAK9K,EAAG,WAAW,CAACoB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,wBAAwBkG,UAAU,CAAC,YAAa,KAAQtH,YAAY,YAAYuH,MAAM,CAAC,OAAQ3H,EAAIkL,gBAAgBzK,MAAM,CAAC,QAAUT,EAAIuL,YAAY,QAAU,oBAAoB,CAACrL,EAAG,iBAAiBF,EAAIM,GAAG,IAAIN,EAAIO,GAAGP,EAAIkC,GAAG,iBAAiB,MAAM,GAAGlC,EAAIQ,KAAKN,EAAG,aAAa,CAACO,MAAM,CAAC,GAAK,cAAckC,MAAM,CAAClB,MAAOzB,EAAIuL,YAAa3I,SAAS,SAAUC,GAAM7C,EAAIuL,YAAY1I,CAAG,EAAElB,WAAW,gBAAgB,CAAE3B,EAAIuL,YAAarL,EAAG,aAAa,CAACO,MAAM,CAAC,KAAO,WAAW,MAAQT,EAAIkC,GAAG,gBAAgB,KAAOlC,EAAIuH,KAAK,MAAQvH,EAAIwL,YAAYrK,GAAG,CAAC,MAAQnB,EAAIyL,cAAczL,EAAIQ,MAAM,IAAIR,EAAIQ,KAAKN,EAAG,UAAU,CAACE,YAAY,QAAQ,CAAEJ,EAAI0L,QAASxL,EAAG,UAAU,CAACO,MAAM,CAAC,KAAO,GAAG,IAAM,MAAMT,EAAIQ,KAAMR,EAAI2L,aAAavG,OAAS,EAAGlF,EAAG,eAAe,CAACO,MAAM,CAAC,QAAU,KAAKT,EAAIU,GAAIV,EAAI2L,cAAc,SAASrB,GAAM,OAAOpK,EAAG,OAAO,CAACW,IAAIyJ,EAAKxH,KAAKrC,MAAM,CAAC,KAAO6J,IAAO,IAAG,GAAGpK,EAAG,UAAU,CAACO,MAAM,CAAC,QAAUT,EAAI4L,WAAa,UAAY,OAAO,KAAO,KAAK,CAAE5L,EAAI4L,WAAY,CAAC5L,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,0BAA0B,CAAClC,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,wCAAwC,IAAI,GAAIlC,EAAIkL,eAAgBhL,EAAG,aAAa,CAACO,MAAM,CAAC,WAAaT,EAAIoL,YAAYjK,GAAG,CAAC,SAAWnB,EAAIqL,YAAarL,EAAI6L,QAAS3L,EAAG,WAAW,CAACoB,WAAW,CAAC,CAACC,KAAK,YAAYC,QAAQ,kBAAkBC,MAAOzB,EAAI8L,SAAUnK,WAAW,WAAW+F,UAAU,CAAC,KAAM,KAAQjH,MAAM,CAAC,QAAU,WAAWU,GAAG,CAAC,MAAQnB,EAAI8L,WAAW,CAAC9L,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,gBAAgBlC,EAAIQ,MAAM,EAC3oE,EACIa,EAAkB,G,qBCFlBtB,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,iBAAiB,CAACyH,MAAM3H,EAAI4H,SAAS,CAAC1H,EAAG,WAAW,CAACO,MAAM,CAAC,UAAYT,EAAIoL,WAAWW,MAAM,QAAU,WAAW5K,GAAG,CAAC,MAAQ,SAAS6K,GAAQ,OAAOhM,EAAIqL,SAASrL,EAAIoL,WAAWW,MAAM,IAAI,CAAC/L,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,wBAAwBhC,EAAG,WAAW,CAACO,MAAM,CAAC,UAAYT,EAAIoL,WAAWa,KAAK,QAAU,WAAW9K,GAAG,CAAC,MAAQ,SAAS6K,GAAQ,OAAOhM,EAAIqL,SAASrL,EAAIoL,WAAWa,KAAK,IAAI,CAACjM,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,2BAA2BhC,EAAG,WAAW,CAACO,MAAM,CAAC,UAAYT,EAAIoL,WAAWc,KAAK,QAAU,WAAW/K,GAAG,CAAC,MAAQ,SAAS6K,GAAQ,OAAOhM,EAAIqL,SAASrL,EAAIoL,WAAWc,KAAK,IAAI,CAAClM,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,uBAAwBlC,EAAIoL,WAAWe,KAAMjM,EAAG,WAAW,CAACO,MAAM,CAAC,QAAU,WAAWU,GAAG,CAAC,MAAQ,SAAS6K,GAAQ,OAAOhM,EAAIqL,SAASrL,EAAIoL,WAAWe,KAAK,IAAI,CAACnM,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,uBAAuBlC,EAAIQ,MAAM,EACv3B,EACIa,EAAkB,GCQtB,GACAE,KAAA,aACA6C,MAAA,CACAgH,WAAA,CACA3I,KAAA4B,OACAG,QAAAA,KAAA,KAEA4H,UAAA,CACA3J,KAAA8B,OACAC,QAAA,WAGAG,SAAA,CACAiD,OAAAA,GACA,mBAAAwE,UAAA,uBACA,GAEA3F,QAAA,CACA4E,QAAAA,CAAAgB,GACA,KAAAzF,MAAA,WAAAyF,EAAA,KAAAD,UACA,IC9ByP,I,WCOrPnF,GAAY,OACd,EACA,EACA,GACA,EACA,KACA,KACA,MAIF,EAAeA,EAAiB,Q,uDC6BhC,GACA1F,KAAA,QACA+B,WAAA,CACAC,UAAA,IACA+I,YAAA,MACAC,KAAA,aACAC,WAAAA,IAAA,kEACAC,QAAA,IACAC,WAAA,EACAC,YAAAA,IAAA,gCAEAvI,MAAA,CACA2G,MAAA,CACAtI,KAAAV,MACAuC,UAAA,GAEAoH,QAAA,CACAjJ,KAAAgC,QACAD,SAAA,GAEA+C,KAAA,CACA9E,KAAA4B,OACAC,UAAA,GAEA0G,IAAA,CACAvI,KAAAgC,QACAD,SAAA,GAEA8G,YAAA,CACA7I,KAAAgC,QACAD,SAAA,GAEAgH,WAAA,CACA/I,KAAA4B,OACAG,QAAAA,KAAA,KAEA4G,WAAA,CACA3I,KAAA4B,OACAG,QAAAA,KAAA,KAEAoI,UAAA,CACAnK,KAAAoK,OACArI,QAAA,KAGAE,IAAAA,GACA,OACAoI,WAAA,KAAAF,UACArB,aAAA,EACAN,KAAA,EAEA,EACAtG,SAAA,KACAC,EAAAA,EAAAA,IAAA,+BACAiH,OAAAA,GACA,YAAAd,MAAA3F,OAAA,KAAA0H,UACA,EACAlB,UAAAA,GACA,OAAAvH,OAAA0I,OAAA,KAAAvB,YAAAwB,QAAAA,KAAA,OAAAA,GAAA,IAAAtH,EAAAA,GAAA0B,KAAA4F,MAAA5H,OAAA,CACA,EACAuG,YAAAA,GACA,IAAAZ,EAAA,KAAAA,MAOA,OANA,SAAAE,OACAF,EAAAA,EAAAkC,MAAA,GAAAhC,MAAA,CAAAiC,EAAAC,IAAAtH,EAAAA,EAAAuH,gBAAAF,GAAAG,cAAAxH,EAAAA,EAAAuH,gBAAAD,GAAA,KAAAG,eACA,SAAArC,OACAF,EAAAA,EAAAwC,aAGA,KAAAvC,KAAA,KAAAD,MAAA3F,OAAA,KAAAwH,UACA7B,EAAAkC,MAAA,OAAAH,YAGA/B,CAEA,EACAG,cAAAA,GACA,QAAAF,IAAA,CACA,QAAAY,WACA,SAEA,QAAAb,MAAA3F,OAAA,EAEA,OAAAf,OAAA0I,OAAA,KAAA3B,YAAAoC,MAAAnB,KAAAA,GAEA,CACA,QACA,GAEA/F,OAAAA,GACA,KAAA2E,KAAA,KAAAwC,YACA,EACAhH,QAAA,CACAgF,UAAAA,CAAAhK,EAAAiM,GACA,KAAA9G,MAAA,cAAAnF,EAAAiM,EACA,EACA5B,QAAAA,GACA,KAAAgB,YAAA,KAAAF,SACA,EACAvB,QAAAA,CAAAgB,EAAAD,GACA,WAAAA,GAAA,KAAAuB,MAAAC,eACAlI,EAAAA,GAAAmI,SAAA,KAAAF,MAAAC,cAAAE,KAEA,KAAAlH,MAAA,WAAAyF,EACA,ICtJoP,ICQhP,GAAY,OACd,EACAtM,EACAsB,GACA,EACA,KACA,WACA,MAIF,EAAe,EAAiB,O,qECnBhC,IAAItB,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACyH,MAAM3H,EAAI4H,SAAS,CAAC1H,EAAG,YAAY,CAACO,MAAM,CAAC,MAAQT,EAAIkC,GAAG,WAAW,MAAQlC,EAAI+N,UAAU,EACxK,EACI1M,EAAkB,GCKtB,G,SAAA,CACAE,KAAA,UACA6C,MAAA,CACA4J,KAAA,CACAvL,KAAAgC,QACAD,SAAA,GAEAyJ,QAAA,CACAxL,KAAAgC,QACAD,SAAA,GAEAuJ,MAAA,CACAtL,KAAAgC,QACAD,SAAA,GAEA0J,IAAA,CACAzL,KAAAgC,QACAD,SAAA,IAGAG,SAAA,CACAiD,OAAAA,GACA,IAAAA,EAAA,YAUA,OATA,KAAAoG,KACApG,EAAAiB,KAAA,gBAEA,KAAAoF,SACArG,EAAAiB,KAAA,mBAEA,KAAAqF,KACAtG,EAAAiB,KAAA,OAEAjB,CACA,KCxCsP,I,WCQlPX,GAAY,OACd,EACAlH,EACAsB,GACA,EACA,KACA,WACA,MAIF,EAAe4F,EAAiB,O,kFCnBhC,IAAIlH,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAGF,EAAIiH,UAAUjH,EAAI+H,GAAG,CAACoG,IAAI,YAAY/N,YAAY,YAAYK,MAAM,CAAC,MAAQT,EAAIoO,UAAU,YAAYpO,EAAIqO,YAAW,GAAO,CAAErO,EAAIsO,KAAM,CAACpO,EAAG,MAAM,CAACE,YAAY,YAAYK,MAAM,CAAC,IAAMT,EAAIsO,KAAKxL,KAAK,IAAM9C,EAAIsO,KAAKzM,MAAM,MAAQ7B,EAAIsO,KAAKzM,UAAU7B,EAAIQ,KAAKN,EAAG,OAAO,CAACE,YAAY,SAAS,CAACJ,EAAIM,GAAGN,EAAIO,GAAGP,EAAIK,kBAAkB,EAC3Y,EACIgB,EAAkB,G,gECctB,GACAE,KAAA,WACA6C,MAAA,CACAM,KAAA,CACAjC,KAAA,CAAA4B,OAAAtC,OACAyC,QAAA,MAEA3C,MAAA,CACAY,KAAA8B,OACAC,QAAA,MAEA+J,cAAA,CACA9L,KAAA,CAAA8B,OAAAiK,UACAhK,QAAA,MAEA4J,QAAA,CACA3L,KAAA8B,OACAC,QAAA,OAGAG,SAAA,KACAC,EAAAA,EAAAA,IAAA,gCACAC,EAAAA,EAAAA,IAAA,mCACAyJ,IAAAA,GACA,QAAA/G,KAAA,CACA,IAAAkH,EAAA,KAAAlH,KAAAmH,WACA,GAAAD,EAAArJ,OAAA,EACA,OAAAqJ,EAAA,EAEA,CACA,WACA,EACAlH,IAAAA,GACA,YAAA7C,gBAAAmB,EAAAA,EACA,KAAAnB,KAEA3C,MAAAC,QAAA,KAAA0C,MACA,KAAAA,KAAAiK,MAAAC,GAAAA,aAAA/I,EAAAA,IAGA,IAEA,EACAwG,IAAAA,GACA,YAAAwC,OAAA,KAAAnK,MACA,KAAAA,KAEA3C,MAAAC,QAAA,KAAA0C,OACA,KAAAA,KAAAiK,MAAAC,GAAA,KAAAC,OAAAD,MAGA,EAEA,EACAE,iBAAAA,GACA,aAAAvH,QAGA7B,EAAAA,GAAAqJ,gBAAA,KAAA1C,KAAA5J,MAAA,IAGAuM,EAAAA,GAAA9N,SAAA,KAAAmL,KAAA4C,IACA,EACAZ,UAAAA,GACA,YAAAS,kBACA,CACAI,GAAA,KAAApM,KACAmM,IAAA,KAAAA,KAIA,CACAnM,KAAA,KAAAA,KACAqM,OAAA,SACAF,IAAA,KAAAA,IAGA,EACAhI,SAAAA,GACA,YAAA6H,kBAAA,iBACA,EACAhM,IAAAA,GACA,QAAAyE,MAAA,KAAAuH,kBAAA,CACA,IAAAhM,EAYA,GAVAA,EADA,KAAAyE,KACA,KAAAA,KAAA6H,iBAGA,KAAAC,cAAA,KAAAhD,KAAAvJ,MAEAA,EAAAwM,WAAA,OACAxM,EAAA,IAAAA,GAIA4C,EAAAA,GAAA0B,KAAA,KAAAmI,wBAAA,GACA,IAAAC,EAAAC,IAAA3M,GACA,QAAAjC,KAAA,KAAA0O,uBAAA,CACA,IAAAG,EAAA,IAAA7O,IACA2O,EAAAG,SAAAD,IACAF,EAAAI,SAAAF,EAAA,KAAAH,uBAAA1O,GAEA,CACAiC,EAAA0M,EAAAK,UACA,CAEA,OAAA/M,CACA,CAEA,YAAAiD,cAAA,KAAAsG,KAAAvJ,KAGA,EACAzC,YAAAA,GACA,QAAAwB,MACA,YAAAA,MAGA,IAAAiO,EAAA,yBAAAvB,cAAA,KAAAA,gBAAA,KAAAA,cACA,OAAA1I,EAAAA,EAAAuH,gBAAA,KAAA1I,KAAAoL,EACA,GAEArJ,QAAA,CACAoI,MAAAA,CAAAD,GACA,OAAAlJ,EAAAA,GAAAqK,SAAAnB,MAAAA,aAAA/I,EAAAA,EACA,IC7IuP,I,WCOnPoB,GAAY,OACd,EACAlH,EACAsB,GACA,EACA,KACA,KACA,MAIF,EAAe4F,EAAiB,O,oBClBhC+I,EAAOC,QAAU,CACbC,WAAY,KACZC,aAAc,eACdC,qBAAqB,EACrBC,eAAgB,GAChBC,yBAAyB,EACzBC,aAAa,EACbC,OAAQ,KACRC,eAAgB,KAChBC,iBAAkB,CACd,KAEA,KACA,KACA,KAGA,KAEA,MAEJC,mBAAoB,KACpB3L,wBAAwB,EACxB4L,mBAAoB,KACpBC,yBAAyB,EACzB9L,qBAAsBA,EAAEjC,OAAMlC,WAAW,kDAAoDkQ,mBAAmBlQ,EAAMkC,KAAKwM,WAAW,QAAU1O,EAAMkC,KAAOA,GAC7JiO,aAAc,KACdC,WAAY,IACZC,YAAa,UACbC,aAAc,QACdzD,aAAc,MACd0D,wBAAwB,EACxBC,UAAU,EACVC,kBAAmB,IACnBC,oBAAoB,EACpBC,aAAc,GACdC,qBAAsB,KACtBC,iBAAkB,GAClBC,iBAAkB,KAClBC,eAAgB,CAAC,EACjBC,uBAAwB,CAAC,EACzBC,eAAgB,KAChBC,WAAY,CACVrP,KAAM,SACN5B,IAAK,gBACLkR,UAAWC,GAAU,UAASA,IAC9B5O,YAAc,qJ,oDC5CpB,IAAe6O,IACb,IAAIC,EAAQ,CACVvN,SAAU,KACLC,EAAAA,EAAAA,IAAS,CAAC,gBAEf6B,QAAS,CAAC,GAEZ,IAAI,IAAIlF,KAAQ0Q,EAAW,CACzB,IAAIE,EAAKF,EAAU1Q,GACnB2Q,EAAMzL,QAAQlF,GAAQ,WAIpB,OADAtB,KAAKqN,WACE6E,KAAMC,UACf,CACF,CACA,OAAOF,CACR,C,oDCjBD,KACE9N,MAAO,CACLiO,cAAe,CACb5P,KAAMgC,QACND,SAAS,IAGbG,SAAU,KACLC,EAAAA,EAAAA,IAAS,CAAC,eAAgB,mBAAoB,yBACjDiD,MAAAA,GACE,OAAO5H,KAAKyE,OAASzE,KAAKyE,KAAK8C,UAAkC,SAAtBvH,KAAKiR,YAClD,EACApJ,QAAAA,GACE,OAAO7H,KAAKoS,eAAiBpS,KAAK+H,SACpC,EACAA,SAAAA,GACE,GAAI/H,KAAKyE,KAAM,CACb,IAAI4N,EAAarS,KAAKyE,KAAK6N,eAAc,EAAM,aAC/C,GAAID,EAAWlN,OAAS,EAAG,CACzB,IACIoN,EAAOC,EADPC,EAAIJ,EAAW,GAQnB,OANIvQ,MAAMC,QAAQ0Q,EAAE,gBAA6C,IAA3BA,EAAE,cAActN,QACnDqN,EAAQD,GAASE,EAAE,cAEb3Q,MAAMC,QAAQ/B,KAAKuR,uBAA8D,IAArCvR,KAAKuR,qBAAqBpM,UAC5EqN,EAAQD,GAASvS,KAAKuR,sBAElB,CACLmB,IAAKD,EAAE5P,KACP8P,IAAKF,EAAE7Q,MACPgR,YAAa5S,KAAKyR,iBAClBoB,MAAO7S,KAAK4H,OACZkL,WAAY,uBACZP,QACAC,SAEA,cAAeD,EACf,eAAgBC,EAEpB,CACF,CACA,OAAO,IACT,G,qCC5CJ,IAAIO,EAKFA,EAAS3O,OAAOsC,OAAO+D,EAAQuI,OAAcC,CAAAA,WAAAA,kCAG/C,K,iNCFAC,EAAAA,GAAIC,IAAIC,EAAAA,GAED,MAAMC,EAA2B,CAAC,0CAEnCC,EAAgB,CAAC,EAEvB,SAASC,IAEP,IAAI,IAAIhD,KAAUiD,EAAAA,EAAO/C,iBACvB6C,EAAc/C,GAAU9F,EAAAA,MAAAA,CAAS,KAAY8F,iBAE/C,MAAMkD,EAAW,CAAC,EAElB,IAAI,IAAIlD,KAAU+C,EACdG,EAASlD,GAAU,CACjBmD,UAAWJ,GAGjB,OAAOG,CACT,CAEA,MAAME,EAAO,IAAIP,EAAAA,EAAQ,CACvB7C,OAAQiD,EAAAA,EAAOjD,OACfC,eAAgBgD,EAAAA,EAAOhD,eACvBiD,SAAUF,MAIL,SAASK,IACd,OAAOC,QAAQC,IAAI,CACjBC,EAAaP,EAAAA,EAAOjD,QACpBwD,EAAaP,EAAAA,EAAOhD,iBAExB,CAEOwD,eAAeD,EAAaxD,GAGjC,GAAI9K,EAAAA,GAAM0B,KAAKwM,EAAKF,SAASlD,IAAW,EACtC,OAEF,MAAMkD,SAAkB,SAAQ,KAAYlD,iBAAsBhM,QAClEoP,EAAKM,mBAAmB1D,EAAQkD,EAClC,CAEO,SAASS,EAAgB1S,EAAO2S,EAAO,MAC5C,GAAqB,kBAAV3S,GAAuC,IAAjBA,EAAM2D,OACrC,OAAO3D,EAET,IAAIZ,EAAO,UAASY,IACpB,OAAImS,EAAKS,GAAGxT,GACH+S,EAAKlB,EAAE7R,EAAK,KAAMuT,GAEpBE,IAAAA,OAAc7S,EAAO2S,EAC9B,CA5BA,M,uGC5Be,SAASlK,EAAMsG,GAC5B,IAAKA,EACH,OAIF,MAAM+D,EAAehQ,OAAOiM,GACtBgE,EAAaD,EAAa/N,QAAQ,KAElCiO,GAA0B,IAAhBD,EACZD,EAAaG,OAAOF,EAAa,QACjCG,EAEEC,GAAuC,IAAhBJ,EACzBD,EAAaG,OAAO,EAAGF,GACvBD,EAGEM,EAAQtQ,OAAOqQ,GAClBE,QAAQ,KAAM,KACdC,MAAM,KAET,IAAKF,EAAMzP,QAAUyP,EAAMzP,OAAS,EAClC,OAGF,MAAM4P,EAAWH,EAAMI,QACvB,IAAKD,EACH,OAGF,MAAME,EAAS,CACbT,UACAO,SAAUA,EAASxP,eAGrB,IAAKqP,EAAMzP,OACT,OAAO8P,EAGT,GAAqB,IAAjBL,EAAMzP,OAAc,CACtB,MAAM+P,EAAUN,EAAMO,MAClBD,IACFD,EAAOC,QAAUA,EAAQE,cAE7B,CAEA,IAAIC,EAAUT,EAAMO,MAWpB,GAVIE,EAAQlQ,OAAS,IACnB8P,EAAOT,QAAUa,EAEjBA,EAAUT,EAAMO,OAGdE,IACFJ,EAAOI,QAAUA,EAAQD,gBAGtBR,EAAMzP,OACT,OAAO8P,EAGT,MAAMK,EAASV,EAAMO,MAKrB,MAJsB,kBAAXG,GAAuBA,EAAOnQ,QAAU,IACjD8P,EAAOK,OAASA,EAAO,GAAGF,cAAgBE,EAAOC,UAAU,GAAGhQ,eAGzD0P,CACT,CA0CO,SAASO,EAAiBC,GAC/B,MAAMC,EAAM,CAAC,EA4Bb,OA1BAD,EAAUE,SAAQC,IAChB,MAAM,SAAEb,EAAQ,QAAEM,GAAYpL,EAAM2L,GACpC,IAAKb,EACH,MAAM,IAAIc,MAAO,UAASD,qBAGvBF,EAAIX,KACPW,EAAIX,GAAY,CACde,UAAW,CAAC,EACZC,kBAAcrB,EACdsB,UAAMtB,IAIV,MAAMuB,EAAKP,EAAIX,GACXM,GACFY,EAAGH,UAAUT,GAAWO,EAEnBK,EAAGF,eACNE,EAAGF,aAAeH,IAGpBK,EAAGD,KAAOJ,CACZ,IAGKF,CACT,CAEO,SAASQ,EAAQT,EAAWlF,EAAQ4F,EAAeC,GACxD,MAAMV,EAAM5T,MAAMC,QAAQ0T,GAAaD,EAAiBC,GAAaA,EAGrE,IAAKlF,GAAU4F,EACb,OAAOD,EAAQT,EAAWU,OAAezB,EAAW0B,GAGtD,IAAK7F,EACH,OAGF,MAAM,SAAEwE,EAAQ,QAAEM,GAAYpL,EAAMsG,GACpC,IAAKwE,EACH,OAAOoB,EAIT,IAAKT,EAAIX,GAAW,CAClB,GAAIxE,IAAW4F,EACb,OAGF,OAAOD,EAAQT,EAAWU,EAAe,KAAMC,EACjD,CAEA,MAAM,UAAEN,EAAS,KAAEE,EAAOG,EAAa,aAAEJ,GAAiBL,EAAIX,GAC9D,OAAKe,GAAcT,EAQfe,GAAiBL,EACZD,EAAUT,GAAWS,EAAUT,GAAWU,EAG5CD,EAAUT,GAAWS,EAAUT,GAAWW,EAX3CI,GAAiBL,EACZA,EAGFC,CAQX,C,mDC1LIlW,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,cAAc,CAACO,MAAM,CAAC,GAAK,iBAAiB,CAAET,EAAIsW,OAAOlR,OAAS,EAAGlF,EAAG,kBAAkBF,EAAIQ,KAAMR,EAAIuW,YAAarW,EAAG,aAAaF,EAAI+H,GAAG,CAAC3H,YAAY,eAAee,GAAG,CAAC,MAAQnB,EAAIwW,YAAY,aAAaxW,EAAIuW,aAAY,IAAQvW,EAAIQ,KAAMR,EAAIyW,QAASvW,EAAG,WAAWF,EAAIQ,KAAKN,EAAG,SAAS,CAACA,EAAG,MAAM,CAACE,YAAY,QAAQ,CAACJ,EAAIM,GAAGN,EAAIO,GAAGP,EAAI0W,wBAAwBxW,EAAG,aAAa,CAACiB,GAAG,CAAC,cAAgB,SAAS6K,GAAQhM,EAAIyW,SAAU,CAAI,MAAM,GAAGvW,EAAG,eAAeA,EAAG,SAAS,CAACA,EAAG,OAAO,CAACE,YAAY,uBAAuBK,MAAM,CAAC,IAAM,QAAQ,KAAO,aAAakW,YAAY3W,EAAI4W,GAAG,CAAC,CAAC/V,IAAI,OAAOsR,GAAG,WAAW,MAAO,CAACjS,EAAG,IAAI,CAACO,MAAM,CAAC,KAAO,+CAA+C,OAAS,WAAW,CAACT,EAAIM,GAAG,kBAAkBN,EAAIM,GAAG,IAAIN,EAAIO,GAAGP,EAAI6W,gBAAgB,KAAK,EAAEC,OAAM,QAAW,IAAI,EACr2B,EACIzV,EAAkB,G,4CCFlBtB,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,OAAO,CAACE,YAAY,6BAA6B,EAAGJ,EAAIoQ,qBAAuBpQ,EAAI+W,WAAY7W,EAAG,UAAU,CAACO,MAAM,CAAC,KAAO,KAAK,CAACP,EAAG,IAAI,CAACF,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,iCAAiClC,EAAIQ,KAAMR,EAAIgX,MAAO9W,EAAG,aAAa,CAACO,MAAM,CAAC,aAAc,EAAM,IAAMT,EAAIiX,IAAI,YAAcjX,EAAIkX,iBAAiB,GAAKlX,EAAImX,WAAYnX,EAAI0L,QAASxL,EAAG,UAAU,CAACO,MAAM,CAAC,QAAU,MAAMP,EAAGF,EAAIiH,UAAU,CAACkH,IAAI,eAAe,EACne,EACI9M,EAAkB,GCFlBtB,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,UAAU,CAACO,MAAM,CAAC,QAAU,SAAS,KAAO,GAAG,YAAcT,EAAIoX,aAAajW,GAAG,CAAC,UAAY,SAAS6K,GAAQ,OAAOhM,EAAI4G,MAAM,QAAQ,IAAI,CAAC1G,EAAG,IAAI,CAACE,YAAY,WAAW,CAACJ,EAAIM,GAAGN,EAAIO,GAAGP,EAAIqX,SAAWrX,EAAIkC,GAAG,sBAAuBlC,EAAIgX,OAAShX,EAAIgX,MAAMK,QAASnX,EAAG,KAAK,CAACE,YAAY,SAAS,CAACF,EAAG,KAAK,CAACF,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,2BAA2BhC,EAAG,KAAK,CAACF,EAAIM,GAAGN,EAAIO,GAAGP,EAAIgX,MAAMK,cAAcrX,EAAIQ,KAAMR,EAAIoD,YAAalD,EAAG,KAAK,CAACE,YAAY,eAAe,CAACF,EAAG,KAAK,CAACF,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,4BAA4BhC,EAAG,KAAK,CAACF,EAAIM,GAAGN,EAAIO,GAAGP,EAAIoD,kBAAkBpD,EAAIQ,KAAMR,EAAI8B,GAAI5B,EAAG,KAAK,CAACE,YAAY,MAAM,CAACF,EAAG,KAAK,CAACF,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,0BAA0BhC,EAAG,KAAK,CAACA,EAAG,OAAO,CAACF,EAAIM,GAAGN,EAAIO,GAAGP,EAAI8B,WAAW9B,EAAIQ,KAAMR,EAAIiX,IAAK/W,EAAG,KAAK,CAACE,YAAY,OAAO,CAACF,EAAG,KAAK,CAACF,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,gCAAgChC,EAAG,KAAK,CAACA,EAAG,OAAO,CAACF,EAAIM,GAAGN,EAAIO,GAAGP,EAAIiX,YAAYjX,EAAIQ,MACv7B,EACIa,EAAkB,GCqBtB,GACAE,KAAA,aACA6C,MAAA,CACAiT,QAAA,CACA5U,KAAA8B,OACAC,QAAA,MAEApB,YAAA,CACAX,KAAA8B,OACAC,QAAA,IAEAwS,MAAA,CACAvU,KAAA,CACA4B,OACAyR,OAEAtR,QAAA,MAEA1C,GAAA,CACAW,KAAA,CACA8B,OACAsI,QAEArI,QAAA,MAEAyS,IAAA,CACAxU,KAAA8B,OACAC,QAAA,IAEA4S,YAAA,CACA3U,KAAAgC,QACAD,SAAA,KCtDyP,I,WCQrPyC,GAAY,OACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIF,EAAeA,EAAiB,Q,WCnB5BlH,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACW,IAAIb,EAAI0E,KAAK5C,GAAG1B,YAAY,QAAQ,CAACF,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACE,YAAY,QAAQ,CAACF,EAAG,UAAU,CAACE,YAAY,QAAQ,CAACF,EAAG,SAAS,CAACE,YAAY,eAAeK,MAAM,CAAC,UAAU,KAAK,CAACP,EAAG,SAAS,CAACiL,IAAI,OAAO1K,MAAM,CAAC,KAAO,GAAG,MAAQ,GAAG,SAAW,GAAG,IAAM,IAAIkC,MAAM,CAAClB,MAAOzB,EAAIsX,IAAK1U,SAAS,SAAUC,GAAM7C,EAAIsX,IAAIzU,CAAG,EAAElB,WAAW,QAAQ,CAACzB,EAAG,QAAQ,CAACO,MAAM,CAAC,MAAQT,EAAIkC,GAAG,OAAO,UAAU,KAAK,CAAChC,EAAG,MAAM,CAACO,MAAM,CAAC,KAAOT,EAAI0E,KAAK,cAAgB1E,EAAIuX,cAAc,gBAAkB,IAAIpW,GAAG,CAAC,YAAcnB,EAAIwX,gBAAgB,GAAIxX,EAAIsS,WAAWlN,OAAS,EAAGlF,EAAG,QAAQ,CAACO,MAAM,CAAC,MAAQT,EAAIkC,GAAG,cAAc,UAAU,KAAK,CAAChC,EAAG,aAAa,CAACO,MAAM,CAAC,WAAaT,EAAIsS,eAAe,GAAGtS,EAAIQ,MAAM,IAAI,IAAI,GAAIR,EAAIyX,UAAWvX,EAAG,SAAS,CAACO,MAAM,CAAC,OAAST,EAAIW,OAAO,QAAUX,EAAI0E,KAAK,MAAQ1E,EAAI0X,aAAavW,GAAG,CAAC,UAAYnB,EAAI2X,aAAa3X,EAAIQ,KAAMR,EAAI4X,gBAAgBxS,OAAS,EAAGlF,EAAG,QAAQ,CAACO,MAAM,CAAC,MAAQT,EAAIkC,GAAG,uBAAuB,MAAQlC,EAAI4X,mBAAmB5X,EAAIQ,MAAM,GAAGN,EAAG,QAAQ,CAACE,YAAY,SAAS,CAACF,EAAG,UAAU,CAACE,YAAY,SAAS,CAAEJ,EAAI0E,KAAK6F,WAAWnH,YAAalD,EAAG,KAAK,CAACF,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,mBAAmBlC,EAAIQ,KAAMR,EAAI0E,KAAK6F,WAAWpI,WAAYjC,EAAG,oBAAoB,CAACO,MAAM,CAAC,KAAOT,EAAI0E,QAAQ1E,EAAIQ,KAAMR,EAAI0E,KAAK6F,WAAW,gBAAiBrK,EAAG,mBAAmB,CAACO,MAAM,CAAC,QAAUT,EAAI0E,KAAK6F,WAAW,mBAAmBvK,EAAIQ,KAAMR,EAAI0E,KAAK6F,WAAWnH,YAAalD,EAAG,WAAW,CAACO,MAAM,CAAC,MAAQ,GAAG,KAAOT,EAAIkC,GAAG,aAAa,YAAYlC,EAAIkC,GAAG,eAAe,CAAChC,EAAG,cAAc,CAACO,MAAM,CAAC,YAAcT,EAAI0E,KAAK6F,WAAWnH,gBAAgB,GAAGpD,EAAIQ,KAAMuB,MAAMC,QAAQhC,EAAI0E,KAAK6F,WAAWsN,WAAa7X,EAAI0E,KAAK6F,WAAWsN,SAASzS,OAAS,EAAGlF,EAAG,WAAW,CAACO,MAAM,CAAC,SAAWT,EAAI0E,KAAK6F,WAAWsN,YAAY7X,EAAIQ,MAAM,GAAIR,EAAI8X,eAAgB5X,EAAG,iBAAiB,CAACO,MAAM,CAAC,KAAOT,EAAI8X,kBAAkB9X,EAAIQ,KAAMR,EAAI0E,KAAK6F,WAAWwN,UAAW7X,EAAG,YAAY,CAACO,MAAM,CAAC,UAAYT,EAAI0E,KAAK6F,WAAWwN,aAAa/X,EAAIQ,KAAKN,EAAG,WAAW,CAACO,MAAM,CAAC,KAAOT,EAAI0E,KAAK,KAAO,OAAO,aAAe1E,EAAIgY,0BAA0B,IAAI,IAAI,EACjkE,EACI3W,EAAkB,G,qDCCtB,GACEqD,IAAAA,GACE,MAAO,CACLuT,iBAAkB,GAClBC,gBAAiB,GACjBZ,IAAK,KACLC,cAAe,KACfY,iBAAkB,KAEtB,EACAxT,SAAU,KACLE,EAAAA,EAAAA,IAAW,CAAC,aAAc,YAAa,WAC1C6S,WAAAA,GACE,GAAiB,IAAbzX,KAAKqX,IACP,OAAOrX,KAAKgY,iBAET,GAAiB,IAAbhY,KAAKqX,KAA2B,OAAbrX,KAAKqX,KAAgBrX,KAAKqS,WAAWlN,OAAS,EAAI,CAC5E,IAAIgT,EAAO,GACPC,EAAgBpY,KAAKqS,WAAWgG,KAAI5F,GAAKA,EAAE5P,OAC/C,IAAI,IAAIjC,KAAOZ,KAAKU,OAAQ,CAC1B,IAAIC,EAAQX,KAAKU,OAAOE,GACpBwX,EAAcnX,SAASN,EAAMkC,OAC/BsV,EAAKvP,KAAKhI,EAEd,CACA,OAAOuX,CACT,CACA,MAAO,EACT,GAEF3R,QAAS,CACPkR,SAAAA,CAAU/W,EAAOkB,EAAIqB,GACfA,EACFlD,KAAKqX,IAAM,GAGXrX,KAAKqX,IAAM,EACXrX,KAAKsX,cAAgB3W,EACrBX,KAAKkY,iBAAmBrW,GAEtB7B,KAAK0N,MAAM4K,MACb7S,EAAAA,GAAMmI,SAAS5N,KAAK0N,MAAM4K,KAAKzK,IAEnC,EACA0J,WAAAA,CAAY9S,GACLgB,EAAAA,GAAMqK,SAASrL,GAIXA,EAAK/D,QAAU+D,EAAK8T,OACvB9S,EAAAA,GAAM0B,KAAK1C,EAAK/D,QAAU,IACxBV,KAAKkY,iBACPlY,KAAKgY,iBAAmB,CAAChY,KAAKkY,kBAG9BlY,KAAKgY,iBAAmBvT,EAAK/D,OAAO2X,KAAIG,GAAQA,EAAK5X,OAGrD6E,EAAAA,GAAM0B,KAAK1C,EAAK8T,OAAS,IAC3BvY,KAAKiY,gBAAkBxT,EAAK8T,QAGvBvY,KAAKkY,mBACZlY,KAAKgY,iBAAmB,CAAChY,KAAKkY,oBAjB9BlY,KAAKiY,gBAAkB,GACvBjY,KAAKgY,iBAAmB,GAkB5B,I,+DC/DJ,SAASS,EAAazB,EAAK0B,GACzB,IAAIC,EAAOD,EAAME,QAAQxJ,cAAc4H,GACnCzH,EAAMC,IAAIqJ,OAAOC,SAASC,OAAOnJ,YAQrC,MAPgC,SAA5B8I,EAAMM,MAAMhI,aACdzB,EAAIoJ,KAAKD,EAAMM,MAAMjI,YACrBxB,EAAI0J,SAASN,IAGbpJ,EAAIoJ,KAAKD,EAAMM,MAAMjI,WAAW8D,QAAQ,MAAO,IAAM8D,GAEhDpJ,EAAIK,UACb,CAEA,SAASsJ,EAAmBC,EAAQC,GAC9BtX,MAAMC,QAAQqX,IAASA,EAAKjU,QAAU,IACxCgU,EAAOE,gBAAkB,CACvB,QAAS,QACTC,IAAK,CACH,QAAS,WACTC,KAAMH,GAAQ,IAAII,KAAK,OAI/B,CAEA,SAASC,EAAuBC,GAC9B,OAAI5X,MAAMC,QAAQ2X,IAA2B,IAAjBA,EAAMvU,QAAqC,kBAAbuU,EAAM,IAAuC,kBAAbA,EAAM,GAGzF,KAFEA,EAAMrB,KAAIsB,GAAMA,GAAU,OAAMH,KAAK,IAGhD,CAEA,SAASI,EAAWnV,GAClB,OAAIgB,EAAAA,GAAM0B,KAAK1C,EAAK/D,QAAU,EACrB0D,OAAO0I,OAAOrI,EAAK/D,QAAQ2X,KAAIpL,IAAK,CACzC,QAAS,eACT4M,WAAYpU,EAAAA,GAAMqU,WAAW7M,EAAEpK,KAAM4B,EAAKoB,kBAC1CkU,eAAgB9M,EAAEzK,KAClBlB,KAAM2L,EAAErL,UAGL,EACT,CAEA,SAASoY,EAAUC,EAAOxV,EAAMiU,EAAOlW,EAAO,eAC5C,OAAOyX,EAAM5B,KAAIjM,IACf,IAAI9K,EAAM4Y,EACN9N,aAAgBxG,EAAAA,GAClBtE,EAAOsE,EAAAA,EAAKuH,gBAAgBf,GAC5B8N,EAAY9N,EAAKvG,mBAGjBvE,EAAO8K,EAAKxK,MACZsY,EAAYzU,EAAAA,GAAMqU,WAAW1N,EAAKvJ,KAAM4B,EAAKoB,mBAE/C,IAAIsU,EAAM,CACR,QAAS3X,EACTlB,OACA0V,IAAKyB,EAAayB,EAAWxB,GAC7BwB,aAKF,MAHa,YAAT1X,IACF2X,EAAIhX,YAAciX,EAAoBhO,EAAMsM,IAEvCyB,CAAG,GAEd,CAEA,SAASE,EAAavC,EAAW3V,GAC/B,OAAO2V,EACJ/K,QAAOuN,GAAK7U,EAAAA,GAAMqK,SAASwK,IAAMxY,MAAMC,QAAQuY,EAAEtY,QAAUsY,EAAEtY,MAAMf,SAASkB,KAC5EkW,KAAIiC,IAAK,CACR,QAAS,eACT,KAAQA,EAAEhZ,KACV,YAAegZ,EAAEnX,YACjB,IAAOmX,EAAEtD,IACT,MAASsD,EAAEC,OAASD,EAAEE,QAE5B,CAEA,SAASJ,EAAoB3V,EAAMiU,GACjC,IAAI+B,EAAUC,EAQd,GAPIjW,aAAgBmB,EAAAA,GAClB6U,EAAWhW,EAAK8C,SAAW,OAAS9C,EAAKjC,KACzCkY,EAAYjW,EAAKkW,YAEVlV,EAAAA,GAAMqK,SAASrL,IAAsB,SAAbA,EAAKuK,MACpCyL,EAAW,QAETA,EAAU,CACZ,IAAIjY,EAAOmR,EAAAA,GAAKiH,GAAI,OAAMH,KACtBI,EAAMlH,EAAAA,GAAKlB,EAAE,KAAM,CAACzK,QAAS0S,GAAahC,EAAMxI,eACpD,MAAQ,wCAAuC1N,OAAUiC,EAAK5C,MAAMgZ,GACtE,CACF,CAEA,SAASC,EAAiBrW,EAAMjC,EAAMkW,GAAO,IAAAqC,EAC3C,IAKIC,EALA1Z,EAAOsE,EAAAA,EAAKuH,gBAAgB1I,GAC5BwW,EAAUxW,EAAKoB,iBACfmR,EAAMyB,EAAawC,EAASvC,GAC5BwC,EAAyC,QAA/BH,EAAGtW,EAAK0W,YAAY,mBAAW,IAAAJ,OAAA,EAA5BA,EAA8BK,KAC3C/I,EAAa5N,EAAK6N,eAAc,GAEhCD,EAAWlN,OAAS,IACtB6V,EAAevV,EAAAA,GAAMqU,WAAWzH,EAAW,GAAGxP,KAAM4B,EAAKoB,mBAE3D,IAAIwV,EAAU5W,EAAK0W,YAAY,WAI1B,IAAAG,EAHDD,GAAuB,gBAAZA,GAAyC,YAAZA,EAC1CA,EAAW,6BAA4BA,SAGvCA,EAAwC,QAAjCC,EAAG7W,EAAK8W,eAAe,kBAAU,IAAAD,OAAA,EAA9BA,EAAgCzY,KAExCwY,IACFA,EAAU5V,EAAAA,GAAMqU,WAAWuB,EAAS5W,EAAKoB,mBAG3C,IACI2V,EACAC,EACAC,EACAC,EAJA7D,EAAYrT,EAAK0W,YAAY,aAYjC,OAPI1V,EAAAA,GAAM0B,KAAK2Q,GAAa,IAC1B0D,EAAkBnB,EAAavC,EAAW,YAC1C2D,EAAWpB,EAAavC,EAAW,YACnC4D,EAAWrB,EAAavC,EAAW,QACnC6D,EAAUtB,EAAavC,EAAW,cAG7B,CACL,WAAY,sBACZ,QAAStV,EACTlB,OACA6B,YAAasB,EAAK0W,YAAY,gBAAkBf,EAAoB3V,EAAMiU,GAC1EkD,SAAUnX,EAAK0W,YAAY,gBAC3BU,WAAYpX,EAAK0W,YAAY,YAAc1W,EAAK5C,GAChD+V,SAAUnT,EAAK0W,YAAY,YAC3BE,UACArE,MACAkD,UAAWe,EACXa,YAAarX,EAAK0W,YAAY,WAC9BY,aAActX,EAAK0W,YAAY,WAC/Ba,cAAevX,EAAK0W,YAAY,aAChCc,QAASxX,EAAK0W,YAAY,WAC1BD,aACAF,eACAkB,QAASzX,EAAK0W,YAAY,WAC1BgB,MAAOnB,EACPQ,kBACAC,WACAC,WACAC,UAEJ,CAEO,SAASS,EAAoB3X,EAAM4X,EAAS3D,GACjD,KAAMjU,aAAgBmB,EAAAA,GACpB,OAAO,KAGTyW,EAAUA,EAAQtP,QAAOX,GAAQ3G,EAAAA,GAAMqK,SAAS1D,KAC5CiQ,EAAQlX,OAAS,IAEnBkX,EAAUA,EAAQtP,QAAO,CAACX,EAAMkQ,IAAMD,EAAQE,WAAUjC,GAAKA,EAAEJ,YAAc9N,EAAK8N,cAAeoC,KAGnG,IAAInD,EAAS2B,EAAiBrW,EAAM,cAAeiU,GAE1B,IAAA8D,EAAAC,EAAAC,EAAAC,EAArBlY,EAAKwE,kBACQ,QAAXuT,EAAA/X,EAAKyE,cAAM,IAAAsT,GAAU,QAAVC,EAAXD,EAAarT,gBAAQ,IAAAsT,OAAV,EAAXA,EAAuBrT,SAASjE,QAAS,IAC3CgU,EAAOyD,iBAAmBnD,EAAuBhV,EAAKyE,OAAOC,SAASC,SAAS,MAGlE,QAAXsT,EAAAjY,EAAKyE,cAAM,IAAAwT,GAAS,QAATC,EAAXD,EAAaG,eAAO,IAAAF,OAAT,EAAXA,EAAsBvD,KAAKjU,QAAS,GACtC+T,EAAmBC,EAAQ1U,EAAKyE,OAAO2T,QAAQzD,KAAK,IAEtDD,EAAO2D,gBAAkBlD,EAAWnV,IAOtC,OAJA0U,EAAO4D,QAAU/C,EAAUtB,EAAME,QAAQoE,SAAUvY,EAAMiU,GACzDS,EAAO8D,QAAUjD,EAAUtB,EAAME,QAAQ9N,MAAOrG,EAAMiU,EAAO,WAC7DS,EAAO+D,SAAWlD,EAAUqC,EAAS5X,EAAMiU,GAEpCS,CACT,CAEO,SAASgE,EAAiB1Y,EAAM4X,EAAS3D,GAC9C,KAAMjU,aAAgBmB,EAAAA,GACpB,OAAO,KAETyW,EAAUA,EAAQtP,QAAOX,GAAQ3G,EAAAA,GAAMqK,SAAS1D,KAEhD,IAAI+M,EAAS2B,EAAiBrW,EAAM,UAAWiU,GAE/CS,EAAOiE,sBAAwBpD,EAAUqC,EAAS5X,EAAMiU,GAExD,IAAI2E,EAAQ5Y,EAAK0W,YAAY,kBACzBmC,EAAM7Y,EAAK0W,YAAY,gBAW3B,OATEhC,EAAOyD,iBADLS,GAASC,EACe7D,EAAuB,CAAC4D,EAAOC,IAG/B7Y,EAAK0W,YAAY,YAG7CjC,EAAmBC,EAAQ1U,EAAK2U,MAChCD,EAAOoE,aAAe3D,EAAWnV,GAE1B0U,CACT,CAEO,SAASqE,EAAoBC,EAAKtE,GACvC,IAAItX,EAAK,aACL6b,EAAUD,EAAIE,eAAe9b,GAC5B6b,IACHA,EAAUD,EAAIG,cAAc,UAC5BF,EAAQlb,KAAO,sBACfkb,EAAQ7b,GAAKA,EACb4b,EAAII,KAAKC,YAAYJ,IAEvBA,EAAQK,UAAYC,KAAKC,UAAU9E,EACrC,CCpLA,OACA7X,KAAA,OACA+B,WAAA,CACA6a,iBAAAA,IAAA,gCACAC,OAAA,aACAC,MAAA,IACAC,KAAA,IACAC,eAAAA,IAAA,gCACAxa,YAAA,aACAya,kBAAAA,IAAA,gCACAC,MAAAA,IAAA,mEACAC,IAAAA,IAAA,6BACA1a,SAAAA,IAAA,mEACA2a,UAAAA,IAAA,gCACAC,SAAA,IACAC,WAAAA,IAAA,iCAEA5a,OAAA,CAAA6a,GACApa,IAAAA,GACA,OACAsT,sBAAA,CACA,QACA,cACA,YAEA,aAEA,YACA,gBAEA,gBAGA,EACArT,SAAA,KACAC,EAAAA,EAAAA,IAAA,oBACAC,EAAAA,EAAAA,IAAA,oDAEAka,MAAA,CACAra,KAAA,CACAsa,WAAA,EACAC,OAAAA,CAAAva,GACA,IACA,IAAA0U,EAAAgE,EAAA1Y,EAAA,MAAAoT,eAAA,KAAAoH,YAAA,KAAAnY,QACA0W,EAAA0B,SAAA/F,EACA,OAAApC,GACAoI,QAAApI,MAAAA,EACA,CACA,KC9FmP,ICQ/O,GAAY,OACd,EACA,EACA,GACA,EACA,KACA,KACA,MAIF,EAAe,EAAiB,QCnB5BjX,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACW,IAAIb,EAAI0E,KAAK5C,GAAG6F,MAAM,CAAC0X,IAAI,EAAM,CAACrf,EAAI0E,KAAKjC,KAAK+C,gBAAgB,EAAM8Z,MAAOtf,EAAIuf,aAAevf,EAAIwf,SAAUC,OAAQzf,EAAIuf,cAAgBvf,EAAIwf,WAAW,CAACtf,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACE,YAAY,QAAQ,CAACF,EAAG,UAAU,CAACE,YAAY,SAAS,CAACF,EAAG,KAAK,CAACF,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,mBAAoBlC,EAAI0E,KAAKvC,WAAYjC,EAAG,oBAAoB,CAACO,MAAM,CAAC,KAAOT,EAAI0E,QAAQ1E,EAAIQ,KAAMR,EAAI0E,KAAK,gBAAiBxE,EAAG,mBAAmB,CAACO,MAAM,CAAC,QAAUT,EAAI0E,KAAK,mBAAmB1E,EAAIQ,KAAMR,EAAI0E,KAAKtB,YAAalD,EAAG,WAAW,CAACO,MAAM,CAAC,MAAQ,GAAG,KAAOT,EAAIkC,GAAG,aAAa,YAAYlC,EAAIkC,GAAG,eAAe,CAAChC,EAAG,cAAc,CAACO,MAAM,CAAC,YAAcT,EAAI0E,KAAKtB,gBAAgB,GAAGpD,EAAIQ,KAAMuB,MAAMC,QAAQhC,EAAI0E,KAAKmT,WAAa7X,EAAI0E,KAAKmT,SAASzS,OAAS,EAAGlF,EAAG,WAAW,CAACO,MAAM,CAAC,SAAWT,EAAI0E,KAAKmT,YAAY7X,EAAIQ,KAAMR,EAAIkJ,aAAchJ,EAAG,UAAU,CAACE,YAAY,iBAAiB,CAAEJ,EAAI0f,SAAUxf,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACE,YAAY,QAAQK,MAAM,CAAC,GAAK,MAAM,CAACT,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,uBAAuBhC,EAAG,QAAQ,CAACE,YAAY,QAAQK,MAAM,CAAC,GAAK,KAAK+B,SAAS,CAAC,UAAYxC,EAAIO,GAAGP,EAAI0f,cAAc,GAAG1f,EAAIQ,KAAMR,EAAI2f,gBAAiBzf,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACE,YAAY,QAAQK,MAAM,CAAC,GAAK,MAAM,CAACT,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,8BAA8BhC,EAAG,QAAQ,CAACE,YAAY,QAAQK,MAAM,CAAC,GAAK,KAAK+B,SAAS,CAAC,UAAYxC,EAAIO,GAAGP,EAAI2f,qBAAqB,GAAG3f,EAAIQ,MAAM,GAAGR,EAAIQ,KAA2B,SAArBR,EAAI4f,aAAyB1f,EAAG,QAAQ,CAACO,MAAM,CAAC,MAAQT,EAAIkC,GAAG,uBAAuB,MAAQlC,EAAI4X,mBAAmB5X,EAAIQ,MAAM,GAAIR,EAAIkJ,cAAgBlJ,EAAI6f,cAAe3f,EAAG,UAAU,CAACE,YAAY,QAAQ,CAACF,EAAG,SAAS,CAACE,YAAY,eAAeK,MAAM,CAAC,UAAU,KAAK,CAACP,EAAG,SAAS,CAACiL,IAAI,OAAO1K,MAAM,CAAC,MAAQ,GAAG,KAAO,GAAG,SAAW,GAAG,IAAM,IAAIkC,MAAM,CAAClB,MAAOzB,EAAIsX,IAAK1U,SAAS,SAAUC,GAAM7C,EAAIsX,IAAIzU,CAAG,EAAElB,WAAW,QAAQ,CAAE3B,EAAIkJ,aAAchJ,EAAG,QAAQ,CAACO,MAAM,CAAC,MAAQT,EAAIkC,GAAG,OAAO,UAAU,KAAK,CAAChC,EAAG,MAAM,CAACO,MAAM,CAAC,KAAOT,EAAI0E,KAAK,cAAgB1E,EAAI8f,QAAQ,QAAU,IAAI3e,GAAG,CAAC,YAAcnB,EAAIwX,gBAAgB,GAAGxX,EAAIQ,KAAMR,EAAI6f,cAAe3f,EAAG,QAAQ,CAACO,MAAM,CAAC,MAAQT,EAAIkC,GAAG,cAAc,UAAU,KAAK,CAAChC,EAAG,aAAa,CAACO,MAAM,CAAC,WAAaT,EAAIsS,eAAe,GAAGtS,EAAIQ,MAAM,IAAI,IAAI,GAAGR,EAAIQ,KAAMR,EAAIyX,UAAWvX,EAAG,SAAS,CAACO,MAAM,CAAC,OAAST,EAAIW,OAAO,QAAUX,EAAI0E,KAAK,MAAQ1E,EAAI0X,aAAavW,GAAG,CAAC,UAAYnB,EAAI2X,aAAa3X,EAAIQ,KAAMR,EAAI+f,gBAAkB/f,EAAIwf,SAAUtf,EAAG,SAAS,CAACO,MAAM,CAAC,OAAST,EAAI0E,KAAKsb,YAAY,YAAa,KAAQhgB,EAAIQ,KAAMR,EAAIigB,aAAc/f,EAAG,YAAY,CAACO,MAAM,CAAC,UAAYT,EAAI0E,KAAKqT,aAAa/X,EAAIQ,KAAKN,EAAG,WAAW,CAACE,YAAY,OAAOK,MAAM,CAAC,MAAQT,EAAIkC,GAAG,kBAAkB,KAAOlC,EAAI0E,KAAKjC,KAAK,KAAOzC,EAAI0E,KAAK,aAAe1E,EAAIgY,yBAA0BhY,EAAI8X,eAAgB5X,EAAG,iBAAiB,CAACO,MAAM,CAAC,KAAOT,EAAI8X,kBAAkB9X,EAAIQ,KAA2B,UAArBR,EAAI4f,aAA0B1f,EAAG,QAAQ,CAACO,MAAM,CAAC,MAAQT,EAAIkC,GAAG,uBAAuB,MAAQlC,EAAI4X,mBAAmB5X,EAAIQ,MAAM,GAAIR,EAAIuf,YAAarf,EAAG,QAAQ,CAACE,YAAY,sBAAsB,CAACF,EAAG,WAAW,CAACO,MAAM,CAAC,SAAWT,EAAIid,SAAS,QAAUjd,EAAIkgB,oBAAoB/e,GAAG,CAAC,SAAWnB,EAAImgB,wBAAwB,GAAGngB,EAAIQ,KAAMR,EAAIwf,SAAUtf,EAAG,QAAQ,CAACE,YAAY,mBAAmB,CAACF,EAAG,QAAQ,CAACO,MAAM,CAAC,KAAOT,EAAI0E,KAAK,MAAQ1E,EAAI+K,MAAM,IAAM/K,EAAIogB,MAAM,WAAapgB,EAAIuI,QAAQ,WAAavI,EAAIqgB,UAAU,QAAUrgB,EAAIsgB,iBAAiBnf,GAAG,CAAC,SAAWnB,EAAIugB,cAAc,YAAcvgB,EAAIwgB,eAAgBxgB,EAAI+f,cAAe7f,EAAG,SAAS,CAACO,MAAM,CAAC,OAAST,EAAI0E,KAAKsb,YAAY,YAAa,KAAQhgB,EAAIQ,MAAM,GAAGR,EAAIQ,MAAM,IAAI,EACp9G,EACIa,EAAkB,GCFlBtB,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,UAAU,CAACE,YAAY,iBAAiB,CAACF,EAAG,KAAK,CAACA,EAAG,OAAO,CAACE,YAAY,SAAS,CAACJ,EAAIM,GAAGN,EAAIO,GAAGP,EAAIsH,IAAI,cAAetH,EAAIid,SAAS7X,YAAcpF,EAAIygB,WAAYvgB,EAAG,UAAU,CAACO,MAAM,CAAC,KAAO,GAAG,QAAU,mBAAmB,CAAET,EAAIid,SAAS7X,SAAWpF,EAAI0gB,YAAYtb,OAAQ,CAACpF,EAAIM,GAAGN,EAAIO,GAAGP,EAAI0gB,YAAYtb,QAAQ,IAAIpF,EAAIO,GAAGP,EAAIid,SAAS7X,UAAU,CAACpF,EAAIM,GAAGN,EAAIO,GAAGP,EAAIid,SAAS7X,WAAW,GAAGpF,EAAIQ,KAAKN,EAAG,cAAc,CAACE,YAAY,OAAOuC,MAAM,CAAClB,MAAOzB,EAAI2gB,KAAM/d,SAAS,SAAUC,GAAM7C,EAAI2gB,KAAK9d,CAAG,EAAElB,WAAW,UAAW3B,EAAIygB,YAAczgB,EAAIid,SAAS7X,OAAS,EAAGlF,EAAG,cAAc,CAACE,YAAY,OAAOuC,MAAM,CAAClB,MAAOzB,EAAIiL,KAAMrI,SAAS,SAAUC,GAAM7C,EAAIiL,KAAKpI,CAAG,EAAElB,WAAW,UAAU3B,EAAIQ,MAAM,GAAIR,EAAIygB,YAAczgB,EAAIid,SAAS7X,OAAS,EAAGlF,EAAG,YAAY,CAACE,YAAY,YAAYK,MAAM,CAAC,YAAcT,EAAIkC,GAAG,2BAA2BS,MAAM,CAAClB,MAAOzB,EAAI4gB,WAAYhe,SAAS,SAAUC,GAAM7C,EAAI4gB,WAAW/d,CAAG,EAAElB,WAAW,gBAAgB3B,EAAIQ,KAAMR,EAAI4gB,YAAyC,IAA3B5gB,EAAI0gB,YAAYtb,OAAclF,EAAG,UAAU,CAACO,MAAM,CAAC,QAAU,UAAU,KAAO,KAAK,CAACT,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,0BAA0BlC,EAAIQ,KAAKN,EAAGF,EAAI6gB,eAAe7gB,EAAI+H,GAAG,CAACoG,IAAI,aAAa,YAAYnO,EAAI8gB,qBAAoB,GAAO9gB,EAAIU,GAAIV,EAAI0gB,aAAa,SAASzY,GAAS,OAAO/H,EAAG,UAAU,CAACW,IAAIoH,EAAQnF,KAAKrC,MAAM,CAAC,QAAUwH,IAAU,IAAG,GAAIjI,EAAI6L,QAAS3L,EAAG,WAAW,CAACoB,WAAW,CAAC,CAACC,KAAK,YAAYC,QAAQ,kBAAkBC,MAAOzB,EAAI+gB,SAAUpf,WAAW,WAAW+F,UAAU,CAAC,KAAM,KAAQjH,MAAM,CAAC,QAAU,WAAWU,GAAG,CAAC,MAAQnB,EAAI+gB,WAAW,CAAC/gB,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,yBAAyBlC,EAAIQ,MAAM,EAC5mD,EACIa,EAAkB,G,WCFlBtB,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,iBAAiB,CAACO,MAAM,CAAC,MAAQT,EAAIkC,GAAG,cAAc,KAAO,OAAO,CAAChC,EAAG,WAAW,CAACO,MAAM,CAAC,MAAQT,EAAIkC,GAAG,oBAAoB,QAAU,kBAAkB,QAAwB,UAAdlC,EAAIyB,OAAmBN,GAAG,CAAC,MAAQ,SAAS6K,GAAQ,OAAOhM,EAAIghB,OAAO,QAAQ,IAAI,CAAC9gB,EAAG,iBAAiBF,EAAIM,GAAG,KAAKJ,EAAG,OAAO,CAACE,YAAY,gBAAgB,CAACJ,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,yBAAyB,GAAGhC,EAAG,WAAW,CAACO,MAAM,CAAC,MAAQT,EAAIkC,GAAG,mBAAmB,QAAU,kBAAkB,QAAwB,SAAdlC,EAAIyB,OAAkBN,GAAG,CAAC,MAAQ,SAAS6K,GAAQ,OAAOhM,EAAIghB,OAAO,OAAO,IAAI,CAAC9gB,EAAG,oBAAoBF,EAAIM,GAAG,KAAKJ,EAAG,OAAO,CAACE,YAAY,gBAAgB,CAACJ,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,wBAAwB,IAAI,EACjuB,EACIb,GAAkB,G,YCYtB,IACAS,GAAA,cACAwB,WAAA,CACA2d,YAAA,OACAC,cAAAA,GAAAA,KAEA9c,MAAA,CACA3C,MAAA,CACAgB,KAAA8B,OACAC,QAAA,UAGAiC,QAAA,CACAua,MAAAA,CAAAG,GACA,KAAA1f,QAAA0f,GACA,KAAAva,MAAA,QAAAua,EAEA,IC/B0P,MCOtP,IAAY,OACd,GACA,EACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QChBhC,IACE7d,WAAY,CACV8d,YAAWA,IAEbzc,SAAU,CACRkc,cAAAA,GACE,MAAsB,SAAd5gB,KAAK0gB,KAAmB,MAAQ,cAC1C,EACAG,mBAAAA,GACE,MAAkB,SAAd7gB,KAAK0gB,KACA,CACLhZ,MAAO,CACL,cAKG,CACL0Z,SAAS,EAGf,EACAV,KAAM,CACJW,GAAAA,GACE,OAAOrhB,KAAK8G,OAAOkS,MAAM/H,YAC3B,EACAqQ,GAAAA,CAAIrQ,GACFjR,KAAK8G,OAAOC,OAAO,SAAU,CAAEkK,gBACjC,KCHN,IACA3P,KAAA,WACA+B,WAAA,CACAke,QAAA,IACAC,UAAAA,IAAA,gCACA9U,YAAAA,IAAA,gCAEA1I,OAAA,CACAyd,IAEAtd,MAAA,CACA6Y,SAAA,CACAxa,KAAAV,MACAuC,UAAA,GAEAuH,QAAA,CACApJ,KAAAgC,QACAD,SAAA,IAGAE,IAAAA,GACA,OACAkc,WAAA,GACA3V,KAAA,EAEA,EACAtG,SAAA,KACAC,EAAAA,EAAAA,IAAA,mCACAC,EAAAA,EAAAA,IAAA,aACA4b,UAAAA,GACA,YAAA5U,OACA,EACA6U,WAAAA,GACA,QAAA7U,QACA,YAAAoR,SAEA,IAAAA,EAAA,KAAAA,SAAA3E,KAAArQ,IACA,IAAAV,EAAA,KAAAuB,QAAAb,GACA,OAAAV,GAAAU,CAAA,IAyBA,OAtBA,KAAA2Y,aACA3D,EAAAA,EAAAjQ,QAAA/E,IACA,IAAA0Z,EAAA,CAAA1Z,EAAApG,OAUA,OATAoG,aAAApC,EAAAA,GACA8b,EAAA9Y,KAAAZ,EAAAnG,IACAC,MAAAC,QAAAiG,EAAA4P,YACA8J,EAAAA,EAAAC,OAAA3Z,EAAA4P,YAIA8J,EAAA9Y,KAAAZ,EAAAnF,MAEA4C,EAAAA,GAAAmc,OAAA,KAAAjB,WAAAe,EAAA,KAIA,KAAA9V,SAAA,SAAAZ,OACAgS,EAAAA,EAAAhQ,MAAA,GAAAhC,MAAA,CAAAiC,EAAAC,IAAAtH,EAAAA,EAAAuH,gBAAAF,GAAAG,cAAAxH,EAAAA,EAAAuH,gBAAAD,GAAA,KAAAG,eACA,SAAArC,OACAgS,EAAAA,EAAA1P,YAGA0P,CACA,GAEA3W,OAAAA,GACA,KAAA2E,KAAA,KAAAwC,YACA,EACAhH,QAAA,CACAsa,QAAAA,CAAAxX,GAAA,GACAA,IAGA,KAAA0B,KAAA,EACA,KAAArE,MAAA,YAEA,ICxGuP,MCQnP,IAAY,OACd,GACA,EACA,GACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,Q,oCCoDhC,IACArF,KAAA,UACA+B,WAAA,CACA6a,iBAAAA,IAAA,gCACAC,OAAAA,IAAA,wCACAC,MAAA,IACAC,KAAA,IACAwD,SAAA,GACAvD,eAAAA,IAAA,gCACAC,kBAAAA,IAAA,gCACAza,YAAA,aACAge,MAAA,KACAC,SAAAA,IAAA,+BACAvD,MAAAA,IAAA,mEACAC,IAAAA,IAAA,6BACA1a,SAAAA,IAAA,mEACA2a,UAAAA,IAAA,gCACAC,SAAA,IACAC,WAAAA,IAAA,iCAEA5a,OAAA,CACA6a,GACA5a,EAAAA,GAAAA,GAAA,CAAA+d,cAAA,iBAAAC,sBAAAA,GAAAA,yBAEAxd,IAAAA,GACA,OACA6D,QAAA,GACAyP,sBAAA,CAEA,eACA,kBACA,KACA,OACA,QACA,cACA,WACA,YACA,UACA,SACA,YACA,QACA,SACA,cAEA,YACA,gBAEA,aAEA,aAEA,eAEA,gBAGA,EACArT,SAAA,KACAC,EAAAA,EAAAA,IAAA,mEACAC,EAAAA,EAAAA,IAAA,0IACAgb,aAAAA,GACA,YAAAvN,WAAAlN,OAAA,CACA,EACAwa,YAAAA,GACA,gBAAAhI,gBAAAxS,OACA,KAEA,KAAA8D,eAAA,KAAA2W,cACA,QAGA,MAEA,EACAS,eAAAA,GACA,YAAA6B,mBAAA,KAAAzd,KACA,EACAgb,QAAAA,GACA,YAAAxW,cAAA,KAAAxE,KAAA4W,QACA,KAAA2G,cAAA,KAAAvd,KAAA4W,QAAA,eAAA5W,MAEA,IACA,EACAub,YAAAA,GACA,YAAA/W,cAAAnH,MAAAC,QAAA,KAAA0C,KAAAqT,YAAA,KAAArT,KAAAqT,UAAA3S,OAAA,CACA,EACAua,eAAAA,GACA,QAAAjb,MAAA,KAAAA,KAAAwE,gBAAA,KAAAxE,KAAAyE,OAAAC,SAAAC,SAAAjE,OAAA,GACA,IAAAgd,EAAA,KAAA1d,KAAAyE,OAAAC,SAAAC,SAKA,OAJA+Y,EAAAhd,OAAA,IAEAgd,EAAAA,EAAAnV,MAAA,IAEA,KAAAiV,sBAAAE,EACA,CACA,WACA,EACArC,aAAAA,GAAA,IAAAhX,EACA,OAAArD,EAAAA,GAAA0B,KAAA,QAAA2B,EAAA,KAAArE,YAAA,IAAAqE,OAAA,EAAAA,EAAAiX,aAAA,CACA,EACAK,SAAAA,GACA,IAAAgC,EAAAhe,OAAAsC,OAAA,QAAA2b,oBAKA,OAHAD,EAAAtW,OAAA,KAAArH,MAAA,KAAA6d,cAAA,eAAAA,aAAAtT,MACAoT,EAAAtW,MAAArG,EAAAA,GAAA8c,iBAAA,KAAA9d,KAAA+d,kBAAA,KAAAla,UAEA8Z,CACA,EACAjC,KAAAA,GACA,OAAA3b,QAAA,KAAA8d,aACA,EACA/C,QAAAA,GACA,YAAAzU,MAAA3F,OAAA,QAAAgb,KACA,EACAb,WAAAA,GACA,YAAAtC,SAAA7X,OAAA,CACA,EACA0a,OAAAA,GACA,YAAAvI,cACA,KAAAA,cAGA,CACA9U,KAAA,oBACAigB,SAAA,KAAA3X,MAGA,GAEAgU,MAAA,CACAra,KAAA,CACAsa,WAAA,EACAC,OAAAA,CAAAva,GACA,IACA,IAAA0U,EAAAiD,EAAA3X,EAAA,MAAAwa,WAAA,KAAAyD,UAAA,KAAA5b,QACA0W,EAAA0B,SAAA/F,EACA,OAAApC,GACAoI,QAAApI,MAAAA,EACA,CACA,IAGAvQ,QAAA,CACA0Z,mBAAAA,GACA,KAAApZ,OAAA6b,SAAA,0BAAAxhB,MAAA,GACA,EACA,mBAAAmf,CAAAlU,GACA,UACA,KAAAtF,OAAA6b,SAAA,gBAAAvW,OAAAjL,MAAA,EAAAmH,QAAA,KAAAA,SACA,OAAAyO,GACA,KAAA6L,MAAAjc,MAAA,QAAAoQ,EAAA,KAAA9U,GAAA,oBACA,CACA,EACA,iBAAAse,CAAAjY,EAAAmF,GACA,KAAAnF,QAAAA,EACAmF,GACA,KAAA3G,OAAAC,OAAA,iBAEA,UACA,KAAAD,OAAA6b,SAAA,gBAAAvW,KAAA,KAAAkW,aAAAnhB,MAAA,EAAAmH,WACA,OAAAyO,GACA,IAAA8L,EAAApV,EAAA,KAAAxL,GAAA,yBAAAA,GAAA,4BACA,KAAA2gB,MAAAjc,MAAA,QAAAoQ,EAAA8L,EACA,CACA,IC3OsP,MCQlP,IAAY,OACd,GACA,EACA,GACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCChC,IACAvhB,KAAA,SACA+B,WAAA,CACAyf,WAAA,EACAtW,QAAA,IACA+U,QAAA,GACAjV,KAAAA,GAEAnI,MAAA,CACAwU,KAAA,CACAnW,KAAA8B,OACAC,QAAA,KAGAG,SAAA,KACAC,EAAAA,EAAAA,IAAA,+DACAC,EAAAA,EAAAA,IAAA,8BACAsS,OAAAA,GACA,QAAAH,iBAAAlB,OAAA,KAAAkB,MAAAgM,cAAAtd,EAAAA,GAAAqK,SAAA,KAAAiH,MAAAiM,UAAA,CACA,IAAAC,EAAA,KAAAlM,MAAAiM,SACA,OAAAvd,EAAAA,GAAAqK,SAAAmT,EAAAxe,OAAAwe,EAAAxe,KAAA2W,KACA6H,EAAAxe,KAAA2W,KAGA6H,EAAAC,MAEA,CACA,WACA,EACAjM,gBAAAA,GACA,QAAAF,iBAAAlB,OAAA,KAAAkB,MAAAgM,cAAAtd,EAAAA,GAAAqK,SAAA,KAAAiH,MAAAiM,UAAA,CACA,IAAAC,EAAA,KAAAlM,MAAAiM,SACA,GAAAvd,EAAAA,GAAAqK,SAAAmT,EAAAxe,MAAA,CACA,qBAAAwe,EAAAxe,KAAAtB,YACA,OAAA8f,EAAAxe,KAAAtB,YAEA,qBAAA8f,EAAAxe,KAAA0e,OACA,OAAAF,EAAAxe,KAAA0e,MAEA,CACA,SAAAF,EAAAC,OACA,YAAAjhB,GAAA,uBAEA,SAAAghB,EAAAC,OACA,YAAAjhB,GAAA,oBAEA,SAAAghB,EAAAC,OACA,YAAAjhB,GAAA,mBAEA,GAAAghB,EAAAC,OAAA,IACA,YAAAjhB,GAAA,sBAEA,GAAAghB,EAAAC,OAAA,IACA,YAAAjhB,GAAA,oBAEA,MACA,QAAA8U,iBAAAqM,EAAAA,GACA,YAAArM,MAAAK,QAGA,YAAAnV,GAAA,sBACA,EACA+E,SAAAA,GACA,YAAAO,OACA,OAGA,SAEA,EACAuP,UAAAA,GACA,OAAAtH,IAAA,KAAAmJ,MAAA0K,GAAA,WACA,GAEAvE,MAAA,CACAnG,KAAA,CACAoG,WAAA,EACA,aAAAC,CAAArG,EAAA2K,GACA3K,IAAA2K,IAIA,KAAAjS,0BAAA,KAAAkS,kBAAA5K,IAIA,KAAA7R,OAAA6b,SAAA,QAAA3L,IAAA2B,GAAA,IAAA6K,aAAA,EAAAriB,MAAA,EAAAsiB,SAAA,IACA,IAGAjd,QAAA,CACA,uBAAA+c,CAAA5K,GACA,IAAAA,GAAA,MAAAA,EACA,SAGA,IAAA/D,EAAA+D,EAAA7D,MAAA,KAAA/H,QAAA2W,GAAAA,EAAAve,OAAA,YAAAue,GAAA,eAAAA,IAEA,GAAA9O,EAAAzP,OAAA,GAAAyP,EAAA+O,OAAAD,GAAAA,EAAApe,MAAA,sEAEA,aAAAse,SAAA,qCAEA,IAAAC,EAAAD,EAAAhP,EAAAA,EAAAzP,OAAA,IAAAyK,WACA,GAAAiU,EAAA,CACA,IAAAtU,EAAAC,IAAAqU,GAOA,OALA,KAAAC,QAAAjP,QAAA,CAEA8D,KAAA,IAAApJ,EAAAoJ,OAAA9D,QAAA,8BACAkP,MAAAxU,EAAAwU,OAAA,MAEA,CACA,CACA,CACA,QACA,ICvIqP,MCOjP,IAAY,OACd,GACA,EACA,GACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QChBhC,SAASC,GAAUjR,GACjB,IAAIkR,EAAS,GAmDb,OAjDIlR,EAAO5C,qBACT8T,EAAOrb,KAAK,CACV+P,KAAM,iBACNrX,KAAM,iBACN0F,UAAWkd,GACX/f,MAAOggB,IACE,CACLxL,KAAO,aAAYwL,EAAMC,OAAOC,gBAMnCtR,EAAO9C,WAkBVgU,EAAOrb,KAAK,CACV+P,KAAM,UACNrX,KAAM,SACN0F,UAAWA,IAAM,sEApBnBid,EAAOrb,KAAK,CACV+P,KAAM,IACNrX,KAAM,SACN0F,UAAWA,IAAM,kCAEnBid,EAAOrb,KAAK,CACV+P,KAAM,wBACNrX,KAAM,SACN0F,UAAWA,IAAM,mEACjB7C,MAAOggB,IACE,CACLG,WAAa,aAAYH,EAAMC,OAAOC,iBAa9CJ,EAAOrb,KAAK,CACV+P,KAAM,QACNrX,KAAM,SACN0F,UAAWkd,GACX/f,MAAOggB,IACE,CACLxL,KAAMwL,EAAMC,OAAOC,cAKlBJ,CACT,CAEA,U,2DCtDO,MAAMM,WAAgBC,GAAAA,GAI3BC,WAAAA,CAAYC,EAAO,KAAMvK,EAAM,MAC7BwK,MAAMJ,GAAQK,OAAQF,EAAMvK,EAC9B,CAEA,gBAAW0K,GACT,MAAO,GACT,CAEA,oBAAWC,GACT,OAAOnR,EAAAA,GAAKlB,EAAE,iBAChB,CAEA,sBAAWtP,GACT,OAAOwQ,EAAAA,GAAKlB,EAAE,iCAChB,GAEDsS,EAAAA,GAAAA,GApBYR,GAAO,SAEF,QCAH,MAAMS,GAEnBP,WAAAA,CAAY5iB,EAAIsX,GACdnZ,KAAK6B,GAAKA,EACV7B,KAAKmZ,OAASA,CAChB,CAEA,SAAIvX,GACF,MAAiC,kBAAtB5B,KAAKmZ,OAAOvX,MACd5B,KAAKmZ,OAAOvX,OAEdqjB,EAAAA,GAAAA,WAAUjlB,KAAK6B,GACxB,CAEA,eAAIsB,GACF,OAAInD,KAAKklB,WACAvR,EAAAA,GAAKlB,EAAE,0BAET,EACT,CAEA,aAAIgD,GACF,OAAOzV,KAAKmlB,QAAUnlB,KAAKolB,WAAaplB,KAAKqlB,SAC/C,CAEAhC,EAAAA,CAAG7gB,GACD,OAAOxC,KAAKslB,MAAMrkB,SAASuB,EAC7B,CAEA,eAAI+iB,GACF,OAAOzjB,MAAMC,QAAQ/B,KAAKmZ,OAAOqM,KACnC,CAEA,UAAIL,GACF,OAAOnlB,KAAKqjB,GAAG,SACjB,CAEA,aAAIgC,GACF,OAAOrlB,KAAKqjB,GAAG,UACjB,CAEA,aAAI+B,GACF,OAAOplB,KAAKqjB,GAAG,WAAarjB,KAAKqjB,GAAG,UACtC,CAEA,UAAIoC,GACF,OAAOzlB,KAAKmlB,QAAiC,SAAvBnlB,KAAKmZ,OAAOjR,MACpC,CAEA,cAAIwd,GACF,OAAO1lB,KAAKmlB,QAAiC,cAAvBnlB,KAAKmZ,OAAOjR,MACpC,CAEA,cAAIgd,GACF,OAAOllB,KAAKylB,QAAUzlB,KAAK0lB,UAC7B,CAEA,gBAAIC,GACF,MAAmC,qBAAxB3lB,KAAKmZ,OAAO5U,QACdvE,KAAKmZ,OAAO5U,QAEZvE,KAAKulB,YACLvlB,KAAKmZ,OAAOqM,KAAK,GAEjBxlB,KAAKklB,WACL,IAAIU,KAEJ5lB,KAAKolB,UACuB,qBAAxBplB,KAAKmZ,OAAO0M,QACf7lB,KAAKmZ,OAAO0M,QAEb,EAEA7lB,KAAKmlB,OACL,IAEAnlB,KAAKqlB,WAIP,IACT,CAEA,SAAIC,GACF,MAAgC,kBAArBtlB,KAAKmZ,OAAO3W,KACd,CAACxC,KAAKmZ,OAAO3W,MAEbV,MAAMC,QAAQ/B,KAAKmZ,OAAO3W,MAC1BxC,KAAKmZ,OAAO3W,KAEd,EACT,CAEAsjB,YAAAA,CAAaC,GACX,IAAIC,EAAM,CAACC,GAAAA,GAAUC,GAAAA,IAUrB,OATIlmB,KAAKolB,WAAaplB,KAAKklB,YACzBc,EAAIpd,KAAKud,GAAAA,GACTH,EAAIpd,KAAKwd,GAAAA,IACTJ,EAAIpd,KAAKyd,GAAAA,IACTL,EAAIpd,KAAK0d,GAAAA,KAEFtmB,KAAKmlB,QAAUY,EAAIQ,oBAC1BP,EAAIpd,KAAK2b,IAEJyB,CACT,CAEAQ,MAAAA,GACE,OAAOxmB,KAAK6B,EACd,CAEA4kB,MAAAA,GACE,MAAO,CAAEC,SAAU1mB,KAAK6B,GAC1B,EClHK,MAAM2K,GAEXiY,WAAAA,CAAYtjB,GAAO,EAAOsiB,GAAU,GAClCzjB,KAAKmB,KAAOqD,QAAQrD,GACpBnB,KAAKyjB,QAAUjf,QAAQif,EACzB,EAIKzP,eAAe2S,GAAYC,EAAIxa,GACpC,IAAIya,EACAC,EAAU,CAEZ,kBAAmBF,EAAGhO,QAAQmO,mBAEhC,GAAIthB,EAAAA,GAAMqK,SAAS1D,GAAO,CACxB,IAAI4a,EAAgC,kBAAhB5a,EAAK4a,OAAsB5a,EAAK4a,OAAOzhB,cAAgB,MACvEyR,EAAM4P,EAAGhO,QAAQ9S,cAAcsG,EAAKvJ,MACpC4C,EAAAA,GAAMoF,QAAQuB,EAAK5J,QACrBskB,EAAQG,OAAS7a,EAAK5J,MAEnBokB,EAAGhO,QAAQsO,cAAclQ,IAC5B5S,OAAOsC,OAAOogB,EAASF,EAAG5N,MAAMtH,gBAE9BjM,EAAAA,GAAMqK,SAAS1D,EAAK0a,UACtB1iB,OAAOsC,OAAOogB,EAAS1a,EAAK0a,SAE9BD,EAAO,CACLG,SACAhQ,MACA8P,UACAriB,KAAM2H,EAAK+a,KAGf,MACK,GAAoB,kBAAT/a,EAAmB,CACjC,IAAI4K,EAAM4P,EAAGhO,QAAQ9S,cAAcsG,GAC9Bwa,EAAGhO,QAAQsO,cAAclQ,IAC5B5S,OAAOsC,OAAOogB,EAASF,EAAG5N,MAAMtH,gBAElCmV,EAAO,CACLG,OAAQ,MACRhQ,MACA8P,UAEJ,MAEED,EAAOza,EAET,aAAagb,EAAAA,GAAAA,GAAMP,EACrB,CAGO,SAASQ,GAAWC,EAAazQ,GAItC,OAHIyQ,aAAuB9X,MACzB8X,EAAcA,EAAY1X,YAED,kBAAhB0X,GAA4BxlB,MAAMC,QAAQ8U,GAC5CyQ,EAAYzS,QAAQgC,EAAM,GAAIA,EAAM,IAEtCyQ,CACT,CAEO,SAASC,GAASD,EAAazQ,GAIpC,OAHIyQ,aAAuB9X,MACzB8X,EAAcA,EAAY1X,YAED,kBAAhB0X,GAA4BxlB,MAAMC,QAAQ8U,GAC5CyQ,EAAYzS,QAAQgC,EAAM,GAAIA,EAAM,IAEtCyQ,CACT,CAEO,SAASE,GAAYxO,EAAO1R,GAIjC,MAHoC,oBAAzB0R,EAAMpH,iBACftK,EAAO0R,EAAMpH,eAAetK,EAAM0R,IAE7B5U,OAAOqjB,OAAOngB,EACvB,CAEO,SAASogB,GAAsB3Q,GAAO,IAAA4Q,EAC3C,MAAO,CAAC,IAAK,KAAK1mB,SAAc,OAAL8V,QAAK,IAALA,GAAe,QAAV4Q,EAAL5Q,EAAOiM,gBAAQ,IAAA2E,OAAV,EAALA,EAAiBzE,OAC9C,CAEO,SAAS0E,GAAoBrY,EAAKwU,GACvC,GAAyB,GAArBte,EAAAA,GAAM0B,KAAK4c,GACb,OAAOxU,EAET,IAAK,IAAI3O,KAAOmjB,EACTxU,EAAIG,SAAS9O,IAChB2O,EAAII,SAAS/O,EAAKmjB,EAAMnjB,IAG5B,OAAO2O,CACT,C,gBCnFA,SAASsY,GAAS9U,EAAQ+U,GAExB,MAAMC,EAAgBA,KAAA,CACpB/Q,IAAK,GACLpV,MAAOmR,EAAO7C,aACd/M,YAAa,KACbsB,KAAM,KACNujB,MAAO,KACP3L,QAAS,KACT/F,YAAa,KAEb2R,4BAA6B,CAAC,EAC9B3hB,qBAAsB,CACpByO,SAAU,KACVpU,MAAO,GACPunB,QAAS,IAGXC,SAAU,GACV7F,aAAc,KACdD,mBAAoB,CAAC,EAErB+F,WAAY,OAGRC,EAAkBA,KAAA,CACtBC,MAAO,GACPhZ,uBAAwB,CAAC,EACzBiZ,SAAU,KAEVlS,OAAQ,GACRmS,WAAY,GACZC,aAAc,KACdC,cAAe,GAEfC,eAAgB,GAChBtI,gBAAiB,CAAC,EAClBuI,oBAAqB,OAGvB,OAAO,IAAIC,EAAAA,GAAAA,MAAW,CACpBC,QAAQ,EACR9P,MAAO5U,OAAOsC,OAAO,CAAC,EAAGqM,EAAQgV,IAAiBM,IAAmB,CAEnEU,SAAU,CAAC,EACXC,oBAAqBjW,EAAO9C,WAC5BgZ,6BAA8BlW,EAAOpB,uBACrCtE,WAAY0F,EAAOxC,SAErBqI,QAAS,CACPnN,QAASuN,IAAUA,EAAMhC,MAAQgC,EAAMvU,MAAQuU,EAAM+P,SAAS/P,EAAMhC,eAAgBxK,GACpF0V,mBAAoBlJ,GAASvU,IAC3B,IAAI5C,EAAK,GACT,OAAI4C,aAAgB+H,KAGX/H,aAAgBmB,EAAAA,EACvB/D,EAAK4C,EAAK5C,GAEa,kBAAT4C,IACd5C,EAAK4C,GAEAuU,EAAMqH,gBAAgBxe,KAAO,EAAK,EAE3CkV,MAAOiC,GAASA,EAAM+P,SAAS/P,EAAMhC,eAAgBnB,MAAQmD,EAAM+P,SAAS/P,EAAMhC,KAAO,KACzFnO,QAASmQ,GAAS,CAAC5S,EAAQ8iB,GAAoB,KAC7C,GAAI9iB,aAAkBR,EAAAA,EACpB,OAAOQ,EAKT,GAHIX,EAAAA,GAAMqK,SAAS1J,IAAWX,EAAAA,GAAMoF,QAAQzE,EAAOvD,QACjDuD,EAASA,EAAOvD,OAEb4C,EAAAA,GAAMoF,QAAQzE,GACjB,OAAO,KAET,IAAIkhB,EAAc7hB,EAAAA,GAAMqU,WAAW1T,EAAQ4S,EAAMhC,KAC7CvS,EAAOuU,EAAM+P,SAASzB,GAC1B,OAAI7iB,aAAgBmB,EAAAA,GAASsjB,GAAqBzkB,aAAgBoR,MACzDpR,EAGA,IACT,EAGFgS,oBAAqBA,CAACuC,EAAOJ,IAAYhT,EAAAA,EAAKuH,gBAAgByL,EAAQuQ,KAAMnQ,EAAM9I,cAElFjH,aAAc+P,IAAK,IAAAoQ,EAAA,OAAc,QAAVA,EAAApQ,EAAMvU,YAAI,IAAA2kB,OAAA,EAAVA,EAAYngB,kBAAkB,CAAK,EAC1DogB,UAAWrQ,IAAK,IAAAsQ,EAAA,OAAc,QAAVA,EAAAtQ,EAAMvU,YAAI,IAAA6kB,OAAA,EAAVA,EAAYD,eAAe,CAAK,EACpDE,cAAevQ,IAAK,IAAAwQ,EAAA,OAAc,QAAVA,EAAAxQ,EAAMvU,YAAI,IAAA+kB,OAAA,EAAVA,EAAYD,mBAAmB,CAAK,EAC5DhiB,OAAQyR,IAAK,IAAAyQ,EAAA,OAAc,QAAVA,EAAAzQ,EAAMvU,YAAI,IAAAglB,OAAA,EAAVA,EAAYliB,YAAY,CAAK,EAE9C4hB,KAAMA,CAACO,EAAG9Q,IAAYA,EAAQ/P,QAAQ+P,EAAQ8J,UAE9CA,SAAU1J,IAAS,IAAA2Q,EACjB,IAAIvd,EAAiB,QAAbud,EAAG3Q,EAAMvU,YAAI,IAAAklB,OAAA,EAAVA,EAAYC,mBAAmB,QAC1C,GAAIxd,EACF,OAAOA,EAEJ,GAAI4M,EAAM/I,WACb,OAAOxK,EAAAA,GAAMokB,WAAW7Q,EAAM/I,WAAY,QAEvC,GAAI+I,EAAMhC,KAAOgC,EAAMvU,gBAAgBmB,EAAAA,GAAQoT,EAAMvU,KAAKqlB,iBAAiB,CAAC,cAAe,eAAgB,cAAe,OAAQ,WAAW3kB,OAAS,EACzJ,OAAOM,EAAAA,GAAMokB,WAAW7Q,EAAMhC,IAAK,QAEhC,GAAIgC,EAAMhC,IAAK,CAElB,IAAIzH,EAAMC,IAAIwJ,EAAMhC,KAChB2B,EAAOpJ,EAAIwa,SAAS,GACxB,GAAI,CAAC,cAAe,SAAS9oB,SAAS0X,GAOpC,OANApJ,EAAIwa,SAAS,EAAG,IAChBxa,EAAIwa,SAAS,EAAG,IACH,UAATpR,IACFpJ,EAAIwa,SAAS,EAAG,IAChBxa,EAAIwa,SAAS,EAAG,KAEXtkB,EAAAA,GAAMokB,WAAWta,EAAIK,WAAY,OAE5C,CACA,OAAO,IAAI,EAEbqP,WAAYjG,IACV,GAAIA,EAAMvU,gBAAgBmB,EAAAA,EAAM,CAC9B,IAAIwG,EAAO4M,EAAMvU,KAAKmlB,mBAAmB,UACzC,GAAIxd,EACF,OAAOA,CAEX,CAGA,GAAI4M,EAAMhC,IAAK,CACb,IAAIzH,EAAMC,IAAIwJ,EAAMhC,KAChB2B,EAAOpJ,EAAIwa,SAAS,GACxB,GAAI,CAAC,cAAe,SAAS9oB,SAAS0X,GAGpC,OAFApJ,EAAIwa,SAAS,EAAG,IAChBxa,EAAIwa,SAAS,EAAG,IACTtkB,EAAAA,GAAMokB,WAAWta,EAAIK,WAAY,SAE5C,CAEA,OAAO,IAAI,EAEbiI,eAAgBmB,IACd,GAAIA,EAAMvU,gBAAgBmB,EAAAA,EAAM,KAAAokB,EAC9B,IAAI5d,EAAiB,QAAb4d,EAAGhR,EAAMvU,YAAI,IAAAulB,OAAA,EAAVA,EAAYJ,mBAAmB,cAC1C,GAAIxd,EACF,OAAOA,CAEX,CAGA,GAAI4M,EAAMhC,IAAK,CACb,IAAIzH,EAAMC,IAAIwJ,EAAMhC,KAChB2B,EAAOpJ,EAAIwa,SAAS,GACxB,GAAY,SAARpR,EAGF,OAFApJ,EAAIwa,SAAS,EAAG,IAChBxa,EAAIwa,SAAS,EAAG,IACTtkB,EAAAA,GAAMokB,WAAWta,EAAIK,WAAY,aAE5C,CAEA,OAAO,IAAI,EAEbqa,oBAAqBjR,GAASrR,IAC5B,IAAI7F,MAAMC,QAAQ4F,GAChB,OAAOA,EAET,IAAIuiB,EAAcviB,EACf0Q,KAAI8R,GAAKA,EAAEC,WAAW,IAAK,SAASvV,QAAQ,OAAQ,SACpD2E,KAAK,KACJ6Q,EAAS,IAAIC,OAAO,KAAOJ,EAAc,MAC7C,OAAO1lB,QAAQwU,EAAMwP,WAAW9Z,MAAKa,GAAOA,EAAIjK,MAAM+kB,KAAS,EAEjEE,kBAAmBvR,GAASwR,GACnB/kB,EAAAA,GAAM8kB,kBAAkBvR,EAAMvU,KAAM+lB,GAG7C1f,MAAOkO,GACDA,EAAMmP,SAAShjB,OAAS,EACnB6T,EAAMmP,SAENnP,EAAMvU,KACNuU,EAAMvU,KAAKgmB,oBAAoB,QAEjC,GAETzN,SAAUhE,IACR,IAAI0R,EAAiBlmB,QAAQwU,EAAMvU,gBAAgBmB,EAAAA,GAAQoT,EAAMvU,KAAKkmB,yBAA2B3R,EAAM2P,eAAexjB,OAAS,GAC3HylB,EAAYpmB,QAAQwU,EAAMvU,gBAAgBmB,EAAAA,GAC1CilB,GAAmB7R,EAAMtI,oBAAmD,gBAA7BsI,EAAMtI,mBACrDoa,GAAc9R,EAAMtI,oBAAmD,WAA7BsI,EAAMtI,mBAChDsM,EAAW,GAOf,OANI0N,GAAkBG,IACpB7N,EAAWA,EAAS2E,OAAO3I,EAAM2P,iBAE/BiC,GAAaE,IACf9N,EAAWpX,EAAAA,EAAKmlB,mBAAmB/N,EAAUhE,EAAMvU,OAE9CuY,CAAQ,EAEjBiD,mBAAoBjH,GAASxU,QAAQwU,EAAM4P,qBAG3CpR,UAAWA,CAACwB,EAAOJ,IAAYpU,QAAQJ,OAAO0I,OAAO8L,EAAQlY,QAAQgO,MAAK/N,GAAS8E,EAAAA,GAAMqK,SAASnP,IAAgC,kBAAfA,EAAMkC,QACzHnC,OAAQA,CAACsY,EAAOJ,KAAY,IAAAoS,EAC1B,GAAKvlB,EAAAA,GAAMqK,SAAmB,QAAXkb,EAAChS,EAAMvU,YAAI,IAAAumB,OAAA,EAAVA,EAAYtqB,QAG3B,IAAIsY,EAAM9H,uBACb,OAAO8H,EAAMvU,KAAK/D,OAEf,CACH,IAAIA,EAAS,CAAC,EACV2R,EAAauG,EAAQvG,WACzB,IAAK,IAAIzR,KAAOoY,EAAMvU,KAAK/D,OAAQ,CACjC,IAAIC,EAAQqY,EAAMvU,KAAK/D,OAAOE,GACzByR,EAAWpR,SAASN,KACvBD,EAAOE,GAAOD,EAElB,CACA,OAAOD,CACT,EAfE,MAAO,CAAC,CAeV,EAEF2R,WAAY2G,GAASA,EAAMvU,KAAOuU,EAAMvU,KAAK6N,eAAc,GAAQ,GACnEqF,gBAAiBqB,GAASA,EAAMvU,KAAOuU,EAAMvU,KAAKwmB,sBAAsBC,GAAAA,IAA4Bne,QAAOX,GAAqB,YAAbA,EAAK4C,MAAsBvJ,EAAAA,GAAMQ,uBAAuBmG,KAAS,GAEpLgD,cAAeA,CAAC4J,EAAOJ,IAAY5B,IAC5BvR,EAAAA,GAAMoF,QAAQmM,KACjBA,EAAM,KAGR,IACImU,EADAC,EAAW3lB,EAAAA,GAAMqU,WAAWuN,GAAWrQ,EAAKgC,EAAMlI,cAAekI,EAAMhC,KAAK,GAMhF,IAJKgC,EAAMgQ,oBAAsBhQ,EAAM/I,aACrCkb,EAAWC,EAASC,WAAWrS,EAAM/I,aAGf,qBAAbkb,GAA4BvS,EAAQsO,cAAckE,GAAU,GAAQ,CAC7E,IAAKpS,EAAM7I,oBACT,OAAOib,EAASxb,WAElB,IAAIgF,EAAQ,CAAC,aACTvP,EAAW+lB,EAAS/lB,WACP,UAAbA,GACFuP,EAAMhM,KAAKvD,EAAW,KAExBuP,EAAMhM,KAAKwiB,EAASE,aACpB1W,EAAMhM,KAAKwiB,EAASzS,OAAO9D,QAAQ,MAAO,KAC1C,IAAI8D,EAAO/D,EAAM4E,KAAK,KAClB+R,EAAIH,EAASrH,QAIjB,OAHIwH,IACF5S,GAAS,IAAG4S,KAEP5S,CACT,CAEE,MAAO,IAAMwS,EAASvb,UACxB,EAEF4b,gBAAiBA,CAACxS,EAAOJ,IAAY5B,IACnC,MAAMyU,EAAa,2BACnB,GAAKhmB,EAAAA,GAAMoF,QAAQmM,IAAgB,MAARA,EAGtB,GAAIA,EAAI1R,MAAMmmB,GAAa,CAC9B,IACIpmB,EADAuP,EAAQoC,EAAInC,QAAQ4W,EAAY,IAAI3W,MAAM,KAM5CzP,EAJGuP,EAAM,GAAG8W,SAAS,KAIV9W,EAAMI,QAHN,SAKbgC,EAAO,GAAE3R,MAAauP,EAAM4E,KAAK,MACnC,MACUR,EAAMgQ,oBAAsBhQ,EAAM/I,aAC1C+G,EAAMvR,EAAAA,GAAMqU,WAAW9C,EAAKgC,EAAM/I,YAAY,SAd9C+G,EAAMgC,EAAM/I,WAgBd,OAAO2I,EAAQ9S,cAAckR,EAAK,MAAM,EAAK,EAE/CkQ,cAAelO,GAAS,CAACsO,EAAaqE,GAAY,KAChD,IAAK3S,EAAM/I,WACT,OAAO,EAKT,GAHMqX,aAAuB9X,MAC3B8X,EAAc9X,IAAI8X,IAEhBqE,GAAa7pB,MAAMC,QAAQiX,EAAM5I,iBAAmB4I,EAAM5I,eAAenP,SAASqmB,EAAYsE,UAChG,OAAO,EAET,IAAIT,EAAW7D,EAAY+D,WAAWrS,EAAM/I,YAC5C,GAAIkb,EAASU,OAAOvE,GAClB,OAAO,EAET,IAAIwE,EAAcX,EAASvb,WAC3B,OAAOkc,EAAYzc,WAAW,OAASyc,EAAYzc,WAAW,MAAM,EAEtEvJ,cAAeA,CAACkT,EAAOJ,IAAY,CAAC5B,EAAKrR,EAAU,KAAMomB,GAAsB,KAC7E,IAAIzE,EAAc7hB,EAAAA,GAAMqU,WAAWyN,GAASvQ,EAAKgC,EAAMlI,cAAenL,GAAoBqT,EAAMhC,KAAK,GAYrG,OAXK4B,EAAQsO,cAAcI,KAEzBM,GAAoBN,EAAatO,EAAM1J,wBAEvCsY,GAAoBN,EAAatO,EAAMiQ,8BACnC8C,GAEFnE,GAAoBN,EAAatO,EAAMiP,8BAIpCX,EAAY1X,UAAU,EAG/BmX,kBAAmB/N,IACjB,MAAMtF,EAAY,CAElBA,GAAkB,IAalB,OAZI5R,MAAMC,QAAQiX,EAAMvI,mBACtBuI,EAAMvI,iBAAiBkF,SAAQpF,GAAUmD,EAAUnD,GAAU,KAE3D9K,EAAAA,GAAMoF,QAAQmO,EAAMxI,kBACtBkD,EAAUsF,EAAMxI,gBAAkB,IAEhC1O,MAAMC,QAAQiqB,UAAUtY,YAC1BsY,UAAUtY,UAAUiC,SAAQpF,GAAUmD,EAAUnD,GAAU,KAExD9K,EAAAA,GAAMoF,QAAQmO,EAAMzI,UACtBmD,EAAUsF,EAAMzI,QAAU,GAErBnM,OAAO6nB,QAAQvY,GACnB1I,MAAK,CAACiC,EAAEC,IACHD,EAAE,GAAKC,EAAE,IACH,EAEDD,EAAE,GAAKC,EAAE,GACT,EAEF,IAERmL,KAAI,EAAE6T,EAAGX,KAAOA,GAAK,EAAIW,EAAK,GAAEA,OAAOX,MACvC/R,KAAK,IAAI,GAGhB2S,UAAW,CACTpZ,MAAAA,CAAOiG,EAAOjG,GACZ,IAAK,IAAInS,KAAOmS,EAAQ,CACtB,IAAIvR,EAAQuR,EAAOnS,GACnB,OAAQA,GACN,IAAK,eACHoY,EAAM9I,aAAe1O,EACrB,MACF,IAAK,aACkB,oBAAVA,EACTwX,EAAM/I,WAAazO,IAEK,kBAAVA,IACdwX,EAAM/I,WAAazO,GAErB,MACF,IAAK,eAEkB,kBAAVA,GAAsBA,EAAMP,SAAS,KAC9C+X,EAAMpY,GAAOY,EAAMsT,MAAM,KAGzBkE,EAAMpY,GAAOY,EAEf,MACF,IAAK,mBACHwX,EAAMvH,iBAAmB,CAAC,YAAa,mBAAmBxQ,SAASO,GAASA,EAAQ,KACpF,MACF,IAAK,eACH,OAAOA,GACL,IAAK,MACHwX,EAAMxL,aAAe,EACrB,MACF,IAAK,OACHwL,EAAMxL,cAAgB,EACtB,MACF,QACEwL,EAAMxL,aAAe,EAEzB,MACF,QACEwL,EAAMpY,GAAOY,EAEnB,CACF,EACAkS,SAAAA,CAAUsF,GAAO,WAAC3L,EAAU,aAAEob,IAC5BzP,EAAMyP,aAAeA,GAAgB,KACrCzP,EAAM3L,WAAaA,GAAc,IACnC,EACA+e,iBAAAA,CAAkBpT,GAAO,KAAExW,EAAI,IAAE5B,EAAG,MAAEY,IACpCgB,EAAQ,GAAEA,mBACW,qBAAVhB,EACT0R,EAAAA,GAAImZ,OAAOrT,EAAMxW,GAAO5B,GAGxBsS,EAAAA,GAAAA,IAAQ8F,EAAMxW,GAAO5B,EAAKY,EAE9B,EACA8qB,gBAAAA,CAAiBtT,GAAO,IAAEpY,EAAG,MAAEY,IACR,qBAAVA,EACT0R,EAAAA,GAAImZ,OAAOrT,EAAMtH,eAAgB9Q,GAGjCsS,EAAAA,GAAAA,IAAQ8F,EAAMtH,eAAgB9Q,EAAKY,EAEvC,EACA+qB,WAAAA,CAAYvT,EAAOrW,GACO,oBAAbA,EACTqW,EAAM3C,OAAOzN,KAAKjG,GAGlBqW,EAAM3C,OAAS,EAEnB,EACAmW,WAAAA,CAAYxT,EAAOxX,GACjBwX,EAAMuP,SAAW/mB,CACnB,EACAirB,iBAAAA,CAAkBzT,EAAOxX,GACvBwX,EAAM0T,eAAiBlrB,CACzB,EACAmrB,eAAAA,CAAgB3T,GAAO,KAAExW,EAAI,IAAEf,IAC7B,MAAMmrB,EAAM5T,EAAM1S,qBAAqB9D,GAAM+D,QAAQ9E,IAExC,IAATmrB,GACF5T,EAAM1S,qBAAqB9D,GAAMoG,KAAKnH,EAE1C,EACAuX,KAAAA,CAAMA,EAAO6T,GACX7T,EAAM1S,qBAAuBumB,CAC/B,EACAC,gBAAAA,CAAiB9T,GAAO,KAAExW,EAAI,IAAEf,IAC9B,MAAMmrB,EAAM5T,EAAM1S,qBAAqB9D,GAAM+D,QAAQ9E,GACjDmrB,GAAO,GACT1Z,EAAAA,GAAImZ,OAAOrT,EAAM1S,qBAAqB9D,GAAOoqB,EAEjD,EACAG,aAAAA,CAAc/T,GAAO,IAAEhC,EAAG,KAAE7V,EAAI,QAAEsiB,IAChC,IAAIhf,EAAOuU,EAAM+P,SAAS/R,GAC1B9D,EAAAA,GAAAA,IAAQzO,EAAM,OAAQtD,GAAQsD,EAAKtD,MACnC+R,EAAAA,GAAAA,IAAQzO,EAAM,UAAWgf,GAAWhf,EAAKgf,QAC3C,EACAhY,OAAAA,CAAQuN,GAAO,IAAEhC,EAAG,QAAEvL,IACpByH,EAAAA,GAAAA,IAAQ8F,EAAM+P,SAAU/R,EAAKvL,GACzBA,EAAQtK,OACV6X,EAAMhC,IAAMA,EAEhB,EACAgW,MAAAA,CAAOhU,GAAO,IAAEhC,EAAG,KAAEvS,IACnByO,EAAAA,GAAAA,IAAQ8F,EAAM+P,SAAU/R,EAAKwQ,GAAYxO,EAAOvU,GAClD,EACAwoB,KAAAA,CAAMjU,EAAOhC,GACX9D,EAAAA,GAAImZ,OAAOrT,EAAM+P,SAAU/R,EAC7B,EACAkW,YAAAA,CAAalU,EAAOmU,GAClB/oB,OAAOsC,OAAOsS,EAAOqP,KACrBjkB,OAAOsC,OAAOsS,EAAO+O,KAChB/O,EAAMvI,iBAAiBxP,SAAS+X,EAAMzI,UACzCyI,EAAMzI,OAASwC,EAAOxC,QAEpB4c,IACFnU,EAAM/I,WAAa8C,EAAO9C,WAC1B+I,EAAM9I,aAAe6C,EAAO7C,aAC5B8I,EAAM+P,SAAW,CAAC,EAEtB,EACAqE,SAAAA,CAAUpU,GACR5U,OAAOsC,OAAOsS,EAAO+O,IACvB,EACAsF,QAAAA,CAASrU,GAAO,IAAEhC,EAAG,MAAEpV,EAAK,YAAEuB,EAAW,KAAEmE,IAUzC,GATKA,IACHA,EAAO0R,EAAM+P,SAAS/R,IAAQ,MAEhCgC,EAAMhC,IAAMA,GAAO,KACnBgC,EAAMvU,KAAO6C,aAAgB1B,EAAAA,EAAO0B,EAAO,KAC3C0R,EAAMgP,MAAQ,KACdhP,EAAM7V,YAAcA,EAGhBvB,EACFoX,EAAMpX,MAAQA,OAId,GADAoX,EAAMpX,MAAQgE,EAAAA,EAAKuH,gBAAgB6L,EAAMvU,KAAMuU,EAAM9I,cACjD8I,EAAMvU,KAAM,CACd,IAAItB,EAAc6V,EAAMvU,KAAK0W,YAAY,eACrC1V,EAAAA,GAAMoF,QAAQ1H,KAChB6V,EAAM7V,YAAcA,EAExB,CAGF,GAAI6V,EAAMvU,KAAM,CACd,IAAI2B,EAAS4S,EAAMvU,KAAK8C,SAAWyR,EAAMvU,KAAK6F,WAAa0O,EAAMvU,KAC7DiP,EAAY5R,MAAMC,QAAQqE,EAAOsN,WAAatN,EAAOsN,UAAU1G,QAAU,GACzEvH,EAAAA,GAAMqK,SAAS1J,EAAO2O,WACxBrB,EAAU4Z,QAAQlnB,EAAO2O,UAE3BiE,EAAM0P,cAAgBhV,EAAU3G,QAAOwgB,GAAQ9nB,EAAAA,GAAMqK,SAASyd,IAA8B,kBAAdA,EAAKnS,MACrF,CACF,EACAoS,OAAAA,CAAQxU,GAAO,IAAEhC,EAAG,MAAED,IACdA,aAAiBlB,QACrBkB,EAAQ,IAAIlB,MAAMkB,IAEpB7D,EAAAA,GAAAA,IAAQ8F,EAAM+P,SAAU/R,EAAKD,EAC/B,EACAiR,KAAAA,CAAMhP,EAAOgP,GACXhP,EAAMgP,MAAQA,CAChB,EACAM,KAAAA,CAAMtP,EAAOhC,GACXgC,EAAMsP,MAAM1f,KAAKoO,EACnB,EACAyW,OAAAA,CAAQzU,EAAOhC,GACb,IAAIsF,EAAItD,EAAMsP,MAAM/hB,QAAQyQ,IACjB,IAAPsF,GACFtD,EAAMsP,MAAMoF,OAAOpR,EAAG,EAE1B,EACAqR,eAAAA,CAAgB3U,EAAO4U,GACrB5U,EAAMsP,MAAMoF,OAAO,EAAGE,EACxB,EACAC,qBAAAA,CAAsB7U,EAAOrR,GACvB7F,MAAMC,QAAQ4F,KAChBqR,EAAMwP,WAAa7gB,EAEvB,EACAmmB,eAAAA,CAAgB9U,EAAO5M,GACrB4M,EAAMsJ,aAAelW,CACvB,EACA2hB,qBAAAA,CAAsB/U,EAAOgV,EAAe,IACtChV,EAAMqH,gBAAgB2N,GACxB9a,EAAAA,GAAImZ,OAAOrT,EAAMqH,gBAAiB2N,GAGlC9a,EAAAA,GAAAA,IAAQ8F,EAAMqH,gBAAiB2N,GAAc,EAEjD,EACAC,WAAAA,CAAYjV,GAAO,KAAEvU,EAAI,KAAE6C,EAAI,KAAEnG,IAC/B,IAAKsE,EAAAA,GAAMqK,SAASrL,KAAU3C,MAAMC,QAAQ0C,EAAKge,UAC/C,OAEF,IAAI0F,EAAW1jB,EAAKge,SAASpK,KAAI6V,GAAW1G,GAAYxO,EAAOkV,KAE3D/sB,IACF6X,EAAMmP,SAAWA,GAInB,IAAIgG,EAAY1oB,EAAAA,GAAMqkB,iBAAiBrlB,EAAKwV,MAAOmU,GAAAA,IAC/ChM,EAAQ,CAAC,EACb,IAAK,IAAIiM,KAAYF,EAAW,CAC9B,IAAInf,EAAuB,aAAjBqf,EAASrf,IAAqB,OAASqf,EAASrf,IAC1DoT,EAAMpT,GAAOqf,CACf,CAEIltB,IACF6X,EAAMqJ,mBAAqBD,GAGzB9a,aAAgB1B,EAAAA,GAElB0B,EAAKgnB,WAAWnG,EAAU/F,EAAMnW,KAAMmW,EAAMpW,KAEhD,EACAuiB,iBAAAA,CAAkBvV,GAAO,KAAEvU,EAAI,KAAE6C,EAAI,KAAEnG,IACrC,IAAKsE,EAAAA,GAAMqK,SAASrL,KAAU3C,MAAMC,QAAQ0C,EAAK+pB,aAC/C,OAGF,IAAIA,EAAc/pB,EAAK+pB,YAAYnW,KAAIsC,GAAc6M,GAAYxO,EAAO2B,KACpE8T,EAAWhpB,EAAAA,GAAM8V,eAAe9W,EAAKwV,MAAO,QAC5C9Y,IACF6X,EAAM4P,oBAAsB6F,EAC5BzV,EAAM2P,eAAiB3P,EAAM2P,eAAehH,OAAO6M,IAEjDlnB,aAAgB1B,EAAAA,GAClB0B,EAAKgnB,WAAWE,EAAaC,EAEjC,EACAC,aAAAA,CAAc1V,GACZA,EAAMmP,SAAW,GACjBnP,EAAMqJ,mBAAqB,CAAC,CAC9B,EACAhG,OAAAA,CAAQrD,EAAOqD,GACbrD,EAAMqD,QAAUA,CAClB,EACAsS,eAAAA,CAAgB3V,EAAOjC,GACrBoI,QAAQpI,MAAMA,GACdiC,EAAM1C,YAAcS,CACtB,EACA6X,aAAAA,CAAc5V,EAAOoP,GACf3iB,EAAAA,GAAMqK,SAASsY,IAAe3iB,EAAAA,GAAMqK,SAASsY,EAAW9d,YAC1D0O,EAAMoP,WAAahkB,OAAO6nB,QAAQ7D,EAAW9d,YAC1C+N,KAAI,EAAEzX,EAAKuY,KAAY,IAAI6L,GAAUpkB,EAAKuY,KAG7CH,EAAMoP,WAAa,EAEvB,GAEFyG,QAAS,CACP,kBAAMC,CAAalI,GAAI,OAACrW,EAAM,aAAEwe,IAG9B,GAFAnI,EAAG7f,OAAO,SAAU,CAACwJ,WAEjBqW,EAAG5N,MAAM1I,aAAeye,EAC1B,IACElW,OAAOmW,aAAaC,QAAQ,SAAU1e,EACxC,CAAE,MAAOwG,GACPoI,QAAQpI,MAAMA,EAChB,CAIF,IAAI1J,GAAa6I,EAAAA,GAAAA,IAAQ0Q,EAAG5N,MAAMvI,iBAAkBF,EAAQqW,EAAG5N,MAAMxI,gBAEjE0e,EAAoBtI,EAAG5N,MAAM0P,cAAcrQ,KAAI6T,GAAKA,EAAE9Q,OACtD+T,EAAuBvI,EAAG5N,MAAM0P,cAAcvjB,OAAS,EAAIyhB,EAAG5N,MAAM0P,cAAc,GAAGtN,KAAO/N,EAC5Fob,GAAevS,EAAAA,GAAAA,IAAQgZ,EAAmB3e,EAAQ4e,GAEtDvI,EAAG7f,OAAO,YAAa,CAAC0hB,eAAcpb,eACtCuZ,EAAG7f,OAAO,oBAAqB,CAAEvE,KAAM,QAAS5B,IAAK,WAAYY,MAAO+O,GAC1E,EACA,mBAAM6e,CAAcxI,EAAIplB,GACjBiE,EAAAA,GAAMoF,QAAQrJ,KACjBA,EAAQ,MAEVolB,EAAG7f,OAAO,oBAAqBvF,EACjC,EACA,aAAM6tB,CAAQzI,EAAIplB,GACXiE,EAAAA,GAAMoF,QAAQrJ,KACjBA,EAAQ,MAGVolB,EAAG7f,OAAO,cAAevF,GAGzB,IAAIqQ,EAAa+U,EAAG5N,MAAMnH,WACtBjR,EAAMiR,EAAWjR,IACjBY,IAC2B,WAAzBqQ,EAAWC,UACbtQ,EAAS,UAASA,IAEqB,oBAAzBqQ,EAAWC,YACzBtQ,EAAQqQ,EAAWC,UAAUtQ,KAG5BiE,EAAAA,GAAMoF,QAAQrJ,KACjBA,OAAQkT,GAEc,UAApB7C,EAAWrP,KACbokB,EAAG7f,OAAO,oBAAqB,CAACvE,KAAM,UAAW5B,MAAKY,UAE3B,WAApBqQ,EAAWrP,MAClBokB,EAAG7f,OAAO,mBAAoB,CAACnG,MAAKY,SAExC,EACA,oBAAM8tB,CAAe1I,EAAI1f,GACvB,IAAIqoB,EAAO3I,EAAG5N,MAAMsP,MAAMtb,MAAM,EAAG9F,GACnC,GAAIqoB,EAAKpqB,OAAS,EAAG,CACnB,IAAIqqB,EAAW,GACf,IAAK,IAAIxY,KAAOuY,EACdC,EAAS5mB,KAAKge,EAAGjE,SAAS,OAAQ,CAAE3L,SAGtC,OADA4P,EAAG7f,OAAO,kBAAmBG,SAChB2M,QAAQC,IAAI0b,EAC3B,CACF,EACA,iBAAMC,CAAY7I,GAChB,KAAMA,EAAG5N,MAAMvU,gBAAgBmB,EAAAA,GAE7B,YADAghB,EAAG7f,OAAO,UAAW,IAIvB,IAAIsV,EAAU,GACV/U,EAAOsf,EAAG5N,MAAMvU,KACpB,MAAO6C,EAAM,CACX,IAAI2X,EAAa3X,EAAKiU,eAAe,WAAajU,EAAKiU,eAAe,QACtE,IAAK0D,EACH,MAEF,IAAIjI,EAAMvR,EAAAA,GAAMqU,WAAWmF,EAAWpc,KAAMyE,EAAKzB,wBAC3C+gB,EAAGjE,SAAS,OAAQ,CAAE3L,MAAKyM,SAAS,IAC1C,IAAIiM,EAAa9I,EAAGhO,QAAQ/P,QAAQmO,GAAK,GACzC,GAAI0Y,aAAsB7Z,MAExB,YADA+Q,EAAG7f,OAAO,UAAW2oB,GAGvB,GAAIA,IAAepoB,EACjB,MAEF+U,EAAQzT,KAAK8mB,GACbpoB,EAAOooB,CACT,CACA9I,EAAG7f,OAAO,UAAWsV,EACvB,EACA,UAAM7U,CAAKof,EAAI+I,GACb,IACIhX,GADA,IAAE3B,EAAG,YAAEwM,EAAW,KAAEriB,EAAI,QAAEsiB,EAAO,SAAEmM,EAAQ,MAAEC,GAAUF,EAEvDnM,GACF7K,EAAO3B,EAAI3H,WAAW,KAAO2H,EAAM,IAAMA,EACzCA,EAAM4P,EAAGhO,QAAQ4S,gBAAgBxU,KAGjCA,EAAMvR,EAAAA,GAAMqU,WAAW9C,EAAK4P,EAAG5N,MAAMhC,KACrC2B,EAAOiO,EAAGhO,QAAQxJ,cAAc4H,IAI7B4Y,GAAqB,MAATjX,IAAgBiO,EAAG5N,MAAM/I,YAAe2W,EAAGhO,QAAQ/P,QAAQ+d,EAAG5N,MAAM/I,mBAC7E2W,EAAGjE,SAAS,OAAQ,CAAE3L,IAAK4P,EAAG5N,MAAM/I,WAAYwT,SAAS,EAAMmM,UAAU,IAG7EC,GACFjJ,EAAG7f,OAAO,QAASiQ,GAGrB,IAAIvL,EAAU,IAAIe,GAAQrL,EAAMsiB,GAC5Bhf,EAAOmiB,EAAG5N,MAAM+P,SAAS/R,GAC7B,GAAIvS,aAAgB+H,GAClBoa,EAAG7f,OAAO,gBAAiB,CAAEiQ,MAAK7V,OAAMsiB,gBAD1C,CAIK,IAAKhf,GAASA,aAAgBmB,EAAAA,GAAQnB,EAAKqrB,0BAA4B,CAC1ElJ,EAAG7f,OAAO,UAAW,CAAEiQ,MAAKvL,YAC5B,IACE,IAAIuX,QAAiB2D,GAAYC,EAAI5P,GACrC,IAAKvR,EAAAA,GAAMqK,SAASkT,EAASve,MAC3B,MAAM,IAAI2e,EAAAA,GAAazP,EAAAA,GAAKlB,EAAE,6BAGhC,GADAhO,EAAO,IAAImB,EAAAA,EAAKod,EAASve,KAAMuS,EAAK2B,GAChCxX,EAAM,CAER,IAAI4uB,EAAatrB,EAAKurB,cAAcpJ,EAAG5N,MAAMyP,cAC7C,GAAIsH,EAEF,YADAjI,EAAOjT,QAAQ+R,EAAGhO,QAAQxJ,cAAc2gB,EAAWltB,MAGvD,CAIA,GAFA+jB,EAAG7f,OAAO,SAAU,CAAEiQ,MAAKvS,UAEtBmiB,EAAGhO,QAAQuQ,KAAM,CACpB,IAAIA,EAAO1kB,EAAK8W,eAAe,QAC3B4N,GACFvC,EAAG7f,OAAO,SAAU,CAAEkJ,WAAYxK,EAAAA,GAAMqU,WAAWqP,EAAKtmB,KAAMmU,IAElE,CAEA,IAAIiZ,EAAkBxrB,EAAKmlB,mBAAmB,eAC1C9nB,MAAMC,QAAQ0C,EAAK+jB,aAAe/jB,EAAK+jB,WAAWrjB,OAAS,EAC7DyhB,EAAG7f,OAAO,wBAAyBtC,EAAK+jB,YAEjCyH,SACDrJ,EAAGjE,SAAS,wBAAyBsN,EAE/C,CAAE,MAAOlZ,GACP,GAAI6P,EAAG5N,MAAMnH,YAAc6V,GAAsB3Q,GAG/C,OAFA6P,EAAG7f,OAAO,QAASiQ,QACnB4P,EAAG7f,OAAO,eAAe,IAAM6f,EAAGjE,SAAS,OAAQgN,KAGrDxQ,QAAQpI,MAAMA,GACd6P,EAAG7f,OAAO,UAAW,CAAEiQ,MAAKD,SAC9B,CACF,CAEA,GAAItL,EAAQgY,SAAWhf,aAAgBmB,EAAAA,EAAM,CAE3C,GAAInB,EAAKkmB,wBAAyB,CAChC,IAAIgF,EAAO,CAAEroB,KAAM7C,EAAMtD,KAAMsK,EAAQtK,MACvC,UACQylB,EAAGjE,SAAS,yBAA0BgN,EAC9C,CAAE,MAAO5Y,GACH6P,EAAG5N,MAAMnH,YAAc6V,GAAsB3Q,GAC/C6P,EAAG7f,OAAO,eAAe,IAAM6f,EAAGjE,SAAS,yBAA0BgN,KAGrE/I,EAAG7f,OAAO,kBAAmB,CAC3BqQ,QAASzD,EAAAA,GAAKlB,EAAE,mCAChBsE,SAGN,CACF,CAEA,GAAItS,EAAK+d,kBAAmB,CAC1B,IAAImN,EAAO,CAAEroB,KAAM7C,EAAMtD,KAAMsK,EAAQtK,MACvC,UACQylB,EAAGjE,SAAS,eAAgBgN,EACpC,CAAE,MAAO5Y,GACH6P,EAAG5N,MAAMnH,YAAc6V,GAAsB3Q,GAC/C6P,EAAG7f,OAAO,eAAe,IAAM6f,EAAGjE,SAAS,eAAgBgN,KAG3D/I,EAAG7f,OAAO,kBAAmB,CAC3BqQ,QAASzD,EAAAA,GAAKlB,EAAE,6BAChBsE,SAGN,CACF,CACF,CAEItL,EAAQtK,MACVylB,EAAG7f,OAAO,WAAY,CAAEiQ,OAxC1B,CA0CF,EACA,kBAAMkZ,CAAatJ,GAAI,KAAExa,EAAI,KAAE9E,EAAI,KAAEnG,EAAI,QAAEmH,IACzC,IAAI0lB,EAAe1mB,aAAgB1B,EAAAA,EAAO0B,EAAKzF,GAAK,GACpD+kB,EAAG7f,OAAO,wBAAyBinB,GAEnC,IACE,IAAIroB,EAAUihB,EAAG5N,MAAMhC,IACnB1P,aAAgB1B,EAAAA,IAClBwG,EAAO9E,EAAKkb,kBACZ7c,EAAU2B,EAAKzB,kBAGZJ,EAAAA,GAAMqK,SAASxH,KAClBA,EAAU,CAAC,GAEgB,kBAAlBA,EAAQ6nB,QACjB7nB,EAAQ6nB,MAAQvJ,EAAG5N,MAAM1H,cAG3BlF,EAAO3G,EAAAA,GAAM8c,iBAAiBnW,EAAM9D,GAEpC,IAAI0a,QAAiB2D,GAAYC,EAAIxa,GACrC,GAAK3G,EAAAA,GAAMqK,SAASkT,EAASve,OAAU3C,MAAMC,QAAQihB,EAASve,KAAKge,UAoDjE,OAhDAO,EAASve,KAAKge,SAAWO,EAASve,KAAKge,SAASpK,KAAIhO,IAClD,IACE,IAAK5E,EAAAA,GAAMqK,SAASzF,IAAuB,YAAdA,EAAK7H,KAChC,OAAO,KAET,IACIwU,EADAoZ,EAAW3qB,EAAAA,GAAM8V,eAAelR,EAAK4P,MAAO,QAEhD,GAAY,OAARmW,QAAQ,IAARA,GAAAA,EAAUvtB,KACZmU,EAAMvR,EAAAA,GAAMqU,WAAWsW,EAASvtB,KAAM8C,OAEnC,IAAuB,qBAAZ0E,EAAKxI,GAgBnB,OAAO,KAhBgC,KAAAwuB,EACvC,IAAIC,EAAoC,QAAlBD,EAAGzJ,EAAGhO,QAAQuQ,YAAI,IAAAkH,OAAA,EAAfA,EAAiB1F,wBAC1C,GAAIhlB,EACFqR,EAAMvR,EAAAA,GAAMqU,WAAY,SAAQzP,EAAKxI,KAAM8D,QAExC,GAAI2qB,EACPtZ,EAAMvR,EAAAA,GAAMqU,WAAY,GAAEkU,WAAsB3jB,EAAKxI,KAAMyuB,EAAmBztB,UAE3E,KAAI+jB,EAAG5N,MAAM/I,WAIhB,OAAO,KAHP+G,EAAMvR,EAAAA,GAAMqU,WAAY,eAAckU,WAAsB3jB,EAAKxI,KAAM+kB,EAAG5N,MAAM/I,WAIlF,CACF,CAGA,CACA,IAAIxL,EAAOmiB,EAAGhO,QAAQ/P,QAAQmO,GAC9B,OAAIvS,IAIFA,EAAO,IAAImB,EAAAA,EAAKyE,EAAM2M,EAAK4P,EAAGhO,QAAQxJ,cAAc4H,IACpDvS,EAAK8rB,4BACL3J,EAAG7f,OAAO,SAAU,CAAEtC,OAAMuS,QACrBvS,EAEX,CAAE,MAAOsS,GAEP,OADAoI,QAAQpI,MAAMA,GACP,IACT,KACChK,QAAO1C,GAAQA,aAAgBzE,EAAAA,IAC9BzE,GACFylB,EAAG7f,OAAO,kBAAmBqF,GAE/Bwa,EAAG7f,OAAO,cAAe,CAAEtC,KAAMue,EAASve,KAAM6C,OAAMnG,SACtDylB,EAAG7f,OAAO,wBAAyBinB,GAC5BhL,EAnDP,MAAM,IAAII,EAAAA,GAAazP,EAAAA,GAAKlB,EAAE,2BAqDlC,CAAE,MAAOsE,GAEP,MADA6P,EAAG7f,OAAO,wBAAyBinB,GAC7BjX,CACR,CACF,EACA,4BAAMyZ,CAAuB5J,GAAI,KAAEtf,EAAI,KAAEnG,IACvC,IAAIiL,EACJ,GAAI9E,EAAM,CAER,GAAIsf,EAAG5N,MAAM2P,eAAexjB,OAAS,EAEnC,OAEFiH,EAAO9E,EAAKiU,eAAe,OAC7B,MAGEjU,EAAOsf,EAAG5N,MAAMvU,KAChB2H,EAAOwa,EAAG5N,MAAM4P,oBAElB,IAAKxc,EACH,OAEF,IAAI4W,QAAiB2D,GAAYC,EAAIxa,GACrC,IAAK3G,EAAAA,GAAMqK,SAASkT,EAASve,QAAU3C,MAAMC,QAAQihB,EAASve,KAAK+pB,aACjE,MAAM,IAAIpL,EAAAA,GAAazP,EAAAA,GAAKlB,EAAE,kCAG9BuQ,EAASve,KAAK+pB,YAAcxL,EAASve,KAAK+pB,YAAYnW,KAAIsC,IACxD,IACI3D,EADAoZ,EAAW3qB,EAAAA,GAAM8V,eAAeZ,EAAWV,MAAO,QAGpDjD,EADU,OAARoZ,QAAQ,IAARA,GAAAA,EAAUvtB,KACN4C,EAAAA,GAAMqU,WAAWsW,EAASvtB,KAAM+jB,EAAG5N,MAAMhC,KAAO1P,EAAKzB,kBAGrDJ,EAAAA,GAAMqU,WAAY,eAAca,EAAW9Y,KAAM+kB,EAAG5N,MAAM/I,YAAc3I,EAAKzB,kBAErF,IAAIpB,EAAOmiB,EAAGhO,QAAQ/P,QAAQmO,GAC9B,OAAIvS,IAIFA,EAAO,IAAImB,EAAAA,EAAK+U,EAAY3D,EAAK4P,EAAGhO,QAAQxJ,cAAc4H,IAC1DvS,EAAK8rB,4BACL3J,EAAG7f,OAAO,SAAU,CAAEtC,OAAMuS,QACrBvS,EACT,IAEFmiB,EAAG7f,OAAO,oBAAqB,CAAEtC,KAAMue,EAASve,KAAM6C,OAAMnG,QAEhE,EACA,2BAAMsvB,CAAsB7J,EAAIxa,GAC9B,IAAI4W,QAAiB2D,GAAYC,EAAIxa,GACjC3G,EAAAA,GAAMqK,SAASkT,EAASve,OAAS3C,MAAMC,QAAQihB,EAASve,KAAK+jB,aAC/D5B,EAAG7f,OAAO,wBAAyBic,EAASve,KAAK+jB,WAErD,EACA,oBAAMkI,CAAe9J,GAAI,KAAEtf,EAAI,UAAEqpB,EAAY,OAC3C,IAAIC,EACJ,IACE,IAAIxkB,EAAO9E,EAAKwiB,iBAAiB+G,GAAAA,IAC9BniB,MAAKtC,GAAQ3G,EAAAA,GAAMqrB,YAAY1kB,EAAK5J,KAAMuuB,EAAAA,IAAiB,KAC1DluB,EAAO4C,EAAAA,GAAMqK,SAAS1D,GAAQA,EAAKvJ,KAAO4C,EAAAA,GAAMqU,WAAW,aAAcxS,EAAKzB,kBAC9Emd,QAAiB2D,GAAYC,EAAI/jB,GAErC,GADA+tB,EAAU5N,EAASve,KACfksB,EACF,IACEC,QAAgBD,EAAUK,YAAYJ,EACxC,CAAE,MAAO7Z,GACPoI,QAAQpI,MAAMA,EAChB,CAEJ,CAAE,MAAOA,GACPoI,QAAQ8R,IAAI,kCACd,CACArK,EAAG7f,OAAO,gBAAiB6pB,EAC7B,EACA,iBAAMM,CAAYtK,EAAIxa,GACpB,IACE,IAAI4W,QAAiB2D,GAAYC,EAAIxa,GACrC,OAAO4W,EAASve,IAClB,CAAE,MAAOsS,GACP,OAAO,IACT,CACF,EACA,oBAAMoa,CAAevK,GACnB,IAAIwK,EAAUra,GAAS6P,EAAG7f,OAAO,kBAAmB,CAClDgQ,QACAK,QAASzD,EAAAA,GAAKlB,EAAE,uBAGlB,IAAK,IAAI9P,KAAYikB,EAAG5N,MAAM3C,OAC5B,IACE,IAAIiE,EAAI3X,IACJ2X,aAAazG,SACfyG,EAAE+W,MAAMD,EAEZ,CAAE,MAAOra,GACPqa,EAAQra,EACV,CAEJ,EACA,cAAMua,CAAS1K,EAAI5P,GACjB,GAA8B,mBAAnB4P,EAAG5N,MAAMgP,MAGpB,IAAI,IAAAuJ,EAAAC,EACF,IAAIjiB,EAAMC,IAAI,gCACdD,EAAIkiB,UAAU,WAAYza,GAC1B,IAAIgM,QAAiBoE,GAAAA,EAAM/F,IAAI9R,EAAIK,YACnCgX,EAAG7f,OAAO,QAASvC,QAAqB,QAAd+sB,EAACvO,EAASve,YAAI,IAAA8sB,GAAM,QAANC,EAAbD,EAAepK,YAAI,IAAAqK,OAAN,EAAbA,EAAqBE,YAClD,CAAE,MAAO3a,GACP6P,EAAG7f,OAAO,QAASgQ,EACrB,CACF,IAGN,CAEA,U,iIC3/BIjX,GAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACO,MAAM,CAAC,GAAK,OAAO,CAACP,EAAG,SAAS,CAACE,YAAY,cAAcK,MAAM,CAAC,MAAQT,EAAI6B,MAAM,QAAU7B,EAAIiX,IAAI,YAAcjX,EAAI4xB,eAAe1xB,EAAG,KAAK,CAAEF,EAAIsO,KAAM,CAACpO,EAAG,MAAM,CAACE,YAAY,YAAYK,MAAM,CAAC,IAAMT,EAAIsO,KAAKxL,KAAK,IAAM9C,EAAIsO,KAAKzM,MAAM,MAAQ7B,EAAIsO,KAAKzM,UAAU7B,EAAIQ,KAAKN,EAAG,OAAO,CAACE,YAAY,SAAS,CAACJ,EAAIM,GAAGN,EAAIO,GAAGP,EAAI6B,WAAW,GAAI7B,EAAIiX,KAAOjX,EAAI6xB,eAAgB3xB,EAAG,IAAI,CAACE,YAAY,QAAQ,CAAEJ,EAAI8xB,cAAe5xB,EAAG,OAAO,CAACE,YAAY,UAAUK,MAAM,CAAC,IAAM,OAAO,KAAO,MAAMkW,YAAY3W,EAAI4W,GAAG,CAAC,CAAC/V,IAAI,UAAUsR,GAAG,WAAW,MAAO,CAACjS,EAAG,WAAW,CAACO,MAAM,CAAC,KAAOT,EAAI8xB,iBAAiB,EAAEhb,OAAM,IAAO,MAAK,EAAM,cAAc9W,EAAIQ,KAAKN,EAAG,iBAAiB,CAAEF,EAAIkf,WAAYhf,EAAG,WAAW,CAACO,MAAM,CAAC,GAAKT,EAAIqP,cAAcrP,EAAIkf,WAAWpc,MAAM,MAAQ9C,EAAI+xB,gBAAgB,QAAU,kBAAkB,KAAO,OAAO,CAAC7xB,EAAG,yBAAyBF,EAAIM,GAAG,KAAKJ,EAAG,OAAO,CAACE,YAAY,qBAAqB,CAACJ,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,yBAAyB,GAAGlC,EAAIQ,KAAMR,EAAI8X,eAAgB5X,EAAG,WAAW,CAACO,MAAM,CAAC,GAAKT,EAAIqP,cAAcrP,EAAI8X,eAAehV,MAAM,MAAQ9C,EAAIgyB,oBAAoB,QAAU,kBAAkB,KAAO,OAAO,CAAC9xB,EAAG,yBAAyBF,EAAIM,GAAG,KAAKJ,EAAG,OAAO,CAACE,YAAY,qBAAqB,CAACJ,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,6BAA6B,GAAGlC,EAAIQ,KAAKN,EAAG,WAAW,CAACoB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,qBAAqBkG,UAAU,CAAC,SAAU,KAAQjH,MAAM,CAAC,QAAU,kBAAkB,KAAO,KAAK,MAAQT,EAAIkC,GAAG,WAAWf,GAAG,CAAC,MAAQ,SAAS6K,GAAQ,OAAOhM,EAAI4G,MAAM,gBAAgB,IAAI,CAAC1G,EAAG,eAAeF,EAAIM,GAAG,KAAKJ,EAAG,OAAO,CAACE,YAAY,qBAAqB,CAACJ,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,eAAe,GAAIlC,EAAIiyB,kBAAmB/xB,EAAG,WAAW,CAACO,MAAM,CAAC,QAAU,kBAAkB,KAAO,KAAK,GAAKT,EAAIiyB,kBAAkB,MAAQjyB,EAAIkC,GAAG,gBAAgB,QAAUlC,EAAI6xB,iBAAiB,CAAC3xB,EAAG,iBAAiBF,EAAIM,GAAG,KAAKJ,EAAG,OAAO,CAACE,YAAY,qBAAqB,CAACJ,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,qBAAqB,GAAGlC,EAAIQ,KAAMR,EAAI8R,WAAY5R,EAAG,WAAW,CAACO,MAAM,CAAC,QAAU,kBAAkB,KAAO,KAAK,MAAQT,EAAIkC,GAAG,gCAAgCf,GAAG,CAAC,MAAQnB,EAAIkyB,OAAO,CAAElyB,EAAIwoB,SAAU,CAACtoB,EAAG,eAAeF,EAAIM,GAAG,KAAKJ,EAAG,OAAO,CAACE,YAAY,gBAAgB,CAACJ,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,4CAA4C,CAAChC,EAAG,iBAAiBF,EAAIM,GAAG,KAAKJ,EAAG,OAAO,CAACE,YAAY,gBAAgB,CAACJ,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,4CAA4C,GAAGlC,EAAIQ,MAAM,IAAI,GAAGR,EAAIQ,MAAM,IAAI,EACp8E,EACIa,GAAkB,G,YCFlBtB,GAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,iBAAiB,CAAEF,EAAIkb,QAAShb,EAAG,WAAW,CAACO,MAAM,CAAC,KAAO,KAAK,QAAU,kBAAkB,GAAK,eAAe,MAAQT,EAAIkC,GAAG,+BAA+B,CAAChC,EAAG,eAAeF,EAAIM,GAAG,KAAKJ,EAAG,OAAO,CAACE,YAAY,gBAAgB,CAACJ,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,qBAAqB,GAAGlC,EAAIQ,KAAKN,EAAG,WAAW,CAACO,MAAM,CAAC,KAAO,KAAK,QAAU,kBAAkB,GAAK,gBAAgB,MAAQT,EAAIkC,GAAG,6BAA6B,CAAChC,EAAG,gBAAgBF,EAAIM,GAAG,KAAKJ,EAAG,OAAO,CAACE,YAAY,gBAAgB,CAACJ,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,2BAA2B,GAAGhC,EAAG,aAAa,CAACO,MAAM,CAAC,KAAO,KAAK,QAAU,kBAAkB,MAAQ,GAAG,MAAQT,EAAIkC,GAAG,2BAA2ByU,YAAY3W,EAAI4W,GAAG,CAAC,CAAC/V,IAAI,iBAAiBsR,GAAG,WAAW,MAAO,CAACjS,EAAG,eAAeF,EAAIM,GAAG,KAAKJ,EAAG,OAAO,CAACE,YAAY,gBAAgB,CAACJ,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,wBAAyB,CAACiwB,gBAAiBnyB,EAAImyB,sBAAsB,EAAErb,OAAM,MAAS9W,EAAIU,GAAIV,EAAI2T,WAAW,SAASwY,GAAG,OAAOjsB,EAAG,kBAAkB,CAACW,IAAIsrB,EAAE9Q,KAAKjb,YAAY,YAAYe,GAAG,CAAC,MAAQ,SAAS6K,GAAQ,OAAOhM,EAAI+uB,aAAa,CAACve,OAAQ2b,EAAE9Q,KAAM2T,cAAc,GAAM,IAAI,CAAEhvB,EAAIwQ,SAAW2b,EAAE9Q,KAAMnb,EAAG,gBAAgBA,EAAG,gBAAgBA,EAAG,OAAO,CAACE,YAAY,SAAS,CAACJ,EAAIM,GAAG,IAAIN,EAAIO,GAAG4rB,EAAEiG,QAAQ,KAAMjG,EAAEkG,QAAUlG,EAAEkG,SAAWlG,EAAEiG,OAAQ,CAACpyB,EAAIM,GAAG,MAAMN,EAAIO,GAAG4rB,EAAEkG,UAAUryB,EAAIQ,MAAM,IAAIR,EAAIsyB,qBAAyBnG,EAAEoG,IAAOpG,EAAEznB,KAA2J1E,EAAIQ,KAAxJN,EAAG,8BAA8B,CAACE,YAAY,OAAOK,MAAM,CAAC,MAAQ0rB,EAAEoG,GAAKvyB,EAAIkC,GAAG,0BAA4BlC,EAAIkC,GAAG,gCAAyC,EAAE,IAAG,IAAI,GAAIlC,EAAIkb,QAAShb,EAAG,YAAY,CAACO,MAAM,CAAC,OAAS,eAAe,SAAW,QAAQ,UAAY,SAAS,UAAY,eAAe,MAAQT,EAAIkC,GAAG,iBAAiBf,GAAG,CAAC,KAAOnB,EAAIuxB,WAAW,CAAEvxB,EAAI4xB,YAAa,CAAC1xB,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACO,MAAM,CAAC,KAAO,MAAM,CAACT,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,0BAA0BhC,EAAG,QAAQ,CAACF,EAAIM,GAAGN,EAAIO,GAAGP,EAAI4xB,iBAAiB,GAAI5xB,EAAIwyB,YAAatyB,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACO,MAAM,CAAC,KAAO,MAAM,CAACT,EAAIM,GAAGN,EAAIO,GAAGP,EAAIkC,GAAG,oBAAoBhC,EAAG,QAAQ,CAAgB,OAAdF,EAAIioB,MAAgB/nB,EAAG,YAAY,CAACO,MAAM,CAAC,MAAQT,EAAIkC,GAAG,qBAAqB,MAAQ,OAAqB,IAAdlC,EAAIioB,MAAgB,CAACjoB,EAAIM,GAAG,QAAsB,IAAdN,EAAIioB,MAAiB,CAACjoB,EAAIM,GAAG,MAAM,CAACN,EAAIM,GAAG,+BAA+B,IAAI,GAAGN,EAAIQ,KAAKN,EAAG,OAAOF,EAAIQ,KAAKN,EAAG,MAAM,CAACO,MAAM,CAAC,GAAK,UAAU,IAAMT,EAAIkb,QAAQ,MAAQlb,EAAIkC,GAAG,wBAAwB,GAAGlC,EAAIQ,KAAKN,EAAG,YAAY,CAACO,MAAM,CAAC,OAAS,gBAAgB,SAAW,QAAQ,UAAY,SAAS,UAAY,eAAe,MAAQT,EAAIkC,GAAG,wBAAwB,CAAChC,EAAG,MAAM,CAACO,MAAM,CAAC,GAAK,aAAa,IAAMT,EAAIyyB,aAAa,MAAQzyB,EAAIkC,GAAG,oCAAoC,MAAO,KAAShC,EAAG,MAAMA,EAAG,WAAW,CAACE,YAAY,eAAeK,MAAM,CAAC,KAAOT,EAAI0yB,aAAa,CAACxyB,EAAG,kBAAkBF,EAAIM,GAAG,IAAIN,EAAIO,GAAGP,EAAIkC,GAAG,2BAA2B,GAAGhC,EAAG,WAAW,CAACO,MAAM,CAAC,QAAU,OAAO,KAAOT,EAAI2yB,SAAS,CAACzyB,EAAG,mBAAmBF,EAAIM,GAAG,IAAIN,EAAIO,GAAGP,EAAIkC,GAAG,yBAAyB,IAAI,IAAI,EAC97F,EACIb,GAAkB,G,oCCFlBtB,GAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,eAAe,CAACO,MAAM,CAAC,MAAQT,EAAI8kB,MAAM,YAAY9kB,EAAI8B,KAAK,CAAC5B,EAAG,gBAAgB,CAACO,MAAM,CAAC,KAAO,OAAO,CAACP,EAAG,eAAe,CAACiL,IAAI,QAAQ1K,MAAM,CAAC,GAAKT,EAAI8B,GAAG,MAAQ9B,EAAIiX,IAAI,SAAW,MAAM/W,EAAG,uBAAuB,CAACA,EAAG,aAAa,CAACO,MAAM,CAAC,SAAWT,EAAIiX,IAAI,QAAU,aAAcjX,EAAI4yB,KAAM1yB,EAAG,WAAW,CAACO,MAAM,CAAC,KAAOT,EAAIiX,IAAI,OAAS,SAAS,QAAU,UAAU,MAAQjX,EAAIkC,GAAG,UAAU,CAAChC,EAAG,iCAAiC,GAAGF,EAAIQ,MAAM,IAAI,IAAI,EACxgB,EACIa,GAAkB,G,+CCgBtB,IACAE,KAAA,QACA+B,WAAA,CACAuvB,WAAA,KACAC,WAAA,KACAC,wBAAA,OACAC,YAAA,KACAC,kBAAA,KACAnvB,WAAAA,IAAA,iCAEAM,MAAA,CACAtC,GAAA,CACAW,KAAA8B,OACAD,UAAA,GAEA2S,IAAA,CACAxU,KAAA8B,OACAD,UAAA,GAEAwgB,MAAA,CACAriB,KAAA8B,OACAD,UAAA,GAEAsuB,KAAA,CACAnwB,KAAAgC,QACAD,SAAA,KC3CkP,MCQ9O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCoDhC,MAAA0uB,GAAA,8DAEA,QACA3xB,KAAA,SACA+B,WAAA,CACA6vB,UAAA,KACAC,cAAA,KACAC,WAAA,OACA5vB,WAAA,OACA6vB,cAAA,OACAC,yBAAA,OACAC,UAAA,OACAC,UAAA,OACAC,WAAA,OACAC,aAAA,OACAC,SAAA,KACAC,IAAAA,IAEAzvB,MAAA,CACAvC,MAAA,CACAY,KAAA8B,OACAD,UAAA,GAEA4W,QAAA,CACAzY,KAAA8B,OACAC,QAAA,MAEAotB,YAAA,CACAnvB,KAAA8B,OACAC,QAAA,OAGAG,SAAA,KACAC,EAAAA,EAAAA,IAAA,2HACAC,EAAAA,EAAAA,IAAA,uBACAstB,eAAAA,GACA,IAAA3E,EAAA,KAAA7Z,UAAAhF,MAAAwd,GAAAA,EAAA9Q,OAAA,KAAA7K,SACA,OAAAgd,EACAA,EAAA4E,OAGA,GAEA,EACAI,WAAAA,GACA,SAAAphB,UAAA,uBAAA8J,QACA,SAEA,GAAAxV,EAAAA,GAAA0B,KAAA,KAAAmI,wBAAA,EAEA,SAEA,GAAAxN,MAAAC,QAAA,KAAA+O,cAEA,SAEA,IAAAvB,EAAAC,IAAA,KAAAyL,SACA4Y,EAAAtkB,EAAAukB,WAAAvuB,cACA,oBAAAsuB,IAAAA,EAAAxkB,WAAA,iBAAAwkB,CAKA,EACAzc,OAAAA,GACA,YAAAnV,GAAA,wBAAAL,MAAA,KAAAA,MAAAoV,IAAA,KAAAwb,cACA,EACAC,UAAAA,GACA,IAAAjqB,EAAAqI,mBAAA,KAAAuG,SACA,+CAAA5O,GACA,EACAkqB,MAAAA,GACA,IAAA9wB,EAAAiP,mBAAA,KAAAjP,OACA4G,EAAAqI,mBAAA,KAAAuG,SACA,yBAAAxV,UAAA4G,GACA,EACA6pB,mBAAAA,GACA,YAAA9H,kBAAA0I,GACA,EACAvf,SAAAA,GACA,IAAAA,EAAA,GAGA,QAAA0H,KAAA,KAAA3K,iBACAiD,EAAA9K,KAAA,CACAwS,OACA+W,OAAA,KAAAlwB,GAAA,aAAAmZ,YACAgX,OAAA,KAAAnwB,GAAA,aAAAmZ,YACAkX,IAAA,IAKA,QAAA/E,KAAA,KAAA7E,cAAA,CACA,IAAAjjB,EAAAA,GAAAqK,SAAAyd,KAAAA,EAAAnS,MAAA,KAAA3K,iBAAAxP,SAAAssB,EAAAnS,MACA,SAEA,IAAA2Y,EAAA,CACA3Y,KAAAmS,EAAAnS,MAEA2Y,EAAA5B,OAAA5E,EAAAjsB,MAAAisB,EAAAyG,WAAAzG,EAAAnS,KACA2Y,EAAA3B,OAAA7E,EAAAyG,WAAAzG,EAAAjsB,MAAAisB,EAAAnS,KACA2Y,EAAAtvB,MAAA,EACAiP,EAAA9K,KAAAmrB,EACA,CAEA,QAAAxJ,kBAAA0I,IAAA,CAEA,MAAAgB,GAAAze,EAAAA,GAAAA,IAAA,KAAA/E,kBACAyjB,GAAA1e,EAAAA,GAAAA,IAAA,KAAAkT,cAAArQ,KAAA6T,GAAAA,EAAA9Q,QACA,QAAA8Q,KAAAxY,EACAwY,EAAAoG,KACApG,EAAAoG,GAAA9tB,SAAA0R,EAAAA,GAAAA,IAAA+d,EAAA/H,EAAA9Q,KAAA,QAEA8Q,EAAAznB,OACAynB,EAAAznB,KAAAD,SAAA0R,EAAAA,GAAAA,IAAAge,EAAAhI,EAAA9Q,KAAA,OAGA,CAEA,OAAA1H,EAAA1I,MAAA,CAAAiC,EAAAC,IAAAD,EAAAmlB,OAAAhlB,cAAAF,EAAAklB,OAAA,KAAA/kB,aACA,GAEA7G,QAAA,KACA2tB,EAAAA,EAAAA,IAAA,kBACA,cAAA7C,SACA,KAAAxqB,OAAA6b,SAAA,gBAAA1H,QACA,EACAuX,UAAAA,GACA,OAAA3Z,OAAAC,SAAAlJ,UACA,ICzMqP,MCQjP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QC8BhC,IACAtO,KAAA,aACA+B,WAAA,CACA+wB,kBAAA,OACAC,UAAA,OACAC,mBAAA,OACAjoB,YAAA,OACAkoB,UAAA,OACAC,YAAA,OACAnsB,SAAA,cACAosB,OAAAA,IAEA/vB,SAAA,KACAC,EAAAA,EAAAA,IAAA,sFACAC,EAAAA,EAAAA,IAAA,wDACA+sB,WAAAA,GAAA,IAAA7oB,EACA,eAAAA,EAAA,KAAArE,YAAA,IAAAqE,OAAA,EAAAA,EAAA4rB,YACA,EACA3C,mBAAAA,GACA,YAAAla,gBAAApS,EAAAA,GAAAoF,QAAA,KAAAgN,eAAAjW,OACA,KAAAK,GAAA,2CAAA4V,gBAGA,KAAA5V,GAAA,6BAEA,EACA6vB,eAAAA,GACA,YAAA7S,YAAAxZ,EAAAA,GAAAoF,QAAA,KAAAoU,WAAArd,OACA,KAAAK,GAAA,uCAAAgd,YAGA,KAAAhd,GAAA,yBAEA,EACAoM,IAAAA,GACA,QAAA5J,gBAAAmB,EAAAA,EAAA,CACA,IAAA4I,EAAA,KAAA/J,KAAAgK,WACA,GAAAD,EAAArJ,OAAA,EACA,OAAAqJ,EAAA,EAEA,CACA,WACA,EACAwjB,iBAAAA,GACA,IAAAtP,EACAiS,EAOA,OANA,KAAAxL,OACAzG,EAAA,KAAAyG,KAAAyL,iBAEA,KAAAnwB,OAAA,KAAA0kB,MAAA,KAAA1kB,gBAAAmB,EAAAA,IACA+uB,EAAA,KAAAlwB,KAAAmwB,iBAEAD,EACA,eAAAlwB,KAAA0K,mBAEAuT,EACA,KAAAsG,mBAIA,eAAAG,KAAAha,mBAHA,UAMA,IACA,EACA0iB,aAAAA,GAEA,YAAA5hB,YAAA,KAAA+G,MAAA,KAAA/G,WACA,KAEA,KAAAkZ,KACA1jB,EAAAA,GAAAovB,SAAA,KAAA1L,KAAAtjB,iBAAA,KAAAmR,KACA,KAGA,CACAnU,KAAA,KAAAsmB,KAAAtjB,iBACAmJ,IAAA,OACApN,MAAAgE,EAAAA,EAAAuH,gBAAA,KAAAgc,OAIA,KAAAtR,gBAAA,KAAAoH,UACA,GAEAzY,QAAA,CACAorB,YAAAA,GACA,sBAAA9N,QAAAgR,aAAAxzB,IACA,EACA2wB,IAAAA,GACA,KAAAnrB,OAAAC,OAAA,wBAAAD,OAAA6b,SAAA,QACA3L,IAAA,KAAAA,IACAyM,SAAA,EACAtiB,MAAA,EACA0uB,OAAA,KAEA,ICjJyP,MCQrP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,Q,uBC6BhC3c,EAAAA,GAAAC,IAAA4hB,GAAAA,GACA7hB,EAAAA,GAAAC,IAAA6hB,GAAAA,GACA9hB,EAAAA,GAAAC,IAAA8hB,GAAAA,IACA/hB,EAAAA,GAAAC,IAAA+hB,GAAAA,GACAhiB,EAAAA,GAAAC,IAAAgiB,GAAAA,IACAjiB,EAAAA,GAAAC,IAAAiiB,GAAAA,IACAliB,EAAAA,GAAAC,IAAAkiB,GAAAA,GAGAniB,EAAAA,GAAAoiB,UAAA,WAAAC,GAAAA,GAEAriB,EAAAA,GAAAoiB,UAAA,YAAAE,GAAAA,GAGAtiB,EAAAA,GAAAC,IAAAsiB,EAAAA,IACA,MAAA3N,GAAA,IAAA2N,EAAAA,GAAA,CACAC,KAAAliB,EAAAA,EAAAxC,YACA2kB,KAAAniB,EAAAA,EAAAzC,WACAkT,OAAAD,GAAAxQ,EAAAA,KAIAN,EAAAA,GAAAC,IAAA0V,EAAAA,IACA,MAAAnQ,GAAAmP,GAAArU,EAAAA,EAAAsU,IAGA,IAAA8N,GAAA,GACAC,GAAA,GACA,QAAAj1B,MAAA4S,EAAAA,EACAoiB,GAAAh1B,IAAA,CACA2D,QAAA,sBAAAtD,gBAAAuS,EAAAA,EAAA5S,KAAA,IAAA4S,EAAAA,EAAA5S,IAAA4S,EAAAA,EAAA5S,KAEAi1B,GAAAj1B,IAAA,CACAme,WAAA,EACAC,QAAA,SAAA8W,GACA,KAAAhvB,OAAAC,OAAA,UACA,CAAAnG,IAAAk1B,GAEA,GAIA,QACAx0B,KAAA,cACAwmB,OAAA,GACApP,MAAA,GACArV,WAAA,CACA0yB,eAAAA,IAAA,gCACAjT,WAAA,EACAkT,QAAAA,IAAA,gCACAC,WAAAA,IAEA9xB,MAAA,IACAyxB,IAEAnxB,IAAAA,GACA,OACA+R,SAAA,EACAO,MAAA,KACAmf,aAAA,KAEA,EACAxxB,SAAA,KACAC,EAAAA,EAAAA,IAAA,yIACAA,EAAAA,EAAAA,IAAA,CACAwxB,mBAAA,aACAC,gCAAA,0BACAC,uBAAA,iBACAC,yBAAA,mBACAC,oBAAA,oBAEA3xB,EAAAA,EAAAA,IAAA,wGACAgS,cAAAA,GAEA,MAAA4f,OAKA,GAEA1X,MAAA,IACA+W,GACAj0B,KAAAA,CAAAA,GACAsd,SAAAtd,MAAAA,CACA,EACAuB,WAAAA,CAAAA,GACA,IAAAua,EAAAwB,SAAAvB,eAAA,oBACAD,GACAA,EAAA+Y,aAAA,UAAAhxB,EAAAA,GAAAgD,YAAAtF,EAAA,KAEA,EACAkK,WAAA,CACA0R,WAAA,EACA,aAAAC,CAAAzO,GACAA,IAKAmmB,KAAAA,QAAA,CAAAnmB,GACAmmB,KAAAA,UAAAxiB,EAAAA,SAGAH,EAAAA,EAAAA,IAAAxD,GAGA,KAAAqS,MAAA+T,MAAApmB,OAAAA,EAGA2O,SAAA0X,gBAAAH,aAAA,OAAAlmB,GACA,GAEAkY,aAAA,CACA1J,WAAA,EACA,aAAAC,CAAAzO,GACA,GAAAA,GAGA,KAAA9L,gBAAAmB,EAAAA,EAAA,CACA,IAAAwG,EAAA,KAAA3H,KAAAurB,cAAAzf,GACA,GAAAnE,EAAA,CACA,IAAA4M,EAAA5U,OAAAsC,OAAA,QAAAJ,sBACA,KAAAwd,QAAAlb,KAAA,KAAAwG,cAAAhD,EAAAvJ,OACA,KAAAiE,OAAAC,OAAA,QAAAiS,EACA,MACA,QAAAiR,oBAAA5W,EAAAA,IAAA,CAEA,IAAA2D,EAAA,KAAAA,IAIA,KAAAlQ,OAAAC,OAAA,yBACA,KAAAD,OAAA6b,SAAA,QAAA3L,MAAAyM,SAAA,EAAAtiB,MAAA,GACA,CACA,CACA,GAEAg1B,kBAAAA,CAAAnf,GACAA,GAEA,KAAAlQ,OAAA6b,SAAA,QAAA3L,MAAAyM,SAAA,GAEA,EACAnd,qBAAA,CACAuwB,MAAA,EACA7X,OAAAA,GACA,IAAA+E,EAAA,GACA,UAAAnjB,EAAAY,KAAA4C,OAAA6nB,QAAA,KAAA6K,OAAA/S,OACAnjB,EAAAyO,WAAA,OACA0U,EAAAnjB,GAAAY,GAGA,UAAAZ,EAAAY,KAAA4C,OAAA6nB,QAAA,KAAA3lB,sBAAA,CACA,IAAAhF,EAAA,IAAAV,IACAkB,MAAAC,QAAAP,GACAA,EAAA2D,OAAA,IACA4e,EAAAziB,GAAAE,EAAAgY,KAAA,MAGA,OAAAhY,IACAuiB,EAAAziB,GAAAE,EAEA,CAEA,KAAAsiB,QAAAjP,QAAA,CAAAkP,UAAAsN,OAAAta,IACA,IAAA0e,EAAAA,GAAAA,oBAAA1e,EAAA0e,EAAAA,GAAAA,sBAAAsB,YACA,MAAAlhB,MAAAkB,EACA,GAEA,GAEAoS,IAAAA,CAAAA,EAAA6N,GACA,MAAAC,EAAA,CACA,qBACA,aACA,eACA,eACA,mBACA,uBACA,0BACA,yBACA,YAGA,IAAAC,GAAA/N,GAAA6N,GAAAvxB,EAAAA,GAAAqK,SAAAknB,EAAA,iBACAG,EAAAhO,GAAA1jB,EAAAA,GAAAqK,SAAAqZ,EAAA,iBAEA,QAAAvoB,KAAAq2B,EAAA,CACA,IAAAz1B,EACA01B,IACA11B,EAAAgS,EAAAA,EAAA5S,IAEAu2B,GAAA,qBAAAhO,EAAA,gBAAAvoB,KACAY,EAAA2nB,EAAA,gBAAAvoB,KAIA,aAAAA,GAAA4S,EAAAA,EAAArC,YAKA,qBAAA3P,GACA,KAAAsF,OAAAC,OAAA,WAAAnG,GAAAY,IAEA,CACA,EACAiD,IAAAA,CAAAA,GACA,KAAAyxB,cAGAzxB,aAAAmB,EAAAA,GACA,KAAAswB,cAEA,GAEAkB,YAAAA,GACA,MAAAC,EAAAC,GAAAA,MAAApY,SAAAoY,QACA,IAAAC,EAAA,sBACApY,QAAA8R,IAAA,iBAAAjT,KAAAC,UAAAsZ,MACA,kBAAAA,GAAAA,EAAA9S,cAAArgB,YACAsQ,IAAA6iB,EAAA,gBACAA,EAAA,oBAGAA,EAAA,CACA,iBAGApY,QAAA8R,IAAA,iBAAAjT,KAAAC,UAAAsZ,MACA,KAAAzwB,OAAA6b,SAAA,gBAAA4U,EAAA,oBACA7iB,IAAA2iB,EAAA,gBACA,KAAAvwB,OAAA6b,SAAA,UAAA0U,EAAA,eAEA,EACAhxB,OAAAA,GACA,KAAAyd,QAAA0T,SAAA,KACA,KAAAC,eACA,KAAAC,WAAA,KAAAZ,OAAA,IAGA,KAAAhT,QAAA6T,WAAA,CAAA1oB,EAAAlJ,KACA,GAAAkJ,EAAA0J,OAAA5S,EAAA4S,KACA,OAIA,IAAAif,EAAA,YACA,QAAA5O,oBAAA/Z,EAAA0J,KAAA,CACA,IAAA1M,EAAA,KAAAuf,gBAAAvc,EAAA0J,MACA,KAAAuO,cAAAjb,KACA2rB,EAAA,eAEA,CAEA,KAAA9wB,OAAAC,OAAA6wB,GACA,KAAAF,WAAAzoB,EAAA,GAEA,EACA4oB,OAAAA,GACA,KAAAjV,MAAAkV,IAAA,aAAAC,WACAC,aAAA,SAAAlxB,OAAA6b,SAAA,yBACA,EACAnc,QAAA,KACA2tB,EAAAA,EAAAA,IAAA,kBACAsD,YAAAA,GACA,IAAAlnB,EACA,QAAAgmB,oBACA,IACAhmB,EAAAsI,OAAAmW,aAAAiJ,QAAA,SACA,OAAAlhB,GACAoI,QAAApI,MAAAA,EACA,CAEA,IAAAxG,GAAA,KAAA6lB,iCAAAt0B,MAAAC,QAAAiqB,UAAAtY,WAAA,CAEA,MAAA+B,GAAAD,EAAAA,GAAAA,IAAA,KAAA8gB,0BACA,QAAApK,KAAAF,UAAAtY,UAAA,CACA,MAAAwkB,GAAAhiB,EAAAA,GAAAA,IAAAT,EAAAyW,EAAA,MACA,GAAAgM,EAAA,CACA3nB,EAAA2nB,EACA,KACA,CACA,CACA,CACA3nB,GAAA,KAAA+lB,yBAAAr1B,SAAAsP,KAEA,KAAAue,aAAA,CAAAve,WACA,KAAA9L,OAEA,KAAAyxB,aAAA,KACA,KAAApH,aAAA,CAAAve,WACA,KAAA2lB,aAAA,OAIA,EACAwB,UAAAA,CAAAvT,GAAA,IAAAgU,EACA,IAAAC,EAAA,GACA,oBAAApnB,YAAA,CACA,IAAAzB,EAAAC,IAAA2U,EAAAkU,KAAAxjB,QAAA,UACAujB,EAAA7oB,EAAAwU,OAAA,EACA,CACA,IAAAA,EAAA3f,OAAAsC,OAAA,GAAAyd,EAAAJ,MAAAqU,GACAhU,EAAA,GACA,QAAAxjB,KAAAmjB,EAAA,CACA,IAAAviB,EAAAuiB,EAAAnjB,GAEA,GAAAA,EAAAyO,WAAA,KACA+U,EAAAkU,QAAA7yB,EAAAA,GAAAqK,SAAAsU,EAAAkU,SAAAlU,EAAAkU,QAAA,GACAlU,EAAAkU,QAAA13B,EAAA6T,OAAA,IAAAjT,SACAuiB,EAAAnjB,QAGA,GAAAA,EAAAyO,WAAA,MACA,IAAAkpB,EAAA33B,EAAA6T,OAAA,GACA2P,EAAApL,MAAAvT,EAAAA,GAAAqK,SAAAsU,EAAApL,OAAAoL,EAAApL,MAAA,GACAlX,MAAAC,QAAA,KAAAuE,qBAAAiyB,MAAAz2B,MAAAC,QAAAP,KACAA,EAAAA,EAAAsT,MAAA,MAEAsP,EAAApL,MAAAuf,GAAA/2B,CACA,MAGAiE,EAAAA,GAAAqK,SAAAsU,EAAAoU,gBACApU,EAAAoU,aAAA,IAEApU,EAAAoU,aAAA53B,GAAAY,CAEA,CACA,GAAAiE,EAAAA,GAAA0B,KAAAid,GAAA,EACA,QAAA5hB,KAAA4hB,EACA,QAAAxjB,KAAAwjB,EAAA5hB,GACA,KAAAsE,OAAAC,OAAA,qBAAAvE,OAAA5B,MAAAY,MAAA4iB,EAAA5hB,GAAA5B,KAIA,OAAAwjB,QAAA,IAAAA,GAAA,QAAA+T,EAAA/T,EAAApL,aAAA,IAAAmf,GAAAA,EAAApjB,UACA,KAAA+Z,aAAA,CAAAve,OAAA6T,EAAApL,MAAAjE,WAEAtP,EAAAA,GAAA0B,KAAAid,EAAAkU,SAAA,GACA,KAAAxU,QAAAjP,QAAA,CAAAkP,SAGA,EACAgU,SAAAA,CAAAhhB,EAAAK,GACA,KAAAtQ,OAAAC,OAAA,mBACAgQ,QACAK,WAEA,EACAb,SAAAA,GACA,KAAAzP,OAAAC,OAAA,uBACA,IClZiP,MCQ7O,IAAY,OACd,GACAjH,EACAsB,GACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfjB,SAASq3B,KACtB,OAAO7kB,EAAAA,EAAAA,MAAsB8kB,MAAK,IACzB,IAAIxlB,EAAAA,GAAI,CACbS,KAAI,KACJ7T,OAAQ64B,GAAKA,EAAEC,MACdC,OAAO,kBAEd,CCRA3lB,EAAAA,GAAIH,OAAO+lB,eAAgB,EAE3BL,I,0PCFe,MAAMjU,UAA8BuU,EAAAA,EAEjDtU,WAAAA,CAAYuU,EAAUtU,EAAO,KAAMvK,EAAM,MACvCwK,MAAMqU,EAAU,CAACtU,EAAMvK,GACzB,CAEA8e,KAAAA,CAAMz3B,GACJ,OAAO,IAAIxB,KAAKykB,YAAYzkB,KAAKg5B,SAAUh5B,KAAK2vB,KAAK,GAAInuB,EAC3D,CAEA,aAAO03B,CAAOxU,EAAMyU,EAAIhf,GACtB,MAAI,CAAC,IAAK,KAAM,OAAOlZ,SAASk4B,GACvB,IAAIlT,EAASvB,EAAMvK,GAEnB,CAAC,KAAM,KAAM,OAAOlZ,SAASk4B,GAC7B,IAAIjT,EAAYxB,EAAMvK,GAEf,OAAPgf,EACA,IAAI7S,EAAoB5B,EAAMvK,GAEvB,MAAPgf,EACA,IAAI9S,EAAe3B,EAAMvK,GAElB,OAAPgf,EACA,IAAI/S,EAAiB1B,EAAMvK,GAEpB,MAAPgf,EACA,IAAIhT,EAAYzB,EAAMvK,QAD1B,CAGP,EAIK,MAAM8L,UAAiBzB,EAI5BC,WAAAA,CAAYC,EAAO,KAAMvK,EAAM,MAC7BwK,MAAMsB,EAASrB,OAAQF,EAAMvK,EAC/B,CAEA,oBAAW2K,GACT,OAAOnR,EAAAA,GAAKlB,EAAE,iBAChB,GAEDsS,EAAAA,EAAAA,GAZYkB,EAAQ,SAEH,KAYX,MAAMC,UAAoB1B,EAI/BC,WAAAA,CAAYC,EAAO,KAAMvK,EAAM,MAC7BwK,MAAMuB,EAAYtB,OAAQF,EAAMvK,EAClC,CAEA,oBAAW2K,GACT,OAAOnR,EAAAA,GAAKlB,EAAE,oBAChB,GAEDsS,EAAAA,EAAAA,GAZYmB,EAAW,SAEN,MAYX,MAAMG,UAAuB7B,EAIlCC,WAAAA,CAAYC,EAAO,KAAMvK,EAAM,MAC7BwK,MAAM0B,EAAezB,OAAQF,EAAMvK,EACrC,CAEA,oBAAW2K,GACT,OAAOnR,EAAAA,GAAKlB,EAAE,qBAChB,GAEDsS,EAAAA,EAAAA,GAZYsB,EAAc,SAET,KAYX,MAAMC,UAA4B9B,EAIvCC,WAAAA,CAAYC,EAAO,KAAMvK,EAAM,MAC7BwK,MAAM2B,EAAoB1B,OAAQF,EAAMvK,EAC1C,CAEA,oBAAW2K,GACT,OAAOnR,EAAAA,GAAKlB,EAAE,0BAChB,GAEDsS,EAAAA,EAAAA,GAZYuB,EAAmB,SAEd,MAYX,MAAMH,UAAoB3B,EAI/BC,WAAAA,CAAYC,EAAO,KAAMvK,EAAM,MAC7BwK,MAAMwB,EAAYvB,OAAQF,EAAMvK,EAClC,CAEA,oBAAW2K,GACT,OAAOnR,EAAAA,GAAKlB,EAAE,kBAChB,GAEDsS,EAAAA,EAAAA,GAZYoB,EAAW,SAEN,KAYX,MAAMC,UAAyB5B,EAIpCC,WAAAA,CAAYC,EAAO,KAAMvK,EAAM,MAC7BwK,MAAMyB,EAAiBxB,OAAQF,EAAMvK,EACvC,CAEA,oBAAW2K,GACT,OAAOnR,EAAAA,GAAKlB,EAAE,uBAChB,GAIFsS,EAAAA,EAAAA,GAdaqB,EAAgB,SAEX,K,qEC5GH,MAAM2S,EAEnBtU,WAAAA,CAAYuU,EAAUrJ,EAAO,IAC3B3vB,KAAKg5B,SAAWA,EAChBh5B,KAAK2vB,KAAOA,CACd,CAEAnJ,MAAAA,GACE,IAAI2S,EAAKn5B,KAAKg5B,SAAS5jB,cACvB,OAAOpV,KAAK2vB,KAAKtX,KAAI+gB,GAAOA,EAAI5S,WAAUhN,KAAM,IAAG2f,KACrD,CAEA1S,MAAAA,GACE,MAAO,CACL0S,GAAIn5B,KAAKg5B,SACTrJ,KAAM3vB,KAAK2vB,KAAKtX,KAAI+gB,GAAOA,EAAI3S,WAEnC,CAEA,sBAAWtjB,GACT,MAAO,EACT,CAEA,gBAAW0hB,GACT,OAAO7kB,KAAK4kB,MACd,CAEA,oBAAWE,GACT,OAAO9kB,KAAK6kB,KACd,E,4FCzBF,IAAIwU,EAAiB,EAGrB,MAAMzzB,EAEJ6e,WAAAA,CAAYhgB,EAAMuS,EAAK2B,EAAM2gB,GAAU,GACrCt5B,KAAKu5B,IAAMF,IACXr5B,KAAKw5B,KAAOxiB,EACZhX,KAAKy5B,MAAQ9gB,EACb3Y,KAAK05B,sBAAwB,CAAC,EAC9B15B,KAAK25B,aAAc,EACnB35B,KAAK45B,aAAe,CAClBC,KAAM,GACN7tB,MAAM,EACNC,MAAM,GAGJqtB,IAIgB,sBAAd70B,EAAKjC,KACPiC,EAAKge,SAAWhe,EAAKge,SAASpK,KAAIhO,GAAQyvB,IAAAA,KAAazvB,GAAM,KAG7D5F,EAAOq1B,IAAAA,KAAar1B,GAAM,IAG9B,IAAK,IAAI7D,KAAO6D,EACW,qBAAdzE,KAAKY,KACdZ,KAAKY,GAAO6D,EAAK7D,GAGvB,CAEAkvB,uBAAAA,GACE,OAAO9vB,KAAK25B,WACd,CAEApJ,yBAAAA,GACEvwB,KAAK25B,aAAc,CACrB,CAEApyB,MAAAA,GACE,MAAqB,YAAdvH,KAAKwC,IACd,CAEA6mB,SAAAA,GACE,MAAqB,YAAdrpB,KAAKwC,IACd,CAEA+mB,aAAAA,GACE,OAAOvpB,KAAKqpB,aAAerpB,KAAKiJ,cAClC,CAEAA,YAAAA,GACE,MAAqB,eAAdjJ,KAAKwC,IACd,CAEAu3B,gBAAAA,GACE,MAAqB,sBAAd/5B,KAAKwC,IACd,CAEAw3B,UAAAA,GACE,OAAOh6B,KAAK45B,aAAaC,KAAK10B,OAAS,CACzC,CAEA80B,kBAAAA,CAAmBp4B,EAAIq4B,EAAW,MACR,oBAAbA,EACTl6B,KAAK05B,sBAAsB73B,GAAMq4B,SAG1Bl6B,KAAK05B,sBAAsB73B,EAEtC,CAEAysB,UAAAA,CAAWuL,EAAM5tB,EAAO,KAAMD,EAAO,MAC/BA,IACFhM,KAAK45B,aAAa5tB,KAAOA,GAEvBC,IACFjM,KAAK45B,aAAa3tB,KAAOA,GAE3BjM,KAAK45B,aAAaC,KAAOA,EAEzB,IAAK,IAAIh4B,KAAM7B,KAAK05B,sBAClB,IACE15B,KAAK05B,sBAAsB73B,GAAI7B,KAAK45B,aACtC,CAAE,MAAO7iB,GACPoI,QAAQpI,MAAMA,EAChB,CAEJ,CAEA1N,cAAAA,GACE,IAAI3I,EAAS,GAOb,OANKV,KAAKuH,UAAYvH,KAAKiJ,iBAAmBxD,EAAAA,GAAMqK,SAAS9P,KAAKU,UAChEA,EAASA,EAAOihB,OAAOvd,OAAO0I,OAAO9M,KAAKU,UAExCV,KAAKiJ,gBAAkBxD,EAAAA,GAAMqK,SAAS9P,KAAK+f,eAC7Crf,EAASA,EAAOihB,OAAOvd,OAAO0I,OAAO9M,KAAK+f,eAErCrf,EACJqM,QAAOpM,GAASmB,MAAMC,QAAQpB,EAAMqB,QAAUrB,EAAMqB,MAAMf,SAAS,SAAiC,kBAAfN,EAAM6B,OAC3F6V,KAAI1X,GAASA,EAAM6B,OACnBuK,QAAO,CAACotB,EAAG7d,EAAGrP,IAAMA,EAAE1G,QAAQ4zB,KAAO7d,GAC1C,CAEA8d,WAAAA,CAAYC,EAAW,MACrB,IAAKr6B,KAAKupB,gBACR,MAAO,GAGT,IAAIsB,GAAmBwP,GAAyB,gBAAbA,EAC/BvP,GAAcuP,GAAyB,WAAbA,EAE1BC,EAAW,GAaf,OAZIzP,GAAmB7qB,KAAK45B,aAAa5tB,MACvCsuB,EAAS1xB,KAAK5I,KAAK45B,aAAa5tB,MAE9B6e,GAAmB7qB,KAAK45B,aAAaC,KAAK10B,OAAS,IACrDm1B,EAAWt6B,KAAK45B,aAAaC,MAE3B/O,IACFwP,EAAW10B,EAAKmlB,mBAAmBuP,EAAUt6B,MAAM2hB,OAAO3hB,KAAK8pB,iBAAiB,CAAC,WAE/Ee,GAAmB7qB,KAAK45B,aAAa3tB,MACvCquB,EAAS1xB,KAAK5I,KAAK45B,aAAa3tB,MAE3BquB,CACT,CAEA,yBAAOvP,CAAmB/N,EAAU1V,GAClC,IAAI2S,EAAQ3S,EAAKmjB,oBAAoB,SAAS1d,QAAOX,IAGnD,IAAIkb,EAAc7hB,EAAAA,GAAMqU,WAAW1N,EAAKvJ,KAAMyE,EAAKzB,kBACnD,OAAQmX,EAAStO,MAAKiM,GAAcA,EAAW9U,mBAAqByhB,GAAY,IAIlF,OAAOrN,EAAM0H,OAAO3E,EACtB,CAEA4X,aAAAA,GAGE,IAAI3a,EAAQxU,EAAAA,GAAMqkB,iBAAiB9pB,KAAKia,MAAO,CAAC,WAC7ClN,QAAOX,GAAQ3G,EAAAA,GAAMqrB,YAAY1kB,EAAK5J,KAAM+3B,EAAAA,MAE3CC,EAAOvgB,EAAMvL,MAAKtC,GAAQ3G,EAAAA,GAAMoF,QAAQuB,EAAK4a,SAAyC,SAA9B5a,EAAK4a,OAAO5R,gBACxE,OAAOolB,GAAQvgB,EAAM,IAAM,IAC7B,CAEA0Q,qBAAAA,GACE,OAAO3qB,KAAK4pB,mBAAmB,OACjC,CAEApH,eAAAA,GACE,OAAOxiB,KAAK4pB,mBAAmB,QACjC,CAEAzO,WAAAA,CAAYsf,GACV,OAAIz6B,KAAKuH,SACAvH,KAAKsK,WAAWmwB,GAEhBz6B,KAAKupB,gBACLvpB,KAAKy6B,GAEP,IACT,CAEAtrB,cAAAA,GACE,OAAOnP,KAAKy5B,KACd,CAEA5zB,cAAAA,GACE,OAAO7F,KAAKw5B,IACd,CAEAxJ,aAAAA,CAAczf,EAAQC,EAAiB,MACrC,IAGIkqB,EAHAzgB,EAAQja,KAAKyqB,oBAAoB,aAClC1d,QAAOX,GAAQ3G,EAAAA,GAAMoF,QAAQuB,EAAKuuB,YAInCD,EADE54B,MAAMC,QAAQ/B,KAAK0T,WACT1T,KAAK0T,UAAU2E,KAAI6T,GAAKA,EAAE9Q,OAG1BnB,EAAM5B,KAAIjM,GAAQA,EAAKuuB,WAGrC,IAAIzC,GAAOhiB,EAAAA,EAAAA,IAAQwkB,EAAWnqB,EAAQC,GACtC,OAAOyJ,EAAMvL,MAAKtC,GAAQA,EAAKuuB,WAAazC,KAAS,IACvD,CAEAzN,mBAAAA,CAAoBzb,EAAK4rB,GAAa,GACpC,OAAOn1B,EAAAA,GAAMqkB,iBAAiB9pB,KAAKia,MAAO,CAACjL,IACxCjC,QAAOX,GAAQ3G,EAAAA,GAAMqJ,gBAAgB1C,EAAK5J,KAAMo4B,IACrD,CAEAhR,kBAAAA,CAAmB5a,EAAK4rB,GAAa,GACnC,MAAM3gB,EAAQja,KAAKyqB,oBAAoBzb,EAAK4rB,GAC5C,OAAI3gB,EAAM9U,OAAS,EACV8U,EAAM,GAGN,IAEX,CAEAsB,cAAAA,CAAevM,GACb,OAAOvJ,EAAAA,GAAM8V,eAAevb,KAAKia,MAAOjL,EAC1C,CAEA8a,gBAAAA,CAAiB+Q,GACf,OAAOp1B,EAAAA,GAAMqkB,iBAAiB9pB,KAAKia,MAAO4gB,EAC5C,CAEA5P,qBAAAA,CAAsB4P,GACpB,OAAOp1B,EAAAA,GAAMwlB,sBAAsBjrB,KAAKia,MAAO4gB,EACjD,CAEAC,kBAAAA,CAAmB94B,GACjB,IAAI+4B,EAAU,GACd,GAAIt1B,EAAAA,GAAMqK,SAAS9P,KAAKU,QACtB,IAAK,IAAIE,KAAOZ,KAAKU,OAAQ,CAC3B,IAAIC,EAAQX,KAAKU,OAAOE,GACpB6E,EAAAA,GAAMqK,SAASnP,IAAgC,kBAAfA,EAAMkC,MAAqBf,MAAMC,QAAQpB,EAAMqB,QAAUrB,EAAMqB,MAAM0M,MAAKvM,GAAQH,EAAMf,SAASkB,MACnI44B,EAAQnyB,KAAKjI,EAEjB,CAEF,OAAOo6B,CACT,CAEA,sBAAO5tB,CAAgB6tB,EAAS1sB,EAAgB,MACzCxM,MAAMC,QAAQi5B,KACjBA,EAAU,CAACA,IAEb,IAAI1zB,EAAO0zB,EAAQtsB,MAAKC,GAAKA,aAAa/I,IACtCwG,EAAO4uB,EAAQtsB,MAAKC,GAAKlJ,EAAAA,GAAMqK,SAASnB,MAAQA,aAAa/I,KAEjE,OAAI0B,GAAQ7B,EAAAA,GAAMoF,QAAQvD,EAAK2zB,YACtB3zB,EAAK2zB,WAGL7uB,GAAQ3G,EAAAA,GAAMoF,QAAQuB,EAAKxK,OAC3BwK,EAAKxK,MAGL0F,GAAQ7B,EAAAA,GAAMoF,QAAQvD,EAAKzF,IAC3ByF,EAAKzF,GAGL4D,EAAAA,GAAMoF,QAAQyD,GACdA,EAGAhH,EACA7B,EAAAA,GAAMy1B,aAAa5zB,EAAKzB,kBAAkB,GAG1CuG,GAAQ3G,EAAAA,GAAMoF,QAAQuB,EAAKvJ,MAC3B4C,EAAAA,GAAMy1B,aAAa9uB,EAAKvJ,MAAM,GAI9B,UAEX,CAEAo4B,QAAAA,GACE,OAAOj7B,KAAKmb,YAAY,QAC1B,CAEAggB,eAAAA,CAAgB/uB,GACd,OAAOhI,OAAOsC,OAAO,CAAC,EAAG0F,EAAM,CAAEvJ,KAAM4C,EAAAA,GAAMqU,WAAW1N,EAAKvJ,KAAM7C,KAAK6F,mBAC1E,CAEA4I,QAAAA,GACE,OAAOzO,KAAK8pB,iBAAiB,CAAC,SAC3B/c,QAAOquB,GAAO31B,EAAAA,GAAMQ,uBAAuBm1B,KAC3C/iB,KAAI+iB,GAAOp7B,KAAKm7B,gBAAgBC,IACrC,CASA9oB,aAAAA,CAAc+oB,GAAc,EAAOC,EAAS,MAC1C,IAAIjpB,EAAarS,KAAK86B,mBAAmB,CAAC,YAAa,aAgBvD,OAfIQ,GAAUjpB,EAAWlN,OAAS,GAChCkN,EAAWrH,MAAKiC,GAAKA,EAAEjL,MAAMf,SAASq6B,IAAW,EAAI,IAG7B,IAAtBjpB,EAAWlN,SACbkN,EAAarS,KAAK8pB,iBAAiB,CAAC,aAGZ,IAAtBzX,EAAWlN,QAAgBM,EAAAA,GAAMqK,SAAS9P,KAAKU,SAAW+E,EAAAA,GAAMqK,SAAS9P,KAAKU,OAAOqH,aACvFsK,EAAa,CAACrS,KAAKU,OAAOqH,YAExBszB,IAEFhpB,EAAaA,EAAWtF,QAAOquB,GAAO31B,EAAAA,GAAMQ,uBAAuBm1B,MAE9D/oB,EAAWgG,KAAI+iB,GAAOp7B,KAAKm7B,gBAAgBC,IACpD,CAEAvP,MAAAA,CAAO0P,GACL,QAAK91B,EAAAA,GAAMqK,SAASyrB,KAGhBv7B,OAASu7B,GAGTv7B,KAAK6B,KAAO05B,EAAM15B,IAAM7B,KAAKwC,MAAQ+4B,EAAM/4B,KAIjD,EAIF,K,sKCzUO,MAAMg5B,EAAgB,CAC3B,QACA,aACA,OACA,SACA,OACA,QAIWpN,EAAiB,CAC5B,QACA,OACA,OACA,OACA,YAIWyC,EAAgB,CAC3B,aACA,oDACA,sBAIW9hB,EAAyB,CACpC,YACA,UACA,eACA,iBACA,sBACA,oBACA,SACA,aACA4S,OAAO6Z,GAAe7Z,OAAOyM,GAGlBlD,EAA6B,CACxC,cACA,OACA,QACA,SACA,OACA,WACAvJ,OAAO6Z,GAAe7Z,OAAOyM,GAAgBzM,OAAOkP,GAGzC4K,EAAe,yC,kQChDrB,MAAMC,EAAkB,CAAC,UAAW,aAAc,QAE5CnB,EAAmB,uBAEnBxJ,EAAkB,0BAElB4K,EAAiB,CAC5B,mBACApB,EACA,aAGWqB,EAAoB,CAC/B,YACA,YACA,aACA,aACA,YACA,cAGWC,EAAoB,CAC/B,sBACA,kCACA,2DACA,yBACA,gDAGWr2B,EAAmB,CAC9B,OACA,SAGWR,EAAkB42B,EAAkBja,OAAOka,GAC3C32B,EAAgBF,EAAgB2c,OAAO,CAAC4Y,IAE9C,MAAMnX,UAAqBvN,MAChC4O,WAAAA,CAAYrN,GACVuN,MAAMvN,EACR,EAQa,MAAM3R,EAWnB,eAAOqK,CAASqK,GACd,MAAuB,kBAARA,GAAoBA,IAAQ/V,OAAO+V,KAASrY,MAAMC,QAAQoY,EAC3E,CAUA,WAAOhT,CAAKgT,GACV,MAAmB,kBAARA,GAA4B,OAARA,EACzBrY,MAAMC,QAAQoY,GACTA,EAAIhV,OAGJf,OAAO+T,KAAKgC,GAAKhV,OAGrB,CACT,CAEA,sBAAO2J,CAAgBtM,EAAMo4B,GAAa,GACxC,OAAOn1B,EAAMqrB,YAAYtuB,EAAMm5B,EAAgBf,EACjD,CAEA,kBAAO9J,CAAYtuB,EAAM8iB,EAAOsV,GAAa,GAI3C,OAHK94B,MAAMC,QAAQujB,KACjBA,EAAQ,CAACA,OAEPsV,GAAep4B,IAGM,kBAATA,GAIP8iB,EAAMrkB,SAASuB,EAAK+C,cAE/B,CAQA,cAAOsF,CAAQixB,GACb,MAA0B,kBAAXA,GAAuBA,EAAO32B,OAAS,CACxD,CAEA,mBAAOO,CAAasR,GAClB,MAAsB,kBAARA,GAAoBA,EAAI3H,WAAW,UAAY2H,EAAI3H,WAAW,YAC9E,CAEA,iBAAOyK,CAAWjX,EAAM8C,EAASsY,GAAY,GAC3C,OAAOxY,EAAMs2B,aAAal5B,EAAM8C,GAAS,EAAOsY,EAClD,CAEA,mBAAO8d,CAAal5B,EAAM8C,EAAU,KAAMq2B,GAAW,EAAO/d,GAAY,GAElD,kBAATpb,GAAqBA,EAAKwM,WAAW,eAC9CxM,EAAOA,EAAKgS,QAAQ,eAAgB,KAGtC,IAAItF,EAAMC,IAAI3M,GAUd,OARI8C,GAAW4J,EAAI8T,GAAG,cAAgB5d,EAAMC,aAAa7C,KACvD0M,EAAMA,EAAI0sB,WAAWt2B,IAEvB4J,EAAI2sB,YACAF,IACFzsB,EAAIwU,MAAM,IACVxU,EAAI0J,SAAS,KAERgF,EAAY1O,EAAIK,WAAaL,CACtC,CAEA,qBAAOgM,CAAetB,EAAOjL,GAC3B,OAAOlN,MAAMC,QAAQkY,GAASA,EAAMvL,MAAKtC,GAAQ3G,EAAMqK,SAAS1D,IAAS3G,EAAMoF,QAAQuB,EAAKvJ,OAASuJ,EAAK4C,MAAQA,IAAO,IAC3H,CAEA,uBAAO8a,CAAiB7P,EAAO4gB,GAC7B,OAAO/4B,MAAMC,QAAQkY,GAASA,EAAMlN,QAAOX,GAAQ3G,EAAMqK,SAAS1D,IAAS3G,EAAMoF,QAAQuB,EAAKvJ,OAASg4B,EAAK55B,SAASmL,EAAK4C,OAAQ,EACpI,CAEA,4BAAOic,CAAsBhR,EAAO4gB,GAClC,OAAO/4B,MAAMC,QAAQkY,GAASA,EAAMlN,QAAOX,GAAQ3G,EAAMqK,SAAS1D,IAAS3G,EAAMoF,QAAQuB,EAAKvJ,QAAUg4B,EAAK55B,SAASmL,EAAK4C,OAAQ,EACrI,CAEA,eAAO6lB,CAAS5nB,EAAGC,GACjB,IACE,IAAIivB,EAAO3sB,IAAIvC,GACXmvB,EAAO5sB,IAAItC,GAIf,OAFAivB,EAAKxjB,KAAKwjB,EAAKxjB,OAAO9D,QAAQ,MAAO,KACrCunB,EAAKzjB,KAAKyjB,EAAKzjB,OAAO9D,QAAQ,MAAO,KAC9BsnB,EAAKtQ,OAAOuQ,EACrB,CAAE,MAAOrlB,GACP,OAAO,CACT,CACF,CAEA,kBAAOtO,CAAYD,EAAM6zB,EAAY,MACnC,OAAK52B,EAAMoF,QAAQrC,IAKnBA,EAAO8zB,IAAS9zB,GAAM4hB,WAAW,WAAY,KACzCiS,EAAY,GAAK7zB,EAAKrD,OAASk3B,IACjC7zB,EAAOA,EAAKiM,OAAO,EAAG4nB,GAAa,KAE9B7zB,GARE,EASX,CAEA,eAAOoF,CAAS2uB,GACd,GAAKA,EAAL,CAGA,IAAIC,EAAOD,EAAGE,wBACV71B,EAAY41B,EAAKvuB,IAAM4K,OAAO6jB,aAAeF,EAAKG,QAAU,EAC3D/1B,GACH21B,EAAGK,eAAe,CAChBC,SAAU,SACVC,MAAO,SANX,CASF,CAIA,kBAAOC,CAAYpjB,GACjB,GAAIA,aAAciM,KAAM,CACtB,MAAMpkB,EAAQ,IAAIokB,KAAKjM,GACjBqjB,EAASx7B,EAAMy7B,oBACrBtjB,EAAK,IAAIiM,KAAKpkB,EAAM07B,UAAqB,GAATF,EAAc,IAChD,CACA,OAAOrjB,CACT,CAEA,gBAAOwjB,CAAUxjB,GACf,GAAIA,aAAciM,KAAM,CACtB,MAAMoX,GAAS,IAAIpX,MAAOqX,oBAC1B,OAAO,IAAIrX,KAAKjM,EAAGujB,UAAqB,GAATF,EAAc,IAC/C,CACA,OAAOrjB,CACT,CAEA,0BAAOyjB,CAAoB57B,GACzB,OAAOA,EAAM6W,KAAIsB,GACXA,aAAciM,KACTjM,EAAG0jB,cAEH1jB,GAIA,OAERH,KAAK,IACV,CAEA,uBAAO+I,CAAiBnW,EAAM9D,EAAU,CAAC,GACvC,IAAIg1B,EAAU97B,GACM,OAAVA,GACa,kBAAVA,IAAuBoL,OAAO2wB,SAAS/7B,IAC7B,kBAAVA,GAAuC,IAAjBA,EAAM2D,QAClB,kBAAV3D,GAA4C,IAAtBiE,EAAM0B,KAAK3F,GAG9C,GAAIiE,EAAMoF,QAAQuB,EAAK4a,SAAyC,SAA9B5a,EAAK4a,OAAO5R,cAA0B,CACtE,IAAI+R,EAAO/iB,OAAOsC,OAAO,CAAC,EAAG0F,EAAK+a,MAElC,IAAK,IAAIvmB,KAAO0H,EAAS,CACvB,IAAI9G,EAAQ8G,EAAQ1H,GACpB,GAAI08B,EAAQ97B,UACH2lB,EAAKvmB,OADd,CAKA,GAAY,aAARA,EACFY,EAAQiE,EAAM23B,oBAAoB57B,QAE/B,GAAY,YAARZ,EAAmB,CAC1BwD,OAAOsC,OAAOygB,EAAM3lB,EAAMilB,UAC1B,QACF,CAEAU,EAAKvmB,GAAOY,CAVZ,CAWF,CACA,OAAO4C,OAAOsC,OAAO,CAAC,EAAG0F,EAAM,CAAE+a,QACnC,CACK,CAEH,IAAInQ,EAAMxH,IAAIpD,EAAKvJ,MAEnB,IAAK,IAAIjC,KAAO0H,EAAS,CACvB,IAAI9G,EAAQ8G,EAAQ1H,GACpB,GAAI08B,EAAQ97B,GACVwV,EAAIwmB,YAAY58B,OADlB,CAKA,GAAY,aAARA,EACFY,EAAQiE,EAAM23B,oBAAoB57B,QAE/B,GAAY,SAARZ,EACPY,EAAQA,EAAMgY,KAAK,UAEhB,GAAa,gBAAR5Y,GAAiC,QAARA,EACjCY,EAAQA,EAAMgY,KAAK,UAEhB,GAAY,YAAR5Y,EAAmB,CAC1B,IAAIwjB,EAAS5iB,EAAMglB,SACnBxP,EAAIymB,SAASrZ,GACb,QACF,CAEApN,EAAIymB,SAAS78B,EAAKY,EAjBlB,CAkBF,CAEA,OAAO4C,OAAOsC,OAAO,CAAC,EAAG0F,EAAM,CAAEvJ,KAAMmU,EAAIpH,YAC7C,CACF,CAEA,mBAAOsrB,CAAar4B,EAAM66B,GAAiB,GACzC,IAAInuB,EAAMC,IAAI3M,GACVovB,EAAO1iB,EAAI+b,YACXqS,EAAOpuB,EAAIquB,WAAW/oB,QAAQ,iBAAkB,MAChDgpB,EAAMtuB,EAAIuuB,YAAYjpB,QAAQ,MAAO,IACzC,GAAIod,GAAQ0L,IAASD,EAAgB,CACnC,IAAI/kB,EAAOpJ,EAAIoJ,OAAO9D,QAAQ,MAAO,IACrC,MAAa,YAATod,GAAsBtZ,EAAKtJ,WAAW,OAChC,OAAMsJ,IAGN,GAAEglB,MAAS1L,IAEvB,CACK,OAAI0L,IAASjC,EAAgBz6B,SAAS08B,GAClCA,EAEA1L,IAGA4L,GAIAh7B,EAEX,CAEA,6BAAOoD,CAAuBm1B,GAC5B,GAAwB,kBAAbA,EAAIv4B,KACb,OAAO,EAET,IAAI0M,EAAMC,IAAI4rB,EAAIv4B,MACdwC,EAAWkK,EAAIlK,WAAWE,cAC9B,QAAIF,IAAaG,EAAiBvE,SAASoE,QAGlCu2B,EAAkB36B,SAASm6B,EAAI54B,UAG/Bo5B,EAAkB36B,SAAS,SAAWsO,EAAIwuB,SAASx4B,iBAGnD61B,EAAI54B,MAMf,CAIA,kCAAOw7B,CAA4BC,EAAQtlB,GACzC,GAAe,OAAXslB,GAAqC,kBAAXA,EAI9B,OADAA,EAASA,EAAOtlB,EAAK,IACC,qBAAXslB,GAA0BtlB,EAAKxT,OAAS,EAC1CnF,KAAKg+B,4BAA4BC,EAAQtlB,EAAK3L,MAAM,IAEtDixB,CACT,CAEA,aAAOrc,CAAOsc,EAAYhvB,EAAQivB,GAAM,GACtC,GAA0B,kBAAfD,GAAiD,IAAtBA,EAAW/4B,OAC/C,OAAO,EAST,GAPIM,EAAMqK,SAASZ,GACjBA,EAAS9K,OAAO0I,OAAOoC,GAEE,kBAAXA,IACdA,EAAS,CAACA,KAGPpN,MAAMC,QAAQmN,GACjB,OAAO,EAGT,IAAIkvB,EAAa,oBAGjBF,EAAaA,EAAW34B,cAAcuP,MAAMspB,GAG5ClvB,EAASA,EACNnC,QAAOsxB,GAAkB,kBAANA,IACnB7kB,KAAK,KACL3E,QAAQupB,EAAY,KACpB74B,cAGH,IAAI2M,EAAKisB,EAAM,QAAU,OACzB,OAAOD,EAAWhsB,IAAIosB,GAAQpvB,EAAOjO,SAASq9B,IAChD,CAEA,iBAAOzU,CAAWhnB,EAAMmM,GACtB,MAAO,CAAEnM,OAAMmM,MACjB,CAEA,wBAAOub,CAAkB9lB,EAAM85B,GAC7B,IAAK94B,EAAMqK,SAASrL,KAAU3C,MAAMC,QAAQ0C,EAAK,oBAC/C,OAAO,EAET,IAAI4lB,EAAS,IAAIC,OAAO,IAAMiU,EAAQnU,WAAW,IAAK,SAAW,KACjE,OAAO5lB,QAAQC,EAAK,mBAAmBiK,MAAKa,GAAO8a,EAAOmU,KAAKjvB,KACjE,CAOA,gBAAOkvB,CAAUvvB,KAAW8rB,GAC1B,IAAKA,EAAQ71B,OACX,OAAO+J,EAET,MAAM9I,EAAS40B,EAAQhmB,QAEvB,GAAIvP,EAAMqK,SAASZ,IAAWzJ,EAAMqK,SAAS1J,GAC3C,IAAK,MAAMxF,KAAOwF,EACZX,EAAMqK,SAAS1J,EAAOxF,KACnBsO,EAAOtO,IACVwD,OAAOsC,OAAOwI,EAAQ,CAAE,CAACtO,GAAM,CAAC,IAElC6E,EAAMg5B,UAAUvvB,EAAOtO,GAAMwF,EAAOxF,KAEpCwD,OAAOsC,OAAOwI,EAAQ,CAAE,CAACtO,GAAMwF,EAAOxF,KAK5C,OAAO6E,EAAMg5B,UAAUvvB,KAAW8rB,EACpC,E,wBCvaF,IAAI3iB,EAAM,CACT,qBAAsB,CACrB,MACA,KACA,MAED,kBAAmB,CAClB,MACA,KACA,MAED,kBAAmB,CAClB,MACA,MAED,kBAAmB,CAClB,MACA,MAED,qBAAsB,CACrB,MACA,KACA,MAED,qBAAsB,CACrB,MACA,KACA,MAED,kBAAmB,CAClB,KACA,KACA,MAED,qBAAsB,CACrB,MACA,KACA,MAED,kBAAmB,CAClB,MACA,KACA,MAED,kBAAmB,CAClB,MACA,OAGF,SAASqmB,EAAoBC,GAC5B,IAAIC,EAAoBjwB,EAAE0J,EAAKsmB,GAC9B,OAAO9qB,QAAQgrB,UAAUnG,MAAK,WAC7B,IAAIoG,EAAI,IAAIjpB,MAAM,uBAAyB8oB,EAAM,KAEjD,MADAG,EAAE1jB,KAAO,mBACH0jB,CACP,IAGD,IAAIC,EAAM1mB,EAAIsmB,GAAM98B,EAAKk9B,EAAI,GAC7B,OAAOlrB,QAAQC,IAAIirB,EAAI/xB,MAAM,GAAGqL,IAAIumB,EAAoBE,IAAIpG,MAAK,WAChE,OAAOkG,EAAoB/8B,EAC5B,GACD,CACA68B,EAAoBvmB,KAAO,WAAa,OAAO/T,OAAO+T,KAAKE,EAAM,EACjEqmB,EAAoB78B,GAAK,MACzBkO,EAAOC,QAAU0uB,C,wBCjEjB,IAAIrmB,EAAM,CACT,sBAAuB,MACvB,mBAAoB,MACpB,mBAAoB,MACpB,mBAAoB,MACpB,sBAAuB,MACvB,sBAAuB,MACvB,mBAAoB,KACpB,sBAAuB,KACvB,mBAAoB,MACpB,mBAAoB,OAIrB,SAAS2mB,EAAeL,GACvB,IAAI98B,EAAKo9B,EAAsBN,GAC/B,OAAOC,EAAoB/8B,EAC5B,CACA,SAASo9B,EAAsBN,GAC9B,IAAIC,EAAoBjwB,EAAE0J,EAAKsmB,GAAM,CACpC,IAAIG,EAAI,IAAIjpB,MAAM,uBAAyB8oB,EAAM,KAEjD,MADAG,EAAE1jB,KAAO,mBACH0jB,CACP,CACA,OAAOzmB,EAAIsmB,EACZ,CACAK,EAAe7mB,KAAO,WACrB,OAAO/T,OAAO+T,KAAKE,EACpB,EACA2mB,EAAeH,QAAUI,EACzBlvB,EAAOC,QAAUgvB,EACjBA,EAAen9B,GAAK,K,2hCC9BhBq9B,EAA2B,CAAC,EAGhC,SAASN,EAAoBO,GAE5B,IAAIC,EAAeF,EAAyBC,GAC5C,QAAqBzqB,IAAjB0qB,EACH,OAAOA,EAAapvB,QAGrB,IAAID,EAASmvB,EAAyBC,GAAY,CACjDt9B,GAAIs9B,EACJnS,QAAQ,EACRhd,QAAS,CAAC,GAUX,OANAqvB,EAAoBF,GAAUG,KAAKvvB,EAAOC,QAASD,EAAQA,EAAOC,QAAS4uB,GAG3E7uB,EAAOid,QAAS,EAGTjd,EAAOC,OACf,CAGA4uB,EAAoBW,EAAIF,E,WC5BxB,IAAIG,EAAW,GACfZ,EAAoBa,EAAI,SAASC,EAAQC,EAAUztB,EAAImoB,GACtD,IAAGsF,EAAH,CAMA,IAAIC,EAAeC,IACnB,IAASvjB,EAAI,EAAGA,EAAIkjB,EAASr6B,OAAQmX,IAAK,CACrCqjB,EAAWH,EAASljB,GAAG,GACvBpK,EAAKstB,EAASljB,GAAG,GACjB+d,EAAWmF,EAASljB,GAAG,GAE3B,IAJA,IAGIwjB,GAAY,EACPC,EAAI,EAAGA,EAAIJ,EAASx6B,OAAQ46B,MACpB,EAAX1F,GAAsBuF,GAAgBvF,IAAaj2B,OAAO+T,KAAKymB,EAAoBa,GAAG9b,OAAM,SAAS/iB,GAAO,OAAOg+B,EAAoBa,EAAE7+B,GAAK++B,EAASI,GAAK,IAChKJ,EAASjS,OAAOqS,IAAK,IAErBD,GAAY,EACTzF,EAAWuF,IAAcA,EAAevF,IAG7C,GAAGyF,EAAW,CACbN,EAAS9R,OAAOpR,IAAK,GACrB,IAAI0jB,EAAI9tB,SACEwC,IAANsrB,IAAiBN,EAASM,EAC/B,CACD,CACA,OAAON,CArBP,CAJCrF,EAAWA,GAAY,EACvB,IAAI,IAAI/d,EAAIkjB,EAASr6B,OAAQmX,EAAI,GAAKkjB,EAASljB,EAAI,GAAG,GAAK+d,EAAU/d,IAAKkjB,EAASljB,GAAKkjB,EAASljB,EAAI,GACrGkjB,EAASljB,GAAK,CAACqjB,EAAUztB,EAAImoB,EAwB/B,C,eC5BAuE,EAAoBqB,EAAI,SAASlwB,GAChC,IAAImwB,EAASnwB,GAAUA,EAAOowB,WAC7B,WAAa,OAAOpwB,EAAO,UAAY,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADA6uB,EAAoBwB,EAAEF,EAAQ,CAAEjzB,EAAGizB,IAC5BA,CACR,C,eCPA,IACIG,EADAC,EAAWl8B,OAAOm8B,eAAiB,SAASpmB,GAAO,OAAO/V,OAAOm8B,eAAepmB,EAAM,EAAI,SAASA,GAAO,OAAOA,EAAIqmB,SAAW,EAQpI5B,EAAoBnsB,EAAI,SAASjR,EAAOk0B,GAEvC,GADU,EAAPA,IAAUl0B,EAAQxB,KAAKwB,IAChB,EAAPk0B,EAAU,OAAOl0B,EACpB,GAAoB,kBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAPk0B,GAAal0B,EAAM2+B,WAAY,OAAO3+B,EAC1C,GAAW,GAAPk0B,GAAoC,oBAAfl0B,EAAMk3B,KAAqB,OAAOl3B,CAC5D,CACA,IAAIi/B,EAAKr8B,OAAO80B,OAAO,MACvB0F,EAAoBoB,EAAES,GACtB,IAAIC,EAAM,CAAC,EACXL,EAAiBA,GAAkB,CAAC,KAAMC,EAAS,CAAC,GAAIA,EAAS,IAAKA,EAASA,IAC/E,IAAI,IAAIK,EAAiB,EAAPjL,GAAYl0B,EAAyB,iBAAXm/B,KAAyBN,EAAe95B,QAAQo6B,GAAUA,EAAUL,EAASK,GACxHv8B,OAAOw8B,oBAAoBD,GAAShrB,SAAQ,SAAS/U,GAAO8/B,EAAI9/B,GAAO,WAAa,OAAOY,EAAMZ,EAAM,CAAG,IAI3G,OAFA8/B,EAAI,WAAa,WAAa,OAAOl/B,CAAO,EAC5Co9B,EAAoBwB,EAAEK,EAAIC,GACnBD,CACR,C,eCxBA7B,EAAoBwB,EAAI,SAASpwB,EAASjP,GACzC,IAAI,IAAIH,KAAOG,EACX69B,EAAoBjwB,EAAE5N,EAAYH,KAASg+B,EAAoBjwB,EAAEqB,EAASpP,IAC5EwD,OAAOy8B,eAAe7wB,EAASpP,EAAK,CAAEkgC,YAAY,EAAMzf,IAAKtgB,EAAWH,IAG3E,C,eCPAg+B,EAAoBmC,EAAI,CAAC,EAGzBnC,EAAoBE,EAAI,SAASkC,GAChC,OAAOntB,QAAQC,IAAI1P,OAAO+T,KAAKymB,EAAoBmC,GAAGE,QAAO,SAASzR,EAAU5uB,GAE/E,OADAg+B,EAAoBmC,EAAEngC,GAAKogC,EAASxR,GAC7BA,CACR,GAAG,IACJ,C,eCPAoP,EAAoBsC,EAAI,SAASF,GAEhC,MAAO,MAAQA,EAAU,IAAM,CAAC,GAAK,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,IAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,IAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,YAAYA,GAAW,KACtrC,C,eCHApC,EAAoBuC,SAAW,SAASH,GAEvC,MAAO,OAASA,EAAU,IAAM,CAAC,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,YAAYA,GAAW,MAC3U,C,eCJApC,EAAoBwC,EAAI,WACvB,GAA0B,kBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOrhC,MAAQ,IAAIuO,SAAS,cAAb,EAChB,CAAE,MAAOuwB,GACR,GAAsB,kBAAXjmB,OAAqB,OAAOA,MACxC,CACA,CAPuB,E,eCAxB+lB,EAAoB0C,IAAM,SAASvxB,GASlC,OARAA,EAAS3L,OAAO80B,OAAOnpB,GAClBA,EAAOuqB,WAAUvqB,EAAOuqB,SAAW,IACxCl2B,OAAOy8B,eAAe9wB,EAAQ,UAAW,CACxC+wB,YAAY,EACZxf,IAAK,WACJ,MAAM,IAAIzL,MAAM,0FAA4F9F,EAAOlO,GACpH,IAEMkO,CACR,C,eCVA6uB,EAAoBjwB,EAAI,SAASwL,EAAKonB,GAAQ,OAAOn9B,OAAOo9B,UAAUC,eAAenC,KAAKnlB,EAAKonB,EAAO,C,eCAtG,IAAIG,EAAa,CAAC,EACdC,EAAoB,8BAExB/C,EAAoB1S,EAAI,SAASlV,EAAK4qB,EAAMhhC,EAAKogC,GAChD,GAAGU,EAAW1qB,GAAQ0qB,EAAW1qB,GAAKpO,KAAKg5B,OAA3C,CACA,IAAItsB,EAAQusB,EACZ,QAAWntB,IAAR9T,EAEF,IADA,IAAIkhC,EAAU5iB,SAAS6iB,qBAAqB,UACpCzlB,EAAI,EAAGA,EAAIwlB,EAAQ38B,OAAQmX,IAAK,CACvC,IAAI+hB,EAAIyD,EAAQxlB,GAChB,GAAG+hB,EAAE2D,aAAa,QAAUhrB,GAAOqnB,EAAE2D,aAAa,iBAAmBL,EAAoB/gC,EAAK,CAAE0U,EAAS+oB,EAAG,KAAO,CACpH,CAEG/oB,IACHusB,GAAa,EACbvsB,EAAS4J,SAAStB,cAAc,UAEhCtI,EAAO2sB,QAAU,QACjB3sB,EAAO4sB,QAAU,IACbtD,EAAoBuD,IACvB7sB,EAAOmhB,aAAa,QAASmI,EAAoBuD,IAElD7sB,EAAOmhB,aAAa,eAAgBkL,EAAoB/gC,GAExD0U,EAAO5C,IAAMsE,GAEd0qB,EAAW1qB,GAAO,CAAC4qB,GACnB,IAAIQ,EAAmB,SAASp2B,EAAMnF,GAErCyO,EAAO+sB,QAAU/sB,EAAOgtB,OAAS,KACjCC,aAAaL,GACb,IAAIM,EAAUd,EAAW1qB,GAIzB,UAHO0qB,EAAW1qB,GAClB1B,EAAOmtB,YAAcntB,EAAOmtB,WAAWC,YAAYptB,GACnDktB,GAAWA,EAAQ7sB,SAAQ,SAASzD,GAAM,OAAOA,EAAGrL,EAAQ,IACzDmF,EAAM,OAAOA,EAAKnF,EACtB,EACIq7B,EAAUS,WAAWP,EAAiBQ,KAAK,UAAMluB,EAAW,CAAElS,KAAM,UAAW0M,OAAQoG,IAAW,MACtGA,EAAO+sB,QAAUD,EAAiBQ,KAAK,KAAMttB,EAAO+sB,SACpD/sB,EAAOgtB,OAASF,EAAiBQ,KAAK,KAAMttB,EAAOgtB,QACnDT,GAAc3iB,SAASrB,KAAKC,YAAYxI,EApCkB,CAqC3D,C,eCxCAspB,EAAoBoB,EAAI,SAAShwB,GACX,qBAAX6yB,QAA0BA,OAAOC,aAC1C1+B,OAAOy8B,eAAe7wB,EAAS6yB,OAAOC,YAAa,CAAEthC,MAAO,WAE7D4C,OAAOy8B,eAAe7wB,EAAS,aAAc,CAAExO,OAAO,GACvD,C,eCNAo9B,EAAoBmE,IAAM,SAAShzB,GAGlC,OAFAA,EAAOizB,MAAQ,GACVjzB,EAAOuqB,WAAUvqB,EAAOuqB,SAAW,IACjCvqB,CACR,C,eCJA6uB,EAAoBtkB,EAAI,+B,eCAxB,GAAwB,qBAAb4E,SAAX,CACA,IAAI+jB,EAAmB,SAASjC,EAASkC,EAAUC,EAAQtE,EAASuE,GACnE,IAAIC,EAAUnkB,SAAStB,cAAc,QAErCylB,EAAQr0B,IAAM,aACdq0B,EAAQ7gC,KAAO,WACf,IAAI8gC,EAAiB,SAASz8B,GAG7B,GADAw8B,EAAQhB,QAAUgB,EAAQf,OAAS,KAChB,SAAfz7B,EAAMrE,KACTq8B,QACM,CACN,IAAI0E,EAAY18B,GAASA,EAAMrE,KAC3BghC,EAAW38B,GAASA,EAAMqI,QAAUrI,EAAMqI,OAAOrM,MAAQqgC,EACzDO,EAAM,IAAI5tB,MAAM,qBAAuBmrB,EAAU,cAAgBuC,EAAY,KAAOC,EAAW,KACnGC,EAAIniC,KAAO,iBACXmiC,EAAIroB,KAAO,wBACXqoB,EAAIjhC,KAAO+gC,EACXE,EAAIC,QAAUF,EACVH,EAAQZ,YAAYY,EAAQZ,WAAWC,YAAYW,GACvDD,EAAOK,EACR,CACD,EAUA,OATAJ,EAAQhB,QAAUgB,EAAQf,OAASgB,EACnCD,EAAQxgC,KAAOqgC,EAGXC,EACHA,EAAOV,WAAWkB,aAAaN,EAASF,EAAOS,aAE/C1kB,SAASrB,KAAKC,YAAYulB,GAEpBA,CACR,EACIQ,EAAiB,SAAShhC,EAAMqgC,GAEnC,IADA,IAAIY,EAAmB5kB,SAAS6iB,qBAAqB,QAC7CzlB,EAAI,EAAGA,EAAIwnB,EAAiB3+B,OAAQmX,IAAK,CAChD,IAAIpO,EAAM41B,EAAiBxnB,GACvBynB,EAAW71B,EAAI8zB,aAAa,cAAgB9zB,EAAI8zB,aAAa,QACjE,GAAe,eAAZ9zB,EAAIc,MAAyB+0B,IAAalhC,GAAQkhC,IAAab,GAAW,OAAOh1B,CACrF,CACA,IAAI81B,EAAoB9kB,SAAS6iB,qBAAqB,SACtD,IAAQzlB,EAAI,EAAGA,EAAI0nB,EAAkB7+B,OAAQmX,IAAK,CAC7CpO,EAAM81B,EAAkB1nB,GACxBynB,EAAW71B,EAAI8zB,aAAa,aAChC,GAAG+B,IAAalhC,GAAQkhC,IAAab,EAAU,OAAOh1B,CACvD,CACD,EACI+1B,EAAiB,SAASjD,GAC7B,OAAO,IAAIntB,SAAQ,SAASgrB,EAASuE,GACpC,IAAIvgC,EAAO+7B,EAAoBuC,SAASH,GACpCkC,EAAWtE,EAAoBtkB,EAAIzX,EACvC,GAAGghC,EAAehhC,EAAMqgC,GAAW,OAAOrE,IAC1CoE,EAAiBjC,EAASkC,EAAU,KAAMrE,EAASuE,EACpD,GACD,EAEIc,EAAqB,CACxB,KAAM,GAGPtF,EAAoBmC,EAAEoD,QAAU,SAASnD,EAASxR,GACjD,IAAI4U,EAAY,CAAC,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,KAAO,EAAE,KAAO,EAAE,KAAO,EAAE,KAAO,EAAE,KAAO,EAAE,KAAO,EAAE,KAAO,EAAE,KAAO,EAAE,KAAO,EAAE,KAAO,EAAE,KAAO,EAAE,KAAO,EAAE,KAAO,GACzJF,EAAmBlD,GAAUxR,EAAS5mB,KAAKs7B,EAAmBlD,IACzB,IAAhCkD,EAAmBlD,IAAkBoD,EAAUpD,IACtDxR,EAAS5mB,KAAKs7B,EAAmBlD,GAAWiD,EAAejD,GAAStI,MAAK,WACxEwL,EAAmBlD,GAAW,CAC/B,IAAG,SAASlC,GAEX,aADOoF,EAAmBlD,GACpBlC,CACP,IAEF,CAxE2C,C,eCK3C,IAAIuF,EAAkB,CACrB,KAAM,GAGPzF,EAAoBmC,EAAEhB,EAAI,SAASiB,EAASxR,GAE1C,IAAI8U,EAAqB1F,EAAoBjwB,EAAE01B,EAAiBrD,GAAWqD,EAAgBrD,QAAWtsB,EACtG,GAA0B,IAAvB4vB,EAGF,GAAGA,EACF9U,EAAS5mB,KAAK07B,EAAmB,SAEjC,GAAG,KAAOtD,EAAS,CAElB,IAAIuD,EAAU,IAAI1wB,SAAQ,SAASgrB,EAASuE,GAAUkB,EAAqBD,EAAgBrD,GAAW,CAACnC,EAASuE,EAAS,IACzH5T,EAAS5mB,KAAK07B,EAAmB,GAAKC,GAGtC,IAAIvtB,EAAM4nB,EAAoBtkB,EAAIskB,EAAoBsC,EAAEF,GAEpDjqB,EAAQ,IAAIlB,MACZ2uB,EAAe,SAAS39B,GAC3B,GAAG+3B,EAAoBjwB,EAAE01B,EAAiBrD,KACzCsD,EAAqBD,EAAgBrD,GACX,IAAvBsD,IAA0BD,EAAgBrD,QAAWtsB,GACrD4vB,GAAoB,CACtB,IAAIf,EAAY18B,IAAyB,SAAfA,EAAMrE,KAAkB,UAAYqE,EAAMrE,MAChEiiC,EAAU59B,GAASA,EAAMqI,QAAUrI,EAAMqI,OAAOwD,IACpDqE,EAAMK,QAAU,iBAAmB4pB,EAAU,cAAgBuC,EAAY,KAAOkB,EAAU,IAC1F1tB,EAAMzV,KAAO,iBACbyV,EAAMvU,KAAO+gC,EACbxsB,EAAM2sB,QAAUe,EAChBH,EAAmB,GAAGvtB,EACvB,CAEF,EACA6nB,EAAoB1S,EAAElV,EAAKwtB,EAAc,SAAWxD,EAASA,EAC9D,MAAOqD,EAAgBrD,GAAW,CAGtC,EAUApC,EAAoBa,EAAEM,EAAI,SAASiB,GAAW,OAAoC,IAA7BqD,EAAgBrD,EAAgB,EAGrF,IAAI0D,EAAuB,SAASC,EAA4BlgC,GAC/D,IAKI06B,EAAU6B,EALVrB,EAAWl7B,EAAK,GAChBmgC,EAAcngC,EAAK,GACnBogC,EAAUpgC,EAAK,GAGI6X,EAAI,EAC3B,GAAGqjB,EAASpyB,MAAK,SAAS1L,GAAM,OAA+B,IAAxBwiC,EAAgBxiC,EAAW,IAAI,CACrE,IAAIs9B,KAAYyF,EACZhG,EAAoBjwB,EAAEi2B,EAAazF,KACrCP,EAAoBW,EAAEJ,GAAYyF,EAAYzF,IAGhD,GAAG0F,EAAS,IAAInF,EAASmF,EAAQjG,EAClC,CAEA,IADG+F,GAA4BA,EAA2BlgC,GACrD6X,EAAIqjB,EAASx6B,OAAQmX,IACzB0kB,EAAUrB,EAASrjB,GAChBsiB,EAAoBjwB,EAAE01B,EAAiBrD,IAAYqD,EAAgBrD,IACrEqD,EAAgBrD,GAAS,KAE1BqD,EAAgBrD,GAAW,EAE5B,OAAOpC,EAAoBa,EAAEC,EAC9B,EAEIoF,EAAqBC,KAAK,0CAA4CA,KAAK,2CAA6C,GAC5HD,EAAmBnvB,QAAQ+uB,EAAqB9B,KAAK,KAAM,IAC3DkC,EAAmBl8B,KAAO87B,EAAqB9B,KAAK,KAAMkC,EAAmBl8B,KAAKg6B,KAAKkC,G,ICpFvF,IAAIE,EAAsBpG,EAAoBa,OAAE/qB,EAAW,CAAC,MAAM,WAAa,OAAOkqB,EAAoB,MAAQ,IAClHoG,EAAsBpG,EAAoBa,EAAEuF,E","sources":["webpack://@radiantearth/stac-browser/./src/components/Assets.vue","webpack://@radiantearth/stac-browser/./src/components/Asset.vue","webpack://@radiantearth/stac-browser/src/components/Asset.vue","webpack://@radiantearth/stac-browser/./src/components/Asset.vue?8e4e","webpack://@radiantearth/stac-browser/./src/components/Asset.vue?923a","webpack://@radiantearth/stac-browser/src/components/Assets.vue","webpack://@radiantearth/stac-browser/./src/components/Assets.vue?3635","webpack://@radiantearth/stac-browser/./src/components/Assets.vue?3975","webpack://@radiantearth/stac-browser/./src/components/Catalog.vue","webpack://@radiantearth/stac-browser/src/components/Catalog.vue","webpack://@radiantearth/stac-browser/./src/components/Catalog.vue?b77d","webpack://@radiantearth/stac-browser/./src/components/Catalog.vue?462e","webpack://@radiantearth/stac-browser/./src/components/Description.vue","webpack://@radiantearth/stac-browser/src/components/Description.vue","webpack://@radiantearth/stac-browser/./src/components/Description.vue?2c0f","webpack://@radiantearth/stac-browser/./src/components/Description.vue?234b","webpack://@radiantearth/stac-browser/./src/components/Item.vue","webpack://@radiantearth/stac-browser/src/components/Item.vue","webpack://@radiantearth/stac-browser/./src/components/Item.vue?8cc2","webpack://@radiantearth/stac-browser/./src/components/Item.vue?9ab6","webpack://@radiantearth/stac-browser/./src/components/Items.vue","webpack://@radiantearth/stac-browser/./src/components/Pagination.vue","webpack://@radiantearth/stac-browser/src/components/Pagination.vue","webpack://@radiantearth/stac-browser/./src/components/Pagination.vue?6519","webpack://@radiantearth/stac-browser/./src/components/Pagination.vue?c5cd","webpack://@radiantearth/stac-browser/src/components/Items.vue","webpack://@radiantearth/stac-browser/./src/components/Items.vue?10d9","webpack://@radiantearth/stac-browser/./src/components/Items.vue?2880","webpack://@radiantearth/stac-browser/./src/components/Loading.vue","webpack://@radiantearth/stac-browser/src/components/Loading.vue","webpack://@radiantearth/stac-browser/./src/components/Loading.vue?5767","webpack://@radiantearth/stac-browser/./src/components/Loading.vue?7ea9","webpack://@radiantearth/stac-browser/./src/components/StacLink.vue","webpack://@radiantearth/stac-browser/src/components/StacLink.vue","webpack://@radiantearth/stac-browser/./src/components/StacLink.vue?f32a","webpack://@radiantearth/stac-browser/./src/components/StacLink.vue?a103","webpack://@radiantearth/stac-browser/./config.js","webpack://@radiantearth/stac-browser/./src/components/StacFieldsMixin.js","webpack://@radiantearth/stac-browser/./src/components/ThumbnailCardMixin.js","webpack://@radiantearth/stac-browser/./src/config.js","webpack://@radiantearth/stac-browser/./src/i18n.js","webpack://@radiantearth/stac-browser/./src/locale-id.js","webpack://@radiantearth/stac-browser/./src/StacBrowser.vue","webpack://@radiantearth/stac-browser/./src/views/Browse.vue","webpack://@radiantearth/stac-browser/./src/components/ErrorAlert.vue","webpack://@radiantearth/stac-browser/src/components/ErrorAlert.vue","webpack://@radiantearth/stac-browser/./src/components/ErrorAlert.vue?0e59","webpack://@radiantearth/stac-browser/./src/components/ErrorAlert.vue?a728","webpack://@radiantearth/stac-browser/./src/views/Item.vue","webpack://@radiantearth/stac-browser/./src/components/ShowAssetMixin.js","webpack://@radiantearth/stac-browser/./src/schema-org.js","webpack://@radiantearth/stac-browser/src/views/Item.vue","webpack://@radiantearth/stac-browser/./src/views/Item.vue?a34c","webpack://@radiantearth/stac-browser/./src/views/Item.vue?8b34","webpack://@radiantearth/stac-browser/./src/views/Catalog.vue","webpack://@radiantearth/stac-browser/./src/components/Catalogs.vue","webpack://@radiantearth/stac-browser/./src/components/ViewButtons.vue","webpack://@radiantearth/stac-browser/src/components/ViewButtons.vue","webpack://@radiantearth/stac-browser/./src/components/ViewButtons.vue?7d7e","webpack://@radiantearth/stac-browser/./src/components/ViewButtons.vue?e0ba","webpack://@radiantearth/stac-browser/./src/components/ViewMixin.js","webpack://@radiantearth/stac-browser/src/components/Catalogs.vue","webpack://@radiantearth/stac-browser/./src/components/Catalogs.vue?bd7f","webpack://@radiantearth/stac-browser/./src/components/Catalogs.vue?cc1b","webpack://@radiantearth/stac-browser/src/views/Catalog.vue","webpack://@radiantearth/stac-browser/./src/views/Catalog.vue?75d2","webpack://@radiantearth/stac-browser/./src/views/Catalog.vue?ddb4","webpack://@radiantearth/stac-browser/src/views/Browse.vue","webpack://@radiantearth/stac-browser/./src/views/Browse.vue?fa85","webpack://@radiantearth/stac-browser/./src/views/Browse.vue?dda6","webpack://@radiantearth/stac-browser/./src/router/index.js","webpack://@radiantearth/stac-browser/./src/models/cql2/operators/advanced.js","webpack://@radiantearth/stac-browser/./src/models/cql2/queryable.js","webpack://@radiantearth/stac-browser/./src/store/utils.js","webpack://@radiantearth/stac-browser/./src/store/index.js","webpack://@radiantearth/stac-browser/./src/components/StacHeader.vue","webpack://@radiantearth/stac-browser/./src/components/Source.vue","webpack://@radiantearth/stac-browser/./src/components/Url.vue","webpack://@radiantearth/stac-browser/src/components/Url.vue","webpack://@radiantearth/stac-browser/./src/components/Url.vue?dc88","webpack://@radiantearth/stac-browser/./src/components/Url.vue?ab5e","webpack://@radiantearth/stac-browser/src/components/Source.vue","webpack://@radiantearth/stac-browser/./src/components/Source.vue?1cfb","webpack://@radiantearth/stac-browser/./src/components/Source.vue?90bb","webpack://@radiantearth/stac-browser/src/components/StacHeader.vue","webpack://@radiantearth/stac-browser/./src/components/StacHeader.vue?4fac","webpack://@radiantearth/stac-browser/./src/components/StacHeader.vue?4265","webpack://@radiantearth/stac-browser/src/StacBrowser.vue","webpack://@radiantearth/stac-browser/./src/StacBrowser.vue?675d","webpack://@radiantearth/stac-browser/./src/StacBrowser.vue?36e0","webpack://@radiantearth/stac-browser/./src/init.js","webpack://@radiantearth/stac-browser/./src/main.js","webpack://@radiantearth/stac-browser/./src/models/cql2/operators/comparison.js","webpack://@radiantearth/stac-browser/./src/models/cql2/operators/operator.js","webpack://@radiantearth/stac-browser/./src/models/stac.js","webpack://@radiantearth/stac-browser/./src/rels.js","webpack://@radiantearth/stac-browser/./src/utils.js","webpack://@radiantearth/stac-browser/./src/locales/ lazy ^\\.\\/.*\\/default\\.js$ namespace object","webpack://@radiantearth/stac-browser/./src/locales/ sync ^\\.\\/.*\\/config\\.json$","webpack://@radiantearth/stac-browser/webpack/bootstrap","webpack://@radiantearth/stac-browser/webpack/runtime/chunk loaded","webpack://@radiantearth/stac-browser/webpack/runtime/compat get default export","webpack://@radiantearth/stac-browser/webpack/runtime/create fake namespace object","webpack://@radiantearth/stac-browser/webpack/runtime/define property getters","webpack://@radiantearth/stac-browser/webpack/runtime/ensure chunk","webpack://@radiantearth/stac-browser/webpack/runtime/get javascript chunk filename","webpack://@radiantearth/stac-browser/webpack/runtime/get mini-css chunk filename","webpack://@radiantearth/stac-browser/webpack/runtime/global","webpack://@radiantearth/stac-browser/webpack/runtime/harmony module decorator","webpack://@radiantearth/stac-browser/webpack/runtime/hasOwnProperty shorthand","webpack://@radiantearth/stac-browser/webpack/runtime/load script","webpack://@radiantearth/stac-browser/webpack/runtime/make namespace object","webpack://@radiantearth/stac-browser/webpack/runtime/node module decorator","webpack://@radiantearth/stac-browser/webpack/runtime/publicPath","webpack://@radiantearth/stac-browser/webpack/runtime/css loading","webpack://@radiantearth/stac-browser/webpack/runtime/jsonp chunk loading","webpack://@radiantearth/stac-browser/webpack/startup"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',{staticClass:\"assets mb-4\"},[(_vm.displayTitle)?_c('h2',[_vm._v(_vm._s(_vm.displayTitle))]):_vm._e(),_c('div',{staticClass:\"accordion\",attrs:{\"role\":\"tablist\"}},_vm._l((_vm.assets),function(asset,key){return _c('Asset',{key:key,attrs:{\"asset\":asset,\"expand\":_vm.expand,\"context\":_vm.context,\"definition\":_vm.definition,\"shown\":_vm.shown.includes(key),\"id\":key},on:{\"show\":_vm.show}})}),1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-card',{staticClass:\"asset\",attrs:{\"no-body\":\"\"}},[_c('b-card-header',{staticClass:\"p-0\",attrs:{\"header-tag\":\"header\",\"role\":\"tab\"}},[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle\",value:(_vm.uid),expression:\"uid\"}],staticClass:\"p-2 d-flex\",attrs:{\"block\":\"\",\"variant\":\"asset\",\"squared\":\"\"}},[_c('span',{staticClass:\"title\"},[_c('span',{staticClass:\"mr-1\",attrs:{\"aria-hidden\":\"true\"}},[(_vm.expanded)?_c('b-icon-chevron-down'):_c('b-icon-chevron-right')],1),_vm._v(\" \"+_vm._s(_vm.asset.title || _vm.id)+\" \")]),(Array.isArray(_vm.asset.roles))?_c('div',{staticClass:\"badges ml-1\"},[(_vm.shown)?_c('b-badge',{staticClass:\"shown ml-1 mb-1\",attrs:{\"variant\":\"success\",\"title\":_vm.$t('assets.currentlyShown')}},[_c('b-icon-check'),_vm._v(\" \"+_vm._s(_vm.$t('assets.shown'))+\" \")],1):_vm._e(),(_vm.asset.deprecated)?_c('b-badge',{staticClass:\"deprecated ml-1 mb-1\",attrs:{\"variant\":\"warning\"}},[_vm._v(_vm._s(_vm.$t('deprecated')))]):_vm._e(),_vm._l((_vm.asset.roles),function(role){return _c('b-badge',{key:role,staticClass:\"role ml-1 mb-1\",attrs:{\"variant\":role === 'data' ? 'primary' : 'secondary'}},[_vm._v(_vm._s(_vm.displayRole(role)))])}),(_vm.shortFileFormat)?_c('b-badge',{staticClass:\"format ml-1 mb-1\",attrs:{\"variant\":\"dark\",\"title\":_vm.fileFormat}},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.shortFileFormat)}})]):_vm._e()],2):_vm._e()])],1),_c('b-collapse',{attrs:{\"id\":_vm.uid,\"accordion\":_vm.type,\"role\":\"tabpanel\"},on:{\"input\":_vm.collapseToggled},model:{value:(_vm.expanded),callback:function ($$v) {_vm.expanded=$$v},expression:\"expanded\"}},[_c('b-card-body',[_c('b-card-title',[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.fileFormat)}})]),(_vm.href)?_c('b-button-group',{staticClass:\"actions\"},[(!_vm.isBrowserProtocol)?_c('CopyButton',{attrs:{\"variant\":\"primary\",\"copyText\":_vm.href}},[_vm._v(\" \"+_vm._s(_vm.buttonText)+\" \")]):_c('b-button',{attrs:{\"href\":_vm.href,\"target\":\"_blank\",\"variant\":\"primary\"}},[(_vm.browserCanOpenFile)?_c('b-icon-box-arrow-up-right'):_c('b-icon-download'),_vm._v(\" \"+_vm._s(_vm.buttonText)+\" \")],1),(_vm.canShow && !_vm.shown)?_c('b-button',{attrs:{\"variant\":\"primary\"},on:{\"click\":_vm.show}},[_c('b-icon-eye'),_vm._v(\"  \"),(_vm.isThumbnail)?[_vm._v(_vm._s(_vm.$t('assets.showThumbnail')))]:[_vm._v(_vm._s(_vm.$t('assets.showOnMap')))]],2):_vm._e()],1):_vm._e(),(_vm.asset.description)?_c('b-card-text',{staticClass:\"mt-4\"},[_c('Description',{attrs:{\"description\":_vm.asset.description,\"compact\":\"\"}})],1):_vm._e(),_c('Metadata',{staticClass:\"mt-4\",attrs:{\"data\":_vm.asset,\"context\":_vm.context,\"ignoreFields\":_vm.ignore,\"title\":\"\",\"type\":\"Asset\"}})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Asset.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Asset.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Asset.vue?vue&type=template&id=fe14418c\"\nimport script from \"./Asset.vue?vue&type=script&lang=js\"\nexport * from \"./Asset.vue?vue&type=script&lang=js\"\nimport style0 from \"./Asset.vue?vue&type=style&index=0&id=fe14418c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Assets.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Assets.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Assets.vue?vue&type=template&id=25370a32\"\nimport script from \"./Assets.vue?vue&type=script&lang=js\"\nexport * from \"./Assets.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-card',{directives:[{name:\"b-visible\",rawName:\"v-b-visible.400\",value:(_vm.load),expression:\"load\",modifiers:{\"400\":true}}],class:_vm.classes,attrs:{\"no-body\":\"\",\"img-right\":_vm.isList}},[(_vm.hasImage)?_c('b-card-img-lazy',_vm._b({staticClass:\"thumbnail\",attrs:{\"offset\":\"200\"}},'b-card-img-lazy',_vm.thumbnail,false)):_vm._e(),_c('b-card-body',[_c('b-card-title',[_c('StacLink',{staticClass:\"stretched-link\",attrs:{\"data\":[_vm.data, _vm.catalog]}})],1),(_vm.data && (_vm.fileFormats.length > 0 || _vm.data.description || _vm.data.deprecated))?_c('b-card-text',{staticClass:\"intro\"},[(_vm.data.deprecated)?_c('b-badge',{staticClass:\"mr-1 mt-1 deprecated\",attrs:{\"variant\":\"warning\"}},[_vm._v(_vm._s(_vm.$t('deprecated')))]):_vm._e(),_vm._l((_vm.fileFormats),function(format){return _c('b-badge',{key:format,staticClass:\"mr-1 mt-1 fileformat\",attrs:{\"variant\":\"secondary\"}},[_vm._v(_vm._s(_vm._f(\"formatMediaType\")(format)))])}),_vm._v(\" \"+_vm._s(_vm._f(\"summarize\")(_vm.data.description))+\" \")],2):_vm._e(),(_vm.temporalExtent)?_c('b-card-text',{staticClass:\"datetime\"},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.temporalExtent)}})]):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Catalog.vue?vue&type=template&id=03a8721e\"\nimport script from \"./Catalog.vue?vue&type=script&lang=js\"\nexport * from \"./Catalog.vue?vue&type=script&lang=js\"\nimport style0 from \"./Catalog.vue?vue&type=style&index=0&id=03a8721e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"styled-description\",class:{compact: _vm.compact, inline: _vm.inline},domProps:{\"innerHTML\":_vm._s(_vm.markup(_vm.description))}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Description.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Description.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Description.vue?vue&type=template&id=77c4c56a\"\nimport script from \"./Description.vue?vue&type=script&lang=js\"\nexport * from \"./Description.vue?vue&type=script&lang=js\"\nimport style0 from \"./Description.vue?vue&type=style&index=0&id=77c4c56a&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-card',{directives:[{name:\"b-visible\",rawName:\"v-b-visible.400\",value:(_vm.load),expression:\"load\",modifiers:{\"400\":true}}],staticClass:\"item-card\",class:{queued: !_vm.data, deprecated: _vm.isDeprecated, description: _vm.hasDescription},attrs:{\"no-body\":\"\"}},[(_vm.hasImage)?_c('b-card-img-lazy',_vm._b({staticClass:\"thumbnail\",attrs:{\"offset\":\"200\"}},'b-card-img-lazy',_vm.thumbnail,false)):_vm._e(),_c('b-card-body',[_c('b-card-title',[_c('StacLink',{staticClass:\"stretched-link\",attrs:{\"data\":[_vm.data, _vm.item]}})],1),(_vm.fileFormats.length > 0 || _vm.hasDescription || _vm.isDeprecated)?_c('b-card-text',{staticClass:\"intro\"},[(_vm.isDeprecated)?_c('b-badge',{staticClass:\"mr-1 mt-1 deprecated\",attrs:{\"variant\":\"warning\"}},[_vm._v(_vm._s(_vm.$t('deprecated')))]):_vm._e(),_vm._l((_vm.fileFormats),function(format){return _c('b-badge',{key:format,staticClass:\"mr-1 mt-1 fileformat\",attrs:{\"variant\":\"secondary\"}},[_vm._v(_vm._s(_vm._f(\"formatMediaType\")(format)))])}),(_vm.hasDescription)?[_vm._v(_vm._s(_vm._f(\"summarize\")(_vm.data.properties.description)))]:_vm._e()],2):_vm._e(),_c('b-card-text',[_c('small',{staticClass:\"text-muted\"},[(_vm.extent)?[_vm._v(_vm._s(_vm._f(\"formatTemporalExtent\")(_vm.extent)))]:(_vm.data && _vm.data.properties.datetime)?[_vm._v(_vm._s(_vm._f(\"formatTimestamp\")(_vm.data.properties.datetime)))]:[_vm._v(_vm._s(_vm.$t('items.noTime')))]],2)])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Item.vue?vue&type=template&id=2c5ce650\"\nimport script from \"./Item.vue?vue&type=script&lang=js\"\nexport * from \"./Item.vue?vue&type=script&lang=js\"\nimport style0 from \"./Item.vue?vue&type=style&index=0&id=2c5ce650&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',{staticClass:\"items mb-4\"},[_c('h2',[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$tc('stacItem', _vm.items.length )))]),(!_vm.api && _vm.items.length > 0)?_c('b-badge',{attrs:{\"pill\":\"\",\"variant\":\"secondary ml-2\"}},[_vm._v(_vm._s(_vm.items.length))]):_vm._e(),(!_vm.api && _vm.items.length > 1)?_c('SortButtons',{staticClass:\"ml-4\",model:{value:(_vm.sort),callback:function ($$v) {_vm.sort=$$v},expression:\"sort\"}}):_vm._e()],1),(_vm.showPagination)?_c('Pagination',{ref:\"topPagination\",attrs:{\"pagination\":_vm.pagination,\"placement\":\"top\"},on:{\"paginate\":_vm.paginate}}):_vm._e(),(_vm.allowFilter)?[(_vm.api)?_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.itemFilter\",modifiers:{\"itemFilter\":true}}],staticClass:\"mb-4 mt-2\",class:{'ml-3': _vm.showPagination},attrs:{\"pressed\":_vm.filtersOpen,\"variant\":\"outline-primary\"}},[_c('b-icon-search'),_vm._v(\" \"+_vm._s(_vm.$t('items.filter'))+\" \")],1):_vm._e(),_c('b-collapse',{attrs:{\"id\":\"itemFilter\"},model:{value:(_vm.filtersOpen),callback:function ($$v) {_vm.filtersOpen=$$v},expression:\"filtersOpen\"}},[(_vm.filtersOpen)?_c('ItemFilter',{attrs:{\"type\":\"Features\",\"title\":_vm.$t('items.filter'),\"stac\":_vm.stac,\"value\":_vm.apiFilters},on:{\"input\":_vm.emitFilter}}):_vm._e()],1)]:_vm._e(),_c('section',{staticClass:\"list\"},[(_vm.loading)?_c('Loading',{attrs:{\"fill\":\"\",\"top\":\"\"}}):_vm._e(),(_vm.chunkedItems.length > 0)?_c('b-card-group',{attrs:{\"columns\":\"\"}},_vm._l((_vm.chunkedItems),function(item){return _c('Item',{key:item.href,attrs:{\"item\":item}})}),1):_c('b-alert',{attrs:{\"variant\":_vm.hasFilters ? 'warning' : 'info',\"show\":\"\"}},[(_vm.hasFilters)?[_vm._v(_vm._s(_vm.$t('search.noItemsFound')))]:[_vm._v(_vm._s(_vm.$t('items.noneAvailableForCollection')))]],2)],1),(_vm.showPagination)?_c('Pagination',{attrs:{\"pagination\":_vm.pagination},on:{\"paginate\":_vm.paginate}}):(_vm.hasMore)?_c('b-button',{directives:[{name:\"b-visible\",rawName:\"v-b-visible.300\",value:(_vm.showMore),expression:\"showMore\",modifiers:{\"300\":true}}],attrs:{\"variant\":\"primary\"},on:{\"click\":_vm.showMore}},[_vm._v(_vm._s(_vm.$t('showMore')))]):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-button-group',{class:_vm.classes},[_c('b-button',{attrs:{\"disabled\":!_vm.pagination.first,\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.paginate(_vm.pagination.first)}}},[_vm._v(_vm._s(_vm.$t('pagination.first')))]),_c('b-button',{attrs:{\"disabled\":!_vm.pagination.prev,\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.paginate(_vm.pagination.prev)}}},[_vm._v(_vm._s(_vm.$t('pagination.previous')))]),_c('b-button',{attrs:{\"disabled\":!_vm.pagination.next,\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.paginate(_vm.pagination.next)}}},[_vm._v(_vm._s(_vm.$t('pagination.next')))]),(_vm.pagination.last)?_c('b-button',{attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.paginate(_vm.pagination.last)}}},[_vm._v(_vm._s(_vm.$t('pagination.last')))]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Pagination.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Pagination.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Pagination.vue?vue&type=template&id=56aa2ed6\"\nimport script from \"./Pagination.vue?vue&type=script&lang=js\"\nexport * from \"./Pagination.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Items.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Items.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Items.vue?vue&type=template&id=c0719580&scoped=true\"\nimport script from \"./Items.vue?vue&type=script&lang=js\"\nexport * from \"./Items.vue?vue&type=script&lang=js\"\nimport style0 from \"./Items.vue?vue&type=style&index=0&id=c0719580&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c0719580\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:_vm.classes},[_c('b-spinner',{attrs:{\"label\":_vm.$t('loading'),\"small\":_vm.small}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Loading.vue?vue&type=template&id=67931bb8&scoped=true\"\nimport script from \"./Loading.vue?vue&type=script&lang=js\"\nexport * from \"./Loading.vue?vue&type=script&lang=js\"\nimport style0 from \"./Loading.vue?vue&type=style&index=0&id=67931bb8&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"67931bb8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.component,_vm._b({tag:\"component\",staticClass:\"stac-link\",attrs:{\"title\":_vm.tooltip}},'component',_vm.attributes,false),[(_vm.icon)?[_c('img',{staticClass:\"icon mr-2\",attrs:{\"src\":_vm.icon.href,\"alt\":_vm.icon.title,\"title\":_vm.icon.title}})]:_vm._e(),_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.displayTitle))])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacLink.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacLink.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./StacLink.vue?vue&type=template&id=2b8aea7d\"\nimport script from \"./StacLink.vue?vue&type=script&lang=js\"\nexport * from \"./StacLink.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","module.exports = {\n catalogUrl: null,\n catalogTitle: \"STAC Browser\",\n allowExternalAccess: true, // Must be true if catalogUrl is not given\n allowedDomains: [],\n detectLocaleFromBrowser: true,\n storeLocale: true,\n locale: \"en\",\n fallbackLocale: \"en\",\n supportedLocales: [\n \"de\",\n// \"de-CH\",\n \"es\",\n \"en\",\n \"fr\",\n// \"fr-CA\",\n// \"fr-CH\",\n \"it\",\n// \"it-CH\",\n \"ro\"\n ],\n apiCatalogPriority: null,\n useTileLayerAsFallback: true,\n tileSourceTemplate: null,\n displayGeoTiffByDefault: false,\n buildTileUrlTemplate: ({href, asset}) => \"https://tiles.rdnt.io/tiles/{z}/{x}/{y}@2x?url=\" + encodeURIComponent(asset.href.startsWith(\"/vsi\") ? asset.href : href),\n stacProxyUrl: null,\n pathPrefix: \"/\",\n historyMode: \"history\",\n cardViewMode: \"cards\",\n cardViewSort: \"asc\",\n showThumbnailsAsAssets: false,\n stacLint: true,\n geoTiffResolution: 128,\n redirectLegacyUrls: false,\n itemsPerPage: 12,\n defaultThumbnailSize: null,\n maxPreviewsOnMap: 50,\n crossOriginMedia: null,\n requestHeaders: {},\n requestQueryParameters: {},\n preprocessSTAC: null,\n authConfig: {\n type: 'header',\n key: 'Authorization',\n formatter: token => `Bearer ${token}`, // This is an example, there's also the simpler variant to just provide the string 'Bearer' in this case\n description: `Please retrieve the token from our [API console](https://example.com/api-console).\\n\\nFor further questions contact .`\n }\n};\n","import { mapState } from 'vuex';\n\nexport default functions => {\n let mixin = {\n computed: {\n ...mapState(['uiLanguage'])\n },\n methods: {}\n };\n for(let name in functions) {\n let fn = functions[name];\n mixin.methods[name] = function() {\n // We call uiLanguage once so that it's a dependency for the computed property\n // which makes the computed property to re-render when uiLanguage changes.\n this.uiLanguage;\n return fn(...arguments);\n };\n }\n return mixin;\n};","import { mapState } from 'vuex';\n\nexport default {\n props: {\n showThumbnail: {\n type: Boolean,\n default: true\n }\n },\n computed: {\n ...mapState(['cardViewMode', 'crossOriginMedia', 'defaultThumbnailSize']),\n isList() {\n return this.data && !this.data.isItem() && this.cardViewMode === 'list';\n },\n hasImage() {\n return this.showThumbnail && this.thumbnail;\n },\n thumbnail() {\n if (this.data) {\n let thumbnails = this.data.getThumbnails(true, 'thumbnail');\n if (thumbnails.length > 0) {\n let t = thumbnails[0];\n let width, height;\n if (Array.isArray(t['proj:shape']) && t['proj:shape'].length === 2) {\n [height, width] = t['proj:shape'];\n }\n else if (Array.isArray(this.defaultThumbnailSize) && this.defaultThumbnailSize.length === 2) {\n [height, width] = this.defaultThumbnailSize;\n }\n return {\n src: t.href,\n alt: t.title,\n crossorigin: this.crossOriginMedia,\n right: this.isList,\n blankColor: \"rgba(0, 0, 0, 0.125)\",\n width,\n height,\n // for b-card-img-lazy\n \"blank-width\": width,\n \"blank-height\": height\n };\n }\n }\n return null;\n }\n }\n};","let config;\nif (typeof CONFIG_PATH === 'undefined' && typeof CONFIG_CLI === 'undefined') {\n config = require('../config');\n}\nelse {\n config = Object.assign(require(CONFIG_PATH), CONFIG_CLI);\n}\n\nexport default config;","import Vue from 'vue';\nimport VueI18n from 'vue-i18n';\nimport CONFIG from './config';\nimport {default as Fields} from '@radiantearth/stac-fields/I18N';\nimport Utils from './utils';\n\nVue.use(VueI18n);\n\nexport const API_LANGUAGE_CONFORMANCE = ['https://api.stacspec.org/v1.*/language'];\n\nconst LOCALE_CONFIG = {};\n\nfunction loadLocaleConfig() {\n // Load locale config\n for(let locale of CONFIG.supportedLocales) {\n LOCALE_CONFIG[locale] = require(`./locales/${locale}/config.json`);\n }\n const messages = {};\n // Add language names all other languages\n for(let locale in LOCALE_CONFIG) {\n messages[locale] = {\n languages: LOCALE_CONFIG\n };\n }\n return messages;\n}\n\nconst i18n = new VueI18n({\n locale: CONFIG.locale,\n fallbackLocale: CONFIG.fallbackLocale,\n messages: loadLocaleConfig()\n});\nexport default i18n;\n\nexport function loadDefaultMessages() {\n return Promise.all([\n loadMessages(CONFIG.locale),\n loadMessages(CONFIG.fallbackLocale)\n ]);\n}\n\nexport async function loadMessages(locale) {\n // Check whether the language has already been loaded\n // Note that a languages key is already present thus check >1 and not >0\n if (Utils.size(i18n.messages[locale]) > 1) {\n return;\n }\n const messages = (await import(`./locales/${locale}/default.js`)).default;\n i18n.mergeLocaleMessage(locale, messages);\n}\n\nexport function translateFields(value, vars = null) {\n if (typeof value !== 'string' || value.length === 0) {\n return value;\n }\n let key = `fields.${value}`;\n if (i18n.te(key)) {\n return i18n.t(key, null, vars);\n }\n return Fields.format(value, vars);\n}","// This code is based on https://github.com/cherry-projects/locale-id\n// Due to the \"heavy\" dependencies, it has been slimmed down\n\n// http://userguide.icu-project.org/locale\nexport default function parse(locale) {\n if (!locale) {\n return undefined;\n }\n\n // extract keyword\n const stringLocale = String(locale);\n const keywordPos = stringLocale.indexOf('@');\n\n const keyword = keywordPos !== -1\n ? stringLocale.substr(keywordPos + 1)\n : undefined;\n\n const localeWithoutKeyword = keywordPos !== -1\n ? stringLocale.substr(0, keywordPos)\n : stringLocale;\n\n // en-us => en_us\n const parts = String(localeWithoutKeyword)\n .replace(/-/g, '_')\n .split('_');\n\n if (!parts.length || parts.length > 4) {\n return undefined;\n }\n\n const language = parts.shift();\n if (!language) {\n return undefined;\n }\n\n const retVar = {\n keyword,\n language: language.toLowerCase(),\n };\n\n if (!parts.length) {\n return retVar;\n }\n\n if (parts.length === 3) {\n const variant = parts.pop();\n if (variant) {\n retVar.variant = variant.toUpperCase();\n }\n }\n\n let country = parts.pop();\n if (country.length > 3) {\n retVar.keyword = country;\n\n country = parts.pop();\n }\n\n if (country) {\n retVar.country = country.toUpperCase();\n }\n\n if (!parts.length) {\n return retVar;\n }\n\n const script = parts.pop();\n if (typeof script === 'string' && script.length >= 1) {\n retVar.script = script[0].toUpperCase() + script.substring(1).toLowerCase();\n }\n\n return retVar;\n}\n\nexport function normalize(locale, delimeter = '_') {\n const obj = parse(locale);\n if (!obj) {\n return obj;\n }\n\n let result = obj.language;\n\n if (obj.script) {\n result += `${delimeter}${obj.script}`;\n }\n\n if (obj.country) {\n result += `${delimeter}${obj.country}`;\n }\n\n return result;\n}\n\nconst splitAcceptLanguageRegEx = /([a-z]{1,8}(-[a-z]{1,8})?)\\s*(;\\s*q\\s*=\\s*(1|0\\.[0-9]+))?/ig;\nconst acceptLanguageItemRegEx = /^([a-z]{1,8}(-[a-z]{1,8})?)/i;\n\nexport function normalizeAcceptLanguage(acceptLanguage) {\n const returnItems = [];\n if (!acceptLanguage) {\n return returnItems;\n }\n\n const items = acceptLanguage.match(splitAcceptLanguageRegEx) || [];\n items.forEach(acceptLanguageItem => {\n const matches = acceptLanguageItem.match(acceptLanguageItemRegEx) || [];\n const locale = normalize(matches[0]);\n if (locale) {\n returnItems.push(locale);\n }\n });\n\n return returnItems;\n}\n\nexport function prepareSupported(supported) {\n const lgs = {};\n\n supported.forEach(supportedLocale => {\n const { language, country } = parse(supportedLocale);\n if (!language) {\n throw new Error(`Locale ${supportedLocale} is not parsable`);\n }\n\n if (!lgs[language]) {\n lgs[language] = {\n countries: {},\n firstCountry: undefined,\n main: undefined,\n };\n }\n\n const lg = lgs[language];\n if (country) {\n lg.countries[country] = supportedLocale;\n\n if (!lg.firstCountry) {\n lg.firstCountry = supportedLocale;\n }\n } else {\n lg.main = supportedLocale;\n }\n });\n\n return lgs;\n}\n\nexport function getBest(supported, locale, defaultLocale, getAnyCountry) {\n const lgs = Array.isArray(supported) ? prepareSupported(supported) : supported;\n\n // return defaultLocale if current locale is undefined\n if (!locale && defaultLocale) {\n return getBest(supported, defaultLocale, undefined, getAnyCountry);\n }\n\n if (!locale) {\n return undefined;\n }\n\n const { language, country } = parse(locale);\n if (!language) {\n return defaultLocale;\n }\n\n // selected locale is not supported\n if (!lgs[language]) {\n if (locale === defaultLocale) {\n return undefined;\n }\n\n return getBest(supported, defaultLocale, null, getAnyCountry);\n }\n\n const { countries, main = defaultLocale, firstCountry } = lgs[language];\n if (!countries || !country) {\n if (getAnyCountry && firstCountry) {\n return firstCountry;\n }\n\n return main;\n }\n\n if (getAnyCountry && firstCountry) {\n return countries[country] ? countries[country] : firstCountry;\n }\n\n return countries[country] ? countries[country] : main;\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-container',{attrs:{\"id\":\"stac-browser\"}},[(_vm.doAuth.length > 0)?_c('Authentication'):_vm._e(),(_vm.globalError)?_c('ErrorAlert',_vm._b({staticClass:\"global-error\",on:{\"close\":_vm.hideError}},'ErrorAlert',_vm.globalError,false)):_vm._e(),(_vm.sidebar)?_c('Sidebar'):_vm._e(),_c('header',[_c('div',{staticClass:\"logo\"},[_vm._v(_vm._s(_vm.displayCatalogTitle))]),_c('StacHeader',{on:{\"enableSidebar\":function($event){_vm.sidebar = true}}})],1),_c('router-view'),_c('footer',[_c('i18n',{staticClass:\"poweredby text-muted\",attrs:{\"tag\":\"small\",\"path\":\"poweredBy\"},scopedSlots:_vm._u([{key:\"link\",fn:function(){return [_c('a',{attrs:{\"href\":\"https://github.com/radiantearth/stac-browser\",\"target\":\"_blank\"}},[_vm._v(\"STAC Browser\")]),_vm._v(\" \"+_vm._s(_vm.browserVersion)+\" \")]},proxy:true}])})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('main',{staticClass:\"browse d-flex flex-column\"},[(!_vm.allowExternalAccess && _vm.isExternal)?_c('b-alert',{attrs:{\"show\":\"\"}},[_c('p',[_vm._v(_vm._s(_vm.$t('errors.noExternalAccess')))])]):_vm._e(),(_vm.error)?_c('ErrorAlert',{attrs:{\"dismissible\":false,\"url\":_vm.url,\"description\":_vm.errorDescription,\"id\":_vm.errorId}}):(_vm.loading)?_c('Loading',{attrs:{\"stretch\":\"\"}}):_c(_vm.component,{tag:\"component\"})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-alert',{attrs:{\"variant\":\"danger\",\"show\":\"\",\"dismissible\":_vm.dismissible},on:{\"dismissed\":function($event){return _vm.$emit('close')}}},[_c('p',{staticClass:\"message\"},[_vm._v(_vm._s(_vm.message || _vm.$t('errors.default')))]),(_vm.error && _vm.error.message)?_c('dl',{staticClass:\"error\"},[_c('dt',[_vm._v(_vm._s(_vm.$t('errors.labels.cause')))]),_c('dd',[_vm._v(_vm._s(_vm.error.message))])]):_vm._e(),(_vm.description)?_c('dl',{staticClass:\"description\"},[_c('dt',[_vm._v(_vm._s(_vm.$t('errors.labels.reason')))]),_c('dd',[_vm._v(_vm._s(_vm.description))])]):_vm._e(),(_vm.id)?_c('dl',{staticClass:\"id\"},[_c('dt',[_vm._v(_vm._s(_vm.$t('errors.labels.code')))]),_c('dd',[_c('code',[_vm._v(_vm._s(_vm.id))])])]):_vm._e(),(_vm.url)?_c('dl',{staticClass:\"url\"},[_c('dt',[_vm._v(_vm._s(_vm.$t('errors.labels.requestURL')))]),_c('dd',[_c('code',[_vm._v(_vm._s(_vm.url))])])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ErrorAlert.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ErrorAlert.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ErrorAlert.vue?vue&type=template&id=09bb7d1b&scoped=true\"\nimport script from \"./ErrorAlert.vue?vue&type=script&lang=js\"\nexport * from \"./ErrorAlert.vue?vue&type=script&lang=js\"\nimport style0 from \"./ErrorAlert.vue?vue&type=style&index=0&id=09bb7d1b&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"09bb7d1b\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{key:_vm.data.id,staticClass:\"item\"},[_c('b-row',[_c('b-col',{staticClass:\"left\"},[_c('section',{staticClass:\"mb-4\"},[_c('b-card',{staticClass:\"maps-preview\",attrs:{\"no-body\":\"\"}},[_c('b-tabs',{ref:\"tabs\",attrs:{\"card\":\"\",\"pills\":\"\",\"vertical\":\"\",\"end\":\"\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('b-tab',{attrs:{\"title\":_vm.$t('map'),\"no-body\":\"\"}},[_c('Map',{attrs:{\"stac\":_vm.data,\"stacLayerData\":_vm.selectedAsset,\"scrollWheelZoom\":\"\"},on:{\"dataChanged\":_vm.dataChanged}})],1),(_vm.thumbnails.length > 0)?_c('b-tab',{attrs:{\"title\":_vm.$t('thumbnails'),\"no-body\":\"\"}},[_c('Thumbnails',{attrs:{\"thumbnails\":_vm.thumbnails}})],1):_vm._e()],1)],1)],1),(_vm.hasAssets)?_c('Assets',{attrs:{\"assets\":_vm.assets,\"context\":_vm.data,\"shown\":_vm.shownAssets},on:{\"showAsset\":_vm.showAsset}}):_vm._e(),(_vm.additionalLinks.length > 0)?_c('Links',{attrs:{\"title\":_vm.$t('additionalResources'),\"links\":_vm.additionalLinks}}):_vm._e()],1),_c('b-col',{staticClass:\"right\"},[_c('section',{staticClass:\"intro\"},[(_vm.data.properties.description)?_c('h2',[_vm._v(_vm._s(_vm.$t('description')))]):_vm._e(),(_vm.data.properties.deprecated)?_c('DeprecationNotice',{attrs:{\"data\":_vm.data}}):_vm._e(),(_vm.data.properties['anon:warning'])?_c('AnonymizedNotice',{attrs:{\"warning\":_vm.data.properties['anon:warning']}}):_vm._e(),(_vm.data.properties.description)?_c('ReadMore',{attrs:{\"lines\":10,\"text\":_vm.$t('read.more'),\"text-less\":_vm.$t('read.less')}},[_c('Description',{attrs:{\"description\":_vm.data.properties.description}})],1):_vm._e(),(Array.isArray(_vm.data.properties.keywords) && _vm.data.properties.keywords.length > 0)?_c('Keywords',{attrs:{\"keywords\":_vm.data.properties.keywords}}):_vm._e()],1),(_vm.collectionLink)?_c('CollectionLink',{attrs:{\"link\":_vm.collectionLink}}):_vm._e(),(_vm.data.properties.providers)?_c('Providers',{attrs:{\"providers\":_vm.data.properties.providers}}):_vm._e(),_c('Metadata',{attrs:{\"data\":_vm.data,\"type\":\"Item\",\"ignoreFields\":_vm.ignoredMetadataFields}})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Utils from '../utils';\nimport { mapGetters } from 'vuex';\n\nexport default {\n data() {\n return {\n shownAssetsOnMap: [],\n shownBandsOnMap: [],\n tab: null,\n selectedAsset: null,\n selectedAssetKey: null\n };\n },\n computed: {\n ...mapGetters(['thumbnails', 'hasAssets', 'assets']),\n shownAssets() {\n if (this.tab === 0) {\n return this.shownAssetsOnMap;\n }\n else if (this.tab === 1 || (this.tab === null && this.thumbnails.length > 0)) {\n let keys = [];\n let thumbnailRefs = this.thumbnails.map(t => t.href);\n for(let key in this.assets) {\n let asset = this.assets[key];\n if (thumbnailRefs.includes(asset.href)) {\n keys.push(key);\n }\n }\n return keys;\n }\n return [];\n }\n },\n methods: {\n showAsset(asset, id, isThumbnail) {\n if (isThumbnail) {\n this.tab = 1;\n }\n else {\n this.tab = 0;\n this.selectedAsset = asset;\n this.selectedAssetKey = id;\n }\n if (this.$refs.tabs) {\n Utils.scrollTo(this.$refs.tabs.$el);\n }\n },\n dataChanged(data) {\n if (!Utils.isObject(data)) {\n this.shownBandsOnMap = [];\n this.shownAssetsOnMap = [];\n }\n else if (data.assets || data.bands) {\n if (Utils.size(data.assets) > 0) {\n if (this.selectedAssetKey) {\n this.shownAssetsOnMap = [this.selectedAssetKey];\n }\n else {\n this.shownAssetsOnMap = data.assets.map(meta => meta.key);\n }\n }\n if (Utils.size(data.bands) > 0) {\n this.shownBandsOnMap = data.bands;\n }\n }\n else if (this.selectedAssetKey) {\n this.shownAssetsOnMap = [this.selectedAssetKey];\n }\n }\n }\n};","import Utils from './utils';\nimport STAC from './models/stac';\nimport URI from 'urijs';\nimport i18n from './i18n';\n\nfunction toBrowserUrl(url, store) {\n let path = store.getters.toBrowserPath(url);\n let uri = URI(window.location.origin.toString());\n if (store.state.historyMode === 'hash') {\n uri.path(store.state.pathPrefix);\n uri.fragment(path);\n }\n else {\n uri.path(store.state.pathPrefix.replace(/\\/$/, '') + path);\n }\n return uri.toString();\n}\n\nfunction addSpatialCoverage(schema, bbox) {\n if (Array.isArray(bbox) && bbox.length >= 4) {\n schema.spatialCoverage = {\n \"@type\": \"Place\",\n geo: {\n \"@type\": \"GeoShape\",\n box: (bbox || []).join(\" \")\n }\n };\n }\n}\n\nfunction formatTemporalCoverage(dates) {\n if (Array.isArray(dates) && dates.length === 2 && (typeof dates[0] === 'string' || typeof dates[1] === 'string')) {\n return dates.map(dt => dt ? dt : '..').join('/');\n }\n return null;\n}\n\nfunction makeAssets(data) {\n if (Utils.size(data.assets) > 0) {\n return Object.values(data.assets).map(a => ({\n \"@type\": \"DataDownload\",\n contentUrl: Utils.toAbsolute(a.href, data.getAbsoluteUrl()),\n encodingFormat: a.type,\n name: a.title\n }));\n }\n return [];\n}\n\nfunction makeLinks(links, data, store, type = \"DataCatalog\") {\n return links.map(link => {\n let name, isBasedOn;\n if (link instanceof STAC) {\n name = STAC.getDisplayTitle(link);\n isBasedOn = link.getAbsoluteUrl();\n }\n else {\n name = link.title;\n isBasedOn = Utils.toAbsolute(link.href, data.getAbsoluteUrl());\n }\n let obj = {\n \"@type\": type,\n name,\n url: toBrowserUrl(isBasedOn, store),\n isBasedOn\n };\n if (type === 'Dataset') {\n obj.description = fallbackDescription(link, store);\n }\n return obj;\n });\n}\n\nfunction makeProvider(providers, role) {\n return providers\n .filter(p => Utils.isObject(p) && Array.isArray(p.roles) && p.roles.includes(role))\n .map(p => ({\n \"@type\": \"Organization\",\n \"name\": p.name,\n \"description\": p.description,\n \"url\": p.url,\n \"email\": p.email || p.mail,\n }));\n}\n\nfunction fallbackDescription(data, store) {\n let stacType, container;\n if (data instanceof STAC) {\n stacType = data.isItem() ? \"Item\" : data.type;\n container = data.collection;\n }\n else if (Utils.isObject(data) && data.rel === 'item') {\n stacType = \"Item\";\n }\n if (stacType) {\n let type = i18n.tc(`stac${stacType}`);\n let inX = i18n.t('in', {catalog: container || store.catalogTitle});\n return `SpatioTemporal Asset Catalog (STAC)\\n${type} - ${data.id} ${inX}`;\n }\n}\n\nfunction createBaseSchema(data, type, store) {\n let name = STAC.getDisplayTitle(data);\n let stacUrl = data.getAbsoluteUrl();\n let url = toBrowserUrl(stacUrl, store);\n let inLanguage = data.getMetadata('language')?.code;\n let thumbnails = data.getThumbnails(true);\n let thumbnailUrl;\n if (thumbnails.length > 0) {\n thumbnailUrl = Utils.toAbsolute(thumbnails[0].href, data.getAbsoluteUrl());\n }\n let license = data.getMetadata('license');\n if (license && license !== 'proprietary' && license !== 'various') {\n license = `https://spdx.org/licenses/${license}.html`;\n }\n else {\n license = data.getLinkWithRel('license')?.href;\n }\n if (license) {\n license = Utils.toAbsolute(license, data.getAbsoluteUrl());\n }\n\n let providers = data.getMetadata('providers');\n let copyrightHolder; // licensor\n let producer; // producer\n let provider; // host\n let creator; // processor\n if (Utils.size(providers) > 0) {\n copyrightHolder = makeProvider(providers, \"licensor\");\n producer = makeProvider(providers, \"producer\");\n provider = makeProvider(providers, \"host\");\n creator = makeProvider(providers, \"processor\");\n }\n\n return {\n \"@context\": \"https://schema.org/\",\n \"@type\": type,\n name,\n description: data.getMetadata(\"description\") || fallbackDescription(data, store),\n citation: data.getMetadata(\"sci:citation\"),\n identifier: data.getMetadata(\"sci:doi\") || data.id,\n keywords: data.getMetadata(\"keywords\"),\n license,\n url,\n isBasedOn: stacUrl,\n dateCreated: data.getMetadata('created'),\n dateModified: data.getMetadata('updated'),\n datePublished: data.getMetadata('published'),\n expires: data.getMetadata('expires'),\n inLanguage,\n thumbnailUrl,\n version: data.getMetadata('version'),\n image: thumbnailUrl,\n copyrightHolder,\n producer,\n provider,\n creator\n };\n}\n\nexport function createCatalogSchema(data, parents, store) {\n if (!(data instanceof STAC)) {\n return null;\n }\n // Remove invalid links\n parents = parents.filter(link => Utils.isObject(link));\n if (parents.length > 1) {\n // Remove duplicates\n parents = parents.filter((link, i) => parents.findIndex(p => p.isBasedOn === link.isBasedOn) !== i);\n }\n\n let schema = createBaseSchema(data, 'DataCatalog', store);\n\n if (data.isCollection()) {\n if (data.extent?.temporal?.interval.length > 0) {\n schema.temporalCoverage = formatTemporalCoverage(data.extent.temporal.interval[0]);\n }\n\n if (data.extent?.spatial?.bbox.length > 0) {\n addSpatialCoverage(schema, data.extent.spatial.bbox[0]);\n }\n schema.associatedMedia = makeAssets(data);\n }\n\n schema.hasPart = makeLinks(store.getters.catalogs, data, store);\n schema.dataset = makeLinks(store.getters.items, data, store, \"Dataset\");\n schema.isPartOf = makeLinks(parents, data, store);\n\n return schema;\n}\n\nexport function createItemSchema(data, parents, store) {\n if (!(data instanceof STAC)) {\n return null;\n }\n parents = parents.filter(link => Utils.isObject(link));\n\n let schema = createBaseSchema(data, 'Dataset', store);\n\n schema.includedInDataCatalog = makeLinks(parents, data, store);\n\n let start = data.getMetadata('start_datetime');\n let end = data.getMetadata('end_datetime');\n if (start || end) {\n schema.temporalCoverage = formatTemporalCoverage([start, end]);\n }\n else {\n schema.temporalCoverage = data.getMetadata('datetime');\n }\n\n addSpatialCoverage(schema, data.bbox);\n schema.distribution = makeAssets(data);\n\n return schema;\n}\n\nexport function addSchemaToDocument(doc, schema) {\n let id = 'schema-org';\n let element = doc.getElementById(id);\n if (!element) {\n element = doc.createElement('script');\n element.type = 'application/ld+json';\n element.id = id;\n doc.head.appendChild(element);\n }\n element.innerText = JSON.stringify(schema);\n}","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Item.vue?vue&type=template&id=27219124\"\nimport script from \"./Item.vue?vue&type=script&lang=js\"\nexport * from \"./Item.vue?vue&type=script&lang=js\"\nimport style0 from \"./Item.vue?vue&type=style&index=0&id=27219124&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{key:_vm.data.id,class:{cc: true, [_vm.data.type.toLowerCase()]: true, mixed: _vm.hasCatalogs && _vm.hasItems, empty: !_vm.hasCatalogs && !_vm.hasItems}},[_c('b-row',[_c('b-col',{staticClass:\"meta\"},[_c('section',{staticClass:\"intro\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('description')))]),(_vm.data.deprecated)?_c('DeprecationNotice',{attrs:{\"data\":_vm.data}}):_vm._e(),(_vm.data['anon:warning'])?_c('AnonymizedNotice',{attrs:{\"warning\":_vm.data['anon:warning']}}):_vm._e(),(_vm.data.description)?_c('ReadMore',{attrs:{\"lines\":10,\"text\":_vm.$t('read.more'),\"text-less\":_vm.$t('read.less')}},[_c('Description',{attrs:{\"description\":_vm.data.description}})],1):_vm._e(),(Array.isArray(_vm.data.keywords) && _vm.data.keywords.length > 0)?_c('Keywords',{attrs:{\"keywords\":_vm.data.keywords}}):_vm._e(),(_vm.isCollection)?_c('section',{staticClass:\"metadata mb-4\"},[(_vm.licenses)?_c('b-row',[_c('b-col',{staticClass:\"label\",attrs:{\"md\":\"4\"}},[_vm._v(_vm._s(_vm.$t('catalog.license')))]),_c('b-col',{staticClass:\"value\",attrs:{\"md\":\"8\"},domProps:{\"innerHTML\":_vm._s(_vm.licenses)}})],1):_vm._e(),(_vm.temporalExtents)?_c('b-row',[_c('b-col',{staticClass:\"label\",attrs:{\"md\":\"4\"}},[_vm._v(_vm._s(_vm.$t('catalog.temporalExtent')))]),_c('b-col',{staticClass:\"value\",attrs:{\"md\":\"8\"},domProps:{\"innerHTML\":_vm._s(_vm.temporalExtents)}})],1):_vm._e()],1):_vm._e(),(_vm.linkPosition === 'left')?_c('Links',{attrs:{\"title\":_vm.$t('additionalResources'),\"links\":_vm.additionalLinks}}):_vm._e()],1),(_vm.isCollection || _vm.hasThumbnails)?_c('section',{staticClass:\"mb-4\"},[_c('b-card',{staticClass:\"maps-preview\",attrs:{\"no-body\":\"\"}},[_c('b-tabs',{ref:\"tabs\",attrs:{\"pills\":\"\",\"card\":\"\",\"vertical\":\"\",\"end\":\"\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[(_vm.isCollection)?_c('b-tab',{attrs:{\"title\":_vm.$t('map'),\"no-body\":\"\"}},[_c('Map',{attrs:{\"stac\":_vm.data,\"stacLayerData\":_vm.mapData,\"popover\":\"\"},on:{\"dataChanged\":_vm.dataChanged}})],1):_vm._e(),(_vm.hasThumbnails)?_c('b-tab',{attrs:{\"title\":_vm.$t('thumbnails'),\"no-body\":\"\"}},[_c('Thumbnails',{attrs:{\"thumbnails\":_vm.thumbnails}})],1):_vm._e()],1)],1)],1):_vm._e(),(_vm.hasAssets)?_c('Assets',{attrs:{\"assets\":_vm.assets,\"context\":_vm.data,\"shown\":_vm.shownAssets},on:{\"showAsset\":_vm.showAsset}}):_vm._e(),(_vm.hasItemAssets && !_vm.hasItems)?_c('Assets',{attrs:{\"assets\":_vm.data.item_assets,\"definition\":true}}):_vm._e(),(_vm.hasProviders)?_c('Providers',{attrs:{\"providers\":_vm.data.providers}}):_vm._e(),_c('Metadata',{staticClass:\"mb-4\",attrs:{\"title\":_vm.$t('metadata.title'),\"type\":_vm.data.type,\"data\":_vm.data,\"ignoreFields\":_vm.ignoredMetadataFields}}),(_vm.collectionLink)?_c('CollectionLink',{attrs:{\"link\":_vm.collectionLink}}):_vm._e(),(_vm.linkPosition === 'right')?_c('Links',{attrs:{\"title\":_vm.$t('additionalResources'),\"links\":_vm.additionalLinks}}):_vm._e()],1),(_vm.hasCatalogs)?_c('b-col',{staticClass:\"catalogs-container\"},[_c('Catalogs',{attrs:{\"catalogs\":_vm.catalogs,\"hasMore\":_vm.hasMoreCollections},on:{\"loadMore\":_vm.loadMoreCollections}})],1):_vm._e(),(_vm.hasItems)?_c('b-col',{staticClass:\"items-container\"},[_c('Items',{attrs:{\"stac\":_vm.data,\"items\":_vm.items,\"api\":_vm.isApi,\"apiFilters\":_vm.filters,\"pagination\":_vm.itemPages,\"loading\":_vm.apiItemsLoading},on:{\"paginate\":_vm.paginateItems,\"filterItems\":_vm.filterItems}}),(_vm.hasItemAssets)?_c('Assets',{attrs:{\"assets\":_vm.data.item_assets,\"definition\":true}}):_vm._e()],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',{staticClass:\"catalogs mb-4\"},[_c('h2',[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$tc('stacCatalog', _vm.catalogs.length )))]),(_vm.isComplete)?_c('b-badge',{attrs:{\"pill\":\"\",\"variant\":\"secondary ml-2\"}},[(_vm.catalogs.length !== _vm.catalogView.length)?[_vm._v(_vm._s(_vm.catalogView.length)+\"/\"+_vm._s(_vm.catalogs.length))]:[_vm._v(_vm._s(_vm.catalogs.length))]],2):_vm._e(),_c('ViewButtons',{staticClass:\"ml-4\",model:{value:(_vm.view),callback:function ($$v) {_vm.view=$$v},expression:\"view\"}}),(_vm.isComplete && _vm.catalogs.length > 1)?_c('SortButtons',{staticClass:\"ml-2\",model:{value:(_vm.sort),callback:function ($$v) {_vm.sort=$$v},expression:\"sort\"}}):_vm._e()],1),(_vm.isComplete && _vm.catalogs.length > 1)?_c('SearchBox',{staticClass:\"mt-3 mb-2\",attrs:{\"placeholder\":_vm.$t('catalogs.filterByTitle')},model:{value:(_vm.searchTerm),callback:function ($$v) {_vm.searchTerm=$$v},expression:\"searchTerm\"}}):_vm._e(),(_vm.searchTerm && _vm.catalogView.length === 0)?_c('b-alert',{attrs:{\"variant\":\"warning\",\"show\":\"\"}},[_vm._v(_vm._s(_vm.$t('catalogs.noMatches')))]):_vm._e(),_c(_vm.cardsComponent,_vm._b({tag:\"component\"},'component',_vm.cardsComponentProps,false),_vm._l((_vm.catalogView),function(catalog){return _c('Catalog',{key:catalog.href,attrs:{\"catalog\":catalog}})}),1),(_vm.hasMore)?_c('b-button',{directives:[{name:\"b-visible\",rawName:\"v-b-visible.300\",value:(_vm.loadMore),expression:\"loadMore\",modifiers:{\"300\":true}}],attrs:{\"variant\":\"primary\"},on:{\"click\":_vm.loadMore}},[_vm._v(_vm._s(_vm.$t('catalogs.loadMore')))]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-button-group',{attrs:{\"title\":_vm.$t('view.title'),\"size\":\"sm\"}},[_c('b-button',{attrs:{\"title\":_vm.$t('view.tiles.title'),\"variant\":\"outline-primary\",\"pressed\":_vm.value === 'cards'},on:{\"click\":function($event){return _vm.toggle('cards')}}},[_c('b-icon-bricks'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('view.tiles.label')))])],1),_c('b-button',{attrs:{\"title\":_vm.$t('view.list.title'),\"variant\":\"outline-primary\",\"pressed\":_vm.value === 'list'},on:{\"click\":function($event){return _vm.toggle('list')}}},[_c('b-icon-list-task'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('view.list.label')))])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ViewButtons.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ViewButtons.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ViewButtons.vue?vue&type=template&id=6a51668d\"\nimport script from \"./ViewButtons.vue?vue&type=script&lang=js\"\nexport * from \"./ViewButtons.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import ViewButtons from './ViewButtons.vue';\n\nexport default {\n components: {\n ViewButtons\n },\n computed: {\n cardsComponent() {\n return (this.view === 'list') ? 'div' : 'b-card-group';\n },\n cardsComponentProps() {\n if (this.view === 'list') {\n return {\n class: [\n 'card-list'\n ]\n };\n }\n else {\n return {\n columns: true\n };\n }\n },\n view: {\n get() {\n return this.$store.state.cardViewMode;\n },\n set(cardViewMode) {\n this.$store.commit('config', { cardViewMode });\n }\n }\n }\n};","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalogs.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalogs.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Catalogs.vue?vue&type=template&id=7aceb6cd&scoped=true\"\nimport script from \"./Catalogs.vue?vue&type=script&lang=js\"\nexport * from \"./Catalogs.vue?vue&type=script&lang=js\"\nimport style0 from \"./Catalogs.vue?vue&type=style&index=0&id=7aceb6cd&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7aceb6cd\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Catalog.vue?vue&type=template&id=ad6871b0\"\nimport script from \"./Catalog.vue?vue&type=script&lang=js\"\nexport * from \"./Catalog.vue?vue&type=script&lang=js\"\nimport style0 from \"./Catalog.vue?vue&type=style&index=0&id=ad6871b0&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Browse.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Browse.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Browse.vue?vue&type=template&id=94309aca\"\nimport script from \"./Browse.vue?vue&type=script&lang=js\"\nexport * from \"./Browse.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Browse from '../views/Browse.vue';\n\nfunction getRoutes(config) {\n let routes = [];\n\n if (config.allowExternalAccess) {\n routes.push({\n path: \"/external/(.*)\",\n name: \"browseExternal\",\n component: Browse,\n props: route => {\n return {\n path: `/external/${route.params.pathMatch}`\n };\n }\n });\n }\n\n if (!config.catalogUrl) {\n routes.push({\n path: \"/\",\n name: \"select\",\n component: () => import(\"../views/SelectDataSource.vue\")\n });\n routes.push({\n path: \"/search/external/(.*)\",\n name: \"search\",\n component: () => import(\"../views/Search.vue\"),\n props: route => {\n return {\n loadParent: `/external/${route.params.pathMatch}`\n };\n }\n });\n }\n else {\n routes.push({\n path: \"/search\",\n name: \"search\",\n component: () => import(\"../views/Search.vue\")\n });\n }\n\n routes.push({\n path: \"/(.*)\",\n name: \"browse\",\n component: Browse,\n props: route => {\n return {\n path: route.params.pathMatch\n };\n }\n });\n\n return routes;\n}\n\nexport default getRoutes;","import i18n from '../../../i18n.js';\nimport CqlComparisonOperator from './comparison';\n\nexport class CqlLike extends CqlComparisonOperator {\n\n static SYMBOL = \"like\";\n\n constructor(pred = null, obj = null) {\n super(CqlLike.SYMBOL, pred, obj);\n }\n\n static get label() {\n return \"~\";\n }\n\n static get longLabel() {\n return i18n.t('search.matches');\n }\n\n static get description() {\n return i18n.t('search.likeOperatorDescription');\n }\n\n}\n","import { formatKey } from \"@radiantearth/stac-fields/helper\";\nimport i18n from '../../i18n.js';\nimport { CqlEqual, CqlGreaterThan, CqlGreaterThanEqual, CqlLessThan, CqlLessThanEqual, CqlNotEqual } from \"./operators/comparison\";\nimport { CqlLike } from \"./operators/advanced\";\n\nexport default class Queryable {\n\n constructor(id, schema) {\n this.id = id;\n this.schema = schema;\n }\n\n get title() {\n if (typeof this.schema.title === 'string') {\n return this.schema.title;\n }\n return formatKey(this.id);\n }\n\n get description() {\n if (this.isTemporal) {\n return i18n.t('search.dateDescription');\n }\n return \"\";\n }\n\n get supported() {\n return this.isText || this.isNumeric || this.isBoolean;\n }\n\n is(type) {\n return this.types.includes(type);\n }\n\n get isSelection() {\n return Array.isArray(this.schema.enum);\n }\n\n get isText() {\n return this.is('string');\n }\n\n get isBoolean() {\n return this.is('boolean');\n }\n\n get isNumeric() {\n return this.is('number') || this.is('integer');\n }\n\n get isDate() {\n return this.isText && this.schema.format === 'date';\n }\n\n get isDateTime() {\n return this.isText && this.schema.format === 'date-time';\n }\n\n get isTemporal() {\n return this.isDate || this.isDateTime;\n }\n\n get defaultValue() {\n if (typeof this.schema.default !== 'undefined') {\n return this.schema.default;\n }\n else if (this.isSelection) {\n return this.schema.enum[0];\n }\n else if (this.isTemporal) {\n return new Date();\n }\n else if (this.isNumeric) {\n if (typeof this.schema.minimum !== 'undefined') {\n return this.schema.minimum;\n }\n return 0;\n }\n else if (this.isText) {\n return '';\n }\n else if (this.isBoolean) {\n return false;\n }\n // todo: Support boolean\n return null;\n }\n\n get types() {\n if (typeof this.schema.type === 'string') {\n return [this.schema.type];\n }\n else if (Array.isArray(this.schema.type)) {\n return this.schema.type;\n }\n return [];\n }\n\n getOperators(cql) {\n let ops = [CqlEqual, CqlNotEqual];\n if (this.isNumeric || this.isTemporal) {\n ops.push(CqlLessThan);\n ops.push(CqlLessThanEqual);\n ops.push(CqlGreaterThan);\n ops.push(CqlGreaterThanEqual);\n }\n else if (this.isText && cql.advancedComparison) {\n ops.push(CqlLike);\n }\n return ops;\n }\n\n toText() {\n return this.id;\n }\n\n toJSON() {\n return { property: this.id };\n }\n\n}","import axios from \"axios\";\nimport URI from \"urijs\";\nimport Utils from \"../utils\";\n\nexport class Loading {\n\n constructor(show = false, loadApi = false) {\n this.show = Boolean(show);\n this.loadApi = Boolean(loadApi);\n }\n\n}\n\nexport async function stacRequest(cx, link) {\n let opts;\n let headers = {\n // 'Access-Control-Allow-Origin': '*',\n 'Accept-Language': cx.getters.acceptedLanguages\n };\n if (Utils.isObject(link)) {\n let method = typeof link.method === 'string' ? link.method.toLowerCase() : 'get';\n let url = cx.getters.getRequestUrl(link.href);\n if (Utils.hasText(link.type)) {\n headers.Accept = link.type;\n }\n if (!cx.getters.isExternalUrl(url)) {\n Object.assign(headers, cx.state.requestHeaders);\n }\n if (Utils.isObject(link.headers)) {\n Object.assign(headers, link.headers);\n }\n opts = {\n method,\n url,\n headers,\n data: link.body\n // ToDo: Support for merge property from STAC API\n };\n }\n else if (typeof link === 'string') {\n let url = cx.getters.getRequestUrl(link);\n if (!cx.getters.isExternalUrl(url)) {\n Object.assign(headers, cx.state.requestHeaders);\n }\n opts = {\n method: 'get',\n url,\n headers\n };\n }\n else {\n opts = link;\n }\n return await axios(opts);\n}\n\n\nexport function unproxyUrl(absoluteUrl, proxy) {\n if (absoluteUrl instanceof URI) {\n absoluteUrl = absoluteUrl.toString();\n }\n if (typeof absoluteUrl === 'string' && Array.isArray(proxy)) {\n return absoluteUrl.replace(proxy[1], proxy[0]);\n }\n return absoluteUrl;\n}\n\nexport function proxyUrl(absoluteUrl, proxy) {\n if (absoluteUrl instanceof URI) {\n absoluteUrl = absoluteUrl.toString();\n }\n if (typeof absoluteUrl === 'string' && Array.isArray(proxy)) {\n return absoluteUrl.replace(proxy[0], proxy[1]);\n }\n return absoluteUrl;\n}\n\nexport function processSTAC(state, stac) {\n if (typeof state.preprocessSTAC === 'function') {\n stac = state.preprocessSTAC(stac, state);\n }\n return Object.freeze(stac);\n}\n\nexport function isAuthenticationError(error) {\n return [401, 403].includes(error?.response?.status);\n}\n\nexport function addQueryIfNotExists(uri, query) {\n if (Utils.size(query) == 0) {\n return uri;\n }\n for (let key in query) {\n if (!uri.hasQuery(key)) {\n uri.addQuery(key, query[key]);\n }\n }\n return uri;\n}\n","import Vue from \"vue\";\nimport Vuex from \"vuex\";\n\nimport axios from \"axios\";\nimport URI from \"urijs\";\n\nimport i18n from '../i18n';\nimport { ogcQueryables, stacBrowserSpecialHandling, stacPagination } from \"../rels\";\nimport Utils, { schemaMediaType, BrowserError } from '../utils';\nimport STAC from '../models/stac';\nimport Queryable from '../models/cql2/queryable';\n\nimport { addQueryIfNotExists, isAuthenticationError, Loading, processSTAC, proxyUrl, unproxyUrl, stacRequest } from './utils';\nimport { getBest } from '../locale-id';\n\nfunction getStore(config, router) {\n // Local settings (e.g. for currently loaded STAC entity)\n const localDefaults = () => ({\n url: '',\n title: config.catalogTitle,\n description: null,\n data: null,\n valid: null,\n parents: null,\n globalError: null,\n\n localRequestQueryParameters: {},\n stateQueryParameters: {\n language: null,\n asset: [],\n itemdef: []\n },\n\n apiItems: [],\n apiItemsLink: null,\n apiItemsPagination: {},\n\n queryables: null\n });\n\n const catalogDefaults = () => ({\n queue: [],\n privateQueryParameters: {},\n authData: null,\n // catalogUrlData: null, // cannot set this as setting it would overwrite the actual value which is added \"beforeCreate\"\n doAuth: [],\n conformsTo: [],\n dataLanguage: null,\n dataLanguages: [],\n\n apiCollections: [],\n apiItemsLoading: {},\n nextCollectionsLink: null\n });\n\n return new Vuex.Store({\n strict: true,\n state: Object.assign({}, config, localDefaults(), catalogDefaults(), {\n // Global settings\n database: {}, // STAC object, Error object or Loading object or Promise (when loading)\n allowSelectCatalog: !config.catalogUrl,\n globalRequestQueryParameters: config.requestQueryParameters,\n uiLanguage: config.locale\n }),\n getters: {\n loading: state => !state.url || !state.data || state.database[state.url] instanceof Loading,\n getApiItemsLoading: state => data => {\n let id = '';\n if (data instanceof Loading) {\n return true;\n }\n else if (data instanceof STAC) {\n id = data.id;\n }\n else if (typeof data === 'string') {\n id = data;\n }\n return state.apiItemsLoading[id] || false;\n },\n error: state => state.database[state.url] instanceof Error ? state.database[state.url] : null,\n getStac: state => (source, returnErrorObject = false) => {\n if (source instanceof STAC) {\n return source;\n }\n if (Utils.isObject(source) && Utils.hasText(source.href)) {\n source = source.href;\n }\n if (!Utils.hasText(source)) {\n return null;\n }\n let absoluteUrl = Utils.toAbsolute(source, state.url);\n let data = state.database[absoluteUrl];\n if (data instanceof STAC || (returnErrorObject && data instanceof Error)) {\n return data;\n }\n else {\n return null;\n }\n },\n\n displayCatalogTitle: (state, getters) => STAC.getDisplayTitle(getters.root, state.catalogTitle),\n\n isCollection: state => state.data?.isCollection() || false,\n isCatalog: state => state.data?.isCatalog() || false,\n isCatalogLike: state => state.data?.isCatalogLike() || false,\n isItem: state => state.data?.isItem() || false,\n\n root: (_, getters) => getters.getStac(getters.rootLink),\n\n rootLink: state => {\n let link = state.data?.getStacLinkWithRel('root');\n if (link) {\n return link;\n }\n else if (state.catalogUrl) {\n return Utils.createLink(state.catalogUrl, 'root');\n }\n else if (state.url && state.data instanceof STAC && state.data.getLinksWithRels(['conformance', 'service-desc', 'service-doc', 'data', 'search']).length > 0) {\n return Utils.createLink(state.url, 'root');\n }\n else if (state.url) {\n // Fallback: If we detect OGC API like paths, try to guess the paths\n let uri = URI(state.url);\n let path = uri.segment(-2);\n if (['collections', 'items'].includes(path)) {\n uri.segment(-1, \"\");\n uri.segment(-1, \"\");\n if (path === 'items') {\n uri.segment(-1, \"\");\n uri.segment(-1, \"\");\n }\n return Utils.createLink(uri.toString(), 'root');\n }\n }\n return null;\n },\n parentLink: state => {\n if (state.data instanceof STAC) {\n let link = state.data.getStacLinkWithRel('parent');\n if (link) {\n return link;\n }\n }\n\n // Fallback: If we detect OGC API like paths, try to guess the paths\n if (state.url) {\n let uri = URI(state.url);\n let path = uri.segment(-2);\n if (['collections', 'items'].includes(path)) {\n uri.segment(-1, \"\");\n uri.segment(-1, \"\");\n return Utils.createLink(uri.toString(), 'parent');\n }\n }\n\n return null;\n },\n collectionLink: state => {\n if (state.data instanceof STAC) {\n let link = state.data?.getStacLinkWithRel('collection');\n if (link) {\n return link;\n }\n }\n\n // Fallback: If we detect OGC API like paths, try to guess the paths\n if (state.url) {\n let uri = URI(state.url);\n let path = uri.segment(-2);\n if (path == 'items') {\n uri.segment(-1, \"\");\n uri.segment(-1, \"\");\n return Utils.createLink(uri.toString(), 'collection');\n }\n }\n\n return null;\n },\n supportsConformance: state => classes => {\n if(!Array.isArray(classes)) {\n return classes;\n }\n let classRegexp = classes\n .map(c => c.replaceAll('*', '[^/]+').replace(/\\/?#/, '/?#'))\n .join('|');\n let regexp = new RegExp('^(' + classRegexp + ')$');\n return Boolean(state.conformsTo.find(uri => uri.match(regexp)));\n },\n supportsExtension: state => schemaUri => {\n return Utils.supportsExtension(state.data, schemaUri);\n },\n\n items: state => {\n if (state.apiItems.length > 0) {\n return state.apiItems;\n }\n else if (state.data) {\n return state.data.getStacLinksWithRel('item');\n }\n return [];\n },\n catalogs: state => {\n let hasCollections = Boolean(state.data instanceof STAC && state.data.getApiCollectionsLink() && state.apiCollections.length > 0);\n let hasChilds = Boolean(state.data instanceof STAC);\n let showCollections = !state.apiCatalogPriority || state.apiCatalogPriority === 'collections';\n let showChilds = !state.apiCatalogPriority || state.apiCatalogPriority === 'childs';\n let catalogs = [];\n if (hasCollections && showCollections) {\n catalogs = catalogs.concat(state.apiCollections);\n }\n if (hasChilds && showChilds) {\n catalogs = STAC.addMissingChildren(catalogs, state.data);\n }\n return catalogs;\n },\n hasMoreCollections: state => Boolean(state.nextCollectionsLink),\n\n // hasAsset also checks whether the assets have a href and thus are not item asset definitions\n hasAssets: (state, getters) => Boolean(Object.values(getters.assets).find(asset => Utils.isObject(asset) && typeof asset.href === 'string')),\n assets: (state, getters) => {\n if (!Utils.isObject(state.data?.assets)) {\n return {};\n }\n else if (state.showThumbnailsAsAssets) {\n return state.data.assets;\n }\n else {\n let assets = {};\n let thumbnails = getters.thumbnails;\n for (let key in state.data.assets) {\n let asset = state.data.assets[key];\n if (!thumbnails.includes(asset)) {\n assets[key] = asset;\n }\n }\n return assets;\n }\n },\n thumbnails: state => state.data ? state.data.getThumbnails(true) : [],\n additionalLinks: state => state.data ? state.data.getLinksWithOtherRels(stacBrowserSpecialHandling).filter(link => link.rel !== 'preview' || !Utils.canBrowserDisplayImage(link)) : [],\n\n toBrowserPath: (state, getters) => url => {\n if (!Utils.hasText(url)) {\n url = '/';\n }\n\n let absolute = Utils.toAbsolute(unproxyUrl(url, state.stacProxyUrl), state.url, false);\n let relative;\n if (!state.allowSelectCatalog && state.catalogUrl) {\n relative = absolute.relativeTo(state.catalogUrl);\n }\n\n if (typeof relative === 'undefined' || getters.isExternalUrl(absolute, false)) {\n if (!state.allowExternalAccess) {\n return absolute.toString();\n }\n let parts = ['/external'];\n let protocol = absolute.protocol();\n if (protocol !== 'https') {\n parts.push(protocol + ':');\n }\n parts.push(absolute.authority());\n parts.push(absolute.path().replace(/^\\//, ''));\n let path = parts.join('/');\n let q = absolute.query();\n if (q) {\n path += `?${q}`;\n }\n return path;\n }\n else {\n return '/' + relative.toString();\n }\n },\n fromBrowserPath: (state, getters) => url => {\n const externalRE = /^\\/(search\\/)?external\\//;\n if (!Utils.hasText(url) || url === '/') {\n url = state.catalogUrl;\n }\n else if (url.match(externalRE)) {\n let parts = url.replace(externalRE, '').split('/');\n let protocol;\n if (!parts[0].endsWith(':')) {\n protocol = 'https:';\n }\n else {\n protocol = parts.shift();\n }\n url = `${protocol}//${parts.join('/')}`;\n }\n else if (!state.allowSelectCatalog && state.catalogUrl) {\n url = Utils.toAbsolute(url, state.catalogUrl, false);\n }\n return getters.getRequestUrl(url, null, true);\n },\n isExternalUrl: state => (absoluteUrl, whitelist = true) => {\n if (!state.catalogUrl) {\n return false;\n }\n if (!(absoluteUrl instanceof URI)) {\n absoluteUrl = URI(absoluteUrl);\n }\n if (whitelist && Array.isArray(state.allowedDomains) && state.allowedDomains.includes(absoluteUrl.domain())) {\n return false;\n }\n let relative = absoluteUrl.relativeTo(state.catalogUrl);\n if (relative.equals(absoluteUrl)) {\n return true;\n }\n let relativeStr = relative.toString();\n return relativeStr.startsWith('//') || relativeStr.startsWith('../');\n },\n getRequestUrl: (state, getters) => (url, baseUrl = null, addLocalQueryParams = false) => {\n let absoluteUrl = Utils.toAbsolute(proxyUrl(url, state.stacProxyUrl), baseUrl ? baseUrl : state.url, false);\n if (!getters.isExternalUrl(absoluteUrl)) {\n // Check whether private params are present and add them if the URL is part of the catalog\n addQueryIfNotExists(absoluteUrl, state.privateQueryParameters);\n // Check if we need to add global request params\n addQueryIfNotExists(absoluteUrl, state.globalRequestQueryParameters);\n if (addLocalQueryParams) {\n // Check if we need to add local request params\n addQueryIfNotExists(absoluteUrl, state.localRequestQueryParameters);\n }\n }\n // If we are proxying a STAC Catalog, replace any URI with the proxied address.\n return absoluteUrl.toString();\n },\n\n acceptedLanguages: state => {\n const languages = {};\n // Implement in ascending order:\n languages['en'] = 0.1;\n if (Array.isArray(state.supportedLocales)) {\n state.supportedLocales.forEach(locale => languages[locale] = 0.2);\n }\n if (Utils.hasText(state.fallbackLocale)) {\n languages[state.fallbackLocale] = 0.5;\n }\n if (Array.isArray(navigator.languages)) {\n navigator.languages.forEach(locale => languages[locale] = 0.7);\n }\n if (Utils.hasText(state.locale)) {\n languages[state.locale] = 1;\n }\n return Object.entries(languages)\n .sort((a,b) => {\n if (a[1] > b[1]) {\n return -1;\n }\n else if (a[1] < b[1]) {\n return 1;\n }\n return 0;\n })\n .map(([l, q]) => q >= 1 ? l : `${l};q=${q}`)\n .join(',');\n }\n },\n mutations: {\n config(state, config) {\n for (let key in config) {\n let value = config[key];\n switch (key) {\n case 'catalogTitle':\n state.catalogTitle = value;\n break;\n case 'catalogUrl':\n if (typeof value === 'function') {\n state.catalogUrl = value();\n }\n else if (typeof value === 'string') {\n state.catalogUrl = value;\n }\n break;\n case 'stacProxyUrl':\n // Proxy URLs coming from CLI have the form https://thingtoproxy.com;http://proxy:111\n if (typeof value === 'string' && value.includes(';')) {\n state[key] = value.split(';');\n }\n else {\n state[key] = value;\n }\n break;\n case 'crossOriginMedia':\n state.crossOriginMedia = ['anonymous', 'use-credentials'].includes(value) ? value : null;\n break;\n case 'cardViewSort':\n switch(value) {\n case 'asc':\n state.cardViewSort = 1;\n break;\n case 'desc':\n state.cardViewSort = -1;\n break;\n default:\n state.cardViewSort = 0;\n }\n break;\n default:\n state[key] = value;\n }\n }\n },\n languages(state, {uiLanguage, dataLanguage}) {\n state.dataLanguage = dataLanguage || null;\n state.uiLanguage = uiLanguage || null;\n },\n setQueryParameter(state, { type, key, value }) {\n type = `${type}QueryParameters`;\n if (typeof value === 'undefined') {\n Vue.delete(state[type], key);\n }\n else {\n Vue.set(state[type], key, value);\n }\n },\n setRequestHeader(state, { key, value }) {\n if (typeof value === 'undefined') {\n Vue.delete(state.requestHeaders, key);\n }\n else {\n Vue.set(state.requestHeaders, key, value);\n }\n },\n requestAuth(state, callback) {\n if (typeof callback === 'function') {\n state.doAuth.push(callback);\n }\n else {\n state.doAuth = [];\n }\n },\n setAuthData(state, value) {\n state.authData = value;\n },\n setCatalogUrlData(state, value) {\n state.catalogUrlData = value;\n },\n openCollapsible(state, { type, uid }) {\n const idx = state.stateQueryParameters[type].indexOf(uid);\n // need to prevent duplicates because of the way the collapse v-model works\n if (idx === -1) {\n state.stateQueryParameters[type].push(uid);\n }\n },\n state(state, newState) {\n state.stateQueryParameters = newState;\n },\n closeCollapsible(state, { type, uid }) {\n const idx = state.stateQueryParameters[type].indexOf(uid);\n if (idx > -1) {\n Vue.delete(state.stateQueryParameters[type], idx);\n }\n },\n updateLoading(state, { url, show, loadApi }) {\n let data = state.database[url];\n Vue.set(data, 'show', show || data.show);\n Vue.set(data, 'loadApi', loadApi || data.loadApi);\n },\n loading(state, { url, loading }) {\n Vue.set(state.database, url, loading);\n if (loading.show) {\n state.url = url;\n }\n },\n loaded(state, { url, data }) {\n Vue.set(state.database, url, processSTAC(state, data));\n },\n clear(state, url) {\n Vue.delete(state.database, url);\n },\n resetCatalog(state, clearAll) {\n Object.assign(state, catalogDefaults());\n Object.assign(state, localDefaults());\n if (!state.supportedLocales.includes(state.locale)) {\n state.locale = config.locale;\n }\n if (clearAll) {\n state.catalogUrl = config.catalogUrl;\n state.catalogTitle = config.catalogTitle;\n state.database = {};\n }\n },\n resetPage(state) {\n Object.assign(state, localDefaults());\n },\n showPage(state, { url, title, description, stac }) {\n if (!stac) {\n stac = state.database[url] || null;\n }\n state.url = url || null;\n state.data = stac instanceof STAC ? stac : null;\n state.valid = null;\n state.description = description;\n\n // Set title\n if (title) {\n state.title = title;\n }\n else {\n state.title = STAC.getDisplayTitle(state.data, state.catalogTitle);\n if (state.data) {\n let description = state.data.getMetadata('description');\n if (Utils.hasText(description)) {\n state.description = description;\n }\n }\n }\n\n if (state.data) {\n let source = state.data.isItem() ? state.data.properties : state.data;\n let languages = Array.isArray(source.languages) ? source.languages.slice() : [];\n if (Utils.isObject(source.language)) {\n languages.unshift(source.language);\n }\n state.dataLanguages = languages.filter(lang => Utils.isObject(lang) && typeof lang.code === 'string');\n }\n },\n errored(state, { url, error }) {\n if (!(error instanceof Error)) {\n error = new Error(error);\n }\n Vue.set(state.database, url, error);\n },\n valid(state, valid) {\n state.valid = valid;\n },\n queue(state, url) {\n state.queue.push(url);\n },\n unqueue(state, url) {\n let i = state.queue.indexOf(url);\n if (i !== -1) {\n state.queue.splice(i, 1);\n }\n },\n removeFromQueue(state, num) {\n state.queue.splice(0, num);\n },\n setConformanceClasses(state, classes) {\n if (Array.isArray(classes)) {\n state.conformsTo = classes;\n }\n },\n setApiItemsLink(state, link) {\n state.apiItemsLink = link;\n },\n toggleApiItemsLoading(state, collectionId = '') {\n if (state.apiItemsLoading[collectionId]) {\n Vue.delete(state.apiItemsLoading, collectionId);\n }\n else {\n Vue.set(state.apiItemsLoading, collectionId, true);\n }\n },\n setApiItems(state, { data, stac, show }) {\n if (!Utils.isObject(data) || !Array.isArray(data.features)) {\n return;\n }\n let apiItems = data.features.map(feature => processSTAC(state, feature));\n\n if (show) {\n state.apiItems = apiItems;\n }\n\n // Handle pagination links\n let pageLinks = Utils.getLinksWithRels(data.links, stacPagination);\n let pages = {};\n for (let pageLink of pageLinks) {\n let rel = pageLink.rel === 'previous' ? 'prev' : pageLink.rel;\n pages[rel] = pageLink;\n }\n\n if (show) {\n state.apiItemsPagination = pages;\n }\n\n if (stac instanceof STAC) {\n // ToDo: Prev link only required when state.apiItems is not cached(?) -> cache apiItems?\n stac.setApiData(apiItems, pages.next, pages.prev);\n }\n },\n addApiCollections(state, { data, stac, show }) {\n if (!Utils.isObject(data) || !Array.isArray(data.collections)) {\n return;\n }\n\n let collections = data.collections.map(collection => processSTAC(state, collection));\n let nextLink = Utils.getLinkWithRel(data.links, 'next');\n if (show) {\n state.nextCollectionsLink = nextLink;\n state.apiCollections = state.apiCollections.concat(collections);\n }\n if (stac instanceof STAC) {\n stac.setApiData(collections, nextLink);\n }\n },\n resetApiItems(state) {\n state.apiItems = [];\n state.apiItemsPagination = {};\n },\n parents(state, parents) {\n state.parents = parents;\n },\n showGlobalError(state, error) {\n console.error(error);\n state.globalError = error;\n },\n addQueryables(state, queryables) {\n if (Utils.isObject(queryables) && Utils.isObject(queryables.properties)) {\n state.queryables = Object.entries(queryables.properties)\n .map(([key, schema]) => new Queryable(key, schema));\n }\n else {\n state.queryables = [];\n }\n }\n },\n actions: {\n async switchLocale(cx, {locale, userSelected}) {\n cx.commit('config', {locale});\n\n if (cx.state.storeLocale && userSelected) {\n try {\n window.localStorage.setItem('locale', locale);\n } catch (error) {\n console.error(error);\n }\n }\n\n // Locale for UI\n let uiLanguage = getBest(cx.state.supportedLocales, locale, cx.state.fallbackLocale);\n // Locale for data\n let dataLanguageCodes = cx.state.dataLanguages.map(l => l.code);\n let dataLanguageFallback = cx.state.dataLanguages.length > 0 ? cx.state.dataLanguages[0].code : uiLanguage;\n let dataLanguage = getBest(dataLanguageCodes, locale, dataLanguageFallback);\n\n cx.commit('languages', {dataLanguage, uiLanguage});\n cx.commit('setQueryParameter', { type: 'state', key: 'language', value: locale });\n },\n async setCatalogUrl(cx, value) {\n if (!Utils.hasText(value)) {\n value = null;\n }\n cx.commit('setCatalogUrlData', value);\n },\n async setAuth(cx, value) {\n if (!Utils.hasText(value)) {\n value = null;\n }\n // Set the value the user has provided separately\n cx.commit('setAuthData', value);\n\n // Format the value and add it to query parameters or headers\n let authConfig = cx.state.authConfig;\n let key = authConfig.key;\n if (value) {\n if (authConfig.formatter === 'Bearer') {\n value = `Bearer ${value}`;\n }\n else if (typeof authConfig.formatter === 'function') {\n value = authConfig.formatter(value);\n }\n }\n if (!Utils.hasText(value)) {\n value = undefined;\n }\n if (authConfig.type === 'query') {\n cx.commit('setQueryParameter', {type: 'private', key, value});\n }\n else if (authConfig.type === 'header') {\n cx.commit('setRequestHeader', {key, value});\n }\n },\n async loadBackground(cx, count) {\n let urls = cx.state.queue.slice(0, count);\n if (urls.length > 0) {\n let promises = [];\n for (let url of urls) {\n promises.push(cx.dispatch('load', { url }));\n }\n cx.commit('removeFromQueue', count);\n return await Promise.all(promises);\n }\n },\n async loadParents(cx) {\n if (!(cx.state.data instanceof STAC)) {\n cx.commit('parents', []);\n return;\n }\n\n let parents = [];\n let stac = cx.state.data;\n while (stac) {\n let parentLink = stac.getLinkWithRel('parent') || stac.getLinkWithRel('root');\n if (!parentLink) {\n break;\n }\n let url = Utils.toAbsolute(parentLink.href, stac.getAbsoluteUrl());\n await cx.dispatch('load', { url, loadApi: true });\n let parentStac = cx.getters.getStac(url, true);\n if (parentStac instanceof Error) {\n cx.commit('parents', parentStac);\n return;\n }\n if (parentStac === stac) {\n break;\n }\n parents.push(parentStac);\n stac = parentStac;\n }\n cx.commit('parents', parents);\n },\n async load(cx, args) {\n let { url, fromBrowser, show, loadApi, loadRoot, force } = args;\n let path;\n if (fromBrowser) {\n path = url.startsWith('/') ? url : '/' + url;\n url = cx.getters.fromBrowserPath(url);\n }\n else {\n url = Utils.toAbsolute(url, cx.state.url);\n path = cx.getters.toBrowserPath(url);\n }\n\n // Load the root catalog data if not available (e.g. after page refresh or external access)\n if (!loadRoot && path !== '/' && cx.state.catalogUrl && !cx.getters.getStac(cx.state.catalogUrl)) {\n await cx.dispatch(\"load\", { url: cx.state.catalogUrl, loadApi: true, loadRoot: true });\n }\n\n if (force) {\n cx.commit('clear', url);\n }\n\n let loading = new Loading(show, loadApi);\n let data = cx.state.database[url];\n if (data instanceof Loading) {\n cx.commit('updateLoading', { url, show, loadApi });\n return;\n }\n else if (!data || (data instanceof STAC && data.isPotentiallyIncomplete())) {\n cx.commit('loading', { url, loading });\n try {\n let response = await stacRequest(cx, url);\n if (!Utils.isObject(response.data)) {\n throw new BrowserError(i18n.t('errors.invalidJsonObject'));\n }\n data = new STAC(response.data, url, path);\n if (show) {\n // If we prefer another language abort redirect to the new language\n let localeLink = data.getLocaleLink(cx.state.dataLanguage);\n if (localeLink) {\n router.replace(cx.getters.toBrowserPath(localeLink.href));\n return;\n }\n }\n\n cx.commit('loaded', { url, data });\n\n if (!cx.getters.root) {\n let root = data.getLinkWithRel('root');\n if (root) {\n cx.commit('config', { catalogUrl: Utils.toAbsolute(root.href, url) });\n }\n }\n\n let conformanceLink = data.getStacLinkWithRel('conformance');\n if (Array.isArray(data.conformsTo) && data.conformsTo.length > 0) {\n cx.commit('setConformanceClasses', data.conformsTo);\n }\n else if (conformanceLink) {\n await cx.dispatch('loadOgcApiConformance', conformanceLink);\n }\n } catch (error) {\n if (cx.state.authConfig && isAuthenticationError(error)) {\n cx.commit('clear', url);\n cx.commit('requestAuth', () => cx.dispatch('load', args));\n return;\n }\n console.error(error);\n cx.commit('errored', { url, error });\n }\n }\n\n if (loading.loadApi && data instanceof STAC) {\n // Load API Collections\n if (data.getApiCollectionsLink()) {\n let args = { stac: data, show: loading.show };\n try {\n await cx.dispatch('loadNextApiCollections', args);\n } catch (error) {\n if (cx.state.authConfig && isAuthenticationError(error)) {\n cx.commit('requestAuth', () => cx.dispatch('loadNextApiCollections', args));\n }\n else {\n cx.commit('showGlobalError', {\n message: i18n.t('errors.loadApiCollectionsFailed'),\n error\n });\n }\n }\n }\n // Load API Items\n if (data.getApiItemsLink()) {\n let args = { stac: data, show: loading.show };\n try {\n await cx.dispatch('loadApiItems', args);\n } catch (error) {\n if (cx.state.authConfig && isAuthenticationError(error)) {\n cx.commit('requestAuth', () => cx.dispatch('loadApiItems', args));\n }\n else {\n cx.commit('showGlobalError', {\n message: i18n.t('errors.loadApiItemsFailed'),\n error\n });\n }\n }\n }\n }\n\n if (loading.show) {\n cx.commit('showPage', { url });\n }\n },\n async loadApiItems(cx, { link, stac, show, filters }) {\n let collectionId = stac instanceof STAC ? stac.id : '';\n cx.commit('toggleApiItemsLoading', collectionId);\n\n try {\n let baseUrl = cx.state.url;\n if (stac instanceof STAC) {\n link = stac.getApiItemsLink();\n baseUrl = stac.getAbsoluteUrl();\n }\n\n if (!Utils.isObject(filters)) {\n filters = {};\n }\n if (typeof filters.limit !== 'number') {\n filters.limit = cx.state.itemsPerPage;\n }\n\n link = Utils.addFiltersToLink(link, filters);\n\n let response = await stacRequest(cx, link);\n if (!Utils.isObject(response.data) || !Array.isArray(response.data.features)) {\n throw new BrowserError(i18n.t('errors.invalidStacItems'));\n }\n else {\n response.data.features = response.data.features.map(item => {\n try {\n if (!Utils.isObject(item) || item.type !== 'Feature') {\n return null;\n }\n let selfLink = Utils.getLinkWithRel(item.links, 'self');\n let url;\n if (selfLink?.href) {\n url = Utils.toAbsolute(selfLink.href, baseUrl);\n }\n else if (typeof item.id !== 'undefined') {\n let apiCollectionsLink = cx.getters.root?.getApiCollectionsLink();\n if (baseUrl) {\n url = Utils.toAbsolute(`items/${item.id}`, baseUrl);\n }\n else if (apiCollectionsLink) {\n url = Utils.toAbsolute(`${collectionId}/items/${item.id}`, apiCollectionsLink.href);\n }\n else if (cx.state.catalogUrl) {\n url = Utils.toAbsolute(`collections/${collectionId}/items/${item.id}`, cx.state.catalogUrl);\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n let data = cx.getters.getStac(url);\n if (data) {\n return data;\n }\n else {\n data = new STAC(item, url, cx.getters.toBrowserPath(url));\n data.markPotentiallyIncomplete();\n cx.commit('loaded', { data, url });\n return data;\n }\n } catch (error) {\n console.error(error);\n return null;\n }\n }).filter(item => item instanceof STAC);\n if (show) {\n cx.commit('setApiItemsLink', link);\n }\n cx.commit('setApiItems', { data: response.data, stac, show });\n cx.commit('toggleApiItemsLoading', collectionId);\n return response;\n }\n } catch (error) {\n cx.commit('toggleApiItemsLoading', collectionId);\n throw error;\n }\n },\n async loadNextApiCollections(cx, { stac, show }) {\n let link;\n if (stac) {\n // First page\n if (cx.state.apiCollections.length > 0) {\n // If we have already loaded collections, skip loading the first page\n return;\n }\n link = stac.getLinkWithRel('data');\n }\n else {\n // Second page and after\n stac = cx.state.data;\n link = cx.state.nextCollectionsLink;\n }\n if (!link) {\n return;\n }\n let response = await stacRequest(cx, link);\n if (!Utils.isObject(response.data) || !Array.isArray(response.data.collections)) {\n throw new BrowserError(i18n.t('errors.invalidStacCollections'));\n }\n else {\n response.data.collections = response.data.collections.map(collection => {\n let selfLink = Utils.getLinkWithRel(collection.links, 'self');\n let url;\n if (selfLink?.href) {\n url = Utils.toAbsolute(selfLink.href, cx.state.url || stac.getAbsoluteUrl());\n }\n else {\n url = Utils.toAbsolute(`collections/${collection.id}`, cx.state.catalogUrl || stac.getAbsoluteUrl());\n }\n let data = cx.getters.getStac(url);\n if (data) {\n return data;\n }\n else {\n data = new STAC(collection, url, cx.getters.toBrowserPath(url));\n data.markPotentiallyIncomplete();\n cx.commit('loaded', { data, url });\n return data;\n }\n });\n cx.commit('addApiCollections', { data: response.data, stac, show });\n }\n },\n async loadOgcApiConformance(cx, link) {\n let response = await stacRequest(cx, link);\n if (Utils.isObject(response.data) && Array.isArray(response.data.conformsTo)) {\n cx.commit('setConformanceClasses', response.data.conformsTo);\n }\n },\n async loadQueryables(cx, { stac, refParser = null }) {\n let schemas;\n try {\n let link = stac.getLinksWithRels(ogcQueryables)\n .find(link => Utils.isMediaType(link.type, schemaMediaType, true));\n let href = Utils.isObject(link) ? link.href : Utils.toAbsolute('queryables', stac.getAbsoluteUrl());\n let response = await stacRequest(cx, href);\n schemas = response.data; // Use data with $refs included as fallback anyway\n if (refParser) {\n try {\n schemas = await refParser.dereference(schemas);\n } catch (error) {\n console.error(error);\n }\n }\n } catch (error) {\n console.log('Queryables not supported by API');\n }\n cx.commit('addQueryables', schemas);\n },\n async loadGeoJson(cx, link) {\n try {\n let response = await stacRequest(cx, link);\n return response.data; // Use data with $refs included as fallback anyway\n } catch (error) {\n return null;\n }\n },\n async retryAfterAuth(cx) {\n let errorFn = error => cx.commit('showGlobalError', {\n error,\n message: i18n.t('errors.authFailed')\n });\n\n for (let callback of cx.state.doAuth) {\n try {\n let p = callback();\n if (p instanceof Promise) {\n p.catch(errorFn);\n }\n } catch (error) {\n errorFn(error);\n }\n }\n },\n async validate(cx, url) {\n if (typeof cx.state.valid === 'boolean') {\n return;\n }\n try {\n let uri = URI('https://api.staclint.com/url');\n uri.addSearch('stac_url', url);\n let response = await axios.get(uri.toString());\n cx.commit('valid', Boolean(response.data?.body?.valid_stac));\n } catch (error) {\n cx.commit('valid', error);\n }\n }\n },\n });\n}\n\nexport default getStore;","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-row',[_c('b-col',{attrs:{\"md\":\"12\"}},[_c('Source',{staticClass:\"float-right\",attrs:{\"title\":_vm.title,\"stacUrl\":_vm.url,\"stacVersion\":_vm.stacVersion}}),_c('h1',[(_vm.icon)?[_c('img',{staticClass:\"icon mr-2\",attrs:{\"src\":_vm.icon.href,\"alt\":_vm.icon.title,\"title\":_vm.icon.title}})]:_vm._e(),_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.title))])],2),(_vm.url || _vm.isSearchPage())?_c('p',{staticClass:\"lead\"},[(_vm.containerLink)?_c('i18n',{staticClass:\"in mr-3\",attrs:{\"tag\":\"span\",\"path\":\"in\"},scopedSlots:_vm._u([{key:\"catalog\",fn:function(){return [_c('StacLink',{attrs:{\"data\":_vm.containerLink}})]},proxy:true}],null,false,1458487365)}):_vm._e(),_c('b-button-group',[(_vm.parentLink)?_c('b-button',{attrs:{\"to\":_vm.toBrowserPath(_vm.parentLink.href),\"title\":_vm.parentLinkTitle,\"variant\":\"outline-primary\",\"size\":\"sm\"}},[_c('b-icon-arrow-90deg-up'),_vm._v(\" \"),_c('span',{staticClass:\"button-label prio\"},[_vm._v(_vm._s(_vm.$t('goToParent.label')))])],1):_vm._e(),(_vm.collectionLink)?_c('b-button',{attrs:{\"to\":_vm.toBrowserPath(_vm.collectionLink.href),\"title\":_vm.collectionLinkTitle,\"variant\":\"outline-primary\",\"size\":\"sm\"}},[_c('b-icon-folder-symlink'),_vm._v(\" \"),_c('span',{staticClass:\"button-label prio\"},[_vm._v(_vm._s(_vm.$t('goToCollection.label')))])],1):_vm._e(),_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.sidebar\",modifiers:{\"sidebar\":true}}],attrs:{\"variant\":\"outline-primary\",\"size\":\"sm\",\"title\":_vm.$t('browse')},on:{\"click\":function($event){return _vm.$emit('enableSidebar')}}},[_c('b-icon-book'),_vm._v(\" \"),_c('span',{staticClass:\"button-label prio\"},[_vm._v(_vm._s(_vm.$t('browse')))])],1),(_vm.searchBrowserLink)?_c('b-button',{attrs:{\"variant\":\"outline-primary\",\"size\":\"sm\",\"to\":_vm.searchBrowserLink,\"title\":_vm.$t('search.title'),\"pressed\":_vm.isSearchPage()}},[_c('b-icon-search'),_vm._v(\" \"),_c('span',{staticClass:\"button-label prio\"},[_vm._v(_vm._s(_vm.$t('search.title')))])],1):_vm._e(),(_vm.authConfig)?_c('b-button',{attrs:{\"variant\":\"outline-primary\",\"size\":\"sm\",\"title\":_vm.$t('authentication.button.title')},on:{\"click\":_vm.auth}},[(_vm.authData)?[_c('b-icon-lock'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('authentication.button.authenticated')))])]:[_c('b-icon-unlock'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('authentication.button.authenticate')))])]],2):_vm._e()],1)],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"share mt-1\"},[_c('b-button-group',[(_vm.stacUrl)?_c('b-button',{attrs:{\"size\":\"sm\",\"variant\":\"outline-primary\",\"id\":\"popover-link\",\"title\":_vm.$t('source.detailsAboutSource')}},[_c('b-icon-link'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('source.label')))])],1):_vm._e(),_c('b-button',{attrs:{\"size\":\"sm\",\"variant\":\"outline-primary\",\"id\":\"popover-share\",\"title\":_vm.$t('source.share.withOthers')}},[_c('b-icon-share'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('source.share.label')))])],1),_c('b-dropdown',{attrs:{\"size\":\"sm\",\"variant\":\"outline-primary\",\"right\":\"\",\"title\":_vm.$t('source.language.switch')},scopedSlots:_vm._u([{key:\"button-content\",fn:function(){return [_c('b-icon-flag'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('source.language.label', {currentLanguage: _vm.currentLanguage})))])]},proxy:true}])},_vm._l((_vm.languages),function(l){return _c('b-dropdown-item',{key:l.code,staticClass:\"lang-item\",on:{\"click\":function($event){return _vm.switchLocale({locale: l.code, userSelected: true})}}},[(_vm.locale === l.code)?_c('b-icon-check'):_c('b-icon-blank'),_c('span',{staticClass:\"title\"},[_vm._v(\" \"+_vm._s(l.native)+\" \"),(l.global && l.global !== l.native)?[_vm._v(\" / \"+_vm._s(l.global))]:_vm._e()],2),(_vm.supportsLanguageExt && (!l.ui || !l.data))?_c('b-icon-exclamation-triangle',{staticClass:\"ml-2\",attrs:{\"title\":l.ui ? _vm.$t('source.language.onlyUI') : _vm.$t('source.language.onlyData')}}):_vm._e()],1)}),1)],1),(_vm.stacUrl)?_c('b-popover',{attrs:{\"target\":\"popover-link\",\"triggers\":\"focus\",\"placement\":\"bottom\",\"container\":\"stac-browser\",\"title\":_vm.$t('source.title')},on:{\"show\":_vm.validate}},[(_vm.stacVersion)?[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"2\"}},[_vm._v(_vm._s(_vm.$t('source.stacVersion')))]),_c('b-col',[_vm._v(_vm._s(_vm.stacVersion))])],1),(_vm.canValidate)?_c('b-row',[_c('b-col',{attrs:{\"cols\":\"2\"}},[_vm._v(_vm._s(_vm.$t('source.valid')))]),_c('b-col',[(_vm.valid === null)?_c('b-spinner',{attrs:{\"label\":_vm.$t('source.validating'),\"small\":\"\"}}):(_vm.valid === true)?[_vm._v(\"✔️\")]:(_vm.valid === false)?[_vm._v(\"❌\")]:[_vm._v(\"$t('source.validationNA')\")]],2)],1):_vm._e(),_c('hr')]:_vm._e(),_c('Url',{attrs:{\"id\":\"stacUrl\",\"url\":_vm.stacUrl,\"label\":_vm.$t('source.locatedAt')}})],2):_vm._e(),_c('b-popover',{attrs:{\"target\":\"popover-share\",\"triggers\":\"focus\",\"placement\":\"bottom\",\"container\":\"stac-browser\",\"title\":_vm.$t('source.share.title')}},[_c('Url',{attrs:{\"id\":\"browserUrl\",\"url\":_vm.browserUrl(),\"label\":_vm.$t('source.share.sharePageWithOthers'),\"open\":false}}),_c('hr'),_c('b-button',{staticClass:\"twitter mr-1\",attrs:{\"href\":_vm.twitterUrl}},[_c('b-icon-twitter'),_vm._v(\" \"+_vm._s(_vm.$t('source.share.twitter')))],1),_c('b-button',{attrs:{\"variant\":\"dark\",\"href\":_vm.mailTo}},[_c('b-icon-envelope'),_vm._v(\" \"+_vm._s(_vm.$t('source.share.email')))],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-form-group',{attrs:{\"label\":_vm.label,\"label-for\":_vm.id}},[_c('b-input-group',{attrs:{\"size\":\"sm\"}},[_c('b-form-input',{ref:\"input\",attrs:{\"id\":_vm.id,\"value\":_vm.url,\"readonly\":\"\"}}),_c('b-input-group-append',[_c('CopyButton',{attrs:{\"copyText\":_vm.url,\"variant\":\"primary\"}}),(_vm.open)?_c('b-button',{attrs:{\"href\":_vm.url,\"target\":\"_blank\",\"variant\":\"primary\",\"title\":_vm.$t('open')}},[_c('b-icon-arrow-up-right-square')],1):_vm._e()],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Url.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Url.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Url.vue?vue&type=template&id=433de75e&scoped=true\"\nimport script from \"./Url.vue?vue&type=script&lang=js\"\nexport * from \"./Url.vue?vue&type=script&lang=js\"\nimport style0 from \"./Url.vue?vue&type=style&index=0&id=433de75e&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"433de75e\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Source.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Source.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Source.vue?vue&type=template&id=0106123f&scoped=true\"\nimport script from \"./Source.vue?vue&type=script&lang=js\"\nexport * from \"./Source.vue?vue&type=script&lang=js\"\nimport style0 from \"./Source.vue?vue&type=style&index=0&id=0106123f&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0106123f\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacHeader.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacHeader.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./StacHeader.vue?vue&type=template&id=d2d6115c&scoped=true\"\nimport script from \"./StacHeader.vue?vue&type=script&lang=js\"\nexport * from \"./StacHeader.vue?vue&type=script&lang=js\"\nimport style0 from \"./StacHeader.vue?vue&type=style&index=0&id=d2d6115c&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d2d6115c\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n","import mod from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacBrowser.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacBrowser.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./StacBrowser.vue?vue&type=template&id=44ae4ed1\"\nimport script from \"./StacBrowser.vue?vue&type=script&lang=js\"\nexport * from \"./StacBrowser.vue?vue&type=script&lang=js\"\nimport style0 from \"./StacBrowser.vue?vue&type=style&index=0&id=44ae4ed1&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\nimport StacBrowser from \"./StacBrowser.vue\";\nimport i18n, { loadDefaultMessages } from './i18n';\n\nexport default function init() {\n return loadDefaultMessages().then(() => {\n return new Vue({\n i18n,\n render: h => h(StacBrowser)\n }).$mount(\"#stac-browser\");\n });\n}\n","import Vue from \"vue\";\nimport init from \"./init\";\n\nVue.config.productionTip = false;\n\ninit();\n","import i18n from '../../../i18n.js';\nimport CqlOperator from './operator';\n\nexport default class CqlComparisonOperator extends CqlOperator {\n\n constructor(operator, pred = null, obj = null) {\n super(operator, [pred, obj]);\n }\n\n clone(value) {\n return new this.constructor(this.operator, this.args[0], value);\n }\n\n static create(pred, op, obj) {\n if ([\"=\", \"==\", \"===\"].includes(op)) {\n return new CqlEqual(pred, obj);\n }\n else if ([\"<>\", \"!=\", \"!==\"].includes(op)) {\n return new CqlNotEqual(pred, obj);\n }\n else if (op === \">=\") {\n return new CqlGreaterThanEqual(pred, obj);\n }\n else if (op === \">\") {\n return new CqlGreaterThan(pred, obj);\n }\n else if (op === \"<=\") {\n return new CqlLessThanEqual(pred, obj);\n }\n else if (op === \"<\") {\n return new CqlLessThan(pred, obj);\n }\n }\n\n}\n\nexport class CqlEqual extends CqlComparisonOperator {\n\n static SYMBOL = \"=\";\n\n constructor(pred = null, obj = null) {\n super(CqlEqual.SYMBOL, pred, obj);\n }\n\n static get longLabel() {\n return i18n.t('search.equalTo');\n }\n\n}\n\nexport class CqlNotEqual extends CqlComparisonOperator {\n\n static SYMBOL = \"<>\";\n\n constructor(pred = null, obj = null) {\n super(CqlNotEqual.SYMBOL, pred, obj);\n }\n\n static get longLabel() {\n return i18n.t('search.notEqualTo');\n }\n\n}\n\nexport class CqlGreaterThan extends CqlComparisonOperator {\n\n static SYMBOL = \">\";\n\n constructor(pred = null, obj = null) {\n super(CqlGreaterThan.SYMBOL, pred, obj);\n }\n\n static get longLabel() {\n return i18n.t('search.greaterThan');\n }\n\n}\n\nexport class CqlGreaterThanEqual extends CqlComparisonOperator {\n\n static SYMBOL = \">=\";\n\n constructor(pred = null, obj = null) {\n super(CqlGreaterThanEqual.SYMBOL, pred, obj);\n }\n\n static get longLabel() {\n return i18n.t('search.greaterThanEqual');\n }\n\n}\n\nexport class CqlLessThan extends CqlComparisonOperator {\n\n static SYMBOL = \"<\";\n\n constructor(pred = null, obj = null) {\n super(CqlLessThan.SYMBOL, pred, obj);\n }\n\n static get longLabel() {\n return i18n.t('search.lessThan');\n }\n\n}\n\nexport class CqlLessThanEqual extends CqlComparisonOperator {\n\n static SYMBOL = \"<=\";\n\n constructor(pred = null, obj = null) {\n super(CqlLessThanEqual.SYMBOL, pred, obj);\n }\n\n static get longLabel() {\n return i18n.t('search.lessThanEqual');\n }\n \n}\n\n/* export class CqlIsNull extends CqlComparisonOperator {\n \n constructor(pred = null) {\n super(\"IS NULL\", pred);\n }\n\n} */\n","export default class CqlOperator {\n\n constructor(operator, args = []) {\n this.operator = operator;\n this.args = args;\n }\n\n toText() {\n let op = this.operator.toUpperCase();\n return this.args.map(arg => arg.toText()).join(` ${op} `);\n }\n\n toJSON() {\n return {\n op: this.operator,\n args: this.args.map(arg => arg.toJSON())\n };\n }\n\n static get description() {\n return \"\";\n }\n\n static get label() {\n return this.SYMBOL;\n }\n\n static get longLabel() {\n return this.label;\n }\n\n}","import Utils, { geojsonMediaType } from \"../utils\";\nimport Migrate from '@radiantearth/stac-migrate';\nimport { getBest } from '../locale-id';\n\nlet stacObjCounter = 0;\n\n// STAC Entity\nclass STAC {\n\n constructor(data, url, path, migrate = true) {\n this._id = stacObjCounter++;\n this._url = url;\n this._path = path;\n this._apiChildrenListeners = {};\n this._incomplete = false;\n this._apiChildren = {\n list: [],\n prev: false,\n next: false\n };\n\n if (migrate) {\n // Uncomment this line if the old checksum: fields should be converted\n // This is usually not needed so it's not enabled by default to shrink the bundle size\n // Migrate.enableMultihash(require('multihashes'));\n if (data.type === 'FeatureCollection') {\n data.features = data.features.map(item => Migrate.item(item, false));\n }\n else {\n data = Migrate.stac(data, false);\n }\n }\n for (let key in data) {\n if (typeof this[key] === 'undefined') {\n this[key] = data[key];\n }\n }\n }\n\n isPotentiallyIncomplete() {\n return this._incomplete;\n }\n\n markPotentiallyIncomplete() {\n this._incomplete = true;\n }\n\n isItem() {\n return this.type === 'Feature';\n }\n\n isCatalog() {\n return this.type === 'Catalog';\n }\n\n isCatalogLike() {\n return this.isCatalog() || this.isCollection();\n }\n\n isCollection() {\n return this.type === 'Collection';\n }\n\n isItemCollection() {\n return this.type === 'FeatureCollection';\n }\n\n hasApiData() {\n return this._apiChildren.list.length > 0;\n }\n\n setApiDataListener(id, listener = null) {\n if (typeof listener === 'function') {\n this._apiChildrenListeners[id] = listener;\n }\n else {\n delete this._apiChildrenListeners[id];\n }\n }\n\n setApiData(list, next = null, prev = null) {\n if (prev) {\n this._apiChildren.prev = prev;\n }\n if (next) {\n this._apiChildren.next = next;\n }\n this._apiChildren.list = list;\n\n for (let id in this._apiChildrenListeners) {\n try {\n this._apiChildrenListeners[id](this._apiChildren);\n } catch (error) {\n console.error(error);\n }\n }\n }\n\n getFileFormats() {\n let assets = [];\n if ((this.isItem() || this.isCollection()) && Utils.isObject(this.assets)) {\n assets = assets.concat(Object.values(this.assets));\n }\n if (this.isCollection() && Utils.isObject(this.item_assets)) {\n assets = assets.concat(Object.values(this.item_assets));\n }\n return assets\n .filter(asset => Array.isArray(asset.roles) && asset.roles.includes('data') && typeof asset.type === 'string') // Look for data files\n .map(asset => asset.type) // Array shall only contain media types\n .filter((v, i, a) => a.indexOf(v) === i); // Unique values\n }\n\n getChildren(priority = null) {\n if (!this.isCatalogLike()) {\n return [];\n }\n\n let showCollections = !priority || priority === 'collections';\n let showChilds = !priority || priority === 'childs';\n\n let children = [];\n if (showCollections && this._apiChildren.prev) {\n children.push(this._apiChildren.prev);\n }\n if (showCollections && this._apiChildren.list.length > 0) {\n children = this._apiChildren.list;\n }\n if (showChilds) {\n children = STAC.addMissingChildren(children, this).concat(this.getLinksWithRels(['item']));\n }\n if (showCollections && this._apiChildren.next) {\n children.push(this._apiChildren.next);\n }\n return children;\n }\n\n static addMissingChildren(catalogs, stac) {\n let links = stac.getStacLinksWithRel('child').filter(link => {\n // Don't add links that are already in collections: https://github.com/radiantearth/stac-browser/issues/103\n // ToDo: The runtime of this can probably be improved\n let absoluteUrl = Utils.toAbsolute(link.href, stac.getAbsoluteUrl());\n return !catalogs.find(collection => collection.getAbsoluteUrl() === absoluteUrl);\n });\n // place the children first to avoid conflicts with the paginated collections\n // where the children are always at the end and can never be reached due to infinite scrolling\n return links.concat(catalogs);\n }\n\n getSearchLink() {\n // The search link MUST be 'application/geo+json' as otherwise it's likely not STAC\n // See https://github.com/opengeospatial/ogcapi-features/issues/832\n let links = Utils.getLinksWithRels(this.links, ['search'])\n .filter(link => Utils.isMediaType(link.type, geojsonMediaType));\n // Prefer POST if present\n let post = links.find(link => Utils.hasText(link.method) && link.method.toUpperCase() === 'POST');\n return post || links[0] || null;\n }\n\n getApiCollectionsLink() {\n return this.getStacLinkWithRel('data');\n }\n\n getApiItemsLink() {\n return this.getStacLinkWithRel('items');\n }\n\n getMetadata(field) {\n if (this.isItem()) {\n return this.properties[field];\n }\n else if (this.isCatalogLike()) {\n return this[field];\n }\n return null;\n }\n\n getBrowserPath() {\n return this._path;\n }\n\n getAbsoluteUrl() {\n return this._url;\n }\n\n getLocaleLink(locale, fallbackLocale = null) {\n let links = this.getStacLinksWithRel('alternate')\n .filter(link => Utils.hasText(link.hreflang));\n \n let available;\n if (Array.isArray(this.languages)) {\n available = this.languages.map(l => l.code);\n }\n else {\n available = links.map(link => link.hreflang);\n }\n \n let best = getBest(available, locale, fallbackLocale);\n return links.find(link => link.hreflang === best) || null;\n }\n\n getStacLinksWithRel(rel, allowEmpty = true) {\n return Utils.getLinksWithRels(this.links, [rel])\n .filter(link => Utils.isStacMediaType(link.type, allowEmpty));\n }\n\n getStacLinkWithRel(rel, allowEmpty = true) {\n const links = this.getStacLinksWithRel(rel, allowEmpty);\n if (links.length > 0) {\n return links[0];\n }\n else {\n return null;\n }\n }\n\n getLinkWithRel(rel) {\n return Utils.getLinkWithRel(this.links, rel);\n }\n\n getLinksWithRels(rels) {\n return Utils.getLinksWithRels(this.links, rels);\n }\n\n getLinksWithOtherRels(rels) {\n return Utils.getLinksWithOtherRels(this.links, rels);\n }\n\n getAssetsWithRoles(roles) {\n let matches = [];\n if (Utils.isObject(this.assets)) {\n for (let key in this.assets) {\n let asset = this.assets[key];\n if (Utils.isObject(asset) && typeof asset.href === 'string' && Array.isArray(asset.roles) && asset.roles.find(role => roles.includes(role))) {\n matches.push(asset);\n }\n }\n }\n return matches;\n }\n\n static getDisplayTitle(sources, fallbackTitle = null) {\n if (!Array.isArray(sources)) {\n sources = [sources];\n }\n let stac = sources.find(o => o instanceof STAC);\n let link = sources.find(o => Utils.isObject(o) && !(o instanceof STAC));\n // Get title from STAC item/catalog/collection\n if (stac && Utils.hasText(stac.getTitle())) {\n return stac.getTitle();\n }\n // Get title from link\n else if (link && Utils.hasText(link.title)) {\n return link.title;\n }\n // Use id from STAC item/catalog/collection instead of titles\n else if (stac && Utils.hasText(stac.id)) {\n return stac.id;\n }\n // Use fallback title\n else if (Utils.hasText(fallbackTitle)) {\n return fallbackTitle;\n }\n // Use file or directory name from STAC as title\n else if (stac) {\n return Utils.titleForHref(stac.getAbsoluteUrl(), true);\n }\n // Use file or directory name from link as title\n else if (link && Utils.hasText(link.href)) {\n return Utils.titleForHref(link.href, true);\n }\n // Nothing available, return \"untitled\"\n else {\n return \"Untitled\";\n }\n }\n\n getTitle() {\n return this.getMetadata(\"title\");\n }\n\n _linkToAbsolute(link) {\n return Object.assign({}, link, { href: Utils.toAbsolute(link.href, this.getAbsoluteUrl()) });\n }\n\n getIcons() {\n return this.getLinksWithRels(['icon'])\n .filter(img => Utils.canBrowserDisplayImage(img))\n .map(img => this._linkToAbsolute(img));\n }\n\n /**\n * Get the thumbnails from the assets and links in a STAC entity.\n * \n * @param {boolean} browserOnly - Return only images that can be shown in a browser natively (PNG/JPG/GIF/WEBP).\n * @param {?string} prefer - If not `null` (default), prefers a role over the other. Either `thumbnail` or `overview`.\n * @returns \n */\n getThumbnails(browserOnly = false, prefer = null) { // prefer can be either \n let thumbnails = this.getAssetsWithRoles(['thumbnail', 'overview']);\n if (prefer && thumbnails.length > 1) {\n thumbnails.sort(a => a.roles.includes(prefer) ? -1 : 1);\n }\n // Get from links only if no assets are available as they should usually be the same as in assets\n if (thumbnails.length === 0) {\n thumbnails = this.getLinksWithRels(['preview']);\n }\n // Some old catalogs use just a asset key\n if (thumbnails.length === 0 && Utils.isObject(this.assets) && Utils.isObject(this.assets.thumbnail)) {\n thumbnails = [this.assets.thumbnail];\n }\n if (browserOnly) {\n // Remove all images that can't be displayed in a browser\n thumbnails = thumbnails.filter(img => Utils.canBrowserDisplayImage(img));\n }\n return thumbnails.map(img => this._linkToAbsolute(img));\n }\n\n equals(other) {\n if (!Utils.isObject(other)) {\n return false;\n }\n if (this === other) {\n return true;\n }\n if (this.id === other.id && this.type == other.type) {\n return true;\n }\n return false;\n }\n\n}\n\nexport default STAC;","// STAC relation types\n\n// STAC hierarchical\nexport const stacHierarchy = [\n 'child',\n 'collection',\n 'item',\n 'parent',\n 'root',\n 'self',\n];\n\n// STAC API Pagination\nexport const stacPagination = [\n 'first',\n 'last',\n 'next',\n 'prev',\n 'previous',\n];\n\n// Queryables\nexport const ogcQueryables = [\n 'queryables', // Old way in STAC (deprecated)\n 'http://www.opengis.net/def/rel/ogc/1.0/queryables', // STAC and OGC APIs\n 'ogc-rel:queryables' // Alternative in OGC APIs\n];\n\n// Rels that STAC Browser can navigate to and display natively (i.e. Collections, Catalogs and Items)\nexport const stacBrowserNavigatesTo = [\n 'canonical', // Links to other catalogs or items v\n 'related',\n 'derived_from',\n 'latest-version', // version extension v\n 'predecessor-version',\n 'successor-version',\n 'source', // label extension,\n 'alternate' // language extension\n].concat(stacHierarchy).concat(stacPagination);\n\n// Rels that are handled in a special way and should not be shown in the link list\nexport const stacBrowserSpecialHandling = [\n 'conformance', // API related v\n 'data',\n 'items',\n 'search',\n 'icon', // Other v\n 'license',\n].concat(stacHierarchy).concat(stacPagination).concat(ogcQueryables);\n\n// OGC APIs\nexport const ogcRelPrefix = 'http://www.opengis.net/def/rel/ogc/1.0/';\n","import URI from 'urijs';\nimport removeMd from 'remove-markdown';\n\nexport const commonFileNames = ['catalog', 'collection', 'item'];\n\nexport const geojsonMediaType = \"application/geo+json\";\n\nexport const schemaMediaType = \"application/schema+json\";\n\nexport const stacMediaTypes = [\n 'application/json',\n geojsonMediaType,\n 'text/json'\n];\n\nexport const browserImageTypes = [\n 'image/gif',\n 'image/jpg',\n 'image/jpeg',\n 'image/apng',\n 'image/png',\n 'image/webp'\n];\n\nexport const geotiffMediaTypes = [\n \"application/geotiff\",\n \"image/tiff; application=geotiff\",\n \"image/tiff; application=geotiff; profile=cloud-optimized\",\n \"image/vnd.stac.geotiff\",\n \"image/vnd.stac.geotiff; cloud-optimized=true\"\n];\n\nexport const browserProtocols = [\n 'http',\n 'https'\n];\n\nexport const imageMediaTypes = browserImageTypes.concat(geotiffMediaTypes);\nexport const mapMediaTypes = imageMediaTypes.concat([geojsonMediaType]);\n\nexport class BrowserError extends Error {\n constructor(message) {\n super(message);\n }\n}\n\n/**\n * General utilities\n * \n * @class\n */\nexport default class Utils {\n\n /**\n * Checks whether a variable is a real object or not.\n * \n * This is a more strict version of `typeof x === 'object'` as this example would also succeeds for arrays and `null`.\n * This function only returns `true` for real objects and not for arrays, `null` or any other data types.\n * \n * @param {*} obj - A variable to check.\n * @returns {boolean} - `true` is the given variable is an object, `false` otherwise.\n */\n static isObject(obj) {\n return (typeof obj === 'object' && obj === Object(obj) && !Array.isArray(obj));\n }\n\n /**\n * Computes the size of an array (number of array elements) or object (number of key-value-pairs).\n * \n * Returns 0 for all other data types.\n * \n * @param {*} obj \n * @returns {integer}\n */\n static size(obj) {\n if (typeof obj === 'object' && obj !== null) {\n if (Array.isArray(obj)) {\n return obj.length;\n }\n else {\n return Object.keys(obj).length;\n }\n }\n return 0;\n }\n\n static isStacMediaType(type, allowEmpty = false) {\n return Utils.isMediaType(type, stacMediaTypes, allowEmpty);\n }\n\n static isMediaType(type, types, allowEmpty = false) {\n if (!Array.isArray(types)) {\n types = [types];\n }\n if (allowEmpty && !type) {\n return true;\n }\n else if (typeof type !== 'string') {\n return false;\n }\n else {\n return types.includes(type.toLowerCase());\n }\n }\n\n /**\n * Checks whether a variable is a string and contains at least one character.\n * \n * @param {*} string - A variable to check.\n * @returns {boolean} - `true` is the given variable is an string with length > 0, `false` otherwise.\n */\n static hasText(string) {\n return (typeof string === 'string' && string.length > 0);\n }\n\n static isGdalVfsUri(url) {\n return typeof url === 'string' && url.startsWith('/vsi') && !url.startsWith('/vsicurl/');\n }\n\n static toAbsolute(href, baseUrl, stringify = true) {\n return Utils.normalizeUri(href, baseUrl, false, stringify);\n }\n\n static normalizeUri(href, baseUrl = null, noParams = false, stringify = true) {\n // Convert vsicurl URLs to normal URLs\n if (typeof href === 'string' && href.startsWith('/vsicurl/')) {\n href = href.replace(/^\\/vsicurl\\//, '');\n }\n // Parse URL and make absolute, if required\n let uri = URI(href);\n // Don't convert GDAL VFS URIs: https://github.com/radiantearth/stac-browser/issues/116\n if (baseUrl && uri.is(\"relative\") && !Utils.isGdalVfsUri(href)) {\n uri = uri.absoluteTo(baseUrl);\n }\n uri.normalize();\n if (noParams) {\n uri.query(\"\");\n uri.fragment(\"\");\n }\n return stringify ? uri.toString() : uri;\n }\n\n static getLinkWithRel(links, rel) {\n return Array.isArray(links) ? links.find(link => Utils.isObject(link) && Utils.hasText(link.href) && link.rel === rel) : null;\n }\n\n static getLinksWithRels(links, rels) {\n return Array.isArray(links) ? links.filter(link => Utils.isObject(link) && Utils.hasText(link.href) && rels.includes(link.rel)) : [];\n }\n\n static getLinksWithOtherRels(links, rels) {\n return Array.isArray(links) ? links.filter(link => Utils.isObject(link) && Utils.hasText(link.href) && !rels.includes(link.rel)) : [];\n }\n\n static equalUrl(a, b) {\n try {\n let uri1 = URI(a);\n let uri2 = URI(b);\n // Ignore trailing slash in URL paths\n uri1.path(uri1.path().replace(/\\/$/, ''));\n uri2.path(uri2.path().replace(/\\/$/, ''));\n return uri1.equals(uri2);\n } catch (error) {\n return false;\n }\n }\n\n static summarizeMd(text, maxLength = null) {\n if (!Utils.hasText(text)) {\n return '';\n }\n // Best-effort approach to remove some CommonMark (Markdown).\n // Likely not perfect, but seems good enough for most cases.\n text = removeMd(text).replaceAll(/[\\r\\n]+/g, ' ');\n if (maxLength > 0 && text.length > maxLength) {\n text = text.substr(0, maxLength) + '…';\n }\n return text;\n }\n\n static scrollTo(el) {\n if (!el) {\n return;\n }\n var rect = el.getBoundingClientRect();\n var isVisible = rect.top < window.innerHeight && rect.bottom >= 0;\n if (!isVisible) {\n el.scrollIntoView({\n behavior: \"smooth\",\n block: \"start\"\n });\n }\n }\n\n // Convert from UTC to locale time (needed for vue2-datetimepicker)\n // see https://github.com/mengxiong10/vue2-datepicker/issues/388\n static dateFromUTC(dt) {\n if (dt instanceof Date) {\n const value = new Date(dt);\n const offset = value.getTimezoneOffset();\n dt = new Date(value.getTime() + offset * 60 * 1000);\n }\n return dt;\n }\n\n static dateToUTC(dt) {\n if (dt instanceof Date) {\n const offset = new Date().getTimezoneOffset();\n return new Date(dt.getTime() - offset * 60 * 1000);\n }\n return dt;\n }\n\n static formatDatetimeQuery(value) {\n return value.map(dt => {\n if (dt instanceof Date) {\n return dt.toISOString();\n }\n else if (dt) {\n return dt;\n }\n else {\n return '..';\n }\n }).join('/');\n }\n\n static addFiltersToLink(link, filters = {}) {\n let isEmpty = value => {\n return (value === null\n || (typeof value === 'number' && !Number.isFinite(value))\n || (typeof value === 'string' && value.length === 0)\n || (typeof value === 'object' && Utils.size(value) === 0));\n };\n\n if (Utils.hasText(link.method) && link.method.toUpperCase() === 'POST') {\n let body = Object.assign({}, link.body);\n\n for (let key in filters) {\n let value = filters[key];\n if (isEmpty(value)) {\n delete body[key];\n continue;\n }\n\n if (key === 'datetime') {\n value = Utils.formatDatetimeQuery(value);\n }\n else if (key === 'filters') {\n Object.assign(body, value.toJSON());\n continue;\n }\n\n body[key] = value;\n }\n return Object.assign({}, link, { body });\n }\n else { // GET\n // Construct new link with search params\n let url = URI(link.href);\n\n for (let key in filters) {\n let value = filters[key];\n if (isEmpty(value)) {\n url.removeQuery(key);\n continue;\n }\n\n if (key === 'datetime') {\n value = Utils.formatDatetimeQuery(value);\n }\n else if (key === 'bbox') {\n value = value.join(',');\n }\n else if ((key === 'collections' || key === 'ids')) {\n value = value.join(',');\n }\n else if (key === 'filters') {\n let params = value.toText();\n url.setQuery(params);\n continue;\n }\n\n url.setQuery(key, value);\n }\n\n return Object.assign({}, link, { href: url.toString() });\n }\n }\n\n static titleForHref(href, preferFileName = false) {\n let uri = URI(href);\n let auth = uri.authority();\n let file = uri.filename().replace(/^(.{1,})\\.\\w+$/, '$1');\n let dir = uri.directory().replace(/^\\//, '');\n if (auth && file && !preferFileName) {\n let path = uri.path().replace(/^\\//, '');\n if (auth === 'doi.org' && path.startsWith('10.')) {\n return `DOI ${path}`;\n }\n else {\n return `${file} (${auth})`;\n }\n }\n else if (file && !commonFileNames.includes(file)) {\n return file;\n }\n else if (auth) {\n return auth;\n }\n else if (dir) {\n return dir;\n }\n else {\n return href;\n }\n }\n\n static canBrowserDisplayImage(img) {\n if (typeof img.href !== 'string') {\n return false;\n }\n let uri = URI(img.href);\n let protocol = uri.protocol().toLowerCase();\n if (protocol && !browserProtocols.includes(protocol)) {\n return false;\n }\n else if (browserImageTypes.includes(img.type)) {\n return true;\n }\n else if (browserImageTypes.includes('image/' + uri.suffix().toLowerCase())) {\n return true;\n }\n else if (img.type) {\n return false;\n }\n else {\n return true; // If no img.type is given, try to load it anyway: https://github.com/radiantearth/stac-browser/issues/147\n }\n }\n\n // Gets the value at path of object.\n // Drop in replacement for lodash.get\n static getValueFromObjectUsingPath(object, path) {\n if (object === null || typeof object !== 'object') {\n return;\n }\n object = object[path[0]];\n if (typeof object !== 'undefined' && path.length > 1) {\n return this.getValueFromObjectUsingPath(object, path.slice(1));\n }\n return object;\n }\n\n static search(searchterm, target, and = true) {\n if (typeof searchterm !== 'string' || searchterm.length === 0) {\n return false;\n }\n if (Utils.isObject(target)) {\n target = Object.values(target);\n }\n else if (typeof target === 'string') {\n target = [target];\n }\n\n if (!Array.isArray(target)) {\n return false;\n }\n\n let splitChars = /[\\s.,;!&({[)}]]+/g;\n\n // Prepare search terms\n searchterm = searchterm.toLowerCase().split(splitChars);\n\n // Prepare text to search in\n target = target\n .filter(s => typeof s === 'string') // Remove non-strings\n .join(' ') // Merge into a single string\n .replace(splitChars, ' ') // replace split chars with white spaces\n .toLowerCase(); // Lowercase\n\n // Search with \"and\" or \"or\"\n let fn = and ? 'every' : 'some';\n return searchterm[fn](term => target.includes(term));\n }\n\n static createLink(href, rel) {\n return { href, rel };\n }\n\n static supportsExtension(data, pattern) {\n if (!Utils.isObject(data) || !Array.isArray(data['stac_extensions'])) {\n return false;\n }\n let regexp = new RegExp('^' + pattern.replaceAll('*', '[^/]+') + '$');\n return Boolean(data['stac_extensions'].find(uri => regexp.test(uri)));\n }\n\n /**\n * Deep merge two objects.\n * @param target\n * @param ...sources\n */\n static mergeDeep(target, ...sources) {\n if (!sources.length) {\n return target;\n }\n const source = sources.shift();\n\n if (Utils.isObject(target) && Utils.isObject(source)) {\n for (const key in source) {\n if (Utils.isObject(source[key])) {\n if (!target[key]) {\n Object.assign(target, { [key]: {} });\n }\n Utils.mergeDeep(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n\n return Utils.mergeDeep(target, ...sources);\n }\n\n}","var map = {\n\t\"./de-CH/default.js\": [\n\t\t54028,\n\t\t3528,\n\t\t4028\n\t],\n\t\"./de/default.js\": [\n\t\t11848,\n\t\t3528,\n\t\t1848\n\t],\n\t\"./en/default.js\": [\n\t\t25712,\n\t\t5712\n\t],\n\t\"./es/default.js\": [\n\t\t67388,\n\t\t7388\n\t],\n\t\"./fr-CA/default.js\": [\n\t\t59904,\n\t\t8312,\n\t\t9904\n\t],\n\t\"./fr-CH/default.js\": [\n\t\t13344,\n\t\t8312,\n\t\t3344\n\t],\n\t\"./fr/default.js\": [\n\t\t5336,\n\t\t8312,\n\t\t5336\n\t],\n\t\"./it-CH/default.js\": [\n\t\t38276,\n\t\t7806,\n\t\t8276\n\t],\n\t\"./it/default.js\": [\n\t\t14319,\n\t\t7806,\n\t\t4319\n\t],\n\t\"./ro/default.js\": [\n\t\t36912,\n\t\t6912\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 41100;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./de-CH/config.json\": 22440,\n\t\"./de/config.json\": 86832,\n\t\"./en/config.json\": 20584,\n\t\"./es/config.json\": 40240,\n\t\"./fr-CA/config.json\": 42068,\n\t\"./fr-CH/config.json\": 54152,\n\t\"./fr/config.json\": 1400,\n\t\"./it-CH/config.json\": 51000,\n\t\"./it/config.json\": 54094,\n\t\"./ro/config.json\": 62164\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 99460;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"48\":\"d04b42a5\",\"208\":\"97e1b531\",\"218\":\"3145dce9\",\"339\":\"7dea1546\",\"476\":\"02ee4105\",\"572\":\"40caaa91\",\"760\":\"328055c5\",\"996\":\"b534b37f\",\"1228\":\"8582509b\",\"1284\":\"202c3e88\",\"1528\":\"1dd4310c\",\"1584\":\"a59f0b52\",\"1752\":\"6038b67b\",\"1788\":\"e7c77fdd\",\"1824\":\"9102e1c7\",\"1848\":\"e11c4201\",\"2160\":\"1cb40f4f\",\"2460\":\"eec5173e\",\"2760\":\"6e1a440d\",\"3036\":\"16ce77f2\",\"3160\":\"ad48b6e4\",\"3332\":\"ceea0dd1\",\"3344\":\"fd9b3c49\",\"3352\":\"e7e14b18\",\"3420\":\"e3361d04\",\"3528\":\"cef89b72\",\"3772\":\"11aad282\",\"3816\":\"9a35f861\",\"3868\":\"9182d669\",\"3904\":\"961abe1f\",\"3912\":\"900420c2\",\"4028\":\"94076d02\",\"4052\":\"17101470\",\"4319\":\"91793b70\",\"4488\":\"adb82aee\",\"5128\":\"7b07d513\",\"5336\":\"23e459db\",\"5712\":\"6c28c413\",\"5824\":\"840fe143\",\"5879\":\"4c193e89\",\"5900\":\"d51697c7\",\"5960\":\"904a8aec\",\"6000\":\"0f74d122\",\"6072\":\"b46bb304\",\"6112\":\"f1671ffc\",\"6164\":\"57c0c11c\",\"6456\":\"f466fcb9\",\"6572\":\"a9ff018e\",\"6877\":\"77aa8315\",\"6912\":\"80f00f78\",\"7388\":\"7703a8c2\",\"7412\":\"3236f9d5\",\"7456\":\"3b5cf581\",\"7716\":\"4665b4e4\",\"7806\":\"e92c7bb4\",\"7920\":\"ca667644\",\"8276\":\"e67b539f\",\"8312\":\"6dcd7011\",\"8980\":\"7852a14e\",\"9000\":\"399a467e\",\"9044\":\"8526a0bb\",\"9156\":\"cb7b6fa5\",\"9392\":\"6759f767\",\"9856\":\"2b727b48\",\"9904\":\"32ce9edf\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"208\":\"c771d657\",\"218\":\"0530e224\",\"572\":\"4149415b\",\"1228\":\"1719e529\",\"1528\":\"e6c27227\",\"2760\":\"6fac7cd8\",\"3036\":\"081b4583\",\"3816\":\"572c83fc\",\"5824\":\"4f7e2a66\",\"5900\":\"d1fd0faa\",\"7412\":\"4b50bc38\",\"8980\":\"a94c9ca6\",\"9044\":\"72c8c98f\",\"9156\":\"480cfd4a\",\"9392\":\"6ad781a6\",\"9856\":\"0780c10b\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = function(module) {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: function() {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"@radiantearth/stac-browser:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/to/be/replaced/stac_browser/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t3524: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"208\":1,\"218\":1,\"572\":1,\"1228\":1,\"1528\":1,\"2760\":1,\"3036\":1,\"3816\":1,\"5824\":1,\"5900\":1,\"7412\":1,\"8980\":1,\"9044\":1,\"9156\":1,\"9392\":1,\"9856\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t3524: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(218 != chunkId) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_radiantearth_stac_browser\"] = self[\"webpackChunk_radiantearth_stac_browser\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [999], function() { return __webpack_require__(61332); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["render","_vm","this","_c","_self","staticClass","displayTitle","_v","_s","_e","attrs","_l","assets","asset","key","expand","context","definition","shown","includes","on","show","staticRenderFns","directives","name","rawName","value","uid","expression","expanded","title","id","Array","isArray","roles","$t","deprecated","role","displayRole","shortFileFormat","fileFormat","domProps","type","collapseToggled","model","callback","$$v","href","isBrowserProtocol","browserCanOpenFile","buttonText","canShow","isThumbnail","description","ignore","components","BCollapse","BIconBoxArrowUpRight","BIconCheck","BIconChevronDown","BIconChevronRight","BIconDownload","BIconEye","CopyButton","Description","Metadata","mixins","StacFieldsMixin","formatMediaType","props","Object","required","String","default","Boolean","data","computed","mapState","mapGetters","tileRendererType","buildTileUrlTemplate","useTileLayerAsFallback","imageMediaTypes","isGdalVfs","mapMediaTypes","length","shorten","protocol","match","toLowerCase","browserProtocols","Utils","isGdalVfsUri","baseUrl","STAC","getAbsoluteUrl","getRequestUrl","from","protocolName","canBrowserDisplayImage","what","where","source","created","stateQueryParameters","indexOf","methods","$te","assign","$emit","isVisible","event","$store","commit","component","Asset","count","size","langKey","$tc","stac","isItem","load","modifiers","class","classes","isList","hasImage","_b","thumbnail","catalog","fileFormats","format","_f","temporalExtent","StacLink","filters","summarize","text","summarizeMd","ThumbnailCardMixin","formatTemporalExtent","push","getStac","_this$data","_this$data$extent","_this$data$extent$tem","isCollection","extent","temporal","interval","getFileFormats","visible","compact","inline","markup","allowHTML","reader","commonmark","writer","safe","smart","parsed","parse","queued","isDeprecated","hasDescription","item","properties","datetime","Registry","require","formatTimestamp","start_datetime","end_datetime","hasText","items","api","sort","showPagination","ref","pagination","paginate","allowFilter","filtersOpen","apiFilters","emitFilter","loading","chunkedItems","hasFilters","hasMore","showMore","first","$event","prev","next","last","placement","link","BIconSearch","Item","ItemFilter","Loading","Pagination","SortButtons","chunkSize","Number","shownItems","values","filter","slice","a","b","getDisplayTitle","localeCompare","uiLanguage","reverse","some","cardViewSort","reset","$refs","topPagination","scrollTo","$el","small","fill","stretch","top","tag","tooltip","attributes","icon","fallbackTitle","Function","icons","getIcons","find","o","isLink","isStacBrowserLink","isStacMediaType","stacBrowserNavigatesTo","rel","to","target","getBrowserPath","toBrowserPath","startsWith","privateQueryParameters","uri","URI","queryKey","hasQuery","addQuery","toString","fallback","isObject","module","exports","catalogUrl","catalogTitle","allowExternalAccess","allowedDomains","detectLocaleFromBrowser","storeLocale","locale","fallbackLocale","supportedLocales","apiCatalogPriority","tileSourceTemplate","displayGeoTiffByDefault","encodeURIComponent","stacProxyUrl","pathPrefix","historyMode","cardViewMode","showThumbnailsAsAssets","stacLint","geoTiffResolution","redirectLegacyUrls","itemsPerPage","defaultThumbnailSize","maxPreviewsOnMap","crossOriginMedia","requestHeaders","requestQueryParameters","preprocessSTAC","authConfig","formatter","token","functions","mixin","fn","arguments","showThumbnail","thumbnails","getThumbnails","width","height","t","src","alt","crossorigin","right","blankColor","config","CONFIG_PATH","CONFIG_CLI","Vue","use","VueI18n","API_LANGUAGE_CONFORMANCE","LOCALE_CONFIG","loadLocaleConfig","CONFIG","messages","languages","i18n","loadDefaultMessages","Promise","all","loadMessages","async","mergeLocaleMessage","translateFields","vars","te","Fields","stringLocale","keywordPos","keyword","substr","undefined","localeWithoutKeyword","parts","replace","split","language","shift","retVar","variant","pop","toUpperCase","country","script","substring","prepareSupported","supported","lgs","forEach","supportedLocale","Error","countries","firstCountry","main","lg","getBest","defaultLocale","getAnyCountry","doAuth","globalError","hideError","sidebar","displayCatalogTitle","scopedSlots","_u","browserVersion","proxy","isExternal","error","url","errorDescription","errorId","dismissible","message","tab","selectedAsset","dataChanged","hasAssets","shownAssets","showAsset","additionalLinks","keywords","collectionLink","providers","ignoredMetadataFields","shownAssetsOnMap","shownBandsOnMap","selectedAssetKey","keys","thumbnailRefs","map","tabs","bands","meta","toBrowserUrl","store","path","getters","window","location","origin","state","fragment","addSpatialCoverage","schema","bbox","spatialCoverage","geo","box","join","formatTemporalCoverage","dates","dt","makeAssets","contentUrl","toAbsolute","encodingFormat","makeLinks","links","isBasedOn","obj","fallbackDescription","makeProvider","p","email","mail","stacType","container","collection","tc","inX","createBaseSchema","_data$getMetadata","thumbnailUrl","stacUrl","inLanguage","getMetadata","code","license","_data$getLinkWithRel","getLinkWithRel","copyrightHolder","producer","provider","creator","citation","identifier","dateCreated","dateModified","datePublished","expires","version","image","createCatalogSchema","parents","i","findIndex","_data$extent","_data$extent$temporal","_data$extent2","_data$extent2$spatial","temporalCoverage","spatial","associatedMedia","hasPart","catalogs","dataset","isPartOf","createItemSchema","includedInDataCatalog","start","end","distribution","addSchemaToDocument","doc","element","getElementById","createElement","head","appendChild","innerText","JSON","stringify","AnonymizedNotice","Assets","BTabs","BTab","CollectionLink","DeprecationNotice","Links","Map","Providers","ReadMore","Thumbnails","ShowAssetMixin","watch","immediate","handler","parentLink","document","console","cc","mixed","hasCatalogs","hasItems","empty","licenses","temporalExtents","linkPosition","hasThumbnails","mapData","hasItemAssets","item_assets","hasProviders","hasMoreCollections","loadMoreCollections","isApi","itemPages","apiItemsLoading","paginateItems","filterItems","isComplete","catalogView","view","searchTerm","cardsComponent","cardsComponentProps","loadMore","toggle","BIconBricks","BIconListTask","selectedValue","ViewButtons","columns","get","set","Catalog","SearchBox","ViewMixin","haystack","concat","search","Catalogs","Items","Keywords","formatLicense","formatTemporalExtents","getApiItemsLoading","extents","pages","apiItemsPagination","apiItemsLink","addFiltersToLink","getApiItemsLink","features","rootLink","dispatch","$root","msg","ErrorAlert","isAxiosError","response","res","status","detail","BrowserError","is","oldPath","redirectLegacyUrl","fromBrowser","loadApi","part","every","decode","newPath","$router","query","getRoutes","routes","Browse","route","params","pathMatch","loadParent","CqlLike","CqlComparisonOperator","constructor","pred","super","SYMBOL","label","longLabel","_defineProperty","Queryable","formatKey","isTemporal","isText","isNumeric","isBoolean","types","isSelection","enum","isDate","isDateTime","defaultValue","Date","minimum","getOperators","cql","ops","CqlEqual","CqlNotEqual","CqlLessThan","CqlLessThanEqual","CqlGreaterThan","CqlGreaterThanEqual","advancedComparison","toText","toJSON","property","stacRequest","cx","opts","headers","acceptedLanguages","method","Accept","isExternalUrl","body","axios","unproxyUrl","absoluteUrl","proxyUrl","processSTAC","freeze","isAuthenticationError","_error$response","addQueryIfNotExists","getStore","router","localDefaults","valid","localRequestQueryParameters","itemdef","apiItems","queryables","catalogDefaults","queue","authData","conformsTo","dataLanguage","dataLanguages","apiCollections","nextCollectionsLink","Vuex","strict","database","allowSelectCatalog","globalRequestQueryParameters","returnErrorObject","root","_state$data","isCatalog","_state$data2","isCatalogLike","_state$data3","_state$data4","_","_state$data5","getStacLinkWithRel","createLink","getLinksWithRels","segment","_state$data6","supportsConformance","classRegexp","c","replaceAll","regexp","RegExp","supportsExtension","schemaUri","getStacLinksWithRel","hasCollections","getApiCollectionsLink","hasChilds","showCollections","showChilds","addMissingChildren","_state$data7","getLinksWithOtherRels","stacBrowserSpecialHandling","relative","absolute","relativeTo","authority","q","fromBrowserPath","externalRE","endsWith","whitelist","domain","equals","relativeStr","addLocalQueryParams","navigator","entries","l","mutations","setQueryParameter","delete","setRequestHeader","requestAuth","setAuthData","setCatalogUrlData","catalogUrlData","openCollapsible","idx","newState","closeCollapsible","updateLoading","loaded","clear","resetCatalog","clearAll","resetPage","showPage","unshift","lang","errored","unqueue","splice","removeFromQueue","num","setConformanceClasses","setApiItemsLink","toggleApiItemsLoading","collectionId","setApiItems","feature","pageLinks","stacPagination","pageLink","setApiData","addApiCollections","collections","nextLink","resetApiItems","showGlobalError","addQueryables","actions","switchLocale","userSelected","localStorage","setItem","dataLanguageCodes","dataLanguageFallback","setCatalogUrl","setAuth","loadBackground","urls","promises","loadParents","parentStac","args","loadRoot","force","isPotentiallyIncomplete","localeLink","getLocaleLink","conformanceLink","loadApiItems","limit","selfLink","_cx$getters$root","apiCollectionsLink","markPotentiallyIncomplete","loadNextApiCollections","loadOgcApiConformance","loadQueryables","refParser","schemas","ogcQueryables","isMediaType","schemaMediaType","dereference","log","loadGeoJson","retryAfterAuth","errorFn","catch","validate","_response$data","_response$data$body","addSearch","valid_stac","stacVersion","isSearchPage","containerLink","parentLinkTitle","collectionLinkTitle","searchBrowserLink","auth","currentLanguage","native","global","supportsLanguageExt","ui","canValidate","browserUrl","twitterUrl","mailTo","open","BFormGroup","BFormInput","BIconArrowUpRightSquare","BInputGroup","BInputGroupAppend","LANGUAGE_EXT","BDropdown","BDropdownItem","BIconBlank","BIconEnvelope","BIconExclamationTriangle","BIconFlag","BIconLink","BIconShare","BIconTwitter","BPopover","Url","host","hostname","newLang","alternate","uiSupported","dataSupported","mapActions","BIconArrow90degUp","BIconBook","BIconFolderSymlink","BIconLock","BIconUnlock","Source","stac_version","dataLink","getSearchLink","equalUrl","currentRoute","AlertPlugin","ButtonGroupPlugin","ButtonPlugin","BadgePlugin","CardPlugin","LayoutPlugin","SpinnerPlugin","directive","VBToggle","VBVisible","VueRouter","mode","base","Props","Watchers","newValue","Authentication","Sidebar","StacHeader","onDataLoaded","catalogUrlFromVueX","detectLocaleFromBrowserFromVueX","fallbackLocaleFromVueX","supportedLocalesFromVueX","storeLocaleFromVueX","STAC_BROWSER_VERSION","setAttribute","I18N","$i18n","documentElement","deep","$route","duplicated","oldRoot","canChange","doReset","doSet","beforeCreate","cookies","cookie","MAIN_SETTING","onReady","detectLocale","parseQuery","afterEach","resetOp","mounted","$on","showError","setInterval","getItem","best","_params$state","privateFromHash","hash","private","realKey","localRequest","init","then","h","StacBrowser","$mount","productionTip","CqlOperator","operator","clone","create","op","arg","stacObjCounter","migrate","_id","_url","_path","_apiChildrenListeners","_incomplete","_apiChildren","list","Migrate","isItemCollection","hasApiData","setApiDataListener","listener","v","getChildren","priority","children","geojsonMediaType","post","field","available","hreflang","allowEmpty","rels","getAssetsWithRoles","matches","sources","getTitle","titleForHref","_linkToAbsolute","img","browserOnly","prefer","other","stacHierarchy","ogcRelPrefix","commonFileNames","stacMediaTypes","browserImageTypes","geotiffMediaTypes","string","normalizeUri","noParams","absoluteTo","normalize","uri1","uri2","maxLength","removeMd","el","rect","getBoundingClientRect","innerHeight","bottom","scrollIntoView","behavior","block","dateFromUTC","offset","getTimezoneOffset","getTime","dateToUTC","formatDatetimeQuery","toISOString","isEmpty","isFinite","removeQuery","setQuery","preferFileName","file","filename","dir","directory","suffix","getValueFromObjectUsingPath","object","searchterm","and","splitChars","s","term","pattern","test","mergeDeep","webpackAsyncContext","req","__webpack_require__","resolve","e","ids","webpackContext","webpackContextResolve","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","call","m","deferred","O","result","chunkIds","notFulfilled","Infinity","fulfilled","j","r","n","getter","__esModule","d","leafPrototypes","getProto","getPrototypeOf","__proto__","ns","def","current","getOwnPropertyNames","defineProperty","enumerable","f","chunkId","reduce","u","miniCssF","g","globalThis","hmd","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","done","needAttach","scripts","getElementsByTagName","getAttribute","charset","timeout","nc","onScriptComplete","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","Symbol","toStringTag","nmd","paths","createStylesheet","fullhref","oldTag","reject","linkTag","onLinkComplete","errorType","realHref","err","request","insertBefore","nextSibling","findStylesheet","existingLinkTags","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","promise","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/cumulus_lambda_functions/uds_api/stac_browser/js/app.79583f94.js b/cumulus_lambda_functions/uds_api/stac_browser/js/app.ad7851bb.js similarity index 74% rename from cumulus_lambda_functions/uds_api/stac_browser/js/app.79583f94.js rename to cumulus_lambda_functions/uds_api/stac_browser/js/app.ad7851bb.js index 36141760..fcfc4cf1 100644 --- a/cumulus_lambda_functions/uds_api/stac_browser/js/app.79583f94.js +++ b/cumulus_lambda_functions/uds_api/stac_browser/js/app.ad7851bb.js @@ -1,2 +1,2 @@ -(function(){var t={73216:function(t,e,a){"use strict";a.r(e),a.d(e,{default:function(){return L}});var s=function(){var t=this,e=t._self._c;return e("section",{staticClass:"assets mb-4"},[t.displayTitle?e("h2",[t._v(t._s(t.displayTitle))]):t._e(),e("div",{staticClass:"accordion",attrs:{role:"tablist"}},t._l(t.assets,(function(a,s){return e("Asset",{key:s,attrs:{asset:a,expand:t.expand,context:t.context,definition:t.definition,shown:t.shown.includes(s),id:s},on:{show:t.show}})})),1)])},r=[],i=function(){var t=this,e=t._self._c;return e("b-card",{staticClass:"asset",attrs:{"no-body":""}},[e("b-card-header",{staticClass:"p-0",attrs:{"header-tag":"header",role:"tab"}},[e("b-button",{directives:[{name:"b-toggle",rawName:"v-b-toggle",value:t.uid,expression:"uid"}],staticClass:"p-2 d-flex",attrs:{block:"",variant:"asset",squared:""}},[e("span",{staticClass:"title"},[e("span",{staticClass:"mr-1",attrs:{"aria-hidden":"true"}},[t.expanded?e("b-icon-chevron-down"):e("b-icon-chevron-right")],1),t._v(" "+t._s(t.asset.title||t.id)+" ")]),Array.isArray(t.asset.roles)?e("div",{staticClass:"badges ml-1"},[t.shown?e("b-badge",{staticClass:"shown ml-1 mb-1",attrs:{variant:"success",title:t.$t("assets.currentlyShown")}},[e("b-icon-check"),t._v(" "+t._s(t.$t("assets.shown"))+" ")],1):t._e(),t.asset.deprecated?e("b-badge",{staticClass:"deprecated ml-1 mb-1",attrs:{variant:"warning"}},[t._v(t._s(t.$t("deprecated")))]):t._e(),t._l(t.asset.roles,(function(a){return e("b-badge",{key:a,staticClass:"role ml-1 mb-1",attrs:{variant:"data"===a?"primary":"secondary"}},[t._v(t._s(t.displayRole(a)))])})),t.shortFileFormat?e("b-badge",{staticClass:"format ml-1 mb-1",attrs:{variant:"dark",title:t.fileFormat}},[e("span",{domProps:{innerHTML:t._s(t.shortFileFormat)}})]):t._e()],2):t._e()])],1),e("b-collapse",{attrs:{id:t.uid,accordion:t.type,role:"tabpanel"},on:{input:t.collapseToggled},model:{value:t.expanded,callback:function(e){t.expanded=e},expression:"expanded"}},[e("b-card-body",[e("b-card-title",[e("span",{domProps:{innerHTML:t._s(t.fileFormat)}})]),t.href?e("b-button-group",{staticClass:"actions"},[t.isBrowserProtocol?e("b-button",{attrs:{href:t.href,target:"_blank",variant:"primary"}},[t.browserCanOpenFile?e("b-icon-box-arrow-up-right"):e("b-icon-download"),t._v(" "+t._s(t.buttonText)+" ")],1):e("CopyButton",{attrs:{variant:"primary",copyText:t.href}},[t._v(" "+t._s(t.buttonText)+" ")]),t.canShow&&!t.shown?e("b-button",{attrs:{variant:"primary"},on:{click:t.show}},[e("b-icon-eye"),t._v("  "),t.isThumbnail?[t._v(t._s(t.$t("assets.showThumbnail")))]:[t._v(t._s(t.$t("assets.showOnMap")))]],2):t._e()],1):t._e(),t.asset.description?e("b-card-text",{staticClass:"mt-4"},[e("Description",{attrs:{description:t.asset.description,compact:""}})],1):t._e(),e("Metadata",{staticClass:"mt-4",attrs:{data:t.asset,context:t.context,ignoreFields:t.ignore,title:"",type:"Asset"}})],1)],1)],1)},n=[],o=a(52220),l=a(88676),c=a(49584),u=a(48416),d=a(44093),p=a(82124),h=a(40848),f=a(10484),g={name:"Asset",components:{BCollapse:o.t,BIconBoxArrowUpRight:l.OS8,BIconCheck:l.ggS,BIconChevronDown:l.k1Y,BIconChevronRight:l.DbH,BIconDownload:l._4n,BIconEye:l.akp,CopyButton:()=>a.e(3772).then(a.bind(a,83772)),Description:d["default"],Metadata:()=>Promise.all([a.e(3912),a.e(5879),a.e(5900)]).then(a.bind(a,55900))},mixins:[(0,f.c)({formatMediaType:c.formatMediaType})],props:{asset:{type:Object,required:!0},id:{type:String,required:!0},context:{type:Object,default:null},definition:{type:Boolean,default:!1},expand:{type:Boolean,default:null},shown:{type:Boolean,default:!1}},data(){return{expanded:!1,ignore:["href","title","description","type","roles","proj:bbox","proj:geometry","table:storage_options","xarray:open_kwargs","xarray:storage_options"]}},computed:{...(0,u.ys)(["buildTileUrlTemplate","useTileLayerAsFallback","url","stateQueryParameters"]),...(0,u.gV)(["getRequestUrl"]),tileRendererType(){return this.buildTileUrlTemplate&&!this.useTileLayerAsFallback?"server":"client"},type(){return this.definition?"itemdef":"asset"},uid(){return`${this.type}-${this.id}`},isThumbnail(){return Array.isArray(this.asset.roles)&&this.asset.roles.includes("thumbnail")},canShow(){return"string"===typeof this.asset.type&&(!("server"!==this.tileRendererType||!h.eQ.includes(this.asset.type))||(!this.isGdalVfs||"client"!==this.tileRendererType)&&(!!this.isBrowserProtocol&&!!h.Iz.includes(this.asset.type)))},fileFormat(){return"string"===typeof this.asset.type&&this.asset.type.length>0?this.formatMediaType(this.asset.type):null},shortFileFormat(){return"string"===typeof this.asset.type&&this.asset.type.length>0?this.formatMediaType(this.asset.type,null,{shorten:!0}):null},protocol(){if("string"===typeof this.href&&this.href){let t=this.href.match(/^(\w+):\/\//);if(t)return t[1].toLowerCase()}return null},isBrowserProtocol(){return!this.protocol&&!this.isGdalVfs||h.IZ.includes(this.protocol)},isGdalVfs(){return h.cp.isGdalVfsUri(this.asset.href)},href(){if("string"!==typeof this.asset.href)return null;let t=null;return this.context instanceof p.c&&(t=this.context.getAbsoluteUrl()),this.getRequestUrl(this.asset.href,t)},from(){if(this.isGdalVfs){let t=this.asset.href.match(/^\/vsi([a-z\d]+)(_streaming)?\//);return this.protocolName(t)}return this.protocolName(this.protocol)},browserCanOpenFile(){if(this.isGdalVfs)return!1;if(h.cp.canBrowserDisplayImage(this.asset))return!0;if("string"===typeof this.asset.type)switch(this.asset.type.toLowerCase()){case"text/html":case"application/xhtml+xml":case"text/plain":case"application/pdf":return!0}return!1},buttonText(){if(this.browserCanOpenFile&&this.isBrowserProtocol)return this.$t("open");let t="download";this.isGdalVfs?t="copyGdalVfsUrl":this.isBrowserProtocol||(t="copyUrl");let e=!this.isBrowserProtocol&&this.from?"withSource":"generic";return this.$t(`assets.${t}.${e}`,{source:this.from})}},created(){this.stateQueryParameters[this.type].indexOf(this.uid)>-1?this.expanded=!0:"boolean"===typeof this.expand?this.expanded=this.expand:this.expanded=!1},methods:{displayRole(t){let e=`assets.role.${t}`;return this.$te(e)?this.$t(e):t},show(){let t=Object.assign({},this.asset);this.isGdalVfs||(t.href=this.href),this.$emit("show",t,this.id,this.isThumbnail)},protocolName(t){if("string"!==typeof t)return"";switch(t.toLowerCase()){case"s3":return this.$t("protocol.s3");case"abfs":case"abfss":return this.$t("protocol.azure");case"gcs":return this.$t("protocol.gcs");case"ftp":return this.$t("protocol.ftp");case"oss":return this.$t("protocol.oss");case"file":return this.$t("protocol.file")}return""},collapseToggled(t){let e=t?"openCollapsible":"closeCollapsible";this.$store.commit(e,{type:this.type,uid:this.uid})}}},m=g,b=a(82528),y=(0,b.c)(m,i,n,!1,null,null,null),v=y.exports,w={name:"Assets",components:{Asset:v},props:{assets:{type:Object,required:!0},shown:{type:Array,default:()=>[]},context:{type:Object,default:null},definition:{type:Boolean,default:!1},title:{type:String,default:null}},computed:{count(){return h.cp.size(this.assets)},displayTitle(){if(null===this.title){let t=this.definition?"assets.inItems":"stacAssets";return this.$tc(t,this.count)}return this.title},expand(){return!this.definition&&(!(1!==this.count||!this.stac||!this.stac.isItem())||null)}},methods:{show(t,e,a){this.$emit("showAsset",t,e,a)}}},_=w,k=(0,b.c)(_,s,r,!1,null,null,null),L=k.exports},54772:function(t,e,a){"use strict";a.d(e,{c:function(){return m}});var s=function(){var t=this,e=t._self._c;return e("b-card",{directives:[{name:"b-visible",rawName:"v-b-visible.400",value:t.load,expression:"load",modifiers:{400:!0}}],class:t.classes,attrs:{"no-body":"","img-right":t.isList}},[t.hasImage?e("b-card-img-lazy",t._b({staticClass:"thumbnail",attrs:{offset:"200"}},"b-card-img-lazy",t.thumbnail,!1)):t._e(),e("b-card-body",[e("b-card-title",[e("StacLink",{staticClass:"stretched-link",attrs:{data:[t.data,t.catalog]}})],1),t.data&&(t.fileFormats.length>0||t.data.description||t.data.deprecated)?e("b-card-text",{staticClass:"intro"},[t.data.deprecated?e("b-badge",{staticClass:"mr-1 mt-1 deprecated",attrs:{variant:"warning"}},[t._v(t._s(t.$t("deprecated")))]):t._e(),t._l(t.fileFormats,(function(a){return e("b-badge",{key:a,staticClass:"mr-1 mt-1 fileformat",attrs:{variant:"secondary"}},[t._v(t._s(t._f("formatMediaType")(a)))])})),t._v(" "+t._s(t._f("summarize")(t.data.description))+" ")],2):t._e(),t.temporalExtent?e("b-card-text",{staticClass:"datetime"},[e("span",{domProps:{innerHTML:t._s(t.temporalExtent)}})]):t._e()],1)],1)},r=[],i=(a(83248),a(48416)),n=a(10484),o=a(97544),l=a(22308),c=a(82124),u=a(49584),d=a(40848),p={name:"Catalog",components:{StacLink:l["default"]},filters:{summarize:t=>d.cp.summarizeMd(t,300),formatMediaType:t=>(0,u.formatMediaType)(t,null,{shorten:!0})},mixins:[o.c,(0,n.c)({formatTemporalExtent:u.formatTemporalExtent})],props:{catalog:{type:Object,required:!0}},computed:{...(0,i.gV)(["getStac"]),classes(){let t=["catalog-card"];return this.data||t.push("queued"),this.data&&this.data.deprecated&&t.push("deprecated"),this.hasImage&&t.push("has-thumbnail"),this.temporalExtent&&t.push("has-extent"),t},data(){return this.getStac(this.catalog)},temporalExtent(){var t,e,a;if(null!==(t=this.data)&&void 0!==t&&t.isCollection()&&(null===(e=this.data.extent)||void 0===e||null===(a=e.temporal)||void 0===a?void 0:a.interval.length)>0){let t=this.data.extent.temporal.interval[0];if(Array.isArray(t)&&("string"===typeof t[0]||"string"===typeof t[1]))return this.formatTemporalExtent(this.data.extent.temporal.interval[0],!0)}return null},fileFormats(){return this.data?this.data.getFileFormats():[]}},methods:{load(t){this.catalog instanceof c.c||this.$store.commit(t?"queue":"unqueue",this.catalog.href)}}},h=p,f=a(82528),g=(0,f.c)(h,s,r,!1,null,null,null),m=g.exports},44093:function(t,e,a){"use strict";a.r(e),a.d(e,{default:function(){return u}});var s=function(){var t=this,e=t._self._c;return e("div",{staticClass:"styled-description",class:{compact:t.compact,inline:t.inline},domProps:{innerHTML:t._s(t.markup(t.description))}})},r=[],i=a(35653),n={name:"Description",props:{description:{type:String,default:""},compact:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},allowHTML:{type:Boolean,default:!1}},methods:{markup(t){if("string"!==typeof t)return"";var e=new i.OE,a=new i.uV({safe:!this.allowHTML,smart:!0}),s=e.parse(t);return a.render(s)}}},o=n,l=a(82528),c=(0,l.c)(o,s,r,!1,null,null,null),u=c.exports},3424:function(t,e,a){"use strict";a.r(e),a.d(e,{default:function(){return b}});var s=function(){var t=this,e=t._self._c;return e("b-card",{directives:[{name:"b-visible",rawName:"v-b-visible.400",value:t.load,expression:"load",modifiers:{400:!0}}],staticClass:"item-card",class:{queued:!t.data,deprecated:t.isDeprecated,description:t.hasDescription},attrs:{"no-body":""}},[t.hasImage?e("b-card-img-lazy",t._b({staticClass:"thumbnail",attrs:{offset:"200"}},"b-card-img-lazy",t.thumbnail,!1)):t._e(),e("b-card-body",[e("b-card-title",[e("StacLink",{staticClass:"stretched-link",attrs:{data:[t.data,t.item]}})],1),t.fileFormats.length>0||t.hasDescription||t.isDeprecated?e("b-card-text",{staticClass:"intro"},[t.isDeprecated?e("b-badge",{staticClass:"mr-1 mt-1 deprecated",attrs:{variant:"warning"}},[t._v(t._s(t.$t("deprecated")))]):t._e(),t._l(t.fileFormats,(function(a){return e("b-badge",{key:a,staticClass:"mr-1 mt-1 fileformat",attrs:{variant:"secondary"}},[t._v(t._s(t._f("formatMediaType")(a)))])})),t.hasDescription?[t._v(t._s(t._f("summarize")(t.data.properties.description)))]:t._e()],2):t._e(),e("b-card-text",[e("small",{staticClass:"text-muted"},[t.extent?[t._v(t._s(t._f("formatTemporalExtent")(t.extent)))]:t.data&&t.data.properties.datetime?[t._v(t._s(t._f("formatTimestamp")(t.data.properties.datetime)))]:[t._v(t._s(t.$t("items.noTime")))]],2)])],1)],1)},r=[],i=a(48416),n=a(97544),o=a(22308),l=a(82124),c=a(49584),u=a(89380),d=a.n(u),p=a(40848);d().addDependency("content-type",a(16840));var h={name:"Item",components:{StacLink:o["default"]},filters:{summarize:t=>p.cp.summarizeMd(t,150),formatMediaType:t=>(0,c.formatMediaType)(t,null,{shorten:!0}),formatTemporalExtent:c.formatTemporalExtent,formatTimestamp:c.formatTimestamp},mixins:[n.c],props:{item:{type:Object,required:!0}},computed:{...(0,i.gV)(["getStac"]),data(){return this.getStac(this.item)},extent(){return this.data&&(this.data.properties.start_datetime||this.data.properties.end_datetime)?[this.data.properties.start_datetime,this.data.properties.end_datetime]:null},fileFormats(){return this.data?this.data.getFileFormats():[]},isDeprecated(){return this.data instanceof l.c&&Boolean(this.data.properties.deprecated)},hasDescription(){return this.data instanceof l.c&&p.cp.hasText(this.data.properties.description)}},methods:{load(t){this.item instanceof l.c||this.$store.commit(t?"queue":"unqueue",this.item.href)}}},f=h,g=a(82528),m=(0,g.c)(f,s,r,!1,null,null,null),b=m.exports},52308:function(t,e,a){"use strict";a.d(e,{c:function(){return k}});var s=function(){var t=this,e=t._self._c;return e("section",{staticClass:"items mb-4"},[e("h2",[e("span",{staticClass:"title"},[t._v(t._s(t.$tc("stacItem",t.items.length)))]),!t.api&&t.items.length>0?e("b-badge",{attrs:{pill:"",variant:"secondary ml-2"}},[t._v(t._s(t.items.length))]):t._e(),!t.api&&t.items.length>1?e("SortButtons",{staticClass:"ml-4",model:{value:t.sort,callback:function(e){t.sort=e},expression:"sort"}}):t._e()],1),t.showPagination?e("Pagination",{ref:"topPagination",attrs:{pagination:t.pagination,placement:"top"},on:{paginate:t.paginate}}):t._e(),t.allowFilter?[t.api?e("b-button",{directives:[{name:"b-toggle",rawName:"v-b-toggle.itemFilter",modifiers:{itemFilter:!0}}],staticClass:"mb-4 mt-2",class:{"ml-3":t.showPagination},attrs:{pressed:t.filtersOpen,variant:"outline-primary"}},[e("b-icon-search"),t._v(" "+t._s(t.$t("items.filter"))+" ")],1):t._e(),e("b-collapse",{attrs:{id:"itemFilter"},model:{value:t.filtersOpen,callback:function(e){t.filtersOpen=e},expression:"filtersOpen"}},[t.filtersOpen?e("ItemFilter",{attrs:{type:"Features",title:t.$t("items.filter"),stac:t.stac,value:t.apiFilters},on:{input:t.emitFilter}}):t._e()],1)]:t._e(),e("section",{staticClass:"list"},[t.loading?e("Loading",{attrs:{fill:"",top:""}}):t._e(),t.chunkedItems.length>0?e("b-card-group",{attrs:{columns:""}},t._l(t.chunkedItems,(function(t){return e("Item",{key:t.href,attrs:{item:t}})})),1):e("b-alert",{attrs:{variant:t.hasFilters?"warning":"info",show:""}},[t.hasFilters?[t._v(t._s(t.$t("search.noItemsFound")))]:[t._v(t._s(t.$t("items.noneAvailableForCollection")))]],2)],1),t.showPagination?e("Pagination",{attrs:{pagination:t.pagination},on:{paginate:t.paginate}}):t.hasMore?e("b-button",{directives:[{name:"b-visible",rawName:"v-b-visible.300",value:t.showMore,expression:"showMore",modifiers:{300:!0}}],attrs:{variant:"primary"},on:{click:t.showMore}},[t._v(t._s(t.$t("showMore")))]):t._e()],2)},r=[],i=a(3424),n=a(26732),o=function(){var t=this,e=t._self._c;return e("b-button-group",{class:t.classes},[e("b-button",{attrs:{disabled:!t.pagination.first,variant:"primary"},on:{click:function(e){return t.paginate(t.pagination.first)}}},[t._v(t._s(t.$t("pagination.first")))]),e("b-button",{attrs:{disabled:!t.pagination.prev,variant:"primary"},on:{click:function(e){return t.paginate(t.pagination.prev)}}},[t._v(t._s(t.$t("pagination.previous")))]),e("b-button",{attrs:{disabled:!t.pagination.next,variant:"primary"},on:{click:function(e){return t.paginate(t.pagination.next)}}},[t._v(t._s(t.$t("pagination.next")))]),t.pagination.last?e("b-button",{attrs:{variant:"primary"},on:{click:function(e){return t.paginate(t.pagination.last)}}},[t._v(t._s(t.$t("pagination.last")))]):t._e()],1)},l=[],c={name:"Pagination",props:{pagination:{type:Object,default:()=>({})},placement:{type:String,default:"bottom"}},computed:{classes(){return"top"===this.placement?"mb-4 mt-2":"mb-2 mt-2"}},methods:{paginate(t){this.$emit("paginate",t,this.placement)}}},u=c,d=a(82528),p=(0,d.c)(u,o,l,!1,null,null,null),h=p.exports,f=a(52220),g=a(88676),m=a(40848),b=a(82124),y=a(48416),v={name:"Items",components:{BCollapse:f.t,BIconSearch:g.i86,Item:i["default"],ItemFilter:()=>Promise.all([a.e(3912),a.e(1824),a.e(218)]).then(a.bind(a,31824)),Loading:n.c,Pagination:h,SortButtons:()=>a.e(996).then(a.bind(a,80996))},props:{items:{type:Array,required:!0},loading:{type:Boolean,default:!1},stac:{type:Object,required:!0},api:{type:Boolean,default:!1},allowFilter:{type:Boolean,default:!0},apiFilters:{type:Object,default:()=>({})},pagination:{type:Object,default:()=>({})},chunkSize:{type:Number,default:90}},data(){return{shownItems:this.chunkSize,filtersOpen:!1,sort:0}},computed:{...(0,y.ys)(["cardViewSort","uiLanguage"]),hasMore(){return this.items.length>this.shownItems},hasFilters(){return Object.values(this.apiFilters).filter((t=>!(null===t||0===m.cp.size(t)))).length>1},chunkedItems(){let t=this.items;return 0!==this.sort&&(t=t.slice(0).sort(((t,e)=>b.c.getDisplayTitle(t).localeCompare(b.c.getDisplayTitle(e),this.uiLanguage))),-1===this.sort&&(t=t.reverse())),!this.api&&this.items.length>this.chunkSize?t.slice(0,this.shownItems):t},showPagination(){if(this.api){if(this.hasFilters)return!0;if(this.items.length>0)return Object.values(this.pagination).some((t=>!!t))}return!1}},created(){this.sort=this.cardViewSort},methods:{emitFilter(t,e){this.$emit("filterItems",t,e)},showMore(){this.shownItems+=this.chunkSize},paginate(t,e){"bottom"===e&&this.$refs.topPagination&&m.cp.scrollTo(this.$refs.topPagination.$el),this.$emit("paginate",t)}}},w=v,_=(0,d.c)(w,s,r,!1,null,"c0719580",null),k=_.exports},26732:function(t,e,a){"use strict";a.d(e,{c:function(){return c}});var s=function(){var t=this,e=t._self._c;return e("div",{class:t.classes},[e("b-spinner",{attrs:{label:t.$t("loading"),small:t.small}})],1)},r=[],i=(a(83248),{name:"Loading",props:{fill:{type:Boolean,default:!1},stretch:{type:Boolean,default:!1},small:{type:Boolean,default:!1},top:{type:Boolean,default:!1}},computed:{classes(){let t=["loading"];return this.fill?t.push("loading-fill"):this.stretch&&t.push("loading-stretch"),this.top&&t.push("top"),t}}}),n=i,o=a(82528),l=(0,o.c)(n,s,r,!1,null,"67931bb8",null),c=l.exports},22308:function(t,e,a){"use strict";a.r(e),a.d(e,{default:function(){return g}});var s=function(){var t=this,e=t._self._c;return e(t.component,t._b({tag:"component",staticClass:"stac-link",attrs:{title:t.tooltip}},"component",t.attributes,!1),[t.icon?[e("img",{staticClass:"icon mr-2",attrs:{src:t.icon.href,alt:t.icon.title,title:t.icon.title}})]:t._e(),e("span",{staticClass:"title"},[t._v(t._s(t.displayTitle))])],2)},r=[],i=a(48416),n=a(81228),o=a(40848),l=a(82124),c=a(63956),u=a.n(c),d={name:"StacLink",props:{data:{type:[Object,Array],default:null},title:{type:String,default:null},fallbackTitle:{type:[String,Function],default:null},tooltip:{type:String,default:null}},computed:{...(0,i.ys)(["privateQueryParameters"]),...(0,i.gV)(["toBrowserPath","getRequestUrl"]),icon(){if(this.stac){let t=this.stac.getIcons();if(t.length>0)return t[0]}return null},stac(){return this.data instanceof l.c?this.data:Array.isArray(this.data)?this.data.find((t=>t instanceof l.c)):null},link(){return this.isLink(this.data)?this.data:Array.isArray(this.data)&&this.data.find((t=>this.isLink(t)))||{}},isStacBrowserLink(){return!!this.stac||!!o.cp.isStacMediaType(this.link.type,!0)&&n.E7.includes(this.link.rel)},attributes(){return this.isStacBrowserLink?{to:this.href,rel:this.rel}:{href:this.href,target:"_blank",rel:this.rel}},component(){return this.isStacBrowserLink?"router-link":"a"},href(){if(this.stac||this.isStacBrowserLink){let t;if(t=this.stac?this.stac.getBrowserPath():this.toBrowserPath(this.link.href),t.startsWith("/")||(t="/"+t),o.cp.size(this.privateQueryParameters)>0){let e=u()(t);for(let t in this.privateQueryParameters){let a=`~${t}`;e.hasQuery(a)||e.addQuery(a,this.privateQueryParameters[t])}t=e.toString()}return t}return this.getRequestUrl(this.link.href)},displayTitle(){if(this.title)return this.title;let t="function"===typeof this.fallbackTitle?this.fallbackTitle():this.fallbackTitle;return l.c.getDisplayTitle(this.data,t)}},methods:{isLink(t){return o.cp.isObject(t)&&!(t instanceof l.c)}}},p=d,h=a(82528),f=(0,h.c)(p,s,r,!1,null,null,null),g=f.exports},79464:function(t){t.exports={catalogUrl:null,catalogTitle:"STAC Browser",allowExternalAccess:!0,allowedDomains:[],detectLocaleFromBrowser:!0,storeLocale:!0,locale:"en",fallbackLocale:"en",supportedLocales:["de","es","en","fr","it","ro"],apiCatalogPriority:null,useTileLayerAsFallback:!0,tileSourceTemplate:null,displayGeoTiffByDefault:!1,buildTileUrlTemplate:({href:t,asset:e})=>"https://tiles.rdnt.io/tiles/{z}/{x}/{y}@2x?url="+encodeURIComponent(e.href.startsWith("/vsi")?e.href:t),stacProxyUrl:null,pathPrefix:"/",historyMode:"history",cardViewMode:"cards",cardViewSort:"asc",showThumbnailsAsAssets:!1,stacLint:!0,geoTiffResolution:128,redirectLegacyUrls:!1,itemsPerPage:12,defaultThumbnailSize:null,maxPreviewsOnMap:50,crossOriginMedia:null,requestHeaders:{},requestQueryParameters:{},preprocessSTAC:null,authConfig:{type:"header",key:"Authorization",formatter:t=>`Bearer ${t}`,description:"Please retrieve the token from our [API console](https://example.com/api-console).\n\nFor further questions contact ."}}},10484:function(t,e,a){"use strict";var s=a(48416);e.c=t=>{let e={computed:{...(0,s.ys)(["uiLanguage"])},methods:{}};for(let a in t){let s=t[a];e.methods[a]=function(){return this.uiLanguage,s(...arguments)}}return e}},97544:function(t,e,a){"use strict";var s=a(48416);e.c={props:{showThumbnail:{type:Boolean,default:!0}},computed:{...(0,s.ys)(["cardViewMode","crossOriginMedia","defaultThumbnailSize"]),isList(){return this.data&&!this.data.isItem()&&"list"===this.cardViewMode},hasImage(){return this.showThumbnail&&this.thumbnail},thumbnail(){if(this.data){let t=this.data.getThumbnails(!0,"thumbnail");if(t.length>0){let e,a,s=t[0];return Array.isArray(s["proj:shape"])&&2===s["proj:shape"].length?[a,e]=s["proj:shape"]:Array.isArray(this.defaultThumbnailSize)&&2===this.defaultThumbnailSize.length&&([a,e]=this.defaultThumbnailSize),{src:s.href,alt:s.title,crossorigin:this.crossOriginMedia,right:this.isList,blankColor:"rgba(0, 0, 0, 0.125)",width:e,height:a,"blank-width":e,"blank-height":a}}}return null}}}},43064:function(t,e,a){"use strict";let s;s=Object.assign(a(79464),{pathPrefix:"/to/be/replaced/stac_browser/"}),e.c=s},75760:function(t,e,a){"use strict";a.d(e,{AF:function(){return h},MB:function(){return f},O8:function(){return g},UB:function(){return c}});var s=a(7768),r=a(54092),i=a(43064),n=a(16184),o=a.n(n),l=a(40848);s.cp.use(r.c);const c=["https://api.stacspec.org/v1.*/language"],u={};function d(){for(let e of i.c.supportedLocales)u[e]=a(99460)(`./${e}/config.json`);const t={};for(let e in u)t[e]={languages:u};return t}const p=new r.c({locale:i.c.locale,fallbackLocale:i.c.fallbackLocale,messages:d()});function h(){return Promise.all([f(i.c.locale),f(i.c.fallbackLocale)])}async function f(t){if(l.cp.size(p.messages[t])>1)return;const e=(await a(41100)(`./${t}/default.js`)).default;p.mergeLocaleMessage(t,e)}function g(t,e=null){if("string"!==typeof t||0===t.length)return t;let a=`fields.${t}`;return p.te(a)?p.t(a,null,e):o().format(t,e)}e.cp=p},18460:function(t,e,a){"use strict";a.d(e,{IB:function(){return r},YV:function(){return i}});a(83248);function s(t){if(!t)return;const e=String(t),a=e.indexOf("@"),s=-1!==a?e.substr(a+1):void 0,r=-1!==a?e.substr(0,a):e,i=String(r).replace(/-/g,"_").split("_");if(!i.length||i.length>4)return;const n=i.shift();if(!n)return;const o={keyword:s,language:n.toLowerCase()};if(!i.length)return o;if(3===i.length){const t=i.pop();t&&(o.variant=t.toUpperCase())}let l=i.pop();if(l.length>3&&(o.keyword=l,l=i.pop()),l&&(o.country=l.toUpperCase()),!i.length)return o;const c=i.pop();return"string"===typeof c&&c.length>=1&&(o.script=c[0].toUpperCase()+c.substring(1).toLowerCase()),o}function r(t){const e={};return t.forEach((t=>{const{language:a,country:r}=s(t);if(!a)throw new Error(`Locale ${t} is not parsable`);e[a]||(e[a]={countries:{},firstCountry:void 0,main:void 0});const i=e[a];r?(i.countries[r]=t,i.firstCountry||(i.firstCountry=t)):i.main=t})),e}function i(t,e,a,n){const o=Array.isArray(t)?r(t):t;if(!e&&a)return i(t,a,void 0,n);if(!e)return;const{language:l,country:c}=s(e);if(!l)return a;if(!o[l]){if(e===a)return;return i(t,a,null,n)}const{countries:u,main:d=a,firstCountry:p}=o[l];return u&&c?n&&p?u[c]?u[c]:p:u[c]?u[c]:d:n&&p?p:d}},61332:function(t,e,a){"use strict";var s=a(7768),r=function(){var t=this,e=t._self._c;return e("b-container",{attrs:{id:"stac-browser"}},[t.doAuth.length>0?e("Authentication"):t._e(),t.globalError?e("ErrorAlert",t._b({staticClass:"global-error",on:{close:t.hideError}},"ErrorAlert",t.globalError,!1)):t._e(),t.sidebar?e("Sidebar"):t._e(),e("header",[e("div",{staticClass:"logo"},[t._v(t._s(t.displayCatalogTitle))]),e("StacHeader",{on:{enableSidebar:function(e){t.sidebar=!0}}})],1),e("router-view"),e("footer",[e("i18n",{staticClass:"poweredby text-muted",attrs:{tag:"small",path:"poweredBy"},scopedSlots:t._u([{key:"link",fn:function(){return[e("a",{attrs:{href:"https://github.com/radiantearth/stac-browser",target:"_blank"}},[t._v("STAC Browser")]),t._v(" "+t._s(t.browserVersion)+" ")]},proxy:!0}])})],1)],1)},i=[],n=(a(83248),a(45408)),o=a(48416),l=a(43064),c=function(){var t=this,e=t._self._c;return e("main",{staticClass:"browse d-flex flex-column"},[!t.allowExternalAccess&&t.isExternal?e("b-alert",{attrs:{show:""}},[e("p",[t._v(t._s(t.$t("errors.noExternalAccess")))])]):t._e(),t.error?e("ErrorAlert",{attrs:{dismissible:!1,url:t.url,description:t.errorDescription,id:t.errorId}}):t.loading?e("Loading",{attrs:{stretch:""}}):e(t.component,{tag:"component"})],1)},u=[],d=function(){var t=this,e=t._self._c;return e("b-alert",{attrs:{variant:"danger",show:"",dismissible:t.dismissible},on:{dismissed:function(e){return t.$emit("close")}}},[e("p",{staticClass:"message"},[t._v(t._s(t.message||t.$t("errors.default")))]),t.error&&t.error.message?e("dl",{staticClass:"error"},[e("dt",[t._v(t._s(t.$t("errors.labels.cause")))]),e("dd",[t._v(t._s(t.error.message))])]):t._e(),t.description?e("dl",{staticClass:"description"},[e("dt",[t._v(t._s(t.$t("errors.labels.reason")))]),e("dd",[t._v(t._s(t.description))])]):t._e(),t.id?e("dl",{staticClass:"id"},[e("dt",[t._v(t._s(t.$t("errors.labels.code")))]),e("dd",[e("code",[t._v(t._s(t.id))])])]):t._e(),t.url?e("dl",{staticClass:"url"},[e("dt",[t._v(t._s(t.$t("errors.labels.requestURL")))]),e("dd",[e("code",[t._v(t._s(t.url))])])]):t._e()])},p=[],h={name:"ErrorAlert",props:{message:{type:String,default:null},description:{type:String,default:""},error:{type:[Object,Error],default:null},id:{type:[String,Number],default:null},url:{type:String,default:""},dismissible:{type:Boolean,default:!0}}},f=h,g=a(82528),m=(0,g.c)(f,d,p,!1,null,"09bb7d1b",null),b=m.exports,y=a(26732),v=function(){var t=this,e=t._self._c;return e("div",{key:t.data.id,staticClass:"item"},[e("b-row",[e("b-col",{staticClass:"left"},[e("section",{staticClass:"mb-4"},[e("b-card",{staticClass:"maps-preview",attrs:{"no-body":""}},[e("b-tabs",{ref:"tabs",attrs:{card:"",pills:"",vertical:"",end:""},model:{value:t.tab,callback:function(e){t.tab=e},expression:"tab"}},[e("b-tab",{attrs:{title:t.$t("map"),"no-body":""}},[e("Map",{attrs:{stac:t.data,stacLayerData:t.selectedAsset,scrollWheelZoom:""},on:{dataChanged:t.dataChanged}})],1),t.thumbnails.length>0?e("b-tab",{attrs:{title:t.$t("thumbnails"),"no-body":""}},[e("Thumbnails",{attrs:{thumbnails:t.thumbnails}})],1):t._e()],1)],1)],1),t.hasAssets?e("Assets",{attrs:{assets:t.assets,context:t.data,shown:t.shownAssets},on:{showAsset:t.showAsset}}):t._e(),t.additionalLinks.length>0?e("Links",{attrs:{title:t.$t("additionalResources"),links:t.additionalLinks}}):t._e()],1),e("b-col",{staticClass:"right"},[e("section",{staticClass:"intro"},[t.data.properties.description?e("h2",[t._v(t._s(t.$t("description")))]):t._e(),t.data.properties.deprecated?e("DeprecationNotice",{attrs:{data:t.data}}):t._e(),t.data.properties["anon:warning"]?e("AnonymizedNotice",{attrs:{warning:t.data.properties["anon:warning"]}}):t._e(),t.data.properties.description?e("ReadMore",{attrs:{lines:10,text:t.$t("read.more"),"text-less":t.$t("read.less")}},[e("Description",{attrs:{description:t.data.properties.description}})],1):t._e(),Array.isArray(t.data.properties.keywords)&&t.data.properties.keywords.length>0?e("Keywords",{attrs:{keywords:t.data.properties.keywords}}):t._e()],1),t.collectionLink?e("CollectionLink",{attrs:{link:t.collectionLink}}):t._e(),t.data.properties.providers?e("Providers",{attrs:{providers:t.data.properties.providers}}):t._e(),e("Metadata",{attrs:{data:t.data,type:"Item",ignoreFields:t.ignoredMetadataFields}})],1)],1)],1)},w=[],_=a(73216),k=a(44093),L=a(34088),C=a.n(L),A=a(40848),x={data(){return{shownAssetsOnMap:[],shownBandsOnMap:[],tab:null,selectedAsset:null,selectedAssetKey:null}},computed:{...(0,o.gV)(["thumbnails","hasAssets","assets"]),shownAssets(){if(0===this.tab)return this.shownAssetsOnMap;if(1===this.tab||null===this.tab&&this.thumbnails.length>0){let t=[],e=this.thumbnails.map((t=>t.href));for(let a in this.assets){let s=this.assets[a];e.includes(s.href)&&t.push(a)}return t}return[]}},methods:{showAsset(t,e,a){a?this.tab=1:(this.tab=0,this.selectedAsset=t,this.selectedAssetKey=e),this.$refs.tabs&&A.cp.scrollTo(this.$refs.tabs.$el)},dataChanged(t){A.cp.isObject(t)?t.assets||t.bands?(A.cp.size(t.assets)>0&&(this.selectedAssetKey?this.shownAssetsOnMap=[this.selectedAssetKey]:this.shownAssetsOnMap=t.assets.map((t=>t.key))),A.cp.size(t.bands)>0&&(this.shownBandsOnMap=t.bands)):this.selectedAssetKey&&(this.shownAssetsOnMap=[this.selectedAssetKey]):(this.shownBandsOnMap=[],this.shownAssetsOnMap=[])}}},T=a(3924),O=a(21544),S=a(82124),$=a(63956),B=a.n($),I=a(75760);function j(t,e){let a=e.getters.toBrowserPath(t),s=B()(window.location.origin.toString());return"hash"===e.state.historyMode?(s.path(e.state.pathPrefix),s.fragment(a)):s.path(e.state.pathPrefix.replace(/\/$/,"")+a),s.toString()}function P(t,e){Array.isArray(e)&&e.length>=4&&(t.spatialCoverage={"@type":"Place",geo:{"@type":"GeoShape",box:(e||[]).join(" ")}})}function M(t){return!Array.isArray(t)||2!==t.length||"string"!==typeof t[0]&&"string"!==typeof t[1]?null:t.map((t=>t||"..")).join("/")}function U(t){return A.cp.size(t.assets)>0?Object.values(t.assets).map((e=>({"@type":"DataDownload",contentUrl:A.cp.toAbsolute(e.href,t.getAbsoluteUrl()),encodingFormat:e.type,name:e.title}))):[]}function E(t,e,a,s="DataCatalog"){return t.map((t=>{let r,i;t instanceof S.c?(r=S.c.getDisplayTitle(t),i=t.getAbsoluteUrl()):(r=t.title,i=A.cp.toAbsolute(t.href,e.getAbsoluteUrl()));let n={"@type":s,name:r,url:j(i,a),isBasedOn:i};return"Dataset"===s&&(n.description=D(t,a)),n}))}function F(t,e){return t.filter((t=>A.cp.isObject(t)&&Array.isArray(t.roles)&&t.roles.includes(e))).map((t=>({"@type":"Organization",name:t.name,description:t.description,url:t.url,email:t.email||t.mail})))}function D(t,e){let a,s;if(t instanceof S.c?(a=t.isItem()?"Item":t.type,s=t.collection):A.cp.isObject(t)&&"item"===t.rel&&(a="Item"),a){let r=I.cp.tc(`stac${a}`),i=I.cp.t("in",{catalog:s||e.catalogTitle});return`SpatioTemporal Asset Catalog (STAC)\n${r} - ${t.id} ${i}`}}function q(t,e,a){var s;let r,i=S.c.getDisplayTitle(t),n=t.getAbsoluteUrl(),o=j(n,a),l=null===(s=t.getMetadata("language"))||void 0===s?void 0:s.code,c=t.getThumbnails(!0);c.length>0&&(r=A.cp.toAbsolute(c[0].href,t.getAbsoluteUrl()));let u=t.getMetadata("license");var d;u&&"proprietary"!==u&&"various"!==u?u=`https://spdx.org/licenses/${u}.html`:u=null===(d=t.getLinkWithRel("license"))||void 0===d?void 0:d.href;u&&(u=A.cp.toAbsolute(u,t.getAbsoluteUrl()));let p,h,f,g,m=t.getMetadata("providers");return A.cp.size(m)>0&&(p=F(m,"licensor"),h=F(m,"producer"),f=F(m,"host"),g=F(m,"processor")),{"@context":"https://schema.org/","@type":e,name:i,description:t.getMetadata("description")||D(t,a),citation:t.getMetadata("sci:citation"),identifier:t.getMetadata("sci:doi")||t.id,keywords:t.getMetadata("keywords"),license:u,url:o,isBasedOn:n,dateCreated:t.getMetadata("created"),dateModified:t.getMetadata("updated"),datePublished:t.getMetadata("published"),expires:t.getMetadata("expires"),inLanguage:l,thumbnailUrl:r,version:t.getMetadata("version"),image:r,copyrightHolder:p,producer:h,provider:f,creator:g}}function R(t,e,a){if(!(t instanceof S.c))return null;e=e.filter((t=>A.cp.isObject(t))),e.length>1&&(e=e.filter(((t,a)=>e.findIndex((e=>e.isBasedOn===t.isBasedOn))!==a)));let s=q(t,"DataCatalog",a);var r,i,n,o;t.isCollection()&&((null===(r=t.extent)||void 0===r||null===(i=r.temporal)||void 0===i?void 0:i.interval.length)>0&&(s.temporalCoverage=M(t.extent.temporal.interval[0])),(null===(n=t.extent)||void 0===n||null===(o=n.spatial)||void 0===o?void 0:o.bbox.length)>0&&P(s,t.extent.spatial.bbox[0]),s.associatedMedia=U(t));return s.hasPart=E(a.getters.catalogs,t,a),s.dataset=E(a.getters.items,t,a,"Dataset"),s.isPartOf=E(e,t,a),s}function V(t,e,a){if(!(t instanceof S.c))return null;e=e.filter((t=>A.cp.isObject(t)));let s=q(t,"Dataset",a);s.includedInDataCatalog=E(e,t,a);let r=t.getMetadata("start_datetime"),i=t.getMetadata("end_datetime");return s.temporalCoverage=r||i?M([r,i]):t.getMetadata("datetime"),P(s,t.bbox),s.distribution=U(t),s}function N(t,e){let a="schema-org",s=t.getElementById(a);s||(s=t.createElement("script"),s.type="application/ld+json",s.id=a,t.head.appendChild(s)),s.innerText=JSON.stringify(e)}var z={name:"Item",components:{AnonymizedNotice:()=>a.e(4488).then(a.bind(a,54488)),Assets:_["default"],BTabs:T.k,BTab:O.o,CollectionLink:()=>a.e(1788).then(a.bind(a,81788)),Description:k["default"],DeprecationNotice:()=>a.e(1528).then(a.bind(a,11528)),Links:()=>Promise.all([a.e(3912),a.e(5879),a.e(3816)]).then(a.bind(a,23816)),Map:()=>a.e(572).then(a.bind(a,572)),Metadata:()=>Promise.all([a.e(3912),a.e(5879),a.e(5900)]).then(a.bind(a,55900)),Providers:()=>a.e(5824).then(a.bind(a,45824)),ReadMore:C(),Thumbnails:()=>a.e(7412).then(a.bind(a,97412))},mixins:[x],data(){return{ignoredMetadataFields:["title","description","providers","deprecated","proj:bbox","proj:geometry","anon:warning"]}},computed:{...(0,o.ys)(["data","url"]),...(0,o.gV)(["additionalLinks","collectionLink","parentLink"])},watch:{data:{immediate:!0,handler(t){try{let e=V(t,[this.collectionLink,this.parentLink],this.$store);N(document,e)}catch(e){console.error(e)}}}}},W=z,Q=(0,g.c)(W,v,w,!1,null,null,null),H=Q.exports,G=function(){var t=this,e=t._self._c;return e("div",{key:t.data.id,class:{cc:!0,[t.data.type.toLowerCase()]:!0,mixed:t.hasCatalogs&&t.hasItems,empty:!t.hasCatalogs&&!t.hasItems}},[e("b-row",[e("b-col",{staticClass:"meta"},[e("section",{staticClass:"intro"},[e("h2",[t._v(t._s(t.$t("description")))]),t.data.deprecated?e("DeprecationNotice",{attrs:{data:t.data}}):t._e(),t.data["anon:warning"]?e("AnonymizedNotice",{attrs:{warning:t.data["anon:warning"]}}):t._e(),t.data.description?e("ReadMore",{attrs:{lines:10,text:t.$t("read.more"),"text-less":t.$t("read.less")}},[e("Description",{attrs:{description:t.data.description}})],1):t._e(),Array.isArray(t.data.keywords)&&t.data.keywords.length>0?e("Keywords",{attrs:{keywords:t.data.keywords}}):t._e(),t.isCollection?e("section",{staticClass:"metadata mb-4"},[t.licenses?e("b-row",[e("b-col",{staticClass:"label",attrs:{md:"4"}},[t._v(t._s(t.$t("catalog.license")))]),e("b-col",{staticClass:"value",attrs:{md:"8"},domProps:{innerHTML:t._s(t.licenses)}})],1):t._e(),t.temporalExtents?e("b-row",[e("b-col",{staticClass:"label",attrs:{md:"4"}},[t._v(t._s(t.$t("catalog.temporalExtent")))]),e("b-col",{staticClass:"value",attrs:{md:"8"},domProps:{innerHTML:t._s(t.temporalExtents)}})],1):t._e()],1):t._e(),"left"===t.linkPosition?e("Links",{attrs:{title:t.$t("additionalResources"),links:t.additionalLinks}}):t._e()],1),t.isCollection||t.hasThumbnails?e("section",{staticClass:"mb-4"},[e("b-card",{staticClass:"maps-preview",attrs:{"no-body":""}},[e("b-tabs",{ref:"tabs",attrs:{pills:"",card:"",vertical:"",end:""},model:{value:t.tab,callback:function(e){t.tab=e},expression:"tab"}},[t.isCollection?e("b-tab",{attrs:{title:t.$t("map"),"no-body":""}},[e("Map",{attrs:{stac:t.data,stacLayerData:t.mapData,popover:""},on:{dataChanged:t.dataChanged}})],1):t._e(),t.hasThumbnails?e("b-tab",{attrs:{title:t.$t("thumbnails"),"no-body":""}},[e("Thumbnails",{attrs:{thumbnails:t.thumbnails}})],1):t._e()],1)],1)],1):t._e(),t.hasAssets?e("Assets",{attrs:{assets:t.assets,context:t.data,shown:t.shownAssets},on:{showAsset:t.showAsset}}):t._e(),t.hasItemAssets&&!t.hasItems?e("Assets",{attrs:{assets:t.data.item_assets,definition:!0}}):t._e(),t.hasProviders?e("Providers",{attrs:{providers:t.data.providers}}):t._e(),e("Metadata",{staticClass:"mb-4",attrs:{title:t.$t("metadata.title"),type:t.data.type,data:t.data,ignoreFields:t.ignoredMetadataFields}}),t.collectionLink?e("CollectionLink",{attrs:{link:t.collectionLink}}):t._e(),"right"===t.linkPosition?e("Links",{attrs:{title:t.$t("additionalResources"),links:t.additionalLinks}}):t._e()],1),t.hasCatalogs?e("b-col",{staticClass:"catalogs-container"},[e("Catalogs",{attrs:{catalogs:t.catalogs,hasMore:t.hasMoreCollections},on:{loadMore:t.loadMoreCollections}})],1):t._e(),t.hasItems?e("b-col",{staticClass:"items-container"},[e("Items",{attrs:{stac:t.data,items:t.items,api:t.isApi,apiFilters:t.filters,pagination:t.itemPages,loading:t.apiItemsLoading},on:{paginate:t.paginateItems,filterItems:t.filterItems}}),t.hasItemAssets?e("Assets",{attrs:{assets:t.data.item_assets,definition:!0}}):t._e()],1):t._e()],1)],1)},Y=[],J=function(){var t=this,e=t._self._c;return e("section",{staticClass:"catalogs mb-4"},[e("h2",[e("span",{staticClass:"title"},[t._v(t._s(t.$tc("stacCatalog",t.catalogs.length)))]),t.isComplete?e("b-badge",{attrs:{pill:"",variant:"secondary ml-2"}},[t.catalogs.length!==t.catalogView.length?[t._v(t._s(t.catalogView.length)+"/"+t._s(t.catalogs.length))]:[t._v(t._s(t.catalogs.length))]],2):t._e(),e("ViewButtons",{staticClass:"ml-4",model:{value:t.view,callback:function(e){t.view=e},expression:"view"}}),t.isComplete&&t.catalogs.length>1?e("SortButtons",{staticClass:"ml-2",model:{value:t.sort,callback:function(e){t.sort=e},expression:"sort"}}):t._e()],1),t.isComplete&&t.catalogs.length>1?e("SearchBox",{staticClass:"mt-3 mb-2",attrs:{placeholder:t.$t("catalogs.filterByTitle")},model:{value:t.searchTerm,callback:function(e){t.searchTerm=e},expression:"searchTerm"}}):t._e(),t.searchTerm&&0===t.catalogView.length?e("b-alert",{attrs:{variant:"warning",show:""}},[t._v(t._s(t.$t("catalogs.noMatches")))]):t._e(),e(t.cardsComponent,t._b({tag:"component"},"component",t.cardsComponentProps,!1),t._l(t.catalogView,(function(t){return e("Catalog",{key:t.href,attrs:{catalog:t}})})),1),t.hasMore?e("b-button",{directives:[{name:"b-visible",rawName:"v-b-visible.300",value:t.loadMore,expression:"loadMore",modifiers:{300:!0}}],attrs:{variant:"primary"},on:{click:t.loadMore}},[t._v(t._s(t.$t("catalogs.loadMore")))]):t._e()],1)},K=[],X=a(54772),Z=function(){var t=this,e=t._self._c;return e("b-button-group",{attrs:{title:t.$t("view.title"),size:"sm"}},[e("b-button",{attrs:{title:t.$t("view.tiles.title"),variant:"outline-primary",pressed:"cards"===t.value},on:{click:function(e){return t.toggle("cards")}}},[e("b-icon-bricks"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("view.tiles.label")))])],1),e("b-button",{attrs:{title:t.$t("view.list.title"),variant:"outline-primary",pressed:"list"===t.value},on:{click:function(e){return t.toggle("list")}}},[e("b-icon-list-task"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("view.list.label")))])],1)],1)},tt=[],et=a(88676),at={id:"SortButtons",components:{BIconBricks:et.wNg,BIconListTask:et.wN7},props:{value:{type:String,default:"cards"}},methods:{toggle(t){this.value!==t&&this.$emit("input",t)}}},st=at,rt=(0,g.c)(st,Z,tt,!1,null,null,null),it=rt.exports,nt={components:{ViewButtons:it},computed:{cardsComponent(){return"list"===this.view?"div":"b-card-group"},cardsComponentProps(){return"list"===this.view?{class:["card-list"]}:{columns:!0}},view:{get(){return this.$store.state.cardViewMode},set(t){this.$store.commit("config",{cardViewMode:t})}}}},ot={name:"Catalogs",components:{Catalog:X.c,SearchBox:()=>a.e(9392).then(a.bind(a,89392)),SortButtons:()=>a.e(996).then(a.bind(a,80996))},mixins:[nt],props:{catalogs:{type:Array,required:!0},hasMore:{type:Boolean,default:!1}},data(){return{searchTerm:"",sort:0}},computed:{...(0,o.ys)(["cardViewSort","uiLanguage"]),...(0,o.gV)(["getStac"]),isComplete(){return!this.hasMore},catalogView(){if(this.hasMore)return this.catalogs;let t=this.catalogs.map((t=>{let e=this.getStac(t);return e||t}));return this.searchTerm&&(t=t.filter((t=>{let e=[t.title];return t instanceof S.c?(e.push(t.id),Array.isArray(t.keywords)&&(e=e.concat(t.keywords))):e.push(t.href),A.cp.search(this.searchTerm,e)}))),this.hasMore||0===this.sort||(t=t.slice(0).sort(((t,e)=>S.c.getDisplayTitle(t).localeCompare(S.c.getDisplayTitle(e),this.uiLanguage))),-1===this.sort&&(t=t.reverse())),t}},created(){this.sort=this.cardViewSort},methods:{loadMore(t=!0){t&&(this.sort=0,this.$emit("loadMore"))}}},lt=ot,ct=(0,g.c)(lt,J,K,!1,null,"7aceb6cd",null),ut=ct.exports,dt=a(52308),pt=a(10484),ht=a(49584),ft={name:"Catalog",components:{AnonymizedNotice:()=>a.e(4488).then(a.bind(a,54488)),Assets:()=>Promise.resolve().then(a.bind(a,73216)),BTabs:T.k,BTab:O.o,Catalogs:ut,CollectionLink:()=>a.e(1788).then(a.bind(a,81788)),DeprecationNotice:()=>a.e(1528).then(a.bind(a,11528)),Description:k["default"],Items:dt.c,Keywords:()=>a.e(6112).then(a.bind(a,6112)),Links:()=>Promise.all([a.e(3912),a.e(5879),a.e(3816)]).then(a.bind(a,23816)),Map:()=>a.e(572).then(a.bind(a,572)),Metadata:()=>Promise.all([a.e(3912),a.e(5879),a.e(5900)]).then(a.bind(a,55900)),Providers:()=>a.e(5824).then(a.bind(a,45824)),ReadMore:C(),Thumbnails:()=>a.e(7412).then(a.bind(a,97412))},mixins:[x,(0,pt.c)({formatLicense:ht.formatLicense,formatTemporalExtents:ht.formatTemporalExtents})],data(){return{filters:{},ignoredMetadataFields:["stac_version","stac_extensions","id","type","title","description","keywords","providers","license","extent","summaries","links","assets","item_assets","proj:bbox","proj:geometry","conformsTo","deprecated","anon:warning","stac_browser"]}},computed:{...(0,o.ys)(["data","url","apiItems","apiItemsLink","apiItemsPagination"]),...(0,o.gV)(["additionalLinks","catalogs","collectionLink","isCollection","items","hasMoreCollections","getApiItemsLoading","parentLink","rootLink"]),hasThumbnails(){return this.thumbnails.length>0},linkPosition(){return 0===this.additionalLinks.length?null:this.isCollection||!this.hasThumbnails?"right":"left"},apiItemsLoading(){return this.getApiItemsLoading(this.data)},licenses(){return this.isCollection&&this.data.license?this.formatLicense(this.data.license,null,null,this.data):null},hasProviders(){return this.isCollection&&Array.isArray(this.data.providers)&&this.data.providers.length>0},temporalExtents(){if(this.data&&this.data.isCollection()&&this.data.extent.temporal.interval.length>0){let t=this.data.extent.temporal.interval;return t.length>1&&(t=t.slice(1)),this.formatTemporalExtents(t)}return null},hasItemAssets(){var t;return A.cp.size(null===(t=this.data)||void 0===t?void 0:t.item_assets)>0},itemPages(){let t=Object.assign({},this.apiItemsPagination);return!t.first&&this.data&&this.apiItemsLink&&"items"!==this.apiItemsLink.rel&&(t.first=A.cp.addFiltersToLink(this.data.getApiItemsLink(),this.filters)),t},isApi(){return Boolean(this.apiItemsLink)},hasItems(){return this.items.length>0||this.isApi},hasCatalogs(){return this.catalogs.length>0},mapData(){return this.selectedAsset?this.selectedAsset:{type:"FeatureCollection",features:this.items}}},watch:{data:{immediate:!0,handler(t){try{let e=R(t,[this.parentLink,this.rootLink],this.$store);N(document,e)}catch(e){console.error(e)}}}},methods:{loadMoreCollections(){this.$store.dispatch("loadNextApiCollections",{show:!0})},async paginateItems(t){try{await this.$store.dispatch("loadApiItems",{link:t,show:!0,filters:this.filters})}catch(e){this.$root.$emit("error",e,this.$t("errors.loadItems"))}},async filterItems(t,e){this.filters=t,e&&this.$store.commit("resetApiItems");try{await this.$store.dispatch("loadApiItems",{link:this.apiItemsLink,show:!0,filters:t})}catch(a){let t=e?this.$t("errors.loadItems"):this.$t("errors.loadFilteredItems");this.$root.$emit("error",a,t)}}}},gt=ft,mt=(0,g.c)(gt,G,Y,!1,null,null,null),bt=mt.exports,yt={name:"Browse",components:{ErrorAlert:b,Loading:y.c,Catalog:bt,Item:H},props:{path:{type:String,default:""}},computed:{...(0,o.ys)(["allowExternalAccess","url","data","redirectLegacyUrls"]),...(0,o.gV)(["isItem","error","loading"]),errorId(){if(this.error instanceof Error&&this.error.isAxiosError&&A.cp.isObject(this.error.response)){let t=this.error.response;return A.cp.isObject(t.data)&&t.data.code?t.data.code:t.status}return null},errorDescription(){if(this.error instanceof Error&&this.error.isAxiosError&&A.cp.isObject(this.error.response)){let t=this.error.response;if(A.cp.isObject(t.data)){if("string"===typeof t.data.description)return t.data.description;if("string"===typeof t.data.detail)return t.data.detail}if(401===t.status)return this.$t("errors.unauthorized");if(403===t.status)return this.$t("errors.forbidden");if(404===t.status)return this.$t("errors.notFound");if(t.status>500)return this.$t("errors.serverError");if(t.status>400)return this.$t("errors.badRequest")}else if(this.error instanceof A.UB)return this.error.message;return this.$t("errors.networkError")},component(){return this.isItem?"Item":"Catalog"},isExternal(){return B()(this.path).is("absolute")}},watch:{path:{immediate:!0,async handler(t,e){t!==e&&(this.redirectLegacyUrls&&await this.redirectLegacyUrl(t)||this.$store.dispatch("load",{url:t||"/",fromBrowser:!0,show:!0,loadApi:!0}))}}},methods:{async redirectLegacyUrl(t){if(!t||"/"===t)return!1;let e=t.split("/").filter((t=>t.length>0&&"item"!==t&&"collection"!==t));if(e.length>0&&e.every((t=>t.match(/^[123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ]+$/)))){const{decode:t}=await a.e(2460).then(a.t.bind(a,40080,23));let s=t(e[e.length-1]).toString();if(s){let t=B()(s);return this.$router.replace({path:"/"+t.path().replace(/(collections|items)\/?$/,""),query:t.query(!0)}),!0}}return!1}}},vt=yt,wt=(0,g.c)(vt,c,u,!1,null,null,null),_t=wt.exports;function kt(t){let e=[];return t.allowExternalAccess&&e.push({path:"/external/(.*)",name:"browseExternal",component:_t,props:t=>({path:`/external/${t.params.pathMatch}`})}),t.catalogUrl?e.push({path:"/search",name:"search",component:()=>Promise.all([a.e(3912),a.e(1824),a.e(1228)]).then(a.bind(a,88896))}):(e.push({path:"/",name:"select",component:()=>a.e(9044).then(a.bind(a,79044))}),e.push({path:"/search/external/(.*)",name:"search",component:()=>Promise.all([a.e(3912),a.e(1824),a.e(1228)]).then(a.bind(a,88896)),props:t=>({loadParent:`/external/${t.params.pathMatch}`})})),e.push({path:"/(.*)",name:"browse",component:_t,props:t=>({path:t.params.pathMatch})}),e}var Lt=kt,Ct=a(52774),At=a(81228),xt=a(9040),Tt=a(98864),Ot=a(93808);class St extends Tt.cp{constructor(t=null,e=null){super(St.SYMBOL,t,e)}static get label(){return"~"}static get longLabel(){return I.cp.t("search.matches")}static get description(){return I.cp.t("search.likeOperatorDescription")}}(0,Ot.c)(St,"SYMBOL","like");class $t{constructor(t,e){this.id=t,this.schema=e}get title(){return"string"===typeof this.schema.title?this.schema.title:(0,xt.formatKey)(this.id)}get description(){return this.isTemporal?I.cp.t("search.dateDescription"):""}get supported(){return this.isText||this.isNumeric||this.isBoolean}is(t){return this.types.includes(t)}get isSelection(){return Array.isArray(this.schema.enum)}get isText(){return this.is("string")}get isBoolean(){return this.is("boolean")}get isNumeric(){return this.is("number")||this.is("integer")}get isDate(){return this.isText&&"date"===this.schema.format}get isDateTime(){return this.isText&&"date-time"===this.schema.format}get isTemporal(){return this.isDate||this.isDateTime}get defaultValue(){return"undefined"!==typeof this.schema.default?this.schema.default:this.isSelection?this.schema.enum[0]:this.isTemporal?new Date:this.isNumeric?"undefined"!==typeof this.schema.minimum?this.schema.minimum:0:this.isText?"":!this.isBoolean&&null}get types(){return"string"===typeof this.schema.type?[this.schema.type]:Array.isArray(this.schema.type)?this.schema.type:[]}getOperators(t){let e=[Tt.gv,Tt.c3];return this.isNumeric||this.isTemporal?(e.push(Tt.a),e.push(Tt.Ip),e.push(Tt.wN),e.push(Tt.W0)):this.isText&&t.advancedComparison&&e.push(St),e}toText(){return this.id}toJSON(){return{property:this.id}}}class Bt{constructor(t=!1,e=!1){this.show=Boolean(t),this.loadApi=Boolean(e)}}async function It(t,e){let a,s={"Accept-Language":t.getters.acceptedLanguages};if(A.cp.isObject(e)){let r="string"===typeof e.method?e.method.toLowerCase():"get",i=t.getters.getRequestUrl(e.href);A.cp.hasText(e.type)&&(s.Accept=e.type),t.getters.isExternalUrl(i)||Object.assign(s,t.state.requestHeaders),A.cp.isObject(e.headers)&&Object.assign(s,e.headers),a={method:r,url:i,headers:s,data:e.body}}else if("string"===typeof e){let r=t.getters.getRequestUrl(e);t.getters.isExternalUrl(r)||Object.assign(s,t.state.requestHeaders),a={method:"get",url:r,headers:s}}else a=e;return await(0,Ct.c)(a)}function jt(t,e){return t instanceof B()&&(t=t.toString()),"string"===typeof t&&Array.isArray(e)?t.replace(e[1],e[0]):t}function Pt(t,e){return t instanceof B()&&(t=t.toString()),"string"===typeof t&&Array.isArray(e)?t.replace(e[0],e[1]):t}function Mt(t,e){return"function"===typeof t.preprocessSTAC&&(e=t.preprocessSTAC(e,t)),Object.freeze(e)}function Ut(t){var e;return[401,403].includes(null===t||void 0===t||null===(e=t.response)||void 0===e?void 0:e.status)}function Et(t,e){if(0==A.cp.size(e))return t;for(let a in e)t.hasQuery(a)||t.addQuery(a,e[a]);return t}var Ft=a(18460);function Dt(t,e){const a=()=>({url:"",title:t.catalogTitle,description:null,data:null,valid:null,parents:null,globalError:null,localRequestQueryParameters:{},stateQueryParameters:{language:null,asset:[],itemdef:[]},apiItems:[],apiItemsLink:null,apiItemsPagination:{},queryables:null}),r=()=>({queue:[],privateQueryParameters:{},authData:null,doAuth:[],conformsTo:[],dataLanguage:null,dataLanguages:[],apiCollections:[],apiItemsLoading:{},nextCollectionsLink:null});return new o.cp.Store({strict:!0,state:Object.assign({},t,a(),r(),{database:{},allowSelectCatalog:!t.catalogUrl,globalRequestQueryParameters:t.requestQueryParameters,uiLanguage:t.locale}),getters:{loading:t=>!t.url||!t.data||t.database[t.url]instanceof Bt,getApiItemsLoading:t=>e=>{let a="";return e instanceof Bt||(e instanceof S.c?a=e.id:"string"===typeof e&&(a=e),t.apiItemsLoading[a]||!1)},error:t=>t.database[t.url]instanceof Error?t.database[t.url]:null,getStac:t=>(e,a=!1)=>{if(e instanceof S.c)return e;if(A.cp.isObject(e)&&A.cp.hasText(e.href)&&(e=e.href),!A.cp.hasText(e))return null;let s=A.cp.toAbsolute(e,t.url),r=t.database[s];return r instanceof S.c||a&&r instanceof Error?r:null},displayCatalogTitle:(t,e)=>S.c.getDisplayTitle(e.root,t.catalogTitle),isCollection:t=>{var e;return(null===(e=t.data)||void 0===e?void 0:e.isCollection())||!1},isCatalog:t=>{var e;return(null===(e=t.data)||void 0===e?void 0:e.isCatalog())||!1},isCatalogLike:t=>{var e;return(null===(e=t.data)||void 0===e?void 0:e.isCatalogLike())||!1},isItem:t=>{var e;return(null===(e=t.data)||void 0===e?void 0:e.isItem())||!1},root:(t,e)=>e.getStac(e.rootLink),rootLink:t=>{var e;let a=null===(e=t.data)||void 0===e?void 0:e.getStacLinkWithRel("root");if(a)return a;if(t.catalogUrl)return A.cp.createLink(t.catalogUrl,"root");if(t.url&&t.data instanceof S.c&&t.data.getLinksWithRels(["conformance","service-desc","service-doc","data","search"]).length>0)return A.cp.createLink(t.url,"root");if(t.url){let e=B()(t.url),a=e.segment(-2);if(["collections","items"].includes(a))return e.segment(-1,""),e.segment(-1,""),"items"===a&&(e.segment(-1,""),e.segment(-1,"")),A.cp.createLink(e.toString(),"root")}return null},parentLink:t=>{if(t.data instanceof S.c){let e=t.data.getStacLinkWithRel("parent");if(e)return e}if(t.url){let e=B()(t.url),a=e.segment(-2);if(["collections","items"].includes(a))return e.segment(-1,""),e.segment(-1,""),A.cp.createLink(e.toString(),"parent")}return null},collectionLink:t=>{if(t.data instanceof S.c){var e;let a=null===(e=t.data)||void 0===e?void 0:e.getStacLinkWithRel("collection");if(a)return a}if(t.url){let e=B()(t.url),a=e.segment(-2);if("items"==a)return e.segment(-1,""),e.segment(-1,""),A.cp.createLink(e.toString(),"collection")}return null},supportsConformance:t=>e=>{if(!Array.isArray(e))return e;let a=e.map((t=>t.replaceAll("*","[^/]+").replace(/\/?#/,"/?#"))).join("|"),s=new RegExp("^("+a+")$");return Boolean(t.conformsTo.find((t=>t.match(s))))},supportsExtension:t=>e=>A.cp.supportsExtension(t.data,e),items:t=>t.apiItems.length>0?t.apiItems:t.data?t.data.getStacLinksWithRel("item"):[],catalogs:t=>{let e=Boolean(t.data instanceof S.c&&t.data.getApiCollectionsLink()&&t.apiCollections.length>0),a=Boolean(t.data instanceof S.c),s=!t.apiCatalogPriority||"collections"===t.apiCatalogPriority,r=!t.apiCatalogPriority||"childs"===t.apiCatalogPriority,i=[];return e&&s&&(i=i.concat(t.apiCollections)),a&&r&&(i=S.c.addMissingChildren(i,t.data)),i},hasMoreCollections:t=>Boolean(t.nextCollectionsLink),hasAssets:(t,e)=>Boolean(Object.values(e.assets).find((t=>A.cp.isObject(t)&&"string"===typeof t.href))),assets:(t,e)=>{var a;if(A.cp.isObject(null===(a=t.data)||void 0===a?void 0:a.assets)){if(t.showThumbnailsAsAssets)return t.data.assets;{let a={},s=e.thumbnails;for(let e in t.data.assets){let r=t.data.assets[e];s.includes(r)||(a[e]=r)}return a}}return{}},thumbnails:t=>t.data?t.data.getThumbnails(!0):[],additionalLinks:t=>t.data?t.data.getLinksWithOtherRels(At.OU).filter((t=>"preview"!==t.rel||!A.cp.canBrowserDisplayImage(t))):[],toBrowserPath:(t,e)=>a=>{A.cp.hasText(a)||(a="/");let s,r=A.cp.toAbsolute(jt(a,t.stacProxyUrl),t.url,!1);if(!t.allowSelectCatalog&&t.catalogUrl&&(s=r.relativeTo(t.catalogUrl)),"undefined"===typeof s||e.isExternalUrl(r,!1)){if(!t.allowExternalAccess)return r.toString();let e=["/external"],a=r.protocol();"https"!==a&&e.push(a+":"),e.push(r.authority()),e.push(r.path().replace(/^\//,""));let s=e.join("/"),i=r.query();return i&&(s+=`?${i}`),s}return"/"+s.toString()},fromBrowserPath:(t,e)=>a=>{const s=/^\/(search\/)?external\//;if(A.cp.hasText(a)&&"/"!==a)if(a.match(s)){let t,e=a.replace(s,"").split("/");t=e[0].endsWith(":")?e.shift():"https:",a=`${t}//${e.join("/")}`}else!t.allowSelectCatalog&&t.catalogUrl&&(a=A.cp.toAbsolute(a,t.catalogUrl,!1));else a=t.catalogUrl;return e.getRequestUrl(a,null,!0)},isExternalUrl:t=>(e,a=!0)=>{if(!t.catalogUrl)return!1;if(e instanceof B()||(e=B()(e)),a&&Array.isArray(t.allowedDomains)&&t.allowedDomains.includes(e.domain()))return!1;let s=e.relativeTo(t.catalogUrl);if(s.equals(e))return!0;let r=s.toString();return r.startsWith("//")||r.startsWith("../")},getRequestUrl:(t,e)=>(a,s=null,r=!1)=>{let i=A.cp.toAbsolute(Pt(a,t.stacProxyUrl),s||t.url,!1);return e.isExternalUrl(i)||(Et(i,t.privateQueryParameters),Et(i,t.globalRequestQueryParameters),r&&Et(i,t.localRequestQueryParameters)),i.toString()},acceptedLanguages:t=>{const e={en:.1};return Array.isArray(t.supportedLocales)&&t.supportedLocales.forEach((t=>e[t]=.2)),A.cp.hasText(t.fallbackLocale)&&(e[t.fallbackLocale]=.5),Array.isArray(navigator.languages)&&navigator.languages.forEach((t=>e[t]=.7)),A.cp.hasText(t.locale)&&(e[t.locale]=1),Object.entries(e).sort(((t,e)=>t[1]>e[1]?-1:t[1]e>=1?t:`${t};q=${e}`)).join(",")}},mutations:{config(t,e){for(let a in e){let s=e[a];switch(a){case"catalogTitle":t.catalogTitle=s;break;case"catalogUrl":"function"===typeof s?t.catalogUrl=s():"string"===typeof s&&(t.catalogUrl=s);break;case"stacProxyUrl":"string"===typeof s&&s.includes(";")?t[a]=s.split(";"):t[a]=s;break;case"crossOriginMedia":t.crossOriginMedia=["anonymous","use-credentials"].includes(s)?s:null;break;case"cardViewSort":switch(s){case"asc":t.cardViewSort=1;break;case"desc":t.cardViewSort=-1;break;default:t.cardViewSort=0}break;default:t[a]=s}}},languages(t,{uiLanguage:e,dataLanguage:a}){t.dataLanguage=a||null,t.uiLanguage=e||null},setQueryParameter(t,{type:e,key:a,value:r}){e=`${e}QueryParameters`,"undefined"===typeof r?s.cp.delete(t[e],a):s.cp.set(t[e],a,r)},setRequestHeader(t,{key:e,value:a}){"undefined"===typeof a?s.cp.delete(t.requestHeaders,e):s.cp.set(t.requestHeaders,e,a)},requestAuth(t,e){"function"===typeof e?t.doAuth.push(e):t.doAuth=[]},setAuthData(t,e){t.authData=e},setCatalogUrlData(t,e){t.catalogUrlData=e},openCollapsible(t,{type:e,uid:a}){const s=t.stateQueryParameters[e].indexOf(a);-1===s&&t.stateQueryParameters[e].push(a)},state(t,e){t.stateQueryParameters=e},closeCollapsible(t,{type:e,uid:a}){const r=t.stateQueryParameters[e].indexOf(a);r>-1&&s.cp.delete(t.stateQueryParameters[e],r)},updateLoading(t,{url:e,show:a,loadApi:r}){let i=t.database[e];s.cp.set(i,"show",a||i.show),s.cp.set(i,"loadApi",r||i.loadApi)},loading(t,{url:e,loading:a}){s.cp.set(t.database,e,a),a.show&&(t.url=e)},loaded(t,{url:e,data:a}){s.cp.set(t.database,e,Mt(t,a))},clear(t,e){s.cp.delete(t.database,e)},resetCatalog(e,s){Object.assign(e,r()),Object.assign(e,a()),e.supportedLocales.includes(e.locale)||(e.locale=t.locale),s&&(e.catalogUrl=t.catalogUrl,e.catalogTitle=t.catalogTitle,e.database={})},resetPage(t){Object.assign(t,a())},showPage(t,{url:e,title:a,description:s,stac:r}){if(r||(r=t.database[e]||null),t.url=e||null,t.data=r instanceof S.c?r:null,t.valid=null,t.description=s,a)t.title=a;else if(t.title=S.c.getDisplayTitle(t.data,t.catalogTitle),t.data){let e=t.data.getMetadata("description");A.cp.hasText(e)&&(t.description=e)}if(t.data){let e=t.data.isItem()?t.data.properties:t.data,a=Array.isArray(e.languages)?e.languages.slice():[];A.cp.isObject(e.language)&&a.unshift(e.language),t.dataLanguages=a.filter((t=>A.cp.isObject(t)&&"string"===typeof t.code))}},errored(t,{url:e,error:a}){a instanceof Error||(a=new Error(a)),s.cp.set(t.database,e,a)},valid(t,e){t.valid=e},queue(t,e){t.queue.push(e)},unqueue(t,e){let a=t.queue.indexOf(e);-1!==a&&t.queue.splice(a,1)},removeFromQueue(t,e){t.queue.splice(0,e)},setConformanceClasses(t,e){Array.isArray(e)&&(t.conformsTo=e)},setApiItemsLink(t,e){t.apiItemsLink=e},toggleApiItemsLoading(t,e=""){t.apiItemsLoading[e]?s.cp.delete(t.apiItemsLoading,e):s.cp.set(t.apiItemsLoading,e,!0)},setApiItems(t,{data:e,stac:a,show:s}){if(!A.cp.isObject(e)||!Array.isArray(e.features))return;let r=e.features.map((e=>Mt(t,e)));s&&(t.apiItems=r);let i=A.cp.getLinksWithRels(e.links,At.ei),n={};for(let o of i){let t="previous"===o.rel?"prev":o.rel;n[t]=o}s&&(t.apiItemsPagination=n),a instanceof S.c&&a.setApiData(r,n.next,n.prev)},addApiCollections(t,{data:e,stac:a,show:s}){if(!A.cp.isObject(e)||!Array.isArray(e.collections))return;let r=e.collections.map((e=>Mt(t,e))),i=A.cp.getLinkWithRel(e.links,"next");s&&(t.nextCollectionsLink=i,t.apiCollections=t.apiCollections.concat(r)),a instanceof S.c&&a.setApiData(r,i)},resetApiItems(t){t.apiItems=[],t.apiItemsPagination={}},parents(t,e){t.parents=e},showGlobalError(t,e){console.error(e),t.globalError=e},addQueryables(t,e){A.cp.isObject(e)&&A.cp.isObject(e.properties)?t.queryables=Object.entries(e.properties).map((([t,e])=>new $t(t,e))):t.queryables=[]}},actions:{async switchLocale(t,{locale:e,userSelected:a}){if(t.commit("config",{locale:e}),t.state.storeLocale&&a)try{window.localStorage.setItem("locale",e)}catch(o){console.error(o)}let s=(0,Ft.YV)(t.state.supportedLocales,e,t.state.fallbackLocale),r=t.state.dataLanguages.map((t=>t.code)),i=t.state.dataLanguages.length>0?t.state.dataLanguages[0].code:s,n=(0,Ft.YV)(r,e,i);t.commit("languages",{dataLanguage:n,uiLanguage:s}),t.commit("setQueryParameter",{type:"state",key:"language",value:e})},async setCatalogUrl(t,e){A.cp.hasText(e)||(e=null),t.commit("setCatalogUrlData",e)},async setAuth(t,e){A.cp.hasText(e)||(e=null),t.commit("setAuthData",e);let a=t.state.authConfig,s=a.key;e&&("Bearer"===a.formatter?e=`Bearer ${e}`:"function"===typeof a.formatter&&(e=a.formatter(e))),A.cp.hasText(e)||(e=void 0),"query"===a.type?t.commit("setQueryParameter",{type:"private",key:s,value:e}):"header"===a.type&&t.commit("setRequestHeader",{key:s,value:e})},async loadBackground(t,e){let a=t.state.queue.slice(0,e);if(a.length>0){let s=[];for(let e of a)s.push(t.dispatch("load",{url:e}));return t.commit("removeFromQueue",e),await Promise.all(s)}},async loadParents(t){if(!(t.state.data instanceof S.c))return void t.commit("parents",[]);let e=[],a=t.state.data;while(a){let s=a.getLinkWithRel("parent")||a.getLinkWithRel("root");if(!s)break;let r=A.cp.toAbsolute(s.href,a.getAbsoluteUrl());await t.dispatch("load",{url:r,loadApi:!0});let i=t.getters.getStac(r,!0);if(i instanceof Error)return void t.commit("parents",i);if(i===a)break;e.push(i),a=i}t.commit("parents",e)},async load(t,a){let s,{url:r,fromBrowser:i,show:n,loadApi:o,loadRoot:l,force:c}=a;i?(s=r.startsWith("/")?r:"/"+r,r=t.getters.fromBrowserPath(r)):(r=A.cp.toAbsolute(r,t.state.url),s=t.getters.toBrowserPath(r)),l||"/"===s||!t.state.catalogUrl||t.getters.getStac(t.state.catalogUrl)||await t.dispatch("load",{url:t.state.catalogUrl,loadApi:!0,loadRoot:!0}),c&&t.commit("clear",r);let u=new Bt(n,o),d=t.state.database[r];if(d instanceof Bt)t.commit("updateLoading",{url:r,show:n,loadApi:o});else{if(!d||d instanceof S.c&&d.isPotentiallyIncomplete()){t.commit("loading",{url:r,loading:u});try{let a=await It(t,r);if(!A.cp.isObject(a.data))throw new A.UB(I.cp.t("errors.invalidJsonObject"));if(d=new S.c(a.data,r,s),n){let a=d.getLocaleLink(t.state.dataLanguage);if(a)return void e.replace(t.getters.toBrowserPath(a.href))}if(t.commit("loaded",{url:r,data:d}),!t.getters.root){let e=d.getLinkWithRel("root");e&&t.commit("config",{catalogUrl:A.cp.toAbsolute(e.href,r)})}let i=d.getStacLinkWithRel("conformance");Array.isArray(d.conformsTo)&&d.conformsTo.length>0?t.commit("setConformanceClasses",d.conformsTo):i&&await t.dispatch("loadOgcApiConformance",i)}catch(p){if(t.state.authConfig&&Ut(p))return t.commit("clear",r),void t.commit("requestAuth",(()=>t.dispatch("load",a)));console.error(p),t.commit("errored",{url:r,error:p})}}if(u.loadApi&&d instanceof S.c){if(d.getApiCollectionsLink()){let e={stac:d,show:u.show};try{await t.dispatch("loadNextApiCollections",e)}catch(p){t.state.authConfig&&Ut(p)?t.commit("requestAuth",(()=>t.dispatch("loadNextApiCollections",e))):t.commit("showGlobalError",{message:I.cp.t("errors.loadApiCollectionsFailed"),error:p})}}if(d.getApiItemsLink()){let e={stac:d,show:u.show};try{await t.dispatch("loadApiItems",e)}catch(p){t.state.authConfig&&Ut(p)?t.commit("requestAuth",(()=>t.dispatch("loadApiItems",e))):t.commit("showGlobalError",{message:I.cp.t("errors.loadApiItemsFailed"),error:p})}}}u.show&&t.commit("showPage",{url:r})}},async loadApiItems(t,{link:e,stac:a,show:s,filters:r}){let i=a instanceof S.c?a.id:"";t.commit("toggleApiItemsLoading",i);try{let n=t.state.url;a instanceof S.c&&(e=a.getApiItemsLink(),n=a.getAbsoluteUrl()),A.cp.isObject(r)||(r={}),"number"!==typeof r.limit&&(r.limit=t.state.itemsPerPage),e=A.cp.addFiltersToLink(e,r);let o=await It(t,e);if(A.cp.isObject(o.data)&&Array.isArray(o.data.features))return o.data.features=o.data.features.map((e=>{try{if(!A.cp.isObject(e)||"Feature"!==e.type)return null;let s,r=A.cp.getLinkWithRel(e.links,"self");if(null!==r&&void 0!==r&&r.href)s=A.cp.toAbsolute(r.href,n);else{if("undefined"===typeof e.id)return null;{var a;let r=null===(a=t.getters.root)||void 0===a?void 0:a.getApiCollectionsLink();if(n)s=A.cp.toAbsolute(`items/${e.id}`,n);else if(r)s=A.cp.toAbsolute(`${i}/items/${e.id}`,r.href);else{if(!t.state.catalogUrl)return null;s=A.cp.toAbsolute(`collections/${i}/items/${e.id}`,t.state.catalogUrl)}}}let o=t.getters.getStac(s);return o||(o=new S.c(e,s,t.getters.toBrowserPath(s)),o.markPotentiallyIncomplete(),t.commit("loaded",{data:o,url:s}),o)}catch(s){return console.error(s),null}})).filter((t=>t instanceof S.c)),s&&t.commit("setApiItemsLink",e),t.commit("setApiItems",{data:o.data,stac:a,show:s}),t.commit("toggleApiItemsLoading",i),o;throw new A.UB(I.cp.t("errors.invalidStacItems"))}catch(n){throw t.commit("toggleApiItemsLoading",i),n}},async loadNextApiCollections(t,{stac:e,show:a}){let s;if(e){if(t.state.apiCollections.length>0)return;s=e.getLinkWithRel("data")}else e=t.state.data,s=t.state.nextCollectionsLink;if(!s)return;let r=await It(t,s);if(!A.cp.isObject(r.data)||!Array.isArray(r.data.collections))throw new A.UB(I.cp.t("errors.invalidStacCollections"));r.data.collections=r.data.collections.map((a=>{let s,r=A.cp.getLinkWithRel(a.links,"self");s=null!==r&&void 0!==r&&r.href?A.cp.toAbsolute(r.href,t.state.url||e.getAbsoluteUrl()):A.cp.toAbsolute(`collections/${a.id}`,t.state.catalogUrl||e.getAbsoluteUrl());let i=t.getters.getStac(s);return i||(i=new S.c(a,s,t.getters.toBrowserPath(s)),i.markPotentiallyIncomplete(),t.commit("loaded",{data:i,url:s}),i)})),t.commit("addApiCollections",{data:r.data,stac:e,show:a})},async loadOgcApiConformance(t,e){let a=await It(t,e);A.cp.isObject(a.data)&&Array.isArray(a.data.conformsTo)&&t.commit("setConformanceClasses",a.data.conformsTo)},async loadQueryables(t,{stac:e,refParser:a=null}){let s;try{let i=e.getLinksWithRels(At.AV).find((t=>A.cp.isMediaType(t.type,A.WE,!0))),n=A.cp.isObject(i)?i.href:A.cp.toAbsolute("queryables",e.getAbsoluteUrl()),o=await It(t,n);if(s=o.data,a)try{s=await a.dereference(s)}catch(r){console.error(r)}}catch(r){console.log("Queryables not supported by API")}t.commit("addQueryables",s)},async loadGeoJson(t,e){try{let a=await It(t,e);return a.data}catch(a){return null}},async retryAfterAuth(t){let e=e=>t.commit("showGlobalError",{error:e,message:I.cp.t("errors.authFailed")});for(let s of t.state.doAuth)try{let t=s();t instanceof Promise&&t.catch(e)}catch(a){e(a)}},async validate(t,e){if("boolean"!==typeof t.state.valid)try{var a,s;let r=B()("https://api.staclint.com/url");r.addSearch("stac_url",e);let i=await Ct.c.get(r.toString());t.commit("valid",Boolean(null===(a=i.data)||void 0===a||null===(s=a.body)||void 0===s?void 0:s.valid_stac))}catch(r){t.commit("valid",r)}}}})}var qt=Dt,Rt=a(55547),Vt=a(8652),Nt=a(49864),zt=a(8148),Wt=a(41648),Qt=a(40640),Ht=a(30656),Gt=a(74042),Yt=a(32960),Jt=(a(39224),a(68916)),Kt=function(){var t=this,e=t._self._c;return e("b-row",[e("b-col",{attrs:{md:"12"}},[e("Source",{staticClass:"float-right",attrs:{title:t.title,stacUrl:t.url,stacVersion:t.stacVersion}}),e("h1",[t.icon?[e("img",{staticClass:"icon mr-2",attrs:{src:t.icon.href,alt:t.icon.title,title:t.icon.title}})]:t._e(),e("span",{staticClass:"title"},[t._v(t._s(t.title))])],2),t.url||t.isSearchPage()?e("p",{staticClass:"lead"},[t.containerLink?e("i18n",{staticClass:"in mr-3",attrs:{tag:"span",path:"in"},scopedSlots:t._u([{key:"catalog",fn:function(){return[e("StacLink",{attrs:{data:t.containerLink}})]},proxy:!0}],null,!1,1458487365)}):t._e(),e("b-button-group",[t.parentLink?e("b-button",{attrs:{to:t.toBrowserPath(t.parentLink.href),title:t.parentLinkTitle,variant:"outline-primary",size:"sm"}},[e("b-icon-arrow-90deg-up"),t._v(" "),e("span",{staticClass:"button-label prio"},[t._v(t._s(t.$t("goToParent.label")))])],1):t._e(),t.collectionLink?e("b-button",{attrs:{to:t.toBrowserPath(t.collectionLink.href),title:t.collectionLinkTitle,variant:"outline-primary",size:"sm"}},[e("b-icon-folder-symlink"),t._v(" "),e("span",{staticClass:"button-label prio"},[t._v(t._s(t.$t("goToCollection.label")))])],1):t._e(),e("b-button",{directives:[{name:"b-toggle",rawName:"v-b-toggle.sidebar",modifiers:{sidebar:!0}}],attrs:{variant:"outline-primary",size:"sm",title:t.$t("browse")},on:{click:function(e){return t.$emit("enableSidebar")}}},[e("b-icon-book"),t._v(" "),e("span",{staticClass:"button-label prio"},[t._v(t._s(t.$t("browse")))])],1),t.searchBrowserLink?e("b-button",{attrs:{variant:"outline-primary",size:"sm",to:t.searchBrowserLink,title:t.$t("search.title"),pressed:t.isSearchPage()}},[e("b-icon-search"),t._v(" "),e("span",{staticClass:"button-label prio"},[t._v(t._s(t.$t("search.title")))])],1):t._e(),t.authConfig?e("b-button",{attrs:{variant:"outline-primary",size:"sm",title:t.$t("authentication.button.title")},on:{click:t.auth}},[t.authData?[e("b-icon-lock"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("authentication.button.authenticated")))])]:[e("b-icon-unlock"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("authentication.button.authenticate")))])]],2):t._e()],1)],1):t._e()],1)],1)},Xt=[],Zt=a(22308),te=function(){var t=this,e=t._self._c;return e("div",{staticClass:"share mt-1"},[e("b-button-group",[t.stacUrl?e("b-button",{attrs:{size:"sm",variant:"outline-primary",id:"popover-link",title:t.$t("source.detailsAboutSource")}},[e("b-icon-link"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("source.label")))])],1):t._e(),e("b-button",{attrs:{size:"sm",variant:"outline-primary",id:"popover-share",title:t.$t("source.share.withOthers")}},[e("b-icon-share"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("source.share.label")))])],1),e("b-dropdown",{attrs:{size:"sm",variant:"outline-primary",right:"",title:t.$t("source.language.switch")},scopedSlots:t._u([{key:"button-content",fn:function(){return[e("b-icon-flag"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("source.language.label",{currentLanguage:t.currentLanguage})))])]},proxy:!0}])},t._l(t.languages,(function(a){return e("b-dropdown-item",{key:a.code,staticClass:"lang-item",on:{click:function(e){return t.switchLocale({locale:a.code,userSelected:!0})}}},[t.locale===a.code?e("b-icon-check"):e("b-icon-blank"),e("span",{staticClass:"title"},[t._v(" "+t._s(a.native)+" "),a.global&&a.global!==a.native?[t._v(" / "+t._s(a.global))]:t._e()],2),!t.supportsLanguageExt||a.ui&&a.data?t._e():e("b-icon-exclamation-triangle",{staticClass:"ml-2",attrs:{title:a.ui?t.$t("source.language.onlyUI"):t.$t("source.language.onlyData")}})],1)})),1)],1),t.stacUrl?e("b-popover",{attrs:{target:"popover-link",triggers:"focus",placement:"bottom",container:"stac-browser",title:t.$t("source.title")},on:{show:t.validate}},[t.stacVersion?[e("b-row",[e("b-col",{attrs:{cols:"2"}},[t._v(t._s(t.$t("source.stacVersion")))]),e("b-col",[t._v(t._s(t.stacVersion))])],1),t.canValidate?e("b-row",[e("b-col",{attrs:{cols:"2"}},[t._v(t._s(t.$t("source.valid")))]),e("b-col",[null===t.valid?e("b-spinner",{attrs:{label:t.$t("source.validating"),small:""}}):!0===t.valid?[t._v("✔️")]:!1===t.valid?[t._v("❌")]:[t._v("$t('source.validationNA')")]],2)],1):t._e(),e("hr")]:t._e(),e("Url",{attrs:{id:"stacUrl",url:t.stacUrl,label:t.$t("source.locatedAt")}})],2):t._e(),e("b-popover",{attrs:{target:"popover-share",triggers:"focus",placement:"bottom",container:"stac-browser",title:t.$t("source.share.title")}},[e("Url",{attrs:{id:"browserUrl",url:t.browserUrl(),label:t.$t("source.share.sharePageWithOthers"),open:!1}}),e("hr"),e("b-button",{staticClass:"twitter mr-1",attrs:{href:t.twitterUrl}},[e("b-icon-twitter"),t._v(" "+t._s(t.$t("source.share.twitter")))],1),e("b-button",{attrs:{variant:"dark",href:t.mailTo}},[e("b-icon-envelope"),t._v(" "+t._s(t.$t("source.share.email")))],1)],1)],1)},ee=[],ae=a(79808),se=a(24692),re=a(90280),ie=function(){var t=this,e=t._self._c;return e("b-form-group",{attrs:{label:t.label,"label-for":t.id}},[e("b-input-group",{attrs:{size:"sm"}},[e("b-form-input",{ref:"input",attrs:{id:t.id,value:t.url,readonly:""}}),e("b-input-group-append",[e("CopyButton",{attrs:{copyText:t.url,variant:"primary"}}),t.open?e("b-button",{attrs:{href:t.url,target:"_blank",variant:"primary",title:t.$t("open")}},[e("b-icon-arrow-up-right-square")],1):t._e()],1)],1)],1)},ne=[],oe=a(60592),le=a(46584),ce=a(5276),ue=a(86584),de={name:"Share",components:{BFormGroup:oe.K,BFormInput:le.U,BIconArrowUpRightSquare:et.iEg,BInputGroup:ce.w,BInputGroupAppend:ue.w,CopyButton:()=>a.e(3772).then(a.bind(a,83772))},props:{id:{type:String,required:!0},url:{type:String,required:!0},label:{type:String,required:!0},open:{type:Boolean,default:!0}}},pe=de,he=(0,g.c)(pe,ie,ne,!1,null,"433de75e",null),fe=he.exports;const ge="https://stac-extensions.github.io/language/v1.*/schema.json";var me={name:"Source",components:{BDropdown:ae.W,BDropdownItem:se.o,BIconBlank:et.PJ6,BIconCheck:et.ggS,BIconEnvelope:et.iGM,BIconExclamationTriangle:et.WGh,BIconFlag:et._ql,BIconLink:et.Ibc,BIconShare:et.GgF,BIconTwitter:et.Ehl,BPopover:re.K,Url:fe},props:{title:{type:String,required:!0},stacUrl:{type:String,default:null},stacVersion:{type:String,default:null}},computed:{...(0,o.ys)(["dataLanguages","locale","privateQueryParameters","supportedLocales","stacLint","stacProxyUrl","uiLanguage","valid"]),...(0,o.gV)(["supportsExtension"]),currentLanguage(){let t=this.languages.find((t=>t.code===this.locale));return t?t.native:"-"},canValidate(){if(!this.stacLint||"string"!==typeof this.stacUrl)return!1;if(A.cp.size(this.privateQueryParameters)>0)return!1;if(Array.isArray(this.stacProxyUrl))return!1;let t=B()(this.stacUrl),e=t.hostname().toLowerCase();return"localhost"!==e&&!e.startsWith("127.")&&"::1"!==e},message(){return this.$t("source.share.message",{title:this.title,url:this.browserUrl()})},twitterUrl(){let t=encodeURIComponent(this.message);return`https://twitter.com/intent/tweet?text=${t}`},mailTo(){let t=encodeURIComponent(this.title),e=encodeURIComponent(this.message);return`mailto:?subject=${t}&body=${e}`},supportsLanguageExt(){return this.supportsExtension(ge)},languages(){let t=[];for(let e of this.supportedLocales)t.push({code:e,native:this.$t(`languages.${e}.native`),global:this.$t(`languages.${e}.global`),ui:!0});for(let e of this.dataLanguages){if(!A.cp.isObject(e)||!e.code||this.supportedLocales.includes(e.code))continue;let a={code:e.code};a.native=e.name||e.alternate||e.code,a.global=e.alternate||e.name||e.code,a.data=!0,t.push(a)}if(this.supportsExtension(ge)){const e=(0,Ft.IB)(this.supportedLocales),a=(0,Ft.IB)(this.dataLanguages.map((t=>t.code)));for(let s of t)s.ui||(s.ui=Boolean((0,Ft.YV)(e,s.code,null))),s.data||(s.data=Boolean((0,Ft.YV)(a,s.code,null)))}return t.sort(((t,e)=>t.global.localeCompare(e.global,this.uiLanguage)))}},methods:{...(0,o.ae)(["switchLocale"]),async validate(){await this.$store.dispatch("validate",this.stacUrl)},browserUrl(){return window.location.toString()}}},be=me,ye=(0,g.c)(be,te,ee,!1,null,"0106123f",null),ve=ye.exports,we={name:"StacHeader",components:{BIconArrow90degUp:et.wJP,BIconBook:et.A1g,BIconFolderSymlink:et.CQE,BIconSearch:et.i86,BIconLock:et.NAb,BIconUnlock:et.Oc2,StacLink:Zt["default"],Source:ve},computed:{...(0,o.ys)(["allowSelectCatalog","authConfig","authData","catalogUrl","data","url","title"]),...(0,o.gV)(["root","parentLink","collectionLink","toBrowserPath"]),stacVersion(){var t;return null===(t=this.data)||void 0===t?void 0:t.stac_version},collectionLinkTitle(){return this.collectionLink&&A.cp.hasText(this.collectionLink.title)?this.$t("goToCollection.descriptionWithTitle",this.collectionLink):this.$t("goToCollection.description")},parentLinkTitle(){return this.parentLink&&A.cp.hasText(this.parentLink.title)?this.$t("goToParent.descriptionWithTitle",this.parentLink):this.$t("goToParent.description")},icon(){if(this.data instanceof S.c){let t=this.data.getIcons();if(t.length>0)return t[0]}return null},searchBrowserLink(){let t,e;return this.root&&(t=this.root.getSearchLink()),this.data!==this.root&&this.data instanceof S.c&&(e=this.data.getSearchLink()),e?`/search${this.data.getBrowserPath()}`:t?this.allowSelectCatalog?`/search${this.root.getBrowserPath()}`:"/search":null},containerLink(){return this.catalogUrl&&this.url===this.catalogUrl?null:this.root?A.cp.equalUrl(this.root.getAbsoluteUrl(),this.url)?null:{href:this.root.getAbsoluteUrl(),rel:"root",title:S.c.getDisplayTitle(this.root)}:this.collectionLink||this.parentLink}},methods:{isSearchPage(){return"search"===this.$router.currentRoute.name},auth(){this.$store.commit("requestAuth",(()=>this.$store.dispatch("load",{url:this.url,loadApi:!0,show:!0,force:!0})))}}},_e=we,ke=(0,g.c)(_e,Kt,Xt,!1,null,"d2d6115c",null),Le=ke.exports,Ce=a(16184),Ae=a.n(Ce);s.cp.use(Rt.C),s.cp.use(Vt.U),s.cp.use(Nt.MF),s.cp.use(zt.W),s.cp.use(Wt.OH),s.cp.use(Qt.Q8),s.cp.use(Ht.W),s.cp.directive("b-toggle",Gt.W),s.cp.directive("b-visible",Yt.y),s.cp.use(n.cp);const xe=new n.cp({mode:l.c.historyMode,base:l.c.pathPrefix,routes:Lt(l.c)});s.cp.use(o.cp);const Te=qt(l.c,xe);let Oe={},Se={};for(let Me in l.c)Oe[Me]={default:["object","function"].includes(typeof l.c[Me])?()=>l.c[Me]:l.c[Me]},Se[Me]={immediate:!0,handler:function(t){this.$store.commit("config",{[Me]:t})}};var $e={name:"StacBrowser",router:xe,store:Te,components:{Authentication:()=>a.e(8980).then(a.bind(a,68980)),ErrorAlert:b,Sidebar:()=>a.e(9156).then(a.bind(a,29156)),StacHeader:Le},props:{...Oe},data(){return{sidebar:!1,error:null,onDataLoaded:null}},computed:{...(0,o.ys)(["allowSelectCatalog","data","dataLanguage","description","doAuth","globalError","stateQueryParameters","title","uiLanguage","url"]),...(0,o.ys)({catalogUrlFromVueX:"catalogUrl",detectLocaleFromBrowserFromVueX:"detectLocaleFromBrowser",fallbackLocaleFromVueX:"fallbackLocale",supportedLocalesFromVueX:"supportedLocales",storeLocaleFromVueX:"storeLocale"}),...(0,o.gV)(["displayCatalogTitle","fromBrowserPath","isExternalUrl","root","supportsConformance","toBrowserPath"]),browserVersion(){return"3.0.2"}},watch:{...Se,title(t){document.title=t},description(t){let e=document.getElementById("meta-description");e&&e.setAttribute("content",A.cp.summarizeMd(t,200))},uiLanguage:{immediate:!0,async handler(t){t&&(Ae().locales=[t],Ae().translate=I.O8,await(0,I.MB)(t),this.$root.$i18n.locale=t,document.documentElement.setAttribute("lang",t))}},dataLanguage:{immediate:!0,async handler(t){if(t&&this.data instanceof S.c){let e=this.data.getLocaleLink(t);if(e){let t=Object.assign({},this.stateQueryParameters);this.$router.push(this.toBrowserPath(e.href)),this.$store.commit("state",t)}else if(this.supportsConformance(I.UB)){let t=this.url;this.$store.commit("resetCatalog",!0),await this.$store.dispatch("load",{url:t,loadApi:!0,show:!0})}}}},catalogUrlFromVueX(t){t&&this.$store.dispatch("load",{url:t,loadApi:!0})},stateQueryParameters:{deep:!0,handler(){let t={};for(const[e,a]of Object.entries(this.$route.query))e.startsWith(".")||(t[e]=a);for(const[e,a]of Object.entries(this.stateQueryParameters)){let s=`.${e}`;Array.isArray(a)?a.length>0&&(t[s]=a.join(",")):null!==a&&(t[s]=a)}this.$router.replace({query:t}).catch((t=>{if(!n.cp.isNavigationFailure(t,n.cp.NavigationFailureType.duplicated))throw Error(t)}))}},root(t,e){const a=["apiCatalogPriority","authConfig","cardViewMode","cardViewSort","crossOriginMedia","defaultThumbnailSize","displayGeoTiffByDefault","showThumbnailsAsAssets","stacLint"];let s=!t||e&&A.cp.isObject(e["stac_browser"]),r=t&&A.cp.isObject(t["stac_browser"]);for(let i of a){let e;s&&(e=l.c[i]),r&&"undefined"!==typeof t["stac_browser"][i]&&(e=t["stac_browser"][i]),("stacLint"!==i||l.c.stacLint)&&("undefined"!==typeof e&&this.$store.commit("config",{[i]:e}))}},data(t){this.onDataLoaded&&t instanceof S.c&&this.onDataLoaded()}},beforeCreate(){const t=Jt.parse(document.cookie);let e="SETTING_PLACEHOLDER";console.log(`MAIN_SETTING: ${JSON.stringify(e)}`),"object"===typeof e&&e.constructor===Object?void 0===e["catalogUrl"]&&(e["catalogUrl"]=null):e={catalogUrl:null},console.log(`MAIN_SETTING: ${JSON.stringify(e)}`),this.$store.dispatch("setCatalogUrl",e["catalogUrl"]),void 0!==t["unity_token"]&&this.$store.dispatch("setAuth",t["unity_token"])},created(){this.$router.onReady((()=>{this.detectLocale(),this.parseQuery(this.$route)})),this.$router.afterEach(((t,e)=>{if(t.path===e.path)return;let a="resetPage";if(this.allowSelectCatalog&&t.path){let e=this.fromBrowserPath(t.path);this.isExternalUrl(e)&&(a="resetCatalog")}this.$store.commit(a),this.parseQuery(t)}))},mounted(){this.$root.$on("error",this.showError),setInterval((()=>this.$store.dispatch("loadBackground",3)),200)},methods:{...(0,o.ae)(["switchLocale"]),detectLocale(){let t;if(this.storeLocaleFromVueX)try{t=window.localStorage.getItem("locale")}catch(e){console.error(e)}if(!t&&this.detectLocaleFromBrowserFromVueX&&Array.isArray(navigator.languages)){const e=(0,Ft.IB)(this.supportedLocalesFromVueX);for(let a of navigator.languages){const s=(0,Ft.YV)(e,a,null);if(s){t=s;break}}}t&&this.supportedLocalesFromVueX.includes(t)&&(this.switchLocale({locale:t}),this.data||(this.onDataLoaded=()=>{this.switchLocale({locale:t}),this.onDataLoaded=null}))},parseQuery(t){var e;let a={};if("history"===this.historyMode){let e=B()(t.hash.replace(/^#/,""));a=e.query(!0)}let s=Object.assign({},t.query,a),r={};for(let i in s){let t=s[i];if(i.startsWith("~"))r.private=A.cp.isObject(r.private)?r.private:{},r.private[i.substr(1)]=t,delete s[i];else if(i.startsWith(".")){let e=i.substr(1);r.state=A.cp.isObject(r.state)?r.state:{},Array.isArray(this.stateQueryParameters[e])&&!Array.isArray(t)&&(t=t.split(",")),r.state[e]=t}else A.cp.isObject(r.localRequest)||(r.localRequest={}),r.localRequest[i]=t}if(A.cp.size(r)>0)for(let i in r)for(let t in r[i])this.$store.commit("setQueryParameter",{type:i,key:t,value:r[i][t]});null!==r&&void 0!==r&&null!==(e=r.state)&&void 0!==e&&e.language&&this.switchLocale({locale:r.state.language}),A.cp.size(r.private)>0&&this.$router.replace({query:s})},showError(t,e){this.$store.commit("showGlobalError",{error:t,message:e})},hideError(){this.$store.commit("showGlobalError",null)}}},Be=$e,Ie=(0,g.c)(Be,r,i,!1,null,null,null),je=Ie.exports;function Pe(){return(0,I.AF)().then((()=>new s.cp({i18n:I.cp,render:t=>t(je)}).$mount("#stac-browser")))}s.cp.config.productionTip=!1,Pe()},98864:function(t,e,a){"use strict";a.d(e,{Ip:function(){return p},W0:function(){return u},a:function(){return d},c3:function(){return l},cp:function(){return n},gv:function(){return o},wN:function(){return c}});var s=a(93808),r=a(75760),i=a(60488);class n extends i.c{constructor(t,e=null,a=null){super(t,[e,a])}clone(t){return new this.constructor(this.operator,this.args[0],t)}static create(t,e,a){return["=","==","==="].includes(e)?new o(t,a):["<>","!=","!=="].includes(e)?new l(t,a):">="===e?new u(t,a):">"===e?new c(t,a):"<="===e?new p(t,a):"<"===e?new d(t,a):void 0}}class o extends n{constructor(t=null,e=null){super(o.SYMBOL,t,e)}static get longLabel(){return r.cp.t("search.equalTo")}}(0,s.c)(o,"SYMBOL","=");class l extends n{constructor(t=null,e=null){super(l.SYMBOL,t,e)}static get longLabel(){return r.cp.t("search.notEqualTo")}}(0,s.c)(l,"SYMBOL","<>");class c extends n{constructor(t=null,e=null){super(c.SYMBOL,t,e)}static get longLabel(){return r.cp.t("search.greaterThan")}}(0,s.c)(c,"SYMBOL",">");class u extends n{constructor(t=null,e=null){super(u.SYMBOL,t,e)}static get longLabel(){return r.cp.t("search.greaterThanEqual")}}(0,s.c)(u,"SYMBOL",">=");class d extends n{constructor(t=null,e=null){super(d.SYMBOL,t,e)}static get longLabel(){return r.cp.t("search.lessThan")}}(0,s.c)(d,"SYMBOL","<");class p extends n{constructor(t=null,e=null){super(p.SYMBOL,t,e)}static get longLabel(){return r.cp.t("search.lessThanEqual")}}(0,s.c)(p,"SYMBOL","<=")},60488:function(t,e,a){"use strict";a.d(e,{c:function(){return s}});class s{constructor(t,e=[]){this.operator=t,this.args=e}toText(){let t=this.operator.toUpperCase();return this.args.map((t=>t.toText())).join(` ${t} `)}toJSON(){return{op:this.operator,args:this.args.map((t=>t.toJSON()))}}static get description(){return""}static get label(){return this.SYMBOL}static get longLabel(){return this.label}}},82124:function(t,e,a){"use strict";a(83248);var s=a(40848),r=a(14140),i=a.n(r),n=a(18460);let o=0;class l{constructor(t,e,a,s=!0){this._id=o++,this._url=e,this._path=a,this._apiChildrenListeners={},this._incomplete=!1,this._apiChildren={list:[],prev:!1,next:!1},s&&("FeatureCollection"===t.type?t.features=t.features.map((t=>i().item(t,!1))):t=i().stac(t,!1));for(let r in t)"undefined"===typeof this[r]&&(this[r]=t[r])}isPotentiallyIncomplete(){return this._incomplete}markPotentiallyIncomplete(){this._incomplete=!0}isItem(){return"Feature"===this.type}isCatalog(){return"Catalog"===this.type}isCatalogLike(){return this.isCatalog()||this.isCollection()}isCollection(){return"Collection"===this.type}isItemCollection(){return"FeatureCollection"===this.type}hasApiData(){return this._apiChildren.list.length>0}setApiDataListener(t,e=null){"function"===typeof e?this._apiChildrenListeners[t]=e:delete this._apiChildrenListeners[t]}setApiData(t,e=null,a=null){a&&(this._apiChildren.prev=a),e&&(this._apiChildren.next=e),this._apiChildren.list=t;for(let r in this._apiChildrenListeners)try{this._apiChildrenListeners[r](this._apiChildren)}catch(s){console.error(s)}}getFileFormats(){let t=[];return(this.isItem()||this.isCollection())&&s.cp.isObject(this.assets)&&(t=t.concat(Object.values(this.assets))),this.isCollection()&&s.cp.isObject(this.item_assets)&&(t=t.concat(Object.values(this.item_assets))),t.filter((t=>Array.isArray(t.roles)&&t.roles.includes("data")&&"string"===typeof t.type)).map((t=>t.type)).filter(((t,e,a)=>a.indexOf(t)===e))}getChildren(t=null){if(!this.isCatalogLike())return[];let e=!t||"collections"===t,a=!t||"childs"===t,s=[];return e&&this._apiChildren.prev&&s.push(this._apiChildren.prev),e&&this._apiChildren.list.length>0&&(s=this._apiChildren.list),a&&(s=l.addMissingChildren(s,this).concat(this.getLinksWithRels(["item"]))),e&&this._apiChildren.next&&s.push(this._apiChildren.next),s}static addMissingChildren(t,e){let a=e.getStacLinksWithRel("child").filter((a=>{let r=s.cp.toAbsolute(a.href,e.getAbsoluteUrl());return!t.find((t=>t.getAbsoluteUrl()===r))}));return a.concat(t)}getSearchLink(){let t=s.cp.getLinksWithRels(this.links,["search"]).filter((t=>s.cp.isMediaType(t.type,s.QN))),e=t.find((t=>s.cp.hasText(t.method)&&"POST"===t.method.toUpperCase()));return e||t[0]||null}getApiCollectionsLink(){return this.getStacLinkWithRel("data")}getApiItemsLink(){return this.getStacLinkWithRel("items")}getMetadata(t){return this.isItem()?this.properties[t]:this.isCatalogLike()?this[t]:null}getBrowserPath(){return this._path}getAbsoluteUrl(){return this._url}getLocaleLink(t,e=null){let a,r=this.getStacLinksWithRel("alternate").filter((t=>s.cp.hasText(t.hreflang)));a=Array.isArray(this.languages)?this.languages.map((t=>t.code)):r.map((t=>t.hreflang));let i=(0,n.YV)(a,t,e);return r.find((t=>t.hreflang===i))||null}getStacLinksWithRel(t,e=!0){return s.cp.getLinksWithRels(this.links,[t]).filter((t=>s.cp.isStacMediaType(t.type,e)))}getStacLinkWithRel(t,e=!0){const a=this.getStacLinksWithRel(t,e);return a.length>0?a[0]:null}getLinkWithRel(t){return s.cp.getLinkWithRel(this.links,t)}getLinksWithRels(t){return s.cp.getLinksWithRels(this.links,t)}getLinksWithOtherRels(t){return s.cp.getLinksWithOtherRels(this.links,t)}getAssetsWithRoles(t){let e=[];if(s.cp.isObject(this.assets))for(let a in this.assets){let r=this.assets[a];s.cp.isObject(r)&&"string"===typeof r.href&&Array.isArray(r.roles)&&r.roles.find((e=>t.includes(e)))&&e.push(r)}return e}static getDisplayTitle(t,e=null){Array.isArray(t)||(t=[t]);let a=t.find((t=>t instanceof l)),r=t.find((t=>s.cp.isObject(t)&&!(t instanceof l)));return a&&s.cp.hasText(a.getTitle())?a.getTitle():r&&s.cp.hasText(r.title)?r.title:a&&s.cp.hasText(a.id)?a.id:s.cp.hasText(e)?e:a?s.cp.titleForHref(a.getAbsoluteUrl(),!0):r&&s.cp.hasText(r.href)?s.cp.titleForHref(r.href,!0):"Untitled"}getTitle(){return this.getMetadata("title")}_linkToAbsolute(t){return Object.assign({},t,{href:s.cp.toAbsolute(t.href,this.getAbsoluteUrl())})}getIcons(){return this.getLinksWithRels(["icon"]).filter((t=>s.cp.canBrowserDisplayImage(t))).map((t=>this._linkToAbsolute(t)))}getThumbnails(t=!1,e=null){let a=this.getAssetsWithRoles(["thumbnail","overview"]);return e&&a.length>1&&a.sort((t=>t.roles.includes(e)?-1:1)),0===a.length&&(a=this.getLinksWithRels(["preview"])),0===a.length&&s.cp.isObject(this.assets)&&s.cp.isObject(this.assets.thumbnail)&&(a=[this.assets.thumbnail]),t&&(a=a.filter((t=>s.cp.canBrowserDisplayImage(t)))),a.map((t=>this._linkToAbsolute(t)))}equals(t){return!!s.cp.isObject(t)&&(this===t||this.id===t.id&&this.type==t.type)}}e.c=l},81228:function(t,e,a){"use strict";a.d(e,{AV:function(){return i},E7:function(){return n},OU:function(){return o},ei:function(){return r},wF:function(){return l}});const s=["child","collection","item","parent","root","self"],r=["first","last","next","prev","previous"],i=["queryables","http://www.opengis.net/def/rel/ogc/1.0/queryables","ogc-rel:queryables"],n=["canonical","related","derived_from","latest-version","predecessor-version","successor-version","source","alternate"].concat(s).concat(r),o=["conformance","data","items","search","icon","license"].concat(s).concat(r).concat(i),l="http://www.opengis.net/def/rel/ogc/1.0/"},40848:function(t,e,a){"use strict";a.d(e,{IZ:function(){return h},Iz:function(){return g},QN:function(){return l},UB:function(){return m},WE:function(){return c},cp:function(){return b},eQ:function(){return f}});var s=a(63956),r=a.n(s),i=a(97104),n=a.n(i);const o=["catalog","collection","item"],l="application/geo+json",c="application/schema+json",u=["application/json",l,"text/json"],d=["image/gif","image/jpg","image/jpeg","image/apng","image/png","image/webp"],p=["application/geotiff","image/tiff; application=geotiff","image/tiff; application=geotiff; profile=cloud-optimized","image/vnd.stac.geotiff","image/vnd.stac.geotiff; cloud-optimized=true"],h=["http","https"],f=d.concat(p),g=f.concat([l]);class m extends Error{constructor(t){super(t)}}class b{static isObject(t){return"object"===typeof t&&t===Object(t)&&!Array.isArray(t)}static size(t){return"object"===typeof t&&null!==t?Array.isArray(t)?t.length:Object.keys(t).length:0}static isStacMediaType(t,e=!1){return b.isMediaType(t,u,e)}static isMediaType(t,e,a=!1){return Array.isArray(e)||(e=[e]),!(!a||t)||"string"===typeof t&&e.includes(t.toLowerCase())}static hasText(t){return"string"===typeof t&&t.length>0}static isGdalVfsUri(t){return"string"===typeof t&&t.startsWith("/vsi")&&!t.startsWith("/vsicurl/")}static toAbsolute(t,e,a=!0){return b.normalizeUri(t,e,!1,a)}static normalizeUri(t,e=null,a=!1,s=!0){"string"===typeof t&&t.startsWith("/vsicurl/")&&(t=t.replace(/^\/vsicurl\//,""));let i=r()(t);return e&&i.is("relative")&&!b.isGdalVfsUri(t)&&(i=i.absoluteTo(e)),i.normalize(),a&&(i.query(""),i.fragment("")),s?i.toString():i}static getLinkWithRel(t,e){return Array.isArray(t)?t.find((t=>b.isObject(t)&&b.hasText(t.href)&&t.rel===e)):null}static getLinksWithRels(t,e){return Array.isArray(t)?t.filter((t=>b.isObject(t)&&b.hasText(t.href)&&e.includes(t.rel))):[]}static getLinksWithOtherRels(t,e){return Array.isArray(t)?t.filter((t=>b.isObject(t)&&b.hasText(t.href)&&!e.includes(t.rel))):[]}static equalUrl(t,e){try{let a=r()(t),s=r()(e);return a.path(a.path().replace(/\/$/,"")),s.path(s.path().replace(/\/$/,"")),a.equals(s)}catch(a){return!1}}static summarizeMd(t,e=null){return b.hasText(t)?(t=n()(t).replaceAll(/[\r\n]+/g," "),e>0&&t.length>e&&(t=t.substr(0,e)+"…"),t):""}static scrollTo(t){if(t){var e=t.getBoundingClientRect(),a=e.top=0;a||t.scrollIntoView({behavior:"smooth",block:"start"})}}static dateFromUTC(t){if(t instanceof Date){const e=new Date(t),a=e.getTimezoneOffset();t=new Date(e.getTime()+60*a*1e3)}return t}static dateToUTC(t){if(t instanceof Date){const e=(new Date).getTimezoneOffset();return new Date(t.getTime()-60*e*1e3)}return t}static formatDatetimeQuery(t){return t.map((t=>t instanceof Date?t.toISOString():t||"..")).join("/")}static addFiltersToLink(t,e={}){let a=t=>null===t||"number"===typeof t&&!Number.isFinite(t)||"string"===typeof t&&0===t.length||"object"===typeof t&&0===b.size(t);if(b.hasText(t.method)&&"POST"===t.method.toUpperCase()){let s=Object.assign({},t.body);for(let t in e){let r=e[t];if(a(r))delete s[t];else{if("datetime"===t)r=b.formatDatetimeQuery(r);else if("filters"===t){Object.assign(s,r.toJSON());continue}s[t]=r}}return Object.assign({},t,{body:s})}{let s=r()(t.href);for(let t in e){let r=e[t];if(a(r))s.removeQuery(t);else{if("datetime"===t)r=b.formatDatetimeQuery(r);else if("bbox"===t)r=r.join(",");else if("collections"===t||"ids"===t)r=r.join(",");else if("filters"===t){let t=r.toText();s.setQuery(t);continue}s.setQuery(t,r)}}return Object.assign({},t,{href:s.toString()})}}static titleForHref(t,e=!1){let a=r()(t),s=a.authority(),i=a.filename().replace(/^(.{1,})\.\w+$/,"$1"),n=a.directory().replace(/^\//,"");if(s&&i&&!e){let t=a.path().replace(/^\//,"");return"doi.org"===s&&t.startsWith("10.")?`DOI ${t}`:`${i} (${s})`}return i&&!o.includes(i)?i:s||(n||t)}static canBrowserDisplayImage(t){if("string"!==typeof t.href)return!1;let e=r()(t.href),a=e.protocol().toLowerCase();return!(a&&!h.includes(a))&&(!!d.includes(t.type)||(!!d.includes("image/"+e.suffix().toLowerCase())||!t.type))}static getValueFromObjectUsingPath(t,e){if(null!==t&&"object"===typeof t)return t=t[e[0]],"undefined"!==typeof t&&e.length>1?this.getValueFromObjectUsingPath(t,e.slice(1)):t}static search(t,e,a=!0){if("string"!==typeof t||0===t.length)return!1;if(b.isObject(e)?e=Object.values(e):"string"===typeof e&&(e=[e]),!Array.isArray(e))return!1;let s=/[\s.,;!&({[)}]]+/g;t=t.toLowerCase().split(s),e=e.filter((t=>"string"===typeof t)).join(" ").replace(s," ").toLowerCase();let r=a?"every":"some";return t[r]((t=>e.includes(t)))}static createLink(t,e){return{href:t,rel:e}}static supportsExtension(t,e){if(!b.isObject(t)||!Array.isArray(t["stac_extensions"]))return!1;let a=new RegExp("^"+e.replaceAll("*","[^/]+")+"$");return Boolean(t["stac_extensions"].find((t=>a.test(t))))}static mergeDeep(t,...e){if(!e.length)return t;const a=e.shift();if(b.isObject(t)&&b.isObject(a))for(const s in a)b.isObject(a[s])?(t[s]||Object.assign(t,{[s]:{}}),b.mergeDeep(t[s],a[s])):Object.assign(t,{[s]:a[s]});return b.mergeDeep(t,...e)}}},41100:function(t,e,a){var s={"./de-CH/default.js":[54028,3528,4028],"./de/default.js":[11848,3528,1848],"./en/default.js":[25712,5712],"./es/default.js":[67388,7388],"./fr-CA/default.js":[59904,8312,9904],"./fr-CH/default.js":[13344,8312,3344],"./fr/default.js":[5336,8312,5336],"./it-CH/default.js":[38276,7806,8276],"./it/default.js":[14319,7806,4319],"./ro/default.js":[36912,6912]};function r(t){if(!a.o(s,t))return Promise.resolve().then((function(){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}));var e=s[t],r=e[0];return Promise.all(e.slice(1).map(a.e)).then((function(){return a(r)}))}r.keys=function(){return Object.keys(s)},r.id=41100,t.exports=r},99460:function(t,e,a){var s={"./de-CH/config.json":22440,"./de/config.json":86832,"./en/config.json":20584,"./es/config.json":40240,"./fr-CA/config.json":42068,"./fr-CH/config.json":54152,"./fr/config.json":1400,"./it-CH/config.json":51e3,"./it/config.json":54094,"./ro/config.json":62164};function r(t){var e=i(t);return a(e)}function i(t){if(!a.o(s,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return s[t]}r.keys=function(){return Object.keys(s)},r.resolve=i,t.exports=r,r.id=99460},22440:function(t){"use strict";t.exports=JSON.parse('{"native":"Deutsch (Schweiz)","global":"German (Switzerland)"}')},86832:function(t){"use strict";t.exports=JSON.parse('{"native":"Deutsch","global":"German"}')},20584:function(t){"use strict";t.exports=JSON.parse('{"native":"English","global":"English"}')},40240:function(t){"use strict";t.exports=JSON.parse('{"native":"Español","global":"Spanish"}')},42068:function(t){"use strict";t.exports=JSON.parse('{"native":"Français (Canada)","global":"French (Canada)"}')},54152:function(t){"use strict";t.exports=JSON.parse('{"native":"Français (Suisse)","global":"French (Switzerland)"}')},1400:function(t){"use strict";t.exports=JSON.parse('{"native":"Français","global":"French"}')},51e3:function(t){"use strict";t.exports=JSON.parse('{"native":"Italiano (Svizzera)","global":"Italian (Switzerland)"}')},54094:function(t){"use strict";t.exports=JSON.parse('{"native":"Italiano","global":"Italian"}')},62164:function(t){"use strict";t.exports=JSON.parse('{"native":"Română","global":"Romanian"}')}},e={};function a(s){var r=e[s];if(void 0!==r)return r.exports;var i=e[s]={id:s,loaded:!1,exports:{}};return t[s].call(i.exports,i,i.exports,a),i.loaded=!0,i.exports}a.m=t,function(){var t=[];a.O=function(e,s,r,i){if(!s){var n=1/0;for(u=0;u=i)&&Object.keys(a.O).every((function(t){return a.O[t](s[l])}))?s.splice(l--,1):(o=!1,i0&&t[u-1][2]>i;u--)t[u]=t[u-1];t[u]=[s,r,i]}}(),function(){a.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return a.d(e,{a:e}),e}}(),function(){var t,e=Object.getPrototypeOf?function(t){return Object.getPrototypeOf(t)}:function(t){return t.__proto__};a.t=function(s,r){if(1&r&&(s=this(s)),8&r)return s;if("object"===typeof s&&s){if(4&r&&s.__esModule)return s;if(16&r&&"function"===typeof s.then)return s}var i=Object.create(null);a.r(i);var n={};t=t||[null,e({}),e([]),e(e)];for(var o=2&r&&s;"object"==typeof o&&!~t.indexOf(o);o=e(o))Object.getOwnPropertyNames(o).forEach((function(t){n[t]=function(){return s[t]}}));return n["default"]=function(){return s},a.d(i,n),i}}(),function(){a.d=function(t,e){for(var s in e)a.o(e,s)&&!a.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})}}(),function(){a.f={},a.e=function(t){return Promise.all(Object.keys(a.f).reduce((function(e,s){return a.f[s](t,e),e}),[]))}}(),function(){a.u=function(t){return"js/"+t+"."+{48:"d04b42a5",208:"97e1b531",218:"3145dce9",339:"7dea1546",476:"02ee4105",572:"40caaa91",760:"328055c5",996:"b534b37f",1228:"8582509b",1284:"202c3e88",1528:"1dd4310c",1584:"a59f0b52",1752:"6038b67b",1788:"e7c77fdd",1824:"9102e1c7",1848:"e11c4201",2160:"1cb40f4f",2460:"eec5173e",2760:"6e1a440d",3036:"16ce77f2",3160:"ad48b6e4",3332:"ceea0dd1",3344:"fd9b3c49",3352:"e7e14b18",3420:"e3361d04",3528:"cef89b72",3772:"11aad282",3816:"9a35f861",3868:"9182d669",3904:"961abe1f",3912:"900420c2",4028:"94076d02",4052:"17101470",4319:"91793b70",4488:"adb82aee",5128:"7b07d513",5336:"23e459db",5712:"6c28c413",5824:"840fe143",5879:"4c193e89",5900:"d51697c7",5960:"904a8aec",6e3:"0f74d122",6072:"b46bb304",6112:"f1671ffc",6164:"57c0c11c",6456:"f466fcb9",6572:"a9ff018e",6877:"77aa8315",6912:"80f00f78",7388:"7703a8c2",7412:"3236f9d5",7456:"3b5cf581",7716:"4665b4e4",7806:"e92c7bb4",7920:"ca667644",8276:"e67b539f",8312:"6dcd7011",8980:"7852a14e",9e3:"399a467e",9044:"8526a0bb",9156:"cb7b6fa5",9392:"6759f767",9856:"2b727b48",9904:"32ce9edf"}[t]+".js"}}(),function(){a.miniCssF=function(t){return"css/"+t+"."+{208:"c771d657",218:"0530e224",572:"4149415b",1228:"1719e529",1528:"e6c27227",2760:"6fac7cd8",3036:"081b4583",3816:"572c83fc",5824:"4f7e2a66",5900:"d1fd0faa",7412:"4b50bc38",8980:"a94c9ca6",9044:"72c8c98f",9156:"480cfd4a",9392:"6ad781a6",9856:"0780c10b"}[t]+".css"}}(),function(){a.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"===typeof window)return window}}()}(),function(){a.hmd=function(t){return t=Object.create(t),t.children||(t.children=[]),Object.defineProperty(t,"exports",{enumerable:!0,set:function(){throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+t.id)}}),t}}(),function(){a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)}}(),function(){var t={},e="@radiantearth/stac-browser:";a.l=function(s,r,i,n){if(t[s])t[s].push(r);else{var o,l;if(void 0!==i)for(var c=document.getElementsByTagName("script"),u=0;ua.e(3772).then(a.bind(a,83772)),Description:d["default"],Metadata:()=>Promise.all([a.e(3912),a.e(5879),a.e(5900)]).then(a.bind(a,55900))},mixins:[(0,f.c)({formatMediaType:c.formatMediaType})],props:{asset:{type:Object,required:!0},id:{type:String,required:!0},context:{type:Object,default:null},definition:{type:Boolean,default:!1},expand:{type:Boolean,default:null},shown:{type:Boolean,default:!1}},data(){return{expanded:!1,ignore:["href","title","description","type","roles","proj:bbox","proj:geometry","table:storage_options","xarray:open_kwargs","xarray:storage_options"]}},computed:{...(0,u.ys)(["buildTileUrlTemplate","useTileLayerAsFallback","url","stateQueryParameters"]),...(0,u.gV)(["getRequestUrl"]),tileRendererType(){return this.buildTileUrlTemplate&&!this.useTileLayerAsFallback?"server":"client"},type(){return this.definition?"itemdef":"asset"},uid(){return`${this.type}-${this.id}`},isThumbnail(){return Array.isArray(this.asset.roles)&&this.asset.roles.includes("thumbnail")},canShow(){return"string"===typeof this.asset.type&&(!("server"!==this.tileRendererType||!h.eQ.includes(this.asset.type))||(!this.isGdalVfs||"client"!==this.tileRendererType)&&(!!this.isBrowserProtocol&&!!h.Iz.includes(this.asset.type)))},fileFormat(){return"string"===typeof this.asset.type&&this.asset.type.length>0?this.formatMediaType(this.asset.type):null},shortFileFormat(){return"string"===typeof this.asset.type&&this.asset.type.length>0?this.formatMediaType(this.asset.type,null,{shorten:!0}):null},protocol(){if("string"===typeof this.href&&this.href){let t=this.href.match(/^(\w+):\/\//);if(t)return t[1].toLowerCase()}return null},isBrowserProtocol(){return!this.protocol&&!this.isGdalVfs||h.IZ.includes(this.protocol)},isGdalVfs(){return h.cp.isGdalVfsUri(this.asset.href)},href(){if("string"!==typeof this.asset.href)return null;let t=null;return this.context instanceof p.c&&(t=this.context.getAbsoluteUrl()),this.getRequestUrl(this.asset.href,t)},from(){if(this.isGdalVfs){let t=this.asset.href.match(/^\/vsi([a-z\d]+)(_streaming)?\//);return this.protocolName(t)}return this.protocolName(this.protocol)},browserCanOpenFile(){if(this.isGdalVfs)return!1;if(h.cp.canBrowserDisplayImage(this.asset))return!0;if("string"===typeof this.asset.type)switch(this.asset.type.toLowerCase()){case"text/html":case"application/xhtml+xml":case"text/plain":case"application/pdf":return!0}return!1},buttonText(){if(this.browserCanOpenFile&&this.isBrowserProtocol)return this.$t("open");let t="download";this.isGdalVfs?t="copyGdalVfsUrl":this.isBrowserProtocol||(t="copyUrl");let e=!this.isBrowserProtocol&&this.from?"withSource":"generic";return this.$t(`assets.${t}.${e}`,{source:this.from})}},created(){this.stateQueryParameters[this.type].indexOf(this.uid)>-1?this.expanded=!0:"boolean"===typeof this.expand?this.expanded=this.expand:this.expanded=!1},methods:{displayRole(t){let e=`assets.role.${t}`;return this.$te(e)?this.$t(e):t},show(){let t=Object.assign({},this.asset);this.isGdalVfs||(t.href=this.href),this.$emit("show",t,this.id,this.isThumbnail)},protocolName(t){if("string"!==typeof t)return"";switch(t.toLowerCase()){case"s3":return this.$t("protocol.s3");case"abfs":case"abfss":return this.$t("protocol.azure");case"gcs":return this.$t("protocol.gcs");case"ftp":return this.$t("protocol.ftp");case"oss":return this.$t("protocol.oss");case"file":return this.$t("protocol.file")}return""},collapseToggled(t){let e=t?"openCollapsible":"closeCollapsible";this.$store.commit(e,{type:this.type,uid:this.uid})}}},g=m,b=a(82528),y=(0,b.c)(g,i,n,!1,null,null,null),v=y.exports,w={name:"Assets",components:{Asset:v},props:{assets:{type:Object,required:!0},shown:{type:Array,default:()=>[]},context:{type:Object,default:null},definition:{type:Boolean,default:!1},title:{type:String,default:null}},computed:{count(){return h.cp.size(this.assets)},displayTitle(){if(null===this.title){let t=this.definition?"assets.inItems":"stacAssets";return this.$tc(t,this.count)}return this.title},expand(){return!this.definition&&(!(1!==this.count||!this.stac||!this.stac.isItem())||null)}},methods:{show(t,e,a){this.$emit("showAsset",t,e,a)}}},_=w,k=(0,b.c)(_,s,r,!1,null,null,null),L=k.exports},54772:function(t,e,a){"use strict";a.d(e,{c:function(){return g}});var s=function(){var t=this,e=t._self._c;return e("b-card",{directives:[{name:"b-visible",rawName:"v-b-visible.400",value:t.load,expression:"load",modifiers:{400:!0}}],class:t.classes,attrs:{"no-body":"","img-right":t.isList}},[t.hasImage?e("b-card-img-lazy",t._b({staticClass:"thumbnail",attrs:{offset:"200"}},"b-card-img-lazy",t.thumbnail,!1)):t._e(),e("b-card-body",[e("b-card-title",[e("StacLink",{staticClass:"stretched-link",attrs:{data:[t.data,t.catalog]}})],1),t.data&&(t.fileFormats.length>0||t.data.description||t.data.deprecated)?e("b-card-text",{staticClass:"intro"},[t.data.deprecated?e("b-badge",{staticClass:"mr-1 mt-1 deprecated",attrs:{variant:"warning"}},[t._v(t._s(t.$t("deprecated")))]):t._e(),t._l(t.fileFormats,(function(a){return e("b-badge",{key:a,staticClass:"mr-1 mt-1 fileformat",attrs:{variant:"secondary"}},[t._v(t._s(t._f("formatMediaType")(a)))])})),t._v(" "+t._s(t._f("summarize")(t.data.description))+" ")],2):t._e(),t.temporalExtent?e("b-card-text",{staticClass:"datetime"},[e("span",{domProps:{innerHTML:t._s(t.temporalExtent)}})]):t._e()],1)],1)},r=[],i=(a(83248),a(48416)),n=a(10484),o=a(97544),l=a(22308),c=a(82124),u=a(49584),d=a(40848),p={name:"Catalog",components:{StacLink:l["default"]},filters:{summarize:t=>d.cp.summarizeMd(t,300),formatMediaType:t=>(0,u.formatMediaType)(t,null,{shorten:!0})},mixins:[o.c,(0,n.c)({formatTemporalExtent:u.formatTemporalExtent})],props:{catalog:{type:Object,required:!0}},computed:{...(0,i.gV)(["getStac"]),classes(){let t=["catalog-card"];return this.data||t.push("queued"),this.data&&this.data.deprecated&&t.push("deprecated"),this.hasImage&&t.push("has-thumbnail"),this.temporalExtent&&t.push("has-extent"),t},data(){return this.getStac(this.catalog)},temporalExtent(){var t,e,a;if(null!==(t=this.data)&&void 0!==t&&t.isCollection()&&(null===(e=this.data.extent)||void 0===e||null===(a=e.temporal)||void 0===a?void 0:a.interval.length)>0){let t=this.data.extent.temporal.interval[0];if(Array.isArray(t)&&("string"===typeof t[0]||"string"===typeof t[1]))return this.formatTemporalExtent(this.data.extent.temporal.interval[0],!0)}return null},fileFormats(){return this.data?this.data.getFileFormats():[]}},methods:{load(t){this.catalog instanceof c.c||this.$store.commit(t?"queue":"unqueue",this.catalog.href)}}},h=p,f=a(82528),m=(0,f.c)(h,s,r,!1,null,null,null),g=m.exports},44093:function(t,e,a){"use strict";a.r(e),a.d(e,{default:function(){return u}});var s=function(){var t=this,e=t._self._c;return e("div",{staticClass:"styled-description",class:{compact:t.compact,inline:t.inline},domProps:{innerHTML:t._s(t.markup(t.description))}})},r=[],i=a(35653),n={name:"Description",props:{description:{type:String,default:""},compact:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},allowHTML:{type:Boolean,default:!1}},methods:{markup(t){if("string"!==typeof t)return"";var e=new i.OE,a=new i.uV({safe:!this.allowHTML,smart:!0}),s=e.parse(t);return a.render(s)}}},o=n,l=a(82528),c=(0,l.c)(o,s,r,!1,null,null,null),u=c.exports},3424:function(t,e,a){"use strict";a.r(e),a.d(e,{default:function(){return b}});var s=function(){var t=this,e=t._self._c;return e("b-card",{directives:[{name:"b-visible",rawName:"v-b-visible.400",value:t.load,expression:"load",modifiers:{400:!0}}],staticClass:"item-card",class:{queued:!t.data,deprecated:t.isDeprecated,description:t.hasDescription},attrs:{"no-body":""}},[t.hasImage?e("b-card-img-lazy",t._b({staticClass:"thumbnail",attrs:{offset:"200"}},"b-card-img-lazy",t.thumbnail,!1)):t._e(),e("b-card-body",[e("b-card-title",[e("StacLink",{staticClass:"stretched-link",attrs:{data:[t.data,t.item]}})],1),t.fileFormats.length>0||t.hasDescription||t.isDeprecated?e("b-card-text",{staticClass:"intro"},[t.isDeprecated?e("b-badge",{staticClass:"mr-1 mt-1 deprecated",attrs:{variant:"warning"}},[t._v(t._s(t.$t("deprecated")))]):t._e(),t._l(t.fileFormats,(function(a){return e("b-badge",{key:a,staticClass:"mr-1 mt-1 fileformat",attrs:{variant:"secondary"}},[t._v(t._s(t._f("formatMediaType")(a)))])})),t.hasDescription?[t._v(t._s(t._f("summarize")(t.data.properties.description)))]:t._e()],2):t._e(),e("b-card-text",[e("small",{staticClass:"text-muted"},[t.extent?[t._v(t._s(t._f("formatTemporalExtent")(t.extent)))]:t.data&&t.data.properties.datetime?[t._v(t._s(t._f("formatTimestamp")(t.data.properties.datetime)))]:[t._v(t._s(t.$t("items.noTime")))]],2)])],1)],1)},r=[],i=a(48416),n=a(97544),o=a(22308),l=a(82124),c=a(49584),u=a(89380),d=a.n(u),p=a(40848);d().addDependency("content-type",a(16840));var h={name:"Item",components:{StacLink:o["default"]},filters:{summarize:t=>p.cp.summarizeMd(t,150),formatMediaType:t=>(0,c.formatMediaType)(t,null,{shorten:!0}),formatTemporalExtent:c.formatTemporalExtent,formatTimestamp:c.formatTimestamp},mixins:[n.c],props:{item:{type:Object,required:!0}},computed:{...(0,i.gV)(["getStac"]),data(){return this.getStac(this.item)},extent(){return this.data&&(this.data.properties.start_datetime||this.data.properties.end_datetime)?[this.data.properties.start_datetime,this.data.properties.end_datetime]:null},fileFormats(){return this.data?this.data.getFileFormats():[]},isDeprecated(){return this.data instanceof l.c&&Boolean(this.data.properties.deprecated)},hasDescription(){return this.data instanceof l.c&&p.cp.hasText(this.data.properties.description)}},methods:{load(t){this.item instanceof l.c||this.$store.commit(t?"queue":"unqueue",this.item.href)}}},f=h,m=a(82528),g=(0,m.c)(f,s,r,!1,null,null,null),b=g.exports},52308:function(t,e,a){"use strict";a.d(e,{c:function(){return k}});var s=function(){var t=this,e=t._self._c;return e("section",{staticClass:"items mb-4"},[e("h2",[e("span",{staticClass:"title"},[t._v(t._s(t.$tc("stacItem",t.items.length)))]),!t.api&&t.items.length>0?e("b-badge",{attrs:{pill:"",variant:"secondary ml-2"}},[t._v(t._s(t.items.length))]):t._e(),!t.api&&t.items.length>1?e("SortButtons",{staticClass:"ml-4",model:{value:t.sort,callback:function(e){t.sort=e},expression:"sort"}}):t._e()],1),t.showPagination?e("Pagination",{ref:"topPagination",attrs:{pagination:t.pagination,placement:"top"},on:{paginate:t.paginate}}):t._e(),t.allowFilter?[t.api?e("b-button",{directives:[{name:"b-toggle",rawName:"v-b-toggle.itemFilter",modifiers:{itemFilter:!0}}],staticClass:"mb-4 mt-2",class:{"ml-3":t.showPagination},attrs:{pressed:t.filtersOpen,variant:"outline-primary"}},[e("b-icon-search"),t._v(" "+t._s(t.$t("items.filter"))+" ")],1):t._e(),e("b-collapse",{attrs:{id:"itemFilter"},model:{value:t.filtersOpen,callback:function(e){t.filtersOpen=e},expression:"filtersOpen"}},[t.filtersOpen?e("ItemFilter",{attrs:{type:"Features",title:t.$t("items.filter"),stac:t.stac,value:t.apiFilters},on:{input:t.emitFilter}}):t._e()],1)]:t._e(),e("section",{staticClass:"list"},[t.loading?e("Loading",{attrs:{fill:"",top:""}}):t._e(),t.chunkedItems.length>0?e("b-card-group",{attrs:{columns:""}},t._l(t.chunkedItems,(function(t){return e("Item",{key:t.href,attrs:{item:t}})})),1):e("b-alert",{attrs:{variant:t.hasFilters?"warning":"info",show:""}},[t.hasFilters?[t._v(t._s(t.$t("search.noItemsFound")))]:[t._v(t._s(t.$t("items.noneAvailableForCollection")))]],2)],1),t.showPagination?e("Pagination",{attrs:{pagination:t.pagination},on:{paginate:t.paginate}}):t.hasMore?e("b-button",{directives:[{name:"b-visible",rawName:"v-b-visible.300",value:t.showMore,expression:"showMore",modifiers:{300:!0}}],attrs:{variant:"primary"},on:{click:t.showMore}},[t._v(t._s(t.$t("showMore")))]):t._e()],2)},r=[],i=a(3424),n=a(26732),o=function(){var t=this,e=t._self._c;return e("b-button-group",{class:t.classes},[e("b-button",{attrs:{disabled:!t.pagination.first,variant:"primary"},on:{click:function(e){return t.paginate(t.pagination.first)}}},[t._v(t._s(t.$t("pagination.first")))]),e("b-button",{attrs:{disabled:!t.pagination.prev,variant:"primary"},on:{click:function(e){return t.paginate(t.pagination.prev)}}},[t._v(t._s(t.$t("pagination.previous")))]),e("b-button",{attrs:{disabled:!t.pagination.next,variant:"primary"},on:{click:function(e){return t.paginate(t.pagination.next)}}},[t._v(t._s(t.$t("pagination.next")))]),t.pagination.last?e("b-button",{attrs:{variant:"primary"},on:{click:function(e){return t.paginate(t.pagination.last)}}},[t._v(t._s(t.$t("pagination.last")))]):t._e()],1)},l=[],c={name:"Pagination",props:{pagination:{type:Object,default:()=>({})},placement:{type:String,default:"bottom"}},computed:{classes(){return"top"===this.placement?"mb-4 mt-2":"mb-2 mt-2"}},methods:{paginate(t){this.$emit("paginate",t,this.placement)}}},u=c,d=a(82528),p=(0,d.c)(u,o,l,!1,null,null,null),h=p.exports,f=a(52220),m=a(88676),g=a(40848),b=a(82124),y=a(48416),v={name:"Items",components:{BCollapse:f.t,BIconSearch:m.i86,Item:i["default"],ItemFilter:()=>Promise.all([a.e(3912),a.e(1824),a.e(218)]).then(a.bind(a,31824)),Loading:n.c,Pagination:h,SortButtons:()=>a.e(996).then(a.bind(a,80996))},props:{items:{type:Array,required:!0},loading:{type:Boolean,default:!1},stac:{type:Object,required:!0},api:{type:Boolean,default:!1},allowFilter:{type:Boolean,default:!0},apiFilters:{type:Object,default:()=>({})},pagination:{type:Object,default:()=>({})},chunkSize:{type:Number,default:90}},data(){return{shownItems:this.chunkSize,filtersOpen:!1,sort:0}},computed:{...(0,y.ys)(["cardViewSort","uiLanguage"]),hasMore(){return this.items.length>this.shownItems},hasFilters(){return Object.values(this.apiFilters).filter((t=>!(null===t||0===g.cp.size(t)))).length>1},chunkedItems(){let t=this.items;return 0!==this.sort&&(t=t.slice(0).sort(((t,e)=>b.c.getDisplayTitle(t).localeCompare(b.c.getDisplayTitle(e),this.uiLanguage))),-1===this.sort&&(t=t.reverse())),!this.api&&this.items.length>this.chunkSize?t.slice(0,this.shownItems):t},showPagination(){if(this.api){if(this.hasFilters)return!0;if(this.items.length>0)return Object.values(this.pagination).some((t=>!!t))}return!1}},created(){this.sort=this.cardViewSort},methods:{emitFilter(t,e){this.$emit("filterItems",t,e)},showMore(){this.shownItems+=this.chunkSize},paginate(t,e){"bottom"===e&&this.$refs.topPagination&&g.cp.scrollTo(this.$refs.topPagination.$el),this.$emit("paginate",t)}}},w=v,_=(0,d.c)(w,s,r,!1,null,"c0719580",null),k=_.exports},26732:function(t,e,a){"use strict";a.d(e,{c:function(){return c}});var s=function(){var t=this,e=t._self._c;return e("div",{class:t.classes},[e("b-spinner",{attrs:{label:t.$t("loading"),small:t.small}})],1)},r=[],i=(a(83248),{name:"Loading",props:{fill:{type:Boolean,default:!1},stretch:{type:Boolean,default:!1},small:{type:Boolean,default:!1},top:{type:Boolean,default:!1}},computed:{classes(){let t=["loading"];return this.fill?t.push("loading-fill"):this.stretch&&t.push("loading-stretch"),this.top&&t.push("top"),t}}}),n=i,o=a(82528),l=(0,o.c)(n,s,r,!1,null,"67931bb8",null),c=l.exports},22308:function(t,e,a){"use strict";a.r(e),a.d(e,{default:function(){return m}});var s=function(){var t=this,e=t._self._c;return e(t.component,t._b({tag:"component",staticClass:"stac-link",attrs:{title:t.tooltip}},"component",t.attributes,!1),[t.icon?[e("img",{staticClass:"icon mr-2",attrs:{src:t.icon.href,alt:t.icon.title,title:t.icon.title}})]:t._e(),e("span",{staticClass:"title"},[t._v(t._s(t.displayTitle))])],2)},r=[],i=a(48416),n=a(81228),o=a(40848),l=a(82124),c=a(63956),u=a.n(c),d={name:"StacLink",props:{data:{type:[Object,Array],default:null},title:{type:String,default:null},fallbackTitle:{type:[String,Function],default:null},tooltip:{type:String,default:null}},computed:{...(0,i.ys)(["privateQueryParameters"]),...(0,i.gV)(["toBrowserPath","getRequestUrl"]),icon(){if(this.stac){let t=this.stac.getIcons();if(t.length>0)return t[0]}return null},stac(){return this.data instanceof l.c?this.data:Array.isArray(this.data)?this.data.find((t=>t instanceof l.c)):null},link(){return this.isLink(this.data)?this.data:Array.isArray(this.data)&&this.data.find((t=>this.isLink(t)))||{}},isStacBrowserLink(){return!!this.stac||!!o.cp.isStacMediaType(this.link.type,!0)&&n.E7.includes(this.link.rel)},attributes(){return this.isStacBrowserLink?{to:this.href,rel:this.rel}:{href:this.href,target:"_blank",rel:this.rel}},component(){return this.isStacBrowserLink?"router-link":"a"},href(){if(this.stac||this.isStacBrowserLink){let t;if(t=this.stac?this.stac.getBrowserPath():this.toBrowserPath(this.link.href),t.startsWith("/")||(t="/"+t),o.cp.size(this.privateQueryParameters)>0){let e=u()(t);for(let t in this.privateQueryParameters){let a=`~${t}`;e.hasQuery(a)||e.addQuery(a,this.privateQueryParameters[t])}t=e.toString()}return t}return this.getRequestUrl(this.link.href)},displayTitle(){if(this.title)return this.title;let t="function"===typeof this.fallbackTitle?this.fallbackTitle():this.fallbackTitle;return l.c.getDisplayTitle(this.data,t)}},methods:{isLink(t){return o.cp.isObject(t)&&!(t instanceof l.c)}}},p=d,h=a(82528),f=(0,h.c)(p,s,r,!1,null,null,null),m=f.exports},79464:function(t){t.exports={catalogUrl:null,catalogTitle:"STAC Browser",allowExternalAccess:!0,allowedDomains:[],detectLocaleFromBrowser:!0,storeLocale:!0,locale:"en",fallbackLocale:"en",supportedLocales:["de","es","en","fr","it","ro"],apiCatalogPriority:null,useTileLayerAsFallback:!0,tileSourceTemplate:null,displayGeoTiffByDefault:!1,buildTileUrlTemplate:({href:t,asset:e})=>"https://tiles.rdnt.io/tiles/{z}/{x}/{y}@2x?url="+encodeURIComponent(e.href.startsWith("/vsi")?e.href:t),stacProxyUrl:null,pathPrefix:"/",historyMode:"history",cardViewMode:"cards",cardViewSort:"asc",showThumbnailsAsAssets:!1,stacLint:!0,geoTiffResolution:128,redirectLegacyUrls:!1,itemsPerPage:12,defaultThumbnailSize:null,maxPreviewsOnMap:50,crossOriginMedia:null,requestHeaders:{},requestQueryParameters:{},preprocessSTAC:null,authConfig:{type:"header",key:"Authorization",formatter:t=>`Bearer ${t}`,description:"Please retrieve the token from our [API console](https://example.com/api-console).\n\nFor further questions contact ."}}},10484:function(t,e,a){"use strict";var s=a(48416);e.c=t=>{let e={computed:{...(0,s.ys)(["uiLanguage"])},methods:{}};for(let a in t){let s=t[a];e.methods[a]=function(){return this.uiLanguage,s(...arguments)}}return e}},97544:function(t,e,a){"use strict";var s=a(48416);e.c={props:{showThumbnail:{type:Boolean,default:!0}},computed:{...(0,s.ys)(["cardViewMode","crossOriginMedia","defaultThumbnailSize"]),isList(){return this.data&&!this.data.isItem()&&"list"===this.cardViewMode},hasImage(){return this.showThumbnail&&this.thumbnail},thumbnail(){if(this.data){let t=this.data.getThumbnails(!0,"thumbnail");if(t.length>0){let e,a,s=t[0];return Array.isArray(s["proj:shape"])&&2===s["proj:shape"].length?[a,e]=s["proj:shape"]:Array.isArray(this.defaultThumbnailSize)&&2===this.defaultThumbnailSize.length&&([a,e]=this.defaultThumbnailSize),{src:s.href,alt:s.title,crossorigin:this.crossOriginMedia,right:this.isList,blankColor:"rgba(0, 0, 0, 0.125)",width:e,height:a,"blank-width":e,"blank-height":a}}}return null}}}},43064:function(t,e,a){"use strict";let s;s=Object.assign(a(79464),{pathPrefix:"/to/be/replaced/stac_browser/"}),e.c=s},75760:function(t,e,a){"use strict";a.d(e,{AF:function(){return h},MB:function(){return f},O8:function(){return m},UB:function(){return c}});var s=a(7768),r=a(54092),i=a(43064),n=a(16184),o=a.n(n),l=a(40848);s.cp.use(r.c);const c=["https://api.stacspec.org/v1.*/language"],u={};function d(){for(let e of i.c.supportedLocales)u[e]=a(99460)(`./${e}/config.json`);const t={};for(let e in u)t[e]={languages:u};return t}const p=new r.c({locale:i.c.locale,fallbackLocale:i.c.fallbackLocale,messages:d()});function h(){return Promise.all([f(i.c.locale),f(i.c.fallbackLocale)])}async function f(t){if(l.cp.size(p.messages[t])>1)return;const e=(await a(41100)(`./${t}/default.js`)).default;p.mergeLocaleMessage(t,e)}function m(t,e=null){if("string"!==typeof t||0===t.length)return t;let a=`fields.${t}`;return p.te(a)?p.t(a,null,e):o().format(t,e)}e.cp=p},18460:function(t,e,a){"use strict";a.d(e,{IB:function(){return r},YV:function(){return i}});a(83248);function s(t){if(!t)return;const e=String(t),a=e.indexOf("@"),s=-1!==a?e.substr(a+1):void 0,r=-1!==a?e.substr(0,a):e,i=String(r).replace(/-/g,"_").split("_");if(!i.length||i.length>4)return;const n=i.shift();if(!n)return;const o={keyword:s,language:n.toLowerCase()};if(!i.length)return o;if(3===i.length){const t=i.pop();t&&(o.variant=t.toUpperCase())}let l=i.pop();if(l.length>3&&(o.keyword=l,l=i.pop()),l&&(o.country=l.toUpperCase()),!i.length)return o;const c=i.pop();return"string"===typeof c&&c.length>=1&&(o.script=c[0].toUpperCase()+c.substring(1).toLowerCase()),o}function r(t){const e={};return t.forEach((t=>{const{language:a,country:r}=s(t);if(!a)throw new Error(`Locale ${t} is not parsable`);e[a]||(e[a]={countries:{},firstCountry:void 0,main:void 0});const i=e[a];r?(i.countries[r]=t,i.firstCountry||(i.firstCountry=t)):i.main=t})),e}function i(t,e,a,n){const o=Array.isArray(t)?r(t):t;if(!e&&a)return i(t,a,void 0,n);if(!e)return;const{language:l,country:c}=s(e);if(!l)return a;if(!o[l]){if(e===a)return;return i(t,a,null,n)}const{countries:u,main:d=a,firstCountry:p}=o[l];return u&&c?n&&p?u[c]?u[c]:p:u[c]?u[c]:d:n&&p?p:d}},70007:function(t,e,a){"use strict";var s=a(7768),r=function(){var t=this,e=t._self._c;return e("b-container",{attrs:{id:"stac-browser"}},[t.doAuth.length>0?e("Authentication"):t._e(),t.globalError?e("ErrorAlert",t._b({staticClass:"global-error",on:{close:t.hideError}},"ErrorAlert",t.globalError,!1)):t._e(),t.sidebar?e("Sidebar"):t._e(),e("header",[e("div",{staticClass:"logo"},[t._v(t._s(t.displayCatalogTitle))]),e("StacHeader",{on:{enableSidebar:function(e){t.sidebar=!0}}})],1),e("router-view"),e("footer",[e("i18n",{staticClass:"poweredby text-muted",attrs:{tag:"small",path:"poweredBy"},scopedSlots:t._u([{key:"link",fn:function(){return[e("a",{attrs:{href:"https://github.com/radiantearth/stac-browser",target:"_blank"}},[t._v("STAC Browser")]),t._v(" "+t._s(t.browserVersion)+" ")]},proxy:!0}])})],1)],1)},i=[],n=(a(83248),a(45408)),o=a(48416),l=a(43064),c=function(){var t=this,e=t._self._c;return e("main",{staticClass:"browse d-flex flex-column"},[!t.allowExternalAccess&&t.isExternal?e("b-alert",{attrs:{show:""}},[e("p",[t._v(t._s(t.$t("errors.noExternalAccess")))])]):t._e(),t.error?e("ErrorAlert",{attrs:{dismissible:!1,url:t.url,description:t.errorDescription,id:t.errorId}}):t.loading?e("Loading",{attrs:{stretch:""}}):e(t.component,{tag:"component"})],1)},u=[],d=function(){var t=this,e=t._self._c;return e("b-alert",{attrs:{variant:"danger",show:"",dismissible:t.dismissible},on:{dismissed:function(e){return t.$emit("close")}}},[e("p",{staticClass:"message"},[t._v(t._s(t.message||t.$t("errors.default")))]),t.error&&t.error.message?e("dl",{staticClass:"error"},[e("dt",[t._v(t._s(t.$t("errors.labels.cause")))]),e("dd",[t._v(t._s(t.error.message))])]):t._e(),t.description?e("dl",{staticClass:"description"},[e("dt",[t._v(t._s(t.$t("errors.labels.reason")))]),e("dd",[t._v(t._s(t.description))])]):t._e(),t.id?e("dl",{staticClass:"id"},[e("dt",[t._v(t._s(t.$t("errors.labels.code")))]),e("dd",[e("code",[t._v(t._s(t.id))])])]):t._e(),t.url?e("dl",{staticClass:"url"},[e("dt",[t._v(t._s(t.$t("errors.labels.requestURL")))]),e("dd",[e("code",[t._v(t._s(t.url))])])]):t._e()])},p=[],h={name:"ErrorAlert",props:{message:{type:String,default:null},description:{type:String,default:""},error:{type:[Object,Error],default:null},id:{type:[String,Number],default:null},url:{type:String,default:""},dismissible:{type:Boolean,default:!0}}},f=h,m=a(82528),g=(0,m.c)(f,d,p,!1,null,"09bb7d1b",null),b=g.exports,y=a(26732),v=function(){var t=this,e=t._self._c;return e("div",{key:t.data.id,staticClass:"item"},[e("b-row",[e("b-col",{staticClass:"left"},[e("section",{staticClass:"mb-4"},[e("b-card",{staticClass:"maps-preview",attrs:{"no-body":""}},[e("b-tabs",{ref:"tabs",attrs:{card:"",pills:"",vertical:"",end:""},model:{value:t.tab,callback:function(e){t.tab=e},expression:"tab"}},[e("b-tab",{attrs:{title:t.$t("map"),"no-body":""}},[e("Map",{attrs:{stac:t.data,stacLayerData:t.selectedAsset,scrollWheelZoom:""},on:{dataChanged:t.dataChanged}})],1),t.thumbnails.length>0?e("b-tab",{attrs:{title:t.$t("thumbnails"),"no-body":""}},[e("Thumbnails",{attrs:{thumbnails:t.thumbnails}})],1):t._e()],1)],1)],1),t.hasAssets?e("Assets",{attrs:{assets:t.assets,context:t.data,shown:t.shownAssets},on:{showAsset:t.showAsset}}):t._e(),t.additionalLinks.length>0?e("Links",{attrs:{title:t.$t("additionalResources"),links:t.additionalLinks}}):t._e()],1),e("b-col",{staticClass:"right"},[e("section",{staticClass:"intro"},[t.data.properties.description?e("h2",[t._v(t._s(t.$t("description")))]):t._e(),t.data.properties.deprecated?e("DeprecationNotice",{attrs:{data:t.data}}):t._e(),t.data.properties["anon:warning"]?e("AnonymizedNotice",{attrs:{warning:t.data.properties["anon:warning"]}}):t._e(),t.data.properties.description?e("ReadMore",{attrs:{lines:10,text:t.$t("read.more"),"text-less":t.$t("read.less")}},[e("Description",{attrs:{description:t.data.properties.description}})],1):t._e(),Array.isArray(t.data.properties.keywords)&&t.data.properties.keywords.length>0?e("Keywords",{attrs:{keywords:t.data.properties.keywords}}):t._e()],1),t.collectionLink?e("CollectionLink",{attrs:{link:t.collectionLink}}):t._e(),t.data.properties.providers?e("Providers",{attrs:{providers:t.data.properties.providers}}):t._e(),e("Metadata",{attrs:{data:t.data,type:"Item",ignoreFields:t.ignoredMetadataFields}})],1)],1)],1)},w=[],_=a(73216),k=a(44093),L=a(34088),C=a.n(L),A=a(40848),x={data(){return{shownAssetsOnMap:[],shownBandsOnMap:[],tab:null,selectedAsset:null,selectedAssetKey:null}},computed:{...(0,o.gV)(["thumbnails","hasAssets","assets"]),shownAssets(){if(0===this.tab)return this.shownAssetsOnMap;if(1===this.tab||null===this.tab&&this.thumbnails.length>0){let t=[],e=this.thumbnails.map((t=>t.href));for(let a in this.assets){let s=this.assets[a];e.includes(s.href)&&t.push(a)}return t}return[]}},methods:{showAsset(t,e,a){a?this.tab=1:(this.tab=0,this.selectedAsset=t,this.selectedAssetKey=e),this.$refs.tabs&&A.cp.scrollTo(this.$refs.tabs.$el)},dataChanged(t){A.cp.isObject(t)?t.assets||t.bands?(A.cp.size(t.assets)>0&&(this.selectedAssetKey?this.shownAssetsOnMap=[this.selectedAssetKey]:this.shownAssetsOnMap=t.assets.map((t=>t.key))),A.cp.size(t.bands)>0&&(this.shownBandsOnMap=t.bands)):this.selectedAssetKey&&(this.shownAssetsOnMap=[this.selectedAssetKey]):(this.shownBandsOnMap=[],this.shownAssetsOnMap=[])}}},T=a(3924),O=a(21544),S=a(82124),$=a(63956),B=a.n($),I=a(75760);function j(t,e){let a=e.getters.toBrowserPath(t),s=B()(window.location.origin.toString());return"hash"===e.state.historyMode?(s.path(e.state.pathPrefix),s.fragment(a)):s.path(e.state.pathPrefix.replace(/\/$/,"")+a),s.toString()}function P(t,e){Array.isArray(e)&&e.length>=4&&(t.spatialCoverage={"@type":"Place",geo:{"@type":"GeoShape",box:(e||[]).join(" ")}})}function M(t){return!Array.isArray(t)||2!==t.length||"string"!==typeof t[0]&&"string"!==typeof t[1]?null:t.map((t=>t||"..")).join("/")}function U(t){return A.cp.size(t.assets)>0?Object.values(t.assets).map((e=>({"@type":"DataDownload",contentUrl:A.cp.toAbsolute(e.href,t.getAbsoluteUrl()),encodingFormat:e.type,name:e.title}))):[]}function E(t,e,a,s="DataCatalog"){return t.map((t=>{let r,i;t instanceof S.c?(r=S.c.getDisplayTitle(t),i=t.getAbsoluteUrl()):(r=t.title,i=A.cp.toAbsolute(t.href,e.getAbsoluteUrl()));let n={"@type":s,name:r,url:j(i,a),isBasedOn:i};return"Dataset"===s&&(n.description=D(t,a)),n}))}function F(t,e){return t.filter((t=>A.cp.isObject(t)&&Array.isArray(t.roles)&&t.roles.includes(e))).map((t=>({"@type":"Organization",name:t.name,description:t.description,url:t.url,email:t.email||t.mail})))}function D(t,e){let a,s;if(t instanceof S.c?(a=t.isItem()?"Item":t.type,s=t.collection):A.cp.isObject(t)&&"item"===t.rel&&(a="Item"),a){let r=I.cp.tc(`stac${a}`),i=I.cp.t("in",{catalog:s||e.catalogTitle});return`SpatioTemporal Asset Catalog (STAC)\n${r} - ${t.id} ${i}`}}function q(t,e,a){var s;let r,i=S.c.getDisplayTitle(t),n=t.getAbsoluteUrl(),o=j(n,a),l=null===(s=t.getMetadata("language"))||void 0===s?void 0:s.code,c=t.getThumbnails(!0);c.length>0&&(r=A.cp.toAbsolute(c[0].href,t.getAbsoluteUrl()));let u=t.getMetadata("license");var d;u&&"proprietary"!==u&&"various"!==u?u=`https://spdx.org/licenses/${u}.html`:u=null===(d=t.getLinkWithRel("license"))||void 0===d?void 0:d.href;u&&(u=A.cp.toAbsolute(u,t.getAbsoluteUrl()));let p,h,f,m,g=t.getMetadata("providers");return A.cp.size(g)>0&&(p=F(g,"licensor"),h=F(g,"producer"),f=F(g,"host"),m=F(g,"processor")),{"@context":"https://schema.org/","@type":e,name:i,description:t.getMetadata("description")||D(t,a),citation:t.getMetadata("sci:citation"),identifier:t.getMetadata("sci:doi")||t.id,keywords:t.getMetadata("keywords"),license:u,url:o,isBasedOn:n,dateCreated:t.getMetadata("created"),dateModified:t.getMetadata("updated"),datePublished:t.getMetadata("published"),expires:t.getMetadata("expires"),inLanguage:l,thumbnailUrl:r,version:t.getMetadata("version"),image:r,copyrightHolder:p,producer:h,provider:f,creator:m}}function R(t,e,a){if(!(t instanceof S.c))return null;e=e.filter((t=>A.cp.isObject(t))),e.length>1&&(e=e.filter(((t,a)=>e.findIndex((e=>e.isBasedOn===t.isBasedOn))!==a)));let s=q(t,"DataCatalog",a);var r,i,n,o;t.isCollection()&&((null===(r=t.extent)||void 0===r||null===(i=r.temporal)||void 0===i?void 0:i.interval.length)>0&&(s.temporalCoverage=M(t.extent.temporal.interval[0])),(null===(n=t.extent)||void 0===n||null===(o=n.spatial)||void 0===o?void 0:o.bbox.length)>0&&P(s,t.extent.spatial.bbox[0]),s.associatedMedia=U(t));return s.hasPart=E(a.getters.catalogs,t,a),s.dataset=E(a.getters.items,t,a,"Dataset"),s.isPartOf=E(e,t,a),s}function V(t,e,a){if(!(t instanceof S.c))return null;e=e.filter((t=>A.cp.isObject(t)));let s=q(t,"Dataset",a);s.includedInDataCatalog=E(e,t,a);let r=t.getMetadata("start_datetime"),i=t.getMetadata("end_datetime");return s.temporalCoverage=r||i?M([r,i]):t.getMetadata("datetime"),P(s,t.bbox),s.distribution=U(t),s}function z(t,e){let a="schema-org",s=t.getElementById(a);s||(s=t.createElement("script"),s.type="application/ld+json",s.id=a,t.head.appendChild(s)),s.innerText=JSON.stringify(e)}var N={name:"Item",components:{AnonymizedNotice:()=>a.e(4488).then(a.bind(a,54488)),Assets:_["default"],BTabs:T.k,BTab:O.o,CollectionLink:()=>a.e(1788).then(a.bind(a,81788)),Description:k["default"],DeprecationNotice:()=>a.e(1528).then(a.bind(a,11528)),Links:()=>Promise.all([a.e(3912),a.e(5879),a.e(3816)]).then(a.bind(a,23816)),Map:()=>a.e(572).then(a.bind(a,572)),Metadata:()=>Promise.all([a.e(3912),a.e(5879),a.e(5900)]).then(a.bind(a,55900)),Providers:()=>a.e(5824).then(a.bind(a,45824)),ReadMore:C(),Thumbnails:()=>a.e(7412).then(a.bind(a,97412))},mixins:[x],data(){return{ignoredMetadataFields:["title","description","providers","deprecated","proj:bbox","proj:geometry","anon:warning"]}},computed:{...(0,o.ys)(["data","url"]),...(0,o.gV)(["additionalLinks","collectionLink","parentLink"])},watch:{data:{immediate:!0,handler(t){try{let e=V(t,[this.collectionLink,this.parentLink],this.$store);z(document,e)}catch(e){console.error(e)}}}}},W=N,Q=(0,m.c)(W,v,w,!1,null,null,null),H=Q.exports,G=function(){var t=this,e=t._self._c;return e("div",{key:t.data.id,class:{cc:!0,[t.data.type.toLowerCase()]:!0,mixed:t.hasCatalogs&&t.hasItems,empty:!t.hasCatalogs&&!t.hasItems}},[e("b-row",[e("b-col",{staticClass:"meta"},[e("section",{staticClass:"intro"},[e("h2",[t._v(t._s(t.$t("description")))]),t.data.deprecated?e("DeprecationNotice",{attrs:{data:t.data}}):t._e(),t.data["anon:warning"]?e("AnonymizedNotice",{attrs:{warning:t.data["anon:warning"]}}):t._e(),t.data.description?e("ReadMore",{attrs:{lines:10,text:t.$t("read.more"),"text-less":t.$t("read.less")}},[e("Description",{attrs:{description:t.data.description}})],1):t._e(),Array.isArray(t.data.keywords)&&t.data.keywords.length>0?e("Keywords",{attrs:{keywords:t.data.keywords}}):t._e(),t.isCollection?e("section",{staticClass:"metadata mb-4"},[t.licenses?e("b-row",[e("b-col",{staticClass:"label",attrs:{md:"4"}},[t._v(t._s(t.$t("catalog.license")))]),e("b-col",{staticClass:"value",attrs:{md:"8"},domProps:{innerHTML:t._s(t.licenses)}})],1):t._e(),t.temporalExtents?e("b-row",[e("b-col",{staticClass:"label",attrs:{md:"4"}},[t._v(t._s(t.$t("catalog.temporalExtent")))]),e("b-col",{staticClass:"value",attrs:{md:"8"},domProps:{innerHTML:t._s(t.temporalExtents)}})],1):t._e()],1):t._e(),"left"===t.linkPosition?e("Links",{attrs:{title:t.$t("additionalResources"),links:t.additionalLinks}}):t._e()],1),t.isCollection||t.hasThumbnails?e("section",{staticClass:"mb-4"},[e("b-card",{staticClass:"maps-preview",attrs:{"no-body":""}},[e("b-tabs",{ref:"tabs",attrs:{pills:"",card:"",vertical:"",end:""},model:{value:t.tab,callback:function(e){t.tab=e},expression:"tab"}},[t.isCollection?e("b-tab",{attrs:{title:t.$t("map"),"no-body":""}},[e("Map",{attrs:{stac:t.data,stacLayerData:t.mapData,popover:""},on:{dataChanged:t.dataChanged}})],1):t._e(),t.hasThumbnails?e("b-tab",{attrs:{title:t.$t("thumbnails"),"no-body":""}},[e("Thumbnails",{attrs:{thumbnails:t.thumbnails}})],1):t._e()],1)],1)],1):t._e(),t.hasAssets?e("Assets",{attrs:{assets:t.assets,context:t.data,shown:t.shownAssets},on:{showAsset:t.showAsset}}):t._e(),t.hasItemAssets&&!t.hasItems?e("Assets",{attrs:{assets:t.data.item_assets,definition:!0}}):t._e(),t.hasProviders?e("Providers",{attrs:{providers:t.data.providers}}):t._e(),e("Metadata",{staticClass:"mb-4",attrs:{title:t.$t("metadata.title"),type:t.data.type,data:t.data,ignoreFields:t.ignoredMetadataFields}}),t.collectionLink?e("CollectionLink",{attrs:{link:t.collectionLink}}):t._e(),"right"===t.linkPosition?e("Links",{attrs:{title:t.$t("additionalResources"),links:t.additionalLinks}}):t._e()],1),t.hasCatalogs?e("b-col",{staticClass:"catalogs-container"},[e("Catalogs",{attrs:{catalogs:t.catalogs,hasMore:t.hasMoreCollections},on:{loadMore:t.loadMoreCollections}})],1):t._e(),t.hasItems?e("b-col",{staticClass:"items-container"},[e("Items",{attrs:{stac:t.data,items:t.items,api:t.isApi,apiFilters:t.filters,pagination:t.itemPages,loading:t.apiItemsLoading},on:{paginate:t.paginateItems,filterItems:t.filterItems}}),t.hasItemAssets?e("Assets",{attrs:{assets:t.data.item_assets,definition:!0}}):t._e()],1):t._e()],1)],1)},Y=[],J=function(){var t=this,e=t._self._c;return e("section",{staticClass:"catalogs mb-4"},[e("h2",[e("span",{staticClass:"title"},[t._v(t._s(t.$tc("stacCatalog",t.catalogs.length)))]),t.isComplete?e("b-badge",{attrs:{pill:"",variant:"secondary ml-2"}},[t.catalogs.length!==t.catalogView.length?[t._v(t._s(t.catalogView.length)+"/"+t._s(t.catalogs.length))]:[t._v(t._s(t.catalogs.length))]],2):t._e(),e("ViewButtons",{staticClass:"ml-4",model:{value:t.view,callback:function(e){t.view=e},expression:"view"}}),t.isComplete&&t.catalogs.length>1?e("SortButtons",{staticClass:"ml-2",model:{value:t.sort,callback:function(e){t.sort=e},expression:"sort"}}):t._e()],1),t.isComplete&&t.catalogs.length>1?e("SearchBox",{staticClass:"mt-3 mb-2",attrs:{placeholder:t.$t("catalogs.filterByTitle")},model:{value:t.searchTerm,callback:function(e){t.searchTerm=e},expression:"searchTerm"}}):t._e(),t.searchTerm&&0===t.catalogView.length?e("b-alert",{attrs:{variant:"warning",show:""}},[t._v(t._s(t.$t("catalogs.noMatches")))]):t._e(),e(t.cardsComponent,t._b({tag:"component"},"component",t.cardsComponentProps,!1),t._l(t.catalogView,(function(t){return e("Catalog",{key:t.href,attrs:{catalog:t}})})),1),t.hasMore?e("b-button",{directives:[{name:"b-visible",rawName:"v-b-visible.300",value:t.loadMore,expression:"loadMore",modifiers:{300:!0}}],attrs:{variant:"primary"},on:{click:t.loadMore}},[t._v(t._s(t.$t("catalogs.loadMore")))]):t._e()],1)},K=[],X=a(54772),Z=function(){var t=this,e=t._self._c;return e("b-button-group",{attrs:{title:t.$t("view.title"),size:"sm"}},[e("b-button",{attrs:{title:t.$t("view.tiles.title"),variant:"outline-primary",pressed:"cards"===t.value},on:{click:function(e){return t.toggle("cards")}}},[e("b-icon-bricks"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("view.tiles.label")))])],1),e("b-button",{attrs:{title:t.$t("view.list.title"),variant:"outline-primary",pressed:"list"===t.value},on:{click:function(e){return t.toggle("list")}}},[e("b-icon-list-task"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("view.list.label")))])],1)],1)},tt=[],et=a(88676),at={id:"SortButtons",components:{BIconBricks:et.wNg,BIconListTask:et.wN7},props:{value:{type:String,default:"cards"}},methods:{toggle(t){this.value!==t&&this.$emit("input",t)}}},st=at,rt=(0,m.c)(st,Z,tt,!1,null,null,null),it=rt.exports,nt={components:{ViewButtons:it},computed:{cardsComponent(){return"list"===this.view?"div":"b-card-group"},cardsComponentProps(){return"list"===this.view?{class:["card-list"]}:{columns:!0}},view:{get(){return this.$store.state.cardViewMode},set(t){this.$store.commit("config",{cardViewMode:t})}}}},ot={name:"Catalogs",components:{Catalog:X.c,SearchBox:()=>a.e(9392).then(a.bind(a,89392)),SortButtons:()=>a.e(996).then(a.bind(a,80996))},mixins:[nt],props:{catalogs:{type:Array,required:!0},hasMore:{type:Boolean,default:!1}},data(){return{searchTerm:"",sort:0}},computed:{...(0,o.ys)(["cardViewSort","uiLanguage"]),...(0,o.gV)(["getStac"]),isComplete(){return!this.hasMore},catalogView(){if(this.hasMore)return this.catalogs;let t=this.catalogs.map((t=>{let e=this.getStac(t);return e||t}));return this.searchTerm&&(t=t.filter((t=>{let e=[t.title];return t instanceof S.c?(e.push(t.id),Array.isArray(t.keywords)&&(e=e.concat(t.keywords))):e.push(t.href),A.cp.search(this.searchTerm,e)}))),this.hasMore||0===this.sort||(t=t.slice(0).sort(((t,e)=>S.c.getDisplayTitle(t).localeCompare(S.c.getDisplayTitle(e),this.uiLanguage))),-1===this.sort&&(t=t.reverse())),t}},created(){this.sort=this.cardViewSort},methods:{loadMore(t=!0){t&&(this.sort=0,this.$emit("loadMore"))}}},lt=ot,ct=(0,m.c)(lt,J,K,!1,null,"7aceb6cd",null),ut=ct.exports,dt=a(52308),pt=a(10484),ht=a(49584),ft={name:"Catalog",components:{AnonymizedNotice:()=>a.e(4488).then(a.bind(a,54488)),Assets:()=>Promise.resolve().then(a.bind(a,73216)),BTabs:T.k,BTab:O.o,Catalogs:ut,CollectionLink:()=>a.e(1788).then(a.bind(a,81788)),DeprecationNotice:()=>a.e(1528).then(a.bind(a,11528)),Description:k["default"],Items:dt.c,Keywords:()=>a.e(6112).then(a.bind(a,6112)),Links:()=>Promise.all([a.e(3912),a.e(5879),a.e(3816)]).then(a.bind(a,23816)),Map:()=>a.e(572).then(a.bind(a,572)),Metadata:()=>Promise.all([a.e(3912),a.e(5879),a.e(5900)]).then(a.bind(a,55900)),Providers:()=>a.e(5824).then(a.bind(a,45824)),ReadMore:C(),Thumbnails:()=>a.e(7412).then(a.bind(a,97412))},mixins:[x,(0,pt.c)({formatLicense:ht.formatLicense,formatTemporalExtents:ht.formatTemporalExtents})],data(){return{filters:{},ignoredMetadataFields:["stac_version","stac_extensions","id","type","title","description","keywords","providers","license","extent","summaries","links","assets","item_assets","proj:bbox","proj:geometry","conformsTo","deprecated","anon:warning","stac_browser"]}},computed:{...(0,o.ys)(["data","url","apiItems","apiItemsLink","apiItemsPagination"]),...(0,o.gV)(["additionalLinks","catalogs","collectionLink","isCollection","items","hasMoreCollections","getApiItemsLoading","parentLink","rootLink"]),hasThumbnails(){return this.thumbnails.length>0},linkPosition(){return 0===this.additionalLinks.length?null:this.isCollection||!this.hasThumbnails?"right":"left"},apiItemsLoading(){return this.getApiItemsLoading(this.data)},licenses(){return this.isCollection&&this.data.license?this.formatLicense(this.data.license,null,null,this.data):null},hasProviders(){return this.isCollection&&Array.isArray(this.data.providers)&&this.data.providers.length>0},temporalExtents(){if(this.data&&this.data.isCollection()&&this.data.extent.temporal.interval.length>0){let t=this.data.extent.temporal.interval;return t.length>1&&(t=t.slice(1)),this.formatTemporalExtents(t)}return null},hasItemAssets(){var t;return A.cp.size(null===(t=this.data)||void 0===t?void 0:t.item_assets)>0},itemPages(){let t=Object.assign({},this.apiItemsPagination);return!t.first&&this.data&&this.apiItemsLink&&"items"!==this.apiItemsLink.rel&&(t.first=A.cp.addFiltersToLink(this.data.getApiItemsLink(),this.filters)),t},isApi(){return Boolean(this.apiItemsLink)},hasItems(){return this.items.length>0||this.isApi},hasCatalogs(){return this.catalogs.length>0},mapData(){return this.selectedAsset?this.selectedAsset:{type:"FeatureCollection",features:this.items}}},watch:{data:{immediate:!0,handler(t){try{let e=R(t,[this.parentLink,this.rootLink],this.$store);z(document,e)}catch(e){console.error(e)}}}},methods:{loadMoreCollections(){this.$store.dispatch("loadNextApiCollections",{show:!0})},async paginateItems(t){try{await this.$store.dispatch("loadApiItems",{link:t,show:!0,filters:this.filters})}catch(e){this.$root.$emit("error",e,this.$t("errors.loadItems"))}},async filterItems(t,e){this.filters=t,e&&this.$store.commit("resetApiItems");try{await this.$store.dispatch("loadApiItems",{link:this.apiItemsLink,show:!0,filters:t})}catch(a){let t=e?this.$t("errors.loadItems"):this.$t("errors.loadFilteredItems");this.$root.$emit("error",a,t)}}}},mt=ft,gt=(0,m.c)(mt,G,Y,!1,null,null,null),bt=gt.exports,yt={name:"Browse",components:{ErrorAlert:b,Loading:y.c,Catalog:bt,Item:H},props:{path:{type:String,default:""}},computed:{...(0,o.ys)(["allowExternalAccess","url","data","redirectLegacyUrls"]),...(0,o.gV)(["isItem","error","loading"]),errorId(){if(this.error instanceof Error&&this.error.isAxiosError&&A.cp.isObject(this.error.response)){let t=this.error.response;return A.cp.isObject(t.data)&&t.data.code?t.data.code:t.status}return null},errorDescription(){if(this.error instanceof Error&&this.error.isAxiosError&&A.cp.isObject(this.error.response)){let t=this.error.response;if(A.cp.isObject(t.data)){if("string"===typeof t.data.description)return t.data.description;if("string"===typeof t.data.detail)return t.data.detail}if(401===t.status)return this.$t("errors.unauthorized");if(403===t.status)return this.$t("errors.forbidden");if(404===t.status)return this.$t("errors.notFound");if(t.status>500)return this.$t("errors.serverError");if(t.status>400)return this.$t("errors.badRequest")}else if(this.error instanceof A.UB)return this.error.message;return this.$t("errors.networkError")},component(){return this.isItem?"Item":"Catalog"},isExternal(){return B()(this.path).is("absolute")}},watch:{path:{immediate:!0,async handler(t,e){t!==e&&(this.redirectLegacyUrls&&await this.redirectLegacyUrl(t)||this.$store.dispatch("load",{url:t||"/",fromBrowser:!0,show:!0,loadApi:!0}))}}},methods:{async redirectLegacyUrl(t){if(!t||"/"===t)return!1;let e=t.split("/").filter((t=>t.length>0&&"item"!==t&&"collection"!==t));if(e.length>0&&e.every((t=>t.match(/^[123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ]+$/)))){const{decode:t}=await a.e(2460).then(a.t.bind(a,40080,23));let s=t(e[e.length-1]).toString();if(s){let t=B()(s);return this.$router.replace({path:"/"+t.path().replace(/(collections|items)\/?$/,""),query:t.query(!0)}),!0}}return!1}}},vt=yt,wt=(0,m.c)(vt,c,u,!1,null,null,null),_t=wt.exports;function kt(t){let e=[];return t.allowExternalAccess&&e.push({path:"/external/(.*)",name:"browseExternal",component:_t,props:t=>({path:`/external/${t.params.pathMatch}`})}),t.catalogUrl?e.push({path:"/search",name:"search",component:()=>Promise.all([a.e(3912),a.e(1824),a.e(1228)]).then(a.bind(a,88896))}):(e.push({path:"/",name:"select",component:()=>a.e(9044).then(a.bind(a,79044))}),e.push({path:"/search/external/(.*)",name:"search",component:()=>Promise.all([a.e(3912),a.e(1824),a.e(1228)]).then(a.bind(a,88896)),props:t=>({loadParent:`/external/${t.params.pathMatch}`})})),e.push({path:"/(.*)",name:"browse",component:_t,props:t=>({path:t.params.pathMatch})}),e}var Lt=kt,Ct=a(52774),At=a(81228),xt=a(9040),Tt=a(98864),Ot=a(93808);class St extends Tt.cp{constructor(t=null,e=null){super(St.SYMBOL,t,e)}static get label(){return"~"}static get longLabel(){return I.cp.t("search.matches")}static get description(){return I.cp.t("search.likeOperatorDescription")}}(0,Ot.c)(St,"SYMBOL","like");class $t{constructor(t,e){this.id=t,this.schema=e}get title(){return"string"===typeof this.schema.title?this.schema.title:(0,xt.formatKey)(this.id)}get description(){return this.isTemporal?I.cp.t("search.dateDescription"):""}get supported(){return this.isText||this.isNumeric||this.isBoolean}is(t){return this.types.includes(t)}get isSelection(){return Array.isArray(this.schema.enum)}get isText(){return this.is("string")}get isBoolean(){return this.is("boolean")}get isNumeric(){return this.is("number")||this.is("integer")}get isDate(){return this.isText&&"date"===this.schema.format}get isDateTime(){return this.isText&&"date-time"===this.schema.format}get isTemporal(){return this.isDate||this.isDateTime}get defaultValue(){return"undefined"!==typeof this.schema.default?this.schema.default:this.isSelection?this.schema.enum[0]:this.isTemporal?new Date:this.isNumeric?"undefined"!==typeof this.schema.minimum?this.schema.minimum:0:this.isText?"":!this.isBoolean&&null}get types(){return"string"===typeof this.schema.type?[this.schema.type]:Array.isArray(this.schema.type)?this.schema.type:[]}getOperators(t){let e=[Tt.gv,Tt.c3];return this.isNumeric||this.isTemporal?(e.push(Tt.a),e.push(Tt.Ip),e.push(Tt.wN),e.push(Tt.W0)):this.isText&&t.advancedComparison&&e.push(St),e}toText(){return this.id}toJSON(){return{property:this.id}}}class Bt{constructor(t=!1,e=!1){this.show=Boolean(t),this.loadApi=Boolean(e)}}async function It(t,e){let a,s={"Accept-Language":t.getters.acceptedLanguages};if(A.cp.isObject(e)){let r="string"===typeof e.method?e.method.toLowerCase():"get",i=t.getters.getRequestUrl(e.href);A.cp.hasText(e.type)&&(s.Accept=e.type),t.getters.isExternalUrl(i)||Object.assign(s,t.state.requestHeaders),A.cp.isObject(e.headers)&&Object.assign(s,e.headers),a={method:r,url:i,headers:s,data:e.body}}else if("string"===typeof e){let r=t.getters.getRequestUrl(e);t.getters.isExternalUrl(r)||Object.assign(s,t.state.requestHeaders),a={method:"get",url:r,headers:s}}else a=e;return await(0,Ct.c)(a)}function jt(t,e){return t instanceof B()&&(t=t.toString()),"string"===typeof t&&Array.isArray(e)?t.replace(e[1],e[0]):t}function Pt(t,e){return t instanceof B()&&(t=t.toString()),"string"===typeof t&&Array.isArray(e)?t.replace(e[0],e[1]):t}function Mt(t,e){return"function"===typeof t.preprocessSTAC&&(e=t.preprocessSTAC(e,t)),Object.freeze(e)}function Ut(t){var e;return[401,403].includes(null===t||void 0===t||null===(e=t.response)||void 0===e?void 0:e.status)}function Et(t,e){if(0==A.cp.size(e))return t;for(let a in e)t.hasQuery(a)||t.addQuery(a,e[a]);return t}var Ft=a(18460);function Dt(t,e){const a=()=>({url:"",title:t.catalogTitle,description:null,data:null,valid:null,parents:null,globalError:null,localRequestQueryParameters:{},stateQueryParameters:{language:null,asset:[],itemdef:[]},apiItems:[],apiItemsLink:null,apiItemsPagination:{},queryables:null}),r=()=>({queue:[],privateQueryParameters:{},authData:null,doAuth:[],conformsTo:[],dataLanguage:null,dataLanguages:[],apiCollections:[],apiItemsLoading:{},nextCollectionsLink:null});return new o.cp.Store({strict:!0,state:Object.assign({},t,a(),r(),{database:{},allowSelectCatalog:!t.catalogUrl,globalRequestQueryParameters:t.requestQueryParameters,uiLanguage:t.locale}),getters:{loading:t=>!t.url||!t.data||t.database[t.url]instanceof Bt,getApiItemsLoading:t=>e=>{let a="";return e instanceof Bt||(e instanceof S.c?a=e.id:"string"===typeof e&&(a=e),t.apiItemsLoading[a]||!1)},error:t=>t.database[t.url]instanceof Error?t.database[t.url]:null,getStac:t=>(e,a=!1)=>{if(e instanceof S.c)return e;if(A.cp.isObject(e)&&A.cp.hasText(e.href)&&(e=e.href),!A.cp.hasText(e))return null;let s=A.cp.toAbsolute(e,t.url),r=t.database[s];return r instanceof S.c||a&&r instanceof Error?r:null},displayCatalogTitle:(t,e)=>S.c.getDisplayTitle(e.root,t.catalogTitle),isCollection:t=>{var e;return(null===(e=t.data)||void 0===e?void 0:e.isCollection())||!1},isCatalog:t=>{var e;return(null===(e=t.data)||void 0===e?void 0:e.isCatalog())||!1},isCatalogLike:t=>{var e;return(null===(e=t.data)||void 0===e?void 0:e.isCatalogLike())||!1},isItem:t=>{var e;return(null===(e=t.data)||void 0===e?void 0:e.isItem())||!1},root:(t,e)=>e.getStac(e.rootLink),rootLink:t=>{var e;let a=null===(e=t.data)||void 0===e?void 0:e.getStacLinkWithRel("root");if(a)return a;if(t.catalogUrl)return A.cp.createLink(t.catalogUrl,"root");if(t.url&&t.data instanceof S.c&&t.data.getLinksWithRels(["conformance","service-desc","service-doc","data","search"]).length>0)return A.cp.createLink(t.url,"root");if(t.url){let e=B()(t.url),a=e.segment(-2);if(["collections","items"].includes(a))return e.segment(-1,""),e.segment(-1,""),"items"===a&&(e.segment(-1,""),e.segment(-1,"")),A.cp.createLink(e.toString(),"root")}return null},parentLink:t=>{if(t.data instanceof S.c){let e=t.data.getStacLinkWithRel("parent");if(e)return e}if(t.url){let e=B()(t.url),a=e.segment(-2);if(["collections","items"].includes(a))return e.segment(-1,""),e.segment(-1,""),A.cp.createLink(e.toString(),"parent")}return null},collectionLink:t=>{if(t.data instanceof S.c){var e;let a=null===(e=t.data)||void 0===e?void 0:e.getStacLinkWithRel("collection");if(a)return a}if(t.url){let e=B()(t.url),a=e.segment(-2);if("items"==a)return e.segment(-1,""),e.segment(-1,""),A.cp.createLink(e.toString(),"collection")}return null},supportsConformance:t=>e=>{if(!Array.isArray(e))return e;let a=e.map((t=>t.replaceAll("*","[^/]+").replace(/\/?#/,"/?#"))).join("|"),s=new RegExp("^("+a+")$");return Boolean(t.conformsTo.find((t=>t.match(s))))},supportsExtension:t=>e=>A.cp.supportsExtension(t.data,e),items:t=>t.apiItems.length>0?t.apiItems:t.data?t.data.getStacLinksWithRel("item"):[],catalogs:t=>{let e=Boolean(t.data instanceof S.c&&t.data.getApiCollectionsLink()&&t.apiCollections.length>0),a=Boolean(t.data instanceof S.c),s=!t.apiCatalogPriority||"collections"===t.apiCatalogPriority,r=!t.apiCatalogPriority||"childs"===t.apiCatalogPriority,i=[];return e&&s&&(i=i.concat(t.apiCollections)),a&&r&&(i=S.c.addMissingChildren(i,t.data)),i},hasMoreCollections:t=>Boolean(t.nextCollectionsLink),hasAssets:(t,e)=>Boolean(Object.values(e.assets).find((t=>A.cp.isObject(t)&&"string"===typeof t.href))),assets:(t,e)=>{var a;if(A.cp.isObject(null===(a=t.data)||void 0===a?void 0:a.assets)){if(t.showThumbnailsAsAssets)return t.data.assets;{let a={},s=e.thumbnails;for(let e in t.data.assets){let r=t.data.assets[e];s.includes(r)||(a[e]=r)}return a}}return{}},thumbnails:t=>t.data?t.data.getThumbnails(!0):[],additionalLinks:t=>t.data?t.data.getLinksWithOtherRels(At.OU).filter((t=>"preview"!==t.rel||!A.cp.canBrowserDisplayImage(t))):[],toBrowserPath:(t,e)=>a=>{A.cp.hasText(a)||(a="/");let s,r=A.cp.toAbsolute(jt(a,t.stacProxyUrl),t.url,!1);if(!t.allowSelectCatalog&&t.catalogUrl&&(s=r.relativeTo(t.catalogUrl)),"undefined"===typeof s||e.isExternalUrl(r,!1)){if(!t.allowExternalAccess)return r.toString();let e=["/external"],a=r.protocol();"https"!==a&&e.push(a+":"),e.push(r.authority()),e.push(r.path().replace(/^\//,""));let s=e.join("/"),i=r.query();return i&&(s+=`?${i}`),s}return"/"+s.toString()},fromBrowserPath:(t,e)=>a=>{const s=/^\/(search\/)?external\//;if(A.cp.hasText(a)&&"/"!==a)if(a.match(s)){let t,e=a.replace(s,"").split("/");t=e[0].endsWith(":")?e.shift():"https:",a=`${t}//${e.join("/")}`}else!t.allowSelectCatalog&&t.catalogUrl&&(a=A.cp.toAbsolute(a,t.catalogUrl,!1));else a=t.catalogUrl;return e.getRequestUrl(a,null,!0)},isExternalUrl:t=>(e,a=!0)=>{if(!t.catalogUrl)return!1;if(e instanceof B()||(e=B()(e)),a&&Array.isArray(t.allowedDomains)&&t.allowedDomains.includes(e.domain()))return!1;let s=e.relativeTo(t.catalogUrl);if(s.equals(e))return!0;let r=s.toString();return r.startsWith("//")||r.startsWith("../")},getRequestUrl:(t,e)=>(a,s=null,r=!1)=>{let i=A.cp.toAbsolute(Pt(a,t.stacProxyUrl),s||t.url,!1);return e.isExternalUrl(i)||(Et(i,t.privateQueryParameters),Et(i,t.globalRequestQueryParameters),r&&Et(i,t.localRequestQueryParameters)),i.toString()},acceptedLanguages:t=>{const e={en:.1};return Array.isArray(t.supportedLocales)&&t.supportedLocales.forEach((t=>e[t]=.2)),A.cp.hasText(t.fallbackLocale)&&(e[t.fallbackLocale]=.5),Array.isArray(navigator.languages)&&navigator.languages.forEach((t=>e[t]=.7)),A.cp.hasText(t.locale)&&(e[t.locale]=1),Object.entries(e).sort(((t,e)=>t[1]>e[1]?-1:t[1]e>=1?t:`${t};q=${e}`)).join(",")}},mutations:{config(t,e){for(let a in e){let s=e[a];switch(a){case"catalogTitle":t.catalogTitle=s;break;case"catalogUrl":"function"===typeof s?t.catalogUrl=s():"string"===typeof s&&(t.catalogUrl=s);break;case"stacProxyUrl":"string"===typeof s&&s.includes(";")?t[a]=s.split(";"):t[a]=s;break;case"crossOriginMedia":t.crossOriginMedia=["anonymous","use-credentials"].includes(s)?s:null;break;case"cardViewSort":switch(s){case"asc":t.cardViewSort=1;break;case"desc":t.cardViewSort=-1;break;default:t.cardViewSort=0}break;default:t[a]=s}}},languages(t,{uiLanguage:e,dataLanguage:a}){t.dataLanguage=a||null,t.uiLanguage=e||null},setQueryParameter(t,{type:e,key:a,value:r}){e=`${e}QueryParameters`,"undefined"===typeof r?s.cp.delete(t[e],a):s.cp.set(t[e],a,r)},setRequestHeader(t,{key:e,value:a}){"undefined"===typeof a?s.cp.delete(t.requestHeaders,e):s.cp.set(t.requestHeaders,e,a)},requestAuth(t,e){"function"===typeof e?t.doAuth.push(e):t.doAuth=[]},setAuthData(t,e){t.authData=e},setCatalogUrlData(t,e){t.catalogUrlData=e},openCollapsible(t,{type:e,uid:a}){const s=t.stateQueryParameters[e].indexOf(a);-1===s&&t.stateQueryParameters[e].push(a)},state(t,e){t.stateQueryParameters=e},closeCollapsible(t,{type:e,uid:a}){const r=t.stateQueryParameters[e].indexOf(a);r>-1&&s.cp.delete(t.stateQueryParameters[e],r)},updateLoading(t,{url:e,show:a,loadApi:r}){let i=t.database[e];s.cp.set(i,"show",a||i.show),s.cp.set(i,"loadApi",r||i.loadApi)},loading(t,{url:e,loading:a}){s.cp.set(t.database,e,a),a.show&&(t.url=e)},loaded(t,{url:e,data:a}){s.cp.set(t.database,e,Mt(t,a))},clear(t,e){s.cp.delete(t.database,e)},resetCatalog(e,s){Object.assign(e,r()),Object.assign(e,a()),e.supportedLocales.includes(e.locale)||(e.locale=t.locale),s&&(e.catalogUrl=t.catalogUrl,e.catalogTitle=t.catalogTitle,e.database={})},resetPage(t){Object.assign(t,a())},showPage(t,{url:e,title:a,description:s,stac:r}){if(r||(r=t.database[e]||null),t.url=e||null,t.data=r instanceof S.c?r:null,t.valid=null,t.description=s,a)t.title=a;else if(t.title=S.c.getDisplayTitle(t.data,t.catalogTitle),t.data){let e=t.data.getMetadata("description");A.cp.hasText(e)&&(t.description=e)}if(t.data){let e=t.data.isItem()?t.data.properties:t.data,a=Array.isArray(e.languages)?e.languages.slice():[];A.cp.isObject(e.language)&&a.unshift(e.language),t.dataLanguages=a.filter((t=>A.cp.isObject(t)&&"string"===typeof t.code))}},errored(t,{url:e,error:a}){a instanceof Error||(a=new Error(a)),s.cp.set(t.database,e,a)},valid(t,e){t.valid=e},queue(t,e){t.queue.push(e)},unqueue(t,e){let a=t.queue.indexOf(e);-1!==a&&t.queue.splice(a,1)},removeFromQueue(t,e){t.queue.splice(0,e)},setConformanceClasses(t,e){Array.isArray(e)&&(t.conformsTo=e)},setApiItemsLink(t,e){t.apiItemsLink=e},toggleApiItemsLoading(t,e=""){t.apiItemsLoading[e]?s.cp.delete(t.apiItemsLoading,e):s.cp.set(t.apiItemsLoading,e,!0)},setApiItems(t,{data:e,stac:a,show:s}){if(!A.cp.isObject(e)||!Array.isArray(e.features))return;let r=e.features.map((e=>Mt(t,e)));s&&(t.apiItems=r);let i=A.cp.getLinksWithRels(e.links,At.ei),n={};for(let o of i){let t="previous"===o.rel?"prev":o.rel;n[t]=o}s&&(t.apiItemsPagination=n),a instanceof S.c&&a.setApiData(r,n.next,n.prev)},addApiCollections(t,{data:e,stac:a,show:s}){if(!A.cp.isObject(e)||!Array.isArray(e.collections))return;let r=e.collections.map((e=>Mt(t,e))),i=A.cp.getLinkWithRel(e.links,"next");s&&(t.nextCollectionsLink=i,t.apiCollections=t.apiCollections.concat(r)),a instanceof S.c&&a.setApiData(r,i)},resetApiItems(t){t.apiItems=[],t.apiItemsPagination={}},parents(t,e){t.parents=e},showGlobalError(t,e){console.error(e),t.globalError=e},addQueryables(t,e){A.cp.isObject(e)&&A.cp.isObject(e.properties)?t.queryables=Object.entries(e.properties).map((([t,e])=>new $t(t,e))):t.queryables=[]}},actions:{async switchLocale(t,{locale:e,userSelected:a}){if(t.commit("config",{locale:e}),t.state.storeLocale&&a)try{window.localStorage.setItem("locale",e)}catch(o){console.error(o)}let s=(0,Ft.YV)(t.state.supportedLocales,e,t.state.fallbackLocale),r=t.state.dataLanguages.map((t=>t.code)),i=t.state.dataLanguages.length>0?t.state.dataLanguages[0].code:s,n=(0,Ft.YV)(r,e,i);t.commit("languages",{dataLanguage:n,uiLanguage:s}),t.commit("setQueryParameter",{type:"state",key:"language",value:e})},async setCatalogUrl(t,e){A.cp.hasText(e)||(e=null),t.commit("setCatalogUrlData",e)},async setAuth(t,e){A.cp.hasText(e)||(e=null),t.commit("setAuthData",e);let a=t.state.authConfig,s=a.key;e&&("Bearer"===a.formatter?e=`Bearer ${e}`:"function"===typeof a.formatter&&(e=a.formatter(e))),A.cp.hasText(e)||(e=void 0),"query"===a.type?t.commit("setQueryParameter",{type:"private",key:s,value:e}):"header"===a.type&&t.commit("setRequestHeader",{key:s,value:e})},async loadBackground(t,e){let a=t.state.queue.slice(0,e);if(a.length>0){let s=[];for(let e of a)s.push(t.dispatch("load",{url:e}));return t.commit("removeFromQueue",e),await Promise.all(s)}},async loadParents(t){if(!(t.state.data instanceof S.c))return void t.commit("parents",[]);let e=[],a=t.state.data;while(a){let s=a.getLinkWithRel("parent")||a.getLinkWithRel("root");if(!s)break;let r=A.cp.toAbsolute(s.href,a.getAbsoluteUrl());await t.dispatch("load",{url:r,loadApi:!0});let i=t.getters.getStac(r,!0);if(i instanceof Error)return void t.commit("parents",i);if(i===a)break;e.push(i),a=i}t.commit("parents",e)},async load(t,a){let s,{url:r,fromBrowser:i,show:n,loadApi:o,loadRoot:l,force:c}=a;i?(s=r.startsWith("/")?r:"/"+r,r=t.getters.fromBrowserPath(r)):(r=A.cp.toAbsolute(r,t.state.url),s=t.getters.toBrowserPath(r)),l||"/"===s||!t.state.catalogUrl||t.getters.getStac(t.state.catalogUrl)||await t.dispatch("load",{url:t.state.catalogUrl,loadApi:!0,loadRoot:!0}),c&&t.commit("clear",r);let u=new Bt(n,o),d=t.state.database[r];if(d instanceof Bt)t.commit("updateLoading",{url:r,show:n,loadApi:o});else{if(!d||d instanceof S.c&&d.isPotentiallyIncomplete()){t.commit("loading",{url:r,loading:u});try{let a=await It(t,r);if(!A.cp.isObject(a.data))throw new A.UB(I.cp.t("errors.invalidJsonObject"));if(d=new S.c(a.data,r,s),n){let a=d.getLocaleLink(t.state.dataLanguage);if(a)return void e.replace(t.getters.toBrowserPath(a.href))}if(t.commit("loaded",{url:r,data:d}),!t.getters.root){let e=d.getLinkWithRel("root");e&&t.commit("config",{catalogUrl:A.cp.toAbsolute(e.href,r)})}let i=d.getStacLinkWithRel("conformance");Array.isArray(d.conformsTo)&&d.conformsTo.length>0?t.commit("setConformanceClasses",d.conformsTo):i&&await t.dispatch("loadOgcApiConformance",i)}catch(p){if(t.state.authConfig&&Ut(p))return t.commit("clear",r),void t.commit("requestAuth",(()=>t.dispatch("load",a)));console.error(p),t.commit("errored",{url:r,error:p})}}if(u.loadApi&&d instanceof S.c){if(d.getApiCollectionsLink()){let e={stac:d,show:u.show};try{await t.dispatch("loadNextApiCollections",e)}catch(p){t.state.authConfig&&Ut(p)?t.commit("requestAuth",(()=>t.dispatch("loadNextApiCollections",e))):t.commit("showGlobalError",{message:I.cp.t("errors.loadApiCollectionsFailed"),error:p})}}if(d.getApiItemsLink()){let e={stac:d,show:u.show};try{await t.dispatch("loadApiItems",e)}catch(p){t.state.authConfig&&Ut(p)?t.commit("requestAuth",(()=>t.dispatch("loadApiItems",e))):t.commit("showGlobalError",{message:I.cp.t("errors.loadApiItemsFailed"),error:p})}}}u.show&&t.commit("showPage",{url:r})}},async loadApiItems(t,{link:e,stac:a,show:s,filters:r}){let i=a instanceof S.c?a.id:"";t.commit("toggleApiItemsLoading",i);try{let n=t.state.url;a instanceof S.c&&(e=a.getApiItemsLink(),n=a.getAbsoluteUrl()),A.cp.isObject(r)||(r={}),"number"!==typeof r.limit&&(r.limit=t.state.itemsPerPage),e=A.cp.addFiltersToLink(e,r);let o=await It(t,e);if(A.cp.isObject(o.data)&&Array.isArray(o.data.features))return o.data.features=o.data.features.map((e=>{try{if(!A.cp.isObject(e)||"Feature"!==e.type)return null;let s,r=A.cp.getLinkWithRel(e.links,"self");if(null!==r&&void 0!==r&&r.href)s=A.cp.toAbsolute(r.href,n);else{if("undefined"===typeof e.id)return null;{var a;let r=null===(a=t.getters.root)||void 0===a?void 0:a.getApiCollectionsLink();if(n)s=A.cp.toAbsolute(`items/${e.id}`,n);else if(r)s=A.cp.toAbsolute(`${i}/items/${e.id}`,r.href);else{if(!t.state.catalogUrl)return null;s=A.cp.toAbsolute(`collections/${i}/items/${e.id}`,t.state.catalogUrl)}}}let o=t.getters.getStac(s);return o||(o=new S.c(e,s,t.getters.toBrowserPath(s)),o.markPotentiallyIncomplete(),t.commit("loaded",{data:o,url:s}),o)}catch(s){return console.error(s),null}})).filter((t=>t instanceof S.c)),s&&t.commit("setApiItemsLink",e),t.commit("setApiItems",{data:o.data,stac:a,show:s}),t.commit("toggleApiItemsLoading",i),o;throw new A.UB(I.cp.t("errors.invalidStacItems"))}catch(n){throw t.commit("toggleApiItemsLoading",i),n}},async loadNextApiCollections(t,{stac:e,show:a}){let s;if(e){if(t.state.apiCollections.length>0)return;s=e.getLinkWithRel("data")}else e=t.state.data,s=t.state.nextCollectionsLink;if(!s)return;let r=await It(t,s);if(!A.cp.isObject(r.data)||!Array.isArray(r.data.collections))throw new A.UB(I.cp.t("errors.invalidStacCollections"));r.data.collections=r.data.collections.map((a=>{let s,r=A.cp.getLinkWithRel(a.links,"self");s=null!==r&&void 0!==r&&r.href?A.cp.toAbsolute(r.href,t.state.url||e.getAbsoluteUrl()):A.cp.toAbsolute(`collections/${a.id}`,t.state.catalogUrl||e.getAbsoluteUrl());let i=t.getters.getStac(s);return i||(i=new S.c(a,s,t.getters.toBrowserPath(s)),i.markPotentiallyIncomplete(),t.commit("loaded",{data:i,url:s}),i)})),t.commit("addApiCollections",{data:r.data,stac:e,show:a})},async loadOgcApiConformance(t,e){let a=await It(t,e);A.cp.isObject(a.data)&&Array.isArray(a.data.conformsTo)&&t.commit("setConformanceClasses",a.data.conformsTo)},async loadQueryables(t,{stac:e,refParser:a=null}){let s;try{let i=e.getLinksWithRels(At.AV).find((t=>A.cp.isMediaType(t.type,A.WE,!0))),n=A.cp.isObject(i)?i.href:A.cp.toAbsolute("queryables",e.getAbsoluteUrl()),o=await It(t,n);if(s=o.data,a)try{s=await a.dereference(s)}catch(r){console.error(r)}}catch(r){console.log("Queryables not supported by API")}t.commit("addQueryables",s)},async loadGeoJson(t,e){try{let a=await It(t,e);return a.data}catch(a){return null}},async retryAfterAuth(t){let e=e=>t.commit("showGlobalError",{error:e,message:I.cp.t("errors.authFailed")});for(let s of t.state.doAuth)try{let t=s();t instanceof Promise&&t.catch(e)}catch(a){e(a)}},async validate(t,e){if("boolean"!==typeof t.state.valid)try{var a,s;let r=B()("https://api.staclint.com/url");r.addSearch("stac_url",e);let i=await Ct.c.get(r.toString());t.commit("valid",Boolean(null===(a=i.data)||void 0===a||null===(s=a.body)||void 0===s?void 0:s.valid_stac))}catch(r){t.commit("valid",r)}}}})}var qt=Dt,Rt=a(55547),Vt=a(8652),zt=a(49864),Nt=a(8148),Wt=a(41648),Qt=a(40640),Ht=a(30656),Gt=a(74042),Yt=a(32960),Jt=(a(39224),a(68916)),Kt=function(){var t=this,e=t._self._c;return e("b-row",[e("b-col",{attrs:{md:"12"}},[e("Source",{staticClass:"float-right",attrs:{title:t.title,stacUrl:t.url,stacVersion:t.stacVersion}}),e("h1",[t.icon?[e("img",{staticClass:"icon mr-2",attrs:{src:t.icon.href,alt:t.icon.title,title:t.icon.title}})]:t._e(),e("span",{staticClass:"title"},[t._v(t._s(t.title))])],2),t.url||t.isSearchPage()?e("p",{staticClass:"lead"},[t.containerLink?e("i18n",{staticClass:"in mr-3",attrs:{tag:"span",path:"in"},scopedSlots:t._u([{key:"catalog",fn:function(){return[e("StacLink",{attrs:{data:t.containerLink}})]},proxy:!0}],null,!1,1458487365)}):t._e(),e("b-button-group",[t.parentLink?e("b-button",{attrs:{to:t.toBrowserPath(t.parentLink.href),title:t.parentLinkTitle,variant:"outline-primary",size:"sm"}},[e("b-icon-arrow-90deg-up"),t._v(" "),e("span",{staticClass:"button-label prio"},[t._v(t._s(t.$t("goToParent.label")))])],1):t._e(),t.collectionLink?e("b-button",{attrs:{to:t.toBrowserPath(t.collectionLink.href),title:t.collectionLinkTitle,variant:"outline-primary",size:"sm"}},[e("b-icon-folder-symlink"),t._v(" "),e("span",{staticClass:"button-label prio"},[t._v(t._s(t.$t("goToCollection.label")))])],1):t._e(),e("b-button",{directives:[{name:"b-toggle",rawName:"v-b-toggle.sidebar",modifiers:{sidebar:!0}}],attrs:{variant:"outline-primary",size:"sm",title:t.$t("browse")},on:{click:function(e){return t.$emit("enableSidebar")}}},[e("b-icon-book"),t._v(" "),e("span",{staticClass:"button-label prio"},[t._v(t._s(t.$t("browse")))])],1),t.searchBrowserLink?e("b-button",{attrs:{variant:"outline-primary",size:"sm",to:t.searchBrowserLink,title:t.$t("search.title"),pressed:t.isSearchPage()}},[e("b-icon-search"),t._v(" "),e("span",{staticClass:"button-label prio"},[t._v(t._s(t.$t("search.title")))])],1):t._e(),t.authConfig?e("b-button",{attrs:{variant:"outline-primary",size:"sm",title:t.$t("authentication.button.title")},on:{click:t.auth}},[t.authData?[e("b-icon-lock"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("authentication.button.authenticated")))])]:[e("b-icon-unlock"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("authentication.button.authenticate")))])]],2):t._e()],1)],1):t._e()],1)],1)},Xt=[],Zt=a(22308),te=function(){var t=this,e=t._self._c;return e("div",{staticClass:"share mt-1"},[e("b-button-group",[t.stacUrl?e("b-button",{attrs:{size:"sm",variant:"outline-primary",id:"popover-link",title:t.$t("source.detailsAboutSource")}},[e("b-icon-link"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("source.label")))])],1):t._e(),e("b-button",{attrs:{size:"sm",variant:"outline-primary",id:"popover-share",title:t.$t("source.share.withOthers")}},[e("b-icon-share"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("source.share.label")))])],1),e("b-dropdown",{attrs:{size:"sm",variant:"outline-primary",right:"",title:t.$t("source.language.switch")},scopedSlots:t._u([{key:"button-content",fn:function(){return[e("b-icon-flag"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("source.language.label",{currentLanguage:t.currentLanguage})))])]},proxy:!0}])},t._l(t.languages,(function(a){return e("b-dropdown-item",{key:a.code,staticClass:"lang-item",on:{click:function(e){return t.switchLocale({locale:a.code,userSelected:!0})}}},[t.locale===a.code?e("b-icon-check"):e("b-icon-blank"),e("span",{staticClass:"title"},[t._v(" "+t._s(a.native)+" "),a.global&&a.global!==a.native?[t._v(" / "+t._s(a.global))]:t._e()],2),!t.supportsLanguageExt||a.ui&&a.data?t._e():e("b-icon-exclamation-triangle",{staticClass:"ml-2",attrs:{title:a.ui?t.$t("source.language.onlyUI"):t.$t("source.language.onlyData")}})],1)})),1)],1),t.stacUrl?e("b-popover",{attrs:{target:"popover-link",triggers:"focus",placement:"bottom",container:"stac-browser",title:t.$t("source.title")},on:{show:t.validate}},[t.stacVersion?[e("b-row",[e("b-col",{attrs:{cols:"2"}},[t._v(t._s(t.$t("source.stacVersion")))]),e("b-col",[t._v(t._s(t.stacVersion))])],1),t.canValidate?e("b-row",[e("b-col",{attrs:{cols:"2"}},[t._v(t._s(t.$t("source.valid")))]),e("b-col",[null===t.valid?e("b-spinner",{attrs:{label:t.$t("source.validating"),small:""}}):!0===t.valid?[t._v("✔️")]:!1===t.valid?[t._v("❌")]:[t._v("$t('source.validationNA')")]],2)],1):t._e(),e("hr")]:t._e(),e("Url",{attrs:{id:"stacUrl",url:t.stacUrl,label:t.$t("source.locatedAt")}})],2):t._e(),e("b-popover",{attrs:{target:"popover-share",triggers:"focus",placement:"bottom",container:"stac-browser",title:t.$t("source.share.title")}},[e("Url",{attrs:{id:"browserUrl",url:t.browserUrl(),label:t.$t("source.share.sharePageWithOthers"),open:!1}}),e("hr"),e("b-button",{staticClass:"twitter mr-1",attrs:{href:t.twitterUrl}},[e("b-icon-twitter"),t._v(" "+t._s(t.$t("source.share.twitter")))],1),e("b-button",{attrs:{variant:"dark",href:t.mailTo}},[e("b-icon-envelope"),t._v(" "+t._s(t.$t("source.share.email")))],1)],1)],1)},ee=[],ae=a(79808),se=a(24692),re=a(90280),ie=function(){var t=this,e=t._self._c;return e("b-form-group",{attrs:{label:t.label,"label-for":t.id}},[e("b-input-group",{attrs:{size:"sm"}},[e("b-form-input",{ref:"input",attrs:{id:t.id,value:t.url,readonly:""}}),e("b-input-group-append",[e("CopyButton",{attrs:{copyText:t.url,variant:"primary"}}),t.open?e("b-button",{attrs:{href:t.url,target:"_blank",variant:"primary",title:t.$t("open")}},[e("b-icon-arrow-up-right-square")],1):t._e()],1)],1)],1)},ne=[],oe=a(60592),le=a(46584),ce=a(5276),ue=a(86584),de={name:"Share",components:{BFormGroup:oe.K,BFormInput:le.U,BIconArrowUpRightSquare:et.iEg,BInputGroup:ce.w,BInputGroupAppend:ue.w,CopyButton:()=>a.e(3772).then(a.bind(a,83772))},props:{id:{type:String,required:!0},url:{type:String,required:!0},label:{type:String,required:!0},open:{type:Boolean,default:!0}}},pe=de,he=(0,m.c)(pe,ie,ne,!1,null,"433de75e",null),fe=he.exports;const me="https://stac-extensions.github.io/language/v1.*/schema.json";var ge={name:"Source",components:{BDropdown:ae.W,BDropdownItem:se.o,BIconBlank:et.PJ6,BIconCheck:et.ggS,BIconEnvelope:et.iGM,BIconExclamationTriangle:et.WGh,BIconFlag:et._ql,BIconLink:et.Ibc,BIconShare:et.GgF,BIconTwitter:et.Ehl,BPopover:re.K,Url:fe},props:{title:{type:String,required:!0},stacUrl:{type:String,default:null},stacVersion:{type:String,default:null}},computed:{...(0,o.ys)(["dataLanguages","locale","privateQueryParameters","supportedLocales","stacLint","stacProxyUrl","uiLanguage","valid"]),...(0,o.gV)(["supportsExtension"]),currentLanguage(){let t=this.languages.find((t=>t.code===this.locale));return t?t.native:"-"},canValidate(){if(!this.stacLint||"string"!==typeof this.stacUrl)return!1;if(A.cp.size(this.privateQueryParameters)>0)return!1;if(Array.isArray(this.stacProxyUrl))return!1;let t=B()(this.stacUrl),e=t.hostname().toLowerCase();return"localhost"!==e&&!e.startsWith("127.")&&"::1"!==e},message(){return this.$t("source.share.message",{title:this.title,url:this.browserUrl()})},twitterUrl(){let t=encodeURIComponent(this.message);return`https://twitter.com/intent/tweet?text=${t}`},mailTo(){let t=encodeURIComponent(this.title),e=encodeURIComponent(this.message);return`mailto:?subject=${t}&body=${e}`},supportsLanguageExt(){return this.supportsExtension(me)},languages(){let t=[];for(let e of this.supportedLocales)t.push({code:e,native:this.$t(`languages.${e}.native`),global:this.$t(`languages.${e}.global`),ui:!0});for(let e of this.dataLanguages){if(!A.cp.isObject(e)||!e.code||this.supportedLocales.includes(e.code))continue;let a={code:e.code};a.native=e.name||e.alternate||e.code,a.global=e.alternate||e.name||e.code,a.data=!0,t.push(a)}if(this.supportsExtension(me)){const e=(0,Ft.IB)(this.supportedLocales),a=(0,Ft.IB)(this.dataLanguages.map((t=>t.code)));for(let s of t)s.ui||(s.ui=Boolean((0,Ft.YV)(e,s.code,null))),s.data||(s.data=Boolean((0,Ft.YV)(a,s.code,null)))}return t.sort(((t,e)=>t.global.localeCompare(e.global,this.uiLanguage)))}},methods:{...(0,o.ae)(["switchLocale"]),async validate(){await this.$store.dispatch("validate",this.stacUrl)},browserUrl(){return window.location.toString()}}},be=ge,ye=(0,m.c)(be,te,ee,!1,null,"0106123f",null),ve=ye.exports,we={name:"StacHeader",components:{BIconArrow90degUp:et.wJP,BIconBook:et.A1g,BIconFolderSymlink:et.CQE,BIconSearch:et.i86,BIconLock:et.NAb,BIconUnlock:et.Oc2,StacLink:Zt["default"],Source:ve},computed:{...(0,o.ys)(["allowSelectCatalog","authConfig","authData","catalogUrl","data","url","title"]),...(0,o.gV)(["root","parentLink","collectionLink","toBrowserPath"]),stacVersion(){var t;return null===(t=this.data)||void 0===t?void 0:t.stac_version},collectionLinkTitle(){return this.collectionLink&&A.cp.hasText(this.collectionLink.title)?this.$t("goToCollection.descriptionWithTitle",this.collectionLink):this.$t("goToCollection.description")},parentLinkTitle(){return this.parentLink&&A.cp.hasText(this.parentLink.title)?this.$t("goToParent.descriptionWithTitle",this.parentLink):this.$t("goToParent.description")},icon(){if(this.data instanceof S.c){let t=this.data.getIcons();if(t.length>0)return t[0]}return null},searchBrowserLink(){let t,e;return this.root&&(t=this.root.getSearchLink()),this.data!==this.root&&this.data instanceof S.c&&(e=this.data.getSearchLink()),e?`/search${this.data.getBrowserPath()}`:t?this.allowSelectCatalog?`/search${this.root.getBrowserPath()}`:"/search":null},containerLink(){return this.catalogUrl&&this.url===this.catalogUrl?null:this.root?A.cp.equalUrl(this.root.getAbsoluteUrl(),this.url)?null:{href:this.root.getAbsoluteUrl(),rel:"root",title:S.c.getDisplayTitle(this.root)}:this.collectionLink||this.parentLink}},methods:{isSearchPage(){return"search"===this.$router.currentRoute.name},auth(){this.$store.commit("requestAuth",(()=>this.$store.dispatch("load",{url:this.url,loadApi:!0,show:!0,force:!0})))}}},_e=we,ke=(0,m.c)(_e,Kt,Xt,!1,null,"d2d6115c",null),Le=ke.exports,Ce=a(16184),Ae=a.n(Ce);s.cp.use(Rt.C),s.cp.use(Vt.U),s.cp.use(zt.MF),s.cp.use(Nt.W),s.cp.use(Wt.OH),s.cp.use(Qt.Q8),s.cp.use(Ht.W),s.cp.directive("b-toggle",Gt.W),s.cp.directive("b-visible",Yt.y),s.cp.use(n.cp);const xe=new n.cp({mode:l.c.historyMode,base:l.c.pathPrefix,routes:Lt(l.c)});s.cp.use(o.cp);const Te=qt(l.c,xe);let Oe={},Se={};for(let Me in l.c)Oe[Me]={default:["object","function"].includes(typeof l.c[Me])?()=>l.c[Me]:l.c[Me]},Se[Me]={immediate:!0,handler:function(t){this.$store.commit("config",{[Me]:t})}};var $e={name:"StacBrowser",router:xe,store:Te,components:{Authentication:()=>a.e(8980).then(a.bind(a,68980)),ErrorAlert:b,Sidebar:()=>a.e(9156).then(a.bind(a,29156)),StacHeader:Le},props:{...Oe},data(){return{sidebar:!1,error:null,onDataLoaded:null}},computed:{...(0,o.ys)(["allowSelectCatalog","data","dataLanguage","description","doAuth","globalError","stateQueryParameters","title","uiLanguage","url"]),...(0,o.ys)({catalogUrlFromVueX:"catalogUrl",detectLocaleFromBrowserFromVueX:"detectLocaleFromBrowser",fallbackLocaleFromVueX:"fallbackLocale",supportedLocalesFromVueX:"supportedLocales",storeLocaleFromVueX:"storeLocale"}),...(0,o.gV)(["displayCatalogTitle","fromBrowserPath","isExternalUrl","root","supportsConformance","toBrowserPath"]),browserVersion(){return"3.0.2"}},watch:{...Se,title(t){document.title=t},description(t){let e=document.getElementById("meta-description");e&&e.setAttribute("content",A.cp.summarizeMd(t,200))},uiLanguage:{immediate:!0,async handler(t){t&&(Ae().locales=[t],Ae().translate=I.O8,await(0,I.MB)(t),this.$root.$i18n.locale=t,document.documentElement.setAttribute("lang",t))}},dataLanguage:{immediate:!0,async handler(t){if(t&&this.data instanceof S.c){let e=this.data.getLocaleLink(t);if(e){let t=Object.assign({},this.stateQueryParameters);this.$router.push(this.toBrowserPath(e.href)),this.$store.commit("state",t)}else if(this.supportsConformance(I.UB)){let t=this.url;this.$store.commit("resetCatalog",!0),await this.$store.dispatch("load",{url:t,loadApi:!0,show:!0})}}}},catalogUrlFromVueX(t){t&&this.$store.dispatch("load",{url:t,loadApi:!0})},stateQueryParameters:{deep:!0,handler(){let t={};for(const[e,a]of Object.entries(this.$route.query))e.startsWith(".")||(t[e]=a);for(const[e,a]of Object.entries(this.stateQueryParameters)){let s=`.${e}`;Array.isArray(a)?a.length>0&&(t[s]=a.join(",")):null!==a&&(t[s]=a)}this.$router.replace({query:t}).catch((t=>{if(!n.cp.isNavigationFailure(t,n.cp.NavigationFailureType.duplicated))throw Error(t)}))}},root(t,e){const a=["apiCatalogPriority","authConfig","cardViewMode","cardViewSort","crossOriginMedia","defaultThumbnailSize","displayGeoTiffByDefault","showThumbnailsAsAssets","stacLint"];let s=!t||e&&A.cp.isObject(e["stac_browser"]),r=t&&A.cp.isObject(t["stac_browser"]);for(let i of a){let e;s&&(e=l.c[i]),r&&"undefined"!==typeof t["stac_browser"][i]&&(e=t["stac_browser"][i]),("stacLint"!==i||l.c.stacLint)&&("undefined"!==typeof e&&this.$store.commit("config",{[i]:e}))}},data(t){this.onDataLoaded&&t instanceof S.c&&this.onDataLoaded()}},beforeCreate(){const t=Jt.parse(document.cookie);let e,a="SETTING_PLACEHOLDER";"object"===typeof a&&a.constructor===Object?void 0===a["catalogUrl"]&&(a["catalogUrl"]=null):a={catalogUrl:null},console.log(`MAIN_SETTING: ${JSON.stringify(a)}`),this.$store.dispatch("setCatalogUrl",a["catalogUrl"]),void 0!==t["unity_token"]&&(e=t["unity_token"]),void 0!==t["oidc_access_token"]&&void 0===e&&(e=t["oidc_access_token"]),void 0!==e&&this.$store.dispatch("setAuth",e)},created(){this.$router.onReady((()=>{this.detectLocale(),this.parseQuery(this.$route)})),this.$router.afterEach(((t,e)=>{if(t.path===e.path)return;let a="resetPage";if(this.allowSelectCatalog&&t.path){let e=this.fromBrowserPath(t.path);this.isExternalUrl(e)&&(a="resetCatalog")}this.$store.commit(a),this.parseQuery(t)}))},mounted(){this.$root.$on("error",this.showError),setInterval((()=>this.$store.dispatch("loadBackground",3)),200)},methods:{...(0,o.ae)(["switchLocale"]),detectLocale(){let t;if(this.storeLocaleFromVueX)try{t=window.localStorage.getItem("locale")}catch(e){console.error(e)}if(!t&&this.detectLocaleFromBrowserFromVueX&&Array.isArray(navigator.languages)){const e=(0,Ft.IB)(this.supportedLocalesFromVueX);for(let a of navigator.languages){const s=(0,Ft.YV)(e,a,null);if(s){t=s;break}}}t&&this.supportedLocalesFromVueX.includes(t)&&(this.switchLocale({locale:t}),this.data||(this.onDataLoaded=()=>{this.switchLocale({locale:t}),this.onDataLoaded=null}))},parseQuery(t){var e;let a={};if("history"===this.historyMode){let e=B()(t.hash.replace(/^#/,""));a=e.query(!0)}let s=Object.assign({},t.query,a),r={};for(let i in s){let t=s[i];if(i.startsWith("~"))r.private=A.cp.isObject(r.private)?r.private:{},r.private[i.substr(1)]=t,delete s[i];else if(i.startsWith(".")){let e=i.substr(1);r.state=A.cp.isObject(r.state)?r.state:{},Array.isArray(this.stateQueryParameters[e])&&!Array.isArray(t)&&(t=t.split(",")),r.state[e]=t}else A.cp.isObject(r.localRequest)||(r.localRequest={}),r.localRequest[i]=t}if(A.cp.size(r)>0)for(let i in r)for(let t in r[i])this.$store.commit("setQueryParameter",{type:i,key:t,value:r[i][t]});null!==r&&void 0!==r&&null!==(e=r.state)&&void 0!==e&&e.language&&this.switchLocale({locale:r.state.language}),A.cp.size(r.private)>0&&this.$router.replace({query:s})},showError(t,e){this.$store.commit("showGlobalError",{error:t,message:e})},hideError(){this.$store.commit("showGlobalError",null)}}},Be=$e,Ie=(0,m.c)(Be,r,i,!1,null,null,null),je=Ie.exports;function Pe(){return(0,I.AF)().then((()=>new s.cp({i18n:I.cp,render:t=>t(je)}).$mount("#stac-browser")))}s.cp.config.productionTip=!1,Pe()},98864:function(t,e,a){"use strict";a.d(e,{Ip:function(){return p},W0:function(){return u},a:function(){return d},c3:function(){return l},cp:function(){return n},gv:function(){return o},wN:function(){return c}});var s=a(93808),r=a(75760),i=a(60488);class n extends i.c{constructor(t,e=null,a=null){super(t,[e,a])}clone(t){return new this.constructor(this.operator,this.args[0],t)}static create(t,e,a){return["=","==","==="].includes(e)?new o(t,a):["<>","!=","!=="].includes(e)?new l(t,a):">="===e?new u(t,a):">"===e?new c(t,a):"<="===e?new p(t,a):"<"===e?new d(t,a):void 0}}class o extends n{constructor(t=null,e=null){super(o.SYMBOL,t,e)}static get longLabel(){return r.cp.t("search.equalTo")}}(0,s.c)(o,"SYMBOL","=");class l extends n{constructor(t=null,e=null){super(l.SYMBOL,t,e)}static get longLabel(){return r.cp.t("search.notEqualTo")}}(0,s.c)(l,"SYMBOL","<>");class c extends n{constructor(t=null,e=null){super(c.SYMBOL,t,e)}static get longLabel(){return r.cp.t("search.greaterThan")}}(0,s.c)(c,"SYMBOL",">");class u extends n{constructor(t=null,e=null){super(u.SYMBOL,t,e)}static get longLabel(){return r.cp.t("search.greaterThanEqual")}}(0,s.c)(u,"SYMBOL",">=");class d extends n{constructor(t=null,e=null){super(d.SYMBOL,t,e)}static get longLabel(){return r.cp.t("search.lessThan")}}(0,s.c)(d,"SYMBOL","<");class p extends n{constructor(t=null,e=null){super(p.SYMBOL,t,e)}static get longLabel(){return r.cp.t("search.lessThanEqual")}}(0,s.c)(p,"SYMBOL","<=")},60488:function(t,e,a){"use strict";a.d(e,{c:function(){return s}});class s{constructor(t,e=[]){this.operator=t,this.args=e}toText(){let t=this.operator.toUpperCase();return this.args.map((t=>t.toText())).join(` ${t} `)}toJSON(){return{op:this.operator,args:this.args.map((t=>t.toJSON()))}}static get description(){return""}static get label(){return this.SYMBOL}static get longLabel(){return this.label}}},82124:function(t,e,a){"use strict";a(83248);var s=a(40848),r=a(14140),i=a.n(r),n=a(18460);let o=0;class l{constructor(t,e,a,s=!0){this._id=o++,this._url=e,this._path=a,this._apiChildrenListeners={},this._incomplete=!1,this._apiChildren={list:[],prev:!1,next:!1},s&&("FeatureCollection"===t.type?t.features=t.features.map((t=>i().item(t,!1))):t=i().stac(t,!1));for(let r in t)"undefined"===typeof this[r]&&(this[r]=t[r])}isPotentiallyIncomplete(){return this._incomplete}markPotentiallyIncomplete(){this._incomplete=!0}isItem(){return"Feature"===this.type}isCatalog(){return"Catalog"===this.type}isCatalogLike(){return this.isCatalog()||this.isCollection()}isCollection(){return"Collection"===this.type}isItemCollection(){return"FeatureCollection"===this.type}hasApiData(){return this._apiChildren.list.length>0}setApiDataListener(t,e=null){"function"===typeof e?this._apiChildrenListeners[t]=e:delete this._apiChildrenListeners[t]}setApiData(t,e=null,a=null){a&&(this._apiChildren.prev=a),e&&(this._apiChildren.next=e),this._apiChildren.list=t;for(let r in this._apiChildrenListeners)try{this._apiChildrenListeners[r](this._apiChildren)}catch(s){console.error(s)}}getFileFormats(){let t=[];return(this.isItem()||this.isCollection())&&s.cp.isObject(this.assets)&&(t=t.concat(Object.values(this.assets))),this.isCollection()&&s.cp.isObject(this.item_assets)&&(t=t.concat(Object.values(this.item_assets))),t.filter((t=>Array.isArray(t.roles)&&t.roles.includes("data")&&"string"===typeof t.type)).map((t=>t.type)).filter(((t,e,a)=>a.indexOf(t)===e))}getChildren(t=null){if(!this.isCatalogLike())return[];let e=!t||"collections"===t,a=!t||"childs"===t,s=[];return e&&this._apiChildren.prev&&s.push(this._apiChildren.prev),e&&this._apiChildren.list.length>0&&(s=this._apiChildren.list),a&&(s=l.addMissingChildren(s,this).concat(this.getLinksWithRels(["item"]))),e&&this._apiChildren.next&&s.push(this._apiChildren.next),s}static addMissingChildren(t,e){let a=e.getStacLinksWithRel("child").filter((a=>{let r=s.cp.toAbsolute(a.href,e.getAbsoluteUrl());return!t.find((t=>t.getAbsoluteUrl()===r))}));return a.concat(t)}getSearchLink(){let t=s.cp.getLinksWithRels(this.links,["search"]).filter((t=>s.cp.isMediaType(t.type,s.QN))),e=t.find((t=>s.cp.hasText(t.method)&&"POST"===t.method.toUpperCase()));return e||t[0]||null}getApiCollectionsLink(){return this.getStacLinkWithRel("data")}getApiItemsLink(){return this.getStacLinkWithRel("items")}getMetadata(t){return this.isItem()?this.properties[t]:this.isCatalogLike()?this[t]:null}getBrowserPath(){return this._path}getAbsoluteUrl(){return this._url}getLocaleLink(t,e=null){let a,r=this.getStacLinksWithRel("alternate").filter((t=>s.cp.hasText(t.hreflang)));a=Array.isArray(this.languages)?this.languages.map((t=>t.code)):r.map((t=>t.hreflang));let i=(0,n.YV)(a,t,e);return r.find((t=>t.hreflang===i))||null}getStacLinksWithRel(t,e=!0){return s.cp.getLinksWithRels(this.links,[t]).filter((t=>s.cp.isStacMediaType(t.type,e)))}getStacLinkWithRel(t,e=!0){const a=this.getStacLinksWithRel(t,e);return a.length>0?a[0]:null}getLinkWithRel(t){return s.cp.getLinkWithRel(this.links,t)}getLinksWithRels(t){return s.cp.getLinksWithRels(this.links,t)}getLinksWithOtherRels(t){return s.cp.getLinksWithOtherRels(this.links,t)}getAssetsWithRoles(t){let e=[];if(s.cp.isObject(this.assets))for(let a in this.assets){let r=this.assets[a];s.cp.isObject(r)&&"string"===typeof r.href&&Array.isArray(r.roles)&&r.roles.find((e=>t.includes(e)))&&e.push(r)}return e}static getDisplayTitle(t,e=null){Array.isArray(t)||(t=[t]);let a=t.find((t=>t instanceof l)),r=t.find((t=>s.cp.isObject(t)&&!(t instanceof l)));return a&&s.cp.hasText(a.getTitle())?a.getTitle():r&&s.cp.hasText(r.title)?r.title:a&&s.cp.hasText(a.id)?a.id:s.cp.hasText(e)?e:a?s.cp.titleForHref(a.getAbsoluteUrl(),!0):r&&s.cp.hasText(r.href)?s.cp.titleForHref(r.href,!0):"Untitled"}getTitle(){return this.getMetadata("title")}_linkToAbsolute(t){return Object.assign({},t,{href:s.cp.toAbsolute(t.href,this.getAbsoluteUrl())})}getIcons(){return this.getLinksWithRels(["icon"]).filter((t=>s.cp.canBrowserDisplayImage(t))).map((t=>this._linkToAbsolute(t)))}getThumbnails(t=!1,e=null){let a=this.getAssetsWithRoles(["thumbnail","overview"]);return e&&a.length>1&&a.sort((t=>t.roles.includes(e)?-1:1)),0===a.length&&(a=this.getLinksWithRels(["preview"])),0===a.length&&s.cp.isObject(this.assets)&&s.cp.isObject(this.assets.thumbnail)&&(a=[this.assets.thumbnail]),t&&(a=a.filter((t=>s.cp.canBrowserDisplayImage(t)))),a.map((t=>this._linkToAbsolute(t)))}equals(t){return!!s.cp.isObject(t)&&(this===t||this.id===t.id&&this.type==t.type)}}e.c=l},81228:function(t,e,a){"use strict";a.d(e,{AV:function(){return i},E7:function(){return n},OU:function(){return o},ei:function(){return r},wF:function(){return l}});const s=["child","collection","item","parent","root","self"],r=["first","last","next","prev","previous"],i=["queryables","http://www.opengis.net/def/rel/ogc/1.0/queryables","ogc-rel:queryables"],n=["canonical","related","derived_from","latest-version","predecessor-version","successor-version","source","alternate"].concat(s).concat(r),o=["conformance","data","items","search","icon","license"].concat(s).concat(r).concat(i),l="http://www.opengis.net/def/rel/ogc/1.0/"},40848:function(t,e,a){"use strict";a.d(e,{IZ:function(){return h},Iz:function(){return m},QN:function(){return l},UB:function(){return g},WE:function(){return c},cp:function(){return b},eQ:function(){return f}});var s=a(63956),r=a.n(s),i=a(97104),n=a.n(i);const o=["catalog","collection","item"],l="application/geo+json",c="application/schema+json",u=["application/json",l,"text/json"],d=["image/gif","image/jpg","image/jpeg","image/apng","image/png","image/webp"],p=["application/geotiff","image/tiff; application=geotiff","image/tiff; application=geotiff; profile=cloud-optimized","image/vnd.stac.geotiff","image/vnd.stac.geotiff; cloud-optimized=true"],h=["http","https"],f=d.concat(p),m=f.concat([l]);class g extends Error{constructor(t){super(t)}}class b{static isObject(t){return"object"===typeof t&&t===Object(t)&&!Array.isArray(t)}static size(t){return"object"===typeof t&&null!==t?Array.isArray(t)?t.length:Object.keys(t).length:0}static isStacMediaType(t,e=!1){return b.isMediaType(t,u,e)}static isMediaType(t,e,a=!1){return Array.isArray(e)||(e=[e]),!(!a||t)||"string"===typeof t&&e.includes(t.toLowerCase())}static hasText(t){return"string"===typeof t&&t.length>0}static isGdalVfsUri(t){return"string"===typeof t&&t.startsWith("/vsi")&&!t.startsWith("/vsicurl/")}static toAbsolute(t,e,a=!0){return b.normalizeUri(t,e,!1,a)}static normalizeUri(t,e=null,a=!1,s=!0){"string"===typeof t&&t.startsWith("/vsicurl/")&&(t=t.replace(/^\/vsicurl\//,""));let i=r()(t);return e&&i.is("relative")&&!b.isGdalVfsUri(t)&&(i=i.absoluteTo(e)),i.normalize(),a&&(i.query(""),i.fragment("")),s?i.toString():i}static getLinkWithRel(t,e){return Array.isArray(t)?t.find((t=>b.isObject(t)&&b.hasText(t.href)&&t.rel===e)):null}static getLinksWithRels(t,e){return Array.isArray(t)?t.filter((t=>b.isObject(t)&&b.hasText(t.href)&&e.includes(t.rel))):[]}static getLinksWithOtherRels(t,e){return Array.isArray(t)?t.filter((t=>b.isObject(t)&&b.hasText(t.href)&&!e.includes(t.rel))):[]}static equalUrl(t,e){try{let a=r()(t),s=r()(e);return a.path(a.path().replace(/\/$/,"")),s.path(s.path().replace(/\/$/,"")),a.equals(s)}catch(a){return!1}}static summarizeMd(t,e=null){return b.hasText(t)?(t=n()(t).replaceAll(/[\r\n]+/g," "),e>0&&t.length>e&&(t=t.substr(0,e)+"…"),t):""}static scrollTo(t){if(t){var e=t.getBoundingClientRect(),a=e.top=0;a||t.scrollIntoView({behavior:"smooth",block:"start"})}}static dateFromUTC(t){if(t instanceof Date){const e=new Date(t),a=e.getTimezoneOffset();t=new Date(e.getTime()+60*a*1e3)}return t}static dateToUTC(t){if(t instanceof Date){const e=(new Date).getTimezoneOffset();return new Date(t.getTime()-60*e*1e3)}return t}static formatDatetimeQuery(t){return t.map((t=>t instanceof Date?t.toISOString():t||"..")).join("/")}static addFiltersToLink(t,e={}){let a=t=>null===t||"number"===typeof t&&!Number.isFinite(t)||"string"===typeof t&&0===t.length||"object"===typeof t&&0===b.size(t);if(b.hasText(t.method)&&"POST"===t.method.toUpperCase()){let s=Object.assign({},t.body);for(let t in e){let r=e[t];if(a(r))delete s[t];else{if("datetime"===t)r=b.formatDatetimeQuery(r);else if("filters"===t){Object.assign(s,r.toJSON());continue}s[t]=r}}return Object.assign({},t,{body:s})}{let s=r()(t.href);for(let t in e){let r=e[t];if(a(r))s.removeQuery(t);else{if("datetime"===t)r=b.formatDatetimeQuery(r);else if("bbox"===t)r=r.join(",");else if("collections"===t||"ids"===t)r=r.join(",");else if("filters"===t){let t=r.toText();s.setQuery(t);continue}s.setQuery(t,r)}}return Object.assign({},t,{href:s.toString()})}}static titleForHref(t,e=!1){let a=r()(t),s=a.authority(),i=a.filename().replace(/^(.{1,})\.\w+$/,"$1"),n=a.directory().replace(/^\//,"");if(s&&i&&!e){let t=a.path().replace(/^\//,"");return"doi.org"===s&&t.startsWith("10.")?`DOI ${t}`:`${i} (${s})`}return i&&!o.includes(i)?i:s||(n||t)}static canBrowserDisplayImage(t){if("string"!==typeof t.href)return!1;let e=r()(t.href),a=e.protocol().toLowerCase();return!(a&&!h.includes(a))&&(!!d.includes(t.type)||(!!d.includes("image/"+e.suffix().toLowerCase())||!t.type))}static getValueFromObjectUsingPath(t,e){if(null!==t&&"object"===typeof t)return t=t[e[0]],"undefined"!==typeof t&&e.length>1?this.getValueFromObjectUsingPath(t,e.slice(1)):t}static search(t,e,a=!0){if("string"!==typeof t||0===t.length)return!1;if(b.isObject(e)?e=Object.values(e):"string"===typeof e&&(e=[e]),!Array.isArray(e))return!1;let s=/[\s.,;!&({[)}]]+/g;t=t.toLowerCase().split(s),e=e.filter((t=>"string"===typeof t)).join(" ").replace(s," ").toLowerCase();let r=a?"every":"some";return t[r]((t=>e.includes(t)))}static createLink(t,e){return{href:t,rel:e}}static supportsExtension(t,e){if(!b.isObject(t)||!Array.isArray(t["stac_extensions"]))return!1;let a=new RegExp("^"+e.replaceAll("*","[^/]+")+"$");return Boolean(t["stac_extensions"].find((t=>a.test(t))))}static mergeDeep(t,...e){if(!e.length)return t;const a=e.shift();if(b.isObject(t)&&b.isObject(a))for(const s in a)b.isObject(a[s])?(t[s]||Object.assign(t,{[s]:{}}),b.mergeDeep(t[s],a[s])):Object.assign(t,{[s]:a[s]});return b.mergeDeep(t,...e)}}},41100:function(t,e,a){var s={"./de-CH/default.js":[54028,3528,4028],"./de/default.js":[11848,3528,1848],"./en/default.js":[25712,5712],"./es/default.js":[67388,7388],"./fr-CA/default.js":[59904,8312,9904],"./fr-CH/default.js":[13344,8312,3344],"./fr/default.js":[5336,8312,5336],"./it-CH/default.js":[38276,7806,8276],"./it/default.js":[14319,7806,4319],"./ro/default.js":[36912,6912]};function r(t){if(!a.o(s,t))return Promise.resolve().then((function(){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}));var e=s[t],r=e[0];return Promise.all(e.slice(1).map(a.e)).then((function(){return a(r)}))}r.keys=function(){return Object.keys(s)},r.id=41100,t.exports=r},99460:function(t,e,a){var s={"./de-CH/config.json":22440,"./de/config.json":86832,"./en/config.json":20584,"./es/config.json":40240,"./fr-CA/config.json":42068,"./fr-CH/config.json":54152,"./fr/config.json":1400,"./it-CH/config.json":51e3,"./it/config.json":54094,"./ro/config.json":62164};function r(t){var e=i(t);return a(e)}function i(t){if(!a.o(s,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return s[t]}r.keys=function(){return Object.keys(s)},r.resolve=i,t.exports=r,r.id=99460},22440:function(t){"use strict";t.exports=JSON.parse('{"native":"Deutsch (Schweiz)","global":"German (Switzerland)"}')},86832:function(t){"use strict";t.exports=JSON.parse('{"native":"Deutsch","global":"German"}')},20584:function(t){"use strict";t.exports=JSON.parse('{"native":"English","global":"English"}')},40240:function(t){"use strict";t.exports=JSON.parse('{"native":"Español","global":"Spanish"}')},42068:function(t){"use strict";t.exports=JSON.parse('{"native":"Français (Canada)","global":"French (Canada)"}')},54152:function(t){"use strict";t.exports=JSON.parse('{"native":"Français (Suisse)","global":"French (Switzerland)"}')},1400:function(t){"use strict";t.exports=JSON.parse('{"native":"Français","global":"French"}')},51e3:function(t){"use strict";t.exports=JSON.parse('{"native":"Italiano (Svizzera)","global":"Italian (Switzerland)"}')},54094:function(t){"use strict";t.exports=JSON.parse('{"native":"Italiano","global":"Italian"}')},62164:function(t){"use strict";t.exports=JSON.parse('{"native":"Română","global":"Romanian"}')}},e={};function a(s){var r=e[s];if(void 0!==r)return r.exports;var i=e[s]={id:s,loaded:!1,exports:{}};return t[s].call(i.exports,i,i.exports,a),i.loaded=!0,i.exports}a.m=t,function(){var t=[];a.O=function(e,s,r,i){if(!s){var n=1/0;for(u=0;u=i)&&Object.keys(a.O).every((function(t){return a.O[t](s[l])}))?s.splice(l--,1):(o=!1,i0&&t[u-1][2]>i;u--)t[u]=t[u-1];t[u]=[s,r,i]}}(),function(){a.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return a.d(e,{a:e}),e}}(),function(){var t,e=Object.getPrototypeOf?function(t){return Object.getPrototypeOf(t)}:function(t){return t.__proto__};a.t=function(s,r){if(1&r&&(s=this(s)),8&r)return s;if("object"===typeof s&&s){if(4&r&&s.__esModule)return s;if(16&r&&"function"===typeof s.then)return s}var i=Object.create(null);a.r(i);var n={};t=t||[null,e({}),e([]),e(e)];for(var o=2&r&&s;"object"==typeof o&&!~t.indexOf(o);o=e(o))Object.getOwnPropertyNames(o).forEach((function(t){n[t]=function(){return s[t]}}));return n["default"]=function(){return s},a.d(i,n),i}}(),function(){a.d=function(t,e){for(var s in e)a.o(e,s)&&!a.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})}}(),function(){a.f={},a.e=function(t){return Promise.all(Object.keys(a.f).reduce((function(e,s){return a.f[s](t,e),e}),[]))}}(),function(){a.u=function(t){return"js/"+t+"."+{48:"d04b42a5",208:"97e1b531",218:"3145dce9",339:"7dea1546",476:"02ee4105",572:"40caaa91",760:"328055c5",996:"b534b37f",1228:"8582509b",1284:"202c3e88",1528:"1dd4310c",1584:"a59f0b52",1752:"6038b67b",1788:"e7c77fdd",1824:"9102e1c7",1848:"e11c4201",2160:"1cb40f4f",2460:"eec5173e",2760:"6e1a440d",3036:"16ce77f2",3160:"ad48b6e4",3332:"ceea0dd1",3344:"fd9b3c49",3352:"e7e14b18",3420:"e3361d04",3528:"cef89b72",3772:"11aad282",3816:"9a35f861",3868:"9182d669",3904:"961abe1f",3912:"900420c2",4028:"94076d02",4052:"17101470",4319:"91793b70",4488:"adb82aee",5128:"7b07d513",5336:"23e459db",5712:"6c28c413",5824:"840fe143",5879:"4c193e89",5900:"d51697c7",5960:"904a8aec",6e3:"0f74d122",6072:"b46bb304",6112:"f1671ffc",6164:"57c0c11c",6456:"f466fcb9",6572:"a9ff018e",6877:"77aa8315",6912:"80f00f78",7388:"7703a8c2",7412:"3236f9d5",7456:"3b5cf581",7716:"4665b4e4",7806:"e92c7bb4",7920:"ca667644",8276:"e67b539f",8312:"6dcd7011",8980:"7852a14e",9e3:"399a467e",9044:"8526a0bb",9156:"cb7b6fa5",9392:"6759f767",9856:"2b727b48",9904:"32ce9edf"}[t]+".js"}}(),function(){a.miniCssF=function(t){return"css/"+t+"."+{208:"c771d657",218:"0530e224",572:"4149415b",1228:"1719e529",1528:"e6c27227",2760:"6fac7cd8",3036:"081b4583",3816:"572c83fc",5824:"4f7e2a66",5900:"d1fd0faa",7412:"4b50bc38",8980:"a94c9ca6",9044:"72c8c98f",9156:"480cfd4a",9392:"6ad781a6",9856:"0780c10b"}[t]+".css"}}(),function(){a.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"===typeof window)return window}}()}(),function(){a.hmd=function(t){return t=Object.create(t),t.children||(t.children=[]),Object.defineProperty(t,"exports",{enumerable:!0,set:function(){throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+t.id)}}),t}}(),function(){a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)}}(),function(){var t={},e="@radiantearth/stac-browser:";a.l=function(s,r,i,n){if(t[s])t[s].push(r);else{var o,l;if(void 0!==i)for(var c=document.getElementsByTagName("script"),u=0;u\n \n \n \n \n \n \n \n \n {{ asset.title || id }}\n \n
\n \n {{ $t('assets.shown') }}\n \n {{ $t('deprecated') }}\n {{ displayRole(role) }}\n \n
\n
\n
\n \n \n \n \n \n {{ buttonText }}\n \n \n \n \n {{ buttonText }}\n \n \n  \n \n \n \n \n \n \n \n \n \n \n
\n\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Asset.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Asset.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Asset.vue?vue&type=template&id=fe14418c\"\nimport script from \"./Asset.vue?vue&type=script&lang=js\"\nexport * from \"./Asset.vue?vue&type=script&lang=js\"\nimport style0 from \"./Asset.vue?vue&type=style&index=0&id=fe14418c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Assets.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Assets.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Assets.vue?vue&type=template&id=25370a32\"\nimport script from \"./Assets.vue?vue&type=script&lang=js\"\nexport * from \"./Assets.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-card',{directives:[{name:\"b-visible\",rawName:\"v-b-visible.400\",value:(_vm.load),expression:\"load\",modifiers:{\"400\":true}}],class:_vm.classes,attrs:{\"no-body\":\"\",\"img-right\":_vm.isList}},[(_vm.hasImage)?_c('b-card-img-lazy',_vm._b({staticClass:\"thumbnail\",attrs:{\"offset\":\"200\"}},'b-card-img-lazy',_vm.thumbnail,false)):_vm._e(),_c('b-card-body',[_c('b-card-title',[_c('StacLink',{staticClass:\"stretched-link\",attrs:{\"data\":[_vm.data, _vm.catalog]}})],1),(_vm.data && (_vm.fileFormats.length > 0 || _vm.data.description || _vm.data.deprecated))?_c('b-card-text',{staticClass:\"intro\"},[(_vm.data.deprecated)?_c('b-badge',{staticClass:\"mr-1 mt-1 deprecated\",attrs:{\"variant\":\"warning\"}},[_vm._v(_vm._s(_vm.$t('deprecated')))]):_vm._e(),_vm._l((_vm.fileFormats),function(format){return _c('b-badge',{key:format,staticClass:\"mr-1 mt-1 fileformat\",attrs:{\"variant\":\"secondary\"}},[_vm._v(_vm._s(_vm._f(\"formatMediaType\")(format)))])}),_vm._v(\" \"+_vm._s(_vm._f(\"summarize\")(_vm.data.description))+\" \")],2):_vm._e(),(_vm.temporalExtent)?_c('b-card-text',{staticClass:\"datetime\"},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.temporalExtent)}})]):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Catalog.vue?vue&type=template&id=03a8721e\"\nimport script from \"./Catalog.vue?vue&type=script&lang=js\"\nexport * from \"./Catalog.vue?vue&type=script&lang=js\"\nimport style0 from \"./Catalog.vue?vue&type=style&index=0&id=03a8721e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"styled-description\",class:{compact: _vm.compact, inline: _vm.inline},domProps:{\"innerHTML\":_vm._s(_vm.markup(_vm.description))}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Description.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Description.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Description.vue?vue&type=template&id=77c4c56a\"\nimport script from \"./Description.vue?vue&type=script&lang=js\"\nexport * from \"./Description.vue?vue&type=script&lang=js\"\nimport style0 from \"./Description.vue?vue&type=style&index=0&id=77c4c56a&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-card',{directives:[{name:\"b-visible\",rawName:\"v-b-visible.400\",value:(_vm.load),expression:\"load\",modifiers:{\"400\":true}}],staticClass:\"item-card\",class:{queued: !_vm.data, deprecated: _vm.isDeprecated, description: _vm.hasDescription},attrs:{\"no-body\":\"\"}},[(_vm.hasImage)?_c('b-card-img-lazy',_vm._b({staticClass:\"thumbnail\",attrs:{\"offset\":\"200\"}},'b-card-img-lazy',_vm.thumbnail,false)):_vm._e(),_c('b-card-body',[_c('b-card-title',[_c('StacLink',{staticClass:\"stretched-link\",attrs:{\"data\":[_vm.data, _vm.item]}})],1),(_vm.fileFormats.length > 0 || _vm.hasDescription || _vm.isDeprecated)?_c('b-card-text',{staticClass:\"intro\"},[(_vm.isDeprecated)?_c('b-badge',{staticClass:\"mr-1 mt-1 deprecated\",attrs:{\"variant\":\"warning\"}},[_vm._v(_vm._s(_vm.$t('deprecated')))]):_vm._e(),_vm._l((_vm.fileFormats),function(format){return _c('b-badge',{key:format,staticClass:\"mr-1 mt-1 fileformat\",attrs:{\"variant\":\"secondary\"}},[_vm._v(_vm._s(_vm._f(\"formatMediaType\")(format)))])}),(_vm.hasDescription)?[_vm._v(_vm._s(_vm._f(\"summarize\")(_vm.data.properties.description)))]:_vm._e()],2):_vm._e(),_c('b-card-text',[_c('small',{staticClass:\"text-muted\"},[(_vm.extent)?[_vm._v(_vm._s(_vm._f(\"formatTemporalExtent\")(_vm.extent)))]:(_vm.data && _vm.data.properties.datetime)?[_vm._v(_vm._s(_vm._f(\"formatTimestamp\")(_vm.data.properties.datetime)))]:[_vm._v(_vm._s(_vm.$t('items.noTime')))]],2)])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Item.vue?vue&type=template&id=2c5ce650\"\nimport script from \"./Item.vue?vue&type=script&lang=js\"\nexport * from \"./Item.vue?vue&type=script&lang=js\"\nimport style0 from \"./Item.vue?vue&type=style&index=0&id=2c5ce650&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',{staticClass:\"items mb-4\"},[_c('h2',[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$tc('stacItem', _vm.items.length )))]),(!_vm.api && _vm.items.length > 0)?_c('b-badge',{attrs:{\"pill\":\"\",\"variant\":\"secondary ml-2\"}},[_vm._v(_vm._s(_vm.items.length))]):_vm._e(),(!_vm.api && _vm.items.length > 1)?_c('SortButtons',{staticClass:\"ml-4\",model:{value:(_vm.sort),callback:function ($$v) {_vm.sort=$$v},expression:\"sort\"}}):_vm._e()],1),(_vm.showPagination)?_c('Pagination',{ref:\"topPagination\",attrs:{\"pagination\":_vm.pagination,\"placement\":\"top\"},on:{\"paginate\":_vm.paginate}}):_vm._e(),(_vm.allowFilter)?[(_vm.api)?_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.itemFilter\",modifiers:{\"itemFilter\":true}}],staticClass:\"mb-4 mt-2\",class:{'ml-3': _vm.showPagination},attrs:{\"pressed\":_vm.filtersOpen,\"variant\":\"outline-primary\"}},[_c('b-icon-search'),_vm._v(\" \"+_vm._s(_vm.$t('items.filter'))+\" \")],1):_vm._e(),_c('b-collapse',{attrs:{\"id\":\"itemFilter\"},model:{value:(_vm.filtersOpen),callback:function ($$v) {_vm.filtersOpen=$$v},expression:\"filtersOpen\"}},[(_vm.filtersOpen)?_c('ItemFilter',{attrs:{\"type\":\"Features\",\"title\":_vm.$t('items.filter'),\"stac\":_vm.stac,\"value\":_vm.apiFilters},on:{\"input\":_vm.emitFilter}}):_vm._e()],1)]:_vm._e(),_c('section',{staticClass:\"list\"},[(_vm.loading)?_c('Loading',{attrs:{\"fill\":\"\",\"top\":\"\"}}):_vm._e(),(_vm.chunkedItems.length > 0)?_c('b-card-group',{attrs:{\"columns\":\"\"}},_vm._l((_vm.chunkedItems),function(item){return _c('Item',{key:item.href,attrs:{\"item\":item}})}),1):_c('b-alert',{attrs:{\"variant\":_vm.hasFilters ? 'warning' : 'info',\"show\":\"\"}},[(_vm.hasFilters)?[_vm._v(_vm._s(_vm.$t('search.noItemsFound')))]:[_vm._v(_vm._s(_vm.$t('items.noneAvailableForCollection')))]],2)],1),(_vm.showPagination)?_c('Pagination',{attrs:{\"pagination\":_vm.pagination},on:{\"paginate\":_vm.paginate}}):(_vm.hasMore)?_c('b-button',{directives:[{name:\"b-visible\",rawName:\"v-b-visible.300\",value:(_vm.showMore),expression:\"showMore\",modifiers:{\"300\":true}}],attrs:{\"variant\":\"primary\"},on:{\"click\":_vm.showMore}},[_vm._v(_vm._s(_vm.$t('showMore')))]):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-button-group',{class:_vm.classes},[_c('b-button',{attrs:{\"disabled\":!_vm.pagination.first,\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.paginate(_vm.pagination.first)}}},[_vm._v(_vm._s(_vm.$t('pagination.first')))]),_c('b-button',{attrs:{\"disabled\":!_vm.pagination.prev,\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.paginate(_vm.pagination.prev)}}},[_vm._v(_vm._s(_vm.$t('pagination.previous')))]),_c('b-button',{attrs:{\"disabled\":!_vm.pagination.next,\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.paginate(_vm.pagination.next)}}},[_vm._v(_vm._s(_vm.$t('pagination.next')))]),(_vm.pagination.last)?_c('b-button',{attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.paginate(_vm.pagination.last)}}},[_vm._v(_vm._s(_vm.$t('pagination.last')))]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Pagination.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Pagination.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Pagination.vue?vue&type=template&id=56aa2ed6\"\nimport script from \"./Pagination.vue?vue&type=script&lang=js\"\nexport * from \"./Pagination.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Items.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Items.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Items.vue?vue&type=template&id=c0719580&scoped=true\"\nimport script from \"./Items.vue?vue&type=script&lang=js\"\nexport * from \"./Items.vue?vue&type=script&lang=js\"\nimport style0 from \"./Items.vue?vue&type=style&index=0&id=c0719580&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c0719580\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:_vm.classes},[_c('b-spinner',{attrs:{\"label\":_vm.$t('loading'),\"small\":_vm.small}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Loading.vue?vue&type=template&id=67931bb8&scoped=true\"\nimport script from \"./Loading.vue?vue&type=script&lang=js\"\nexport * from \"./Loading.vue?vue&type=script&lang=js\"\nimport style0 from \"./Loading.vue?vue&type=style&index=0&id=67931bb8&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"67931bb8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.component,_vm._b({tag:\"component\",staticClass:\"stac-link\",attrs:{\"title\":_vm.tooltip}},'component',_vm.attributes,false),[(_vm.icon)?[_c('img',{staticClass:\"icon mr-2\",attrs:{\"src\":_vm.icon.href,\"alt\":_vm.icon.title,\"title\":_vm.icon.title}})]:_vm._e(),_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.displayTitle))])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacLink.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacLink.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./StacLink.vue?vue&type=template&id=2b8aea7d\"\nimport script from \"./StacLink.vue?vue&type=script&lang=js\"\nexport * from \"./StacLink.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","module.exports = {\n catalogUrl: null,\n catalogTitle: \"STAC Browser\",\n allowExternalAccess: true, // Must be true if catalogUrl is not given\n allowedDomains: [],\n detectLocaleFromBrowser: true,\n storeLocale: true,\n locale: \"en\",\n fallbackLocale: \"en\",\n supportedLocales: [\n \"de\",\n// \"de-CH\",\n \"es\",\n \"en\",\n \"fr\",\n// \"fr-CA\",\n// \"fr-CH\",\n \"it\",\n// \"it-CH\",\n \"ro\"\n ],\n apiCatalogPriority: null,\n useTileLayerAsFallback: true,\n tileSourceTemplate: null,\n displayGeoTiffByDefault: false,\n buildTileUrlTemplate: ({href, asset}) => \"https://tiles.rdnt.io/tiles/{z}/{x}/{y}@2x?url=\" + encodeURIComponent(asset.href.startsWith(\"/vsi\") ? asset.href : href),\n stacProxyUrl: null,\n pathPrefix: \"/\",\n historyMode: \"history\",\n cardViewMode: \"cards\",\n cardViewSort: \"asc\",\n showThumbnailsAsAssets: false,\n stacLint: true,\n geoTiffResolution: 128,\n redirectLegacyUrls: false,\n itemsPerPage: 12,\n defaultThumbnailSize: null,\n maxPreviewsOnMap: 50,\n crossOriginMedia: null,\n requestHeaders: {},\n requestQueryParameters: {},\n preprocessSTAC: null,\n authConfig: {\n type: 'header',\n key: 'Authorization',\n formatter: token => `Bearer ${token}`, // This is an example, there's also the simpler variant to just provide the string 'Bearer' in this case\n description: `Please retrieve the token from our [API console](https://example.com/api-console).\\n\\nFor further questions contact .`\n }\n};\n","import { mapState } from 'vuex';\n\nexport default functions => {\n let mixin = {\n computed: {\n ...mapState(['uiLanguage'])\n },\n methods: {}\n };\n for(let name in functions) {\n let fn = functions[name];\n mixin.methods[name] = function() {\n // We call uiLanguage once so that it's a dependency for the computed property\n // which makes the computed property to re-render when uiLanguage changes.\n this.uiLanguage;\n return fn(...arguments);\n };\n }\n return mixin;\n};","import { mapState } from 'vuex';\n\nexport default {\n props: {\n showThumbnail: {\n type: Boolean,\n default: true\n }\n },\n computed: {\n ...mapState(['cardViewMode', 'crossOriginMedia', 'defaultThumbnailSize']),\n isList() {\n return this.data && !this.data.isItem() && this.cardViewMode === 'list';\n },\n hasImage() {\n return this.showThumbnail && this.thumbnail;\n },\n thumbnail() {\n if (this.data) {\n let thumbnails = this.data.getThumbnails(true, 'thumbnail');\n if (thumbnails.length > 0) {\n let t = thumbnails[0];\n let width, height;\n if (Array.isArray(t['proj:shape']) && t['proj:shape'].length === 2) {\n [height, width] = t['proj:shape'];\n }\n else if (Array.isArray(this.defaultThumbnailSize) && this.defaultThumbnailSize.length === 2) {\n [height, width] = this.defaultThumbnailSize;\n }\n return {\n src: t.href,\n alt: t.title,\n crossorigin: this.crossOriginMedia,\n right: this.isList,\n blankColor: \"rgba(0, 0, 0, 0.125)\",\n width,\n height,\n // for b-card-img-lazy\n \"blank-width\": width,\n \"blank-height\": height\n };\n }\n }\n return null;\n }\n }\n};","let config;\nif (typeof CONFIG_PATH === 'undefined' && typeof CONFIG_CLI === 'undefined') {\n config = require('../config');\n}\nelse {\n config = Object.assign(require(CONFIG_PATH), CONFIG_CLI);\n}\n\nexport default config;","import Vue from 'vue';\nimport VueI18n from 'vue-i18n';\nimport CONFIG from './config';\nimport {default as Fields} from '@radiantearth/stac-fields/I18N';\nimport Utils from './utils';\n\nVue.use(VueI18n);\n\nexport const API_LANGUAGE_CONFORMANCE = ['https://api.stacspec.org/v1.*/language'];\n\nconst LOCALE_CONFIG = {};\n\nfunction loadLocaleConfig() {\n // Load locale config\n for(let locale of CONFIG.supportedLocales) {\n LOCALE_CONFIG[locale] = require(`./locales/${locale}/config.json`);\n }\n const messages = {};\n // Add language names all other languages\n for(let locale in LOCALE_CONFIG) {\n messages[locale] = {\n languages: LOCALE_CONFIG\n };\n }\n return messages;\n}\n\nconst i18n = new VueI18n({\n locale: CONFIG.locale,\n fallbackLocale: CONFIG.fallbackLocale,\n messages: loadLocaleConfig()\n});\nexport default i18n;\n\nexport function loadDefaultMessages() {\n return Promise.all([\n loadMessages(CONFIG.locale),\n loadMessages(CONFIG.fallbackLocale)\n ]);\n}\n\nexport async function loadMessages(locale) {\n // Check whether the language has already been loaded\n // Note that a languages key is already present thus check >1 and not >0\n if (Utils.size(i18n.messages[locale]) > 1) {\n return;\n }\n const messages = (await import(`./locales/${locale}/default.js`)).default;\n i18n.mergeLocaleMessage(locale, messages);\n}\n\nexport function translateFields(value, vars = null) {\n if (typeof value !== 'string' || value.length === 0) {\n return value;\n }\n let key = `fields.${value}`;\n if (i18n.te(key)) {\n return i18n.t(key, null, vars);\n }\n return Fields.format(value, vars);\n}","// This code is based on https://github.com/cherry-projects/locale-id\n// Due to the \"heavy\" dependencies, it has been slimmed down\n\n// http://userguide.icu-project.org/locale\nexport default function parse(locale) {\n if (!locale) {\n return undefined;\n }\n\n // extract keyword\n const stringLocale = String(locale);\n const keywordPos = stringLocale.indexOf('@');\n\n const keyword = keywordPos !== -1\n ? stringLocale.substr(keywordPos + 1)\n : undefined;\n\n const localeWithoutKeyword = keywordPos !== -1\n ? stringLocale.substr(0, keywordPos)\n : stringLocale;\n\n // en-us => en_us\n const parts = String(localeWithoutKeyword)\n .replace(/-/g, '_')\n .split('_');\n\n if (!parts.length || parts.length > 4) {\n return undefined;\n }\n\n const language = parts.shift();\n if (!language) {\n return undefined;\n }\n\n const retVar = {\n keyword,\n language: language.toLowerCase(),\n };\n\n if (!parts.length) {\n return retVar;\n }\n\n if (parts.length === 3) {\n const variant = parts.pop();\n if (variant) {\n retVar.variant = variant.toUpperCase();\n }\n }\n\n let country = parts.pop();\n if (country.length > 3) {\n retVar.keyword = country;\n\n country = parts.pop();\n }\n\n if (country) {\n retVar.country = country.toUpperCase();\n }\n\n if (!parts.length) {\n return retVar;\n }\n\n const script = parts.pop();\n if (typeof script === 'string' && script.length >= 1) {\n retVar.script = script[0].toUpperCase() + script.substring(1).toLowerCase();\n }\n\n return retVar;\n}\n\nexport function normalize(locale, delimeter = '_') {\n const obj = parse(locale);\n if (!obj) {\n return obj;\n }\n\n let result = obj.language;\n\n if (obj.script) {\n result += `${delimeter}${obj.script}`;\n }\n\n if (obj.country) {\n result += `${delimeter}${obj.country}`;\n }\n\n return result;\n}\n\nconst splitAcceptLanguageRegEx = /([a-z]{1,8}(-[a-z]{1,8})?)\\s*(;\\s*q\\s*=\\s*(1|0\\.[0-9]+))?/ig;\nconst acceptLanguageItemRegEx = /^([a-z]{1,8}(-[a-z]{1,8})?)/i;\n\nexport function normalizeAcceptLanguage(acceptLanguage) {\n const returnItems = [];\n if (!acceptLanguage) {\n return returnItems;\n }\n\n const items = acceptLanguage.match(splitAcceptLanguageRegEx) || [];\n items.forEach(acceptLanguageItem => {\n const matches = acceptLanguageItem.match(acceptLanguageItemRegEx) || [];\n const locale = normalize(matches[0]);\n if (locale) {\n returnItems.push(locale);\n }\n });\n\n return returnItems;\n}\n\nexport function prepareSupported(supported) {\n const lgs = {};\n\n supported.forEach(supportedLocale => {\n const { language, country } = parse(supportedLocale);\n if (!language) {\n throw new Error(`Locale ${supportedLocale} is not parsable`);\n }\n\n if (!lgs[language]) {\n lgs[language] = {\n countries: {},\n firstCountry: undefined,\n main: undefined,\n };\n }\n\n const lg = lgs[language];\n if (country) {\n lg.countries[country] = supportedLocale;\n\n if (!lg.firstCountry) {\n lg.firstCountry = supportedLocale;\n }\n } else {\n lg.main = supportedLocale;\n }\n });\n\n return lgs;\n}\n\nexport function getBest(supported, locale, defaultLocale, getAnyCountry) {\n const lgs = Array.isArray(supported) ? prepareSupported(supported) : supported;\n\n // return defaultLocale if current locale is undefined\n if (!locale && defaultLocale) {\n return getBest(supported, defaultLocale, undefined, getAnyCountry);\n }\n\n if (!locale) {\n return undefined;\n }\n\n const { language, country } = parse(locale);\n if (!language) {\n return defaultLocale;\n }\n\n // selected locale is not supported\n if (!lgs[language]) {\n if (locale === defaultLocale) {\n return undefined;\n }\n\n return getBest(supported, defaultLocale, null, getAnyCountry);\n }\n\n const { countries, main = defaultLocale, firstCountry } = lgs[language];\n if (!countries || !country) {\n if (getAnyCountry && firstCountry) {\n return firstCountry;\n }\n\n return main;\n }\n\n if (getAnyCountry && firstCountry) {\n return countries[country] ? countries[country] : firstCountry;\n }\n\n return countries[country] ? countries[country] : main;\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-container',{attrs:{\"id\":\"stac-browser\"}},[(_vm.doAuth.length > 0)?_c('Authentication'):_vm._e(),(_vm.globalError)?_c('ErrorAlert',_vm._b({staticClass:\"global-error\",on:{\"close\":_vm.hideError}},'ErrorAlert',_vm.globalError,false)):_vm._e(),(_vm.sidebar)?_c('Sidebar'):_vm._e(),_c('header',[_c('div',{staticClass:\"logo\"},[_vm._v(_vm._s(_vm.displayCatalogTitle))]),_c('StacHeader',{on:{\"enableSidebar\":function($event){_vm.sidebar = true}}})],1),_c('router-view'),_c('footer',[_c('i18n',{staticClass:\"poweredby text-muted\",attrs:{\"tag\":\"small\",\"path\":\"poweredBy\"},scopedSlots:_vm._u([{key:\"link\",fn:function(){return [_c('a',{attrs:{\"href\":\"https://github.com/radiantearth/stac-browser\",\"target\":\"_blank\"}},[_vm._v(\"STAC Browser\")]),_vm._v(\" \"+_vm._s(_vm.browserVersion)+\" \")]},proxy:true}])})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('main',{staticClass:\"browse d-flex flex-column\"},[(!_vm.allowExternalAccess && _vm.isExternal)?_c('b-alert',{attrs:{\"show\":\"\"}},[_c('p',[_vm._v(_vm._s(_vm.$t('errors.noExternalAccess')))])]):_vm._e(),(_vm.error)?_c('ErrorAlert',{attrs:{\"dismissible\":false,\"url\":_vm.url,\"description\":_vm.errorDescription,\"id\":_vm.errorId}}):(_vm.loading)?_c('Loading',{attrs:{\"stretch\":\"\"}}):_c(_vm.component,{tag:\"component\"})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-alert',{attrs:{\"variant\":\"danger\",\"show\":\"\",\"dismissible\":_vm.dismissible},on:{\"dismissed\":function($event){return _vm.$emit('close')}}},[_c('p',{staticClass:\"message\"},[_vm._v(_vm._s(_vm.message || _vm.$t('errors.default')))]),(_vm.error && _vm.error.message)?_c('dl',{staticClass:\"error\"},[_c('dt',[_vm._v(_vm._s(_vm.$t('errors.labels.cause')))]),_c('dd',[_vm._v(_vm._s(_vm.error.message))])]):_vm._e(),(_vm.description)?_c('dl',{staticClass:\"description\"},[_c('dt',[_vm._v(_vm._s(_vm.$t('errors.labels.reason')))]),_c('dd',[_vm._v(_vm._s(_vm.description))])]):_vm._e(),(_vm.id)?_c('dl',{staticClass:\"id\"},[_c('dt',[_vm._v(_vm._s(_vm.$t('errors.labels.code')))]),_c('dd',[_c('code',[_vm._v(_vm._s(_vm.id))])])]):_vm._e(),(_vm.url)?_c('dl',{staticClass:\"url\"},[_c('dt',[_vm._v(_vm._s(_vm.$t('errors.labels.requestURL')))]),_c('dd',[_c('code',[_vm._v(_vm._s(_vm.url))])])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ErrorAlert.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ErrorAlert.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ErrorAlert.vue?vue&type=template&id=09bb7d1b&scoped=true\"\nimport script from \"./ErrorAlert.vue?vue&type=script&lang=js\"\nexport * from \"./ErrorAlert.vue?vue&type=script&lang=js\"\nimport style0 from \"./ErrorAlert.vue?vue&type=style&index=0&id=09bb7d1b&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"09bb7d1b\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{key:_vm.data.id,staticClass:\"item\"},[_c('b-row',[_c('b-col',{staticClass:\"left\"},[_c('section',{staticClass:\"mb-4\"},[_c('b-card',{staticClass:\"maps-preview\",attrs:{\"no-body\":\"\"}},[_c('b-tabs',{ref:\"tabs\",attrs:{\"card\":\"\",\"pills\":\"\",\"vertical\":\"\",\"end\":\"\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('b-tab',{attrs:{\"title\":_vm.$t('map'),\"no-body\":\"\"}},[_c('Map',{attrs:{\"stac\":_vm.data,\"stacLayerData\":_vm.selectedAsset,\"scrollWheelZoom\":\"\"},on:{\"dataChanged\":_vm.dataChanged}})],1),(_vm.thumbnails.length > 0)?_c('b-tab',{attrs:{\"title\":_vm.$t('thumbnails'),\"no-body\":\"\"}},[_c('Thumbnails',{attrs:{\"thumbnails\":_vm.thumbnails}})],1):_vm._e()],1)],1)],1),(_vm.hasAssets)?_c('Assets',{attrs:{\"assets\":_vm.assets,\"context\":_vm.data,\"shown\":_vm.shownAssets},on:{\"showAsset\":_vm.showAsset}}):_vm._e(),(_vm.additionalLinks.length > 0)?_c('Links',{attrs:{\"title\":_vm.$t('additionalResources'),\"links\":_vm.additionalLinks}}):_vm._e()],1),_c('b-col',{staticClass:\"right\"},[_c('section',{staticClass:\"intro\"},[(_vm.data.properties.description)?_c('h2',[_vm._v(_vm._s(_vm.$t('description')))]):_vm._e(),(_vm.data.properties.deprecated)?_c('DeprecationNotice',{attrs:{\"data\":_vm.data}}):_vm._e(),(_vm.data.properties['anon:warning'])?_c('AnonymizedNotice',{attrs:{\"warning\":_vm.data.properties['anon:warning']}}):_vm._e(),(_vm.data.properties.description)?_c('ReadMore',{attrs:{\"lines\":10,\"text\":_vm.$t('read.more'),\"text-less\":_vm.$t('read.less')}},[_c('Description',{attrs:{\"description\":_vm.data.properties.description}})],1):_vm._e(),(Array.isArray(_vm.data.properties.keywords) && _vm.data.properties.keywords.length > 0)?_c('Keywords',{attrs:{\"keywords\":_vm.data.properties.keywords}}):_vm._e()],1),(_vm.collectionLink)?_c('CollectionLink',{attrs:{\"link\":_vm.collectionLink}}):_vm._e(),(_vm.data.properties.providers)?_c('Providers',{attrs:{\"providers\":_vm.data.properties.providers}}):_vm._e(),_c('Metadata',{attrs:{\"data\":_vm.data,\"type\":\"Item\",\"ignoreFields\":_vm.ignoredMetadataFields}})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Utils from '../utils';\nimport { mapGetters } from 'vuex';\n\nexport default {\n data() {\n return {\n shownAssetsOnMap: [],\n shownBandsOnMap: [],\n tab: null,\n selectedAsset: null,\n selectedAssetKey: null\n };\n },\n computed: {\n ...mapGetters(['thumbnails', 'hasAssets', 'assets']),\n shownAssets() {\n if (this.tab === 0) {\n return this.shownAssetsOnMap;\n }\n else if (this.tab === 1 || (this.tab === null && this.thumbnails.length > 0)) {\n let keys = [];\n let thumbnailRefs = this.thumbnails.map(t => t.href);\n for(let key in this.assets) {\n let asset = this.assets[key];\n if (thumbnailRefs.includes(asset.href)) {\n keys.push(key);\n }\n }\n return keys;\n }\n return [];\n }\n },\n methods: {\n showAsset(asset, id, isThumbnail) {\n if (isThumbnail) {\n this.tab = 1;\n }\n else {\n this.tab = 0;\n this.selectedAsset = asset;\n this.selectedAssetKey = id;\n }\n if (this.$refs.tabs) {\n Utils.scrollTo(this.$refs.tabs.$el);\n }\n },\n dataChanged(data) {\n if (!Utils.isObject(data)) {\n this.shownBandsOnMap = [];\n this.shownAssetsOnMap = [];\n }\n else if (data.assets || data.bands) {\n if (Utils.size(data.assets) > 0) {\n if (this.selectedAssetKey) {\n this.shownAssetsOnMap = [this.selectedAssetKey];\n }\n else {\n this.shownAssetsOnMap = data.assets.map(meta => meta.key);\n }\n }\n if (Utils.size(data.bands) > 0) {\n this.shownBandsOnMap = data.bands;\n }\n }\n else if (this.selectedAssetKey) {\n this.shownAssetsOnMap = [this.selectedAssetKey];\n }\n }\n }\n};","import Utils from './utils';\nimport STAC from './models/stac';\nimport URI from 'urijs';\nimport i18n from './i18n';\n\nfunction toBrowserUrl(url, store) {\n let path = store.getters.toBrowserPath(url);\n let uri = URI(window.location.origin.toString());\n if (store.state.historyMode === 'hash') {\n uri.path(store.state.pathPrefix);\n uri.fragment(path);\n }\n else {\n uri.path(store.state.pathPrefix.replace(/\\/$/, '') + path);\n }\n return uri.toString();\n}\n\nfunction addSpatialCoverage(schema, bbox) {\n if (Array.isArray(bbox) && bbox.length >= 4) {\n schema.spatialCoverage = {\n \"@type\": \"Place\",\n geo: {\n \"@type\": \"GeoShape\",\n box: (bbox || []).join(\" \")\n }\n };\n }\n}\n\nfunction formatTemporalCoverage(dates) {\n if (Array.isArray(dates) && dates.length === 2 && (typeof dates[0] === 'string' || typeof dates[1] === 'string')) {\n return dates.map(dt => dt ? dt : '..').join('/');\n }\n return null;\n}\n\nfunction makeAssets(data) {\n if (Utils.size(data.assets) > 0) {\n return Object.values(data.assets).map(a => ({\n \"@type\": \"DataDownload\",\n contentUrl: Utils.toAbsolute(a.href, data.getAbsoluteUrl()),\n encodingFormat: a.type,\n name: a.title\n }));\n }\n return [];\n}\n\nfunction makeLinks(links, data, store, type = \"DataCatalog\") {\n return links.map(link => {\n let name, isBasedOn;\n if (link instanceof STAC) {\n name = STAC.getDisplayTitle(link);\n isBasedOn = link.getAbsoluteUrl();\n }\n else {\n name = link.title;\n isBasedOn = Utils.toAbsolute(link.href, data.getAbsoluteUrl());\n }\n let obj = {\n \"@type\": type,\n name,\n url: toBrowserUrl(isBasedOn, store),\n isBasedOn\n };\n if (type === 'Dataset') {\n obj.description = fallbackDescription(link, store);\n }\n return obj;\n });\n}\n\nfunction makeProvider(providers, role) {\n return providers\n .filter(p => Utils.isObject(p) && Array.isArray(p.roles) && p.roles.includes(role))\n .map(p => ({\n \"@type\": \"Organization\",\n \"name\": p.name,\n \"description\": p.description,\n \"url\": p.url,\n \"email\": p.email || p.mail,\n }));\n}\n\nfunction fallbackDescription(data, store) {\n let stacType, container;\n if (data instanceof STAC) {\n stacType = data.isItem() ? \"Item\" : data.type;\n container = data.collection;\n }\n else if (Utils.isObject(data) && data.rel === 'item') {\n stacType = \"Item\";\n }\n if (stacType) {\n let type = i18n.tc(`stac${stacType}`);\n let inX = i18n.t('in', {catalog: container || store.catalogTitle});\n return `SpatioTemporal Asset Catalog (STAC)\\n${type} - ${data.id} ${inX}`;\n }\n}\n\nfunction createBaseSchema(data, type, store) {\n let name = STAC.getDisplayTitle(data);\n let stacUrl = data.getAbsoluteUrl();\n let url = toBrowserUrl(stacUrl, store);\n let inLanguage = data.getMetadata('language')?.code;\n let thumbnails = data.getThumbnails(true);\n let thumbnailUrl;\n if (thumbnails.length > 0) {\n thumbnailUrl = Utils.toAbsolute(thumbnails[0].href, data.getAbsoluteUrl());\n }\n let license = data.getMetadata('license');\n if (license && license !== 'proprietary' && license !== 'various') {\n license = `https://spdx.org/licenses/${license}.html`;\n }\n else {\n license = data.getLinkWithRel('license')?.href;\n }\n if (license) {\n license = Utils.toAbsolute(license, data.getAbsoluteUrl());\n }\n\n let providers = data.getMetadata('providers');\n let copyrightHolder; // licensor\n let producer; // producer\n let provider; // host\n let creator; // processor\n if (Utils.size(providers) > 0) {\n copyrightHolder = makeProvider(providers, \"licensor\");\n producer = makeProvider(providers, \"producer\");\n provider = makeProvider(providers, \"host\");\n creator = makeProvider(providers, \"processor\");\n }\n\n return {\n \"@context\": \"https://schema.org/\",\n \"@type\": type,\n name,\n description: data.getMetadata(\"description\") || fallbackDescription(data, store),\n citation: data.getMetadata(\"sci:citation\"),\n identifier: data.getMetadata(\"sci:doi\") || data.id,\n keywords: data.getMetadata(\"keywords\"),\n license,\n url,\n isBasedOn: stacUrl,\n dateCreated: data.getMetadata('created'),\n dateModified: data.getMetadata('updated'),\n datePublished: data.getMetadata('published'),\n expires: data.getMetadata('expires'),\n inLanguage,\n thumbnailUrl,\n version: data.getMetadata('version'),\n image: thumbnailUrl,\n copyrightHolder,\n producer,\n provider,\n creator\n };\n}\n\nexport function createCatalogSchema(data, parents, store) {\n if (!(data instanceof STAC)) {\n return null;\n }\n // Remove invalid links\n parents = parents.filter(link => Utils.isObject(link));\n if (parents.length > 1) {\n // Remove duplicates\n parents = parents.filter((link, i) => parents.findIndex(p => p.isBasedOn === link.isBasedOn) !== i);\n }\n\n let schema = createBaseSchema(data, 'DataCatalog', store);\n\n if (data.isCollection()) {\n if (data.extent?.temporal?.interval.length > 0) {\n schema.temporalCoverage = formatTemporalCoverage(data.extent.temporal.interval[0]);\n }\n\n if (data.extent?.spatial?.bbox.length > 0) {\n addSpatialCoverage(schema, data.extent.spatial.bbox[0]);\n }\n schema.associatedMedia = makeAssets(data);\n }\n\n schema.hasPart = makeLinks(store.getters.catalogs, data, store);\n schema.dataset = makeLinks(store.getters.items, data, store, \"Dataset\");\n schema.isPartOf = makeLinks(parents, data, store);\n\n return schema;\n}\n\nexport function createItemSchema(data, parents, store) {\n if (!(data instanceof STAC)) {\n return null;\n }\n parents = parents.filter(link => Utils.isObject(link));\n\n let schema = createBaseSchema(data, 'Dataset', store);\n\n schema.includedInDataCatalog = makeLinks(parents, data, store);\n\n let start = data.getMetadata('start_datetime');\n let end = data.getMetadata('end_datetime');\n if (start || end) {\n schema.temporalCoverage = formatTemporalCoverage([start, end]);\n }\n else {\n schema.temporalCoverage = data.getMetadata('datetime');\n }\n\n addSpatialCoverage(schema, data.bbox);\n schema.distribution = makeAssets(data);\n\n return schema;\n}\n\nexport function addSchemaToDocument(doc, schema) {\n let id = 'schema-org';\n let element = doc.getElementById(id);\n if (!element) {\n element = doc.createElement('script');\n element.type = 'application/ld+json';\n element.id = id;\n doc.head.appendChild(element);\n }\n element.innerText = JSON.stringify(schema);\n}","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Item.vue?vue&type=template&id=27219124\"\nimport script from \"./Item.vue?vue&type=script&lang=js\"\nexport * from \"./Item.vue?vue&type=script&lang=js\"\nimport style0 from \"./Item.vue?vue&type=style&index=0&id=27219124&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{key:_vm.data.id,class:{cc: true, [_vm.data.type.toLowerCase()]: true, mixed: _vm.hasCatalogs && _vm.hasItems, empty: !_vm.hasCatalogs && !_vm.hasItems}},[_c('b-row',[_c('b-col',{staticClass:\"meta\"},[_c('section',{staticClass:\"intro\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('description')))]),(_vm.data.deprecated)?_c('DeprecationNotice',{attrs:{\"data\":_vm.data}}):_vm._e(),(_vm.data['anon:warning'])?_c('AnonymizedNotice',{attrs:{\"warning\":_vm.data['anon:warning']}}):_vm._e(),(_vm.data.description)?_c('ReadMore',{attrs:{\"lines\":10,\"text\":_vm.$t('read.more'),\"text-less\":_vm.$t('read.less')}},[_c('Description',{attrs:{\"description\":_vm.data.description}})],1):_vm._e(),(Array.isArray(_vm.data.keywords) && _vm.data.keywords.length > 0)?_c('Keywords',{attrs:{\"keywords\":_vm.data.keywords}}):_vm._e(),(_vm.isCollection)?_c('section',{staticClass:\"metadata mb-4\"},[(_vm.licenses)?_c('b-row',[_c('b-col',{staticClass:\"label\",attrs:{\"md\":\"4\"}},[_vm._v(_vm._s(_vm.$t('catalog.license')))]),_c('b-col',{staticClass:\"value\",attrs:{\"md\":\"8\"},domProps:{\"innerHTML\":_vm._s(_vm.licenses)}})],1):_vm._e(),(_vm.temporalExtents)?_c('b-row',[_c('b-col',{staticClass:\"label\",attrs:{\"md\":\"4\"}},[_vm._v(_vm._s(_vm.$t('catalog.temporalExtent')))]),_c('b-col',{staticClass:\"value\",attrs:{\"md\":\"8\"},domProps:{\"innerHTML\":_vm._s(_vm.temporalExtents)}})],1):_vm._e()],1):_vm._e(),(_vm.linkPosition === 'left')?_c('Links',{attrs:{\"title\":_vm.$t('additionalResources'),\"links\":_vm.additionalLinks}}):_vm._e()],1),(_vm.isCollection || _vm.hasThumbnails)?_c('section',{staticClass:\"mb-4\"},[_c('b-card',{staticClass:\"maps-preview\",attrs:{\"no-body\":\"\"}},[_c('b-tabs',{ref:\"tabs\",attrs:{\"pills\":\"\",\"card\":\"\",\"vertical\":\"\",\"end\":\"\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[(_vm.isCollection)?_c('b-tab',{attrs:{\"title\":_vm.$t('map'),\"no-body\":\"\"}},[_c('Map',{attrs:{\"stac\":_vm.data,\"stacLayerData\":_vm.mapData,\"popover\":\"\"},on:{\"dataChanged\":_vm.dataChanged}})],1):_vm._e(),(_vm.hasThumbnails)?_c('b-tab',{attrs:{\"title\":_vm.$t('thumbnails'),\"no-body\":\"\"}},[_c('Thumbnails',{attrs:{\"thumbnails\":_vm.thumbnails}})],1):_vm._e()],1)],1)],1):_vm._e(),(_vm.hasAssets)?_c('Assets',{attrs:{\"assets\":_vm.assets,\"context\":_vm.data,\"shown\":_vm.shownAssets},on:{\"showAsset\":_vm.showAsset}}):_vm._e(),(_vm.hasItemAssets && !_vm.hasItems)?_c('Assets',{attrs:{\"assets\":_vm.data.item_assets,\"definition\":true}}):_vm._e(),(_vm.hasProviders)?_c('Providers',{attrs:{\"providers\":_vm.data.providers}}):_vm._e(),_c('Metadata',{staticClass:\"mb-4\",attrs:{\"title\":_vm.$t('metadata.title'),\"type\":_vm.data.type,\"data\":_vm.data,\"ignoreFields\":_vm.ignoredMetadataFields}}),(_vm.collectionLink)?_c('CollectionLink',{attrs:{\"link\":_vm.collectionLink}}):_vm._e(),(_vm.linkPosition === 'right')?_c('Links',{attrs:{\"title\":_vm.$t('additionalResources'),\"links\":_vm.additionalLinks}}):_vm._e()],1),(_vm.hasCatalogs)?_c('b-col',{staticClass:\"catalogs-container\"},[_c('Catalogs',{attrs:{\"catalogs\":_vm.catalogs,\"hasMore\":_vm.hasMoreCollections},on:{\"loadMore\":_vm.loadMoreCollections}})],1):_vm._e(),(_vm.hasItems)?_c('b-col',{staticClass:\"items-container\"},[_c('Items',{attrs:{\"stac\":_vm.data,\"items\":_vm.items,\"api\":_vm.isApi,\"apiFilters\":_vm.filters,\"pagination\":_vm.itemPages,\"loading\":_vm.apiItemsLoading},on:{\"paginate\":_vm.paginateItems,\"filterItems\":_vm.filterItems}}),(_vm.hasItemAssets)?_c('Assets',{attrs:{\"assets\":_vm.data.item_assets,\"definition\":true}}):_vm._e()],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',{staticClass:\"catalogs mb-4\"},[_c('h2',[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$tc('stacCatalog', _vm.catalogs.length )))]),(_vm.isComplete)?_c('b-badge',{attrs:{\"pill\":\"\",\"variant\":\"secondary ml-2\"}},[(_vm.catalogs.length !== _vm.catalogView.length)?[_vm._v(_vm._s(_vm.catalogView.length)+\"/\"+_vm._s(_vm.catalogs.length))]:[_vm._v(_vm._s(_vm.catalogs.length))]],2):_vm._e(),_c('ViewButtons',{staticClass:\"ml-4\",model:{value:(_vm.view),callback:function ($$v) {_vm.view=$$v},expression:\"view\"}}),(_vm.isComplete && _vm.catalogs.length > 1)?_c('SortButtons',{staticClass:\"ml-2\",model:{value:(_vm.sort),callback:function ($$v) {_vm.sort=$$v},expression:\"sort\"}}):_vm._e()],1),(_vm.isComplete && _vm.catalogs.length > 1)?_c('SearchBox',{staticClass:\"mt-3 mb-2\",attrs:{\"placeholder\":_vm.$t('catalogs.filterByTitle')},model:{value:(_vm.searchTerm),callback:function ($$v) {_vm.searchTerm=$$v},expression:\"searchTerm\"}}):_vm._e(),(_vm.searchTerm && _vm.catalogView.length === 0)?_c('b-alert',{attrs:{\"variant\":\"warning\",\"show\":\"\"}},[_vm._v(_vm._s(_vm.$t('catalogs.noMatches')))]):_vm._e(),_c(_vm.cardsComponent,_vm._b({tag:\"component\"},'component',_vm.cardsComponentProps,false),_vm._l((_vm.catalogView),function(catalog){return _c('Catalog',{key:catalog.href,attrs:{\"catalog\":catalog}})}),1),(_vm.hasMore)?_c('b-button',{directives:[{name:\"b-visible\",rawName:\"v-b-visible.300\",value:(_vm.loadMore),expression:\"loadMore\",modifiers:{\"300\":true}}],attrs:{\"variant\":\"primary\"},on:{\"click\":_vm.loadMore}},[_vm._v(_vm._s(_vm.$t('catalogs.loadMore')))]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-button-group',{attrs:{\"title\":_vm.$t('view.title'),\"size\":\"sm\"}},[_c('b-button',{attrs:{\"title\":_vm.$t('view.tiles.title'),\"variant\":\"outline-primary\",\"pressed\":_vm.value === 'cards'},on:{\"click\":function($event){return _vm.toggle('cards')}}},[_c('b-icon-bricks'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('view.tiles.label')))])],1),_c('b-button',{attrs:{\"title\":_vm.$t('view.list.title'),\"variant\":\"outline-primary\",\"pressed\":_vm.value === 'list'},on:{\"click\":function($event){return _vm.toggle('list')}}},[_c('b-icon-list-task'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('view.list.label')))])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ViewButtons.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ViewButtons.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ViewButtons.vue?vue&type=template&id=6a51668d\"\nimport script from \"./ViewButtons.vue?vue&type=script&lang=js\"\nexport * from \"./ViewButtons.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import ViewButtons from './ViewButtons.vue';\n\nexport default {\n components: {\n ViewButtons\n },\n computed: {\n cardsComponent() {\n return (this.view === 'list') ? 'div' : 'b-card-group';\n },\n cardsComponentProps() {\n if (this.view === 'list') {\n return {\n class: [\n 'card-list'\n ]\n };\n }\n else {\n return {\n columns: true\n };\n }\n },\n view: {\n get() {\n return this.$store.state.cardViewMode;\n },\n set(cardViewMode) {\n this.$store.commit('config', { cardViewMode });\n }\n }\n }\n};","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalogs.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalogs.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Catalogs.vue?vue&type=template&id=7aceb6cd&scoped=true\"\nimport script from \"./Catalogs.vue?vue&type=script&lang=js\"\nexport * from \"./Catalogs.vue?vue&type=script&lang=js\"\nimport style0 from \"./Catalogs.vue?vue&type=style&index=0&id=7aceb6cd&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7aceb6cd\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Catalog.vue?vue&type=template&id=ad6871b0\"\nimport script from \"./Catalog.vue?vue&type=script&lang=js\"\nexport * from \"./Catalog.vue?vue&type=script&lang=js\"\nimport style0 from \"./Catalog.vue?vue&type=style&index=0&id=ad6871b0&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Browse.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Browse.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Browse.vue?vue&type=template&id=94309aca\"\nimport script from \"./Browse.vue?vue&type=script&lang=js\"\nexport * from \"./Browse.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Browse from '../views/Browse.vue';\n\nfunction getRoutes(config) {\n let routes = [];\n\n if (config.allowExternalAccess) {\n routes.push({\n path: \"/external/(.*)\",\n name: \"browseExternal\",\n component: Browse,\n props: route => {\n return {\n path: `/external/${route.params.pathMatch}`\n };\n }\n });\n }\n\n if (!config.catalogUrl) {\n routes.push({\n path: \"/\",\n name: \"select\",\n component: () => import(\"../views/SelectDataSource.vue\")\n });\n routes.push({\n path: \"/search/external/(.*)\",\n name: \"search\",\n component: () => import(\"../views/Search.vue\"),\n props: route => {\n return {\n loadParent: `/external/${route.params.pathMatch}`\n };\n }\n });\n }\n else {\n routes.push({\n path: \"/search\",\n name: \"search\",\n component: () => import(\"../views/Search.vue\")\n });\n }\n\n routes.push({\n path: \"/(.*)\",\n name: \"browse\",\n component: Browse,\n props: route => {\n return {\n path: route.params.pathMatch\n };\n }\n });\n\n return routes;\n}\n\nexport default getRoutes;","import i18n from '../../../i18n.js';\nimport CqlComparisonOperator from './comparison';\n\nexport class CqlLike extends CqlComparisonOperator {\n\n static SYMBOL = \"like\";\n\n constructor(pred = null, obj = null) {\n super(CqlLike.SYMBOL, pred, obj);\n }\n\n static get label() {\n return \"~\";\n }\n\n static get longLabel() {\n return i18n.t('search.matches');\n }\n\n static get description() {\n return i18n.t('search.likeOperatorDescription');\n }\n\n}\n","import { formatKey } from \"@radiantearth/stac-fields/helper\";\nimport i18n from '../../i18n.js';\nimport { CqlEqual, CqlGreaterThan, CqlGreaterThanEqual, CqlLessThan, CqlLessThanEqual, CqlNotEqual } from \"./operators/comparison\";\nimport { CqlLike } from \"./operators/advanced\";\n\nexport default class Queryable {\n\n constructor(id, schema) {\n this.id = id;\n this.schema = schema;\n }\n\n get title() {\n if (typeof this.schema.title === 'string') {\n return this.schema.title;\n }\n return formatKey(this.id);\n }\n\n get description() {\n if (this.isTemporal) {\n return i18n.t('search.dateDescription');\n }\n return \"\";\n }\n\n get supported() {\n return this.isText || this.isNumeric || this.isBoolean;\n }\n\n is(type) {\n return this.types.includes(type);\n }\n\n get isSelection() {\n return Array.isArray(this.schema.enum);\n }\n\n get isText() {\n return this.is('string');\n }\n\n get isBoolean() {\n return this.is('boolean');\n }\n\n get isNumeric() {\n return this.is('number') || this.is('integer');\n }\n\n get isDate() {\n return this.isText && this.schema.format === 'date';\n }\n\n get isDateTime() {\n return this.isText && this.schema.format === 'date-time';\n }\n\n get isTemporal() {\n return this.isDate || this.isDateTime;\n }\n\n get defaultValue() {\n if (typeof this.schema.default !== 'undefined') {\n return this.schema.default;\n }\n else if (this.isSelection) {\n return this.schema.enum[0];\n }\n else if (this.isTemporal) {\n return new Date();\n }\n else if (this.isNumeric) {\n if (typeof this.schema.minimum !== 'undefined') {\n return this.schema.minimum;\n }\n return 0;\n }\n else if (this.isText) {\n return '';\n }\n else if (this.isBoolean) {\n return false;\n }\n // todo: Support boolean\n return null;\n }\n\n get types() {\n if (typeof this.schema.type === 'string') {\n return [this.schema.type];\n }\n else if (Array.isArray(this.schema.type)) {\n return this.schema.type;\n }\n return [];\n }\n\n getOperators(cql) {\n let ops = [CqlEqual, CqlNotEqual];\n if (this.isNumeric || this.isTemporal) {\n ops.push(CqlLessThan);\n ops.push(CqlLessThanEqual);\n ops.push(CqlGreaterThan);\n ops.push(CqlGreaterThanEqual);\n }\n else if (this.isText && cql.advancedComparison) {\n ops.push(CqlLike);\n }\n return ops;\n }\n\n toText() {\n return this.id;\n }\n\n toJSON() {\n return { property: this.id };\n }\n\n}","import axios from \"axios\";\nimport URI from \"urijs\";\nimport Utils from \"../utils\";\n\nexport class Loading {\n\n constructor(show = false, loadApi = false) {\n this.show = Boolean(show);\n this.loadApi = Boolean(loadApi);\n }\n\n}\n\nexport async function stacRequest(cx, link) {\n let opts;\n let headers = {\n // 'Access-Control-Allow-Origin': '*',\n 'Accept-Language': cx.getters.acceptedLanguages\n };\n if (Utils.isObject(link)) {\n let method = typeof link.method === 'string' ? link.method.toLowerCase() : 'get';\n let url = cx.getters.getRequestUrl(link.href);\n if (Utils.hasText(link.type)) {\n headers.Accept = link.type;\n }\n if (!cx.getters.isExternalUrl(url)) {\n Object.assign(headers, cx.state.requestHeaders);\n }\n if (Utils.isObject(link.headers)) {\n Object.assign(headers, link.headers);\n }\n opts = {\n method,\n url,\n headers,\n data: link.body\n // ToDo: Support for merge property from STAC API\n };\n }\n else if (typeof link === 'string') {\n let url = cx.getters.getRequestUrl(link);\n if (!cx.getters.isExternalUrl(url)) {\n Object.assign(headers, cx.state.requestHeaders);\n }\n opts = {\n method: 'get',\n url,\n headers\n };\n }\n else {\n opts = link;\n }\n return await axios(opts);\n}\n\n\nexport function unproxyUrl(absoluteUrl, proxy) {\n if (absoluteUrl instanceof URI) {\n absoluteUrl = absoluteUrl.toString();\n }\n if (typeof absoluteUrl === 'string' && Array.isArray(proxy)) {\n return absoluteUrl.replace(proxy[1], proxy[0]);\n }\n return absoluteUrl;\n}\n\nexport function proxyUrl(absoluteUrl, proxy) {\n if (absoluteUrl instanceof URI) {\n absoluteUrl = absoluteUrl.toString();\n }\n if (typeof absoluteUrl === 'string' && Array.isArray(proxy)) {\n return absoluteUrl.replace(proxy[0], proxy[1]);\n }\n return absoluteUrl;\n}\n\nexport function processSTAC(state, stac) {\n if (typeof state.preprocessSTAC === 'function') {\n stac = state.preprocessSTAC(stac, state);\n }\n return Object.freeze(stac);\n}\n\nexport function isAuthenticationError(error) {\n return [401, 403].includes(error?.response?.status);\n}\n\nexport function addQueryIfNotExists(uri, query) {\n if (Utils.size(query) == 0) {\n return uri;\n }\n for (let key in query) {\n if (!uri.hasQuery(key)) {\n uri.addQuery(key, query[key]);\n }\n }\n return uri;\n}\n","import Vue from \"vue\";\nimport Vuex from \"vuex\";\n\nimport axios from \"axios\";\nimport URI from \"urijs\";\n\nimport i18n from '../i18n';\nimport { ogcQueryables, stacBrowserSpecialHandling, stacPagination } from \"../rels\";\nimport Utils, { schemaMediaType, BrowserError } from '../utils';\nimport STAC from '../models/stac';\nimport Queryable from '../models/cql2/queryable';\n\nimport { addQueryIfNotExists, isAuthenticationError, Loading, processSTAC, proxyUrl, unproxyUrl, stacRequest } from './utils';\nimport { getBest } from '../locale-id';\n\nfunction getStore(config, router) {\n // Local settings (e.g. for currently loaded STAC entity)\n const localDefaults = () => ({\n url: '',\n title: config.catalogTitle,\n description: null,\n data: null,\n valid: null,\n parents: null,\n globalError: null,\n\n localRequestQueryParameters: {},\n stateQueryParameters: {\n language: null,\n asset: [],\n itemdef: []\n },\n\n apiItems: [],\n apiItemsLink: null,\n apiItemsPagination: {},\n\n queryables: null\n });\n\n const catalogDefaults = () => ({\n queue: [],\n privateQueryParameters: {},\n authData: null,\n // catalogUrlData: null, // cannot set this as setting it would overwrite the actual value which is added \"beforeCreate\"\n doAuth: [],\n conformsTo: [],\n dataLanguage: null,\n dataLanguages: [],\n\n apiCollections: [],\n apiItemsLoading: {},\n nextCollectionsLink: null\n });\n\n return new Vuex.Store({\n strict: true,\n state: Object.assign({}, config, localDefaults(), catalogDefaults(), {\n // Global settings\n database: {}, // STAC object, Error object or Loading object or Promise (when loading)\n allowSelectCatalog: !config.catalogUrl,\n globalRequestQueryParameters: config.requestQueryParameters,\n uiLanguage: config.locale\n }),\n getters: {\n loading: state => !state.url || !state.data || state.database[state.url] instanceof Loading,\n getApiItemsLoading: state => data => {\n let id = '';\n if (data instanceof Loading) {\n return true;\n }\n else if (data instanceof STAC) {\n id = data.id;\n }\n else if (typeof data === 'string') {\n id = data;\n }\n return state.apiItemsLoading[id] || false;\n },\n error: state => state.database[state.url] instanceof Error ? state.database[state.url] : null,\n getStac: state => (source, returnErrorObject = false) => {\n if (source instanceof STAC) {\n return source;\n }\n if (Utils.isObject(source) && Utils.hasText(source.href)) {\n source = source.href;\n }\n if (!Utils.hasText(source)) {\n return null;\n }\n let absoluteUrl = Utils.toAbsolute(source, state.url);\n let data = state.database[absoluteUrl];\n if (data instanceof STAC || (returnErrorObject && data instanceof Error)) {\n return data;\n }\n else {\n return null;\n }\n },\n\n displayCatalogTitle: (state, getters) => STAC.getDisplayTitle(getters.root, state.catalogTitle),\n\n isCollection: state => state.data?.isCollection() || false,\n isCatalog: state => state.data?.isCatalog() || false,\n isCatalogLike: state => state.data?.isCatalogLike() || false,\n isItem: state => state.data?.isItem() || false,\n\n root: (_, getters) => getters.getStac(getters.rootLink),\n\n rootLink: state => {\n let link = state.data?.getStacLinkWithRel('root');\n if (link) {\n return link;\n }\n else if (state.catalogUrl) {\n return Utils.createLink(state.catalogUrl, 'root');\n }\n else if (state.url && state.data instanceof STAC && state.data.getLinksWithRels(['conformance', 'service-desc', 'service-doc', 'data', 'search']).length > 0) {\n return Utils.createLink(state.url, 'root');\n }\n else if (state.url) {\n // Fallback: If we detect OGC API like paths, try to guess the paths\n let uri = URI(state.url);\n let path = uri.segment(-2);\n if (['collections', 'items'].includes(path)) {\n uri.segment(-1, \"\");\n uri.segment(-1, \"\");\n if (path === 'items') {\n uri.segment(-1, \"\");\n uri.segment(-1, \"\");\n }\n return Utils.createLink(uri.toString(), 'root');\n }\n }\n return null;\n },\n parentLink: state => {\n if (state.data instanceof STAC) {\n let link = state.data.getStacLinkWithRel('parent');\n if (link) {\n return link;\n }\n }\n\n // Fallback: If we detect OGC API like paths, try to guess the paths\n if (state.url) {\n let uri = URI(state.url);\n let path = uri.segment(-2);\n if (['collections', 'items'].includes(path)) {\n uri.segment(-1, \"\");\n uri.segment(-1, \"\");\n return Utils.createLink(uri.toString(), 'parent');\n }\n }\n\n return null;\n },\n collectionLink: state => {\n if (state.data instanceof STAC) {\n let link = state.data?.getStacLinkWithRel('collection');\n if (link) {\n return link;\n }\n }\n\n // Fallback: If we detect OGC API like paths, try to guess the paths\n if (state.url) {\n let uri = URI(state.url);\n let path = uri.segment(-2);\n if (path == 'items') {\n uri.segment(-1, \"\");\n uri.segment(-1, \"\");\n return Utils.createLink(uri.toString(), 'collection');\n }\n }\n\n return null;\n },\n supportsConformance: state => classes => {\n if(!Array.isArray(classes)) {\n return classes;\n }\n let classRegexp = classes\n .map(c => c.replaceAll('*', '[^/]+').replace(/\\/?#/, '/?#'))\n .join('|');\n let regexp = new RegExp('^(' + classRegexp + ')$');\n return Boolean(state.conformsTo.find(uri => uri.match(regexp)));\n },\n supportsExtension: state => schemaUri => {\n return Utils.supportsExtension(state.data, schemaUri);\n },\n\n items: state => {\n if (state.apiItems.length > 0) {\n return state.apiItems;\n }\n else if (state.data) {\n return state.data.getStacLinksWithRel('item');\n }\n return [];\n },\n catalogs: state => {\n let hasCollections = Boolean(state.data instanceof STAC && state.data.getApiCollectionsLink() && state.apiCollections.length > 0);\n let hasChilds = Boolean(state.data instanceof STAC);\n let showCollections = !state.apiCatalogPriority || state.apiCatalogPriority === 'collections';\n let showChilds = !state.apiCatalogPriority || state.apiCatalogPriority === 'childs';\n let catalogs = [];\n if (hasCollections && showCollections) {\n catalogs = catalogs.concat(state.apiCollections);\n }\n if (hasChilds && showChilds) {\n catalogs = STAC.addMissingChildren(catalogs, state.data);\n }\n return catalogs;\n },\n hasMoreCollections: state => Boolean(state.nextCollectionsLink),\n\n // hasAsset also checks whether the assets have a href and thus are not item asset definitions\n hasAssets: (state, getters) => Boolean(Object.values(getters.assets).find(asset => Utils.isObject(asset) && typeof asset.href === 'string')),\n assets: (state, getters) => {\n if (!Utils.isObject(state.data?.assets)) {\n return {};\n }\n else if (state.showThumbnailsAsAssets) {\n return state.data.assets;\n }\n else {\n let assets = {};\n let thumbnails = getters.thumbnails;\n for (let key in state.data.assets) {\n let asset = state.data.assets[key];\n if (!thumbnails.includes(asset)) {\n assets[key] = asset;\n }\n }\n return assets;\n }\n },\n thumbnails: state => state.data ? state.data.getThumbnails(true) : [],\n additionalLinks: state => state.data ? state.data.getLinksWithOtherRels(stacBrowserSpecialHandling).filter(link => link.rel !== 'preview' || !Utils.canBrowserDisplayImage(link)) : [],\n\n toBrowserPath: (state, getters) => url => {\n if (!Utils.hasText(url)) {\n url = '/';\n }\n\n let absolute = Utils.toAbsolute(unproxyUrl(url, state.stacProxyUrl), state.url, false);\n let relative;\n if (!state.allowSelectCatalog && state.catalogUrl) {\n relative = absolute.relativeTo(state.catalogUrl);\n }\n\n if (typeof relative === 'undefined' || getters.isExternalUrl(absolute, false)) {\n if (!state.allowExternalAccess) {\n return absolute.toString();\n }\n let parts = ['/external'];\n let protocol = absolute.protocol();\n if (protocol !== 'https') {\n parts.push(protocol + ':');\n }\n parts.push(absolute.authority());\n parts.push(absolute.path().replace(/^\\//, ''));\n let path = parts.join('/');\n let q = absolute.query();\n if (q) {\n path += `?${q}`;\n }\n return path;\n }\n else {\n return '/' + relative.toString();\n }\n },\n fromBrowserPath: (state, getters) => url => {\n const externalRE = /^\\/(search\\/)?external\\//;\n if (!Utils.hasText(url) || url === '/') {\n url = state.catalogUrl;\n }\n else if (url.match(externalRE)) {\n let parts = url.replace(externalRE, '').split('/');\n let protocol;\n if (!parts[0].endsWith(':')) {\n protocol = 'https:';\n }\n else {\n protocol = parts.shift();\n }\n url = `${protocol}//${parts.join('/')}`;\n }\n else if (!state.allowSelectCatalog && state.catalogUrl) {\n url = Utils.toAbsolute(url, state.catalogUrl, false);\n }\n return getters.getRequestUrl(url, null, true);\n },\n isExternalUrl: state => (absoluteUrl, whitelist = true) => {\n if (!state.catalogUrl) {\n return false;\n }\n if (!(absoluteUrl instanceof URI)) {\n absoluteUrl = URI(absoluteUrl);\n }\n if (whitelist && Array.isArray(state.allowedDomains) && state.allowedDomains.includes(absoluteUrl.domain())) {\n return false;\n }\n let relative = absoluteUrl.relativeTo(state.catalogUrl);\n if (relative.equals(absoluteUrl)) {\n return true;\n }\n let relativeStr = relative.toString();\n return relativeStr.startsWith('//') || relativeStr.startsWith('../');\n },\n getRequestUrl: (state, getters) => (url, baseUrl = null, addLocalQueryParams = false) => {\n let absoluteUrl = Utils.toAbsolute(proxyUrl(url, state.stacProxyUrl), baseUrl ? baseUrl : state.url, false);\n if (!getters.isExternalUrl(absoluteUrl)) {\n // Check whether private params are present and add them if the URL is part of the catalog\n addQueryIfNotExists(absoluteUrl, state.privateQueryParameters);\n // Check if we need to add global request params\n addQueryIfNotExists(absoluteUrl, state.globalRequestQueryParameters);\n if (addLocalQueryParams) {\n // Check if we need to add local request params\n addQueryIfNotExists(absoluteUrl, state.localRequestQueryParameters);\n }\n }\n // If we are proxying a STAC Catalog, replace any URI with the proxied address.\n return absoluteUrl.toString();\n },\n\n acceptedLanguages: state => {\n const languages = {};\n // Implement in ascending order:\n languages['en'] = 0.1;\n if (Array.isArray(state.supportedLocales)) {\n state.supportedLocales.forEach(locale => languages[locale] = 0.2);\n }\n if (Utils.hasText(state.fallbackLocale)) {\n languages[state.fallbackLocale] = 0.5;\n }\n if (Array.isArray(navigator.languages)) {\n navigator.languages.forEach(locale => languages[locale] = 0.7);\n }\n if (Utils.hasText(state.locale)) {\n languages[state.locale] = 1;\n }\n return Object.entries(languages)\n .sort((a,b) => {\n if (a[1] > b[1]) {\n return -1;\n }\n else if (a[1] < b[1]) {\n return 1;\n }\n return 0;\n })\n .map(([l, q]) => q >= 1 ? l : `${l};q=${q}`)\n .join(',');\n }\n },\n mutations: {\n config(state, config) {\n for (let key in config) {\n let value = config[key];\n switch (key) {\n case 'catalogTitle':\n state.catalogTitle = value;\n break;\n case 'catalogUrl':\n if (typeof value === 'function') {\n state.catalogUrl = value();\n }\n else if (typeof value === 'string') {\n state.catalogUrl = value;\n }\n break;\n case 'stacProxyUrl':\n // Proxy URLs coming from CLI have the form https://thingtoproxy.com;http://proxy:111\n if (typeof value === 'string' && value.includes(';')) {\n state[key] = value.split(';');\n }\n else {\n state[key] = value;\n }\n break;\n case 'crossOriginMedia':\n state.crossOriginMedia = ['anonymous', 'use-credentials'].includes(value) ? value : null;\n break;\n case 'cardViewSort':\n switch(value) {\n case 'asc':\n state.cardViewSort = 1;\n break;\n case 'desc':\n state.cardViewSort = -1;\n break;\n default:\n state.cardViewSort = 0;\n }\n break;\n default:\n state[key] = value;\n }\n }\n },\n languages(state, {uiLanguage, dataLanguage}) {\n state.dataLanguage = dataLanguage || null;\n state.uiLanguage = uiLanguage || null;\n },\n setQueryParameter(state, { type, key, value }) {\n type = `${type}QueryParameters`;\n if (typeof value === 'undefined') {\n Vue.delete(state[type], key);\n }\n else {\n Vue.set(state[type], key, value);\n }\n },\n setRequestHeader(state, { key, value }) {\n if (typeof value === 'undefined') {\n Vue.delete(state.requestHeaders, key);\n }\n else {\n Vue.set(state.requestHeaders, key, value);\n }\n },\n requestAuth(state, callback) {\n if (typeof callback === 'function') {\n state.doAuth.push(callback);\n }\n else {\n state.doAuth = [];\n }\n },\n setAuthData(state, value) {\n state.authData = value;\n },\n setCatalogUrlData(state, value) {\n state.catalogUrlData = value;\n },\n openCollapsible(state, { type, uid }) {\n const idx = state.stateQueryParameters[type].indexOf(uid);\n // need to prevent duplicates because of the way the collapse v-model works\n if (idx === -1) {\n state.stateQueryParameters[type].push(uid);\n }\n },\n state(state, newState) {\n state.stateQueryParameters = newState;\n },\n closeCollapsible(state, { type, uid }) {\n const idx = state.stateQueryParameters[type].indexOf(uid);\n if (idx > -1) {\n Vue.delete(state.stateQueryParameters[type], idx);\n }\n },\n updateLoading(state, { url, show, loadApi }) {\n let data = state.database[url];\n Vue.set(data, 'show', show || data.show);\n Vue.set(data, 'loadApi', loadApi || data.loadApi);\n },\n loading(state, { url, loading }) {\n Vue.set(state.database, url, loading);\n if (loading.show) {\n state.url = url;\n }\n },\n loaded(state, { url, data }) {\n Vue.set(state.database, url, processSTAC(state, data));\n },\n clear(state, url) {\n Vue.delete(state.database, url);\n },\n resetCatalog(state, clearAll) {\n Object.assign(state, catalogDefaults());\n Object.assign(state, localDefaults());\n if (!state.supportedLocales.includes(state.locale)) {\n state.locale = config.locale;\n }\n if (clearAll) {\n state.catalogUrl = config.catalogUrl;\n state.catalogTitle = config.catalogTitle;\n state.database = {};\n }\n },\n resetPage(state) {\n Object.assign(state, localDefaults());\n },\n showPage(state, { url, title, description, stac }) {\n if (!stac) {\n stac = state.database[url] || null;\n }\n state.url = url || null;\n state.data = stac instanceof STAC ? stac : null;\n state.valid = null;\n state.description = description;\n\n // Set title\n if (title) {\n state.title = title;\n }\n else {\n state.title = STAC.getDisplayTitle(state.data, state.catalogTitle);\n if (state.data) {\n let description = state.data.getMetadata('description');\n if (Utils.hasText(description)) {\n state.description = description;\n }\n }\n }\n\n if (state.data) {\n let source = state.data.isItem() ? state.data.properties : state.data;\n let languages = Array.isArray(source.languages) ? source.languages.slice() : [];\n if (Utils.isObject(source.language)) {\n languages.unshift(source.language);\n }\n state.dataLanguages = languages.filter(lang => Utils.isObject(lang) && typeof lang.code === 'string');\n }\n },\n errored(state, { url, error }) {\n if (!(error instanceof Error)) {\n error = new Error(error);\n }\n Vue.set(state.database, url, error);\n },\n valid(state, valid) {\n state.valid = valid;\n },\n queue(state, url) {\n state.queue.push(url);\n },\n unqueue(state, url) {\n let i = state.queue.indexOf(url);\n if (i !== -1) {\n state.queue.splice(i, 1);\n }\n },\n removeFromQueue(state, num) {\n state.queue.splice(0, num);\n },\n setConformanceClasses(state, classes) {\n if (Array.isArray(classes)) {\n state.conformsTo = classes;\n }\n },\n setApiItemsLink(state, link) {\n state.apiItemsLink = link;\n },\n toggleApiItemsLoading(state, collectionId = '') {\n if (state.apiItemsLoading[collectionId]) {\n Vue.delete(state.apiItemsLoading, collectionId);\n }\n else {\n Vue.set(state.apiItemsLoading, collectionId, true);\n }\n },\n setApiItems(state, { data, stac, show }) {\n if (!Utils.isObject(data) || !Array.isArray(data.features)) {\n return;\n }\n let apiItems = data.features.map(feature => processSTAC(state, feature));\n\n if (show) {\n state.apiItems = apiItems;\n }\n\n // Handle pagination links\n let pageLinks = Utils.getLinksWithRels(data.links, stacPagination);\n let pages = {};\n for (let pageLink of pageLinks) {\n let rel = pageLink.rel === 'previous' ? 'prev' : pageLink.rel;\n pages[rel] = pageLink;\n }\n\n if (show) {\n state.apiItemsPagination = pages;\n }\n\n if (stac instanceof STAC) {\n // ToDo: Prev link only required when state.apiItems is not cached(?) -> cache apiItems?\n stac.setApiData(apiItems, pages.next, pages.prev);\n }\n },\n addApiCollections(state, { data, stac, show }) {\n if (!Utils.isObject(data) || !Array.isArray(data.collections)) {\n return;\n }\n\n let collections = data.collections.map(collection => processSTAC(state, collection));\n let nextLink = Utils.getLinkWithRel(data.links, 'next');\n if (show) {\n state.nextCollectionsLink = nextLink;\n state.apiCollections = state.apiCollections.concat(collections);\n }\n if (stac instanceof STAC) {\n stac.setApiData(collections, nextLink);\n }\n },\n resetApiItems(state) {\n state.apiItems = [];\n state.apiItemsPagination = {};\n },\n parents(state, parents) {\n state.parents = parents;\n },\n showGlobalError(state, error) {\n console.error(error);\n state.globalError = error;\n },\n addQueryables(state, queryables) {\n if (Utils.isObject(queryables) && Utils.isObject(queryables.properties)) {\n state.queryables = Object.entries(queryables.properties)\n .map(([key, schema]) => new Queryable(key, schema));\n }\n else {\n state.queryables = [];\n }\n }\n },\n actions: {\n async switchLocale(cx, {locale, userSelected}) {\n cx.commit('config', {locale});\n\n if (cx.state.storeLocale && userSelected) {\n try {\n window.localStorage.setItem('locale', locale);\n } catch (error) {\n console.error(error);\n }\n }\n\n // Locale for UI\n let uiLanguage = getBest(cx.state.supportedLocales, locale, cx.state.fallbackLocale);\n // Locale for data\n let dataLanguageCodes = cx.state.dataLanguages.map(l => l.code);\n let dataLanguageFallback = cx.state.dataLanguages.length > 0 ? cx.state.dataLanguages[0].code : uiLanguage;\n let dataLanguage = getBest(dataLanguageCodes, locale, dataLanguageFallback);\n\n cx.commit('languages', {dataLanguage, uiLanguage});\n cx.commit('setQueryParameter', { type: 'state', key: 'language', value: locale });\n },\n async setCatalogUrl(cx, value) {\n if (!Utils.hasText(value)) {\n value = null;\n }\n cx.commit('setCatalogUrlData', value);\n },\n async setAuth(cx, value) {\n if (!Utils.hasText(value)) {\n value = null;\n }\n // Set the value the user has provided separately\n cx.commit('setAuthData', value);\n\n // Format the value and add it to query parameters or headers\n let authConfig = cx.state.authConfig;\n let key = authConfig.key;\n if (value) {\n if (authConfig.formatter === 'Bearer') {\n value = `Bearer ${value}`;\n }\n else if (typeof authConfig.formatter === 'function') {\n value = authConfig.formatter(value);\n }\n }\n if (!Utils.hasText(value)) {\n value = undefined;\n }\n if (authConfig.type === 'query') {\n cx.commit('setQueryParameter', {type: 'private', key, value});\n }\n else if (authConfig.type === 'header') {\n cx.commit('setRequestHeader', {key, value});\n }\n },\n async loadBackground(cx, count) {\n let urls = cx.state.queue.slice(0, count);\n if (urls.length > 0) {\n let promises = [];\n for (let url of urls) {\n promises.push(cx.dispatch('load', { url }));\n }\n cx.commit('removeFromQueue', count);\n return await Promise.all(promises);\n }\n },\n async loadParents(cx) {\n if (!(cx.state.data instanceof STAC)) {\n cx.commit('parents', []);\n return;\n }\n\n let parents = [];\n let stac = cx.state.data;\n while (stac) {\n let parentLink = stac.getLinkWithRel('parent') || stac.getLinkWithRel('root');\n if (!parentLink) {\n break;\n }\n let url = Utils.toAbsolute(parentLink.href, stac.getAbsoluteUrl());\n await cx.dispatch('load', { url, loadApi: true });\n let parentStac = cx.getters.getStac(url, true);\n if (parentStac instanceof Error) {\n cx.commit('parents', parentStac);\n return;\n }\n if (parentStac === stac) {\n break;\n }\n parents.push(parentStac);\n stac = parentStac;\n }\n cx.commit('parents', parents);\n },\n async load(cx, args) {\n let { url, fromBrowser, show, loadApi, loadRoot, force } = args;\n let path;\n if (fromBrowser) {\n path = url.startsWith('/') ? url : '/' + url;\n url = cx.getters.fromBrowserPath(url);\n }\n else {\n url = Utils.toAbsolute(url, cx.state.url);\n path = cx.getters.toBrowserPath(url);\n }\n\n // Load the root catalog data if not available (e.g. after page refresh or external access)\n if (!loadRoot && path !== '/' && cx.state.catalogUrl && !cx.getters.getStac(cx.state.catalogUrl)) {\n await cx.dispatch(\"load\", { url: cx.state.catalogUrl, loadApi: true, loadRoot: true });\n }\n\n if (force) {\n cx.commit('clear', url);\n }\n\n let loading = new Loading(show, loadApi);\n let data = cx.state.database[url];\n if (data instanceof Loading) {\n cx.commit('updateLoading', { url, show, loadApi });\n return;\n }\n else if (!data || (data instanceof STAC && data.isPotentiallyIncomplete())) {\n cx.commit('loading', { url, loading });\n try {\n let response = await stacRequest(cx, url);\n if (!Utils.isObject(response.data)) {\n throw new BrowserError(i18n.t('errors.invalidJsonObject'));\n }\n data = new STAC(response.data, url, path);\n if (show) {\n // If we prefer another language abort redirect to the new language\n let localeLink = data.getLocaleLink(cx.state.dataLanguage);\n if (localeLink) {\n router.replace(cx.getters.toBrowserPath(localeLink.href));\n return;\n }\n }\n\n cx.commit('loaded', { url, data });\n\n if (!cx.getters.root) {\n let root = data.getLinkWithRel('root');\n if (root) {\n cx.commit('config', { catalogUrl: Utils.toAbsolute(root.href, url) });\n }\n }\n\n let conformanceLink = data.getStacLinkWithRel('conformance');\n if (Array.isArray(data.conformsTo) && data.conformsTo.length > 0) {\n cx.commit('setConformanceClasses', data.conformsTo);\n }\n else if (conformanceLink) {\n await cx.dispatch('loadOgcApiConformance', conformanceLink);\n }\n } catch (error) {\n if (cx.state.authConfig && isAuthenticationError(error)) {\n cx.commit('clear', url);\n cx.commit('requestAuth', () => cx.dispatch('load', args));\n return;\n }\n console.error(error);\n cx.commit('errored', { url, error });\n }\n }\n\n if (loading.loadApi && data instanceof STAC) {\n // Load API Collections\n if (data.getApiCollectionsLink()) {\n let args = { stac: data, show: loading.show };\n try {\n await cx.dispatch('loadNextApiCollections', args);\n } catch (error) {\n if (cx.state.authConfig && isAuthenticationError(error)) {\n cx.commit('requestAuth', () => cx.dispatch('loadNextApiCollections', args));\n }\n else {\n cx.commit('showGlobalError', {\n message: i18n.t('errors.loadApiCollectionsFailed'),\n error\n });\n }\n }\n }\n // Load API Items\n if (data.getApiItemsLink()) {\n let args = { stac: data, show: loading.show };\n try {\n await cx.dispatch('loadApiItems', args);\n } catch (error) {\n if (cx.state.authConfig && isAuthenticationError(error)) {\n cx.commit('requestAuth', () => cx.dispatch('loadApiItems', args));\n }\n else {\n cx.commit('showGlobalError', {\n message: i18n.t('errors.loadApiItemsFailed'),\n error\n });\n }\n }\n }\n }\n\n if (loading.show) {\n cx.commit('showPage', { url });\n }\n },\n async loadApiItems(cx, { link, stac, show, filters }) {\n let collectionId = stac instanceof STAC ? stac.id : '';\n cx.commit('toggleApiItemsLoading', collectionId);\n\n try {\n let baseUrl = cx.state.url;\n if (stac instanceof STAC) {\n link = stac.getApiItemsLink();\n baseUrl = stac.getAbsoluteUrl();\n }\n\n if (!Utils.isObject(filters)) {\n filters = {};\n }\n if (typeof filters.limit !== 'number') {\n filters.limit = cx.state.itemsPerPage;\n }\n\n link = Utils.addFiltersToLink(link, filters);\n\n let response = await stacRequest(cx, link);\n if (!Utils.isObject(response.data) || !Array.isArray(response.data.features)) {\n throw new BrowserError(i18n.t('errors.invalidStacItems'));\n }\n else {\n response.data.features = response.data.features.map(item => {\n try {\n if (!Utils.isObject(item) || item.type !== 'Feature') {\n return null;\n }\n let selfLink = Utils.getLinkWithRel(item.links, 'self');\n let url;\n if (selfLink?.href) {\n url = Utils.toAbsolute(selfLink.href, baseUrl);\n }\n else if (typeof item.id !== 'undefined') {\n let apiCollectionsLink = cx.getters.root?.getApiCollectionsLink();\n if (baseUrl) {\n url = Utils.toAbsolute(`items/${item.id}`, baseUrl);\n }\n else if (apiCollectionsLink) {\n url = Utils.toAbsolute(`${collectionId}/items/${item.id}`, apiCollectionsLink.href);\n }\n else if (cx.state.catalogUrl) {\n url = Utils.toAbsolute(`collections/${collectionId}/items/${item.id}`, cx.state.catalogUrl);\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n let data = cx.getters.getStac(url);\n if (data) {\n return data;\n }\n else {\n data = new STAC(item, url, cx.getters.toBrowserPath(url));\n data.markPotentiallyIncomplete();\n cx.commit('loaded', { data, url });\n return data;\n }\n } catch (error) {\n console.error(error);\n return null;\n }\n }).filter(item => item instanceof STAC);\n if (show) {\n cx.commit('setApiItemsLink', link);\n }\n cx.commit('setApiItems', { data: response.data, stac, show });\n cx.commit('toggleApiItemsLoading', collectionId);\n return response;\n }\n } catch (error) {\n cx.commit('toggleApiItemsLoading', collectionId);\n throw error;\n }\n },\n async loadNextApiCollections(cx, { stac, show }) {\n let link;\n if (stac) {\n // First page\n if (cx.state.apiCollections.length > 0) {\n // If we have already loaded collections, skip loading the first page\n return;\n }\n link = stac.getLinkWithRel('data');\n }\n else {\n // Second page and after\n stac = cx.state.data;\n link = cx.state.nextCollectionsLink;\n }\n if (!link) {\n return;\n }\n let response = await stacRequest(cx, link);\n if (!Utils.isObject(response.data) || !Array.isArray(response.data.collections)) {\n throw new BrowserError(i18n.t('errors.invalidStacCollections'));\n }\n else {\n response.data.collections = response.data.collections.map(collection => {\n let selfLink = Utils.getLinkWithRel(collection.links, 'self');\n let url;\n if (selfLink?.href) {\n url = Utils.toAbsolute(selfLink.href, cx.state.url || stac.getAbsoluteUrl());\n }\n else {\n url = Utils.toAbsolute(`collections/${collection.id}`, cx.state.catalogUrl || stac.getAbsoluteUrl());\n }\n let data = cx.getters.getStac(url);\n if (data) {\n return data;\n }\n else {\n data = new STAC(collection, url, cx.getters.toBrowserPath(url));\n data.markPotentiallyIncomplete();\n cx.commit('loaded', { data, url });\n return data;\n }\n });\n cx.commit('addApiCollections', { data: response.data, stac, show });\n }\n },\n async loadOgcApiConformance(cx, link) {\n let response = await stacRequest(cx, link);\n if (Utils.isObject(response.data) && Array.isArray(response.data.conformsTo)) {\n cx.commit('setConformanceClasses', response.data.conformsTo);\n }\n },\n async loadQueryables(cx, { stac, refParser = null }) {\n let schemas;\n try {\n let link = stac.getLinksWithRels(ogcQueryables)\n .find(link => Utils.isMediaType(link.type, schemaMediaType, true));\n let href = Utils.isObject(link) ? link.href : Utils.toAbsolute('queryables', stac.getAbsoluteUrl());\n let response = await stacRequest(cx, href);\n schemas = response.data; // Use data with $refs included as fallback anyway\n if (refParser) {\n try {\n schemas = await refParser.dereference(schemas);\n } catch (error) {\n console.error(error);\n }\n }\n } catch (error) {\n console.log('Queryables not supported by API');\n }\n cx.commit('addQueryables', schemas);\n },\n async loadGeoJson(cx, link) {\n try {\n let response = await stacRequest(cx, link);\n return response.data; // Use data with $refs included as fallback anyway\n } catch (error) {\n return null;\n }\n },\n async retryAfterAuth(cx) {\n let errorFn = error => cx.commit('showGlobalError', {\n error,\n message: i18n.t('errors.authFailed')\n });\n\n for (let callback of cx.state.doAuth) {\n try {\n let p = callback();\n if (p instanceof Promise) {\n p.catch(errorFn);\n }\n } catch (error) {\n errorFn(error);\n }\n }\n },\n async validate(cx, url) {\n if (typeof cx.state.valid === 'boolean') {\n return;\n }\n try {\n let uri = URI('https://api.staclint.com/url');\n uri.addSearch('stac_url', url);\n let response = await axios.get(uri.toString());\n cx.commit('valid', Boolean(response.data?.body?.valid_stac));\n } catch (error) {\n cx.commit('valid', error);\n }\n }\n },\n });\n}\n\nexport default getStore;","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-row',[_c('b-col',{attrs:{\"md\":\"12\"}},[_c('Source',{staticClass:\"float-right\",attrs:{\"title\":_vm.title,\"stacUrl\":_vm.url,\"stacVersion\":_vm.stacVersion}}),_c('h1',[(_vm.icon)?[_c('img',{staticClass:\"icon mr-2\",attrs:{\"src\":_vm.icon.href,\"alt\":_vm.icon.title,\"title\":_vm.icon.title}})]:_vm._e(),_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.title))])],2),(_vm.url || _vm.isSearchPage())?_c('p',{staticClass:\"lead\"},[(_vm.containerLink)?_c('i18n',{staticClass:\"in mr-3\",attrs:{\"tag\":\"span\",\"path\":\"in\"},scopedSlots:_vm._u([{key:\"catalog\",fn:function(){return [_c('StacLink',{attrs:{\"data\":_vm.containerLink}})]},proxy:true}],null,false,1458487365)}):_vm._e(),_c('b-button-group',[(_vm.parentLink)?_c('b-button',{attrs:{\"to\":_vm.toBrowserPath(_vm.parentLink.href),\"title\":_vm.parentLinkTitle,\"variant\":\"outline-primary\",\"size\":\"sm\"}},[_c('b-icon-arrow-90deg-up'),_vm._v(\" \"),_c('span',{staticClass:\"button-label prio\"},[_vm._v(_vm._s(_vm.$t('goToParent.label')))])],1):_vm._e(),(_vm.collectionLink)?_c('b-button',{attrs:{\"to\":_vm.toBrowserPath(_vm.collectionLink.href),\"title\":_vm.collectionLinkTitle,\"variant\":\"outline-primary\",\"size\":\"sm\"}},[_c('b-icon-folder-symlink'),_vm._v(\" \"),_c('span',{staticClass:\"button-label prio\"},[_vm._v(_vm._s(_vm.$t('goToCollection.label')))])],1):_vm._e(),_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.sidebar\",modifiers:{\"sidebar\":true}}],attrs:{\"variant\":\"outline-primary\",\"size\":\"sm\",\"title\":_vm.$t('browse')},on:{\"click\":function($event){return _vm.$emit('enableSidebar')}}},[_c('b-icon-book'),_vm._v(\" \"),_c('span',{staticClass:\"button-label prio\"},[_vm._v(_vm._s(_vm.$t('browse')))])],1),(_vm.searchBrowserLink)?_c('b-button',{attrs:{\"variant\":\"outline-primary\",\"size\":\"sm\",\"to\":_vm.searchBrowserLink,\"title\":_vm.$t('search.title'),\"pressed\":_vm.isSearchPage()}},[_c('b-icon-search'),_vm._v(\" \"),_c('span',{staticClass:\"button-label prio\"},[_vm._v(_vm._s(_vm.$t('search.title')))])],1):_vm._e(),(_vm.authConfig)?_c('b-button',{attrs:{\"variant\":\"outline-primary\",\"size\":\"sm\",\"title\":_vm.$t('authentication.button.title')},on:{\"click\":_vm.auth}},[(_vm.authData)?[_c('b-icon-lock'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('authentication.button.authenticated')))])]:[_c('b-icon-unlock'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('authentication.button.authenticate')))])]],2):_vm._e()],1)],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"share mt-1\"},[_c('b-button-group',[(_vm.stacUrl)?_c('b-button',{attrs:{\"size\":\"sm\",\"variant\":\"outline-primary\",\"id\":\"popover-link\",\"title\":_vm.$t('source.detailsAboutSource')}},[_c('b-icon-link'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('source.label')))])],1):_vm._e(),_c('b-button',{attrs:{\"size\":\"sm\",\"variant\":\"outline-primary\",\"id\":\"popover-share\",\"title\":_vm.$t('source.share.withOthers')}},[_c('b-icon-share'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('source.share.label')))])],1),_c('b-dropdown',{attrs:{\"size\":\"sm\",\"variant\":\"outline-primary\",\"right\":\"\",\"title\":_vm.$t('source.language.switch')},scopedSlots:_vm._u([{key:\"button-content\",fn:function(){return [_c('b-icon-flag'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('source.language.label', {currentLanguage: _vm.currentLanguage})))])]},proxy:true}])},_vm._l((_vm.languages),function(l){return _c('b-dropdown-item',{key:l.code,staticClass:\"lang-item\",on:{\"click\":function($event){return _vm.switchLocale({locale: l.code, userSelected: true})}}},[(_vm.locale === l.code)?_c('b-icon-check'):_c('b-icon-blank'),_c('span',{staticClass:\"title\"},[_vm._v(\" \"+_vm._s(l.native)+\" \"),(l.global && l.global !== l.native)?[_vm._v(\" / \"+_vm._s(l.global))]:_vm._e()],2),(_vm.supportsLanguageExt && (!l.ui || !l.data))?_c('b-icon-exclamation-triangle',{staticClass:\"ml-2\",attrs:{\"title\":l.ui ? _vm.$t('source.language.onlyUI') : _vm.$t('source.language.onlyData')}}):_vm._e()],1)}),1)],1),(_vm.stacUrl)?_c('b-popover',{attrs:{\"target\":\"popover-link\",\"triggers\":\"focus\",\"placement\":\"bottom\",\"container\":\"stac-browser\",\"title\":_vm.$t('source.title')},on:{\"show\":_vm.validate}},[(_vm.stacVersion)?[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"2\"}},[_vm._v(_vm._s(_vm.$t('source.stacVersion')))]),_c('b-col',[_vm._v(_vm._s(_vm.stacVersion))])],1),(_vm.canValidate)?_c('b-row',[_c('b-col',{attrs:{\"cols\":\"2\"}},[_vm._v(_vm._s(_vm.$t('source.valid')))]),_c('b-col',[(_vm.valid === null)?_c('b-spinner',{attrs:{\"label\":_vm.$t('source.validating'),\"small\":\"\"}}):(_vm.valid === true)?[_vm._v(\"✔️\")]:(_vm.valid === false)?[_vm._v(\"❌\")]:[_vm._v(\"$t('source.validationNA')\")]],2)],1):_vm._e(),_c('hr')]:_vm._e(),_c('Url',{attrs:{\"id\":\"stacUrl\",\"url\":_vm.stacUrl,\"label\":_vm.$t('source.locatedAt')}})],2):_vm._e(),_c('b-popover',{attrs:{\"target\":\"popover-share\",\"triggers\":\"focus\",\"placement\":\"bottom\",\"container\":\"stac-browser\",\"title\":_vm.$t('source.share.title')}},[_c('Url',{attrs:{\"id\":\"browserUrl\",\"url\":_vm.browserUrl(),\"label\":_vm.$t('source.share.sharePageWithOthers'),\"open\":false}}),_c('hr'),_c('b-button',{staticClass:\"twitter mr-1\",attrs:{\"href\":_vm.twitterUrl}},[_c('b-icon-twitter'),_vm._v(\" \"+_vm._s(_vm.$t('source.share.twitter')))],1),_c('b-button',{attrs:{\"variant\":\"dark\",\"href\":_vm.mailTo}},[_c('b-icon-envelope'),_vm._v(\" \"+_vm._s(_vm.$t('source.share.email')))],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-form-group',{attrs:{\"label\":_vm.label,\"label-for\":_vm.id}},[_c('b-input-group',{attrs:{\"size\":\"sm\"}},[_c('b-form-input',{ref:\"input\",attrs:{\"id\":_vm.id,\"value\":_vm.url,\"readonly\":\"\"}}),_c('b-input-group-append',[_c('CopyButton',{attrs:{\"copyText\":_vm.url,\"variant\":\"primary\"}}),(_vm.open)?_c('b-button',{attrs:{\"href\":_vm.url,\"target\":\"_blank\",\"variant\":\"primary\",\"title\":_vm.$t('open')}},[_c('b-icon-arrow-up-right-square')],1):_vm._e()],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Url.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Url.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Url.vue?vue&type=template&id=433de75e&scoped=true\"\nimport script from \"./Url.vue?vue&type=script&lang=js\"\nexport * from \"./Url.vue?vue&type=script&lang=js\"\nimport style0 from \"./Url.vue?vue&type=style&index=0&id=433de75e&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"433de75e\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Source.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Source.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Source.vue?vue&type=template&id=0106123f&scoped=true\"\nimport script from \"./Source.vue?vue&type=script&lang=js\"\nexport * from \"./Source.vue?vue&type=script&lang=js\"\nimport style0 from \"./Source.vue?vue&type=style&index=0&id=0106123f&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0106123f\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacHeader.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacHeader.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./StacHeader.vue?vue&type=template&id=d2d6115c&scoped=true\"\nimport script from \"./StacHeader.vue?vue&type=script&lang=js\"\nexport * from \"./StacHeader.vue?vue&type=script&lang=js\"\nimport style0 from \"./StacHeader.vue?vue&type=style&index=0&id=d2d6115c&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d2d6115c\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n","import mod from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacBrowser.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacBrowser.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./StacBrowser.vue?vue&type=template&id=5190ba2a\"\nimport script from \"./StacBrowser.vue?vue&type=script&lang=js\"\nexport * from \"./StacBrowser.vue?vue&type=script&lang=js\"\nimport style0 from \"./StacBrowser.vue?vue&type=style&index=0&id=5190ba2a&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\nimport StacBrowser from \"./StacBrowser.vue\";\nimport i18n, { loadDefaultMessages } from './i18n';\n\nexport default function init() {\n return loadDefaultMessages().then(() => {\n return new Vue({\n i18n,\n render: h => h(StacBrowser)\n }).$mount(\"#stac-browser\");\n });\n}\n","import Vue from \"vue\";\nimport init from \"./init\";\n\nVue.config.productionTip = false;\n\ninit();\n","import i18n from '../../../i18n.js';\nimport CqlOperator from './operator';\n\nexport default class CqlComparisonOperator extends CqlOperator {\n\n constructor(operator, pred = null, obj = null) {\n super(operator, [pred, obj]);\n }\n\n clone(value) {\n return new this.constructor(this.operator, this.args[0], value);\n }\n\n static create(pred, op, obj) {\n if ([\"=\", \"==\", \"===\"].includes(op)) {\n return new CqlEqual(pred, obj);\n }\n else if ([\"<>\", \"!=\", \"!==\"].includes(op)) {\n return new CqlNotEqual(pred, obj);\n }\n else if (op === \">=\") {\n return new CqlGreaterThanEqual(pred, obj);\n }\n else if (op === \">\") {\n return new CqlGreaterThan(pred, obj);\n }\n else if (op === \"<=\") {\n return new CqlLessThanEqual(pred, obj);\n }\n else if (op === \"<\") {\n return new CqlLessThan(pred, obj);\n }\n }\n\n}\n\nexport class CqlEqual extends CqlComparisonOperator {\n\n static SYMBOL = \"=\";\n\n constructor(pred = null, obj = null) {\n super(CqlEqual.SYMBOL, pred, obj);\n }\n\n static get longLabel() {\n return i18n.t('search.equalTo');\n }\n\n}\n\nexport class CqlNotEqual extends CqlComparisonOperator {\n\n static SYMBOL = \"<>\";\n\n constructor(pred = null, obj = null) {\n super(CqlNotEqual.SYMBOL, pred, obj);\n }\n\n static get longLabel() {\n return i18n.t('search.notEqualTo');\n }\n\n}\n\nexport class CqlGreaterThan extends CqlComparisonOperator {\n\n static SYMBOL = \">\";\n\n constructor(pred = null, obj = null) {\n super(CqlGreaterThan.SYMBOL, pred, obj);\n }\n\n static get longLabel() {\n return i18n.t('search.greaterThan');\n }\n\n}\n\nexport class CqlGreaterThanEqual extends CqlComparisonOperator {\n\n static SYMBOL = \">=\";\n\n constructor(pred = null, obj = null) {\n super(CqlGreaterThanEqual.SYMBOL, pred, obj);\n }\n\n static get longLabel() {\n return i18n.t('search.greaterThanEqual');\n }\n\n}\n\nexport class CqlLessThan extends CqlComparisonOperator {\n\n static SYMBOL = \"<\";\n\n constructor(pred = null, obj = null) {\n super(CqlLessThan.SYMBOL, pred, obj);\n }\n\n static get longLabel() {\n return i18n.t('search.lessThan');\n }\n\n}\n\nexport class CqlLessThanEqual extends CqlComparisonOperator {\n\n static SYMBOL = \"<=\";\n\n constructor(pred = null, obj = null) {\n super(CqlLessThanEqual.SYMBOL, pred, obj);\n }\n\n static get longLabel() {\n return i18n.t('search.lessThanEqual');\n }\n \n}\n\n/* export class CqlIsNull extends CqlComparisonOperator {\n \n constructor(pred = null) {\n super(\"IS NULL\", pred);\n }\n\n} */\n","export default class CqlOperator {\n\n constructor(operator, args = []) {\n this.operator = operator;\n this.args = args;\n }\n\n toText() {\n let op = this.operator.toUpperCase();\n return this.args.map(arg => arg.toText()).join(` ${op} `);\n }\n\n toJSON() {\n return {\n op: this.operator,\n args: this.args.map(arg => arg.toJSON())\n };\n }\n\n static get description() {\n return \"\";\n }\n\n static get label() {\n return this.SYMBOL;\n }\n\n static get longLabel() {\n return this.label;\n }\n\n}","import Utils, { geojsonMediaType } from \"../utils\";\nimport Migrate from '@radiantearth/stac-migrate';\nimport { getBest } from '../locale-id';\n\nlet stacObjCounter = 0;\n\n// STAC Entity\nclass STAC {\n\n constructor(data, url, path, migrate = true) {\n this._id = stacObjCounter++;\n this._url = url;\n this._path = path;\n this._apiChildrenListeners = {};\n this._incomplete = false;\n this._apiChildren = {\n list: [],\n prev: false,\n next: false\n };\n\n if (migrate) {\n // Uncomment this line if the old checksum: fields should be converted\n // This is usually not needed so it's not enabled by default to shrink the bundle size\n // Migrate.enableMultihash(require('multihashes'));\n if (data.type === 'FeatureCollection') {\n data.features = data.features.map(item => Migrate.item(item, false));\n }\n else {\n data = Migrate.stac(data, false);\n }\n }\n for (let key in data) {\n if (typeof this[key] === 'undefined') {\n this[key] = data[key];\n }\n }\n }\n\n isPotentiallyIncomplete() {\n return this._incomplete;\n }\n\n markPotentiallyIncomplete() {\n this._incomplete = true;\n }\n\n isItem() {\n return this.type === 'Feature';\n }\n\n isCatalog() {\n return this.type === 'Catalog';\n }\n\n isCatalogLike() {\n return this.isCatalog() || this.isCollection();\n }\n\n isCollection() {\n return this.type === 'Collection';\n }\n\n isItemCollection() {\n return this.type === 'FeatureCollection';\n }\n\n hasApiData() {\n return this._apiChildren.list.length > 0;\n }\n\n setApiDataListener(id, listener = null) {\n if (typeof listener === 'function') {\n this._apiChildrenListeners[id] = listener;\n }\n else {\n delete this._apiChildrenListeners[id];\n }\n }\n\n setApiData(list, next = null, prev = null) {\n if (prev) {\n this._apiChildren.prev = prev;\n }\n if (next) {\n this._apiChildren.next = next;\n }\n this._apiChildren.list = list;\n\n for (let id in this._apiChildrenListeners) {\n try {\n this._apiChildrenListeners[id](this._apiChildren);\n } catch (error) {\n console.error(error);\n }\n }\n }\n\n getFileFormats() {\n let assets = [];\n if ((this.isItem() || this.isCollection()) && Utils.isObject(this.assets)) {\n assets = assets.concat(Object.values(this.assets));\n }\n if (this.isCollection() && Utils.isObject(this.item_assets)) {\n assets = assets.concat(Object.values(this.item_assets));\n }\n return assets\n .filter(asset => Array.isArray(asset.roles) && asset.roles.includes('data') && typeof asset.type === 'string') // Look for data files\n .map(asset => asset.type) // Array shall only contain media types\n .filter((v, i, a) => a.indexOf(v) === i); // Unique values\n }\n\n getChildren(priority = null) {\n if (!this.isCatalogLike()) {\n return [];\n }\n\n let showCollections = !priority || priority === 'collections';\n let showChilds = !priority || priority === 'childs';\n\n let children = [];\n if (showCollections && this._apiChildren.prev) {\n children.push(this._apiChildren.prev);\n }\n if (showCollections && this._apiChildren.list.length > 0) {\n children = this._apiChildren.list;\n }\n if (showChilds) {\n children = STAC.addMissingChildren(children, this).concat(this.getLinksWithRels(['item']));\n }\n if (showCollections && this._apiChildren.next) {\n children.push(this._apiChildren.next);\n }\n return children;\n }\n\n static addMissingChildren(catalogs, stac) {\n let links = stac.getStacLinksWithRel('child').filter(link => {\n // Don't add links that are already in collections: https://github.com/radiantearth/stac-browser/issues/103\n // ToDo: The runtime of this can probably be improved\n let absoluteUrl = Utils.toAbsolute(link.href, stac.getAbsoluteUrl());\n return !catalogs.find(collection => collection.getAbsoluteUrl() === absoluteUrl);\n });\n // place the children first to avoid conflicts with the paginated collections\n // where the children are always at the end and can never be reached due to infinite scrolling\n return links.concat(catalogs);\n }\n\n getSearchLink() {\n // The search link MUST be 'application/geo+json' as otherwise it's likely not STAC\n // See https://github.com/opengeospatial/ogcapi-features/issues/832\n let links = Utils.getLinksWithRels(this.links, ['search'])\n .filter(link => Utils.isMediaType(link.type, geojsonMediaType));\n // Prefer POST if present\n let post = links.find(link => Utils.hasText(link.method) && link.method.toUpperCase() === 'POST');\n return post || links[0] || null;\n }\n\n getApiCollectionsLink() {\n return this.getStacLinkWithRel('data');\n }\n\n getApiItemsLink() {\n return this.getStacLinkWithRel('items');\n }\n\n getMetadata(field) {\n if (this.isItem()) {\n return this.properties[field];\n }\n else if (this.isCatalogLike()) {\n return this[field];\n }\n return null;\n }\n\n getBrowserPath() {\n return this._path;\n }\n\n getAbsoluteUrl() {\n return this._url;\n }\n\n getLocaleLink(locale, fallbackLocale = null) {\n let links = this.getStacLinksWithRel('alternate')\n .filter(link => Utils.hasText(link.hreflang));\n \n let available;\n if (Array.isArray(this.languages)) {\n available = this.languages.map(l => l.code);\n }\n else {\n available = links.map(link => link.hreflang);\n }\n \n let best = getBest(available, locale, fallbackLocale);\n return links.find(link => link.hreflang === best) || null;\n }\n\n getStacLinksWithRel(rel, allowEmpty = true) {\n return Utils.getLinksWithRels(this.links, [rel])\n .filter(link => Utils.isStacMediaType(link.type, allowEmpty));\n }\n\n getStacLinkWithRel(rel, allowEmpty = true) {\n const links = this.getStacLinksWithRel(rel, allowEmpty);\n if (links.length > 0) {\n return links[0];\n }\n else {\n return null;\n }\n }\n\n getLinkWithRel(rel) {\n return Utils.getLinkWithRel(this.links, rel);\n }\n\n getLinksWithRels(rels) {\n return Utils.getLinksWithRels(this.links, rels);\n }\n\n getLinksWithOtherRels(rels) {\n return Utils.getLinksWithOtherRels(this.links, rels);\n }\n\n getAssetsWithRoles(roles) {\n let matches = [];\n if (Utils.isObject(this.assets)) {\n for (let key in this.assets) {\n let asset = this.assets[key];\n if (Utils.isObject(asset) && typeof asset.href === 'string' && Array.isArray(asset.roles) && asset.roles.find(role => roles.includes(role))) {\n matches.push(asset);\n }\n }\n }\n return matches;\n }\n\n static getDisplayTitle(sources, fallbackTitle = null) {\n if (!Array.isArray(sources)) {\n sources = [sources];\n }\n let stac = sources.find(o => o instanceof STAC);\n let link = sources.find(o => Utils.isObject(o) && !(o instanceof STAC));\n // Get title from STAC item/catalog/collection\n if (stac && Utils.hasText(stac.getTitle())) {\n return stac.getTitle();\n }\n // Get title from link\n else if (link && Utils.hasText(link.title)) {\n return link.title;\n }\n // Use id from STAC item/catalog/collection instead of titles\n else if (stac && Utils.hasText(stac.id)) {\n return stac.id;\n }\n // Use fallback title\n else if (Utils.hasText(fallbackTitle)) {\n return fallbackTitle;\n }\n // Use file or directory name from STAC as title\n else if (stac) {\n return Utils.titleForHref(stac.getAbsoluteUrl(), true);\n }\n // Use file or directory name from link as title\n else if (link && Utils.hasText(link.href)) {\n return Utils.titleForHref(link.href, true);\n }\n // Nothing available, return \"untitled\"\n else {\n return \"Untitled\";\n }\n }\n\n getTitle() {\n return this.getMetadata(\"title\");\n }\n\n _linkToAbsolute(link) {\n return Object.assign({}, link, { href: Utils.toAbsolute(link.href, this.getAbsoluteUrl()) });\n }\n\n getIcons() {\n return this.getLinksWithRels(['icon'])\n .filter(img => Utils.canBrowserDisplayImage(img))\n .map(img => this._linkToAbsolute(img));\n }\n\n /**\n * Get the thumbnails from the assets and links in a STAC entity.\n * \n * @param {boolean} browserOnly - Return only images that can be shown in a browser natively (PNG/JPG/GIF/WEBP).\n * @param {?string} prefer - If not `null` (default), prefers a role over the other. Either `thumbnail` or `overview`.\n * @returns \n */\n getThumbnails(browserOnly = false, prefer = null) { // prefer can be either \n let thumbnails = this.getAssetsWithRoles(['thumbnail', 'overview']);\n if (prefer && thumbnails.length > 1) {\n thumbnails.sort(a => a.roles.includes(prefer) ? -1 : 1);\n }\n // Get from links only if no assets are available as they should usually be the same as in assets\n if (thumbnails.length === 0) {\n thumbnails = this.getLinksWithRels(['preview']);\n }\n // Some old catalogs use just a asset key\n if (thumbnails.length === 0 && Utils.isObject(this.assets) && Utils.isObject(this.assets.thumbnail)) {\n thumbnails = [this.assets.thumbnail];\n }\n if (browserOnly) {\n // Remove all images that can't be displayed in a browser\n thumbnails = thumbnails.filter(img => Utils.canBrowserDisplayImage(img));\n }\n return thumbnails.map(img => this._linkToAbsolute(img));\n }\n\n equals(other) {\n if (!Utils.isObject(other)) {\n return false;\n }\n if (this === other) {\n return true;\n }\n if (this.id === other.id && this.type == other.type) {\n return true;\n }\n return false;\n }\n\n}\n\nexport default STAC;","// STAC relation types\n\n// STAC hierarchical\nexport const stacHierarchy = [\n 'child',\n 'collection',\n 'item',\n 'parent',\n 'root',\n 'self',\n];\n\n// STAC API Pagination\nexport const stacPagination = [\n 'first',\n 'last',\n 'next',\n 'prev',\n 'previous',\n];\n\n// Queryables\nexport const ogcQueryables = [\n 'queryables', // Old way in STAC (deprecated)\n 'http://www.opengis.net/def/rel/ogc/1.0/queryables', // STAC and OGC APIs\n 'ogc-rel:queryables' // Alternative in OGC APIs\n];\n\n// Rels that STAC Browser can navigate to and display natively (i.e. Collections, Catalogs and Items)\nexport const stacBrowserNavigatesTo = [\n 'canonical', // Links to other catalogs or items v\n 'related',\n 'derived_from',\n 'latest-version', // version extension v\n 'predecessor-version',\n 'successor-version',\n 'source', // label extension,\n 'alternate' // language extension\n].concat(stacHierarchy).concat(stacPagination);\n\n// Rels that are handled in a special way and should not be shown in the link list\nexport const stacBrowserSpecialHandling = [\n 'conformance', // API related v\n 'data',\n 'items',\n 'search',\n 'icon', // Other v\n 'license',\n].concat(stacHierarchy).concat(stacPagination).concat(ogcQueryables);\n\n// OGC APIs\nexport const ogcRelPrefix = 'http://www.opengis.net/def/rel/ogc/1.0/';\n","import URI from 'urijs';\nimport removeMd from 'remove-markdown';\n\nexport const commonFileNames = ['catalog', 'collection', 'item'];\n\nexport const geojsonMediaType = \"application/geo+json\";\n\nexport const schemaMediaType = \"application/schema+json\";\n\nexport const stacMediaTypes = [\n 'application/json',\n geojsonMediaType,\n 'text/json'\n];\n\nexport const browserImageTypes = [\n 'image/gif',\n 'image/jpg',\n 'image/jpeg',\n 'image/apng',\n 'image/png',\n 'image/webp'\n];\n\nexport const geotiffMediaTypes = [\n \"application/geotiff\",\n \"image/tiff; application=geotiff\",\n \"image/tiff; application=geotiff; profile=cloud-optimized\",\n \"image/vnd.stac.geotiff\",\n \"image/vnd.stac.geotiff; cloud-optimized=true\"\n];\n\nexport const browserProtocols = [\n 'http',\n 'https'\n];\n\nexport const imageMediaTypes = browserImageTypes.concat(geotiffMediaTypes);\nexport const mapMediaTypes = imageMediaTypes.concat([geojsonMediaType]);\n\nexport class BrowserError extends Error {\n constructor(message) {\n super(message);\n }\n}\n\n/**\n * General utilities\n * \n * @class\n */\nexport default class Utils {\n\n /**\n * Checks whether a variable is a real object or not.\n * \n * This is a more strict version of `typeof x === 'object'` as this example would also succeeds for arrays and `null`.\n * This function only returns `true` for real objects and not for arrays, `null` or any other data types.\n * \n * @param {*} obj - A variable to check.\n * @returns {boolean} - `true` is the given variable is an object, `false` otherwise.\n */\n static isObject(obj) {\n return (typeof obj === 'object' && obj === Object(obj) && !Array.isArray(obj));\n }\n\n /**\n * Computes the size of an array (number of array elements) or object (number of key-value-pairs).\n * \n * Returns 0 for all other data types.\n * \n * @param {*} obj \n * @returns {integer}\n */\n static size(obj) {\n if (typeof obj === 'object' && obj !== null) {\n if (Array.isArray(obj)) {\n return obj.length;\n }\n else {\n return Object.keys(obj).length;\n }\n }\n return 0;\n }\n\n static isStacMediaType(type, allowEmpty = false) {\n return Utils.isMediaType(type, stacMediaTypes, allowEmpty);\n }\n\n static isMediaType(type, types, allowEmpty = false) {\n if (!Array.isArray(types)) {\n types = [types];\n }\n if (allowEmpty && !type) {\n return true;\n }\n else if (typeof type !== 'string') {\n return false;\n }\n else {\n return types.includes(type.toLowerCase());\n }\n }\n\n /**\n * Checks whether a variable is a string and contains at least one character.\n * \n * @param {*} string - A variable to check.\n * @returns {boolean} - `true` is the given variable is an string with length > 0, `false` otherwise.\n */\n static hasText(string) {\n return (typeof string === 'string' && string.length > 0);\n }\n\n static isGdalVfsUri(url) {\n return typeof url === 'string' && url.startsWith('/vsi') && !url.startsWith('/vsicurl/');\n }\n\n static toAbsolute(href, baseUrl, stringify = true) {\n return Utils.normalizeUri(href, baseUrl, false, stringify);\n }\n\n static normalizeUri(href, baseUrl = null, noParams = false, stringify = true) {\n // Convert vsicurl URLs to normal URLs\n if (typeof href === 'string' && href.startsWith('/vsicurl/')) {\n href = href.replace(/^\\/vsicurl\\//, '');\n }\n // Parse URL and make absolute, if required\n let uri = URI(href);\n // Don't convert GDAL VFS URIs: https://github.com/radiantearth/stac-browser/issues/116\n if (baseUrl && uri.is(\"relative\") && !Utils.isGdalVfsUri(href)) {\n uri = uri.absoluteTo(baseUrl);\n }\n uri.normalize();\n if (noParams) {\n uri.query(\"\");\n uri.fragment(\"\");\n }\n return stringify ? uri.toString() : uri;\n }\n\n static getLinkWithRel(links, rel) {\n return Array.isArray(links) ? links.find(link => Utils.isObject(link) && Utils.hasText(link.href) && link.rel === rel) : null;\n }\n\n static getLinksWithRels(links, rels) {\n return Array.isArray(links) ? links.filter(link => Utils.isObject(link) && Utils.hasText(link.href) && rels.includes(link.rel)) : [];\n }\n\n static getLinksWithOtherRels(links, rels) {\n return Array.isArray(links) ? links.filter(link => Utils.isObject(link) && Utils.hasText(link.href) && !rels.includes(link.rel)) : [];\n }\n\n static equalUrl(a, b) {\n try {\n let uri1 = URI(a);\n let uri2 = URI(b);\n // Ignore trailing slash in URL paths\n uri1.path(uri1.path().replace(/\\/$/, ''));\n uri2.path(uri2.path().replace(/\\/$/, ''));\n return uri1.equals(uri2);\n } catch (error) {\n return false;\n }\n }\n\n static summarizeMd(text, maxLength = null) {\n if (!Utils.hasText(text)) {\n return '';\n }\n // Best-effort approach to remove some CommonMark (Markdown).\n // Likely not perfect, but seems good enough for most cases.\n text = removeMd(text).replaceAll(/[\\r\\n]+/g, ' ');\n if (maxLength > 0 && text.length > maxLength) {\n text = text.substr(0, maxLength) + '…';\n }\n return text;\n }\n\n static scrollTo(el) {\n if (!el) {\n return;\n }\n var rect = el.getBoundingClientRect();\n var isVisible = rect.top < window.innerHeight && rect.bottom >= 0;\n if (!isVisible) {\n el.scrollIntoView({\n behavior: \"smooth\",\n block: \"start\"\n });\n }\n }\n\n // Convert from UTC to locale time (needed for vue2-datetimepicker)\n // see https://github.com/mengxiong10/vue2-datepicker/issues/388\n static dateFromUTC(dt) {\n if (dt instanceof Date) {\n const value = new Date(dt);\n const offset = value.getTimezoneOffset();\n dt = new Date(value.getTime() + offset * 60 * 1000);\n }\n return dt;\n }\n\n static dateToUTC(dt) {\n if (dt instanceof Date) {\n const offset = new Date().getTimezoneOffset();\n return new Date(dt.getTime() - offset * 60 * 1000);\n }\n return dt;\n }\n\n static formatDatetimeQuery(value) {\n return value.map(dt => {\n if (dt instanceof Date) {\n return dt.toISOString();\n }\n else if (dt) {\n return dt;\n }\n else {\n return '..';\n }\n }).join('/');\n }\n\n static addFiltersToLink(link, filters = {}) {\n let isEmpty = value => {\n return (value === null\n || (typeof value === 'number' && !Number.isFinite(value))\n || (typeof value === 'string' && value.length === 0)\n || (typeof value === 'object' && Utils.size(value) === 0));\n };\n\n if (Utils.hasText(link.method) && link.method.toUpperCase() === 'POST') {\n let body = Object.assign({}, link.body);\n\n for (let key in filters) {\n let value = filters[key];\n if (isEmpty(value)) {\n delete body[key];\n continue;\n }\n\n if (key === 'datetime') {\n value = Utils.formatDatetimeQuery(value);\n }\n else if (key === 'filters') {\n Object.assign(body, value.toJSON());\n continue;\n }\n\n body[key] = value;\n }\n return Object.assign({}, link, { body });\n }\n else { // GET\n // Construct new link with search params\n let url = URI(link.href);\n\n for (let key in filters) {\n let value = filters[key];\n if (isEmpty(value)) {\n url.removeQuery(key);\n continue;\n }\n\n if (key === 'datetime') {\n value = Utils.formatDatetimeQuery(value);\n }\n else if (key === 'bbox') {\n value = value.join(',');\n }\n else if ((key === 'collections' || key === 'ids')) {\n value = value.join(',');\n }\n else if (key === 'filters') {\n let params = value.toText();\n url.setQuery(params);\n continue;\n }\n\n url.setQuery(key, value);\n }\n\n return Object.assign({}, link, { href: url.toString() });\n }\n }\n\n static titleForHref(href, preferFileName = false) {\n let uri = URI(href);\n let auth = uri.authority();\n let file = uri.filename().replace(/^(.{1,})\\.\\w+$/, '$1');\n let dir = uri.directory().replace(/^\\//, '');\n if (auth && file && !preferFileName) {\n let path = uri.path().replace(/^\\//, '');\n if (auth === 'doi.org' && path.startsWith('10.')) {\n return `DOI ${path}`;\n }\n else {\n return `${file} (${auth})`;\n }\n }\n else if (file && !commonFileNames.includes(file)) {\n return file;\n }\n else if (auth) {\n return auth;\n }\n else if (dir) {\n return dir;\n }\n else {\n return href;\n }\n }\n\n static canBrowserDisplayImage(img) {\n if (typeof img.href !== 'string') {\n return false;\n }\n let uri = URI(img.href);\n let protocol = uri.protocol().toLowerCase();\n if (protocol && !browserProtocols.includes(protocol)) {\n return false;\n }\n else if (browserImageTypes.includes(img.type)) {\n return true;\n }\n else if (browserImageTypes.includes('image/' + uri.suffix().toLowerCase())) {\n return true;\n }\n else if (img.type) {\n return false;\n }\n else {\n return true; // If no img.type is given, try to load it anyway: https://github.com/radiantearth/stac-browser/issues/147\n }\n }\n\n // Gets the value at path of object.\n // Drop in replacement for lodash.get\n static getValueFromObjectUsingPath(object, path) {\n if (object === null || typeof object !== 'object') {\n return;\n }\n object = object[path[0]];\n if (typeof object !== 'undefined' && path.length > 1) {\n return this.getValueFromObjectUsingPath(object, path.slice(1));\n }\n return object;\n }\n\n static search(searchterm, target, and = true) {\n if (typeof searchterm !== 'string' || searchterm.length === 0) {\n return false;\n }\n if (Utils.isObject(target)) {\n target = Object.values(target);\n }\n else if (typeof target === 'string') {\n target = [target];\n }\n\n if (!Array.isArray(target)) {\n return false;\n }\n\n let splitChars = /[\\s.,;!&({[)}]]+/g;\n\n // Prepare search terms\n searchterm = searchterm.toLowerCase().split(splitChars);\n\n // Prepare text to search in\n target = target\n .filter(s => typeof s === 'string') // Remove non-strings\n .join(' ') // Merge into a single string\n .replace(splitChars, ' ') // replace split chars with white spaces\n .toLowerCase(); // Lowercase\n\n // Search with \"and\" or \"or\"\n let fn = and ? 'every' : 'some';\n return searchterm[fn](term => target.includes(term));\n }\n\n static createLink(href, rel) {\n return { href, rel };\n }\n\n static supportsExtension(data, pattern) {\n if (!Utils.isObject(data) || !Array.isArray(data['stac_extensions'])) {\n return false;\n }\n let regexp = new RegExp('^' + pattern.replaceAll('*', '[^/]+') + '$');\n return Boolean(data['stac_extensions'].find(uri => regexp.test(uri)));\n }\n\n /**\n * Deep merge two objects.\n * @param target\n * @param ...sources\n */\n static mergeDeep(target, ...sources) {\n if (!sources.length) {\n return target;\n }\n const source = sources.shift();\n\n if (Utils.isObject(target) && Utils.isObject(source)) {\n for (const key in source) {\n if (Utils.isObject(source[key])) {\n if (!target[key]) {\n Object.assign(target, { [key]: {} });\n }\n Utils.mergeDeep(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n\n return Utils.mergeDeep(target, ...sources);\n }\n\n}","var map = {\n\t\"./de-CH/default.js\": [\n\t\t54028,\n\t\t3528,\n\t\t4028\n\t],\n\t\"./de/default.js\": [\n\t\t11848,\n\t\t3528,\n\t\t1848\n\t],\n\t\"./en/default.js\": [\n\t\t25712,\n\t\t5712\n\t],\n\t\"./es/default.js\": [\n\t\t67388,\n\t\t7388\n\t],\n\t\"./fr-CA/default.js\": [\n\t\t59904,\n\t\t8312,\n\t\t9904\n\t],\n\t\"./fr-CH/default.js\": [\n\t\t13344,\n\t\t8312,\n\t\t3344\n\t],\n\t\"./fr/default.js\": [\n\t\t5336,\n\t\t8312,\n\t\t5336\n\t],\n\t\"./it-CH/default.js\": [\n\t\t38276,\n\t\t7806,\n\t\t8276\n\t],\n\t\"./it/default.js\": [\n\t\t14319,\n\t\t7806,\n\t\t4319\n\t],\n\t\"./ro/default.js\": [\n\t\t36912,\n\t\t6912\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 41100;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./de-CH/config.json\": 22440,\n\t\"./de/config.json\": 86832,\n\t\"./en/config.json\": 20584,\n\t\"./es/config.json\": 40240,\n\t\"./fr-CA/config.json\": 42068,\n\t\"./fr-CH/config.json\": 54152,\n\t\"./fr/config.json\": 1400,\n\t\"./it-CH/config.json\": 51000,\n\t\"./it/config.json\": 54094,\n\t\"./ro/config.json\": 62164\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 99460;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"48\":\"d04b42a5\",\"208\":\"97e1b531\",\"218\":\"3145dce9\",\"339\":\"7dea1546\",\"476\":\"02ee4105\",\"572\":\"40caaa91\",\"760\":\"328055c5\",\"996\":\"b534b37f\",\"1228\":\"8582509b\",\"1284\":\"202c3e88\",\"1528\":\"1dd4310c\",\"1584\":\"a59f0b52\",\"1752\":\"6038b67b\",\"1788\":\"e7c77fdd\",\"1824\":\"9102e1c7\",\"1848\":\"e11c4201\",\"2160\":\"1cb40f4f\",\"2460\":\"eec5173e\",\"2760\":\"6e1a440d\",\"3036\":\"16ce77f2\",\"3160\":\"ad48b6e4\",\"3332\":\"ceea0dd1\",\"3344\":\"fd9b3c49\",\"3352\":\"e7e14b18\",\"3420\":\"e3361d04\",\"3528\":\"cef89b72\",\"3772\":\"11aad282\",\"3816\":\"9a35f861\",\"3868\":\"9182d669\",\"3904\":\"961abe1f\",\"3912\":\"900420c2\",\"4028\":\"94076d02\",\"4052\":\"17101470\",\"4319\":\"91793b70\",\"4488\":\"adb82aee\",\"5128\":\"7b07d513\",\"5336\":\"23e459db\",\"5712\":\"6c28c413\",\"5824\":\"840fe143\",\"5879\":\"4c193e89\",\"5900\":\"d51697c7\",\"5960\":\"904a8aec\",\"6000\":\"0f74d122\",\"6072\":\"b46bb304\",\"6112\":\"f1671ffc\",\"6164\":\"57c0c11c\",\"6456\":\"f466fcb9\",\"6572\":\"a9ff018e\",\"6877\":\"77aa8315\",\"6912\":\"80f00f78\",\"7388\":\"7703a8c2\",\"7412\":\"3236f9d5\",\"7456\":\"3b5cf581\",\"7716\":\"4665b4e4\",\"7806\":\"e92c7bb4\",\"7920\":\"ca667644\",\"8276\":\"e67b539f\",\"8312\":\"6dcd7011\",\"8980\":\"7852a14e\",\"9000\":\"399a467e\",\"9044\":\"8526a0bb\",\"9156\":\"cb7b6fa5\",\"9392\":\"6759f767\",\"9856\":\"2b727b48\",\"9904\":\"32ce9edf\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"208\":\"c771d657\",\"218\":\"0530e224\",\"572\":\"4149415b\",\"1228\":\"1719e529\",\"1528\":\"e6c27227\",\"2760\":\"6fac7cd8\",\"3036\":\"081b4583\",\"3816\":\"572c83fc\",\"5824\":\"4f7e2a66\",\"5900\":\"d1fd0faa\",\"7412\":\"4b50bc38\",\"8980\":\"a94c9ca6\",\"9044\":\"72c8c98f\",\"9156\":\"480cfd4a\",\"9392\":\"6ad781a6\",\"9856\":\"0780c10b\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = function(module) {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: function() {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"@radiantearth/stac-browser:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/to/be/replaced/stac_browser/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t3524: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"208\":1,\"218\":1,\"572\":1,\"1228\":1,\"1528\":1,\"2760\":1,\"3036\":1,\"3816\":1,\"5824\":1,\"5900\":1,\"7412\":1,\"8980\":1,\"9044\":1,\"9156\":1,\"9392\":1,\"9856\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t3524: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(218 != chunkId) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_radiantearth_stac_browser\"] = self[\"webpackChunk_radiantearth_stac_browser\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [999], function() { return __webpack_require__(70007); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["render","_vm","this","_c","_self","staticClass","displayTitle","_v","_s","_e","attrs","_l","assets","asset","key","expand","context","definition","shown","includes","on","show","staticRenderFns","directives","name","rawName","value","uid","expression","expanded","title","id","Array","isArray","roles","$t","deprecated","role","displayRole","shortFileFormat","fileFormat","domProps","type","collapseToggled","model","callback","$$v","href","isBrowserProtocol","browserCanOpenFile","buttonText","canShow","isThumbnail","description","ignore","components","BCollapse","BIconBoxArrowUpRight","BIconCheck","BIconChevronDown","BIconChevronRight","BIconDownload","BIconEye","CopyButton","Description","Metadata","mixins","StacFieldsMixin","formatMediaType","props","Object","required","String","default","Boolean","data","computed","mapState","mapGetters","tileRendererType","buildTileUrlTemplate","useTileLayerAsFallback","imageMediaTypes","isGdalVfs","mapMediaTypes","length","shorten","protocol","match","toLowerCase","browserProtocols","Utils","isGdalVfsUri","baseUrl","STAC","getAbsoluteUrl","getRequestUrl","from","protocolName","canBrowserDisplayImage","what","where","source","created","stateQueryParameters","indexOf","methods","$te","assign","$emit","isVisible","event","$store","commit","component","Asset","count","size","langKey","$tc","stac","isItem","load","modifiers","class","classes","isList","hasImage","_b","thumbnail","catalog","fileFormats","format","_f","temporalExtent","StacLink","filters","summarize","text","summarizeMd","ThumbnailCardMixin","formatTemporalExtent","push","getStac","_this$data","_this$data$extent","_this$data$extent$tem","isCollection","extent","temporal","interval","getFileFormats","visible","compact","inline","markup","allowHTML","reader","commonmark","writer","safe","smart","parsed","parse","queued","isDeprecated","hasDescription","item","properties","datetime","Registry","require","formatTimestamp","start_datetime","end_datetime","hasText","items","api","sort","showPagination","ref","pagination","paginate","allowFilter","filtersOpen","apiFilters","emitFilter","loading","chunkedItems","hasFilters","hasMore","showMore","first","$event","prev","next","last","placement","link","BIconSearch","Item","ItemFilter","Loading","Pagination","SortButtons","chunkSize","Number","shownItems","values","filter","slice","a","b","getDisplayTitle","localeCompare","uiLanguage","reverse","some","cardViewSort","reset","$refs","topPagination","scrollTo","$el","small","fill","stretch","top","tag","tooltip","attributes","icon","fallbackTitle","Function","icons","getIcons","find","o","isLink","isStacBrowserLink","isStacMediaType","stacBrowserNavigatesTo","rel","to","target","getBrowserPath","toBrowserPath","startsWith","privateQueryParameters","uri","URI","queryKey","hasQuery","addQuery","toString","fallback","isObject","module","exports","catalogUrl","catalogTitle","allowExternalAccess","allowedDomains","detectLocaleFromBrowser","storeLocale","locale","fallbackLocale","supportedLocales","apiCatalogPriority","tileSourceTemplate","displayGeoTiffByDefault","encodeURIComponent","stacProxyUrl","pathPrefix","historyMode","cardViewMode","showThumbnailsAsAssets","stacLint","geoTiffResolution","redirectLegacyUrls","itemsPerPage","defaultThumbnailSize","maxPreviewsOnMap","crossOriginMedia","requestHeaders","requestQueryParameters","preprocessSTAC","authConfig","formatter","token","functions","mixin","fn","arguments","showThumbnail","thumbnails","getThumbnails","width","height","t","src","alt","crossorigin","right","blankColor","config","CONFIG_PATH","CONFIG_CLI","Vue","use","VueI18n","API_LANGUAGE_CONFORMANCE","LOCALE_CONFIG","loadLocaleConfig","CONFIG","messages","languages","i18n","loadDefaultMessages","Promise","all","loadMessages","async","mergeLocaleMessage","translateFields","vars","te","Fields","stringLocale","keywordPos","keyword","substr","undefined","localeWithoutKeyword","parts","replace","split","language","shift","retVar","variant","pop","toUpperCase","country","script","substring","prepareSupported","supported","lgs","forEach","supportedLocale","Error","countries","firstCountry","main","lg","getBest","defaultLocale","getAnyCountry","doAuth","globalError","hideError","sidebar","displayCatalogTitle","scopedSlots","_u","browserVersion","proxy","isExternal","error","url","errorDescription","errorId","dismissible","message","tab","selectedAsset","dataChanged","hasAssets","shownAssets","showAsset","additionalLinks","keywords","collectionLink","providers","ignoredMetadataFields","shownAssetsOnMap","shownBandsOnMap","selectedAssetKey","keys","thumbnailRefs","map","tabs","bands","meta","toBrowserUrl","store","path","getters","window","location","origin","state","fragment","addSpatialCoverage","schema","bbox","spatialCoverage","geo","box","join","formatTemporalCoverage","dates","dt","makeAssets","contentUrl","toAbsolute","encodingFormat","makeLinks","links","isBasedOn","obj","fallbackDescription","makeProvider","p","email","mail","stacType","container","collection","tc","inX","createBaseSchema","_data$getMetadata","thumbnailUrl","stacUrl","inLanguage","getMetadata","code","license","_data$getLinkWithRel","getLinkWithRel","copyrightHolder","producer","provider","creator","citation","identifier","dateCreated","dateModified","datePublished","expires","version","image","createCatalogSchema","parents","i","findIndex","_data$extent","_data$extent$temporal","_data$extent2","_data$extent2$spatial","temporalCoverage","spatial","associatedMedia","hasPart","catalogs","dataset","isPartOf","createItemSchema","includedInDataCatalog","start","end","distribution","addSchemaToDocument","doc","element","getElementById","createElement","head","appendChild","innerText","JSON","stringify","AnonymizedNotice","Assets","BTabs","BTab","CollectionLink","DeprecationNotice","Links","Map","Providers","ReadMore","Thumbnails","ShowAssetMixin","watch","immediate","handler","parentLink","document","console","cc","mixed","hasCatalogs","hasItems","empty","licenses","temporalExtents","linkPosition","hasThumbnails","mapData","hasItemAssets","item_assets","hasProviders","hasMoreCollections","loadMoreCollections","isApi","itemPages","apiItemsLoading","paginateItems","filterItems","isComplete","catalogView","view","searchTerm","cardsComponent","cardsComponentProps","loadMore","toggle","BIconBricks","BIconListTask","selectedValue","ViewButtons","columns","get","set","Catalog","SearchBox","ViewMixin","haystack","concat","search","Catalogs","Items","Keywords","formatLicense","formatTemporalExtents","getApiItemsLoading","extents","pages","apiItemsPagination","apiItemsLink","addFiltersToLink","getApiItemsLink","features","rootLink","dispatch","$root","msg","ErrorAlert","isAxiosError","response","res","status","detail","BrowserError","is","oldPath","redirectLegacyUrl","fromBrowser","loadApi","part","every","decode","newPath","$router","query","getRoutes","routes","Browse","route","params","pathMatch","loadParent","CqlLike","CqlComparisonOperator","constructor","pred","super","SYMBOL","label","longLabel","_defineProperty","Queryable","formatKey","isTemporal","isText","isNumeric","isBoolean","types","isSelection","enum","isDate","isDateTime","defaultValue","Date","minimum","getOperators","cql","ops","CqlEqual","CqlNotEqual","CqlLessThan","CqlLessThanEqual","CqlGreaterThan","CqlGreaterThanEqual","advancedComparison","toText","toJSON","property","stacRequest","cx","opts","headers","acceptedLanguages","method","Accept","isExternalUrl","body","axios","unproxyUrl","absoluteUrl","proxyUrl","processSTAC","freeze","isAuthenticationError","_error$response","addQueryIfNotExists","getStore","router","localDefaults","valid","localRequestQueryParameters","itemdef","apiItems","queryables","catalogDefaults","queue","authData","conformsTo","dataLanguage","dataLanguages","apiCollections","nextCollectionsLink","Vuex","strict","database","allowSelectCatalog","globalRequestQueryParameters","returnErrorObject","root","_state$data","isCatalog","_state$data2","isCatalogLike","_state$data3","_state$data4","_","_state$data5","getStacLinkWithRel","createLink","getLinksWithRels","segment","_state$data6","supportsConformance","classRegexp","c","replaceAll","regexp","RegExp","supportsExtension","schemaUri","getStacLinksWithRel","hasCollections","getApiCollectionsLink","hasChilds","showCollections","showChilds","addMissingChildren","_state$data7","getLinksWithOtherRels","stacBrowserSpecialHandling","relative","absolute","relativeTo","authority","q","fromBrowserPath","externalRE","endsWith","whitelist","domain","equals","relativeStr","addLocalQueryParams","navigator","entries","l","mutations","setQueryParameter","delete","setRequestHeader","requestAuth","setAuthData","setCatalogUrlData","catalogUrlData","openCollapsible","idx","newState","closeCollapsible","updateLoading","loaded","clear","resetCatalog","clearAll","resetPage","showPage","unshift","lang","errored","unqueue","splice","removeFromQueue","num","setConformanceClasses","setApiItemsLink","toggleApiItemsLoading","collectionId","setApiItems","feature","pageLinks","stacPagination","pageLink","setApiData","addApiCollections","collections","nextLink","resetApiItems","showGlobalError","addQueryables","actions","switchLocale","userSelected","localStorage","setItem","dataLanguageCodes","dataLanguageFallback","setCatalogUrl","setAuth","loadBackground","urls","promises","loadParents","parentStac","args","loadRoot","force","isPotentiallyIncomplete","localeLink","getLocaleLink","conformanceLink","loadApiItems","limit","selfLink","_cx$getters$root","apiCollectionsLink","markPotentiallyIncomplete","loadNextApiCollections","loadOgcApiConformance","loadQueryables","refParser","schemas","ogcQueryables","isMediaType","schemaMediaType","dereference","log","loadGeoJson","retryAfterAuth","errorFn","catch","validate","_response$data","_response$data$body","addSearch","valid_stac","stacVersion","isSearchPage","containerLink","parentLinkTitle","collectionLinkTitle","searchBrowserLink","auth","currentLanguage","native","global","supportsLanguageExt","ui","canValidate","browserUrl","twitterUrl","mailTo","open","BFormGroup","BFormInput","BIconArrowUpRightSquare","BInputGroup","BInputGroupAppend","LANGUAGE_EXT","BDropdown","BDropdownItem","BIconBlank","BIconEnvelope","BIconExclamationTriangle","BIconFlag","BIconLink","BIconShare","BIconTwitter","BPopover","Url","host","hostname","newLang","alternate","uiSupported","dataSupported","mapActions","BIconArrow90degUp","BIconBook","BIconFolderSymlink","BIconLock","BIconUnlock","Source","stac_version","dataLink","getSearchLink","equalUrl","currentRoute","AlertPlugin","ButtonGroupPlugin","ButtonPlugin","BadgePlugin","CardPlugin","LayoutPlugin","SpinnerPlugin","directive","VBToggle","VBVisible","VueRouter","mode","base","Props","Watchers","newValue","Authentication","Sidebar","StacHeader","onDataLoaded","catalogUrlFromVueX","detectLocaleFromBrowserFromVueX","fallbackLocaleFromVueX","supportedLocalesFromVueX","storeLocaleFromVueX","STAC_BROWSER_VERSION","setAttribute","I18N","$i18n","documentElement","deep","$route","duplicated","oldRoot","canChange","doReset","doSet","beforeCreate","cookies","cookie","unity_token","MAIN_SETTING","onReady","detectLocale","parseQuery","afterEach","resetOp","mounted","$on","showError","setInterval","getItem","best","_params$state","privateFromHash","hash","private","realKey","localRequest","init","then","h","StacBrowser","$mount","productionTip","CqlOperator","operator","clone","create","op","arg","stacObjCounter","migrate","_id","_url","_path","_apiChildrenListeners","_incomplete","_apiChildren","list","Migrate","isItemCollection","hasApiData","setApiDataListener","listener","v","getChildren","priority","children","geojsonMediaType","post","field","available","hreflang","allowEmpty","rels","getAssetsWithRoles","matches","sources","getTitle","titleForHref","_linkToAbsolute","img","browserOnly","prefer","other","stacHierarchy","ogcRelPrefix","commonFileNames","stacMediaTypes","browserImageTypes","geotiffMediaTypes","string","normalizeUri","noParams","absoluteTo","normalize","uri1","uri2","maxLength","removeMd","el","rect","getBoundingClientRect","innerHeight","bottom","scrollIntoView","behavior","block","dateFromUTC","offset","getTimezoneOffset","getTime","dateToUTC","formatDatetimeQuery","toISOString","isEmpty","isFinite","removeQuery","setQuery","preferFileName","file","filename","dir","directory","suffix","getValueFromObjectUsingPath","object","searchterm","and","splitChars","s","term","pattern","test","mergeDeep","webpackAsyncContext","req","__webpack_require__","resolve","e","ids","webpackContext","webpackContextResolve","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","call","m","deferred","O","result","chunkIds","notFulfilled","Infinity","fulfilled","j","r","n","getter","__esModule","d","leafPrototypes","getProto","getPrototypeOf","__proto__","ns","def","current","getOwnPropertyNames","defineProperty","enumerable","f","chunkId","reduce","u","miniCssF","g","globalThis","hmd","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","done","needAttach","scripts","getElementsByTagName","getAttribute","charset","timeout","nc","onScriptComplete","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","Symbol","toStringTag","nmd","paths","createStylesheet","fullhref","oldTag","reject","linkTag","onLinkComplete","errorType","realHref","err","request","insertBefore","nextSibling","findStylesheet","existingLinkTags","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","promise","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/cwl/stage-in-daac/README.md b/cwl/stage-in-daac/README.md new file mode 100644 index 00000000..e4d1486b --- /dev/null +++ b/cwl/stage-in-daac/README.md @@ -0,0 +1,7 @@ +# Test stage in data from DAAC + +Update `stac_json` value in stage-in-job-01.yml + +Run the following command with a CWL runner. + +`cwltool stage-in-workflow.cwl stage-in-job-01.yml` diff --git a/cwl/stage-in-daac/stage-in-job-01.yml b/cwl/stage-in-daac/stage-in-job-01.yml new file mode 100644 index 00000000..7169360e --- /dev/null +++ b/cwl/stage-in-daac/stage-in-job-01.yml @@ -0,0 +1,2 @@ +download_dir: "granules" +stac_json: "https://cmr.earthdata.nasa.gov/stac/LPCLOUD/collections/EMITL1BRAD_001/items?limit=2" diff --git a/cwl/stage-in-daac/stage-in-workflow.cwl b/cwl/stage-in-daac/stage-in-workflow.cwl new file mode 100644 index 00000000..05198595 --- /dev/null +++ b/cwl/stage-in-daac/stage-in-workflow.cwl @@ -0,0 +1,31 @@ +#!/usr/bin/env cwl-runner +cwlVersion: v1.2 +class: Workflow +label: Workflow that executes the Sounder SIPS end-to-end chirp rebinngin workflow + +$namespaces: + cwltool: http://commonwl.org/cwltool# + +requirements: + SubworkflowFeatureRequirement: {} + StepInputExpressionRequirement: {} + InlineJavascriptRequirement: {} + NetworkAccess: + networkAccess: true + +inputs: + download_dir: string + stac_json: string + +outputs: + data: + type: Directory + outputSource: stage-in/download_dir + +steps: + stage-in: + run: "stage-in.cwl" + in: + stac_json: stac_json + download_dir: download_dir + out: [download_dir] diff --git a/cwl/stage-in-daac/stage-in.cwl b/cwl/stage-in-daac/stage-in.cwl new file mode 100644 index 00000000..e88ae08c --- /dev/null +++ b/cwl/stage-in-daac/stage-in.cwl @@ -0,0 +1,39 @@ +cwlVersion: v1.2 +class: CommandLineTool + +baseCommand: ["DOWNLOAD"] + +requirements: + DockerRequirement: + dockerPull: ghcr.io/unity-sds/unity-data-services:9.4.0 + NetworkAccess: + networkAccess: true + EnvVarRequirement: + envDef: + DOWNLOAD_DIR: $(runtime.outdir)/$(inputs.download_dir) + STAC_JSON: $(inputs.stac_json) + LOG_LEVEL: '10' + PARALLEL_COUNT: '-1' + DOWNLOAD_RETRY_WAIT_TIME: '30' + DOWNLOAD_RETRY_TIMES: '5' + DOWNLOADING_ROLES: 'data' + + EDL_BASE_URL: 'https://urs.earthdata.nasa.gov/' + EDL_USERNAME: '/sps/processing/workflows/edl_username' + EDL_PASSWORD: '/sps/processing/workflows/edl_password' + EDL_PASSWORD_TYPE: 'PARAM_STORE' + + VERIFY_SSL: 'TRUE' + STAC_AUTH_TYPE: 'NONE' + +inputs: + download_dir: + type: string + stac_json: + type: string + +outputs: + download_dir: + type: Directory + outputBinding: + glob: "$(inputs.download_dir)" diff --git a/cwl/stage-in-json-str/README.md b/cwl/stage-in-json-str/README.md new file mode 100644 index 00000000..e4d1486b --- /dev/null +++ b/cwl/stage-in-json-str/README.md @@ -0,0 +1,7 @@ +# Test stage in data from DAAC + +Update `stac_json` value in stage-in-job-01.yml + +Run the following command with a CWL runner. + +`cwltool stage-in-workflow.cwl stage-in-job-01.yml` diff --git a/cwl/stage-in-json-str/stage-in-job-01.yml b/cwl/stage-in-json-str/stage-in-job-01.yml new file mode 100644 index 00000000..ea649de9 --- /dev/null +++ b/cwl/stage-in-json-str/stage-in-job-01.yml @@ -0,0 +1,2 @@ +download_dir: "granules" +stac_json: '{"type":"FeatureCollection","stac_version":"1.0.0","numberMatched":2,"numberReturned":2,"features":[{"properties":{"datetime":"2016-08-22T00:05:22.000Z","start_datetime":"2016-08-22T00:05:22.000Z","end_datetime":"2016-08-22T00:11:22.000Z"},"bbox":[-7.02,-60.32,26.31,-36.16],"assets":{"data":{"title":"Download SNDR.SS1330.CHIRP.20160822T0005.m06.g001.L1_AQ.std.v02_48.G.200425095850.nc","href":"https://raw.githubusercontent.com/unity-sds/unity-tutorial-application/main/test/stage_in/SNDR.SS1330.CHIRP.20160822T0005.m06.g001.L1_AQ.std.v02_48.G.200425095850.nc"}},"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[6.18,-36.16],[-7.02,-56.04],[23.24,-60.32],[26.31,-38.94],[6.18,-36.16]]]},"stac_extensions":[],"id":"G2040068613-GES_DISC","stac_version":"1.0.0","collection":"C2011289787-GES_DISC","links":[{"rel":"self","href":"https://cmr.earthdata.nasa.gov:443/search/concepts/G2040068613-GES_DISC.stac"},{"rel":"parent","href":"https://cmr.earthdata.nasa.gov:443/search/concepts/C2011289787-GES_DISC.stac"},{"rel":"collection","href":"https://cmr.earthdata.nasa.gov:443/search/concepts/C2011289787-GES_DISC.stac"},{"rel":"root","href":"https://cmr.earthdata.nasa.gov:443/search/"},{"rel":"via","href":"https://cmr.earthdata.nasa.gov:443/search/concepts/G2040068613-GES_DISC.json"},{"rel":"via","href":"https://cmr.earthdata.nasa.gov:443/search/concepts/G2040068613-GES_DISC.umm_json"}]},{"properties":{"datetime":"2016-08-22T00:11:22.000Z","start_datetime":"2016-08-22T00:11:22.000Z","end_datetime":"2016-08-22T00:17:22.000Z"},"bbox":[-43.78,-81.77028018298317,23.22,-56.18],"assets":{"data":{"title":"Download SNDR.SS1330.CHIRP.20160822T0011.m06.g002.L1_AQ.std.v02_48.G.200425095901.nc","href":"https://raw.githubusercontent.com/unity-sds/unity-tutorial-application/main/test/stage_in/SNDR.SS1330.CHIRP.20160822T0011.m06.g002.L1_AQ.std.v02_48.G.200425095901.nc"}},"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[-7.16,-56.18],[-43.78,-71.72],[20.73,-81.77],[23.22,-60.47],[-7.16,-56.18]]]},"stac_extensions":[],"id":"G2040068619-GES_DISC","stac_version":"1.0.0","collection":"C2011289787-GES_DISC","links":[{"rel":"self","href":"https://cmr.earthdata.nasa.gov:443/search/concepts/G2040068619-GES_DISC.stac"},{"rel":"parent","href":"https://cmr.earthdata.nasa.gov:443/search/concepts/C2011289787-GES_DISC.stac"},{"rel":"collection","href":"https://cmr.earthdata.nasa.gov:443/search/concepts/C2011289787-GES_DISC.stac"},{"rel":"root","href":"https://cmr.earthdata.nasa.gov:443/search/"},{"rel":"via","href":"https://cmr.earthdata.nasa.gov:443/search/concepts/G2040068619-GES_DISC.json"},{"rel":"via","href":"https://cmr.earthdata.nasa.gov:443/search/concepts/G2040068619-GES_DISC.umm_json"}]}],"links":[{"rel":"self","href":"https://cmr.earthdata.nasa.gov:443/search/granules.stac?collection_concept_id=C2011289787-GES_DISC&temporal%5B%5D=2016-08-22T00%3A10%3A00%2C2016-08-22T00%3A15%3A00&page_num=1"},{"rel":"root","href":"https://cmr.earthdata.nasa.gov:443/search/"}],"context":{"returned":2,"limit":1000000,"matched":2}}' diff --git a/cwl/stage-in-json-str/stage-in-workflow.cwl b/cwl/stage-in-json-str/stage-in-workflow.cwl new file mode 100644 index 00000000..05198595 --- /dev/null +++ b/cwl/stage-in-json-str/stage-in-workflow.cwl @@ -0,0 +1,31 @@ +#!/usr/bin/env cwl-runner +cwlVersion: v1.2 +class: Workflow +label: Workflow that executes the Sounder SIPS end-to-end chirp rebinngin workflow + +$namespaces: + cwltool: http://commonwl.org/cwltool# + +requirements: + SubworkflowFeatureRequirement: {} + StepInputExpressionRequirement: {} + InlineJavascriptRequirement: {} + NetworkAccess: + networkAccess: true + +inputs: + download_dir: string + stac_json: string + +outputs: + data: + type: Directory + outputSource: stage-in/download_dir + +steps: + stage-in: + run: "stage-in.cwl" + in: + stac_json: stac_json + download_dir: download_dir + out: [download_dir] diff --git a/cwl/stage-in-json-str/stage-in.cwl b/cwl/stage-in-json-str/stage-in.cwl new file mode 100644 index 00000000..3e91c63c --- /dev/null +++ b/cwl/stage-in-json-str/stage-in.cwl @@ -0,0 +1,26 @@ +cwlVersion: v1.2 +class: CommandLineTool + +baseCommand: ["DOWNLOAD"] + +requirements: + DockerRequirement: + dockerPull: ghcr.io/unity-sds/unity-data-services:9.4.0 + NetworkAccess: + networkAccess: true + EnvVarRequirement: + envDef: + DOWNLOAD_DIR: $(runtime.outdir)/$(inputs.download_dir) + STAC_JSON: $(inputs.stac_json) + +inputs: + download_dir: + type: string + stac_json: + type: string + +outputs: + download_dir: + type: Directory + outputBinding: + glob: "$(inputs.download_dir)" diff --git a/cwl/stage-in-unity/README.md b/cwl/stage-in-unity/README.md new file mode 100644 index 00000000..0c1a83b8 --- /dev/null +++ b/cwl/stage-in-unity/README.md @@ -0,0 +1,7 @@ +# Test stage in data from MDPS + +Update `stac_json` and `unity_client_id` values in stage-in-job-01.yml + +Run the following command with a CWL runner. + +`cwltool stage-in-workflow.cwl stage-in-job-01.yml` diff --git a/cwl/stage-in-unity/stage-in-job-01.yml b/cwl/stage-in-unity/stage-in-job-01.yml new file mode 100644 index 00000000..24c2b9a4 --- /dev/null +++ b/cwl/stage-in-unity/stage-in-job-01.yml @@ -0,0 +1,3 @@ +download_dir: "granules" +stac_json: "https://d3vc8w9zcq658.cloudfront.net/am-uds-dapa/collections/urn:nasa:unity:unity:dev:SBG-L2A_RSRFL___1/items" +unity_client_id: "40c2s0ulbhp9i0fmaph3su9jch" diff --git a/cwl/stage-in-unity/stage-in-workflow.cwl b/cwl/stage-in-unity/stage-in-workflow.cwl new file mode 100644 index 00000000..1ee98950 --- /dev/null +++ b/cwl/stage-in-unity/stage-in-workflow.cwl @@ -0,0 +1,33 @@ +#!/usr/bin/env cwl-runner +cwlVersion: v1.2 +class: Workflow +label: Workflow that executes the Sounder SIPS end-to-end chirp rebinngin workflow + +$namespaces: + cwltool: http://commonwl.org/cwltool# + +requirements: + SubworkflowFeatureRequirement: {} + StepInputExpressionRequirement: {} + InlineJavascriptRequirement: {} + NetworkAccess: + networkAccess: true + +inputs: + download_dir: string + stac_json: string + unity_client_id: string + +outputs: + data: + type: Directory + outputSource: stage-in/download_dir + +steps: + stage-in: + run: "stage-in.cwl" + in: + stac_json: stac_json + download_dir: download_dir + unity_client_id: unity_client_id + out: [download_dir] diff --git a/cwl/stage-in-unity/stage-in.cwl b/cwl/stage-in-unity/stage-in.cwl new file mode 100644 index 00000000..b96acac9 --- /dev/null +++ b/cwl/stage-in-unity/stage-in.cwl @@ -0,0 +1,45 @@ +cwlVersion: v1.2 +class: CommandLineTool + +baseCommand: ["DOWNLOAD"] + +requirements: + DockerRequirement: + dockerPull: ghcr.io/unity-sds/unity-data-services:9.4.0 + NetworkAccess: + networkAccess: true + EnvVarRequirement: + envDef: + DOWNLOAD_DIR: $(runtime.outdir)/$(inputs.download_dir) + STAC_JSON: $(inputs.stac_json) + LOG_LEVEL: '10' + PARALLEL_COUNT: '-1' + DOWNLOAD_RETRY_WAIT_TIME: '30' + DOWNLOAD_RETRY_TIMES: '5' + DOWNLOADING_ROLES: 'data' + + CLIENT_ID: $(inputs.unity_client_id) + COGNITO_URL: $(inputs.unity_cognito_url) + USERNAME: '/sps/processing/workflows/unity_username' + PASSWORD: '/sps/processing/workflows/unity_password' + PASSWORD_TYPE: 'PARAM_STORE' + + VERIFY_SSL: 'TRUE' + STAC_AUTH_TYPE: 'UNITY' + +inputs: + download_dir: + type: string + stac_json: + type: string + unity_client_id: + type: string + unity_cognito_url: + type: string + default: https://cognito-idp.us-west-2.amazonaws.com + +outputs: + download_dir: + type: Directory + outputBinding: + glob: "$(inputs.download_dir)" diff --git a/cwl/stage-out-auxiliary/README.md b/cwl/stage-out-auxiliary/README.md new file mode 100644 index 00000000..c0f3c24e --- /dev/null +++ b/cwl/stage-out-auxiliary/README.md @@ -0,0 +1,7 @@ +# Test stage out and catalog sample auxiliary data + +Update `collection_id` and `staging_bucket` values in stage-out-job-01.yml + +Run the following command with a CWL runner. + +`cwltool stage-out-workflow.cwl stage-out-job-01.yml` diff --git a/cwl/stage-out-auxiliary/outputs/aux_1.nc b/cwl/stage-out-auxiliary/outputs/aux_1.nc new file mode 100644 index 00000000..e69de29b diff --git a/cwl/stage-out-auxiliary/outputs/aux_2.nc b/cwl/stage-out-auxiliary/outputs/aux_2.nc new file mode 100644 index 00000000..e69de29b diff --git a/cwl/stage-out-auxiliary/stage-out-job-01.yml b/cwl/stage-out-auxiliary/stage-out-job-01.yml new file mode 100644 index 00000000..a034e4ea --- /dev/null +++ b/cwl/stage-out-auxiliary/stage-out-job-01.yml @@ -0,0 +1,5 @@ +collection_id: "urn:nasa:unity:unity:dev:unity-dev-auxiliary___1" +staging_bucket: "unity-dev-unity-unity-data" +sample_output_data: + class: Directory + path: outputs diff --git a/cwl/stage-out-auxiliary/stage-out-workflow.cwl b/cwl/stage-out-auxiliary/stage-out-workflow.cwl new file mode 100644 index 00000000..5a7934c5 --- /dev/null +++ b/cwl/stage-out-auxiliary/stage-out-workflow.cwl @@ -0,0 +1,34 @@ +#!/usr/bin/env cwl-runner +cwlVersion: v1.0 +class: Workflow +label: Workflow that executes the Sounder SIPS end-to-end chirp rebinngin workflow + +$namespaces: + cwltool: http://commonwl.org/cwltool# + +requirements: + SubworkflowFeatureRequirement: {} + StepInputExpressionRequirement: {} + InlineJavascriptRequirement: {} + +inputs: + collection_id: string + staging_bucket: string + sample_output_data: Directory + +outputs: + successful_features: + type: File + outputSource: stage-out/successful_features + failed_features: + type: File + outputSource: stage-out/failed_features + +steps: + stage-out: + run: "stage-out.cwl" + in: + collection_id: collection_id + staging_bucket: staging_bucket + sample_output_data: sample_output_data + out: [successful_features, failed_features] diff --git a/cwl/stage-out-auxiliary/stage-out.cwl b/cwl/stage-out-auxiliary/stage-out.cwl new file mode 100644 index 00000000..6e576fff --- /dev/null +++ b/cwl/stage-out-auxiliary/stage-out.cwl @@ -0,0 +1,44 @@ +cwlVersion: v1.2 +class: CommandLineTool + +baseCommand: ["UPLOAD"] + +requirements: + DockerRequirement: + dockerPull: ghcr.io/unity-sds/unity-data-services:9.4.0 + NetworkAccess: + networkAccess: true + InitialWorkDirRequirement: + listing: + - entry: $(inputs.sample_output_data) + entryname: /tmp/outputs + + EnvVarRequirement: + envDef: + COLLECTION_ID: $(inputs.collection_id) + STAGING_BUCKET: $(inputs.staging_bucket) + LOG_LEVEL: '10' + PARALLEL_COUNT: '-1' + OUTPUT_DIRECTORY: $(runtime.outdir) + RESULT_PATH_PREFIX: 'stage_out/$(inputs.collection_id)' + GRANULES_UPLOAD_TYPE: 'UPLOAD_AUXILIARY_FILE_AS_GRANULE' + BASE_DIRECTORY: '/tmp/outputs' + +inputs: + collection_id: + type: string + staging_bucket: + type: string + sample_output_data: + type: Directory + +outputs: + successful_features: + type: File + outputBinding: + glob: "$(runtime.outdir)/successful_features.json" + failed_features: + type: File + outputBinding: + glob: "$(runtime.outdir)/failed_features.json" + diff --git a/cwl/stage-out-stac-catalog/README.md b/cwl/stage-out-stac-catalog/README.md new file mode 100644 index 00000000..c25bd983 --- /dev/null +++ b/cwl/stage-out-stac-catalog/README.md @@ -0,0 +1,7 @@ +# Test stage out and catalog sample output data + +Update `collection_id` `staging_bucket` and `sample_output_data` values in stage-out-job-01.yml + +Run the following command with a CWL runner. + +`cwltool stage-out-workflow.cwl stage-out-job-01.yml` diff --git a/cwl/stage-out-stac-catalog/outputs/catalog.json b/cwl/stage-out-stac-catalog/outputs/catalog.json new file mode 100644 index 00000000..2cdb1939 --- /dev/null +++ b/cwl/stage-out-stac-catalog/outputs/catalog.json @@ -0,0 +1,24 @@ +{ + "type": "Catalog", + "id": "NA", + "stac_version": "1.0.0", + "description": "NA", + "links": [ + { + "rel": "root", + "href": "./catalog.json", + "type": "application/json" + }, + { + "rel": "item", + "href": "./output_1.nc.stac.json", + "type": "application/json" + }, + { + "rel": "item", + "href": "./output_2.nc.stac.json", + "type": "application/json" + } + ], + "stac_extensions": [] +} \ No newline at end of file diff --git a/cwl/stage-out-stac-catalog/outputs/output_1.nc b/cwl/stage-out-stac-catalog/outputs/output_1.nc new file mode 100644 index 00000000..e69de29b diff --git a/cwl/stage-out-stac-catalog/outputs/output_1.nc.stac.json b/cwl/stage-out-stac-catalog/outputs/output_1.nc.stac.json new file mode 100644 index 00000000..c9972b29 --- /dev/null +++ b/cwl/stage-out-stac-catalog/outputs/output_1.nc.stac.json @@ -0,0 +1,44 @@ +{ + "type": "Feature", + "stac_version": "1.0.0", + "id": "output_1", + "properties": { + "start_datetime": "2023-01-01T00:00:00.000000Z", + "end_datetime": "2023-01-01T00:06:00.000000Z", + "created": "2023-01-01T07:03:18.000000Z", + "datetime": "2023-01-01T00:00:00.000000Z", + "tag": "reprocessing" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 0, + 0 + ] + }, + "links": [], + "assets": { + "output_1.nc": { + "href": "./output_1.nc", + "roles": ["data"], + "file:size": 0, + "file:checksum": "d41d8cd98f00b204e9800998ecf8427e", + "description": "main data" + }, + "output_1.nc.stac.json": { + "href": "./output_1.nc.stac.json", + "roles": ["metadata"], + "description": "metadata stac" + } + }, + "bbox": [ + -180, + -90, + 180, + 90 + ], + "stac_extensions": [ + "https://stac-extensions.github.io/file/v2.1.0/schema.json" + ], + "collection": "urn:nasa:unity:unity:dev:unity-dev-output___1" +} diff --git a/cwl/stage-out-stac-catalog/outputs/output_2.nc b/cwl/stage-out-stac-catalog/outputs/output_2.nc new file mode 100644 index 00000000..e69de29b diff --git a/cwl/stage-out-stac-catalog/outputs/output_2.nc.stac.json b/cwl/stage-out-stac-catalog/outputs/output_2.nc.stac.json new file mode 100644 index 00000000..15e05ee5 --- /dev/null +++ b/cwl/stage-out-stac-catalog/outputs/output_2.nc.stac.json @@ -0,0 +1,44 @@ +{ + "type": "Feature", + "stac_version": "1.0.0", + "id": "output_2", + "properties": { + "start_datetime": "2023-01-01T00:06:00.000000Z", + "end_datetime": "2023-01-01T00:12:00.000000Z", + "created": "2023-01-01T07:03:18.000000Z", + "datetime": "2023-01-01T00:06:00.000000Z", + "tag": "reprocessing" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 0, + 0 + ] + }, + "links": [], + "assets": { + "output_2.nc": { + "href": "./output_2.nc", + "roles": ["data"], + "file:size": 0, + "file:checksum": "d41d8cd98f00b204e9800998ecf8427e", + "description": "main data" + }, + "output_2.nc.stac.json": { + "href": "./output_2.nc.stac.json", + "roles": ["metadata"], + "description": "metadata stac" + } + }, + "bbox": [ + -180, + -90, + 180, + 90 + ], + "stac_extensions": [ + "https://stac-extensions.github.io/file/v2.1.0/schema.json" + ], + "collection": "urn:nasa:unity:unity:dev:unity-dev-output___1" +} diff --git a/cwl/stage-out-stac-catalog/stage-out-job-01.yml b/cwl/stage-out-stac-catalog/stage-out-job-01.yml new file mode 100644 index 00000000..a109565d --- /dev/null +++ b/cwl/stage-out-stac-catalog/stage-out-job-01.yml @@ -0,0 +1,6 @@ +project: "unity" +venue: "dev" +staging_bucket: "unity-dev-unity-unity-data" +sample_output_data: + class: Directory + path: outputs diff --git a/cwl/stage-out-stac-catalog/stage-out-workflow.cwl b/cwl/stage-out-stac-catalog/stage-out-workflow.cwl new file mode 100644 index 00000000..f0a4ec8e --- /dev/null +++ b/cwl/stage-out-stac-catalog/stage-out-workflow.cwl @@ -0,0 +1,36 @@ +#!/usr/bin/env cwl-runner +cwlVersion: v1.0 +class: Workflow +label: Workflow that executes the Sounder SIPS end-to-end chirp rebinngin workflow + +$namespaces: + cwltool: http://commonwl.org/cwltool# + +requirements: + SubworkflowFeatureRequirement: {} + StepInputExpressionRequirement: {} + InlineJavascriptRequirement: {} + +inputs: + project: string + venue: string + staging_bucket: string + sample_output_data: Directory + +outputs: + successful_features: + type: File + outputSource: stage-out/successful_features + failed_features: + type: File + outputSource: stage-out/failed_features + +steps: + stage-out: + run: "stage-out.cwl" + in: + project: project + venue: venue + staging_bucket: staging_bucket + sample_output_data: sample_output_data + out: [successful_features, failed_features] diff --git a/cwl/stage-out-stac-catalog/stage-out.cwl b/cwl/stage-out-stac-catalog/stage-out.cwl new file mode 100644 index 00000000..ad69f223 --- /dev/null +++ b/cwl/stage-out-stac-catalog/stage-out.cwl @@ -0,0 +1,48 @@ +cwlVersion: v1.2 +class: CommandLineTool + +baseCommand: ["UPLOAD"] + +requirements: + DockerRequirement: + dockerPull: ghcr.io/unity-sds/unity-data-services:9.4.0 + NetworkAccess: + networkAccess: true + InitialWorkDirRequirement: + listing: + - entry: $(inputs.sample_output_data) + entryname: /tmp/outputs + + EnvVarRequirement: + envDef: + STAGING_BUCKET: $(inputs.staging_bucket) + CATALOG_FILE: '/tmp/outputs/catalog.json' + LOG_LEVEL: '10' + PARALLEL_COUNT: '-1' + OUTPUT_DIRECTORY: $(runtime.outdir) + PROJECT: $(inputs.project) + VENUE: $(inputs.venue) + + GRANULES_UPLOAD_TYPE: 'UPLOAD_S3_BY_STAC_CATALOG' + BASE_DIRECTORY: '/tmp/outputs' + +inputs: + project: + type: string + venue: + type: string + staging_bucket: + type: string + sample_output_data: + type: Directory + +outputs: + successful_features: + type: File + outputBinding: + glob: "$(runtime.outdir)/successful_features.json" + failed_features: + type: File + outputBinding: + glob: "$(runtime.outdir)/failed_features.json" + diff --git a/docker/docker-compose-web-service.yml b/docker/docker-compose-web-service.yml index f921f6f8..957a98a3 100644 --- a/docker/docker-compose-web-service.yml +++ b/docker/docker-compose-web-service.yml @@ -1,7 +1,7 @@ version: "3.7" services: cumulus_granules_upload: - image: stac-web-swervice-1.0:latest + image: ghcr.io/unity-sds/unity-data-services:7.10.1 restart: always entrypoint: 'uvicorn web_service_stac_browser:app --host 0.0.0.0 --port 8005 --log-level info --reload' tty: true @@ -9,9 +9,6 @@ services: ports: - 8005:8005 environment: - AWS_ACCESS_KEY_ID: 'dd' - AWS_SECRET_ACCESS_KEY: 'dddd' - AWS_SESSION_TOKEN: 'dddd' AWS_REGION: 'us-west-2' PYTHONPATH: '${PYTHONPATH}:/usr/src/app/unity' diff --git a/setup.py b/setup.py index a9fea84c..67e91ec6 100644 --- a/setup.py +++ b/setup.py @@ -12,7 +12,7 @@ setup( name="cumulus_lambda_functions", - version="9.4.1", + version="9.6.0", packages=find_packages(), install_requires=install_requires, package_data={ diff --git a/tests/cumulus_lambda_functions/lib/uds_db/test_granules_db_index.py b/tests/cumulus_lambda_functions/lib/uds_db/test_granules_db_index.py index e0ffb277..ddf8345c 100644 --- a/tests/cumulus_lambda_functions/lib/uds_db/test_granules_db_index.py +++ b/tests/cumulus_lambda_functions/lib/uds_db/test_granules_db_index.py @@ -1,7 +1,13 @@ import json import os +from copy import deepcopy +from time import sleep from unittest import TestCase +from cumulus_lambda_functions.lib.uds_db.db_constants import DBConstants +from mdps_ds_lib.lib.aws.es_abstract import ESAbstract +from mdps_ds_lib.lib.aws.es_factory import ESFactory + from cumulus_lambda_functions.lib.uds_db.granules_db_index import GranulesDbIndex @@ -31,7 +37,7 @@ def test_01(self): def test_02(self): os.environ['ES_URL'] = 'https://vpc-uds-sbx-cumulus-es-qk73x5h47jwmela5nbwjte4yzq.us-west-2.es.amazonaws.com' os.environ['ES_PORT'] = '9200' - self.tenant = 'UDS_MY_LOCAL_ARCHIVE_TEST' # 'uds_local_test' # 'uds_sandbox' + self.tenant = 'UDS_LOCAL_TEST_3' # 'uds_local_test' # 'uds_sandbox' self.tenant_venue = 'DEV' # 'DEV1' # 'dev' search_dsl = { 'track_total_hits': True, @@ -42,7 +48,7 @@ def test_02(self): ], 'query': { 'bool': { - 'must': {'term': {'collection': {'value': f'URN:NASA:UNITY:{self.tenant}:{self.tenant_venue}:UDS_UNIT_COLLECTION___2408290522'}}} + 'must': {'term': {'collection': {'value': f'URN:NASA:UNITY:UDS_LOCAL_TEST_3:DEV:DDD-01___001'}}} } }, } @@ -50,4 +56,255 @@ def test_02(self): query_result = granules_index.dsl_search(self.tenant, self.tenant_venue, search_dsl) print(json.dumps(query_result, indent=4)) # self.assertEqual(custom_metadata, expected) - return \ No newline at end of file + return + + def test_complete(self): + """ + Steps: + 1. Create index 1 + 2. Add doc 1 + 3. Add doc 2 + 4. Create index 2 + 5. Add doc 3 + 6. Update doc 1 + 7. make sure index 1: doc 1 is disappeared + 8. Update doc 3 + 9. make sure index 2 : doc 3 is updated + 10. Create index 3 + 11. Update doc 4 + 12. It should throw error. + 13. Update doc 2. Make sure index 1 : doc 2 is removed + 14. Update doc 3. Make sure index 2 : doc 3 is removed + + + :return: + """ + os.environ['ES_URL'] = 'https://vpc-uds-sbx-cumulus-es-qk73x5h47jwmela5nbwjte4yzq.us-west-2.es.amazonaws.com' + os.environ['ES_PORT'] = '9200' + granules_db_index = GranulesDbIndex() + es: ESAbstract = ESFactory().get_instance('AWS', + index=DBConstants.collections_index, + base_url=os.getenv('ES_URL'), + port=int(os.getenv('ES_PORT', '443')) + ) + + self.tenant = 'UDS_LOCAL_UNIT_TEST' # 'uds_local_test' # 'uds_sandbox' + self.tenant_venue = 'UNIT' # 'DEV1' # 'dev' + self.collection_name = 'UDS_UNIT_TEST_1' + self.collection_version = '001' + collection_id = f'URN:NASA:UNITY:{self.tenant}:{self.tenant_venue}:{self.collection_name}___{self.collection_version}' + self.custom_metadata_body1 = { + 'tag': {'type': 'keyword'}, + 'c_data1': {'type': 'long'}, + } + self.custom_metadata_body2 = { + 'tag': {'type': 'keyword'}, + 'c_data2': {'type': 'long'}, + } + self.custom_metadata_body3 = { + 'tag': {'type': 'keyword'}, + 'c_data3': {'type': 'long'}, + } + + granule_id1 = f'{collection_id}:test_file01' + granule_id2 = f'{collection_id}:test_file02' + granule_id3 = f'{collection_id}:test_file03' + granule_id4 = f'{collection_id}:test_file04' + + mock_feature1 = { + "type": "Feature", + "stac_version": "1.0.0", + "id": "URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:KKK-09___001:test_file09", + "properties": { + "datetime": "2024-11-26T23:37:15.288000Z", + "start_datetime": "2016-01-31T18:00:00.009000Z", + "end_datetime": "2016-01-31T19:59:59.991000Z", + "created": "1970-01-01T00:00:00Z", + "updated": "2024-11-26T23:38:01.692000Z", + "status": "completed", + "provider": "unity", + }, + "geometry": { + "type": "Point", + "coordinates": [ + 0.0, + 0.0 + ] + }, + "links": [ + { + "rel": "collection", + "href": "." + } + ], + "assets": { + "test_file09.nc": { + "href": "s3://uds-sbx-cumulus-staging/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:KKK-09___001/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:KKK-09___001:test_file09/test_file09.nc", + "title": "test_file09.nc", + "description": "size=0;checksumType=md5;checksum=00000000000000000000000000000000;", + "file:size": 0, + "file:checksum": "00000000000000000000000000000000", + "roles": [ + "data" + ] + }, + "test_file09.nc.cas": { + "href": "s3://uds-sbx-cumulus-staging/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:KKK-09___001/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:KKK-09___001:test_file09/test_file09.nc.cas", + "title": "test_file09.nc.cas", + "description": "size=0;checksumType=md5;checksum=00000000000000000000000000000000;", + "file:size": 0, + "file:checksum": "00000000000000000000000000000000", + "roles": [ + "metadata" + ] + }, + "test_file09.nc.stac.json": { + "href": "s3://uds-sbx-cumulus-staging/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:KKK-09___001/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:KKK-09___001:test_file09/test_file09.nc.stac.json", + "title": "test_file09.nc.stac.json", + "description": "size=0;checksumType=md5;checksum=00000000000000000000000000000000;", + "file:size": 0, + "file:checksum": "00000000000000000000000000000000", + "roles": [ + "metadata" + ] + }, + "test_file09.cmr.xml": { + "href": "s3://uds-sbx-cumulus-staging/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:KKK-09___001/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:KKK-09___001:test_file09/test_file09.cmr.xml", + "title": "test_file09.cmr.xml", + "description": "size=1716;checksumType=md5;checksum=f842ba4e23e76ae81014a01c820b01f7;", + "file:size": 1716, + "file:checksum": "f842ba4e23e76ae81014a01c820b01f7", + "roles": [ + "metadata" + ] + } + }, + "bbox": { + "type": "envelope", + "coordinates": [ + [ + -180.0, + 90.0 + ], + [ + 180.0, + -90.0 + ] + ] + }, + "stac_extensions": [ + "https://stac-extensions.github.io/file/v2.1.0/schema.json" + ], + "collection": "URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:KKK-09___001", + "event_time": 1732664287722 + } + mock_feature2 = deepcopy(mock_feature1) + mock_feature3 = deepcopy(mock_feature1) + mock_feature4 = deepcopy(mock_feature1) + mock_feature1['id'] = granule_id1 + mock_feature2['id'] = granule_id2 + mock_feature3['id'] = granule_id3 + mock_feature4['id'] = granule_id4 + + new_index_name1 = f'{DBConstants.granules_index_prefix}_{self.tenant}_{self.tenant_venue}__v01'.lower().strip() + new_index_name2 = f'{DBConstants.granules_index_prefix}_{self.tenant}_{self.tenant_venue}__v02'.lower().strip() + new_index_name3 = f'{DBConstants.granules_index_prefix}_{self.tenant}_{self.tenant_venue}__v03'.lower().strip() + + if es.has_index(new_index_name1): + es.delete_index(new_index_name1) + es.delete_index(f'{DBConstants.granules_index_prefix}_{self.tenant}_{self.tenant_venue}_perc__v01'.lower().strip()) + if es.has_index(new_index_name2): + es.delete_index(new_index_name2) + es.delete_index(f'{DBConstants.granules_index_prefix}_{self.tenant}_{self.tenant_venue}_perc__v02'.lower().strip()) + if es.has_index(new_index_name3): + es.delete_index(new_index_name3) + es.delete_index(f'{DBConstants.granules_index_prefix}_{self.tenant}_{self.tenant_venue}_perc__v03'.lower().strip()) + + + #### index v1 #### + granules_db_index.create_new_index(self.tenant, self.tenant_venue, self.custom_metadata_body1) + sleep(2) + self.assertTrue(es.has_index(new_index_name1), f'missing {new_index_name1}') + + granules_db_index.add_entry(self.tenant, self.tenant_venue, mock_feature1, granule_id1) + sleep(2) + check_result = es.query_by_id(granule_id1, new_index_name1) + self.assertTrue(check_result is not None, f'granule_id1 - new_index_name1 {check_result}') + + granules_db_index.add_entry(self.tenant, self.tenant_venue, mock_feature2, granule_id2) + sleep(2) + check_result = es.query_by_id(granule_id2, new_index_name1) + self.assertTrue(check_result is not None, f'granule_id2 - new_index_name1 {check_result}') + + #### index v2 #### + granules_db_index.create_new_index(self.tenant, self.tenant_venue, self.custom_metadata_body2) + sleep(2) + self.assertTrue(es.has_index(new_index_name2), f'missing {new_index_name2}') + + granules_db_index.add_entry(self.tenant, self.tenant_venue, mock_feature3, granule_id3) + sleep(2) + check_result = es.query_by_id(granule_id3, new_index_name2) + self.assertTrue(check_result is not None, f'granule_id3 - new_index_name2 {check_result}') + + check_result = es.query_by_id(granule_id3, new_index_name1) + self.assertTrue(check_result is None, f'granule_id3 - new_index_name1 is not None{check_result}') + + granules_db_index.update_entry(self.tenant, self.tenant_venue, {'archive_status': 'cnm_s_failed'}, granule_id1) + sleep(2) + check_result = es.query_by_id(granule_id1, new_index_name2) + self.assertTrue(check_result is not None, f'granule_id1 - new_index_name2 {check_result}') + + check_result = es.query_by_id(granule_id1, new_index_name1) + self.assertTrue(check_result is None, f'granule_id1 - new_index_name1 is not None{check_result}') + + granules_db_index.update_entry(self.tenant, self.tenant_venue, {'archive_status': 'cnm_s_successful'}, granule_id3) + sleep(2) + check_result = es.query_by_id(granule_id3, new_index_name2) + self.assertTrue(check_result is not None, f'granule_id3 - new_index_name2 {check_result}') + + check_result = es.query_by_id(granule_id3, new_index_name1) + self.assertTrue(check_result is None, f'granule_id3 - new_index_name1 is not None{check_result}') + + #### index v3 #### + granules_db_index.create_new_index(self.tenant, self.tenant_venue, self.custom_metadata_body3) + sleep(2) + self.assertTrue(es.has_index(new_index_name3), f'missing {new_index_name3}') + + with self.assertRaises(ValueError) as context: + granules_db_index.update_entry(self.tenant, self.tenant_venue, {'archive_status': 'cnm_s_failed'}, granule_id4) + sleep(2) + self.assertTrue(str(context.exception).startswith('unable to update')) + # TODO check error + granules_db_index.update_entry(self.tenant, self.tenant_venue, {'archive_status': 'cnm_r_failed'}, granule_id2) + sleep(2) + check_result = es.query_by_id(granule_id2, new_index_name3) + self.assertTrue(check_result is not None, f'granule_id2 - new_index_name3 {check_result}') + + check_result = es.query_by_id(granule_id2, new_index_name1) + self.assertTrue(check_result is None, f'granule_id2 - new_index_name1 is not None{check_result}') + + check_result = es.query_by_id(granule_id2, new_index_name2) + self.assertTrue(check_result is None, f'granule_id2 - new_index_name2 is not None{check_result}') + + granules_db_index.update_entry(self.tenant, self.tenant_venue, {'archive_status': 'cnm_s_failed'}, granule_id3) + sleep(2) + check_result = es.query_by_id(granule_id3, new_index_name3) + self.assertTrue(check_result is not None, f'granule_id3 - new_index_name3 {check_result}') + + check_result = es.query_by_id(granule_id3, new_index_name1) + self.assertTrue(check_result is None, f'granule_id3 - new_index_name1 is not None{check_result}') + + check_result = es.query_by_id(granule_id3, new_index_name2) + self.assertTrue(check_result is None, f'granule_id3 - new_index_name2 is not None{check_result}') + + if es.has_index(new_index_name1): + es.delete_index(new_index_name1) + es.delete_index(f'{DBConstants.granules_index_prefix}_{self.tenant}_{self.tenant_venue}_perc__v01'.lower().strip()) + if es.has_index(new_index_name2): + es.delete_index(new_index_name2) + es.delete_index(f'{DBConstants.granules_index_prefix}_{self.tenant}_{self.tenant_venue}_perc__v02'.lower().strip()) + if es.has_index(new_index_name3): + es.delete_index(new_index_name3) + es.delete_index(f'{DBConstants.granules_index_prefix}_{self.tenant}_{self.tenant_venue}_perc__v03'.lower().strip()) + + return diff --git a/tests/cumulus_lambda_functions/uds_api/dapa/test_granules_dapa_query_es.py b/tests/cumulus_lambda_functions/uds_api/dapa/test_granules_dapa_query_es.py index 9cc3fdc4..9d687d5b 100644 --- a/tests/cumulus_lambda_functions/uds_api/dapa/test_granules_dapa_query_es.py +++ b/tests/cumulus_lambda_functions/uds_api/dapa/test_granules_dapa_query_es.py @@ -22,6 +22,25 @@ def setUp(self) -> None: self.collection_version = '001' return + def test_start_01(self): + os.environ['ES_URL'] = 'vpc-uds-sbx-cumulus-es-qk73x5h47jwmela5nbwjte4yzq.us-west-2.es.amazonaws.com' + os.environ['ES_PORT'] = '9200' + self.tenant = 'UDS_LOCAL_TEST_3' # 'uds_local_test' # 'uds_sandbox' + self.tenant_venue = 'DEV' # 'DEV1' # 'dev' + self.collection_name = 'DDD-01' # 'uds_collection' # 'sbx_collection' + self.collection_version = '001' + + collection_id = f'URN:NASA:UNITY:{self.tenant}:{self.tenant_venue}:{self.collection_name}___{self.collection_version}' + granule_id = f'{collection_id}:test_file09' + + granules_dapa_query = GranulesDapaQueryEs(collection_id, 10, '1736291597733,URN:NASA:UNITY:UDS_LOCAL_TEST_3:DEV:DDD-01___001:test_file10', None, None, None, f'localhost/api-prefix') + granules_result = granules_dapa_query.start() + print(granules_result) + print([k['id'] for k in granules_result['body']['features']]) + # ['URN:NASA:UNITY:UDS_LOCAL_TEST_3:DEV:DDD-01___001:test_file20', 'URN:NASA:UNITY:UDS_LOCAL_TEST_3:DEV:DDD-01___001:test_file19', 'URN:NASA:UNITY:UDS_LOCAL_TEST_3:DEV:DDD-01___001:test_file14', 'URN:NASA:UNITY:UDS_LOCAL_TEST_3:DEV:DDD-01___001:test_file17', 'URN:NASA:UNITY:UDS_LOCAL_TEST_3:DEV:DDD-01___001:test_file18', 'URN:NASA:UNITY:UDS_LOCAL_TEST_3:DEV:DDD-01___001:test_file12', 'URN:NASA:UNITY:UDS_LOCAL_TEST_3:DEV:DDD-01___001:test_file13', 'URN:NASA:UNITY:UDS_LOCAL_TEST_3:DEV:DDD-01___001:test_file15', 'URN:NASA:UNITY:UDS_LOCAL_TEST_3:DEV:DDD-01___001:test_file06', 'URN:NASA:UNITY:UDS_LOCAL_TEST_3:DEV:DDD-01___001:test_file01'] + # ['URN:NASA:UNITY:UDS_LOCAL_TEST_3:DEV:DDD-01___001:test_file05', 'URN:NASA:UNITY:UDS_LOCAL_TEST_3:DEV:DDD-01___001:test_file03', 'URN:NASA:UNITY:UDS_LOCAL_TEST_3:DEV:DDD-01___001:test_file09', 'URN:NASA:UNITY:UDS_LOCAL_TEST_3:DEV:DDD-01___001:test_file16', 'URN:NASA:UNITY:UDS_LOCAL_TEST_3:DEV:DDD-01___001:test_file11', 'URN:NASA:UNITY:UDS_LOCAL_TEST_3:DEV:DDD-01___001:test_file04', 'URN:NASA:UNITY:UDS_LOCAL_TEST_3:DEV:DDD-01___001:test_file08', 'URN:NASA:UNITY:UDS_LOCAL_TEST_3:DEV:DDD-01___001:test_file02', 'URN:NASA:UNITY:UDS_LOCAL_TEST_3:DEV:DDD-01___001:test_file07', 'URN:NASA:UNITY:UDS_LOCAL_TEST_3:DEV:DDD-01___001:test_file10'] + return + def test_get_single_granule_01(self): os.environ['ES_URL'] = 'vpc-uds-sbx-cumulus-es-qk73x5h47jwmela5nbwjte4yzq.us-west-2.es.amazonaws.com' os.environ['ES_PORT'] = '9200' diff --git a/tests/integration_tests/test_stage_out_ingestion.py b/tests/integration_tests/test_stage_out_ingestion.py index 721c9cac..4d7425f9 100644 --- a/tests/integration_tests/test_stage_out_ingestion.py +++ b/tests/integration_tests/test_stage_out_ingestion.py @@ -232,7 +232,8 @@ def test_03_upload_complete_catalog_role_as_key(self): "type": "Point", "coordinates": [0.0, 0.0] }, - bbox=[0.0, 0.0, 0.1, 0.1], + # bbox=[0.0, 0.0, 0.1, 0.1], + bbox=[170, 25, -170, 10], # Testing invalid geo-shape datetime=TimeUtils().parse_from_unix(0, True).get_datetime_obj(), properties={ "start_datetime": "2016-01-31T18:00:00.009057Z", @@ -336,4 +337,5 @@ def test_single_granule_get(self): response_json = json.loads(query_result.text) print(json.dumps(response_json, indent=4)) self.assertEqual(query_result.status_code, 200, f'wrong status code. {query_result.text}') + self.assertEqual(response_json['bbox'], [170, 10, -170, 25], 'wrong bbox') return diff --git a/tests/integration_tests/test_uds_api.py b/tests/integration_tests/test_uds_api.py index 8ad16460..2ad895e3 100644 --- a/tests/integration_tests/test_uds_api.py +++ b/tests/integration_tests/test_uds_api.py @@ -184,8 +184,8 @@ def test_collections_get_single_granule(self): return def test_granules_get(self): - # post_url = f'{self.uds_url}collections/urn:nasa:unity:unity:dev:SBG-L2A_RFL___1/items/' # MCP Dev - post_url = f'{self.uds_url}collections/urn:nasa:unity:asips:int:P1590011-T___1/items/' # MCP OPS + post_url = f'{self.uds_url}collections/URN:NASA:UNITY:UDS_LOCAL_TEST_3:DEV:DDD-01___001/items/?limit=10' # MCP Dev + # post_url = f'{self.uds_url}collections/urn:nasa:unity:asips:int:P1590011-T___1/items/?limit=10' # MCP OPS headers = { 'Authorization': f'Bearer {self.bearer_token}', } @@ -194,11 +194,27 @@ def test_granules_get(self): headers=headers, ) response_json = json.loads(query_result.text) - print(json.dumps(response_json, indent=4)) + # print(json.dumps(response_json, indent=4)) + print(f"length: {len(response_json['features'])}") self.assertEqual(query_result.status_code, 200, f'wrong status code. {query_result.text}') + total_size = response_json['numberMatched']['total_size'] + current_size = len(response_json['features']) links = {k['rel']: k['href'] for k in response_json['links'] if k['rel'] != 'root'} for k, v in links.items(): self.assertTrue(v.startswith(self.uds_url), f'missing stage: {self.stage} in {v} for {k}') + + while len(response_json['features']) > 0: + get_next_link = [k['href'] for k in response_json['links'] if k['rel'] == 'next'] + get_next_link = get_next_link[0] + print(get_next_link) + query_result = requests.get(url=get_next_link, + headers=headers, + ) + response_json = json.loads(query_result.text) + self.assertEqual(query_result.status_code, 200, f'wrong status code. {query_result.text}') + current_size += len(response_json['features']) + print(f"length: {len(response_json['features'])}") + self.assertEqual(total_size, current_size, f'mismatched size') return def test_single_granule_get(self):